しいたげられたしいたけ

空気を読まない。他人に空気を読むことを要求しない

サイモン・シン、青木薫(訳)『暗号解読』上・下(新潮文庫)

暗号解読〈上〉 (新潮文庫)

暗号解読〈上〉 (新潮文庫)

暗号解読 下巻 (新潮文庫 シ 37-3)

暗号解読 下巻 (新潮文庫 シ 37-3)

めちゃくちゃ面白い!久々に文句なしの私的五つ星。
暗号の歴史は、暗号解読の歴史でもあった。まず登場するのは単アルファベット換字式暗号。これは頻度分析によって解読される。ポーの『黄金虫』やドイルの『踊る人形』にも出てくる、暗号文中に最も多く登場する記号を探し出して、英語の場合であれば"e"と置き換えてみる、という方法である。
頻度分析によって破られない暗号として考案されたのが、ヴィジュネル暗号(上・p104〜)。アルファベット26×26文字の表を作り、特定のキーワードを一つ定める。例えば暗号化したい文を"HELLO"、キーワードを"KING"とすると、まず暗号化する文の最初の"H"とキーワードの"K"が、26×26の表上で交差する場所を探し、その位置にある文字が暗号化された文字の一文字目となる。以下、暗号化する文の"E"とキーワードの"I"が交差する位置の文字、"L"と"N"が交差する位置の文字…を順に拾っていく。こうすると、例えば暗号化したい文の3文字目の"L"と4文字目の"L"は同じ文字に暗号化されるとは限らない。よって頻度分析は役に立たなくなる…
と思いきや、驚くべきアイデアによって、この暗号も破られてしまうのである!ただし暗号化された文がある程度以上の長さがある場合であるが。その方法とは、やはり頻度分析と、もう一つは最小公倍数を使う。英語なら"the"のように、特定の文字が何文字か連続して出現することが、よくある。そこで暗号化された文の中から、特定の文字列が連続して現れる部分を抜き出してゆき、その最小公倍数を求めると、キーワードの長さが見当づけられる。キーワードが前述の"KING"であれば4だ。そうすると、暗号化された文章を4文字ごとに切り分ければ、個々の切り分けられたグループは単アルファベット換字式暗号と変わるところはないので、頻度分析によって攻略できる。
それでは、キーワードが暗号化したい文と同じ長さを持つ場合はどうなるか…これは原理的に解読不能で、ワシントンとモスクワを結ぶホットラインの暗号化は現在もこの方法が使われている。だが軍隊のような、毎日膨大な分量の文章をやりとりするところでは、暗号文と同じ長さのキーワードを受け渡しするのは現実的ではない。そこで登場するのが、世に名高い「エニグマ」(上・p233〜)であるが…史上有名なことではあるが、なんとも驚いたことに、解読されてしまったのである!その原理と攻略方法は、とてもこの場で要約することはできない。
本書には書いてないことなんだけど、暗号化したい文自身を一文字ないし数文字ずらした文を、ヴィジュネル暗号のキーワードに使ったら、どうなるのかね?つまり暗号化したい文を"HELLO"とすると、キーワードを"ELLOH"とか、"LOHEL"とか。即座に暗号化したい文と同じ長さのキーワードが手に入る。キーワードをさらに単アルファベット換字式で暗号化してもいい。
本書最終章の第Ⅷ章よると、現代は「量子コンピュータ」と「量子暗号」といういわば「無敵の矛」と「無敵の盾」が完成を争っている時代なのだそうで(完成すれば「量子暗号」の方が強いらしい)、今さらそんな原理の暗号など考えても実用的には意味はないだろうが、パズルとして攻略方法を考えるのであれば面白そうだ。
追記:暗号化したい文をまるごとヴィジュネル暗号のキーワードに使ったら、復号できないことに気づいた。最初の一文字ないし数文字は単アルファベット換字式で暗号化するか別に定めたキーワードで暗号化し、それ以降の文字は暗号化したい文自身をずらしてキーワードにすれば、復号可能であるが。