Breaking Enigma with Index of Coincidence on a Commodore 64
> Source: Hacker_News
Execute Primary Source
// Problem
従来のエニグマ解読には、既知の平文(crib)が必要であった。しかし、平文の内容が全く不明な暗号文のみを傍受した場合、総当たり攻撃による解読は極めて困難となる。統計的な手がかりなしに、いかにして正しいローター設定を特定するかが課題となる。
// Approach
文字の出現頻度から言語らしさを測定する「一致指数(IC)」を用いる。エニグマのプラグボードは単一換字式置換であり、文字の出現頻度分布に影響を与えない。この特性を利用し、プラグボードを無視してローター設定のみを統計的に絞り込む手法をとる。
// Result
Commodore 64上で全ローター設定を探索する実装を行った。60文字程度の短い暗号文では、IC値が高い候補が必ずしも正解とは限らないが、適切な閾値設定により候補を大幅に削減し、人間が判読可能なレベルまで絞り込むことに成功した。
Senior Engineer Insight
> 計算資源が極めて限定的な8bit環境において、浮動小数点演算を避け、整数演算のみでICを近似計算する実装は非常に合理的である。統計的性質を利用して問題を分割する設計思想が鍵となる。