今回は、イングレスで使われる暗号解読の方法についてお話します。
ヴィジュネル暗号
まずは、メジャーな暗号のひとつである、ヴィジュネル暗号 (Vigenere Cipher) を説明します。成り立ちや詳細は、Wikipediaでご覧ください。
簡単に言うと、とある暗号表と、出題者が決めたキーワードに従って本文のアルファベットを置き換えていき、謎のアルファベットの羅列を作る暗号です。ですので、キーワードが分かれば、謎の文字列から元々の文を復号できます。
例えば、「Ingress」という文を「Test」というキーワードで暗号化(Encrypt)すると、「Brykxwk」になります。逆に、この文字列を「Test」というキーワードで復号(Decrypt)すると、「Ingress」という言葉に戻ります。本気で暗号を覚えたい方は、dcode.frのサイトで試してみてください。
今、我々の最も身近なところで使われているヴィジュネル暗号は、イングレスのスキャナーのニュースフィードです。時々、ニュースフィードに意味不明の文字列が紛れ込んでいませんか?以下の画像で言うところの、「akmwfacct7w0e」の部分です。
これは暗号化されたヴィジュネル暗号文です。復号するには、キーワードが必要です。では、キーワードはどこにあるのでしょうか。これもニュースフィードの文中にあります。よく読むと、所々に数字が埋め込まれていますよね?「R8S」や、「Age5t」といった箇所です。不自然ですよね。実はこれらがキーワードの一部です。「R8S」は明らかに「RES」が元々の文でしょう。「Age5t」は「Agent」であるはずです。これはすなわち、Eが8番目、Nが5番目を意味します。このルールに沿ってキーワードの断片を並べると、「TRI○○○○○」になります。(自分で解きたい方のために、一部伏せ字にしています。)このキーワードを使って、先程の「akmwfacct7w0e」を復号してみてください。それが、答えです。
なお、この答えをインテルマップかストア(Android機のみ)のパスコード入力欄に打ち込むと、正しいか否かがわかります。正しければFully Redeemed(全部使われ切ったよ)、間違っていればInvalid Passcode(間違ったパスコードだよ)です。
これもどうか、上に上げたdcode.frのサイトのヴィジュネル暗号ツールで複合して試してみてください。
アナグラム
推理小説などでおなじみのアナグラム、すなわち並べ替えも、デコード問題として頻出です。やはりdcode.frにアナグラム解析ツールがあります。怪しい文字列を入力するだけで答え候補が出て来ます。
ROT
Rotation(回す)の略です。元の文章を、文字通りズラします。例えば、Aを1回ズラすとB、2回ズラすとCです。何回ズラす、アルファベットだけズラす、数字も含めてズラす、などの組み合わせで結果は変わります。
これもdcode.frに解析ツールが有りますので、よろしければ試してみてください。
リバース
地味ですが、アルファベットを左右逆にする、リバースが仕込まれていることもあります。これもツールでサクッと変換してしまいましょう。
Base
Baseとは、wikipediaの以下のBase64の文章が、説明として分かりやすいです。
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。
65文字で表すならBase64(隙間埋め用の「=」を含む), 33文字で表すならBase32(=含む)です。意味不明の文字列で、アナグラムやROT, ヴィジュネル暗号解析が通らなかったら、Baseも試してみるべきでしょう。また、Baseは文末に「=」が付くことが多々あります。この場合はいずれかのBase形式と考えて間違いありません。Base64, Base32あたりを試してみましょう。
例題です。以下の文字列はBaseのいずれかで変換すると、意味のある言葉に戻ります。何でしょうか?探してみてください。
QmFzZSBkZWNvZGluZw==
Baseの解析ツールもDcode.frの中にありますので、探してみてください。サイト内検索窓から探せます。
次は、数字から文字列に変換する方法を説明します。
Letter Number Code
これは単純に、A=1, B=2, C=3...と変換していくものです。解析したい数字列に26までしか含まれない場合は、この変換の可能性があります。
ASCII Code (decimal)
ASCII codeとは、アルファベットや数字、記号などを収録した文字コードの一つです。全128文字に、対応する数字を割り当てています。ですので、128までの数字、特に60番台以降の数字を割り当てている場合はASCIIの可能性があります。60番台より若い数字は、コンピューターの制御文字などに使われているので、デコードには出てきません。
このように、数字を10進数で書いたものはDecimalと言います。例文として、テッセレーションのイベントのRound 12で使われた暗号もDecimalでした。
ちなみにテッセレーションとは、2020年に行われた公式の暗号解読イベントです。
ASCII Code (Octal)
ASCII Codeを8進数で書き表したものは「Octal」と呼びます。Octalには7より大きな数字は現れません。0〜7しか文中に無ければ、Octalの可能性があります。例文は以下です。
101 160 160 154 145
ASCII Code (Hexadecimal)
16進数で書き表したASCIIコードです。16進数なので、0〜Fまでの文字が出てきます。以下、例です。
4f 72 61 6e 67 65
バイナリ表示
8桁の0もしくは1の数字の羅列で、ひとつのデータを表現する方法です。そのため、見た目は00010100といったものになります。このように、8桁の0と1 の組み合わせのデータを見たら、バイナリ文字列に変換してください。dcode.frや、Multi_Drcで変換できます。例文は以下です。
01000111 01110010 01100001 01110000 01100101
周期律表
周期律表の原子番号と元素記号を結びつけて変換することなどもあります。
SMSメッセージ
ガラケーでローマ字を打つためには、「A」なら数字の2のボタンを2回、「B」なら3回、といった風に入力するわけですが、それを暗号と見なすこともできます。
Dcode.frにも以下のツールがありますので、変換可能です。
ASCII Codeは、出現する文字で、どのタイプか大体推測できます。慣れればすぐ分かるようになるでしょう。
最後に、シンボル系文字です。すなわち、象形文字や記号文字などについて取り扱います。
グリフ
言わずとしれたイングレスの暗号代表格ですね。
ネメシスルーン、ネメシスグリフ
このシリーズ記事の第一回でも紹介した、ネメシスグリフやネメシスルーンも、シンボル系と言えますね。
その他のシンボル系暗号
次は、前回紹介しました、このサイト。
シンボル文字が500個以上、紹介されています。
たとえは、こんなのが。
(出典: https://kryptografie.de/kryptografie/chiffre/dancing-men-code.htm)
Dancing men codeというものです。この踊る人の絵を並べると、文章を作れますね。
または、こんなのもあります。
(出典: https://kryptografie.de/kryptografie/chiffre/krempel-code.htm)
Clutter Codeという、色と四角のブロックの数数でアルファベットを表現するものです。
さすがに500個全部紹介するわけには行かないので、このくらいにしておきます。
見たことのないシンボルが出題文だった場合は、このサイトで一通り目を通すと、対応するシンボルが見つかると思います。
その他の暗号の一例
モールス信号
これも有名な信号ですよね。「.」と「-」で文章を表します。以下例文です。
... --- ...
対応表は以下のサイトにあります。
「0」と「1」、「A」と「B」で表すなどの工夫がされていることもありますので、気をつけましょう。
7-segment code
以下のように、aからgまでのアルファベットを使って、ひとつの文字を表現する方法です。
(出典: https://www.dcode.fr/7-segment-display)
例文は、以下のようになります。
abcefg cdeg abcef c g deg cefg abcefg ceg
よろしければ、デコードしてみてください。
終わりに
前回と今回の記事で、基本的なツールや暗号については一通り紹介したと思いますので、あとは実践あるのみです。経験を積めば確実にレベルアップしますので、色々解いてみましょう。