T

Text Machine

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

ポルックス暗号

ポルックス暗号をエンコード・デコードします。まずメッセージを、文字の間を1つのx、単語の間を2つのxで区切ってモールス符号で書き表し、続いてすべてのドット・ダッシュ・区切り記号を、あなたが割り当てた0から9までの数字のいずれかに置き換えます。複数の数字が同じ記号を表せるため、同じ文字でも書き表され方が毎回異なります。文字からモールス符号、そして数字への変換過程をリアルタイムで確認しながら、結果をコピー・ダウンロード・共有できます。すべての処理はブラウザ内で実行されます。

鍵によって、各数字0〜9が何を表すかが決まります。0から9まで順に各数字に1つずつ、ドット(.)、ダッシュ(-)、または区切り記号のxを使って、10個の記号を入力します。すべての記号に数字が割り当てられるよう、鍵には3種類それぞれを少なくとも1つ含める必要があります。例のx...x--xxxでは、0, 4, 7, 8 and 9が区切り記号、1, 2 and 3がドット、5 and 6がダッシュになります。使用できない入力はこの既定値に戻り、送信側と受信側は同じ鍵を使う必要があります。

平文
暗号の数字

上にテキストを入力すると、ここに結果が表示されます。

鍵表(記号 → 数字)

記号

数字

ドット

1
2
3

ダッシュ

5
6

×

区切り記号(x)

0
4
7
8
9

ポルックス暗号 の使い方

  1. 1

    エンコードかデコードかを選ぶ

    平文をポルックス暗号の数字に変換するにはエンコードを、暗号の数字を平文に戻すにはデコードを選びます。

  2. 2

    鍵を設定する

    0から9まで各数字に1つずつ、ドット、ダッシュ、または区切り記号のxを使って、10個の記号を入力します。すべての記号に数字が割り当てられるよう3種類すべてを必ず登場させ、送信側と受信側は同じ鍵を使ってください。

  3. 3

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

    メッセージを入力すると、入力に合わせて変換されます。エンコード時には、手順パネルが各文字とそのモールス符号を上下に並べて示し、続いて並び全体を1記号ずつ並べ、それぞれの下に数字を表示します。

  4. 4

    鍵表を確認する

    鍵表を開くと、現在の鍵のもとでどの数字がドット、ダッシュ、区切り記号を表すかを確認できます。

  5. 5

    コピー・ダウンロード・共有する

    結果をコピーしたり、テキストファイルとしてダウンロードしたり、あなたのテキストと鍵がそのまま入力された状態でツールを再び開くリンクを共有したりできます。

ポルックス暗号を理解する

ポルックス暗号とは?

ポルックス暗号は、無害に見える0から9までの数字の並びの中にメッセージを隠します。その仕組みは、まずテキストをモールス符号に変換し、そのモールス符号を覆い隠すというものです。すべてのドット、すべてのダッシュ、そしてすべての区切り記号が、数字に置き換えられます。完成したメッセージは数字以外の何ものでもないため、その下にモールス符号が隠れていることを示す明らかな手がかりがありません。これこそが、パズルハント、脱出ゲーム、capture-the-flag(CTF)やScience Olympiad CodeBustersの課題で人気を集める理由です。

ポルックスは、Fractionated MorseやMorbitと同じく、モールス符号をベースにした紙と鉛筆の暗号の小さな仲間に属しており、これらはいずれもAmerican Cryptogram Association(米国暗号協会)によって体系化され、今日まで受け継がれてきました。ポルックスを際立たせているのは、記号よりも多くの数字を巧みに使う点です。モールス記号は3種類しかないのに対して数字は10個あるため、各記号には複数の数字が隠れ蓑として与えられます。その1つの発想がこの暗号の仕掛けのすべてであり、解読者が頼りにしようとする文字の出現頻度を平坦にするのです。

3つの記号、10個の数字

メッセージがモールス符号で書き表されると、使われる記号はドット、ダッシュ、そしてここではxと書かれる区切り記号の3つだけです。文字の間には1つのx、単語の間には2つのxxを置きます。これを暗号化するには、0から9までのどの数字をドットに、どれをダッシュに、どれを区切り記号に対応させるかを決めます。決まった規則はありません。唯一の条件は、3つの記号それぞれに少なくとも1つの数字が割り当てられることで、こうすればどの記号も数字を持たないまま残らず、デコードが可能なままになります。

10個の数字を3つの記号で分け合うため、ほとんどの記号には2つ、3つ、あるいはそれ以上の数字が選べるようになります。並びの中でドットに行き当たったときは、ドットに割り当てられた数字のどれを書いてもかまいません。この自由度こそがポルックスの核心です。1つのドットである文字Eは、ある場所では1、別の場所では3になるかもしれず、そのため各数字がどれだけ頻繁に現れるかを数える攻撃者は、どの文字がよく使われるかをほとんど知ることができません。

数字の選び方

1つの記号が複数の数字に対応できるため、暗号化する人は毎回どれか1つを選ばなければなりません。伝統的にはその選択はランダムに行われ、まったく同じメッセージを2回暗号化すると、2通りの異なる数字の並びが生まれます。これは解析をさらに妨げる有用な性質です。

しかしオンラインツールは再現可能でなければなりません。同じテキストを同じ鍵で入力すれば常に同じ結果が得られるべきであり、共有リンクは見たとおりのものを正確に再現する必要があります。このツールは、各記号の数字を順番に巡回させることで、ランダム性なしに多様性を保ちます。ドットに1, 2, 3が割り当てられている場合、最初のドットは1に、次は2に、その次は3に、そしてまた1に戻る、という具合です。出力は依然として利用可能なすべての数字に散らばりますが、再現可能になっています。そしてデコードは、どの数字が選ばれたかに依存することは決してありません。すべての数字がちょうど1つの記号に対応して戻るからです。

ポルックス暗号の仕組み

エンコードは2つの動作で進みます。まず、メッセージ全体をモールス符号で書き、文字の間に1つのx、単語の間に2つのxを置きます。次に、そのドット・ダッシュ・xの並びを1記号ずつたどり、各記号を、それに割り当てた数字のいずれかに置き換えます。気にすべき補填もグループ分けもありません。すべての記号が単に1つの数字になるだけなので、20記号の並びはちょうど20桁の数字になります。

上の手順パネルがこれをリアルタイムで示します。上段では各文字とそのモールス符号を対にして並べ、下段では並び全体を1記号ずつ並べ、それぞれの下にその記号がなった数字を表示します。繰り返し現れる文字を見れば、それが異なる数字を取るのがわかり、ポルックスがどのように数字を散らすかが目に見えて確かめられます。その下の鍵表は、現在の鍵について、どの数字がドット、ダッシュ、区切り記号に属するかを正確に示します。

具体例

鍵x...x--xxxを使って、救難信号SOSを取り上げてみましょう。この鍵では、1, 2 and 3がドット、5 and 6がダッシュ、そして0, 4, 7, 8 and 9が区切り記号になります。モールス符号では、SOSはSがドット・ドット・ドット、Oがダッシュ・ダッシュ・ダッシュ、そして再びSがドット・ドット・ドットであり、これらが1つの区切り記号でつながれて、ドット ドット ドット x ダッシュ ダッシュ ダッシュ x ドット ドット ドットという11記号の並びになります。

次に、各記号をその数字で巡回させながら置き換えます。最初の3つのドットは1, 2, 3を取り、最初の区切り記号は0を取り、3つのダッシュは5, 6, 5を取り(ダッシュには2つの数字しかないため巡回して戻ります)、次の区切り記号は4を取り、最後の3つのドットは再び1, 2, 3を取ります。その結果は12305654123となります。デコードはこの過程を逆にたどります。各数字がその記号になり、1, 2, 3はドット、0と4は区切り記号、5と6はダッシュとなって、ドット ドット ドット x ダッシュ ダッシュ ダッシュ x ドット ドット ドットを再構築し、これをモールス符号の表を通して読み戻すとSOSになります。

ポルックスメッセージのデコード

デコードは見事なまでに単純です。あいまいさがなく、各数字がちょうど1つの記号を表すからです。すべての数字を鍵で照合して、数字の並びをドット・ダッシュ・区切り記号に戻し、それらを1つの長い並びにつなぎ、続いてその並びを区切り記号で分割します。1つのxは文字の終わりを、2つのxxは単語の終わりを表します。そしてドットとダッシュの各まとまりをモールス符号の表を通して読み戻すことで、テキストを復元します。

正しくデコードするには、エンコードに使われたのと同じ鍵を使う必要があります。鍵が異なると、数字が誤った記号に対応してしまい、モールス符号は意味をなさないものになります。モールス符号を持つのは文字と数字だけなので、元のメッセージにあった句読点やその他の記号はエンコード時に取り除かれ、復元されません。また、it's のような短縮形は単一の単語ITSとして戻ってきます。暗号の数字のグループ間のスペースはデコード時に無視されるため、暗号文が詰めて書かれていても、きれいに5桁ずつのブロックに分けて書かれていても結果は変わりません。

歴史、用途、そして安全性

ポルックスは、Fractionated MorseやMorbitと並び、娯楽的な暗号解読のためにAmerican Cryptogram Association(米国暗号協会)によって収集された、モールス符号をベースにした数少ない暗号の1つであり、Science Olympiad CodeBustersのような学校の競技会で第二の人生を見出しました。そこでは、生徒たちがモールス符号が残す痕跡から鍵を復元することを学びます。平文の記号よりも多くの暗号記号を使い、複数の記号で1つを表すという仕掛けは、頻度を数える手法をどのように打ち破るかについての、小さくも優雅な教訓です。

現代の基準で見れば、ポルックスは安全ではありません。各記号を複数の数字に散らすことは素朴な頻度分析を無力化しますが、その基礎にあるモールス符号は強く、よく知られたパターンを課します。3つの区切り記号が続けて現れることは決してなく、ある種の短い符号は非常によく現れるのです。そして、判明または推測された鍵があれば、あるいは単に十分な量の暗号文があれば、意欲的な解読者やコンピューターがメッセージを復元できてしまいます。ポルックスは、1つの符号を別の符号で覆い隠すことがどのように難度を上げるかを生き生きと示す、パズルおよび教材として扱い、本当の秘密を守る手段として決して使わないでください。真の機密性が必要な場合は、AESのような現代的で専門家の検証を経たアルゴリズムを常に使ってください。

よくある質問

ポルックス暗号とは何ですか?
これは、0から9までの数字の並びの中にモールス符号を隠す手書き暗号です。メッセージは、文字をxで、単語をxxで区切ってモールス符号で書き表し、続いてすべてのドット・ダッシュ・区切り記号を、あなたが割り当てた数字のいずれかに置き換えます。各記号は複数の数字を持てるため、暗号文は10個の数字すべてを使い、同じ文字が同じように見えることはめったにありません。
ポルックスの鍵はどのように機能しますか?
鍵は、どの数字がドットを、どれがダッシュを、どれが区切り記号を表すかを決めます。0から9までの10個の数字すべてを3つの記号に割り当て、各記号に少なくとも1つの数字を与えます。このツールでは、数字0〜9の順に10個の記号を入力します。例えばx...x--xxxでは、0, 4, 7, 8 and 9が区切り記号、1, 2 and 3がドット、5 and 6がダッシュになります。
なぜ複数の数字が同じ記号を表せるのですか?
モールス記号は3種類しかないのに対して数字は10個あるため、余分な数字が記号の間で分け合われます。各記号に複数の数字を与えることがポルックスの核心です。これにより、よく使われる文字をさまざまな書き方で表せるようになり、数字の出現頻度が平坦になって、単純な換字式暗号を破る単純な数え上げ攻撃を無力化します。
なぜここでは同じテキストが同じ数字になるのですか?
伝統的な暗号では、記号が複数の数字を持つたびにランダムに1つを選ぶため、暗号化のたびに結果が異なります。しかしWebツールは再現可能でなければならないので、このツールは代わりに各記号の数字を順番に巡回させます。例えば、まず1、次に2、次に3、そしてまた1に戻る、という具合です。出力は依然として割り当てられた数字すべてを使い、すべての数字が1つの記号に対応して戻るため、デコードに影響はありません。
具体例を見せてもらえますか?
鍵x...x--xxxを使うと、単語SOSは数字12305654123になります。SOSはモールス符号でドット・ドット・ドット x ダッシュ・ダッシュ・ダッシュ x ドット・ドット・ドットであり、各記号をその数字で巡回させると、ドットに1, 2, 3、区切り記号に0、ダッシュに5, 6, 5、次の区切り記号に4、そして最後のドットに1, 2, 3が当てられます。
ポルックスメッセージはどうやってデコードしますか?
手順を逆にたどります。各数字を鍵で照合してその1つのモールス記号を得て、それらを1つのドット・ダッシュ・xの並びにつなぎ、それを区切り記号で分割し(文字の間は1つのx、単語の間は2つのxx)、ドットとダッシュの各まとまりをモールス符号の表を通して読み戻します。このツールでは、デコードを選び、エンコードに使われたのと同じ鍵を入力します。
数字や句読点には対応していますか?
文字と数字はエンコードされます。どちらも標準的なモールス符号を持つからです。句読点やその他の記号は取り除かれ、連続するスペースは1つの単語の区切りになります。つまり、it's のような短縮形は単一の単語ITSとして扱われ、これはこの暗号の一般的な参照実装と一致します。
鍵が無効だった場合はどうなりますか?
鍵はちょうど10個の記号に解決され、ドット・ダッシュ・区切り記号の3種類すべてを使っている必要があります。そうでない場合、つまり記号が少なすぎたり多すぎたり、いずれかの記号が欠けている場合は、ツールは既定の鍵x...x--xxxに戻り、ページは機能し続けます。鍵表には常に実際に使われている鍵が表示され、これが、入力した鍵が受け入れられたことの確認になります。
ポルックスはMorbitやFractionated Morseとどう違うのですか?
3つとも、まずメッセージをモールス符号で書きます。ポルックスは各1記号を1つの数字に置き換え、10個の数字を3つの記号で分け合います。Morbitは並びを2記号ずつ読み取って1から9までの数字を出力し、Fractionated Morseは3記号ずつ読み取ってAからZまでの文字を出力します。したがって、ポルックスとMorbitはどちらも数字を生成しますが、その方法は異なり、Fractionated Morseは文字を生成します。
ポルックス暗号は安全ですか?
いいえ。各記号を複数の数字に散らすことは単純な頻度集計を無力化しますが、その基礎にあるモールス符号は強い統計的パターンを残します。そして、特に鍵が推測されたり再利用されたり、十分な量の暗号文が手に入る場合、この暗号は古典的な解読手法やコンピューターによって破られてしまいます。パズルや学習には優れていますが、本当の保護にはAESのような現代的なアルゴリズムを使ってください。
私のテキストはサーバーにアップロードされますか?
いいえ。すべてのエンコードとデコードは完全にあなたのブラウザ内で行われるため、あなたのテキストがアップロード・記録・保存されることは一切ありません。共有リンクでさえ、あなたのテキストと鍵はURLの#記号より後ろの部分に保持され、ブラウザはその部分をサーバーに送信することはありません。そのため、あなたがリンクを共有することを選ぶまで、メッセージは非公開のまま保たれます。

関連ツール

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

フラクショネイテッド・モールス暗号

モービット暗号

モールス信号変換

シーザー暗号

ヴィジュネル暗号

アトバシュ暗号