スティーブン・レビー『暗号化 プライバシーを救った反乱者たち』

たいそう刺激的で面白かった。そのぶん時間はかかったけど。

P.394 より。暗号の鍵のつくりかたを間違えるとひどい目にあうという教訓。おなじ失敗をしないように…。

ネットスケープはRNGの「種<シード>」を次の三つの要素から導き出していたのである。時刻と二種類のユーザーID(プロセスIDとペアレントID)だ。ひどい失敗だった。敵は、「種」の最初の部分を見つけるのに、わずかな計算サイクルで済み、さらにわずかな脳細胞を働かせるだけで済むのだ。まず、時刻は非常に限られた数なので、その全部をチェックするのは易しい。また多くの場合、二種類のユーザーIDも見つけやすい。とくに――インターネットの環境ではよくあるように――多くの人間がサーバーを共有しているときは簡単だ。

P.441 より。「公開鍵暗号」の前に考えられ、発表されることの無かったイギリスの「非秘密鍵暗号」。

エリスの方式は、三つの関数変換が軸になっていた。受信者のアリスはそのうちのふたつを使い、送信者のボブは残りのひとつを使う。また邪魔者のイヴは通信を傍受する可能性があり、彼女も三つの関数を使うことができる。というのも、このシナリオでは三つの関数は公知となっているからだ。さてプロセスは、エリスがプロジェクトC43からヒントを得た重要な行為から始まる。メッセージの「受信者」となる人間が攪乱に関与するのである。アリスはまず、アトランダムに巨大な数を選ぶ。これは事実上、彼女だけがもつ秘密鍵である。この鍵を、アリスはある数学的な関数を利用して別の数に変換する。そうして得た数を、ボブへ送るのだ。
この新しい数は、ディフィーとヘルマンがのちに公開鍵と名付けるものに似ている。この数を生成した関数には、逆算できないという重要な性質がある。そのため、たとえこの秘密でない数を手に入れ、それを生成した関数を知っていても、逆算して最初の秘密の数を得ることはできない。秘密の数は、メッセージ受信者のアリスにしかわからないままなのである。
秘密でない数を受け取ったボブは、それと二番目の関数を使って個人的なメッセージを攪乱し、これをアリスへ送る。では、アリスはどうやってそのメッセージを元の平文に戻すのか?彼女は、三番目の関数とともに自分の秘密鍵(秘密の数)を使い、メッセージから暗号化の衣を剥ぐのである。こうして、アリスはメッセージを読め、イヴは歯ぎしりして悔しがるばかりとなる。
結局、非秘密鍵(秘密でない数)はプロジェクトC43の回線ノイズのような働きをする。盗聴者は回線のノイズを聞き取れるが、そのノイズの作り方(秘密鍵に相当する)は受信者にしかわからない。だから受信者だけが、ノイズを除去して(エリスの方式の場合、適切な関数を利用して)攪乱したメッセージを元の明瞭な状態に戻すことができる。

そのつづき。 P.446 から抜粋。

「逆算できない関数を見つけるとなれば、巨大な数を掛け合わせるというアイデアが僕には当然のように浮かびました」彼は、秘密「鍵」をふたつの巨大な素数にして、受信者のアリスがその場で作ってはどうかと考えた。するとその積が秘密鍵となり、その数を送信者のボブに渡すことができる(ボブはこの数を公表されたリストから見つけることもできる)。それからコックスは、ボブがその秘密でない数を代入してメッセージを暗号化でき、元の素数を知るものだけが復号化できる単純な数式も考案した。

P.302 にある「ブラインド署名」。

銀行その他の認証機関が、あるナンバーを何らかの貨幣として使えるように認証するための手段だ。しかし、チャウムの数学的手法を使うと、銀行にはだれがその貨幣をもっているのかがわからず、その後の行き先も追跡できない。というのも、銀行から現金として認められるナンバーを発行されたら、銀行のお墨付きはそのままに、ナンバーだけ変えることができるからである(その金が追跡されないように)。チャウムにとって最大の発見は、このような匿名性を無条件に提供できると数学的に証明できたことだった。…
その理論を彼は鮮やかな例をもって示した。三人の暗号研究者がレストランでの食事を終え、支払いのときを迎えるというシナリオである。ウェイターが現れる。彼は、暗号研究者たちに向かって、ディナーの代金は事前にいただいております、と告げる。さて、だれが払ったのか?会食者のひとりが匿名で仲間にご馳走することにしたのか?それとも、NSAかほかのだれかが食事代を払ったのか?問題は、このどちらなのかを突き止めるうえで、もし暗号研究者のだれかが払っていたとしてもその匿名性を保てるかどうかだ。この「会食する暗号研究者(Dining Cryptographer' 略してDC)」の問題の答えは驚くほど単純で、一部の当事者には見えないようにコイン投げすればいい。たとえば、アリスとボブが、テッドからは見えないようにメニューをたてにして二十五セント玉を投げる。それからふたりは、おのおのこっそり結果を紙に書いてテッドへ渡す。ただし、ここで重要な条件がある。ふたりのどちらかが食事代を払っていた場合、その人は反対の結果を書かなければならないというものだ。したがって、もしもばらばらの結果を受け取ったら(一枚の紙には表、もう一枚には裏と書かれていた場合)、テッドには仲間のどちらかが食事代を払ったことがわかる。だが、それ以上の合図でもないかぎり、払ったのがアリスなのかボブなのかはわからない。こうしたコイン投げを続ければ、会食者が何人でもこのゲームはできる(のちにこの会食者をDCネットと呼ぶようになった)。このアイデアをスケールアップすれば、電子マネーのシステムができるのである。

P.81 から。 DES って、「デズ」と読むらしい。

こうして改良版ルシファー(またの名をDSD-1)が、「データ暗号化規格(DES)」という堂々たる一般名称で呼ばれることになったのだ。この名称はやがて情報技術の専門家のあいだでもお馴染みのものとなり、アルファベット三文字ではなく「デズ」という一音素で発音されるようになる。