定義
アフィン暗号は以下で定義されます。ただし、n=26とします。
暗号化: Enc(m) = (a·m + b) mod n
復号: Dec(c) = a⁻¹·(c − b) mod n
なぜ a と n の互いに素が重要か
gcd(a,n)=1 を満たさないと逆元 a⁻¹ が存在せず、復号できません。
n=26の場合、aは{1,3,5,7,9,11,15,17,19,21,23,25}である必要があります。
直感的な理解
アフィン暗号の式 Enc(m) = (a·m + b) mod n において:
- b:文字を一定数だけシフト(ずらす)
- a:文字の対応関係を変更
- a=1 の場合:Enc(m) = (m + b) mod n となり、シフト暗号と同じ
- a≠1 の場合:単純なシフトではなく、より複雑な文字変換になる
シーザー暗号・シフト暗号との関係
シーザー暗号とシフト暗号は、アフィン暗号の特殊例です:
- シーザー暗号: a=1, b=3 の場合(古代ローマのカエサルが使用)
- シフト暗号: a=1, b=任意の値(0~25)の場合
つまり、Enc(m) = (1·m + b) mod n = m + b mod n となり、単純な文字シフトになります。
総当たり解読の仕組み
このツールの総当たり解読は以下の手順で動作します:
- 全パラメーター試行:有効なaの値12個 × bの値26個 = 312通りの組み合わせを全て試す
- 復号実行:各(a,b)で暗号文を復号し、平文候補を生成
- 英語らしさ判定:生成された平文候補を以下2つの指標で評価
- よく使われる英単語(THE, AND, TO等)の出現回数
- 英語の文字頻度(Eがもっとも多い等)との一致度(カイ二乗検定)
- スコア計算・順位付け:上記2指標を組み合わせて総合スコアを算出し、高得点順に表示
スコア表示の見方:
- score:総合スコア(大きいほど正解に近い可能性が高い)
- hits:一般的な英単語(THE, AND, TO等)の出現回数
- chi:カイ二乗値(小さいほど英語の文字頻度に近い)
例:score=40.64 / hits=0 / chi=11.3
→ 英単語は見つからなかったが、文字頻度はそれなりに英語に近い
※この手法は平文が英語である場合に効果的です。日本語や他言語では精度が下がります。
関連暗号
- ヴィジュネル暗号(多表式換字)
- プレイフェア暗号(2文字換字)