問題タブ [curve-25519]

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.

0 投票する
1 に答える
417 参照

.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 実装に関するものでしょうか?