はまやんはまやんはまやん

hamayanhamayan's blog

CTFのCryptoにおける古典暗号まとめ

CTFにおけるCrypto入門とまとめの1つです。

古典暗号

  • 古典暗号: 1960年代までの暗号の総称
    • エニグマまでが古典暗号っぽい?
    • サイモンシンの暗号解読はここを沢山扱っている
    • 現代暗号と古典暗号の違いは、アルゴリズムと鍵の分離、アルゴリズムの公開、オープンな場での研究・開発、民間での商用利用などがある
  • 古典暗号/換字式暗号: 文字を変換して暗号化
    • 単一換字式暗号: 暗号化の前後でアルファベットが1対1で対応
      • シーザー暗号, ROT13
      • 文字の出現頻度を計算して解析していく
      • quipquipというWebサービスで解析
    • 多表換字式暗号: アルファベットの対応表を複数作成して、何らかのルールに基づいて使う表を変えて変換する
      • ヴィジュネル暗号
      • カシスキーテスト: 繰り返し出てくるtheのような単語を探して、鍵長を推測し、サイクルを特定したら、offset毎に文字の出現頻度を解析する
  • 古典暗号/転置式暗号: 文字の場所を入れ替えて暗号化
    • レールフェンス暗号
      • 平文をジグザグにならべて、横に書き下したもの
    • シーザー暗号
  • CTFでは謎の文字列やバイト列が与えられて、暗号方式をguessして根性で解析してねと言う問題が出てくる。頻度解析などを真面目にやればいいのかもしれないのだが、知識ゲー/ガチャガチャゲーすぎて自分はあまり好きではない。推測成分が多いので、問題文や問題名にヒントが含まれていたりするので、それを元に推測したり実験したりしていく。ステガノグラフィーに似ているかもしれない。

頻度解析

  • 英文だとeが多く登場しやすいみたいな頻度を解析することで復元する問題
  • quipqiup https://quipqiup.com/ が使える
  • 例えば特定の文字が特定の暗号文やハッシュになるみたいな状況なら適当にアルファベットに当てはめて出力してやって頻度解析フェーズはquipqiupにやられるという方針も取れる

暗号やエンコード色々

ROT13、シーザー暗号、モールス信号、ヴィジュネル暗号あたりが有名。