ヴィジュネル暗号エンコーダー・デコーダー(キーワード式暗号)

キーワードを使ってシフト量を文字ごとに変化させるヴィジュネル暗号のエンコード・デコードをブラウザ内で完結して行うツールです。同じキーワードで暗号化と復号ができ、変換過程を1文字ずつ確認できます。処理はすべてブラウザ内で行われ、入力内容が外部へ送信されることはありません。

ヴィジュネル暗号とは

ヴィジュネル暗号(Vigenère Cipher、多表式換字暗号)は、キーワードの各文字を使って平文の文字ごとに異なるシフト量を適用する暗号方式です。シーザー暗号のように文字列全体を同じ量だけずらすのではなく、キーワードを平文の長さに合わせて繰り返し並べ、対応する位置のキーワード文字が表す数値(A=0、B=1……)だけシフトさせます。このツールは平文とキーワードから暗号文を作る「暗号化」と、暗号文とキーワードから平文へ戻す「復号」の両方に対応しており、変換の過程を1文字ずつ確認できます。

同じキーワードを使う限り、暗号化と復号は入力と出力を入れ替えただけの対称的な操作になります。ブラウザ内の計算だけで完結するため、入力した平文・暗号文・キーワードが外部のサーバーへ送信されることはありません。学習用途で仕組みを確かめたい場合にも、実際の暗号通信を模した検証にも使えます。

ヴィジュネル暗号エンコーダー・デコーダーの使い方

  1. モードを選ぶ 平文を暗号文に変えたいなら「暗号化」、暗号文を平文に戻したいなら「復号」を選びます。
  2. 入力欄にテキストを入れる 暗号化なら平文、復号なら暗号文を入力欄に入力します。英字以外の文字はそのまま出力されます。
  3. キーワードを入力する 英字のみのキーワードを指定します。暗号化・復号のいずれも同じキーワードを使う必要があります。
  4. 実行して結果を確認する 「実行する」を押すと結果欄に変換後の文字列が表示され、内訳表で1文字ごとのシフトを確認できます。
  5. 逆方向を試す 「結果を入力に反映」を使うと、暗号化した結果をそのまま復号モードに移して往復を確認できます。

使いこなすためのヒント

  • ヴィジュネル暗号はかつて「解読不能な暗号」(le chiffre indéchiffrable)と呼ばれ、約300年間実用的な解読法が見つかりませんでした。
  • キーワードを繰り返し使うため、キーワードが短いほど同じシフトパターンが早く繰り返され、解読の手がかりが増えます。長いキーワードほど安全性が高まります。
  • 空白・記号・数字はキーワードの文字を消費せずそのまま出力されます。改行やスペースの入れ方を変えても暗号化の規則性は変わりません。
  • 暗号化と復号は同じキーワードを使う対称的な操作です。「結果を入力に反映」ボタンを使えば、暗号化した結果をそのまま復号モードで試せます。
  • 大文字・小文字は元の入力の見た目のまま出力されます(内部のシフト計算はアルファベット上の位置で行われます)。

ヴィジュネル暗号の活用シーン

暗号理論の学習・演習

情報セキュリティや暗号理論の授業・独学で、多表式換字暗号の仕組みを実際の文字列で手を動かして確かめられます。

カジスキー試験の練習素材づくり

自分でキーワードと平文を指定して暗号文を作り、その暗号文から周期を推定する解読演習の題材として使えます。

謎解き・ゲームの暗号文作成

脱出ゲームやパズル制作で、シーザー暗号より解読の難易度を上げたヒント文を短時間で作成できます。

歴史的暗号方式の再現

南北戦争や第一次世界大戦で実際に使われたとされる方式を、当時と同じ手順で再現して確かめられます。

ヴィジュネル暗号にまつわる用語

キーワード式暗号
固定の鍵語(キーワード)を繰り返し使って、文字ごとのシフト量を決める暗号方式の総称です。鍵語が長く不規則であるほど解読が難しくなります。
多表式換字暗号
1つの平文アルファベットに対して複数の換字表を使い分ける暗号方式です。ヴィジュネル暗号ではキーワードの文字数と同じ数のシーザー暗号を切り替えて使っていることに相当します。
タブロー(ヴィジュネル方陣)
26×26のマス目に全てのシフトパターンを並べた表で、手作業で暗号化・復号する際に使われました。行がキーワード文字、列が平文文字に対応します。
既知平文攻撃
暗号文の一部に対応する平文をあらかじめ知っている前提で鍵を推定する解読手法です。挨拶文など定型的な書き出しが手がかりになりやすいとされています。
暗号強度
暗号が解読されにくい度合いを指します。ヴィジュネル暗号の強度はキーワードの長さと不規則さに依存し、キーワードが短く繰り返されるほど周期性が現れて弱くなります。
ワンタイムパッド
平文と同じ長さの使い捨ての鍵を使う暗号方式です。ヴィジュネル暗号のキーワードを平文と同じ長さのランダムな使い捨て鍵に置き換えると、理論上解読不可能になります。

よくある質問

1863年にプロイセンの陸軍将校フリードリヒ・カジスキーが、暗号文中に現れる繰り返しパターンの間隔からキーワードの長さを推定する「カジスキー試験」を発表し、これにより組織的な解読が可能になりました。平文の一部が分かっている場合は既知平文攻撃でも解読できます。

シーザー暗号は文字列全体に固定のシフト量を1つだけ適用しますが、ヴィジュネル暗号はキーワードの各文字が表す数値を使い、文字ごとに異なるシフト量を繰り返し適用します。そのため単純な頻度分析だけでは解読できません。

長らくフランスの外交官ブレーズ・ド・ヴィジュネルの発明とされてきましたが、実際には16世紀のイタリアの暗号学者ジョヴァン・バティスタ・ベラーゾがより早くほぼ同じ方式を発表していたことが分かっています。

暗号文中に同じ文字列が繰り返し現れる箇所を探し、その間隔(文字数)の最大公約数からキーワードの長さを推定する手法です。長さが分かれば、あとは各位置ごとに頻度分析を行うことで単純なシーザー暗号の集まりとして解読できます。

意味のある単語である必要はなく、英字であればどのような文字列でも指定できます。ただし実際の運用では覚えやすさのために単語が使われることが多く、それが逆にカジスキー試験などの解読の手がかりになることもありました。
ツールくん

余談ですが ― 「解読不能な暗号」を破ったカジスキー試験

ヴィジュネル暗号は、16世紀フランスの外交官ブレーズ・ド・ヴィジュネルの名を冠していますが、実際の考案者は別人だとされています。1553年にイタリアの暗号学者ジョヴァン・バティスタ・ベラーゾが、キーワードを使って文字ごとにシフト量を変える同種の方式をすでに発表しており、ヴィジュネル自身は19世紀になってから彼の著作を通じて広く知られるようになった別の暗号を考案したにすぎません。歴史上、業績の帰属が誤って伝わった典型例とされています。

シーザー暗号が固定の1つのシフト量、エニグマ暗号機が機械的なローターの回転で毎回シフト量を変えるのに対し、ヴィジュネル暗号はキーワードという「覚えやすい鍵」を繰り返し使うことで文字ごとに異なるシフト量を実現しました。単一のシフト量で暗号化するシーザー暗号は文字の出現頻度分析だけで容易に解読できますが、ヴィジュネル暗号は見かけ上その頻度分布を平坦化するため、19世紀半ばまで「解読不能な暗号(le chiffre indéchiffrable)」と呼ばれ、実務でも広く使われ続けました。

この評判に終止符を打ったのが、1863年にプロイセンの陸軍将校フリードリヒ・カジスキーが発表した「カジスキー試験」です。暗号文中に同じ文字列が繰り返し出現する間隔を調べることでキーワードの長さを推定し、長ささえ分かれば各位置ごとに単純な頻度分析(シーザー暗号の解読と同じ手法)を適用できることを示しました。これにより約300年間実用的だった暗号が体系的に破られる方法が確立され、暗号解読の歴史における重要な転換点になりました。

もっとも、キーワードが平文と同じ長さでかつ使い捨てであれば、ヴィジュネル暗号は理論的に解読不可能な「ワンタイムパッド」と等価になります。実際の運用でキーワードが短く繰り返し使われたことが弱点となった点は、鍵管理の重要性を示す歴史的な教訓として現代の暗号設計にも引き継がれています。