1

環境情報を収集し、そのデータを単一のサーバーに送信して処理するボードに取り組んでいます。このサーバーへの唯一の接続は、最終的に現場に出されるボードによって行われます。ほとんどの開発は完了しましたが、すべての接続を保護したいと思います。データはリアルタイムに敏感であり、ボードにはかなり小さなプロセッサ (8Mhz) が搭載されているため、速度は重要です。私はすべてを非常に厳密に制御しているため、WiFi チップと接続を受け入れる Java ベースのサーバーとの間で同じ秘密鍵を共有したいと考えています。これにより、ボードの 1 つが接続するたびにハンドシェイク プロセスを実行することなく、SSL 経由でメッセージを復号化および暗号化できるようになることを願っています。正しい?

私は数日間実験してきましたが、うまくいきませんでした。しかし、うさぎの穴を深く掘り下げる前に、これが可能であることを確認したかった. ありがとう、どんな提案でも大歓迎です。

4

1 に答える 1

5

SSL/TLS の仕組みについて混乱しているようです。

ハンドシェイク中に、サーバーは証明書を提示して (匿名の暗号スイートが使用されていない場合)、その ID をクライアントに証明し、クライアントとの共有キーについて (プレマスター シークレットの交換を介して) 合意します。ハンドシェークが完了すると、共有キーのみが暗号化に使用されます。(詳細はこちら

サーバーの秘密鍵は、(証明書を介して) クライアントに対してその ID を証明するために使用されます。これの目的は、MITM 攻撃を防ぐことです。

サーバーの秘密鍵をクライアントに渡しても、クライアントがサーバーになりすますことしかできません。

ハンドシェイクを実際に回避することはできません。また、連続して複数の接続を行うと、セッションの再開を使用できる場合があります。TLS PSK (事前共有鍵) 暗号スイート (秘密鍵ではなく対称鍵を共有) を使用できる場合もありますが、Oracle JSSE プロバイダーでは使用できません。

于 2013-02-07T22:38:06.357 に答える