LoginSignup
4
2

More than 5 years have passed since last update.

SECCON 2016 Online CTF Writeup - Vigenere ※人力

Last updated at Posted at 2016-12-11

Vigenere (Crypto, 100pts)

以下の暗号を解くと、flagが手に入ります。

k: ????????????
p: SECCON{???????????????????????????????????}
c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ

k=key, p=plain, c=cipher, md5(p)=f528a6ab914c1ecf856a1d93103948fe

下記ページを参考に人力()で解きました。テクニカルな解法ではないです。
ヴィジュネル暗号: Axoluder`s blog
ヴィジュネル暗号 - Wikipedia

既知部分の復号

問題とともに提示されたヴィジュネル方陣を使用します。

venegere.png

縦軸(上段)を平文p、横軸(左列)を鍵kとした場合、クロスする文字が暗号化後の文字c。

平文が S のとき 暗号が L になる鍵は V
平文が E のとき 暗号が M になる鍵は I
平文が C のとき 暗号が I になる鍵は G

繰り返すことで、鍵の一部が判明します。残り5文字。
k: VIGENER?????

タイトル「Vigenere」から推測して、残り4文字。
k: VIGENERE????

ここで一度復号

行き詰まってしまったため、今ある鍵部分のみ復号してみます。
ヴィジュネル暗号では、鍵の長さが平文よりも短い場合、鍵を繰り返し適用することで暗号化/復号を行うそうです。

key: VIGENERE????

対応づけてみるとこんな感じです。

k  : VIGENERE???? VIGINERE???? VIGENERE???? VIGENER
p  : SECCON{????? ???????????? ???????????? ??????}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

先ほどのヴィジュネル方陣と照らし合わせて、復号します。

k  : VIGENERE???? VIGINERE???? VIGENERE???? VIGENER
p  : SECCON{A???? BCDEDEFG???? KLMNOPQR???? VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

どうやら、A~Zを並べた文字列のようです。

p : SECCON{A????BCDEDEFG????KLMNOPQR????VWXYYZ}

ここから力技

鍵の残り4文字を探し当てる必要があります。
k: VIGENERE????

まずは、平文の空白を推測して埋めてみました。

             BABB        HIIJ        STTU
p  : SECCON{A????BCDEDEFG????KLMNOPQR????VWXYYZ}
    ↓
p  : SECCON{ABABBBCDEDEFGHHIJKLMNOPQRSTTUVWXYYZ}

(推測で)埋めた平文を用いて鍵を推測します。

             CODD         COEE         BODE
k  : VIGENERE???? VIGINERE???? VIGENERE???? VIGENER
p  : SECCON{ABABB BCDEDEFGHIIJ KLMNOPQRSTTU VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

3つの候補 CODD , COEE , BODE から、鍵の残り部分を CODE と仮定しました。
key: VIGENERECODE → ヴィジュネルコード でしょうか。

flag取得

鍵が判明したので、残り部分も復号します。

k  : VIGENERECODE VIGINERECODE VIGENERECODE VIGENER
p  : SECCON{A???? BCDEDEFG???? KLMNOPQR???? VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

 ↓

k  : VIGENERECODE VIGINERECODE VIGENERECODE VIGENER
p  : SECCON{ABABA BCDEDEFGHIJJ KLMNOPQRSTTU VWXYYZ}
c  : LMIG}RPEDOEE WKJIQIWKJWMN DTSR}TFVUFWY OCBAJBQ

 ↓

SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

flagが判明し、投稿したところ正解でした。
ヴィジュネル暗号自体を知らなかったこともあり、暗号の理解から始めて2時間以上を要しました。次回はもっとスマートな解き方をしてみたいところです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2