ヴィジュネル暗号
好きなキーワードを使ってヴィジュネル暗号を暗号化・復号できます。古典的なヴィジュネル・自動鍵・ボーフォートの各変種を切り替え、インタラクティブなタブラ・レクタをたどりながら、結果をコピー・ダウンロード・リンク共有できます。すべての処理はブラウザ上で実行されます。
古典ヴィジュネル: キーワードがメッセージ全体にわたって繰り返され、各文字に異なるシフトを加えます。
上にテキストを入力すると、結果がここに表示されます。
タブラ・レクタ (ヴィジュネル方陣)
左の列で鍵の文字を見つけ、上の行で平文の文字を見つけると、その二つが交わるマスが暗号文の文字です。キーワードに含まれる文字の行が強調されます。
ヴィジュネル暗号 の使い方
- 1
暗号化か復号を選ぶ
平文を暗号文に変えるには暗号化を、同じキーワードで暗号文を平文に戻すには復号を選びます。
- 2
暗号の変種を選ぶ
古典的なヴィジュネル、鍵が決して繰り返されないより強力な自動鍵、または可逆のボーフォートの変種から選びます。キーワードの下の短いヒントがそれぞれを説明します。
- 3
キーワードを入力する
LEMONのようなキーワードを入力します。キーワードのうちAからZまでのアルファベットだけが使われ、メッセージに合わせて自動で繰り返されたり延長されたりします。
- 4
テキストを入力または貼り付ける
メッセージを入力すると、入力すると同時に暗号が適用されます。アルファベットは暗号化され、スペースや数字、記号は変換されずに通過します。
- 5
コピー・ダウンロード・共有する
結果をコピーしたり、テキストファイルとしてダウンロードしたり、入力したキーワード・テキスト・設定をそのまま再現するリンクで共有したりできます。
ヴィジュネル暗号を理解する
ヴィジュネル暗号とは何ですか?
ヴィジュネル暗号は、キーワードを使ってテキストを暗号化する多表式換字暗号です。シーザー暗号のようにすべての文字を同じ固定量だけずらすのではなく、キーワードの各文字を使ってメッセージの各文字に異なるシフトを適用し、キーワードを何度も循環させます。同じ平文の文字が位置によっていくつもの異なる暗号文の文字になりうるため、この暗号は単純な暗号をたやすく破らせてしまう一文字ごとの頻度のパターンを隠します。
およそ三世紀のあいだ、この暗号は破れないものと考えられ、フランス語で le chiffre indéchiffrable、すなわち解読不能な暗号という呼び名を得ました。今日ではパズルや脱出ゲーム、CTFのチャレンジで好んで使われ、鍵が暗号をどのように強くするかを示す古典的な題材として残っています。
ヴィジュネル暗号化の仕組み
まずLEMONのようなキーワードを選びます。キーワードをメッセージの上に繰り返し並べ、平文のすべての文字が鍵の一文字と対になるようにします。各鍵の文字はシフトを表します。Aは0、Bは1、Cは2を意味し、このようにZまで進むと25のシフトになります。暗号化するには各平文の文字にその鍵の文字を足してアルファベットを回り込ませ、復号するには代わりに引きます。
AからZまでのアルファベットだけが暗号化され、それぞれ大文字か小文字の形を保ちます。スペースや数字、記号は変換されずに通過し、鍵の文字を消費しないため、鍵は常にメッセージの実際の文字と揃ったままになります。
実例: キーワード LEMON
フレーズ ATTACK AT DAWN とキーワード LEMON を例にとりましょう。繰り返したキーワードを文字に揃えて並べると LEMONLEMONLE になります。各平文の文字にその鍵の文字を足すと、A plus L is L、T plus E is X、T plus M is F、このように進めて暗号文 LXFOPVEFRNHR が生まれます。ATTACKの二つのTは異なる鍵の文字の下に置かれるため、それぞれXとFという別の暗号文の文字になることに注目してください。これこそが単純な頻度分析を打ち破るものです。
復号するには、同じキーワードで手順を逆にたどって各鍵の文字を引くか、タブラ・レクタを逆に読みます。キーワードがなければ、暗号文はほとんど何も明かしません。
ヴィジュネルの計算式とタブラ・レクタ
文字をAを0、Zを25として0から25まで番号付けすると、暗号化は C = (P + K) mod 26、復号は P = (C - K) mod 26 です。ここでPは平文の文字、Kは現在の鍵の文字であり、mod 26 がアルファベットを回り込ませます。同じ演算は、ずらしたアルファベットを集めた26かける26の格子であるタブラ・レクタを使って手作業でも行えます。左で鍵の文字を見つけ、上で平文の文字を見つけると、その行と列が交わるマスが暗号文の文字です。
自動鍵とボーフォートの変種
自動鍵の変種は、標準の暗号の最大の弱点である繰り返す鍵を補います。キーワードが尽きると鍵は平文そのもので続くため、流れる鍵が決して繰り返されず、暗号を攻撃するのがはるかに難しくなります。復号は平文を一文字ずつ復元し、それを鍵の流れに戻し入れていきます。
ボーフォートの変種は C = (K - P) mod 26 の式を使います。鍵から引く操作はそれ自身が逆になるため、同じ操作で暗号化と復号の両方ができ、この点が、かつて海上で使われた暗号円盤に都合がよかったのです。このツールは三つすべてに対応しているので、同じテキストとキーワードで比べられます。
ヴィジュネル暗号を破る方法
この暗号は二段階で破られます。まずキーワードの長さを見つけます。古典的には、暗号文の中で繰り返される文字のかたまりを探してその間隔を測るカシスキー検査を使うか、一致指数を用いるフリードマン検定を使います。鍵の長さがわかると、暗号文はその数だけの列に分かれ、各列は単一のシーザーシフトで暗号化されているため、通常の頻度分析が各列を別々に破ります。
つまり、長いメッセージに短い鍵を使ったヴィジュネル暗号はかなり破りやすいということであり、だからこそこの暗号の強さは、長く繰り返さない鍵を使うことに大きく依存します。自動鍵やワンタイムパッドという発想は、まさにその繰り返しを取り除こうとする試みから直接育ちました。
ヴィジュネル暗号の短い歴史
キーワードを使ってアルファベットを切り替えるという発想は、1553年にジョヴァン・バッティスタ・ベラーゾが初めて発表したもので、ヨハネス・トリテミウスとレオン・バッティスタ・アルベルティの多表式の表に基づいていました。この方法はのちにフランスの外交官ブレーズ・ド・ヴィジュネルの功績と誤って帰され、彼自身の著作はより強力な自動鍵の方式を記していたにもかかわらず、その名が定着してしまいました。繰り返し鍵の暗号は何世紀も暗号解読者を退けてきましたが、1850年代にチャールズ・バベッジが非公開で破り、1863年にフリードリヒ・カシスキーが一般的な方法を発表したことで崩れました。
ヴィジュネル暗号は安全ですか?
現代の基準では安全ではありません。カシスキーとフリードマンの方法が発表されてからは、繰り返し鍵を使うどのヴィジュネル暗号も、根気さえあれば破れ、今日ではコンピューターで一瞬で破れます。その本当の価値は、いまや教育的かつ娯楽的なものです。鍵がいかにして取るに足らない暗号をはるかに強い暗号に変えるかを最も明快に示す方法であり、パズルやプログラミング演習の定番であり続けています。本当の安全性のためには、代わりにAESのような現代のアルゴリズムが使われます。
よくある質問
ヴィジュネル暗号とは何ですか?
ヴィジュネル暗号はシーザー暗号とどう違いますか?
キーワードとは何で、どう使われますか?
答え付きのヴィジュネルの例を見せてもらえますか?
タブラ・レクタ、すなわちヴィジュネル方陣とは何ですか?
自動鍵とボーフォートの変種とは何ですか?
ヴィジュネル暗号はどうやって破る、または解くのですか?
ヴィジュネル暗号はなぜ解読不能と呼ばれたのですか?
ヴィジュネル暗号は誰が発明したのですか?
数字やスペース、記号も変換されますか?
ヴィジュネル暗号は安全ですか?
入力したテキストはサーバーに送信されますか?
ヴィジュネル暗号はコードでどう書きますか?
関連ツール
こちらの便利なツールもどうぞ