わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

暗号解読

 今期の講義科目のレポート課題(暗号解読)は,いつものように単一換字暗号でした.
 昨日の授業前に答案を回収し,昼過ぎに解読結果と解説を,受講生向けに公開しました.
 といったところで暗号文です.

QZIKSEWYYTBJTWZSQZKDZTLJTZSYEGYSJIQKDEOJ
ETZHEDZTTEZEOJIQZWEOJIEQZIKSEOZOQZKGYOKO
JIEQZIKSEOZEKTESQKDKETEXYIYDJRYSKIQZWEOJ
IEQZIKSEOZWYIZKHJIEXZSZSESKDKOYRJTZGZKHQ
ZDQZIKXZOYIYRJDKIZOZIZKHJIETZRZIKOJIEOYS
SJEXZSYRYOYHJDKTZKDQZIKXZOYIYRJDKIZOZIJT
DZKTYGZKHQZSESKOJRKXZQZKESKDKIZOZRYRZDEO
JTZIQZKBETSJEDJBEDEJTSKXZOYIYRJDKIZOZTYL
ZLJIZKHJIESQYTEIZKHJIEXZZRZEOZLZRYDYSJDK
IZOZXZEERYSKEMMZKOQZKGYOKOJIEQZIKSEWYIZK
HJIEXZKIJOYSYETEIZKHJIESQYWJTZWZKWKIKTZK
DQZIKQYMJTYDKOJEXZSERJSKIZOZTEQZDEIZKHJI
EXZZRZEOZLZRYDYSJDKIZOZXZEERYSKIZKHJIESE
OJJDYDJDKRZTZQZDEKSETYKRZTZTZWZKHYZZIEEO
ZEKIZKHJIESQYTZSZTOZIKIYTBQZKTEWYOYDYIEI
YIJOJIZKHJIEXZLYTTJTSYSJDKIZOZXZTJDYERYS
KSEIYSETYHYDYOQZKGYOKOJIEQZIKSEHYIETZKSK
DKOYRJTEWYIZKHJIESQYXZOZIKOJESKDKIZOZOKR
YDEYOZDEGQKSQZTHYBJTOJEOZTYDERYSK

 解読にあたっての諸情報です.

  • 原文は,書籍に収録された文章(日本語・敬体)の一部で,句読点などの記号類を取り除いてから,ローマ字で表記したものが平文です.
  • ローマ字はヘボン式ではありません.訓令式に近いですが一部異なります.原文の助詞の「は」「を」は,平文では「ha」「wo」にしています.
  • 原文の括弧書きが英語の場合には削除し,日本語の場合には残しています(括弧の記号は取り除いています).
  • カタカナ書きの長音記号も取り除いています.「ペナルティー」は,平文では「penarutei」にしています.
  • 平文文字のうち出現頻度が最も大きいのは「a」ではありません.
  • 原文には「攻撃」が11回出現します.

 原文は『マスタリングTCP/IP 情報セキュリティ編(第2版)』p.22の「「抑止」は」から「前提となります」までです.Pythonを用いた単一換字暗号の解読のコードと同様に,上記の暗号文を文字列として変数sに格納してから,「translate(str.maketrans('BDEGHIJKLMOQRSTWXYZ', 'zribgkeudptymsnhwao'))」により,平文を得ます.
 提出期限の直前の授業の終了時に,学生が来ました.ヒントのうち「原文には「攻撃」が11回出現します.」をどのように使えばいいのか分からない,と尋ねてきました.「平文には「攻撃」をローマ字にしたものが11回出現します.」に読み替えてください,とヒントを出すと,それだけで理解し,自分の席に戻っていきました.
 「攻撃」のローマ字表記は「kougeki」でして(「kogeki」では,うまくいきません),この1文字目と6文字目が同じ「k」であることは,暗号文では,「ある位置の文字と,その5つあとの文字が同じ」であることを意味します.そのような文字の並びを,暗号文から探すと,「IZKHJIE」が見つかり*1,I→k,Z→o,K→u,H→g,J→e,E→iを割り当てることができます.あとは1文字ずつ推定していきます.
 昨年度の暗号解読は:https://takehikom.hateblo.jp/entry/2023/06/30/185115

*1:ブラウザでページ内検索をすると,9回しか出現しません.あとの2回は,途中に改行が入ります.行またぎを考慮した検索機能を持つテキストエディタで検索すると,11回出現します.