問題タブ [x25519]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenSSL 関数を使用して TLS 鍵交換の公開鍵を計算するには?
私は TLS 1.3 スキームを学習しており、C++ で基本的なハンドシェイク手順を実装しようとしていSSL_accept
ますSSL_do_handshake
。プロジェクトはすでに一般的な暗号操作に OpenSSL を使用しているため、x25519 計算が OpenSSL よりも明白な他の暗号ライブラリとはリンクしたくありません。そう...
2 つのバッファーがあります。
x25519 アルゴを使用してpublic_key
計算されたバイトでバッファを埋めるには、OpenSSL のどの方法を使用する必要がありますか(コピーと割り当てをできるだけ少なくします)?private_key
.net-core - パラメータが間違っているにもかかわらず、Curve25519 がキー ペアを正しく計算するのはなぜですか?
.NET (Core 3.1) は ECC でカスタム カーブをサポートしているようです。したがって、 Curve25519を定義し、以下のコードでキーペアを生成しました:
出力例は次のとおりです。
次に、別のライブラリ/プラットフォーム、つまり x-cube-cryptolib/stm32f103c8 とクロスチェックしたいと思いました。ECDiffieHellman によって生成された秘密鍵 (1 行目) を指定すると、コントロール ライブラリは同じ公開鍵を計算し (2 行目)、ペアを検証します (万歳)。
鍵交換フェーズに進む前に、私はそれで遊んでみたかったので、コードでコメントアウトされたプライムのように、Curve25519 のパラメーターを変更しました。2 つのプラットフォームで、同じ秘密鍵から異なる公開鍵のエラーまたは計算が発生することを期待していました。しかし、いいえ、ECDiffieHellman は常に制御ライブラリが確認するキー ペアを計算します。曲線パラメーターを間違ったもの、スワップまたはゼロに変更し、すべてのパラメーターに対してこれを行い、プロジェクトをクリーンアップして再構築しましたが、ケースは毎回同じでした。鍵交換フェーズに進んでも、ECDiffieHellman はコントロール ライブラリと同じ共有秘密鍵マテリアルを計算しました。
なぜ ECDiffieHellman/Curve25519 は、制御ライブラリと一貫性のある正しいキー ペアと共有シークレットを生成するのですか? それとも、これは .Net Core の ECDH 実装に関するものでしょうか?