セキュリティ

通信の保護について

通信の保護について

 想定する脅威モデル

- なりすまし
- 情報漏洩(盗聴)
- データの改ざん
- 否認

 情報漏洩(盗聴)

- 暗号化で対策
 - 共通鍵暗号方式
 - 公開鍵暗号方式
 - ハイブリッド暗号方式(SSLプロトコルで使用)

 共通鍵暗号方式

共通の鍵を使って暗号化と復号化をおこなう。

1. 2者(アリスとボブ)間で暗号化アルゴリズムを決めて「共通鍵」を作成
2. アリスは「共通鍵」を使ってデータを暗号化してボブに送る
3. ボブは暗号化されたデータを受け取った後、「共通鍵」を使って復号化してデータを読む

メリット
- 暗号化、復号化の処理が高速

デメリット
- そもそもどうやって鍵を渡すのか?
- 他の人とやりとりする場合、このやりとりで使った鍵とは別の「共通鍵」を作成する必要がある
- 人が増えれば増えるほど、鍵が増える。>>>「n(n-1)個」
- 増えた鍵の管理コストが高い

 公開鍵暗号方式

暗号化する鍵と、復号化する鍵が異なる。

  1. アリスは暗号化する鍵を公開しておく=「公開鍵」
  2. ボブはアリスが公開している鍵でデータを暗号化してアリスに渡す
  3. アリスは受け取ったデータを「公開鍵」とは別の鍵=「秘密鍵」で復号化して読む

メリット
- 鍵の数が少なくて済む
- 鍵の管理コストが低い
- 鍵の受け渡し時のセキュリティを気にしなくて済む

デメリット
- 暗号化、復号化の処理に時間がかかる

ハイブリッド暗号方式

共通鍵暗号方式と公開鍵暗号方式の組み合わせ

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. アリスの「公開鍵」で復号できる=アリスが送ってきたデータとなり、送信者を特定できます

これにより、なりすましができなくなり、且つ否認(誰が送ったかの証拠)もできなくなる