What is Time Capsule Encryption?

2005/5/20 初版
タイムカプセル暗号って何?
目的
ここでは自分なりにタイムカプセル暗号をかみ砕いて, くどくど説明してみました. IPAX2005の展示の経験を元に, 誤解しやい, 分かりにくいと思われた点にも触れます(文責:光成滋生).
出発点
AさんがBさんにメッセージを渡す状況を考えます. Aさんは今メッセージを渡したいのだけど, Bさんには明日にならないと読んでほしくないとします. しかもAさんは明日になると山奥にこもることになっていてBさんと連絡できないとします.
強引な例ですが, 今はまずそういう要求があると思ってください.
このとき, Bさん側(で動くソフト)は「明日になった」ということを確認する必要があります. Bさんのパソコンの内蔵時計を使って確認するのはナンセンスです. 何故なら, パソコンの時計はBさんの好きな時刻に変更できてしまうからです.
誰もが正しいと思える時刻が必要なのです.
そこで電話番号117の時報に相当する時報局に登場してもらいます. コンピュータ上で時報局の役割をするには偽物が現れないよう, 電子署名を使って, その時報局が正しいことを示せるようにしておく必要があります.
前提
というわけで, これ以降は電子署名付きの時報を発行する信頼できる時報局があると仮定します. この仮定をしないと話が始まりません. ついでに以後の登場人物は, その電子署名が正しいことを確認できるための時報局の公開鍵を持っているとします.
そうじゃないと電子署名の意味がないですから.
着眼点
さて, 署名付きの時報があったとして, これをどう使いましょうか. 単にその署名を時刻が偽物でないかの検証のためだけに使うのなら, 暗号化されたメッセージを復号する鍵は別に用意する必要があります. 既存の暗号は全てそうなってます. 当たり前です. 署名というのは検証のために作られたものですから. その場合は復号鍵はどこかで保管しておかないといけません.
しかし
もし署名つき時報が復号鍵になってくれれば問題はずっとシンプルになります. それがタイムカプセル暗号なのです.
データの流れ
時報局, 送信者, 受信者の間のデータの流れは次のようになります. データの流れ
時報局から全員へ(前提条件:一度だけでよい)
時報局の公開鍵が配布されている.
発信者(Aさん)から受信者(Bさん)へ
復号時刻を指定して, 時報局の公開鍵と適当な乱数を元に暗号化したメッセージを受信者に渡すだけ.
時報局から受信者へ
正しい時刻に署名つき時報を流すだけ.
発信者から時報局
何も無し.
受信者から時報局
何も無し.
署名つき時報を受け取った受信者はそれだけで暗号化されたメッセージを復号できます.
強調したい点
既存の暗号の枠組みでは出来ない点として, くどいですが書いてみます.
n人でのじゃんけん
ここまで読まれると, 既存の暗号と性質が異なるのが分かると思います. 具体例としてn人でのじゃんけんを考えます. 別にじゃんけんじゃなくてもよいですが, ある時刻にn人が一斉に手持ちのカードを開きたい状況であるとします.
n人でのじゃんけん
既存の方法では, その時刻までにn人がそれぞれ暗号化したデータを渡しておいて, ある時刻が来たら, もう一度(n-1)人に復号鍵を渡す必要があります. どこかに信頼のおけるサーバを作っていたとしても, そのサーバに一度データを転送する必要がありますし, 復号鍵をどう持っておくか悩みます.
それに対して, タイムカプセル暗号では, 暗号化したデータを渡すまでは同じですが, 復号は時報を受けるだけで他には何もする必要がありません.
応用例
いくつか考えられます.
上記のじゃんけんなどのゲーム
今までに比べて, 人数が増えたときのプロトコルの煩雑さが減ります.
映画の配信
公開予定時刻よりも先に暗号化コンテンツを配信しておくことで帯域の分散化ができます.
いくつものプロバイダ, いくつもの映画それぞれについての復号鍵の管理が不要です(時報による管理の単純化).
入札
入札決定時刻までに暗号化された入札価格を受理しておき, その時刻が来たら, 入札者とのデータのやりとりをせずに復号できます.
他にも使えるところがあると思います. よい使い道があれば教えてください.
妄想
近い将来, 地上波デジタル放送がパソコンでも普通に見られるようになると思います. そのときにどこかの公共性の高いところが時報局を建てて配信してもらえればみながハッピーになれるかなあと思っています. 電波時計に入るのもうれしい. 時報につける署名データは320バイト程度です.
IPA関連
Q&A
送信者が送るメッセージは誰もが読めるの?
yesです. これはあくまで, 指定した時刻になるまでは受信者が読めないことを保証する暗号です. もし, 復号時刻より後に第三者に読まれてほしくない場合は, 送信者と受信者との間で使う別の暗号を使って更に暗号化しておく必要があります.
その場合も時報が来たら読めるという利点は変わらないです.
復号時刻の時報を受け損ねたらどうするの?
一度発行した時報は, 誰もが見てよいですので, どこかのサーバに溜めていき, そこに取りにいってもらうことで対応します.
一応, 現在の時報から(たとえば)60回前までの時報を遡って生成できるようにすることも可能です.
時報局は受信者を認証しているの?
時報局はあくまで署名つき時報を発行するだけです. デモではネットワーク上でしていたため区別がつきにくいですが, 復号者が時報をもらうときに認証を行う必要はありません. 放送などで不特定多数に配信してよいです.
時報局がクラックされたらどうするの?
そうならないように気をつけるしかないです. その質問は今のPKIの証明書を発行する機関がクラックされたらどうするのと同じレイヤの質問です.
なんという暗号方式なの?
私たちはタイムカプセル暗号と呼んでいますが, timed-released cryptographyとも言うようです. (厳密には異なるのですが)IBE(ID-Based Encryption)と呼ばれる暗号方式の一つの応用例と考えることもできます.
ある時間が来たら読めないようにすることはできるの?
理論的には不可能だと思います. もしかしたら将来量子デバイスを使ってできるようになるのかもしれませんが, 今のところ復号された瞬間にコピーされることを防ぐのは無理だからです. ただ, 現実的には耐タンパー性のソフトと組み合わせての実現なら可能だと思います.
他, 何か疑問点があればメールか掲示板で質問してください.

御意見は光成滋生<herumi@nifty.com>までお願いします