当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題の表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

MECHANISED CRYPTOGRAPHY PUZZLE 02【Cypher編】

はじめに

いつもブログをご覧いただきありがとうございます。

ミジンコに転生したIPUSIRONです😀

IPUSIRONのプロフィールを見る

暗号文

QHSGUWIG
This message was encrypted with the same prototype cipher machine, but the scrambler starting orientation is unknown. 

Messages from this command post always begin with a roman numeral 15.

この英文は、以下のように訳せます。

このメッセージは同じプロトタイプ暗号機で暗号化されましたが、スクランブラーの初期位置は不明です。

指揮所(司令部)からのメッセージは常にローマ数字の15で始まります。

PUZZLE 01と同じプロトタイプ暗号機で暗号化されているということは、同一のスクランブラーとリフレクターを備えています。しかし、今回はスクランブラーの初期状態は不明です。

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
              
ABCDEFGHIJKLMNOPQRSTUVWXYZ
UWYGADFPVZBECKMTHXSLRINQOJ ←スクランブラー1(これが何回転しているか不明)

ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

ヒント

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

There are only 26 possible starting rotations, look for one where Q=x.

訳すると以下のようになります。

スクランブラーの初期回転位置は26通りしかありません。Q=xとなる位置を探してください。

1文字目において「’x’⇒’Q’」となるような、スクランブラー1の位置を探索すればよいわけです。

そのスクランブラー1の位置がわかれば、初期状態はに1シフトしたものになります。
※1回目の復号処理が実行される前に、に1シフトするためです。

解答への道

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

1:解読法を検討する

指揮所は毎回ローマ数字の15から始めているということは、常に"XV"から始まる平文メッセージを暗号化していることを意味します。

暗号文の先頭文字に対応する平文が判明しているわけであり、部分的に既知平文攻撃できます。

解読したい暗号文は"QHSGUWIG"です。

つまり、平文文字列"XV"が暗号文文字列"QH"に対応するわけです。

XV?????? ←平文
QHSGUWIG ←暗号文

こうした事実から、スクランブラー1の状態を特定します。状態特定すれば、後は復号するだけになります。

2:1文字目に注目する

スクランブラー1の状態は26通りしか存在せず、このうちの1つが暗号文文字’Q’が平文文字’X’に復号します。

ここでは、最悪でも26通り調べればよいわけです。

※途中で見みつかればその時点で中断すればよいので、26通り全部調べる必要はありません。

PUZZLE 01で与えられた最初の状態を「状態0」と名づけ、1文字回転するごとに「状態1」のように数値を増やすことにします。

スクランブラー1の上段に注目すると次のようになります。

状態0  ABCDEFGHIJKLMNOPQRSTUVWXYZ
状態1  BCDEFGHIJKLMNOPQRSTUVWXYZA
状態2  CDEFGHIJKLMNOPQRSTUVWXYZAB
状態3  DEFGHIJKLMNOPQRSTUVWXYZABC
状態4  EFGHIJKLMNOPQRSTUVWXYZABCD
状態5  FGHIJKLMNOPQRSTUVWXYZABCDE
状態6  GHIJKLMNOPQRSTUVWXYZABCDEF
状態7  HIJKLMNOPQRSTUVWXYZABCDEFG
状態8  IJKLMNOPQRSTUVWXYZABCDEFGH
状態9  JKLMNOPQRSTUVWXYZABCDEFGHI
状態10 KLMNOPQRSTUVWXYZABCDEFGHIJ
状態11 LMNOPQRSTUVWXYZABCDEFGHIJK
状態12 MNOPQRSTUVWXYZABCDEFGHIJKL
状態13 NOPQRSTUVWXYZABCDEFGHIJKLM
状態14 OPQRSTUVWXYZABCDEFGHIJKLMN
状態15 PQRSTUVWXYZABCDEFGHIJKLMNO
状態16 QRSTUVWXYZABCDEFGHIJKLMNOP
状態17 RSTUVWXYZABCDEFGHIJKLMNOPQ
状態18 STUVWXYZABCDEFGHIJKLMNOPQR
状態19 TUVWXYZABCDEFGHIJKLMNOPQRS
状態20 UVWXYZABCDEFGHIJKLMNOPQRST
状態21 VWXYZABCDEFGHIJKLMNOPQRSTU
状態22 WXYZABCDEFGHIJKLMNOPQRSTUV
状態23 XYZABCDEFGHIJKLMNOPQRSTUVW
状態24 YZABCDEFGHIJKLMNOPQRSTUVWX
状態25 ZABCDEFGHIJKLMONPQRSTUVWXY

[1]状態0からスタートしたとき

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
                ↓  ↑
BCDEFGHIJKLMNOPQRSTUVWXYZA
WYGADFPVZBECKMTHXSLRINQOJU ←スクランブラー1(状態0から1文字左シフト済み、すなわち状態1)
                   ↓     ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

暗号文文字’Q’は平文文字’T’に復号されました。

平文文字’X’ではないので、スタート状態は状態0ではなかったとわかります。

[2]状態1からスタートしたとき

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
   ↑            ↓
CDEFGHIJKLMNOPQRSTUVWXYZAB
YGADFPVZBECKMTHXSLRINQOJUW ←スクランブラー1(状態1から1文字左シフト済み、すなわち状態2)
    ↑           ↓
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

暗号文文字’Q’は平文文字’D’に復号されました。

平文文字’X’ではないので、スタート状態は状態1ではなかったとわかります。

[3]状態2からスタートしたとき

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
                ↓   ↑
DEFGHIJKLMNOPQRSTUVWXYZABC
GADFPVZBECKMTHXSLRINQOJUWY ←スクランブラー1(状態2から1文字左シフト済み、すなわち状態3)
            ↓ ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

暗号文文字’Q’は平文文字’U’に復号されました。

平文文字’X’ではないので、スタート状態は状態2ではなかったとわかります。

[4]状態3からスタートしたとき

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
     ↑          ↓
EFGHIJKLMNOPQRSTUVWXYZABCD
ADFPVZBECKMTHXSLRINQOJUWYG ←スクランブラー1(状態3から1文字左シフト済み、すなわち状態4)
                     ↑↓
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

暗号文文字’Q’は平文文字’F’に復号されました。

平文文字’X’ではないので、スタート状態は状態3ではなかったとわかります。

[5]状態4からスタートしたとき

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
                ↓      ↑
FGHIJKLMNOPQRSTUVWXYZABCDE
DFPVZBECKMTHXSLRINQOJUWYGA ←スクランブラー1(状態4から1文字左シフト済み、すなわち状態5)
   ↓   ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

暗号文文字’Q’は平文文字’X’に復号されました。

よって、スタート状態は状態4であったとわかります。

3:2文字目’H’を解読して’V’になることを確かめる

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
       ↓             ↑
GHIJKLMNOPQRSTUVWXYZABCDEF
FPVZBECKMTHXSLRINQOJUWYGAD ←スクランブラー1(状態5から1文字左シフト済み、すなわち状態6)
    ↑           ↓
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

確かに’V’に復号できました。後は3文字目以降も同様にして復号していきましょう。

4:3文字目’S’を復号する

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
               ↑  ↓
HIJKLMNOPQRSTUVWXYZABCDEFG
PVZBECKMTHXSLRINQOJUWYGADF ←スクランブラー1(状態6から1文字左シフト済み、すなわち状態7)
  ↓                 ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

平文文字’P’が得られました。

5:4文字目’G’を復号する

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
      ↓             ↑
IJKLMNOPQRSTUVWXYZABCDEFGH
VZBECKMTHXSLRINQOJUWYGADFP ←スクランブラー1(状態7から1文字左シフト済み、すなわち状態8)
   ↑           ↓
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

平文文字’U’が得られました。

6:5文字目’U’を復号する

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
                 ↑  ↓
JKLMNOPQRSTUVWXYZABCDEFGHI
ZBECKMTHXSLRINQOJUWYGADFPV ←スクランブラー1(状態8から1文字左シフト済み、すなわち状態9)
                    ↑↓
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

平文文字’R’が得られました。

7:6文字目’W’を復号する

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
               ↑      ↓
KLMNOPQRSTUVWXYZABCDEFGHIJ
BECKMTHXSLRINQOJUWYGADFPVZ ←スクランブラー1(状態9から1文字左シフト済み、すなわち状態10)
                  ↓     ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

平文文字’P’が得られました。

8:7文字目’I’を復号する

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
        ↓  ↑
LMNOPQRSTUVWXYZABCDEFGHIJK
ECKMTHXSLRINQOJUWYGADFPVZB ←スクランブラー1(状態10から1文字左シフト済み、すなわち状態11)
   ↓           ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

平文文字’L’が得られました。

9:8文字目’G’を復号する

ABCDEFGHIJKLMNOPQRSTUVWXYZ ←入力・出力
    ↑ ↓
MNOPQRSTUVWXYZABCDEFGHIJKL
CKMTHXSLRINQOJUWYGADFPVZBE ←スクランブラー1(状態11から1文字左シフト済み、すなわち状態12)
     ↓    ↑
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YRUHQSLDPXNGOKMIEBFZCWVJAT ←リフレクター(固定)

平文文字’E’が得られました。

10:得られた平文文字を連結する

“XVPURPLE"という文字列が得られました。

XVPURPLE ←平文
QHSGUWIG ←暗号文

“PURPLE"とは日本のパープル暗号を指しているのかもしれません。

解答

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

XVPURPLE

ツールで解読する【別解】

1:ブラウザーでCypher Enigma Simulatorにアクセスします。

2:「解析支援」タブを開きます。

既知平文攻撃として、まず暗号機の内部状態をセッティングします。

今回はスクランブラーの初期状態がわからないだけで、プラグボード・スクランブラー・リフレクターの有無やその種類はわかっています。

  • Plugboard:無効
  • Scrambler
    • Scrambler 1:カスタム"UWYGADFPVZBECKMTHXSLRINQOJ“
    • Scrambler 2:無効
    • Scrambler 3:無効
  • Reflector:カスタム"YRUHQSLDPXNGOKMIEBFZCWVJAT“

3:暗号文と既知平文を入力します。

ヒントから「平文文字’x’⇒暗号文文字’Q’であること」、問題文から「平文先頭は"XV"(ローマ数字の15)であること」が判明しています。

探索空間26通りと表示されているように、手動で解析するにはスクランブラー1を1つずつ左シフトしていき、既知平文の条件を満たすものを探せばよいことになります。

ここではツールの[探索実行]ボタンを押すだけです。

4:スクランブラー1の初期位置をEにセットしたとき、すなわち"ADFPVZBECKMTHXSLRINQOJUWYG"が初期状態になります。

暗号文"QHSGUWIG"の復号結果は、"XVPURPLE"になります。

これが正解キーワードになります。

Cypher古典暗号Cypher

Posted by ipusiron