2

シナリオ

SOAP Webサービスは、ドキュメントとデータを取得するためのインターフェースを提供します。セキュリティは最優先事項です。

WS-Securityが使用され、クライアントとサーバーの両方がSOAPエンベロープ全体を暗号化して署名します。

質問

署名に使用される秘密鍵をアプリケーションにコンパイルしてデバイスに保存する必要がありますか、それともキー交換プロトコルを使用してサーバーから提供する必要がありますか(おそらくユーザーの認証後)?

復号化用の秘密鍵をデバイスに保存する必要がありますか、それともサーバーから提供する必要がありますか?

サーバーによって復号化される(クライアントからアップロードする場合)、またはクライアントによって復号化される(サーバーからダウンロードする場合)ファイルごとに一意のキーを持つことは現実的ですか?

4

2 に答える 2

1

いくつかの提案:

- リバース エンジニアリングが行われるため、サーバーの外部に埋め込まれた対称キーは公開されていると見なす必要があります (つまり、キーが公開されている場合は暗号化する必要さえありません)。

-クライアント上の安全な RNG によって生成され、グローバルな非対称公開鍵で暗号化されたサーバーに送信される、セッションごとの対称鍵を使用する必要があります。秘密鍵には有効期限があります。

-そのセッションで転送されるすべてのファイル/ストリームにセッション キーを使用できますが、各ファイルの対称キー暗号化をソルトするために一意の nonce を使用する必要があります。暗号化モードによっては、複数のストリームで同じキー/ノンスを使用すると、2 つのストリームを XOR して、マッシュアップされた暗号化されていない結果を復元する脆弱性が生じる可能性があります。

于 2012-05-14T18:07:49.810 に答える
0

あるデバイスから別のデバイスに送信する必要がある場合、秘密鍵の概念全体が無効になります。通信チャネルの両端で、独自の秘密鍵を生成する必要があります。これは、秘密鍵を実行可能ファイルにコンパイルすることを意味するものではないことに注意してください。これは、実行可能ファイルを持つすべての人が秘密鍵を共有するためです。これは明らかにあなたが望むものではありません。個々のデバイスは、暗号的に安全な乱数ソースを使用して、独自の公開/秘密キー ペアを生成する必要があります。次に、公開鍵を平文で交換し、それらを使用してセッション鍵 (ファイルごとに一意にすることができます) を交換し、秘密鍵で署名することができ、誰もが満足します。

ただし、覚えておいてください: 決して秘密鍵をハードコーディングしたり、決して誰とも共有したりしないでください。

于 2012-05-14T18:00:59.080 に答える