T

Text Machine

強力なテキストツールを、ブラウザで

ポルタ暗号

イタリアの学者ジョヴァン・バッティスタ・デッラ・ポルタ (Giovan Battista della Porta) が1563年に発表した、キーワードに基づく多表式暗号であるデッラ・ポルタ暗号を暗号化・復号しましょう。これは自己逆元です: 同じキーワードで暗号化も復号も行えるため、別個の復号モードはありません。キーワードを入力すると、13 個の対になったアルファベットがリアルタイムで働く様子を眺められます。すべての処理はブラウザ上で実行されます。

ポルタ暗号は自己逆元です: 同じキーワードで暗号化も復号も行えます。メッセージを復号するには、暗号文を貼り付けて同じキーワードを入力するだけで、結果は元の平文になります。別個の復号ボタンはありません。

キーワード

キーワード

キーワードは、送信者と受信者が共有する秘密です。メッセージ全体にわたって繰り返され、その各文字が 13 個の自己逆元アルファベットのうちの一つを選びます。アルファベットは対になっているため、A と B は同じものを選び、C と D は次のもの、というように続きます。使われるのは文字だけで、キーワード中のスペース・数字・句読点は無視されます。

テキスト
結果

上にテキストを入力すると、ポルタ暗号の結果がここに表示されます。

ポルタ暗号 の使い方

  1. 1

    キーワードを入力する

    CIPHER のような、共有された秘密のキーワードを入力します。使われるのはその文字だけで、スペース・数字・句読点は無視されます。同じキーワードが暗号化にも復号にも使われます。

  2. 2

    テキストを入力または貼り付ける

    変換したいメッセージを入力します: 暗号化する平文か、復号するポルタ暗号文です。入力すると同時に暗号が自動で実行され、1文字ずつの計算過程が下にリアルタイムで更新されます。

  3. 3

    自己逆元の結果を読む

    ポルタは自己逆元なので、同じキーワードが両方の向きに使えます。メッセージを復元するには、暗号文を貼り付け、暗号化に使われたのと同じキーワードを入力します。結果は元の平文です。

  4. 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 のような現代的で十分に検証されたアルゴリズムに頼るべきです。

よくある質問

ポルタ暗号とは何ですか?
ポルタ暗号、すなわちデッラ・ポルタ (Della Porta) 暗号は、イタリアの学者ジョヴァン・バッティスタ・デッラ・ポルタ (Giovan Battista della Porta) が1563年に発表した多表式換字暗号です。ヴィジュネル (Vigenère) 暗号のように繰り返されるキーワードで各文字をずらしますが、アルファベットの2つの半分を入れ替えるわずか 13 個の自己逆元アルファベットの表を使うため、自己逆元になります: 同じ操作が暗号化も復号も行います。
ポルタ暗号はどう動きますか?
アルファベットに A を 0 から Z を 25 まで番号を振り、メッセージ全体にキーワードを繰り返します。各キー文字は 13 個のアルファベットのうちの一つを選び、A または B が最初を、C または D が次を、というように対になっています。アルファベットの中では、前半の A–M が後半の N–Z と入れ替わります。変えられるのは文字だけで、スペース・数字・句読点は通り抜け、キーワードを進めません。
ポルタ暗号はヴィジュネル暗号と同じですか?
近い親戚ですが、同じではありません。ヴィジュネル (Vigenère) は平文にキーを足し、C = (P + K) mod 26 であり、復号には異なる操作を使います。ポルタは代わりにアルファベットを半分に分け、13 個の対になったアルファベットを使って両半分を入れ替えるため、自己逆元になり、一つの操作が両方の向きを行います。一方で暗号化したメッセージは、他方では正しく復号できません。
なぜポルタ暗号は自己逆元なのですか?
すべてのポルタのアルファベットは、文字の前半である A–M を後半である N–Z と対にするため、各文字はそのまま元に戻る相手に対応します。暗号化は文字を反対側の半分へ送り、その結果を同じ行に通すと元の場所へ送り返し、一方でキーの対によって設定される回転は打ち消されます。したがって暗号を2回適用するとメッセージが戻るため、一つの操作が暗号化も復号も行います。
ポルタ暗号の例を見せてもらえますか?
HELLO をキーワード KEY で暗号化すると ZTXQM になります。キー文字 K、E、Y、K、E がそれぞれの対になったアルファベットを選び、各メッセージ文字が H→Z、E→T、L→X、L→Q、O→M と入れ替わります。同じキーワード KEY と同じ手順で ZTXQM を復号すると、表がそれ自身の逆元であるため HELLO に戻ります。
ポルタ暗号はどうやって復号しますか?
暗号化に使われたのと同じキーワードを使い、暗号文をツールに貼り付けます。ポルタは自己逆元なので別個の復号モードはありません: キーワードと暗号文を入力すると、元の平文が直接得られます。キーワードが分からない場合は、暗号解読によってそれを復元しなければなりません。
なぜポルタ暗号にはアルファベットが 13 個しかないのですか?
ポルタは 26 のキー文字を 13 の対にまとめ、各対が一つのアルファベットを共有します: A または B が最初を、C または D が2番目を選び、というように Y または Z まで続きます。各アルファベットは文字の前半を後半と入れ替え、これが暗号を自己逆元にしているものです。その代償として、2つの異なるキー文字がまったく同じように振る舞いえ、これがキーワードの強度をわずかに下げます。
どんなキーワードを使えばよいですか?
どんな文字の語や語句でも使えます。長く、予測しにくいキーワードほど強くなります。暗号の安全性は、キーワードが長く、推測しにくく、二度と再利用されないことにかかっているからです。短いキーワードやありふれたキーワードは素早く破られます。キーワード中のスペース・数字・句読点は無視されるので、肝心なのはその文字だけです。
ポルタ暗号はスペースや句読点を変えますか?
いいえ。暗号化されるのは 26 文字だけです。スペース・数字・句読点はそのまま通り抜け、キーワードの文字を消費しないため、キーワードはそれが変換する文字と並んだままになります。出力では大文字・小文字が保たれるので、結果は元のテキストの形を保ちます。
ポルタ暗号はどうやって破りますか?
ポルタは繰り返しキーの暗号なので、攻撃はヴィジュネル (Vigenère) を破るものに似ています。まずカシスキー (Kasiski) 検査と一致指数を使ってキーの長さを見つけ、次に暗号文を一つのアルファベットを共有する列に分けます。キー文字が対になっているため、各列は 13 個のアルファベットしか取りえず、解析者は 13 通りすべてを試して言語として読めるものを選べます。
ポルタ暗号は安全ですか?
いいえ。現代の基準では実質的な安全性を提供しません: 繰り返されるキーワードは古典的な暗号解読に屈し、長いキーワードでさえコンピュータには抗えません。教育とパズルのための暗号、そして暗号史の一片として扱うのが最もよいでしょう。本物の保護のためには、代わりに AES のような現代的なアルゴリズムを使ってください。
入力したテキストはサーバーに送信されますか?
いいえ。すべての暗号化と復号はブラウザ内だけで実行されるため、あなたのテキストとキーワードがアップロード・記録・保存されることは決してありません。共有リンクでさえ、データを URL のハッシュ以降の部分に保持しますが、ブラウザはこの部分をサーバーに決して送信しないため、自分で共有を選ぶまで非公開のまま保たれます。

関連ツール

こちらの便利なツールもどうぞ

ボーフォート暗号

グロンスフェルト暗号

トリテミウス暗号

ヴィジュネル暗号

オートキー暗号

ランニングキー暗号