現時点では、2人以上のクライアントが同時に通信できるチャットアプリケーションに取り組んでいます。
暗号化を始めたばかりなので、我慢してください。
私の目標は、エンドツーエンドの暗号化を実装することです。そのため、いくつかの調査を行い、Diffie–Hellman key exchange
。私はそれがどのように機能するのかについての簡単なアイデアを持っています。
ウィキペディアでは、それは次のように機能すると述べています:
P
と呼びます。primitive prime root of P.
1<= Private_key <= P
(g^private_key) mod P
over the server(User2PublicKey^User1PrivateKey) mod P
およびその逆(User1PublicKey^User2PrivateKey) mod P
あなたへの私の質問は:
既存のアルゴリズムへの実装を記述したり、アルゴリズムを設計したりしてはなりません。アルゴリズムは本からピックアップし、ライブラリから実装する必要があります。
上記の点に留意して、プロトコルに認証要素が含まれていないため、Diffie HellmanはMITM攻撃に対して脆弱であることを覚えておいてください。機密保持のため、SSLの使用をお勧めします。
エンティティBの自己署名証明書を生成します。エンティティAは証明書のコピーを持ち、それを信頼します。エンティティBが認証されます。 Aの認証のために、Aが表し、Bが検証する事前共有秘密を持つことができます。
Node.jsでのDKE実装のドキュメントを参照できます- https://nodejs.org/api/crypto.html#crypto_diffiehellman_computesecret_otherpublickey_inputencoding_outputencoding