ボーフォート暗号
イギリスの提督サー・フランシス・ボーフォート (Sir Francis Beaufort) にちなんで名づけられた、キーワードに基づく多表式暗号であるボーフォート暗号を暗号化・復号しましょう。これは自己逆元です: 同じキーワードで暗号化も復号も行えるため、別個の復号モードはありません。キーワードを入力すると、計算過程がリアルタイムで組み上がっていく様子を眺められます。すべての処理はブラウザ上で実行されます。
ボーフォートは自己逆元です: 同じキーワードで暗号化も復号も行えます。メッセージを復号するには、暗号文を貼り付けて同じキーワードを入力するだけで、結果は元の平文になります。別個の復号ボタンはありません。
キーワード
キーワードは、送信者と受信者が共有する秘密です。メッセージ全体にわたって繰り返され、その各文字が、その位置でどれだけ差し引くかを決めます。使われるのは文字だけで、キーワード中のスペース・数字・句読点は無視されます。
上にテキストを入力すると、ボーフォート暗号の結果がここに表示されます。
ボーフォート暗号 の使い方
- 1
キーワードを入力する
FORTIFICATION のような、共有された秘密のキーワードを入力します。使われるのはその文字だけで、スペース・数字・句読点は無視されます。同じキーワードが暗号化にも復号にも使われます。
- 2
テキストを入力または貼り付ける
変換したいメッセージを入力します: 暗号化する平文か、復号するボーフォート暗号文です。入力すると同時に暗号が自動で実行され、1文字ずつの計算過程が下にリアルタイムで更新されます。
- 3
自己逆元の結果を読む
ボーフォートは自己逆元なので、同じキーワードが両方の向きに使えます。メッセージを復元するには、暗号文を貼り付け、暗号化に使われたのと同じキーワードを入力します。結果は元の平文です。
- 4
確認し、コピーし、共有する
計算過程を開いて各文字がどう計算されるかを確認し、結果をコピーしたり、テキストファイルとしてダウンロードしたり、あなたの正確なキーワードとテキストとともにツールを開き直すリンクで共有したりできます。
ボーフォート暗号を理解する
ボーフォート暗号とは何ですか?
ボーフォート暗号は、サー・フランシス・ボーフォート (Sir Francis Beaufort) にちなんで名づけられた多表式換字暗号です。彼はイギリス海軍の提督であり、今日ではボーフォート風力階級で最もよく知られています。これはヴィジュネル (Vigenère) 暗号と密接に関連しています: 繰り返されるキーワードがメッセージの各文字をずらすため、同じ平文の文字でも、その位置に応じてさまざまに異なる暗号文の文字に暗号化されえます。各文字をアルファベット全体にわたって散らすこの性質こそ、多表式暗号を単純なシーザー (Caesar) シフトよりもはるかに読み解きにくくしているものです。
ボーフォートを際立たせているのは、算術の向きです。ヴィジュネルのように平文にキーを足すのではなく、ボーフォートはキーから平文を引きます。このたった一つの違いが、暗号に最も有用な性質を与えます: それは自己逆元である、すなわちまったく同じ操作が暗号化も復号も行うということです。この方法は、1857年のボーフォートの死の直後に出版された小さなカードに刷られており、同じ自己逆元の規則は、後に20世紀中頃に使われた Hagelin M-209 のような回転式暗号機にも組み込まれました。
ボーフォート暗号の仕組み
アルファベットに A を 0 から Z を 25 まで番号を振ります。キーワードは、メッセージのすべての文字の下に1つずつキー文字が並ぶよう、必要なだけ繰り返されます。各位置では、キー文字を取り、そこから平文の文字を引き、結果を 26 で割った余りでアルファベットを循環させます。式で書くと、暗号文の文字は C = (K − P) mod 26 です。変換されるのは文字だけで、スペース・数字・句読点はそのまま通り抜け、キー文字を消費しないため、キーワードは肝心の文字と並んだままになります。
紙の上では、同じ計算を、ずらしたすべてのアルファベットの正方形の表である tabula recta を使って行えます。文字を暗号化するには、上端の行で平文の文字を見つけ、その列を下へたどってキーワードの文字に達したら、その行の左端のラベルから暗号文を読み取ります。この参照は、同じ引き算を計算する視覚的なやり方にすぎず、ツールの下にあるリアルタイムの計算過程が、あなたのメッセージの各文字についてまさに示しているものです。
実例で見る
メッセージ HELLO をキーワード KEY で暗号化しましょう。キーワードを繰り返すと、H、E、L、L、O の下に K、E、Y、K、E というキー文字が並びます。各平文の文字をそのキー文字から引くと、K から H は 10 − 7 = 3 で D、E から E は 0 で A、Y から L は 24 − 11 = 13 で N、K から L は 10 − 11 = −1 で循環させると 25 で Z、最後に E から O は 4 − 14 = −10 で 16 に循環して Q となります。暗号文は DANZQ です。
では、同じキーワード KEY と同じ引き算で DANZQ を復号します。K から D は 10 − 3 = 7 で H、E から A は 4 で E、Y から N は 24 − 13 = 11 で L、K から Z は 10 − 25 = −15 で 11 に循環して L、E から Q は 4 − 16 = −12 で 14 に循環して O となります。結果は再び HELLO です。まったく同じ操作がメッセージを復元しました。これこそがボーフォート暗号の眼目です。
なぜボーフォートはそれ自身の逆元なのか
自己逆元の性質は、式から直接導かれます。暗号化は C = (K − P) mod 26 を計算します。その暗号文を同じキーで同じ操作にもう一度通すと、(K − C) mod 26 を計算することになり、これは (K − (K − P)) mod 26 です。2つのキー文字が打ち消し合い、元の平文である P が残ります。この循環アルファベットにおける引き算がそのように対称であるため、2回暗号化すると出発点に戻ります。
これは実に便利です。ヴィジュネルでは、暗号化するときは足し、復号するときは引くことを覚えておかねばならず、2つの向きで異なる手順を使います。ボーフォートでは覚えるべき手順は一つだけで、一つの機械設定や一つのツールが両方の向きに使えます。だからこのツールには別個の復号ボタンがありません: 同じキーワードを入力し、変換したいテキストを貼り付けるだけです。
ボーフォート、ヴィジュネル、そして変種ボーフォート
密接に関連する3つのキーワード暗号を並べてみると分かりやすいでしょう。ヴィジュネル暗号は足し算で、C = (P + K) mod 26 であり、復号には逆の引き算が必要です。本来のボーフォート暗号はキーから平文を引き、C = (K − P) mod 26 であり、自己逆元です。3つ目の規則もあります。変種ボーフォートで、ときにドイツ式ボーフォートとも呼ばれ、代わりに平文からキーを引き、C = (P − K) mod 26 です。この変種はまさに、ヴィジュネルの復号操作を暗号化として使ったものであり、本来のボーフォートと違って自己逆元ではないため、元に戻すにはヴィジュネルの暗号化が必要です。
3つすべてが繰り返されるキーワードと tabula recta を共有するため、しばしば混同され、一方で暗号化したメッセージは他方では意味不明に見えます。このツールは古典的な自己逆元のボーフォートを実装しています。足し算の規則や変種が必要な場合は、Text Machine のヴィジュネルツールがヴィジュネルとその関連モードを扱います。
ボーフォート暗号を破る方法
ボーフォートは、あらゆる繰り返しキーの多表式暗号の強みと弱みを受け継いでいます。その防御は、一つの平文の文字がいくつもの異なる暗号文の文字に対応することにあり、これが単純な換字を露呈させる明白な文字頻度の山を平らにします。その弱みは、キーが繰り返されることです。解析者がいったんキーワードの長さを推測すると、暗号文はそれぞれ単一の固定されたキー文字で暗号化された別々の列に分かれ、各列は頻度分析に屈する単純なシフト暗号になります。
キーの長さを見つける古典的な方法は、繰り返される文字の組を探してその間の距離を測るカシスキー (Kasiski) 検査と、文字頻度がどれだけ偏っているかを測る一致指数です。キーの長さが分かれば、各キー文字を復元するのは速いものです。この攻撃全体は、ヴィジュネル暗号を破ったことで有名なものとまさに同じです。したがってボーフォートのメッセージは、そのキーワードが長く、予測しにくく、一度しか使われない限りにおいてのみ強いのです。
ボーフォート暗号は安全ですか?
いいえ。現代の基準では、ボーフォート暗号は実質的な安全性をまったく提供しません。短いキーワードや繰り返されるキーワードは、上述のカシスキー法や一致指数法に素早く屈し、長いキーワードでさえ、コンピュータを持つ意志の固い解析者には抗えません。これは手作業の暗号と初期の暗号機の時代に属するものであり、その魅力は破られない強度ではなく、巧妙で使いやすい自己逆元の規則にありました。
今日、ボーフォート暗号は学習と娯楽のために重んじられています。多表式換字と、自己逆元の暗号という優美な発想を理解する優れた方法であり、パズルや脱出ゲーム、キャプチャー・ザ・フラッグの課題によく登場します。本物の情報を守るためには、代わりに AES のような現代的で十分に検証されたアルゴリズムに頼るべきです。
よくある質問
ボーフォート暗号とは何ですか?
ボーフォート暗号はどう動きますか?
ボーフォート暗号はヴィジュネル暗号と同じですか?
なぜボーフォート暗号は自己逆元なのですか?
ボーフォート暗号の例を見せてもらえますか?
ボーフォート暗号はどうやって復号しますか?
変種ボーフォート暗号とは何ですか?
どんなキーワードを使えばよいですか?
ボーフォート暗号はスペースや句読点を変えますか?
ボーフォート暗号はどうやって破りますか?
ボーフォート暗号は安全ですか?
入力したテキストはサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ