2024年1月20日 暗号解読話の続き・補足・訂正
定価で5000円くらいする本だけど、買ったぜ!
いろんな文献を漁ったけど、いまいち真相がわからんなぁ」みたいな感じで終わっていたので、そのわからなさを具体的に記す。
出典はこの本、英語版wikipedia、外国の大学の授業用pdfらしきもの(デヴィッド・カーンのCodebreakerという本を参照しているようだ)の3か所。
これの続き&正確性がある版!
タブラ・レクタはトリテミウスが作った?
『暗号解読事典』170ページによると、(以下特筆しない場合、ページ数はどれもこの本のことを指すことにする)
……と、他の誰かが作ったものをトリテミウスが記録に残したような書き方をされている。しかし、この次の段落では「自らの手法」と、まるで彼自身が発明したかのように表現されているし、英語版wikipedia(ヴィジュネル暗号、タブラ・レクタ)でもinvent(発明)という扱いだ。
これに対して、ひとまず自分は「当時は著作権や特許権といった概念がなかったから、剽窃と発明の違いが曖昧だった」という風に解釈することにした。
ヴィジュネルは何をした人なの?
172ページによると、
176ページによると、起爆鍵のあるautokeyを発明した人。暗号文が鍵になるパターンと平文が鍵になるパターンの両方を提示した。
前回のnoteで「進行鍵を発明した人」と紹介したけれど、どうやらそれは不正確な表現だったかもしれない。なぜなら進行鍵はもっと広い概念を指す言葉のようで、最初に提示したトリテミウスのタブラ・レクタの時点でも、『暗号解読事典』では「1文字目は1行目で変換、2文字目は2行目で変換…」の仕組みを指して進行鍵と称している。
変換表が規則的に変化することを定義とするなら、暗号史上で最初の進行鍵はトリテミウスの表。不規則でも変化すればよいと定義するなら、トリテミウス以前の時代のアルベルティやポルタの時点でも進行鍵はあった。……ということなんだろうか?(やはりわからないことが残ってしまった!)
ベラッゾは何をした人なの?
(以下はだいたい英語版wikipediaが出典。彼の著作の写真もあるので、信憑性は高い)
ある文字列を暗号鍵として事前に共有して、それを繰り返し用いることで暗号化することを発明した人。ただし彼の提唱した暗号化はトリテミウスのタブラ・レクタを用いた変換方式ではない。
また後述するジロラモ・カルダーノの自動鍵の改良版を作った人でもある。平文の各単語の一文字目を、次の単語の暗号鍵として用いる方法で、その際の暗号化の方法もやはりトリテミウスのタブラ・レクタではない表を用いている。
やはり英wikipediaから引用すると、たとえばmariaの部分はAの暗号変換表を用いて暗号化されている。
最初のaue→MOBがどの表を用いたのかは、おれには不詳だ。
以上の内容を踏まえて『暗号解読事典』の175ページを読んでみると、確かに「彼はタブラ・レクタを用いて」とは明記せずに、かといって彼独自の変換表の存在にも言及することも避けつつ書かれている。きわめて三スリーディングではあるが、嘘は言っていなかった。
また、やはり英wikipediaのサブタイトルから推測するに、これもautokeyの一種らしい。
}(autokey:『暗号解読事典』では「自動鍵」と翻訳されているが、自分なら「自身鍵」と訳すところだ。たしかに進行鍵の一種なので自動的ではあるけれど、接頭辞autoが直接的に意味するのは「文章自身が鍵でもある」のニュアンスだと思うので)
カルダーノは何をした人なの?
autokeyという概念を生み出した人、らしい(これは『暗号解読事典』の175ページが出典)。
カルダーノが実際に用いたautokeyが具体的にどのようなものだったのかは、『暗号解読事典』と"授業用プリント"で説が分かれているので、後で検証しなくてはならない。
また、カルダーノのautokeyシステムについての『暗号解読事典』の説明(176ページ上のほう)が、どうもきちんと和訳されていないような気がしてならない。
ポジションのシンメトリの補足
これも前回のnoteの補足!
これが成り立つのは、タブラ・レクタの各行を横に読んだときの文字列が始まる場所が違うだけで、どれも同じだからである。(なのでそこをシャッフルされると成り立たない)
英語版wikipediaにしかない解読方法
短めの暗号鍵が繰り返し用いられている場合に限って使える方法で、Key eliminationという方法があるらしい!
暗号鍵の文字数を仮定して、暗号文をその文字数ぶんだけずらして、元の暗号文と差分を取る! こうして得られた暗号の差分は、(この時点では平文は未知だが)その文字数だけずらした平文と元の平文の差分と同じ文字列になる。
英wikipediaの例だと、「平文のどこかにbrownfoxの文字列があるはず!」「なおかつ、暗号鍵(実際にはLION)はbrownfoxよりも文字数が短いはず!」という仮定の下で、brownfoxを4文字(これは仮定した文字数だ)ずらして引き算した差分「omaz」を、暗号の差分の文字列から探している。
もし見つかれば、暗号の差分でomazに対応する部分が「brow」(brownfoxの冒頭4文字)に対応することがわかって、つまりそこから暗号鍵(LION)が判明するという仕組みだ。
短めの暗号鍵が繰り返し用いられている時点で、頻出する文字列同士のインターバルの約数を調べる方法が使えることも多そうだけど、文章全体の長さが十分でない時(=同じ文字列が2度以上登場しない)にはこの方法しか使えないのかも!
この記事が気に入ったらサポートをしてみませんか?