# KsnCTF021 Perfect Cipher

ksnctf: http://ksnctf.sweetduet.info/21

# 21. Perfect Cipher

  • It is proved that the one-time pad is information-theoretically secure.
    • one-time padは情報理論的に安全であると示されている
  • one-time pad is 何?
    • OTP(乱数列を高々1回だけ使う暗号の運用法)じゃん
    • HackCon'19でも出てて解けなかったやつだ......
  • とりあえず配布されたzipを解凍する
$ unzip encrypt.zip -d ./encrypt
$ ls
encrypt.cpp     encrypt.enc     flag.enc        mt19937ar.cpp   mt19937ar.h
  • mt19937は, 乱数生成関連だった気がする
    • メルセンヌ・ツイスタという乱数生成器らしい
  • encrypt.cppを見る
    • encrypt.encの1バイト目にplain fileのバイト長が書いてある
      • 0x28 = 40Byte
    • 乱数生成した数とxorをとり, それをkeyとしているらしい
    • keyがわかればplain fileが復元できる
    • 乱数生成した数は擬似乱数だから復元できないか?
    • # encrypt.cppencrypt.encなので, xorを取れば復元できそう

Last Updated: 9ヶ月前