T

Text Machine

強力なテキストツールを、ブラウザで

アフィン暗号

公式 E(x) = (a·x + b) mod 26 を使ってアフィン暗号を暗号化・復号できます。乗数 a とずらし b を一段ずつ動かし、換字アルファベットとリアルタイムの公式が更新される様子を見ながら、結果をコピー・ダウンロード・リンク共有できます。すべての処理はブラウザ上で非公開に実行されます。

暗号鍵

乗数 a

5

ずらし b

8

E(x) = (5x + 8) mod 26

乗数 a は 26 と互いに素でなければならないため、許される値は 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 の十二個だけです。ずらし b は 0 から 25 までのどんな数でもかまいません。

平文
暗号文

上にテキストを入力すると、結果がここに表示されます。

換字アルファベット

平文

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z

暗号

I
N
S
X
C
H
M
R
W
B
G
L
Q
V
A
F
K
P
U
Z
E
J
O
T
Y
D

アフィン暗号 の使い方

  1. 1

    暗号化か復号を選ぶ

    平文をアフィン暗号文に変えるには暗号化を、同じ二つの鍵で暗号文を読めるテキストに戻すには復号を選びます。

  2. 2

    乗数 a を設定する

    乗数 a を十二個の有効な値にわたって一段ずつ動かします。26 と互いに素な数だけが提示されるので、暗号はつねに元に戻せます。

  3. 3

    ずらし b を設定する

    ずらし b を 0 から 25 までの任意の値へ一段ずつ動かします。変えた瞬間に、リアルタイムの公式と換字アルファベットの表が更新されます。

  4. 4

    テキストを入力または貼り付ける

    メッセージを入力すると、入力すると同時に暗号が適用されます。文字は暗号化され、スペースや数字、記号はそのまま素通りし、大文字小文字は保たれます。

  5. 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 のような現代的で査読を経たアルゴリズムを使うべきです。

よくある質問

アフィン暗号とは何ですか?
アフィン暗号は、各文字を公式 E(x) = (a·x + b) mod 26 で暗号化する単一換字暗号です。すべての文字を 0 から 25 までの数に変え、a を掛け、b だけずらし、mod 26 で縮め、再び文字に変えます。二つの数 a と b の組が鍵です。シーザーとアトバシュ暗号を一般化したもので、暗号学の背後にある数学を教えるのに広く使われています。
アフィン暗号はどう動きますか?
各平文文字を数(A = 0 から Z = 25)に変え、E(x) = (a·x + b) mod 26 に通します。鍵 a を掛け、鍵 b を足し、26 で割った余りを取り、結果を再び文字に変えます。掛け算がアルファベットをかき混ぜ、足し算がそれをずらします。復号は a の剰余の逆元を使ってその段階を逆にたどります。
乗数 a はどんな値を取れますか?
乗数 a は 26 と互いに素 — 1 以外に公約数を持たない — でなければ、暗号を一意に復号できません。26 = 2 × 13 なので、すべての偶数と 13 のすべての倍数が除かれ、ちょうど十二個の値、すなわち 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 が残ります。ツールはこれらの中からしか選べないようにしているので、鍵はつねに元に戻せます。
アフィン暗号の鍵 a と b は何ですか?
暗号を定める二つの数です。26 と互いに素な十二個の値の一つである乗数 a は、掛け算でアルファベットをどうかき混ぜるかを決め、0 から 25 までの任意の数であるずらし b は、その結果をアルファベットに沿って滑らせます。暗号化にも復号にも両方が必要で、どちらか一方を変えるだけで換字アルファベット全体が変わります。
アフィン暗号はどうやって復号しますか?
復号は D(y) = a⁻¹·(y − b) mod 26 を使います。ここで a⁻¹ は a の剰余の逆元、つまり a と掛けたときに mod 26 で 1 になる数です。ずらしを引き、逆元を掛け、mod 26 で縮めます。ツールはこれを自動で行います。復号を選び、暗号化に使ったのと同じ a と b を入力し、暗号文を貼り付けて元のメッセージを復元してください。
アフィン暗号の実例を見せてもらえますか?
a = 5 と b = 8 で、単語 AFFINECIPHER は IHHWVCSWFRCP に暗号化されます。最初の文字は A が 0 なので E(0) = (5·0 + 8) mod 26 = 8 = I、5 である F は E(5) = (5·5 + 8) mod 26 = 7 = H です。復号するには、5 の剰余の逆元が 21 で、D(8) = 21·(8 − 8) mod 26 = 0 = A となり、元のテキストが戻ってきます。
アフィン暗号はシーザー暗号とどう関係しますか?
シーザー暗号は、乗数 a が 1 であるアフィン暗号の特別な場合です。a = 1 のとき公式は E(x) = (x + b) mod 26 となり、すべての文字を b 個分ずらすだけの純粋なずらしになります。ツールで a = 1 と b = 3 にすると、A を D に変える古典的なシーザーのずらしが再現されるので、シーザーを掛け算の段階がないアフィン暗号と考えることができます。
アフィン暗号はアトバシュ暗号とどう関係しますか?
アトバシュは a = 25 と b = 25 のアフィン暗号です。25 は −1 mod 26 と等しいので、公式は E(x) = (25 − x) mod 26 となり、アルファベットを逆にして A が Z に、Z が A になります。ツールでそれらの鍵を選ぶと、換字アルファベットが完全な反転を示し、アトバシュがアフィン暗号の鍵空間の一点にすぎないことを明らかにします。
アフィン暗号の鍵は何通りありますか?
乗数 a に有効な選択が十二通り、ずらし b に二十六通りあり、可能な鍵の組み合わせは 312 通りです。そのうちの一つ、a = 1 と b = 0 は、すべての文字を自分自身に対応させてテキストをそのまま残します。この小さな鍵空間ゆえに、アフィン暗号はすべての鍵を試すことで — いわゆる総当たり攻撃で — ほぼ即座に破られます。
アフィン暗号はどうやって破りますか?
二つの方法が簡単に通用します。総当たりは 312 個の鍵をすべて試し、読めるテキストを生む鍵を残します。頻度分析は、この暗号が単一換字であるという事実を利用します。最も多い暗号文文字は、E や T のような多い文字を表している可能性が高いのです。平文と暗号文の文字の対応をたった二つ推測できれば、二つの方程式を解いて a と b を直接求めることさえできます。これがアフィン暗号をパズルとして破る楽しさにしています。
アフィン暗号はスペースや数字、記号を保ちますか?
はい。A から Z までの 26 文字だけが暗号化され、スペースや数字、記号、そして他の文字体系の文字はそのまま素通りし、ツールは元の大文字小文字を保ちます。つまりメッセージの配置が暗号化を生き延びるので、パズルには便利ですが、単語の長さや構造がそのまま見えるため、攻撃者には余分な手がかりも与えます。
入力したテキストはサーバーに送信されますか?
いいえ。すべての暗号化と復号はブラウザ内だけで実行されるため、入力したテキストと鍵がアップロード・記録・保存されることはありません。共有リンクでさえ、テキストと設定を URL のハッシュ以降の部分に保持しますが、ブラウザはこの部分をサーバーに送信しないため、自分でリンクを共有するまでメッセージは非公開のまま保たれます。

関連ツール

こちらの便利なツールもどうぞ

シーザー暗号

ヴィジュネル暗号

アトバシュ暗号

レールフェンス暗号

プレイフェア暗号

ベーコン暗号