通信の保護について
想定する脅威モデル
- なりすまし
- 情報漏洩(盗聴)
- データの改ざん
- 否認
情報漏洩(盗聴)
- 暗号化で対策
- 共通鍵暗号方式
- 公開鍵暗号方式
- ハイブリッド暗号方式(SSLプロトコルで使用)
共通鍵暗号方式
共通の鍵を使って暗号化と復号化をおこなう。
1. 2者(アリスとボブ)間で暗号化アルゴリズムを決めて「共通鍵」を作成
2. アリスは「共通鍵」を使ってデータを暗号化してボブに送る
3. ボブは暗号化されたデータを受け取った後、「共通鍵」を使って復号化してデータを読む
メリット
- 暗号化、復号化の処理が高速
デメリット
- そもそもどうやって鍵を渡すのか?
- 他の人とやりとりする場合、このやりとりで使った鍵とは別の「共通鍵」を作成する必要がある
- 人が増えれば増えるほど、鍵が増える。>>>「n(n-1)個」
- 増えた鍵の管理コストが高い
公開鍵暗号方式
暗号化する鍵と、復号化する鍵が異なる。
- アリスは暗号化する鍵を公開しておく=「公開鍵」
- ボブはアリスが公開している鍵でデータを暗号化してアリスに渡す
- アリスは受け取ったデータを「公開鍵」とは別の鍵=「秘密鍵」で復号化して読む
メリット
- 鍵の数が少なくて済む
- 鍵の管理コストが低い
- 鍵の受け渡し時のセキュリティを気にしなくて済む
デメリット
- 暗号化、復号化の処理に時間がかかる
ハイブリッド暗号方式
共通鍵暗号方式と公開鍵暗号方式の組み合わせ
1. アリスは、2者の「共通鍵」でデータを暗号化する
2. アリスは1で使用した「共通鍵」をボブの「共通鍵」で暗号化し、1で暗号化したデータと一緒にボブに送る
3. ボブは自分の「秘密鍵」で暗号化された「共通鍵」を復号化する
4. ボブは復号化した「共通鍵」でデータを復号化する
※SSLプロトコルではハイブリッド暗号方式を使用している
メリット
- やりとり後に鍵を破棄すれば鍵の保管に配慮する必要がない
- やりとりの多くを共通鍵暗号方式で行うため、処理が高速化する
データの改ざん
- メッセージ認証符号>MAC(Message Authentication Code)で対策
メッセージ認証符号
データの完全性を保証するもの
1. 任意のデータ(=メッセージ)と「共通鍵」を使って、ある関数(MAC関数)を利用して計算した値(MAC値)をつくる
2. データとMAC値を合わせて送信する
3. 受信者は受け取ったデータからMAC関数を使用してMAC値を作り、送られてきたMAC値と一致していればデータは改ざんされていないことが判断できる
なりすまし、否認
デジタル署名で対策
デジタル署名
公開鍵暗号方式の逆で自身を証明する
1. アリスがボブにデータを送るときに、「秘密鍵」で暗号化をする
2. ボブはデータを受け取って、アリスの「公開鍵」で復号化をする
3. アリスの「公開鍵」で復号できるデータを作れるのはアリスの「秘密鍵」持っている、アリスだけ
4. アリスの「公開鍵」で復号できる=アリスが送ってきたデータとなり、送信者を特定できます
これにより、なりすましができなくなり、且つ否認(誰が送ったかの証拠)もできなくなる