情報セキュリティ大学院大学公開講座『暗号入門7講』
今回は鍵共有プロトコルについてお話します。 鍵共有プロトコルとはセッション鍵を共有するためのプロトコルです。 セッション鍵とは一時的な使い捨ての秘密の鍵情報を意味し、 鍵共有プロトコルを実行した2者の間でだけ共有されて、 その後の通信を秘匿したり認証したりするために使われます。
ここでは、(数多ある)鍵共有プロトコルの中から、2つの典型的なプロトコルを紹介します。 そのうちの1つは公開鍵暗号を用いる鍵共有法で、SSLにも用いられています。 もう1つはDH鍵共有法と呼ばれるものでIPSecに用いられています。
それら2つのプロトコルを縦糸にし、横糸として鍵共有プロトコルの安全性を考えます。 鍵共有プロトコルの安全性は、一見すると単純に見えます。 セッション鍵を守ればいいわけなので、 「プロトコルを実行しているパーティー間のメッセージを敵が覗き見しても、 敵にはセッション鍵がわからない」こととしておけば十分に思えます。
ところが、鍵共有プロトコルはそれ自身では意味を持たず、 他のプロトコルやシステム(「親プロトコル」と呼びます)で部品として用いられて初めて意味をもつ プロトコルです。しかも、その親プロトコルは、1つだけでなく、同時に多数の鍵共有プロトコルを 部品として実行することも珍しくありません。 そのため、鍵共有プロトコルは、同時に複数のコピーがいくらかの文脈を共有した状態で実行されます。 このような状態での実行(コンカレントな実行)において安全性を達成するのはなかなか困難なことです。 鍵共有プロトコルがどのようにしてこのコンカレントな実行に対処しているかを見たいと思います。 (有田)