モジュール詳細:ソリティア暗号

これはもはやゲームじゃなくて、暗号だ。

ディスプレーには、上部に6文字の暗号化された単語とその下部に送信用のカーソルが表示されている。

青の丸いボタンを押すと、画面を新しいページに切り替える。このページには27個の文字があり、25文字はA~Y、残り2文字は1と2である。これは暗号化に使用されたキーである。再度ボタンを押すと、先程の画面に戻る。

緑の丸いボタンは入力内容を送信し、赤の丸いボタンは入力内容を消去する。

復号後の単語を送信すると、モジュールは解除される。

暗号の仕組み

単語内の各英字に対し、この暗号は「シャッフル」と「暗号化」の2つのステップを行っている。

まず、いくつかの手順を用いてキーをシャッフルする。その後、ヴィジュネル暗号を主として英字を暗号化する。こうして、ランダムに見えるランニングキーが作成される。

怖がらないで!以下の手順は、シャッフルと復号プロセスをどのように行うか説明している。

シャッフルステップ

  1. 「1」の文字を右に1回移動させ、必要に応じてループする。
  2. 「2」の文字を右に2回移動させ、必要に応じてループする。
  3. 左側の数字より左にある文字列と、右側の数字より右にある文字列を交換する。
  4. キーの最後の文字をアルファベット上の位置の数字にし、それと同じ数だけ左端から右に進み、その文字を含めて左側にある文字を除外する。
  5. 除外した文字列を取得し、キーの最後から2番目と一番最後の間に挿入する。

上記のステップは覚えやすくするために、「1と2をシフト、三等分、左をカット」と簡略化する。

復号ステップ

最後に、以下のステップに従って復号された英字を取得する。

  1. キーの最初の文字をアルファベット上の位置の数字にし、それと同じ数だけ左端から右に進む。
  2. キー内を進んだ後に到達していた位置の文字を記録しておく。
  3. 暗号化された英字のアルファベット上の位置の数字から、上記のステップで取得した文字のアルファベット上の位置の数字を引く。
  4. この数字を、1~26の範囲になるまで26を足し、アルファベット上の位置の数字を利用して英字に戻す。

追加事項

いずれかのステップで取得した文字が「1」の場合、シリアルナンバーの3番目の文字に1を足した数を使用する。

いずれかのステップで取得した文字が「2」の場合、シリアルナンバーの6番目の文字に1を足した数を使用する。

このモジュールにおける1と2のシフトは、実際に暗号が行った方法通りに行われていない。実際の暗号はキーを巨大な円のように扱っている。つまり、1や2が末尾にある場合、キーの1文字目に重なるように移動してしまう。より「一貫性」を持たせることにし、そうした些細な部分が発生するたびに、引っかかることがないようにしている。

DVTGXBQRFKMJLCEN21IWAUHOYSP

1と2をシフト

DVTGXBQRFKMJLCENI12WAUHOYSP

三等分

WAUHOYSP12DVTGXBQRFKMJLCENI

左をカット

2DVTGXBQRFKMJLCENWAUHOYSP1I

最初の文字は2である。シリアルナンバーの6番目の文字は1とする。
右に2つ進み、到達した位置の文字はVである。
Q - V = -5 + 26 = 21 -> U