11

NIST SP 800-56A のセクション 5.8.1 で説明されているキー派生関数を使用して、キー マテリアルを派生させる必要があるタスクがあります。私は暗号化の専門家ではないので、質問が素朴でしたらすみません。これまでに行ったことは次のとおりです。

  1. 相手の公開鍵と自分の秘密鍵を持っている
  2. ここで、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 から呼び出すことができる場合)。

4

1 に答える 1