担当:藤井
ハイブリッド暗号システムとは
対称暗号と公開鍵暗号の両者を組み合わせて、暗号化する方法
対称暗号と公開鍵暗号
対称暗号方式では、送信者と受信者で共通の鍵を共有する必要があり、鍵を安全な経路を使って配送しないといけないという「鍵配送問題」がありました。
この「鍵配送問題」を克服したのが、公開鍵と秘密鍵を使う公開鍵暗号方式です。
しかし、この公開鍵暗号には2つの問題点があります。
- 対称暗号方式に比べて処理速度が遅いこと
- 中間者攻撃に弱いということ
ハイブリッド暗号システムは、この問題のうち、1番の処理速度の問題を解決する手法です。
概要
- セッション鍵は、疑似乱数生成器で生成します。
- メッセージを、セッション鍵を用いて対称暗号で暗号化します。
- セッション鍵を、公開鍵暗号で暗号化します。
暗号化の流れ
セッション鍵とは、今回の通信のために一時的に作成される鍵のことです。
セッション鍵は疑似乱数生成器で生成され、メッセージの対称暗号の鍵に使われます。
次に、セッション鍵は、公開鍵暗号によって暗号化されます。
公開鍵暗号の暗号化には「受信者の公開鍵」が使われます。
セッション鍵は、メッセージ本文に比べ短いのが普通であるため、公開鍵暗号の処理が遅くてもそれほど時間はかかりません。
セッション鍵は、対称暗号にとっては鍵で、公開鍵暗号にとっては平文になるということです。
暗号化したメッセージと暗号化したセッション鍵を結合すると、ハイブリッド暗号システムにおける暗号文になります。
以上が、暗号化の流れです。
次に、復号化の流れについてです。
受け取った暗号文を「暗号化されたメッセージ」と「暗号化されたセッション鍵」の二つに分割します。
受信者と送信者の間で、暗号文がどういう構造をしているかを取り決めておけば、容易に分割できます。
次に、「暗号化されたセッション鍵」を受信者のプライベート鍵を用いて復号化します。
最後に、復号化されたセッション鍵を用いて、暗号化されたメッセージを復号化します。
以上が復号化の流れです。これは、ちょうど暗号化の流れと逆になっています。
使用例
ハイブリッド暗号システムの使用例
- SSL/TLS
- 有名な暗号ソフトウェアPGP
強いハイブリッド暗号システムとは
- ブルートフォースアタック(総当たり攻撃)でセッション鍵を推測されないような品質の疑似乱数生成器を使用する。
- 対称暗号は、強いアルゴリズム、鍵長を適切な長さ、適切なブロック暗号のモードを使用する。
- 公開鍵暗号も強い暗号アルゴリズム、充分に長い鍵長を使用する。
- セッション鍵が破られると今回の通信のみが解読されるが、公開鍵暗号が破られると(同じ公開鍵を使った)すべての通信が解読される。
強いハイブリッド暗号システムは、以下の項目が重要になります。
セッション鍵を生成する疑似乱数生成器は、推測されないような品質のものを使用する必要があります。
一部でも推測されると、総当たり攻撃がされやすくなってしまいます。
対称暗号は、〰必要があります。
公開鍵暗号も〰必要があります。
セッション鍵が破られると今回の通信のみが解読されますが、公開鍵暗号が破られると、すべての通信が解読されるため、公開鍵暗号をより強くすべきです。
まとめ
ハイブリッド暗号システムは、
- 対称暗号と公開鍵暗号の両者を組み合わせて、暗号化する方法。
- メッセージを対称暗号で暗号化、対称暗号のセッション鍵を公開鍵暗号で暗号化する。
- 対称暗号の鍵配送問題、公開鍵暗号の処理速度の遅さを解消する。
補足
中間者攻撃とは、
公開鍵暗号の通信において、受信者が送信者に公開鍵を送信する際に、第三者が妨害できれば中間者攻撃が可能となる。
SSL/TLS
処理の流れ
- クライアントはWebサーバに接続要求を出す
- Webサーバは鍵ペアから公開鍵をクライアントに送ります
- クライアントは共通鍵暗号化方式でデータ本体の暗号化を行います
- クライアントが生成した共通鍵をWebサーバの公開鍵で暗号化します
- クライアントは暗号化したデータと暗号化した共通鍵をWebサーバに送ります
- Webサーバは暗号化された共通鍵をWebサーバの秘密鍵で複合化します
- Webサーバは取り出した共通鍵でデータを複合化します