9

クライアントとサーバー間の通信にセキュリティを実装する必要があります。次のハイブリッド暗号システムを実装しました

Alice 宛てのメッセージをハイブリッド暗号システムで暗号化するために、Bob は次のことを行います。

  1. Alice の公開鍵を取得します。
  2. データ カプセル化スキームの新しい対称キーを生成します。
  3. 生成されたばかりの対称キーを使用して、データ カプセル化スキームでメッセージを暗号化します。
  4. アリスの公開鍵を使用して、鍵のカプセル化方式で対称鍵を暗号化します。
  5. これらの暗号化を両方とも Alice に送信します。

このハイブリッド暗号文を復号化するために、Alice は次のことを行います。

  1. 彼女の秘密鍵を使用して、鍵カプセル化セグメントに含まれる対称鍵を復号化します。
  2. この対称キーを使用して、データ カプセル化セグメントに含まれるメッセージを復号化します。

公開鍵暗号システムには RSA を使用し、対称鍵暗号システムには AES を使用しています。すべてが正常に動作しますが、AES 初期化ベクトルを処理する方法がわかりません。現在、AESキーと初期化ベクトルを連結して公開キーで暗号化し、それをサーバーに送信しています。

このアプローチについて意見を求めたかっただけです。この問題が他の通信プロトコル SSL などでどのように解決されているか。

ありがとう。

4

3 に答える 3

11

IV を暗号化しません。暗号化されたキーと一緒にバンドルし、受信者に (平文で) 送信します。

これには標準が存在します。このスキームは CMS (S/MIME のベース) では "KeyTransRecipientInfo" と呼ばれ、PGP は同様のモードを提供します。TLS には、CMS と同じ ASN.1 構文を使用して、キー暗号化アルゴリズム識別子のパラメータとして初期化ベクトルも含まれます。この操作を実行するための堅牢なオープンソース ライブラリは、非常に多くのプラットフォームで利用できます。

少なくとも、CMS 仕様を研究することは、自作の実装における多くの落とし穴の一部を回避するのに役立つ可能性があります。RFC 3369 の §6.1 および §6.2.1 を参照してください。

于 2009-10-08T21:42:33.130 に答える
2

私は同じことを行い、同じ方法で処理しました-AESキーをIVと連結し、両方を暗号化します。

キーを送信し、キー自体を使用して IV を生成することもできます。たとえば、キーのハッシュの最初の 128 ビットを IV として使用します。セッションごとに新しい AES キーを生成し、同じ IV で同じ AES キーを何度も再利用しない限り、セキュリティ的には問題ありません。

于 2009-10-08T21:18:03.123 に答える
2

IV を暗号化する理由はありません。暗号化せずに送信できます。毎回新しいものを選択するようにしてください (AES キーと同じ方法)。

とはいえ、AES キーと IV を一緒にパッケージ化すると便利なことがよくあります。16 バイトの暗号化はそれほど高価ではありません。

于 2009-10-08T21:22:33.783 に答える