グロンスフェルト暗号
短い数字の列をキーとして使う、簡略化されたヴィジュネル暗号であるグロンスフェルト暗号を暗号化・復号しましょう。各桁がメッセージの対応する文字をずらし、キーはテキスト全体にわたって繰り返されます。暗号化と復号を切り替え、計算過程がリアルタイムで組み上がっていく様子を眺められます。すべての処理はブラウザ上で実行されます。
キーの数字
キーは 31415 のように 0 から 9 までの数字の列として入力します。各桁が、メッセージの対応する文字をどれだけずらすかを決め、キーはテキスト全体にわたって繰り返されます。使われるのは数字だけで、キーに入力された文字・スペース・句読点は無視されます。
上にテキストを入力すると、グロンスフェルト暗号の結果がここに表示されます。
グロンスフェルト暗号 の使い方
- 1
暗号化か復号かを選ぶ
平文をグロンスフェルト暗号文に変えるには暗号化を、暗号文から平文を復元するには復号を選びます。どちらの向きにも同じ数字キーが使われます。
- 2
数字キーを入力する
キーを 31415 のように 0 から 9 までの数字の列として入力します。各桁が、それと並ぶ文字のシフトを決め、キーはメッセージ全体にわたって繰り返されます。キー中の文字・スペース・句読点は無視されます。
- 3
テキストを入力または貼り付ける
変換したいメッセージを入力します。入力すると同時に暗号が自動で実行され、1文字ずつの計算過程が下にリアルタイムで更新されるので、各シフトを確認できます。
- 4
確認し、コピーし、共有する
結果を確認し、それをコピーしたり、テキストファイルとしてダウンロードしたり、あなたの正確なキー・向き・テキストとともにツールを開き直すリンクで共有したりできます。すべてはブラウザ内に留まります。
グロンスフェルト暗号を理解する
グロンスフェルト暗号とは何ですか?
グロンスフェルト暗号は、ヴィジュネル (Vigenère) 暗号とまったく同じように動作しますが、キーをキーワードではなく短い数字の列として取る多表式換字暗号です。0 から 9 までの各桁が、メッセージの対応する文字をどれだけずらすかを示し、それらの桁はテキスト全体にわたって繰り返されます。同じ平文の文字でも、その位置に応じていくつもの異なる暗号文の文字になりうるため、この暗号は単純なシーザー (Caesar) シフトを露呈させる素朴な文字頻度のパターンを隠します。
この暗号は、17世紀の外交官にして軍人であったグロンスフェルト伯ヨハン・フランツ (Johann Franz, Count of Gronsfeld) にちなんで名づけられ、学者ガスパール・ショット (Gaspar Schott) が秘密の書記法に関する1665年の著作で記述しました。その魅力は実用的なものでした: 数字キーは覚えやすく送りやすく、たとえば日付や覚えやすい数として、あらかじめ秘密の語を取り決めることなく扱えます。そのためグロンスフェルト暗号は、書簡のやり取りや、後の電信の時代に実際に使われました。
グロンスフェルト暗号の仕組み
アルファベットに A を 0 から Z を 25 まで番号を振ります。メッセージのすべての文字の下に1つずつ桁が並ぶよう、必要なだけ繰り返しながら数字キーをメッセージの下に書きます。暗号化するには、各キーの桁をその上の文字に足し、26 で割った余りでアルファベットを循環させます。そうすると暗号文の文字は C = (P + K) mod 26 になります。復号するには代わりに引き算をして、P = (C − K) mod 26 とします。これはシフトを打ち消し、元の文字を返します。
ずらされるのは26文字だけです。スペース・句読点・さらにはメッセージ自体に現れる数字までもがそのまま通り抜け、キーの桁を消費しないため、キーは肝心の文字と並んだままになります。大文字・小文字は保たれるので、大文字は大文字のまま、小文字は小文字のままです。どの桁も 0 から 9 までなので、各位置では10通りしかないシフトのうちの一つが使われます。これがグロンスフェルト暗号を特徴づける性質です。
実例で見る
メッセージ HELLO を数字キー 31415 で暗号化しましょう。キーを繰り返すと、文字 H、E、L、L、O の下に桁 3、1、4、1、5 が並びます。各文字をその桁だけ前へずらすと、H に 3 を足して K、E に 1 を足して F、L に 4 を足して P、L に 1 を足して M、O に 5 を足して T となります。暗号文は KFPMT です。
同じキー 31415 で KFPMT を復号するには、代わりに各桁を引きます。K から 3 を引いて H、F から 1 を引いて E、P から 4 を引いて L、M から 1 を引いて L、T から 5 を引いて O となり、再び HELLO と綴られます。暗号化と復号の手順は互いに鏡像なので、受信者に必要なのは同じ数字キーだけです。
グロンスフェルト 対 ヴィジュネル
グロンスフェルト暗号は、制限されたキーを持つヴィジュネル暗号として理解するのが最もよいでしょう。ヴィジュネルのキーワードは、アルファベット全体を使い、その各文字を 0 から 25 までのシフトに変えます。グロンスフェルトのキーは 0 から 9 までのシフトしか使わず、これはヴィジュネルのキーワードの文字 A から J までと同じです。ですからグロンスフェルトのキー 31415 は、ヴィジュネルのキーワード DBEBF とまったく同じように振る舞います。D はシフト 3、B はシフト 1、E はシフト 4、というふうにです。
この制限は一つの引き換えです。利点は便利さです: 数は語よりも覚えたり、口頭で伝えたり、持ち運んだりするのが簡単で、頭の中でアルファベットからシフトへの変換をする必要がありません。代償は強度です。各位置で、26通りありうるシフトのうち10通りしか使われないため、キー空間は同じ長さの完全なヴィジュネルキーよりはるかに小さく、それがグロンスフェルト暗号をより破りやすくしています。
なぜキーに数を使うのか?
数字キーこそがグロンスフェルト暗号の眼目です。人は、誕生日や番地、あるいは円周率のようなおなじみの定数の冒頭の数字など、すでに自分にとって何か意味のある数を覚えるのが得意です。2人の通信者はそのような数を素早く取り決め、見つかってしまうかもしれない秘密の語を書き留めることなく、記憶から再構成できます。
数はまた、きれいに伝わります。電信の時代には、数字でできたキーは語よりも誤りの可能性が少なく送信・記録でき、特別な暗号表も必要としませんでした。その実用性こそが、より強力な方法が存在するようになってからもずっと、グロンスフェルト暗号が日常の秘密の書記法として人気を保った理由であり、今日でもパズルや教育の場に登場し続ける理由です。
グロンスフェルト暗号を破る方法
グロンスフェルトは繰り返しキーの暗号なので、ヴィジュネルを破るのと同じ攻撃に、ただしより容易に屈します。最初の一歩はキーの長さを見つけることです。これの古典的な道具は、繰り返される文字の組の間の距離を測るカシスキー (Kasiski) 検査と、文字頻度がどれだけ偏っているかを検出する一致指数です。キーの長さが分かれば、暗号文はそれぞれ一つの桁でずらされた列に分かれます。
各列を解くところが、グロンスフェルトがヴィジュネルより弱い点です。各列は10通りしかありうる値のうちの一つでずらされていたので、攻撃者は単に10通りすべてを試し、その列が普通の言語のように読めるシフトを選べばよいのです。短いキーでは、桁ごとに10通りしか選択肢がないため、キー全体を総当たりで見つけることさえできます。したがってグロンスフェルトのメッセージは、そのキーが長く、予測しにくく、二度と再利用されない限りにおいてのみ安全です。
グロンスフェルト暗号は安全ですか?
いいえ。現代の基準では、グロンスフェルト暗号は実質的な安全性をまったく提供しません。その小さな1文字あたりのキー空間と繰り返されるキーは、紙と鉛筆の方法でも素早く破られ、コンピュータにとっては造作もありません。これは手作業の暗号の歴史に属するものであり、その価値は解析に対する真剣な抵抗ではなく、数字キーの便利さにありました。
今日、グロンスフェルト暗号は学習と娯楽のために楽しまれています。数字キーがどのように多表式のシフトを駆動するかを見る、明快で親しみやすい方法であり、パズルハント・脱出ゲーム・ジオキャッシング・キャプチャー・ザ・フラッグの課題に定期的に登場します。本物の情報を守るためには、代わりに AES のような現代的で十分に検証されたアルゴリズムに頼るべきです。
よくある質問
グロンスフェルト暗号とは何ですか?
グロンスフェルト暗号はどう動きますか?
グロンスフェルトはヴィジュネル暗号とどう違いますか?
グロンスフェルト暗号の例を見せてもらえますか?
どんなキーを使えばよいですか?
グロンスフェルト暗号はどうやって復号しますか?
なぜキーは文字ではなく数を使うのですか?
この暗号はスペース・数字・句読点を変えますか?
キーの桁に 0 は使えますか?
グロンスフェルト暗号はどうやって破りますか?
グロンスフェルト暗号は安全ですか?
入力したテキストはサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ