Permutation CipherLab - 転置式暗号ツール

任意の転置パターンで文字列を並び替える「転置式暗号」をビジュアルで理解するためのツール

転置パターン生成

暗号化・復号に使用する転置パターン(鍵)を生成します。

プリセット:

パターン長 = ブロックサイズ
パターン長4の場合、平文は4文字ずつのブロックに分割され、各ブロック内で文字が並び替えられます。

生成方法

🎲 ランダム生成

指定した長さのランダムな転置パターンを生成します。

例:パターン長4 → 「3-1-4-2」のような4文字ブロック用の鍵

✏️ 手動入力

独自のパターンを入力します(例:3-1-4-2)

🎨 ビジュアル編集

ドラッグ&ドロップで直感的に作成します。

現在の鍵

未生成

鍵を生成すると、暗号化・復号タブで自動的に使用されます。

鍵の保存と管理

平文入力

使用中の鍵(転置パターン): 鍵生成タブで鍵を生成してください
パディング設定(任意)

ℹ️ チェックを外すと、最後の不足ブロックは転置されずそのまま出力されます

暗号文

対応表(平文 → 暗号文)

ブロック 1
#平文暗号文

暗号文入力

使用中の鍵(逆転値パターン): 鍵生成タブで鍵を生成してください
パディング設定(任意)

⚠️ 元の平文の末尾に同じ文字が含まれていた場合、それも削除される可能性があります

復号結果(平文)

対応表(暗号文 → 平文)

#暗号文平文

📚 座学:転置式暗号を学ぶ

🔤 転置式暗号とは

転置暗号は、文字の並び順だけを入れ替える暗号方式です。 文字自体は変化しないため、文字の頻度分布は保存されますが、位置関係が複雑に入れ替わることで解読を困難にします。

🏛️ 歴史的背景

紀元前5世紀

スキュタレー暗号(Scytale) - 古代スパルタで使用された最古の転置暗号。特定の太さの棒に羊皮紙を巻きつけ、縦に文字を書いていく方式。

中世~近世

縦列転置式暗号(Columnar Transposition) - 表形式で文字を配置し、列の順序を入れ替える方式。第一次世界大戦でも使用された。

1970年代~

DESのP-Box - 現代ブロック暗号における転置操作。ビット単位での順列置換により「拡散(diffusion)」を実現。

2000年代~

AESのShiftRows - 行列の行をシフトする転置操作。S-Box(置換)と組み合わせて強固な暗号化を実現。

🔑 転置暗号の基本原理

転置暗号は順列(permutation)を鍵として使用します。 例えば、パターン 3-1-4-2 は「1番目の文字を3番目の位置へ、2番目の文字を1番目の位置へ…」という変換ルールを表します。

具体例:パターン 3-1-4-2

元の位置 1 2 3 4
平文 E N I G
→3 →1 →4 →2
暗号文 N G E I

結果: ENIGNGEI

🔄 ブロック処理とパディング

本ツールはブロック暗号の考え方を採用しています。 パターン長(= ブロックサイズ)ごとにテキストを分割し、各ブロックに対して独立に転置を適用します。

✅ パディング有効時

入力: ENIGMA (6文字)、パターン長: 4

  • ブロック1: ENIG → 転置 → NGEI
  • ブロック2: MA → パディング → MAXX → 転置

最後のブロックも完全な長さになるため、すべてのブロックで転置が適用されます。

❌ パディング無効時

入力: ENIGMA (6文字)、パターン長: 4

  • ブロック1: ENIG → 転置 → NGEI
  • ブロック2: MAそのままMA

不足ブロックは転置されずに残ります。

🔐 置換暗号との違い

項目 転置暗号(Transposition) 置換暗号(Substitution)
変換対象 文字の位置 文字そのもの
頻度分布 保存される 変化する(単一換字)または隠蔽される(多表式)
HELLOLOEHL HELLOURYYB (ROT13)
解読への耐性 アナグラム解析、既知平文攻撃に弱い 頻度分析に弱い(単一換字)
現代暗号での役割 拡散(diffusion) 混乱(confusion)

⚡ 転置暗号の強度と弱点

💪 強み

  • 実装が単純で高速
  • ブロックサイズが大きいほど組み合わせが爆発的に増加(n! 通り)
  • 置換暗号と組み合わせることで強固になる

⚠️ 弱点

  • 文字の頻度分布が変化しないため、アナグラム解析が可能
  • 短いブロックでは総当たり攻撃が容易
  • 既知平文攻撃に対して脆弱
  • 単独では現代の暗号として不十分

🎓 教育的価値

  • 順列の概念 - 数学的な順列(n!)を暗号の文脈で理解できる
  • 逆写像の理解 - 転置パターンの逆順列を計算することで復号が可能になる
  • ブロック暗号の基礎 - 固定長ブロックごとに処理する考え方を体験できる
  • 拡散の原理 - シャノンの「拡散(diffusion)」概念の具体例
  • 暗号強度の評価 - 鍵空間、既知平文攻撃、頻度分析などの考え方を学べる

🔗 関連する暗号技術

📖 参考文献・学習リソース

  • Simon Singh『暗号解読』(新潮社) - 古典暗号から現代暗号までの歴史
  • C.E. Shannon "Communication Theory of Secrecy Systems" (1949) - 拡散と混乱の理論的基礎
  • Bruce Schneier『暗号技術大全』- 実践的な暗号アルゴリズムの解説
  • CrypTool - インタラクティブな暗号学習ツール(オープンソース)