このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

宣伝

 当サイトにおける暗号に関するページでは、説明が足りなかったり、誤った記述をしていたりするところがあります。今後、少しずつ修正する予定です。

 暗号理論の『暗号技術のすべて』が発売されています。初心者向けの暗号本です。これまで暗号本に何度か挑戦しつつも挫折してしまった方、学校の課題で悩んでいる方、資格試験にて暗号の問題が苦手な方などにお勧めです。

『暗号技術のすべて』宣伝サイト

 興味がある方は宣伝サイトを参照してください。Amazonでも発売中です。

鍵配送法

 共通鍵暗号系では送受信者は秘密鍵を共有している必要がある。アリスとボブが直接の知り合いなら秘密鍵を手渡しすればよいが、ネットワーク上での知り合ったならどうしたらよいだろうか。この問題を鍵配送問題という。

 この鍵配送問題を解決する方法はいくつか存在する。

鍵の事前共有による鍵配送問題の解決

 もっとも簡単な方法は「安全な方法で鍵を前もって渡しておく」というものである。当たり前だがこれには限界がある。隣のデスクにいる人に安全な方法で渡すことはできるが、インターネットのように遠隔地にいる人に安全に渡すことは困難である。郵送するという方法もあるが、本当に郵送途中で改竄や盗まれていないとも言い切れない。

 また、もし鍵の事前共有が可能だとしても、人数が多くなると通信のための鍵が膨大な数になってしまう。n人いたとして、彼らが一人一人自分以外のn-1人と通信する可能性があるとすると、通信用の鍵は一人当たりn-1個必要となる。よって、合計で次のようになる。

{}_n\mathrm{C}_2~=~\frac{n\(n-1\)}{2\cdot1}=\frac{n\(n-1\)}{2}

例:1,000人いたら、

{}_{1000}\mathrm{C}_2~=~\frac{1000~\cdot~999}{2~\cdot~1}=499500

鍵配送センター利用による鍵配送問題の解決

 鍵配送センター(KDC:Key Distribution Center)といった鍵を管理できる存在を活用する手段もある。

 欠点は次が考えられる。

  1. 利用法が増えれば増えるほど、KDCの負荷が増える。
  2. アタッカーがKDCのDBを狙ったり、DoS/DDoSアタックでサービスを停止させる可能性がある。

公開鍵暗号利用による鍵配送問題の解決

 この場合は、まず受信者のボブが公開鍵を公開する。

 また、送信者のアリスは共通鍵をランダムに選ぶ。次にアリスはボブの公開鍵を使って共通鍵を暗号化し、暗号文をボブに送る。

 ボブは受け取った暗号文を復号し、共通鍵を得る。

 これで2人は第三者に内容がばれないように、共通鍵を共有することができる。

DH鍵配送による鍵配送問題の解決

 DH鍵配送(DH鍵共有プロトコル)を使うと、共通鍵を暗号化して送るという予備通信をせずに、安全でないネットワークだけを用いて共通鍵を共有することができる。ただし、アリスとボブの双方が公開鍵を公開する必要がある。

鍵共有プロトコルとは

 セッション鍵の共有のために使われる暗号プロトコルである。

 そのためには次のような条件が求められる。

  1. Key freshness:毎回違うセッション鍵を生成する。
  2. Key integrity:参加者が同じ鍵を共有できる。
  3. Key authentication:正当な参加者だけが、鍵を共有できる。