
鍵は一度だけ生きる ワンタイムパッドとインターネットの反転
260720
最強の暗号は、百年以上前からある。しかも仕組みは、足し算と引き算しか使わない。 ワンタイムパッドという。 送りたい文と同じ長さの、完全にでたらめな数列を用意する。この数列を「鍵」と呼ぶ。文と鍵を一文字ずつ足し合わせると、意味のない文字列ができる。これが暗号文だ。受け取る側は同じ鍵を持っていて、同じ場所から引き算すれば元の文が戻る。 例を一つ。数字で送るとしよう。 文が「7 3 5」、鍵が「4 8 9」。 足すと「11 11 14」だが、繰り上がりは捨てて一桁だけ残す。10で割った余り、と考えればよい。暗号文は「1 1 4」になる。 受け取る側は鍵「4 8 9」を引き、足りなければ10を借りてきて、「7 3 5」に戻す。 鍵を知らない者にとって、「1 1 4」は、あらゆる三桁の元の文と等距離にある。 鍵は一度使ったら、二度と使わない。 だからワンタイム――一度きり――のパッド――帳面――と呼ばれる。かつては本当に、乱数を刷った紙の帳面が使われた。使った頁は破り捨て、燃やす。 この暗号は、正しい条件が守られるかぎり、原理的に破ることができない。 鍵が完全にランダムで、文と同じ長さを持ち、一度しか使われないなら、暗号文はいかなる文の暗号でもあり得てしまうからだ。 傍受者が暗号文をいくら眺めても、元の文が「こんにちは」だった可能性と「さようなら」だった可能性を、暗号文そのものから区別することができない。 絞り込みようがない。 これは計算機が速くなれば破れるという種類の安全性ではない。 条件が完全に守られているかぎり、暗号文の中に、正解を一つに絞り込むための情報そのものが存在しないのである。 ではなぜ、世界中の銀行やスマートフォンがワンタイムパッドを使っているわけではないのか。 問題は、暗号の外側にあった。 ## 運ぶことの困難 鍵を、相手に届けなければならない。 しかもワンタイムパッドでは、文と同じ長さの鍵が必要になる。 長い文を送りたいなら、長い鍵を用意しなければならない。 そしてその鍵を、誰にも盗み見られずに相手へ届けなければならない。 ――それが安全にできるくらいなら、文そのものをそうやって届ければいい。 この皮肉が、ワンタイムパッドの急所だった。 紙の乱数帳を金庫に入れて運び、受け渡し、厳重に保管し、使い終えた頁を破棄する。 手間と危険の多くが、「鍵の運搬と管理」に集中していた。 ここで興味深いのは、この時代、「一度きり」を守ること自体は、それほど不自然ではなかったという点である。 紙は燃やせば消える。 原本は物として一つしかない。 複製には手間がかかる。 つまり紙の世界では、 運ぶことが困難で、 消すことは容易だった。 ## 反転 インターネットが来た。 すると、情報を運ぶことの意味が大きく変わった。 かつて物理的に運ばなければならなかった情報を、今では地球の裏側にいる相手へ、ほとんど一瞬で届けることができる。 長い文字列でも、巨大なデータでも、コピーして送ることができる。 少なくとも「情報を遠く離れた相手と共有する」という物理的な困難は、百年前とは比較にならないほど小さくなった。 もちろん、インターネットで送ればそれだけで秘密になるわけではない。 安全に鍵を共有するという暗号学的な問題そのものが、完全に消えたわけではない。 それでも重要なのは、鍵となる情報を、いつでも、どこにいる相手とも共有できる環境そのものが、すでに世界規模で存在しているということだ。 かつてワンタイムパッドを縛っていた「運搬」という鎖は、大きく弱くなった。 では、ついにワンタイムパッドの時代が来たのか。 そう単純ではなかった。 今度は、反対側に新しい問題が現れた。 インターネットの土台は、複製である。 ファイルを「送る」とき、実際に起きているのは移動ではなく、新しいコピーの生成だ。 閲覧も、保存も、転送も、バックアップも、キャッシュも、すべて複製を伴う。 この媒体の上では、データは頼んでもいないのに増える。 消したつもりのものが、どこかに残る。 誰かが保存しているかもしれない。 キャッシュに残っているかもしれない。 アーカイブされているかもしれない。 つまりネットの世界では、 運ぶことは容易になった。 しかし、 消すことが困難になった。 運べなかった鍵が、運べるようになった。 その一方で、 捨てることのできた鍵が、捨てにくくなった。 困難の所在が、ほとんど正確に反転している。 紙の時代にワンタイムパッドを縛っていた鎖――運搬――は弱くなった。 しかし紙の時代には自然に成立していたもう一つの前提――鍵は一度だけ生き、使われたあとには死ぬ――が、複製の世界では最も成立させにくい性質になった。 ## 可死性という要求 ここで、ワンタイムパッドの意味が少し違って見えてくる。 かつてそれは、 「最強だが、鍵を運ぶことが難しい暗号」 だった。 しかしインターネットの登場によって、情報を運ぶことそのものは、劇的に容易になった。 すると、今度は別の問いが浮かび上がる。 鍵をどうやって死なせるのか。 ワンタイムパッドでは、鍵は一度だけ生き、使われたあとには二度と使われてはならない。 紙なら燃やすことができた。 しかしデジタル情報は、簡単に複製される。 一度ネットワークの中に現れた情報を、この世界から完全に消すことは難しい。 この要求は、複製を土台とする環境の中では、もはや単なる暗号技術の問題ではない。 環境そのものへの問いになる。 不死の複製でできた世界に、 死ぬことができるという性質――可死性――を、 どう植えるか。 ワンタイムパッドの数学は変わっていない。 変わったのは、その周囲にある世界のほうだ。 環境が反転したことで、同じ仕組みが、百年前とは違う問いを浮かび上がらせる。 ## 応答としての設計 私はこの問いに、「Ephemeral Cypher(エフェメラルサイファー)」という道具で一つの応答を試みた。 Ephemeralとは、「つかのまの」「はかない」という意味である。 ここで一つ、区別しておかなければならない。 Ephemeral Cypherそのものが、数学的な意味でのワンタイムパッドなのではない。 完全にランダムな鍵を文と同じ長さだけ用意し、それを厳密に一度だけ使用するという、ワンタイムパッドの条件をそのまま実装したものではない。 私が引き継ごうとしたのは、その暗号方式そのものではなく、 「鍵が一度だけ生きる」 という考え方である。 そしてもう一つ。 インターネットによって、鍵となる情報を遠く離れた相手と共有することが、かつてないほど容易になったという事実である。 ワンタイムパッドが紙の時代に抱えていた「鍵を運ぶ」という問題を、ネットワークの時代には別の形で考え直すことができるのではないか。 そして、運搬の問題が小さくなった世界で、今度は「鍵をどう死なせるか」を考えることができないか。 Ephemeral Cypherは、その問いに対する設計上の試みである。 道具の正体は、ブラウザで動くウェブアプリだ。 暗号化と復号の処理は利用者のブラウザの中で行われ、本文や鍵を預けておくための専用サーバーやアカウント、登録は必要ない。 使い方はこうだ。 送る人は、鍵の素材を指す。 どこかのウェブページのURL。 手元のHTMLファイル。 あるいは画像。 道具は、その素材の内容から暗号化に使う鍵を導き出し、文を利用者の端末上で暗号化する。 できあがった暗号文は、ただの文字列だ。 メールで送ってもいい。 掲示板に貼ってもいい。 公開された場所に置いてもいい。 複製されることを前提とした媒体には、複製されても、それだけでは元の文を読めないものだけを流す。 受け取る人は、同じ道具を開き、同じ素材を指す。 条件が一致すれば、文が戻る。 この方式では、鍵そのものを巨大な秘密のデータとして相手に運ぶ代わりに、すでに世界の側に存在している対象を、二人で共有することができる。 二人は同じものを指し示す。 場合によっては、何を指しているかを自然言語によって共有することもできる。 「NASAの、あの星の写真のページ」 そのような言葉だ。 もちろん、この曖昧さ自体を強固な暗号学的秘密として扱うことはできない。 第三者が同じ文脈を知っていれば、同じページへ到達する可能性もある。 それでも、ここには一つの構造的な変化がある。 秘密の巨大なデータそのものを物理的に運ぶ代わりに、すでに存在する対象への「指差し」へと、鍵の共有行為を縮小できる。 運搬の問題を、 参照の問題へ置き換えるのである。 インターネットは、世界中の情報をつなげた。 Ephemeral Cypherでは、その巨大なネットワークそのものを、鍵を共有するための環境として利用する。 ## 鍵はどう死ぬのか では、もう一方の困難はどうか。 鍵は一度きりで死ななければならない。 Ephemeral Cypherでは、その「死」の可能性を、世界の変化に委ねている。 指した先のウェブページが書き換われば、その内容から導かれる鍵も変わる。 過去の暗号文は、現在のページからは開けなくなる。 ウェブのページは複製される一方で、絶えず更新され、書き換わり、消えていく。 その流動性を、鍵の寿命として利用する。 鍵にするページを自分で管理しているなら、その内容を書き換えることで、それまでの状態を使った暗号文を、現在のページからは復号できない状態にすることもできる。 紙の乱数帳を破って燃やす代わりに、 ページを書き換える。 紙の世界で「破棄」だった動作が、ネットの世界では「更新」という形で現れる。 しかし、ここには限界もある。 過去のページを誰かが保存していれば、その鍵素材は完全には死なない。 キャッシュやバックアップ、ウェブアーカイブに残っている可能性もある。 デジタル空間において、「完全に消えた」ことを保証するのは非常に難しい。 だからEphemeral Cypherは、 鍵を確実に殺す装置ではない。 むしろ、 本来は死ぬことを苦手とするデジタル情報に、どうすれば寿命という概念を導入できるか。 その問いを扱う装置だと考えている。 完全な死を実現したのではない。 死ぬ可能性を、設計の中へ持ち込もうとしている。 ## 意義は環境から生じる ワンタイムパッドそのものは、新しい発明ではない。 この文章で紹介した数学にも、新しいものは一つもない。 それでも、ここに考える価値があると思う。 なぜなら、発明とは別の仕方で、新しさや意義が生まれることがあるからだ。 アイデアそのものは動かない。 環境が動く。 環境が反転する。 すると同じアイデアが、かつては持ち得なかった意味を帯びる。 紙の時代のワンタイムパッドは、鍵の運搬に縛られていた。 インターネットは、その状況を大きく変えた。 鍵となる情報を、いつでも、どこにいる相手とも共有できる世界が生まれた。 しかし同時に、複製を前提とするネットワークは、鍵を完全に捨てることを難しくした。 運ぶことの困難が小さくなったとき、 今度は、 死なせることの困難が現れた。 ワンタイムパッドは、その反転を照らす探針になる。 Ephemeral Cypherは、だからある意味で、車輪の再発明である。 しかし車輪の再発明が徒労と呼ばれるのは、道が変わらないときだけだ。 道そのものが反転したなら、 車輪はもう一度考え直されなければならない。 新しさは、いつもアイデアの側にあるとはかぎらない。 世界の側が動いたとき、 古いものが、 最も新しい問いになることがある。