暗号の作り方を一から解説!シーザー暗号から鍵配列式・ヴィジュネル暗号まで

暗号の作り方に、数式もプログラミングの知識も要りません。文字を「ずらす」か「置き換える」か、どちらかの発想さえ押さえれば、紙とペンだけで今日から自分だけの暗号文が作れます。歴史に残る古典暗号のほとんどは、この二つの操作の組み合わせにすぎません。

この記事では、古代ローマの将軍が使った最も単純な暗号から、合言葉を鍵にする換字式暗号、フリーメイソンが使ったとされる図形暗号、そして専門家が「破られにくい」と評価するヴィジュネル暗号まで、仕組みと作り方を順番に解説します。方式は五つです。最後には、自作した暗号がなぜ解読されてしまうのか、その共通の弱点にも触れます。

暗号の作り方は、ずらすか置き換えるかの二択から始まる

暗号の歴史を振り返ると、文字の扱い方は大きく二系統に分かれます。二つだけです。ひとつは文字そのものは変えずに並び順だけを変える「転置式」、もうひとつは文字を別の文字や記号に置き換える「換字式」です。

転置式の代表は、紐や棒を使って文章の順序を組み替えるタイプの暗号です。文字自体は増えも減りもしません。読む順番がわからなければ、意味を成しません。換字式はこれとは逆で、アルファベットの並びはそのままに、AをDに、BをEに、というように一文字ずつ別の記号へ対応させていきます。

多くの入門書で最初に紹介されるシーザー暗号も、合言葉を使う鍵配列式暗号も、実はすべて換字式の仲間です。まずはこの系統から見ていきます。

一番手軽な暗号の作り方、シーザー暗号で文字をずらす

最も簡単な暗号の作り方は、アルファベットを一定数だけずらすことです。これがシーザー暗号で、紀元前58年ごろ、ローマの軍人ガイウス・ユリウス・カエサルが軍事作戦の指令を敵に読まれないよう用いていたと、後の歴史家スエトニウスが『皇帝伝』に記しています。

作り方は単純です。シフト数を3と決めたら、平文の「A」は暗号文で「D」に、「B」は「E」に、「C」は「F」に変換します。アルファベットの終わりに近づいて「X」「Y」「Z」のようにシフトすると範囲を超えてしまう場合は、再び「A」に戻って数え続けます。復号する側は、同じシフト数を知っていれば逆方向にずらすだけで元の文章に戻せます。

弱点もはっきりしています。シフトできる数はアルファベット26文字に対して25通りしかありません。総当たりで試せば必ず解ける数です。遊びとして友達と手紙をやり取りする程度なら十分楽しめますが、見破られるまでの時間は長くありません。

合言葉で暗号表を作る、鍵配列式換字暗号の作り方

シーザー暗号より手強い暗号を作りたいなら、アルファベットの並び自体を混ぜてしまう鍵配列式換字暗号が向いています。単純にずらすのではなく、好きな単語を鍵にしてアルファベットの対応表そのものを作り直す方法です。

手順は三段階です。まず好きな単語を一つ選びます。例えば「HELIOS」を選ぶなら、重複する文字を取り除いたうえでそのまま並べ、続けて選んだ単語に使わなかった残りのアルファベットを順番に並べます。すると「HELIOSABCDFGJKMNPQRTUVWXYZ」という新しい並びができあがり、これを標準のアルファベットと上下に並べれば暗号表の完成です。原文を一文字ずつ上段から探し、対応する下段の文字に置き換えていけば暗号文になります。

組み合わせの数は、シーザー暗号とは比較になりません。桁が違います。総当たりでは事実上解けません。この方式で使った単語は、受け取り側とだけ共有しておけば、友達同士の秘密のやり取りとして十分な強度を持ちます。

図形に文字を隠す暗号の作り方、ピッグペン暗号

文字をアルファベットのまま扱う方法ばかりではありません。記号そのものに変えてしまう暗号もあります。ピッグペン暗号(豚小屋暗号)と呼ばれる方式で、フリーメイソンが1700年代に秘密の記録をつけるために使っていたとされています。

道具は紙とペンだけです。二つの三目並べ(井桁)の枠と、二つのX字形の枠を用意することから始まります。それぞれの枠の中にアルファベットを順番に書き込んでいき、暗号化の際は、その文字が置かれていた枠の線の形だけを取り出して記号にします。二組目の枠に対応する文字には、区別のために点を一つ添えます。枠の形が豚の囲いに似ていることが、この名前の由来だとされています。

面白さは見た目のインパクトです。暗号表を一度覚えてしまえば、文字を一つも使わずに記号の羅列だけで手紙が書けます。ノートの落書きやゲームの小道具としても使いやすい形式です。

道具がなければ読めない暗号の作り方、スキュタレー

文字そのものは変えず、並び順だけを組み替える転置式の代表がスキュタレーです。紀元前6世紀ごろ、古代ギリシャの都市国家スパルタで、軍の作戦中の通信に使われていたと伝えられています。

仕組みは道具が主役です。円筒形の棒に革紐や羊皮紙のリボンを巻きつけ、棒に沿って文字を書き込みます。紐を棒からほどくと、文字はただの順序が崩れた並びに見えますが、送り手が使ったのと同じ太さの棒に巻き直すと、文字が正しい順序で揃って読めるようになります。

この暗号の鍵は、棒の太さそのもの。文章の内容を変えずに読む順番だけを隠すため、同じ道具を持たない相手には意味不明な文字列にしか見えません。現代で再現するなら、鉛筆やラップの芯のような円筒に紙を巻きつけて試すこともできます。

頻度分析に強い暗号を作るなら、ヴィジュネル暗号

シーザー暗号や鍵配列式換字暗号には、どちらも単一の対応表しか使わないという共通点があります。表は一つきりです。この弱点を解決したのが、15世紀から16世紀にかけて考案されたヴィジュネル暗号です。

作り方は、まず暗号化に使う単語を一つ選びます。これを鍵として平文の長さに合わせて繰り返し並べ、平文の各文字を、対応する鍵の文字とあわせてずらし量を決めていきます。例えば平文「APPLE」を鍵「RINGO」で暗号化する場合、Aの行とRの列が交差する位置の文字、Pの行とIの列が交差する位置の文字、というように一文字ごとに異なるシフト量を適用し、最終的に「RXCRS」のような暗号文が得られます。

シーザー暗号が一つのシフト量しか使わないのに対し、ヴィジュネル暗号は鍵の文字数だけ異なるシフト量を組み合わせます。同じ「E」という文字でも、鍵のどの位置と重なるかによって別の文字に変換されるため、単純な頻度の偏りが暗号文に出にくくなります。

自分で作った暗号にも共通する弱点、頻度分析の仕組み

シーザー暗号や鍵配列式換字暗号のように、一つの文字が常に同じ文字や記号に置き換わる方式には、共通の弱点が一つ。頻度分析という解読手法です。

英語の文章では、アルファベットの出現頻度に大きな偏りがあります。偏りは無視できません。「E」が最も多く約13%を占め、続いて「T」「A」「O」「N」「I」「R」「S」「H」が6%から9%程度、最も出現頻度が低いのは「Z」です。単一換字式の暗号文では、平文で出現頻度の高い文字は暗号文でも同じ頻度で現れるため、暗号文中で最も多く登場する記号を数えるだけで、元の文字を高い精度で推測できてしまいます。

これが、シーザー暗号も鍵配列式換字暗号も、見た目の複雑さにかかわらず頻度分析という同じ手口で突破されてしまう理由です。ヴィジュネル暗号が歴史的に高く評価されてきたのは、鍵の文字数ぶんだけ対応表を切り替えることで、この頻度の偏りを薄めてしまう点にあります。

友達同士の遊びやノートの落書きとして暗号を作るなら、ここまでの方式で十分に楽しめます。ただし、実際に機密情報を守る必要がある場面では話が違います。手作りの暗号は心もとなく、AESやRSAのように数学的な検証を経た現代の暗号技術に頼るべきです。

まずは紙と鉛筆でシーザー暗号を試す。次に鍵配列式やヴィジュネル暗号へと手を広げ、どの方式がどんな手口で見破られるのかを体感する。その積み重ねの先に、暗号という仕組みの本当の奥行きが見えてきます。

参考

PinTo Times

  • x

-偏愛が気づかせる、私たちの見えていなかった世界-

なぜだか目が離せない。
偏った愛とその持ち主は、不思議な引力を持つものです。
“偏”に対して真っ直ぐに、“愛”を注ぐからこそ持ち得た独自の眼差し。
そんな偏愛者の主観に満ちたピントから覗かれる世界には、
ウィットに富んだ思いがけない驚きが広がります。
なんだかわからず面白い。「そういうことか」とピンとくる。

偏愛のミカタ PinTo Times