古典暗号

暗号の解き方 入門|復号との違いと基本手順

更新: 桐生 遼介
古典暗号

暗号の解き方 入門|復号との違いと基本手順

謎解きイベントで拾った英字の暗号メモを前に、筆者はスマホを開かず、紙と鉛筆だけで文字の並びを眺め、まず換字か転置か、短文か長文かを見極めるところから始めました。観察して仮説を立て、1つずつ確かめていくと、暗号は思ったより「勘」ではなく手順でほどけます。

謎解きイベントで拾った英字の暗号メモを前に、筆者はスマホを開かず、紙と鉛筆だけで文字の並びを眺め、まず換字か転置か、短文か長文かを見極めるところから始めました。
観察して仮説を立て、1つずつ確かめていくと、暗号は思ったより「勘」ではなく手順でほどけます。

この記事は、暗号文を鍵なしで崩す「解読」と、正しい鍵で元に戻す「復号」の違いを最初に整理したうえで、古典暗号に向き合う判断フローをたどる入門編です。
英語前提の頻度分析という前提も押さえながら、全数探索、頻度分析、鍵長推定という3つの基本技法を、紙と鉛筆で追体験できる形で紹介します。

古典暗号では文字頻度や繰り返しが弱点になりますが、現代暗号はそこでは測れません。
暗号を解く楽しさを入り口にしながら、古典暗号と現代暗号では「何をもって強いとするか」がどう変わるのかまで、ひとつながりで見渡していきます。

暗号を解くとは何か——復号と解読の違い

用語整理:復号と解読

暗号を「解く」とひとことで言っても、専門的には 復号解読 は別の行為です。
復号は、正しい鍵や決められた手順を使って暗号文を元の平文に戻すことです。
たとえば、手元にWi-Fiの正しいパスフレーズがあり、端末がその情報を使って通信内容を読める形に戻す場面は復号です。
そこには「正規の入口」があります。

一方の解読は、その正規の鍵に頼らず、暗号文そのものから平文や鍵を推定していくことを指します。
謎解きイベントで渡された英字のメモに向き合うとき、こちらには正解の鍵がありません。
ある文字が何度も出る、短い語が文頭に現れる、同じ並びが繰り返される、といった痕跡を拾って、方式や規則を逆算していく。
この作業が解読です。
前のセクションで触れた「まず観察して仮説を立てる」という流れは、まさに復号ではなく解読の発想です。

筆者自身、この違いをいちばん実感するのは日常の対比です。
自宅のWi-Fiに新しい端末をつなぐときは、パスフレーズを入力すれば終わります。
やっていることは「戻す」作業で、悩む余地はほとんどありません。
けれど、鍵のない暗号文が紙に一行だけ書かれていると話は別です。
そこでは入力欄に正解を書くのではなく、正解そのものを探しに行くことになります。
この感覚の差をつかむと、復号と解読は混ざらなくなります。

なお、暗号解析 という言葉は、解読のための分析一般を指す場面で使われます。
ここでの役割は「攻撃」だけではありません。
古典暗号なら頻度分析で崩れるか、現代暗号なら既知平文攻撃や選択平文攻撃のような条件で耐えられるかを調べ、設計の弱点を見つけて改良につなげる。
つまり暗号解析は、壊すための技術であると同時に、強くするための試験でもあります。

解読が必要になる典型シナリオ

解読が登場する典型場面は、まず「鍵が手元にないのに、何の方式で書かれたかも怪しい暗号文を読む」ときです。
パズルや謎解きではこの形が多く、手がかりは暗号文そのものしかありません。
これが暗号文単独攻撃に近い状況です。
短い英文らしき文字列なら、シーザー暗号のように実質25通りを順に試す全数探索で崩せることがありますし、単一換字式暗号なら頻出文字や単語の形が突破口になります。

古典暗号で有名なのは、文字の偏りを利用する頻度分析です。
英語では単文字なら E、T、A、O、I、N あたりが上位に現れやすく、2文字の並びでは th、he、in、er などが目立ちます。
単一換字式暗号は文字を別の文字に置き換えても、この「よく出る文字」「よく並ぶ組み合わせ」の癖まで消せません。
そのため、暗号文の中でいちばん多い文字を E 候補として見る、3文字語の並びから the を疑う、といった読み筋が立ちます。
筆者が紙の上で暗号文を眺めるときも、まず目が行くのは意味ではなく偏りです。
文章は黙っていても、統計の癖だけは思いのほか素直に残ります。

方式が少し複雑になると、解読の視点も変わります。
ヴィジュネル暗号のような多表式換字では、単純な頻度分析だけでは届かず、繰り返しの間隔から鍵長を推定するカシスキーテストや一致指数といった手がかりが効いてきます。
現代暗号になると、文字頻度を数える古典的な発想では足りません。
線形解読法や差分解読法のような数学的手法、さらに実装やプロトコルの弱点を見る視点が前に出てきます。
つまり「解読」は、何でも同じやり方で崩す技ではなく、相手の方式に応じて観察点を切り替える営みです。

ここで誤解されやすいのが、解読という言葉を「不正アクセス」と同義で受け取ってしまうことです。
実際には、暗号方式の安全性を確かめる作業も解読の発想で進みます。
設計者は、攻撃者が暗号文だけを持つ場合、平文の一部を知っている場合、好きな平文を暗号化させられる場合など、条件を段階的に強くして耐性を見ます。
解読の技法を知ることは、暗号を壊す近道ではなく、どこが壊れうるかを見抜く検査眼を持つことに近いのです。

鍵がある世界/ない世界の違い

復号と解読の境目をいちばんわかりやすく分けるのは、鍵があるか、ないか です。
鍵がある世界では、利用者は決められた手順に従って元の情報へ戻れます。
AESのような現代暗号でも、正しい鍵があれば復号そのものは正規の処理です。
鍵長としては 128ビット、192ビット、256ビットといった選択肢があり、利用者はその前提のもとで安全にデータをやり取りします。
ここで問われるのは「戻せるかどうか」ではなく、「正しい相手だけが戻せるかどうか」です。

反対に、鍵がない世界では、暗号文に残った痕跡からしか前に進めません。
だから古典暗号では、言語の偏りが弱点になります。
シーザー暗号は25通りを試せば候補が出そろいますし、単一換字式暗号は頻度や単語パターンから足場を作れます。
ヴィジュネル暗号は一段手強いものの、鍵長推定という別の入口があります。
こうした暗号は、鍵がなくても「文章の癖」が漏れているため、解読の作業台に載せられます。

鍵がなくても崩れない理想形としてよく挙がるのがワンタイムパッドです。
鍵がメッセージ長以上あり、再利用せず、送受信の管理も破綻しないなら、理論上は平文の情報を暗号文から引き出せません。
ただし、ここで話は終わりません。
必要な鍵素材は長く、配送・保管・廃棄の負担が一気に重くなります。
暗号の強さは、数式の上だけで決まるわけではなく、鍵をどう扱うかという運用まで含めて初めて成立します。

一般記事では「暗号を解読した」と書かれていても、実際にはパスワードや鍵が手元にあって復号しただけ、という例が少なくありません。
逆に、暗号文を観察して方式を推定し、鍵までたどり着く作業をしているのに、これもまとめて「復号」と呼んでしまうこともあります。
ここを切り分けて読むだけで、話の精度はぐっと上がります。
正しい鍵で開けるのが復号、鍵がないまま仕組みを推理して開けにいくのが解読。
この一本の線を頭に置いておくと、古典暗号の面白さも、現代暗号の厳しさも、同じ地図の上で見えてきます。

まず何を見るか——暗号文の観察ポイント

観察チェックリスト

暗号文を受け取った直後は、いきなり「解き方」を探すより、まず見た目を観察したほうが早く進みます。
古典暗号は、文字の置き換え方や並べ替え方に癖が残るからです。
ここで拾った小さな違和感が、全数探索でいくのか、頻度分析に入るのか、鍵長を疑うのかを分けます。

筆者が紙の暗号に向き合うときは、短い暗号文でも一度印刷して、1文字ずつマス目に書き写します。
たとえば QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD のような短文でも、文字をばらして並べると、同じ文字がどこで繰り返されるかが急に見えてきます。
連続する同一文字に丸を付け、離れた場所で同じ並びが出たら線を引く。
机の上でその作業をしていると、暗号は黒い箱ではなく、規則のある模様として見え始めます。
スマホの画面では流れてしまう差が、紙だと手に引っかかるのです。

最初に見る項目は、次のくらいで十分です。

  • 文字種は何か

英字のみか、数字が混じるか、記号や句読点があるかを見ます。
英字だけなら古典的な換字式・転置式を疑いやすく、数字や記号が多ければ別種のコードや表引き方式も候補に入ります。

  • 大文字小文字が区別されているか

全部大文字なら、元からそういう暗号か、整形の途中で情報が落ちた可能性があります。小文字と大文字が混在しているなら、その差自体が情報かもしれません。

  • スペースや句読点が残っているか

語間の空白が保持されていれば、単語長が手がかりになります。空白が消えているなら、単語境界を隠す意図があると考えられます。

  • 同じ文字が連続していないか

LLEE のような並びが見えるかどうかは、換字式の手がかりになります。連続文字が不自然に少ない、あるいは多い場合も気になります。

  • 同じ並びが何度も出てこないか

2文字、3文字、4文字のかたまりが繰り返されるなら、単語や接尾辞、あるいは鍵長の痕跡が残っているかもしれません。

  • 単語長の分布はどうか

1文字語、2文字語、3文字語があるかを見るだけでも、英語らしさの見当がつきます。1文字語が複数あるなら IA を疑えます。

  • 頻出文字は偏っているか

ある文字だけ妙に多いなら、英語で頻出の ET に対応している可能性があります。偏りが薄いなら、単純換字ではないかもしれません。

  • 並び替えられているだけに見えるか

文字そのものは自然なのに、語の形や位置だけがおかしいなら、置き換えより転置を疑う場面です。

この段階では、正解を当てにいく必要はありません。「何が残っていて、何が隠されているか」を仕分けるだけで、次の一手が絞れます。

換字式か転置式かの見分け方

初心者が最初につまずきやすいのが、文字を入れ替えた暗号順番だけを動かした暗号 を同じものとして見てしまう点です。
ここを分けて考えると、観察の意味が一気に通ります。

換字式(substitution)は、平文の文字を別の文字に置き換える方式です。
シーザー暗号や単一換字式暗号がこの仲間です。
文字は別物になりますが、出現頻度の偏りは残りやすい という弱点があります。
英語なら E, T, A, O, I, N あたりが上位に来やすく、2文字の並びでも thheiner のような癖が出ます。
暗号文の中で特定の文字がよく出るなら、元の言語の統計が透けていると考えられます。
つまり、頻度が自然言語らしく偏って見えるなら、まず換字式を疑う筋が立ちます。

転置式(transposition)は、文字そのものは変えず、順番だけを並べ替える方式です。
こちらは文字頻度が元の文と同じまま残ります。
だから、個々の文字を見ると英語らしいのに、単語の切れ目や文字列の流れが妙に不自然になります。
語間空白が保持されているのに単語として読めない、母音と子音の並びがぎくしゃくする、短い語がやたら崩れて見える、といった違和感があれば転置式の線が出てきます。
文字の種類は自然なのに、順序だけが壊れている感じです。

見分けるときのコツは、頻度並び を別々に見ることです。
頻度に偏りがあり、頻出文字が目立つのに読めないなら換字式寄りです。
頻度は自然なのに、語やフレーズの形が壊れているなら転置式寄りです。
もちろん、短文では判定しづらいこともありますが、最初の仮説としては十分働きます。

💡 Tip

暗号文を声に出さず目で追って、母音らしい文字が散っているか、子音の固まりが不自然に続くかを見ると、転置式の違和感を拾いやすくなります。

筆者はこの判定をするとき、同じ文字の繰り返し間隔にも注目します。
マス目に書き写した暗号文で、同じ3文字列が一定の距離をおいて現れると、単なる置換だけではなく、列に並べて読んだ痕跡かもしれないと考えます。
逆に、同じ位置関係は見えないのに、ある1文字だけが何度も顔を出すなら、まず換字式の土俵に載せます。
こうして観察を「頻度の問題」と「順序の問題」に分けると、混乱が減ります。

方式仮説の早見表

観察結果から方式候補をざっくり絞るなら、次の表が使えます。
ここでは「断定」ではなく「当たりをつける」ことが目的です。
方式推定ツールは便利ですが、答えを出す主役ではなく補助輪として扱うほうが外しません。
dCodeのCipher Identifierのような識別ツールも、文字分布、繰り返し、単語長、n-gram といった観察点を機械的に拾って候補を返しているだけで、最初の観察そのものを飛ばしているわけではないからです。

観察ポイント目立つ特徴有力な方式候補最初の一手
英字のみ、短文、空白あり単語の形はあるが読めないシーザー暗号25通りを全数探索する
英字のみ、空白あり、特定文字が多い頻度の偏りが強い単一換字式暗号頻出文字と単語パターンを見る
英字のみ、空白あり、文字自体は自然語順や文字順だけ不自然転置式暗号並べ替え規則や列読みを疑う
英字のみ、長めの文単文字頻度が平坦寄り、繰り返し間隔があるヴィジュネル暗号鍵長推定に入る
数字や記号が多い文字より記号体系が主役コード・表引き・別方式置換暗号と決め打ちしない
空白なし、長文単語境界が消えている換字式または多表式換字繰り返しと頻度を両方見る

この表で大事なのは、ひとつの特徴だけで決めないことです。
たとえば空白があるから換字式、繰り返しがあるからヴィジュネル暗号、と単独で飛びつくと外れます。
文字種、空白の保持、頻出文字、並びの不自然さをまとめて見ると、候補が自然に絞られます。

また、方式識別ツールの候補が複数出たときは、上位候補をそのまま信じるより、自分の観察メモと一致するかを照らしたほうが精度が上がります。
ツールが「シーザー暗号」と返しても、文字頻度が平坦で繰り返し間隔が目立つなら、むしろ多表式換字を疑うべき場面があります。
機械の候補は地図の凡例、自分の観察は現地の地形です。

全数探索・頻度分析・鍵長推定の比較表

観察の次に決めるべきなのは、どの解読手法で最初の一撃を入れるか です。
古典暗号の入口としては、全数探索、頻度分析、鍵長推定の3本柱を押さえておくと迷いません。
それぞれ向いている相手が違います。

手法向く方式何を見るか強い場面弱い場面初手の目安
全数探索シーザー暗号のように鍵候補が少ない方式すべての鍵候補を順に試す候補数が小さいとき。英字26文字系のシーザー暗号は実質25通りなので一気に試せる鍵空間が大きい方式には向かない短文でも着手できる
頻度分析単一換字式暗号頻出文字、2文字連接、単語パターン文字頻度の偏りが残る方式で効く短すぎる文、多表式換字には弱い空白ありの英文らしい暗号文
鍵長推定ヴィジュネル暗号などの多表式換字繰り返し間隔、一致指数単文字頻度がそのまま使えない相手に強い短文では材料不足になりやすい長めの暗号文で繰り返しが見えるとき

この3つは競合というより、観察結果に応じて持ち替える道具です。
シーザー暗号なら、頻度を数える前に全数探索したほうが早いことが多いです。
単一換字式暗号なら、全数探索は現実的ではないので頻度分析が前に出ます。
ヴィジュネル暗号では、単文字頻度だけを見ても平らに見えやすいため、まず鍵長を当ててから列ごとに頻度分析する流れになります。

ここでも紙と鉛筆は役に立ちます。
筆者は短い暗号文でも、まず文字を数え、同じ3文字列に印を付け、単語長を脇にメモします。
その紙面が少しずつ汚れていくほど、方式の候補は削れていきます。
解読の第一歩は、ひらめきより観察です。
どの技法を使うかは、その観察の結果として決まります。

基本の解読方法1:全数探索で試す

シーザー暗号の全数探索手順

全数探索は、いちばん素朴で、いちばん手応えのある解き方です。
鍵候補を上から順に全部試して、読める文が出るところを見つけます。
シーザー暗号は英字26文字を一定数ずらす方式なので、元の文字位置に戻る「ずらさない」ケースを除くと、鍵候補は実質25通りに絞れます。
ここがポイントで、25通りなら人の手でも十分追えます。
単一換字式暗号のように組み合わせが膨大な相手ではこうはいきませんが、シーザー暗号は「まず全部試す」がそのまま攻略法になります。

たとえば平文が HELLO で、シフト3で暗号化すると KHOOR になります。
この対応は一文字ずつ確認すると腹落ちします。
H をアルファベット順に3つ進めると K、E は H、L は O、次の L も O、O は R です。
だから HELLO は KHOOR になります。
逆に解読するときは、KHOOR を1文字ずつ戻していきます。
K を3つ戻すと H、H を3つ戻すと E、O を3つ戻すと L、もう一度 O で L、R を戻して O になり、HELLO が現れます。
暗号化と解読がきれいに裏返しになっていると分かると、全数探索の意味も見えやすくなります。

実際の手順は単純です。
暗号文が KHOOR なら、まず1文字戻し、次に2文字戻し、3文字戻しと順番に試します。
1文字戻しなら JGNNQ、2文字戻しなら IFMMP、3文字戻しで HELLO です。
この時点で読める英単語が現れるので、鍵は3だと判断できます。
こうして25通りを先頭から最後まで並べるのが総当たりです。
映画の金庫破りのような大げさな話ではなく、短い英字列ならノート1ページで片がつく作業です。

筆者は初学者向けのワークショップで、あえて25通りのデコード表を手で作ることがあります。
縦に鍵番号、横に復号結果を書いていき、1行ずつ目で追っていくのです。
その横に「単語っぽさメモ」を短く添えると、ただの作業が観察に変わります。
読めない列でも、母音の位置が自然か、同じ文字の並びが英単語らしいかを見ていくと、候補が急に立体的に見えてきます。

手計算のコツと判定基準

全数探索は全部試す方法ですが、全部を同じ重さで眺める必要はありません。
総当たりとショートカットは別物です。
総当たりは25通りを機械的に出し切ること、ショートカットは途中で「これは読める」「これは違う」と言語感覚で早めに判定することです。
両者を分けて考えると、作業の意味がはっきりします。

手計算で速くなるコツは、まず母音の位置を見ることです。
英語らしい語では A、E、I、O、U がある程度散ります。
復号候補を見たとき、子音ばかりが固まっていたり、短語の形が不自然だったりすると、その行は後回しにできます。
筆者が紙の表に「単語っぽさメモ」を付けるときも、最初に見るのはこの母音の入り方です。
全部を精読するのではなく、目が引っかかる行に印を付ける感覚です。

もうひとつ効くのが、英語の頻出パターンです。
短い暗号文でも、th、the、and のような並びが自然に現れる候補は強いです。
逆に、見た目はアルファベットでも、こうした連接がまったく出てこない候補は外れであることが多いです。
たとえば空白を含む文なら、1文字語が A や I になっているか、3文字語に the が出そうかを見るだけでも絞れます。
これは頻度分析ほど大げさな手法ではなく、「読める英文か」を確かめるための言語的な妥当性チェックです。

ここで大事なのは、ショートカットだけに頼り切らないことです。
短文では偶然それっぽく見える並びが出ることがあります。
そこで、いったん有力候補を見つけても、前後の単語まで自然につながるかを確認します。
KHOOR を3文字戻して HELLO になった例は、単語として明瞭なので迷いません。
こういうはっきりした復号結果が出るのが、シーザー暗号の気持ちよさです。
パズルとして触れる入口に向いているのも、その「見えた瞬間に分かる」性質があるからです。

ツールでの検証と注意点

手で25通りを追ったあとにツールへ入れると、自分の判断がどこで当たっていたかが確認できます。
シーザー暗号の検証ならdCodeのCaesar Cipherのような定番ツールで復号候補を並べられますし、方式そのものの見当がつかない段階ではCipher Identifierのように候補方式を広く返すタイプも使えます。
こうした識別系ツールは200種類を超える方式を視野に入れているので、観察の補助としては頼もしい存在です。
複数方式をまとめて試せるCacheSleuth系のマルチデコーダーは255の変種に触れられるため、「シーザーだと思ったが違った」という場面の切り替えにも向いています。

ただし、ここでの役割は答え合わせです。
ツールが候補を出しても、その候補が本当に読める文になっているかは人間の目で判定します。
総当たりの感覚を一度つかんでおくと、ツールの出力をただ眺めるのではなく、「この候補は母音配置が自然だ」「この行は the が見える」と読めるようになります。
補助輪を付けたまま坂を下るより、いったん自分でこいでから使ったほうが、道具の効き方が分かります。

💡 Tip

シーザー暗号でツールの候補が複数それっぽく見えたら、単語単体ではなく文全体の自然さで判定するとぶれません。短い文字列ほど偶然の一致が起きるので、母音配置、頻出連接、前後の意味のつながりをまとめて見ます。

注意したいのは、ツールの候補一覧を見て「どれかひとつ当たりそうだから正解」と決めてしまうことです。
総当たりは候補を出す工程で、判定は別工程です。
この切り分けができていると、シーザー暗号だけでなく、次に出てくる単一換字式暗号やヴィジュネル暗号でも迷いにくくなります。
鍵候補が少ない相手には全数探索、候補が大きすぎる相手には別の手法へ移る。
この感覚をつかむ入り口として、シーザー暗号はちょうどいい練習台です。

基本の解読方法2:頻度分析で絞る

単文字頻度を数える

単一換字式暗号の王道は、やはり頻度分析です。
シーザー暗号のように鍵候補を総当たりで並べる相手ではなく、26文字の対応そのものが入れ替わっている相手には、文字の出現の偏りを手がかりにします。
英語では E、T、A、O、I、N が上位に来やすいので、暗号文の中でよく出る記号や文字をまず数え、そこに仮の対応を当てていくわけです。

筆者が紙で解くときは、A から Z まで26本の棒グラフを横に並べ、簡単な目盛りを引いて、暗号文を1文字ずつ見ながら正の字で数えていきます。
少し古風ですが、この手順を挟むと「何となく多そう」を「実際に多い」へ変えられます。
たとえばある文字だけ棒が頭ひとつ抜けていれば、まずはそれを E と仮置きします。
ただ、ここで決め打ちすると外れることもあるので、仮対応表として鉛筆で書き、あとで消せる状態にしておくのがコツです。

この方法が効くのは、単一換字式暗号では「文字そのもの」は置き換わっても、「よく使われる文字がよく現れる」という統計の癖までは消えないからです。
平文の E が別の文字に置き換わっていても、その置換後の文字が暗号文で頻出になる、という仕組みです。
つまり、鍵は見えなくても、言語の癖がうっすら透けて見えます。
パズルでいえば、表紙は差し替えられていても中身の紙質までは変えられていない、という感覚に近いです。

もっとも、単文字頻度だけで一気に正解まで届くことは多くありません。
最頻文字を E と置いたのに、その後の単語の形がどうにも英語にならないことは普通にあります。
筆者も、最初の仮説を立てては消し、次に2番目の頻出文字を E に回し、T や A の候補も入れ替えながら表を書き直します。
この「まず置いてみて、読めなければずらす」という試行錯誤こそ、頻度分析の実感が出る場面です。

2文字・3文字連接を調べる

単文字の数え上げだけでは候補が多く残るので、次は文字のつながりを見ます。
英語では 2文字の連接として th、he、in、er がよく現れます。
単一換字式暗号でも、この「よく隣り合う組み合わせ」は置換された形で残るため、暗号文の中で何度も出てくる2文字の並びを拾うと、仮説の精度が一段上がります。

ここで効くのが、さきほどの仮対応表の更新です。
たとえば最頻文字を E と見て対応させたあと、頻出する2文字の組がどうも th の位置関係に見えないなら、その E 仮説は怪しいと判断できます。
逆に、ある2文字の並びが文中のあちこちに現れ、そこへ t と h を当てると、周辺の3文字語や4文字語まで少し読めてくることがあります。
筆者はこの段階で、棒グラフの横に頻出ペアをメモし、「この組は th かもしれない」「こちらは he のほうが自然だ」と候補を並べて比べます。
単文字で立てた仮説を、2文字頻度でふるいにかけるイメージです。

3文字のまとまりも見逃せません。
the、ing、and ほど露骨な並びが見えれば、一気に複数文字の対応が開きます。
単一換字式暗号は一文字ごとの対応が固定なので、ひとつの確かな3文字語が取れると、その文字は文全体で同じ意味を持ち続けます。
パズルの一角が埋まると、離れた場所のピースまで連鎖的に入っていくのと同じです。

長文ほどこの作業が強くなるのも、統計が安定するからです。
文が長ければ長いほど、E や th のような英語の癖が平均的な形で現れやすく、偶然の偏りが減ります。
短文だと、たまたま固有名詞が多い、たまたまある文字が連続した、といったノイズに引っぱられて、最頻文字が E らしく見えないこともあります。
頻度分析が「長文向き」と言われるのは、ここに理由があります。

単語パターンから推測する

頻度分析という名前から、数字だけを追う作業に見えるかもしれませんが、実際には単語の形も同じくらい手がかりになります。
単一換字式暗号では、同じ平文文字は必ず同じ暗号文字に置き換わるので、「同じ位置に同じ文字が出る」というパターンが保たれます。
たとえば ABAC のような並びは、1文字目と3文字目が違い、1文字目と4文字目が同じではなく、1文字目と3文字目の関係だけが固定されています。
これだけでも候補語の輪郭が見えてきます。

英単語には、この繰り返し方そのものがヒントになるものが少なくありません。
たとえば 4文字語で1文字目と3文字目が同じなら、that のような形が候補に上がりますし、2文字目と3文字目が同じなら、letter や still の一部のような重なり方を連想できます。
短い1語だけでも、同字位置の繰り返しが分かると、ただの記号列から「英語の単語らしさ」が立ち上がってきます。

語頭や語末の癖も使えます。
英語では語末に e や d、s が現れやすく、語頭には t や a、w のようによく立つ文字があります。
もちろん文脈なしで断定はできませんが、空白が残っている暗号文なら、単語末に何度も出る文字を e や s の候補として見るだけでも整理が進みます。
1文字語なら A か I、3文字語なら the や and を疑う、といった読み筋もここにつながります。

筆者が紙で解くときは、頻出文字の表と並行して、気になる単語の「型」を別欄に書き写します。
たとえば 4文字で1文字目と4文字目が同じ単語、2文字目と3文字目が同じ単語、語末が繰り返し同じ文字で終わる単語、といった具合です。
そうすると、最初はばらばらだった仮説が、単文字頻度、2文字連接、単語パターンの三方向から少しずつ重なってきます。
数字だけで押し切るというより、統計と言語感覚を往復している感覚です。

ℹ️ Note

単一換字式暗号では、「よく出る文字」と「同じ形の単語」が別々の角度から同じ答えを指し始めたときに、一気に対応表が固まります。片方だけで無理に決めると、あとで全体が読めなくなります。

英語前提の注意と短文の落とし穴

ここまでの手法は、英語を前提にした解き方です。
E、T、A、O、I、N の順位や、th、he、in、er の出やすさは、英語だから効きます。
対象が別の言語なら、頻出文字も頻出連接も変わります。
つまり、頻度分析は万能の魔法ではなく、「どの言語で書かれているか」という前提とセットで使う方法です。

短文でぶれやすい点にも注意が必要です。
たった数語の暗号文では、E がまったく出ないこともありますし、たまたま T が多く見えることもあります。
2文字頻度も、th が一度も現れない短文は珍しくありません。
そういう場面で最頻文字だけを見て機械的に E を当てると、見当違いの対応表ができてしまいます。
筆者が最初に最頻文字を E と仮置きしても、すぐ確定にしないのはそのためです。
短文では統計が痩せているので、単語パターンや文全体の意味のつながりまで合わせて見ないと、候補が簡単に裏切ります。

逆に、文量がある暗号文では、単文字頻度も2文字連接も単語パターンも互いに支え合い、推測がぶれにくくなります。
暗号解読が「長文ほど有利」なのは、解く側の勘が冴えるからではなく、観察できる材料そのものが増えるからです。
単一換字式暗号は鍵候補が膨大でも、言語の癖を隠しきれません。
その痕跡を、単文字、連接、単語パターンの順に拾っていくのが、王道の解き筋です。

基本の解読方法3:鍵の長さを推定する

カシスキーテストの考え方

単一換字式暗号では文字頻度の偏りをそのまま追えましたが、ヴィジュネル暗号のような多表式換字では事情が変わります。
平文の e が、鍵の位置ごとに別の暗号文字へ散っていくので、暗号文全体をひとまとめに眺めても頻度が平たく見えやすいからです。
ここで先に知りたいのは「どの文字が e か」ではなく、鍵が何文字周期で繰り返されているかです。
頻度分析は、その周期が見えてから本領を発揮します。

その入口になるのが、カシスキーテストです。
考え方は意外と素朴で、暗号文の中に同じ3文字以上の並びが何度か現れたら、その位置の間隔に注目します。
平文側で同じ語や同じ綴りが繰り返され、しかも同じ鍵位置で暗号化されると、同じ暗号文字列として再登場することがあるからです。
そこで、繰り返し部分どうしの距離を出し、その距離の公約数を探ると、鍵長の候補が浮かびます。

筆者が紙で試すときは、暗号文を一気に読もうとせず、まず三連続の繰り返しに印を付けます。
たとえば暗号文のどこかに ABC があり、少し先にももう一度 ABC があるとします。
最初の ABC が3文字目から始まり、次の ABC が15文字目から始まっていたら、間隔は12です。
別の場所で XYZ が9文字離れて繰り返されていたら、候補として 3 が目立ってきます。
12 と 9 の両方を割れる数だからです。
ここで「鍵長は 3 かもしれない、6 もありえるがまずは 3 を試そう」と進めると、闇雲に探すよりずっと筋が通ります。

もちろん、繰り返しが偶然出ただけということもあります。
だからカシスキーテストは、鍵長を一発で断定する道具というより、候補を絞るためのふるいとして使うのが実際的です。
公約数が 2、3、6 と並んだら、どれがいちばん自然かを次の手順で確かめます。
ここで役に立つのが一致指数です。

一致指数(IoC)の使いどころ

一致指数(Index of Coincidence, IoC)は、カシスキーテストとは別の角度から鍵長候補を評価する物差しです。
役割の違いをつかむと、作業の流れがきれいに整理できます。
カシスキーテストは繰り返し間隔から候補を拾う方法、一致指数はその候補で列に分けたとき、自然言語らしい偏りが戻るかを見る方法です。

ヴィジュネル暗号を正しい鍵長で縦に切ると、同じ列に入る文字たちは同じ鍵文字で暗号化されています。
すると、その列は多表式換字の一部ではなく、実質的にはひとつのシーザー暗号として振る舞います。
ここまで来ると、列ごとの文字頻度には英語の偏りが戻ってきます。
e 系の文字や t 系の文字が少し目立ちはじめ、暗号文全体で見たときの「均された感じ」が崩れます。
一致指数は、その戻り方を見て「この鍵長候補は筋がよさそうだ」と判断するための指標です。

直感的には、候補鍵長で分割した列がどれも無機質なランダム列のままなら、その鍵長は外れている可能性が高いということです。
逆に、列ごとに偏りが見え始めるなら、その分け方は鍵の周期に近いと考えられます。
筆者は手計算で厳密な値まで追わない場面でも、候補ごとに列を並べて「同じ文字が妙に集まる列があるか」「最頻文字が列ごとに立ってくるか」を見るだけで、感触が変わると感じます。
IoC は数式の顔をしていますが、やっていることは「自然言語の癖が戻ったか」の観察です。

この二段構えが、多表式換字を崩すときの肝です。
繰り返し間隔だけに頼ると偶然に振られますし、IoC だけに頼ると候補の試し方が散らばります。
先にカシスキーテストで候補を拾い、その候補を一致指数で比べると、探索が一段引き締まります。

💡 Tip

多表式換字では、暗号文全体を一つの塊として頻度分析するのではなく、「正しい鍵長で切った列に偏りが戻るか」を見ると道が開きます。全体で曇っていた景色を、列ごとにピント合わせする感覚です。

列ごとのシーザーとして解く

鍵長の候補が立ったら、次は暗号文をその長さごとに列へ分けます。
たとえば鍵長を 3 と見たなら、1文字目・4文字目・7文字目……を第1列、2文字目・5文字目・8文字目……を第2列、3文字目・6文字目・9文字目……を第3列に集めます。
こうして並べ替えると、各列は同じ鍵文字で処理された文字列になります。
ここから先は「難しい多表式換字」ではなく、「シーザー暗号が列の数だけ並んでいる」と考えられます。

さきほどの小さな例をそのまま進めてみます。
繰り返し三連続に印を付け、距離の差を並べ、公約数として 3 が有力だと見えたら、暗号文を3列に分けます。
すると、第1列では Q がよく現れ、第2列では F が目立ち、第3列では N が何度も出てくる、といった偏りが見えてきます。
この段階で筆者は、各列の最頻文字をまずメモします。
英語なら列ごとの最頻文字が平文の e に対応していることが多いので、「第1列の Q は e からのずれではないか」と仮説を置き、シフト量を逆算します。
3列それぞれで同じことをすれば、鍵文字が1文字ずつ見えてきます。

手順としては、次の流れがもっとも追いやすいのが利点です。

  1. 暗号文の繰り返し三連続や四連続を探し、出現位置の間隔を出す
  2. 間隔どうしの公約数から鍵長候補を挙げる
  3. 候補鍵長ごとに暗号文を列分割する
  4. 列ごとの偏りを見て、一致指数の感触がよい候補を残す
  5. 各列をシーザー暗号として頻度分析し、シフトを決める
  6. 列ごとのシフトを並べて鍵文字列を復元する

この流れが見えると、ヴィジュネル暗号は急に手が届く相手になります。
全体では頻度が散らされていても、正しい鍵長で切り分ければ、各列に昔ながらのシーザー暗号が顔を出すからです。
多表式換字は「頻度分析が効かない暗号」ではなく、そのままでは効かないので、まず周期を剥がしてから効かせる暗号だと捉えると、解読の見通しがぐっと良くなります。

代表的な攻撃モデルをやさしく整理する

暗号文単独攻撃とは

攻撃モデルという言葉は少し硬く見えますが、要するに「相手はどこまで情報を持っている想定か」を区切るためのものです。
古典暗号から現代暗号へ話をつなぐとき、この見取り図があると景色が一気にそろいます。

暗号文単独攻撃(ciphertext-only attack)は、その名の通り攻撃側が暗号文だけを持っている状態です。
平文も鍵もわからず、目の前にあるのは読めない文字列だけ。
謎解きイベントで紙切れに書かれた英字列を拾って、「さて、ここから何が見えるだろう」と眺める場面は、ほぼこの条件です。

古典暗号で代表的なのが、ここまで見てきた頻度分析です。
単一換字式暗号やシーザー暗号は、文字の入れ替え方が違っても、元の言語が持つ偏りまで消せません。
英語なら e や t が出やすいという癖が、暗号文の中にも別の文字の形で残ります。
暗号文しかなくても、その偏りを手がかりに崩せるわけです。
つまり頻度分析は、暗号文単独攻撃の古典的なお手本です。

一方で現代暗号では、この条件で破られないのは出発点にすぎません。
暗号文だけを見ても意味のある情報が取り出せないことは当然として、そこからさらに強い条件でも耐えるかが問われます。
ここが、古典暗号を「観察して解く」世界から、現代暗号を「どんな攻撃モデルに対しても計算量的に無理だと示す」世界へ渡る橋になります。
古典暗号は言語の癖が漏れてしまうので暗号文だけでも崩れますが、現代暗号はその種の規則性が見えないよう設計されます。

既知平文攻撃とは

既知平文攻撃(known-plaintext attack)は、平文と、それに対応する暗号文の組を一部でも知っている状態です。
暗号文しかない状況より、相手が一歩前に出ています。

たとえばシーザー暗号なら、平文の H が暗号文の K になっていると一か所でわかれば、ずれが推定できます。
単一換字式暗号でも、「THE」に対応する3文字が見つかれば、3つの文字対応が埋まります。
たった数文字でも、盤面が急に開ける感覚があります。
筆者はこの瞬間を、ジグソーパズルで端のピースが見つかる場面に近いと思っています。
形がひとつ定まるだけで、周囲まで連鎖して見えてくるからです。

現代暗号でも、既知平文攻撃は安全性評価の基本ラインのひとつです。
実際の通信では、ファイル形式の先頭、プロトコルの決まった部分、定型メッセージなど、攻撃者が平文の一部を推測できる場面が珍しくありません。
だから設計段階で、「平文と暗号文の対応をいくらか見られても、鍵や他の平文を現実的な計算量では導けない」ことを目標にします。
ここでのポイントは、知られている平文が少しあるだけで崩れる暗号は、実運用ではすぐ苦しくなるということです。

選択平文・選択暗号文攻撃とは

選択平文攻撃(chosen-plaintext attack)は、攻撃者が自分で選んだ平文を暗号化させ、その結果の暗号文を観察できる状態です。
既知平文攻撃では偶然に手に入った対応表を使いますが、こちらは自分で実験条件を決められます。
この差は大きいです。

筆者がこの違いをいちばん実感したのは、「相手に“HELLO”を暗号化させられるなら、こちらは何を見られるだろう」と想像したときでした。
暗号文だけを眺めていると、見えるのは結果だけです。
ところが自分で平文を選べると、同じ文字を並べた語、文字の順番だけを変えた語、先頭だけ違う語といった具合に、観察したい点へ照準を合わせられます。
たとえば “HELLO” と “HELLOHELLO” を暗号化させれば、繰り返しがどう現れるかを見られますし、“AAAAA” のような極端な入力を通せば、方式の癖が輪郭を持って現れます。
暗号を眺める側から、暗号に問いを投げる側へ回るイメージです。

古典暗号の実験では、この条件はとても強力です。
平文を自分で作れるなら、文字ごとの対応や規則の有無を系統立てて確かめられます。
単一換字式暗号なら、アルファベットを順に含む文を暗号化させるだけで対応表に近いものが見えてきます。
ヴィジュネル暗号のようにもう一段ひねりがある方式でも、繰り返しの平文を入れて周期の気配を探る、といった観察ができます。

さらに強いのが選択暗号文攻撃(chosen-ciphertext attack)です。
こちらは攻撃者が選んだ暗号文を復号させ、その結果を観察できる状態を指します。
直感的には、鍵穴の外から様子を見るだけでなく、いろいろな形の鍵を差して「どんな反応が返るか」を調べる状況に近いです。
古典暗号の手作業解読で前面に出ることは少ないのですが、現代暗号ではこのモデルが強く意識されます。
復号オラクルのような振る舞いがあると、暗号方式そのものは堅く見えても、問い合わせ方しだいで情報が漏れることがあるからです。

ここで古典暗号と現代暗号の発想の違いがはっきり見えます。
古典暗号では「暗号文しかないなら頻度分析、定型句が見えるなら既知平文」と、手持ちの材料に応じて解き筋を変えます。
現代暗号では逆に、「攻撃者が暗号文しか持たない場合はもちろん、平文を選べる場合や暗号文を選べる場合でも、現実的な計算量では破れないか」を先に定義して、その条件を満たすよう設計します。
安全性は雰囲気ではなく、攻撃モデルごとに要求水準を切って考えるわけです。

ℹ️ Note

古典暗号の学び方では「どの手筋で崩れるか」を知ると実感が湧きます。現代暗号の入り口では、その逆向きに「どの攻撃モデルまで想定しても崩れないように作るか」と捉えると、評価の発想がつながります。

この整理を頭に置くと、古典暗号の頻度分析や定型句探しは、単なる昔のテクニックではなくなります。
どの情報が相手に渡ると何が起きるのかを体感する教材として読めるようになります。
そしてその延長線上に、現代暗号が攻撃モデルを明示し、計算量的な困難さまで含めて安全性を語る理由が見えてきます。

なぜ古典暗号は破られ、現代暗号は別の評価軸になるのか

言語統計が古典暗号を破る理由

古典暗号が歴史的に崩れやすかった最大の理由は、暗号文の中に自然言語の偏りがそのまま痕跡として残るからです。
英語なら E や T が多く、よく並ぶ2文字や3文字の組み合わせも偏ります。
空白が残っていれば単語の長さや語形まで見えますし、空白がなくても n-gram の癖は消えません。
単一換字式暗号は文字を別の文字に置き換えるだけなので、見た目は変わっても統計的な骨格は元の言語のままです。

このため、古典暗号の解読は「数学の壁を越える」というより、「文章の癖を読む」作業に近い場面が多くありました。
紙と鉛筆だけでも、頻出文字、2文字連接、3文字連接、語頭や語尾のパターンを拾っていくと、暗号文に残った偏りが手がかりになります。
シーザー暗号のように鍵候補が少ないものは総当たりで足りますし、単一換字式暗号でも頻度分析を入口にして単語パターンを当てていけば盤面が開きます。
dCodeの方式判定系ツールが200種類超を見分ける対象を持ち、CacheSleuthの多段デコーダが255の変種に触れているのも、裏を返せば「文字列の見え方」そのものに方式の癖が残るからです。

筆者が古典暗号の面白さをいちばん実感するのは、同じ英文を二つの世界で想像するときです。
たとえば短い英文を単一換字式暗号にかけると、最初は読めなくても、文字頻度を数え、THE や AND らしい形を当て、繰り返しの多い語を拾ううちに、暗号文の向こうから英語の輪郭が浮かび上がってきます。
ところが同じ平文をAESのような現代暗号で処理したものを前にすると、その感触が途切れます。
文字の偏りも語の形も、こちらが頼りたかった「言葉らしさ」が消えてしまい、頻度表を作っても何も育たない。
この落差に、古典暗号と現代暗号のあいだの壁があります。

ヴィジュネル暗号のような多表式換字は、単純な頻度分析への対抗として登場しました。
単文字頻度が平坦になりやすく、単一換字ほど素直には崩れません。
ただし、繰り返し間隔や一致指数のような別の統計を拾えば、鍵長の気配が出ます。
つまり古典暗号の多くは、統計との戦い方を少し変えただけで、統計そのものから逃げ切れてはいませんでした。
自然言語を材料にするかぎり、偏りはどこかに残るのです。

現代暗号の評価軸

現代暗号では、評価の主戦場が変わります。
問われるのは「英文らしさが残るか」ではなく、明確な攻撃モデルの下で、現実的な計算量で破れるかどうかです。
暗号文を見ただけで崩れるか、既知平文があっても安全か、選択平文や選択暗号文の条件でも情報が漏れないか。
本稿の前節で整理した攻撃モデルが、そのまま設計評価の土台になります。

ブロック暗号やその構成では、差分解読や線形解読のような理論的攻撃が代表的です。
差分解読は、入力差が出力差にどう伝わるかを追って偏りを探ります。
線形解読は、平文・暗号文・鍵ビットのあいだに成り立つ近似的な線形関係を集めます。
どちらも、古典暗号の頻度分析とは発想が違います。
自然言語の偏りを読むのではなく、暗号アルゴリズム内部の構造に、統計的なゆがみや予測可能性が残っていないかを調べるのです。

ただし、現代暗号の安全性はアルゴリズム単体だけでは決まりません。
実装攻撃、プロトコル設計、サイドチャネルも評価の中心に入ります。
理論上は堅い暗号でも、処理時間、消費電力、キャッシュアクセス、エラーメッセージ、乱数生成の不備といった周辺から情報が漏れれば、鍵に迫られます。
ここでは「暗号方式が正しい」だけでは足りず、「その方式がどのモードで、どの手順で、どのような実装で使われるか」が効いてきます。
現代暗号が“数式の勝負”だけに見えないのはこのためです。

鍵管理も同じくらい重い軸です。
AESなら鍵長として 128、192、256ビットが使われますが、その強さは鍵そのものが守られていて初めて意味を持ちます。
暗号が堅くても、鍵配送、保管、更新、失効、権限分離が崩れると、攻撃者は最短距離で目的地に着きます。
評価対象がアルゴリズムから運用まで広がっているというより、最初からそこまで含めて暗号システムなのだ、と捉えたほうが実態に近いです。

性能面も独立した評価軸です。
現代暗号は安全なら何でもよいわけではなく、暗号化、復号、認証、鍵共有のコストを個別に見ます。
BearSSLのベンチマークが AES/CBC の暗号化・復号や CTR を別々に測っているのは、その差が実装選択に直結するからです。
ポスト量子暗号への移行でも、この視点はそのまま残ります。
理論上の安全性だけでなく、ハンドシェイク遅延、メッセージサイズ増大、既存システムへの組み込みやすさが現実のボトルネックになります。
古典暗号の「読めそうか」で決まった世界とは、ものさし自体が違います。

ℹ️ Note

古典暗号では暗号文に残った“言葉の癖”を拾いますが、現代暗号では暗号方式・実装・運用のどこに偏りや漏れが残るかを見ます。観察対象が文章からシステム全体へ移った、と考えると流れがつかみやすくなります。

ワンタイムパッドの理論的強さと運用課題

この流れの中で、ワンタイムパッド(one-time pad)は少し特別な位置にあります。
理論上、これは完全秘匿性を持ちます。
鍵が真にランダムで、平文と同じ長さだけあり、1回しか使われないなら、暗号文から平文について有意味な情報は得られません。
計算量に頼った「現実的には破れない」ではなく、情報理論的に漏れないという性質です。
古典暗号が言語統計に負け、現代暗号が計算困難性で踏ん張る中で、ワンタイムパッドは別格の到達点に見えます。

ただし、その強さは運用条件と引き換えです。
まず必要な鍵長は少なくともメッセージ長以上です。
短い鍵を繰り返して使う時点で、もはやワンタイムパッドではありません。
さらに鍵の再利用は禁止です。
同じ鍵素材を二つのメッセージに使うと、暗号文どうしの差から平文間の関係が露出し、完全秘匿性は崩れます。
理論の美しさは、この厳しい前提を一つでも外した瞬間に消えます。

運用の難しさは通信網が広がるほど重くなります。
参加者どうしが安全にやり取りするには、それぞれの組み合わせに十分な鍵素材を事前配布しなければならず、必要量は利用者数に対して概ね二乗的に増えていきます。
少人数の閉じた系なら管理できても、一般的なネットワーク通信にそのまま載せると、鍵配送だけで息切れします。
現代の大規模システムが公開鍵暗号や鍵共有プロトコルを使うのは、まさにこの配布問題を回避するためです。

筆者はワンタイムパッドを考えるたびに、「理論上は理想の金庫なのに、金庫の数だけ巨大な鍵束を毎回手渡ししなければならない」というイメージを持ちます。
古典暗号の弱点は暗号文に残る痕跡でしたが、ワンタイムパッドの弱点は暗号文の外側、つまり運用にあります。
ここでも結局、暗号は数式だけでは完結しません。

現代の課題として見ると、この話はポスト量子暗号(PQC)にもつながります。
PQC はワンタイムパッドではありませんが、移行の現場では「理論上の安全性をどう実運用へ落とすか」が再び前景化しています。
ハンドシェイクが重くなる、鍵や証明書まわりの扱いが複雑になる、既存の通信基盤にどう組み込むかで負担が増える。
暗号の歴史をたどると、古典暗号は言語統計に敗れ、現代暗号は計算困難性と実装評価へ進み、ワンタイムパッドは理論の頂点に立ちながら運用で足を取られる、という構図が見えてきます。
ここを押さえると、「強い暗号」とは単に数式が美しいものではなく、攻撃モデルと運用条件の両方に耐える仕組みだとわかります。

初心者向け・解読のコツと注意点

短文への向き合い方

初心者が最初につまずきやすいのは、短い暗号文に長文向けの解き方をそのまま当ててしまうことです。
数語しかない英文メモや、空白のない短文では、文字頻度の偏りが偶然で大きく揺れます。
たまたま同じ文字が続いただけで「この文字は E だ」と決めると、そこから先が全部ずれていきます。
頻度分析は強力ですが、短文では“統計”というより“雰囲気の手がかり”くらいに見ておくほうが安全です。

こういう短文では、まず力技の効く方式から片づける発想が役立ちます。
英字だけで不自然に読めないなら、シーザー暗号の候補を順に眺める。
単語境界がありそうなら、1文字語や繰り返しの並びを見る。
短い文は情報量が少ないぶん、複雑な理屈より「読める形が出るか」を確かめるほうが前へ進みます。
謎解きイベントのメモのような素材は、学術論文よりクロスワードに近い、と考えると手が止まりません。

筆者も一度、短文の英字列をdCodeにそのまま入れ、最上位に出た候補を信じて遠回りしたことがあります。
もっともらしい方式名が表示されると、つい答えをもらった気分になりますが、実際には空白の位置と文字の繰り返しを見直しただけで、単純なずらし方だと気づけました。
そのとき実感したのは、ツールの前に暗号文そのものを見る時間があると、誤判定から立て直せるということです。
手と目を動かす作業は、回り道ではなく復帰ルートになります。

言語仮定と前処理の重要性

暗号文を見た瞬間に方式名を当てにいくより、先に「これは何語前提か」を置くほうが成功率は上がります。
英字だから英語とは限りませんし、英語でも空白が消えているのか、句読点が削られているのか、大文字小文字が混ざっているのかで見え方は変わります。
たとえば英語前提なら 1文字語として I や A が立ちやすく、2文字語なら OF、TO、IN などの候補が見えてきます。
ここを曖昧にしたまま頻度表だけ眺めると、正しい方式を引いていても解読が伸びません。

前処理も見落とせません。
空白を残すか詰めるか、記号を文字として数えるか区切りとして扱うかで、観察結果は変わります。
暗号文に数字や「→」のような記号があるなら、それはノイズではなく方式のヒントかもしれません。
置換の結果なのか、区切りなのか、移動方向の指示なのかで意味が違うからです。
こうした印を最初に「邪魔なもの」として捨てると、あとで大事な足場が消えます。

ここで一つ線を引いておきたいのが、暗号と符号化の違いです。
読めない文字列を見て、何でも暗号だと思い込むと判断を誤ります。
Base64のような符号化は、秘密を守るための暗号ではなく、データを別の表現に載せ替える処理です。
英数字と記号の並びが出てきたときは、「秘密化された文」なのか「表現形式が変わっただけのデータ」なのかを分けて考える必要があります。
この見分けを飛ばすと、解読ではなくデコードすべき場面で延々と鍵を探すことになります。

ツールとの付き合い方

オンラインツールは頼れる相棒ですが、ハンドルを握るのは自分です。
方式判定系のツールは数多くの候補を出せますし、CacheSleuthのような多方式デコーダも便利です。
ただ、候補が多いことと、今目の前にある暗号文の正解に自動で着地することは別です。
短文では特に、複数方式が同じくらいもっともらしく見えてしまいます。

そこでおすすめしたいのは、観察、仮説、手計算、検証の順番を崩さないことです。
最初に文字種、空白、繰り返し、長さを見る。
次に「これはシーザーか、単一換字か、符号化か」と候補を立てる。
そこで少しだけ手を動かし、読める断片が出るか確かめる。
そのあとでツールに入れて答え合わせをする。
この流れだと、ツールの結果が外れたときにも、どこで仮説がずれたかを追えます。

⚠️ Warning

ツールは“正解を授ける箱”ではなく、“仮説をふるいにかける台”として使うと、迷走が減ります。

筆者は、最初からツールに丸投げした回より、紙に数文字だけ書き替えてから使った回のほうが、結局は早く解ける場面を何度も見てきました。
映画の暗号シーンのように一瞬で解けることは少なくても、観察した根拠が一つあるだけで、候補の取捨がぐっと楽になります。
自分の目で拾った手がかりがあると、ツールの出力に振り回されません。

次の一手チェックリスト

方式がまだ見えていないときは、頭の中の判断を小さな手順に落とすと進みます。
古典暗号は「何でも頻度分析」ではなく、見た目に応じて初手を変えるのがコツです。
目の前の暗号文に対して、まず次の順で当てはめてみてください。

  1. 短文の英字列なら、まずシーザー暗号を順に試して、読める語が立つかを見る。
  2. 単一換字らしい並びなら、頻出文字だけで決め打ちせず、2文字連接や短い単語パターンも合わせて当たる。
  3. 繰り返しの多い長文なら、いきなり全文を置換せず、鍵長を見積もって列ごとに眺める。
  4. 方式不明なら、文字種、記号、空白、全体の長さから候補を絞り、暗号と符号化を混同しない。

このチェックリストの狙いは、最短で正解に飛び込むことではありません。
外し方を小さくすることです。
初心者の解読は、ひらめき勝負に見えて、実際には「候補を無駄に増やさない」ほうが伸びます。
観察した情報から次の一手を選べるようになると、暗号文はただの謎の文字列ではなく、少しずつ性格の見える相手に変わってきます。

シェア

桐生 遼介

サイエンスライター。暗号と映画・文学・パズル文化の接点を探るコラムを得意とし、暗号を「解く楽しさ」から伝えます。

関連記事

古典暗号

紙とペンを手にCATと書き、その場で二通りいじってみると、古典暗号の景色が一気に開けます。文字そのものを別の文字に替えれば換字になり、同じ三文字のまま並びだけを入れ替えれば転置になる――同じ平文でも、前者ではFDWのように姿が変わり、後者ではTCAのように位置だけが動きます。

古典暗号

ピッグペン暗号は、図形記号を使う単一換字式暗号です。筆者も最初は紙に二つの3×3格子と二つのX字を書き、HELLOを一文字ずつ記号に置き換えてみましたが、読めない形が並んでいるのに自分だけは意味を知っている、その妙な手応えが強く残りました。

古典暗号

古代スパルタで使われたと伝えられるスキュタレーは、棒に細長い帯を巻いて文字を書き、ほどくと読めなくなる道具であり、そのまま方式名としても語られる古典暗号です。文字を別の文字に置き換えるのではなく、順序だけを入れ替える転置式暗号で、鍵になるのは送受信者が同じ直径の棒、

古典暗号

映画で見た光るランプの列を思い出しながら、筆者が紙の上で追ってみると、エニグマの1文字は右から左へ進み、反射して、また左から右へ戻る小さな旅をしています。その往復のあいだに、キーボード、プラグボード、ローター、リフレクター、ランプがどう噛み合うのかまで見えてくると、この機械は「複雑な箱」ではなく、