NIST SP 800-56A のセクション 5.8.1 で説明されているキー派生関数を使用して、キー マテリアルを派生させる必要があるタスクがあります。私は暗号化の専門家ではないので、質問が素朴でしたらすみません。これまでに行ったことは次のとおりです。
- 相手の公開鍵と自分の秘密鍵を持っている
ここで、C# (.NET 4) ECDiffieHellmanCng クラスを使用して、ECDH 1.3.132.1.12 を使用して共有シークレットを生成しようとします。
// The GetCngKey method reads the private key from a certificate in my Personal certificate store CngKey cngPrivateKey = GetCngKey(); ECDiffieHellmanCng ecDiffieHellmanCng = new ECDiffieHellmanCng(cngPrivateKey); ecDiffieHellmanCng.HashAlgorithm = CngAlgorithm.ECDiffieHellmanP256; ecDiffieHellmanCng.KeyDerivationFunction = ?? // What do I set here
最後にこれを行います:
ecDiffieHellmanCng.DeriveKeyMaterial(otherPartyPublicKey:);
他のパラメータ アルゴリズム ID、パーティ U 情報、パーティ V 情報はどこでどのように設定すればよいですか?
編集 私は、Bouncy Castle のような他のライブラリを使用することにオープンです (.NET から呼び出すことができる場合)。