アフィン暗号
公式 E(x) = (a·x + b) mod 26 を使ってアフィン暗号を暗号化・復号できます。乗数 a とずらし b を一段ずつ動かし、換字アルファベットとリアルタイムの公式が更新される様子を見ながら、結果をコピー・ダウンロード・リンク共有できます。すべての処理はブラウザ上で非公開に実行されます。
乗数 a
ずらし b
E(x) = (5x + 8) mod 26
乗数 a は 26 と互いに素でなければならないため、許される値は 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 の十二個だけです。ずらし b は 0 から 25 までのどんな数でもかまいません。
上にテキストを入力すると、結果がここに表示されます。
換字アルファベット
平文
暗号
アフィン暗号 の使い方
- 1
暗号化か復号を選ぶ
平文をアフィン暗号文に変えるには暗号化を、同じ二つの鍵で暗号文を読めるテキストに戻すには復号を選びます。
- 2
乗数 a を設定する
乗数 a を十二個の有効な値にわたって一段ずつ動かします。26 と互いに素な数だけが提示されるので、暗号はつねに元に戻せます。
- 3
ずらし b を設定する
ずらし b を 0 から 25 までの任意の値へ一段ずつ動かします。変えた瞬間に、リアルタイムの公式と換字アルファベットの表が更新されます。
- 4
テキストを入力または貼り付ける
メッセージを入力すると、入力すると同時に暗号が適用されます。文字は暗号化され、スペースや数字、記号はそのまま素通りし、大文字小文字は保たれます。
- 5
コピー・ダウンロード・共有する
結果をコピーしたり、テキストファイルとしてダウンロードしたり、入力した鍵・テキスト・方向をそのまま再現するリンクで共有したりできます。
アフィン暗号を理解する
アフィン暗号とは何ですか?
アフィン暗号は、単純な剰余算術から作られる単一換字暗号です。各文字を A = 0 から Z = 25 までの数に変え、線形関数 E(x) = (a·x + b) mod 26 に通してから、再び文字へ戻します。二つの数 a と b が鍵であり、a は乗数、b はずらしです。同じ文字がつねに同じ暗号文字に対応するため、アフィン暗号はシーザーやアトバシュ暗号と同じ仲間に属しますが、掛けてからずらすという段階があるぶん、どちらよりも一般的です。
名前は、掛け算と足し算を組み合わせてこの暗号に構造を与えるアフィン関数 a·x + b に由来します。剰余算術、互いに素な数、そして剰余の逆元が、どのように一つの働く暗号の中で結びつくかを見せてくれるため、アフィン暗号は暗号学の背後にある数学を教えるのに最も人気のある暗号の一つです。また、小さな鍵空間のおかげで手で解く楽しさがあり、パズルや脱出ゲーム、CTF のチャレンジの常連でもあります。
アフィン暗号化の公式
暗号化するには、各文字をアルファベット上の位置、すなわち A = 0、B = 1、そして Z = 25 までの数に変えます。その数 x を公式 E(x) = (a·x + b) mod 26 に入れ、a を掛け、b を足し、26 で割った余りを取ると、結果が 0 から 25 の範囲へと巻き戻ります。その数を文字へ戻したものが暗号文です。a を掛けるとアルファベットが引き伸ばされてかき混ぜられ、b を足すとアルファベットが滑るように動き、mod 26 がすべてを 26 文字の輪の中に留めます。
上のツールは対応の全体を一目で見せてくれます。換字アルファベットの表は、A から Z までのすべての平文文字が、今の a と b のもとでどの暗号文字になるかを並べ、どちらの鍵を変えてもその瞬間に更新されます。文字の大文字小文字は保たれ、文字でないもの — スペース、数字、記号、絵文字 — はそのまま素通りするため、暗号化したあとでもメッセージの形は読みやすく残ります。
鍵 a と b を選ぶ
ずらし b は簡単です。0 から 25 までのどんな整数でもかまいません。面白いのは乗数 a のほうで、すべての値が使えるわけではないからです。暗号が元に戻せるためには、a が 26 と互いに素、つまり 1 以外に 26 と公約数を持たない必要があります。26 = 2 × 13 なので、すべての偶数と 13 のすべての倍数が除かれ、その結果ちょうど十二個の使える値、すなわち 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 が残ります。
もし a が 26 と公約数を持つなら — たとえば a = 2 なら — いくつもの異なる平文文字が同じ暗号文字に重なってしまい、メッセージをもはや一意に復号できなくなります。だから上の乗数の操作部は、十二個の有効な値だけを一段ずつたどるようになっています。元に戻せない鍵を選ぶことはできない仕組みです。a に十二通り、b に二十六通りあるので、可能な鍵の組み合わせは全部で 312 通りあり、そのうちの一つ、a = 1 と b = 0 はテキストをそのまま残します。
アフィン暗号の実例
鍵 a = 5 と b = 8 を使って、単語 AFFINECIPHER を暗号化してみましょう。最初の文字 A は 0 なので E(0) = (5·0 + 8) mod 26 = 8、つまり I です。次の文字 F は 5 なので E(5) = (5·5 + 8) mod 26 = 33 mod 26 = 7、つまり H です。単語全体を一文字ずつたどっていくと、暗号文 IHHWVCSWFRCP が得られます。
上の換字アルファベットの表で、すべての段階を追えます。a を 5 に、b を 8 に設定すると、暗号の行は A が I に、B が N に、C が S に、そうしてアルファベット全体にわたって変わるさまを示します。対応が固定されているため、同じ文字を暗号化するとつねに同じ結果になり、AFFINE の二つの F はどちらも H になります。まさにこの性質のおかげで、攻撃者は頻度分析を仕掛けることができます。
アフィン暗号を復号する
復号は公式を逆に動かして D(y) = a⁻¹·(y − b) mod 26 で実行します。新しく加わる材料は a⁻¹、すなわち a の剰余の逆元です。a と掛けたときに 1 mod 26 になる数のことです。a = 5 の場合、逆元は 21 です。5 × 21 = 105 = 4 × 26 + 1 だからです。復号するには、ずらし b を引き、その逆元を掛け、結果に mod 26 を取ります。例をたどり直すと、暗号文字 I は 8 であり、D(8) = 21·(8 − 8) mod 26 = 0、つまり再び A です。
逆元を自分で求める必要はまったくありません。上で復号を選び、暗号化に使ったのと同じ a と b を入力し、暗号文を貼り付ければ、ツールが剰余の逆元を見つけてメッセージを即座に復元します。アフィン暗号はきれいな一対一の対応なので、復号するとスペースや大文字小文字、記号がすべてそのまま保たれた状態で、元のテキストがそっくり戻ってきます。
特別な場合としてのシーザーとアトバシュ
アフィン暗号は、最も有名な古典暗号を二つ、ひそかに内に含んでいます。乗数 a を 1 に設定すると公式は E(x) = (x + b) mod 26 へと崩れ、これはすべての文字を b 個分ずらすだけの純粋なずらし、まさにシーザー暗号です。a = 1 と b = 3 にすれば、ユリウス・カエサルが使ったと伝えられる古典的なずらしが得られ、A を D に、HELLO を KHOOR に変えます。
a = 25 と b = 25 にすると、同じくらいなじみ深いものが現れます。25 は −1 mod 26 と等しいので、公式は E(x) = (25 − x) mod 26 となり、アルファベットを逆にして A が Z に、B が Y に、そうして続きます。これが、何千年も前にヘブライの書記たちが使ったアトバシュ暗号です。二つの暗号が一つの公式から落ちてくるのを見ることこそ、アフィン暗号がそれらをどのように一般化するかを理解する最も明快な道です。上で各設定を試し、換字表がそれを裏づけるさまを見届けてください。
アフィン暗号はどれほど安全ですか?
現代のどんな尺度で見ても、アフィン暗号は本当の安全性をまったく提供しません。可能な鍵がわずか 312 通り — しかも実際にテキストをかき混ぜるものはさらに少なく — コンピューターはそのすべてをほんの一瞬で試せますし、辛抱強い人なら手作業でも総当たりできます。小さな数二つには、攻撃に耐えるだけの秘密の情報がそもそも入っていないのです。
また単一換字であるために頻度分析にも弱いです。各文字がつねに同じ暗号文字に対応するため、最も多い暗号文文字は、英語で最も多い文字である E を表している可能性が非常に高いのです。平文と暗号文の文字の対応をたった二組推測するか知ることができた攻撃者なら、少しの代数で a と b を直接解くことさえできます。これらはどれも直すべき欠陥ではなく — まさにその点がアフィン暗号をこれほど優れた教材にしています — ただ、本当の情報を守るには、つねに AES のような現代的で査読を経たアルゴリズムを使うべきです。
よくある質問
アフィン暗号とは何ですか?
アフィン暗号はどう動きますか?
乗数 a はどんな値を取れますか?
アフィン暗号の鍵 a と b は何ですか?
アフィン暗号はどうやって復号しますか?
アフィン暗号の実例を見せてもらえますか?
アフィン暗号はシーザー暗号とどう関係しますか?
アフィン暗号はアトバシュ暗号とどう関係しますか?
アフィン暗号の鍵は何通りありますか?
アフィン暗号はどうやって破りますか?
アフィン暗号はスペースや数字、記号を保ちますか?
入力したテキストはサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ