私は SSLStream を使用して、OpenSSL 証明書を使用してクライアントとサーバーを通信しています。
そして、私が使用するクライアントは、RSA 暗号化を使用する必要がある独自のソフトウェアを備えたマシンです。
テスト用にサーバーとクライアントを作成し、自分のコンピューターをクライアントとして、他のコンピューターをサーバーとして使用し、これらのマシン間のsslstreamとde rsa暗号をテストするためだけに、簡単な鍵交換を行いました。
両方のマシンが次のように公開鍵を送信します。
byte[] modulus = pubkey.Modulus;
sslStream.Write(modulus, 0, modulus.Length);
sslStream.Flush();
そして、両方のマシンがキーを受け取り、次のように作成します。
byte[] exponent = {1, 0, 1};
byte[] modulus = new byte[256];
sslStream.Read(modulus, 0, modulus.Length);
clientPublicKey.D = null;
clientPublicKey.DP = null;
clientPublicKey.DQ = null;
clientPublicKey.Exponent = exponent;
clientPublicKey.InverseQ = null;
clientPublicKey.Modulus = modulus;
clientPublicKey.P = null;
clientPublicKey.Q = null;
しかし、私が使用する元のクライアントでこれをテストすると、鍵交換は同じ方法ではありません。
キーを交換する別の方法はありますか?元のマシンが別の方法を使用してこれらのキーをサーバーと交換していると確信しているためです。