ポルタ暗号
イタリアの学者ジョヴァン・バッティスタ・デッラ・ポルタ (Giovan Battista della Porta) が1563年に発表した、キーワードに基づく多表式暗号であるデッラ・ポルタ暗号を暗号化・復号しましょう。これは自己逆元です: 同じキーワードで暗号化も復号も行えるため、別個の復号モードはありません。キーワードを入力すると、13 個の対になったアルファベットがリアルタイムで働く様子を眺められます。すべての処理はブラウザ上で実行されます。
ポルタ暗号は自己逆元です: 同じキーワードで暗号化も復号も行えます。メッセージを復号するには、暗号文を貼り付けて同じキーワードを入力するだけで、結果は元の平文になります。別個の復号ボタンはありません。
キーワード
キーワードは、送信者と受信者が共有する秘密です。メッセージ全体にわたって繰り返され、その各文字が 13 個の自己逆元アルファベットのうちの一つを選びます。アルファベットは対になっているため、A と B は同じものを選び、C と D は次のもの、というように続きます。使われるのは文字だけで、キーワード中のスペース・数字・句読点は無視されます。
上にテキストを入力すると、ポルタ暗号の結果がここに表示されます。
ポルタ暗号 の使い方
- 1
キーワードを入力する
CIPHER のような、共有された秘密のキーワードを入力します。使われるのはその文字だけで、スペース・数字・句読点は無視されます。同じキーワードが暗号化にも復号にも使われます。
- 2
テキストを入力または貼り付ける
変換したいメッセージを入力します: 暗号化する平文か、復号するポルタ暗号文です。入力すると同時に暗号が自動で実行され、1文字ずつの計算過程が下にリアルタイムで更新されます。
- 3
自己逆元の結果を読む
ポルタは自己逆元なので、同じキーワードが両方の向きに使えます。メッセージを復元するには、暗号文を貼り付け、暗号化に使われたのと同じキーワードを入力します。結果は元の平文です。
- 4
確認し、コピーし、共有する
計算過程を開いて、どのキーの対とアルファベットが各文字を暗号化したかを確認し、結果をコピーしたり、テキストファイルとしてダウンロードしたり、あなたの正確なキーワードとテキストとともにツールを開き直すリンクで共有したりできます。
ポルタ暗号を理解する
ポルタ暗号とは何ですか?
ポルタ暗号は、より正確にはデッラ・ポルタ (Della Porta) 暗号と呼ばれ、イタリアの博学者ジョヴァン・バッティスタ・デッラ・ポルタ (Giovan Battista della Porta) が1563年の著書 De Furtivis Literarum Notis で記述した多表式換字暗号です。ヴィジュネル (Vigenère) 暗号のように繰り返されるキーワードを使うため、同じ平文の文字でも、その位置に応じてさまざまに異なる暗号文の文字に暗号化されえ、これが単純な換字を露呈させる文字頻度のパターンを平らにします。これは最も初期の実用的な多表式システムの一つであり、何世紀にもわたって、ほどよく強力でありながら手作業で使いやすいことの両方で称賛されてきました。
ポルタを際立たせているのは、完全なヴィジュネル (Vigenère) 方陣の 26 のずらした行ではなく、わずか 13 個の自己逆元アルファベットからなるその表です。各アルファベットは、アルファベットの前半が常に後半と入れ替わるように作られており、これが暗号に最も有用な性質を与えます: それは自己逆元である、すなわちまったく同じ操作が暗号化も復号も行うということです。デッラ・ポルタ (Della Porta) は近代暗号学の創始者の一人としてしばしば記憶されており、この巧妙な自己逆元の表こそ、彼の名前に最も結びつけられる発想です。
ポルタ暗号の仕組み
アルファベットに A を 0 から Z を 25 まで番号を振ります。キーワードは、メッセージのすべての文字の下に1つずつキー文字が並ぶよう、必要なだけ繰り返されます。各キー文字は 13 行のうちの一つを選び、行は対になっています: A または B が最初の行を、C または D が2番目を、E または F が3番目を選び、というように Y または Z まで続き、それが13番目を選びます。その対の番号を r と呼び、これは A または B の 0 から Y または Z の 12 まで動きますが、アルファベットの前半 (A–M、値 0–12) にある平文の文字は C = 13 + ((P + r) mod 13) で暗号化され、後半 N–Z のどこかに着地します。後半の文字は C = (P − 13 − r) mod 13 で前半に戻されます。
紙の上では、これは 13 行の格子であるポルタ表を使って行います。文字を暗号化するには、今のキー文字に対応する行を見つけ、その行で平文の文字の位置を探し、その相手を読み取ります。変換されるのは文字だけで、スペース・数字・句読点はそのまま通り抜け、キー文字を消費しないため、キーワードは肝心の文字と並んだままになります。ツールの下にあるリアルタイムの計算過程は、どのキーの対がそのアルファベットを選んだかも含め、あなたのメッセージの各文字についてまさにこれを示しています。
実例で見る
メッセージ HELLO をキーワード KEY で暗号化しましょう。キーワードを繰り返すと、H、E、L、L、O の下に K、E、Y、K、E というキー文字が並びます。キー文字 K は K または L の対に属するため、その行を選び、その中で H は Z に暗号化されます。キー文字 E は E または F の対に属し、その行で E は T に暗号化されます。Y または Z の対のキー文字 Y は、L を X に変えます。再び K が次の L を Q に変え、E が O を M に変えます。暗号文は ZTXQM です。
では、同じキーワード KEY と同じ手順で ZTXQM を復号します。K または L の行では Z が H に戻り、E または F の行では T が E に戻り、Y または Z の行では X が L に戻り、K が Q を L に戻し、E が M を O に戻します。結果は再び HELLO です。まったく同じ操作がメッセージを復元しました。これこそがポルタ暗号の眼目です。
なぜポルタはそれ自身の逆元なのか
自己逆元の性質は、あらゆる行の形に組み込まれています。各アルファベットは、文字の前半である A–M を後半である N–Z と対にするため、どの A–M の文字がある N–Z の文字に対応しても、その N–Z の文字はそのまま元に戻ります。暗号化は前半の文字を後半へ送り、その結果を同じ行にもう一度通すと再び元の場所へ送り返します。キーの対によって設定される回転もまったく同じ理由で打ち消され、2回暗号化すると出発点に戻ります。
これは実に便利です。ヴィジュネル (Vigenère) では、暗号化するときは足し、復号するときは引かねばならず、2つの向きで異なる手順を使います。ポルタでは覚えるべき手順は一つだけで、一つの表や一つのツールが両方の向きに使えます。だからこのツールには別個の復号ボタンがありません: 同じキーワードを入力し、変換したいテキストを貼り付けるだけです。
ポルタ、ヴィジュネル、そしてボーフォート
関連するキーワード暗号を並べてみると分かりやすいでしょう。ヴィジュネル (Vigenère) 暗号は平文にキーを足し、C = (P + K) mod 26 であり、復号には逆の引き算が必要です。ボーフォート (Beaufort) 暗号はキーから平文を引き、C = (K − P) mod 26 であり、自己逆元です。ポルタ暗号は別のやり方で自己逆元性に到達します: アルファベット全体をずらすのではなく、それを半分に分けて両半分を入れ替え、文字の対で鍵を与えられるわずか 13 個の対になったアルファベットを使います。これらすべてが繰り返されるキーワードと印刷された表を共有しており、だからこそ混同しやすいのです。
幾何が異なるため、これらの暗号の一つで暗号化したメッセージは、別の暗号では意味不明に見えます。このツールは古典的な自己逆元のデッラ・ポルタ (Della Porta) 表を実装しています。足し算の規則が必要な場合は、Text Machine のヴィジュネルツールがヴィジュネルとその関連モードを扱い、ボーフォートツールがもう一つの自己逆元キーワード暗号を扱います。
ポルタ暗号を破る方法
ポルタは、あらゆる繰り返しキーの多表式暗号の強みと弱みを受け継いでいます。その防御は、一つの平文の文字がいくつもの異なる暗号文の文字に対応することにあり、これが単純な換字を露呈させる明白な文字頻度の山を平らにします。その弱みは、キーが繰り返されることです。解析者がいったんキーワードの長さを推測すると、暗号文はそれぞれ単一の固定されたアルファベットで暗号化された別々の列に分かれ、各列は頻度分析に屈する単純な自己逆元換字になります。
キーの長さを見つける古典的な方法は、繰り返される文字の組を探してその間の距離を測るカシスキー (Kasiski) 検査と、文字頻度がどれだけ偏っているかを測る一致指数です。ポルタはある意味でヴィジュネル (Vigenère) よりも弱いのです: キー文字が対になっているため、各列は 26 ではなくわずか 13 個のアルファベットしか取りえず、キーの長さが分かれば、解析者は各列について 13 通りすべてを単に試せばよいのです。したがってポルタのメッセージは、そのキーワードが長く、予測しにくく、一度しか使われない限りにおいてのみ強いのです。
ポルタ暗号は安全ですか?
いいえ。現代の基準では、ポルタ暗号は実質的な安全性をまったく提供しません。短いキーワードや繰り返されるキーワードは、上述のカシスキー (Kasiski) 法や一致指数法に素早く屈し、長いキーワードでさえ、コンピュータを持つ意志の固い解析者には抗えません。これは手作業の暗号の時代に属するものであり、その魅力は破られない強度ではなく、巧妙で使いやすい自己逆元の表にありました。
今日、ポルタ暗号は学習と娯楽のために重んじられています。多表式換字と、自己逆元の暗号という優美な発想を理解する優れた方法であり、パズルや脱出ゲーム、キャプチャー・ザ・フラッグの課題によく登場します。本物の情報を守るためには、代わりに AES のような現代的で十分に検証されたアルゴリズムに頼るべきです。
よくある質問
ポルタ暗号とは何ですか?
ポルタ暗号はどう動きますか?
ポルタ暗号はヴィジュネル暗号と同じですか?
なぜポルタ暗号は自己逆元なのですか?
ポルタ暗号の例を見せてもらえますか?
ポルタ暗号はどうやって復号しますか?
なぜポルタ暗号にはアルファベットが 13 個しかないのですか?
どんなキーワードを使えばよいですか?
ポルタ暗号はスペースや句読点を変えますか?
ポルタ暗号はどうやって破りますか?
ポルタ暗号は安全ですか?
入力したテキストはサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ