転置パターン生成
暗号化・復号に使用する転置パターン(鍵)を生成します。
パターン長 = ブロックサイズ
パターン長4の場合、平文は4文字ずつのブロックに分割され、各ブロック内で文字が並び替えられます。
生成方法
🎲 ランダム生成
指定した長さのランダムな転置パターンを生成します。
例:パターン長4 → 「3-1-4-2」のような4文字ブロック用の鍵
✏️ 手動入力
独自のパターンを入力します(例:3-1-4-2)
🎨 ビジュアル編集
ドラッグ&ドロップで直感的に作成します。
現在の鍵
鍵を生成すると、暗号化・復号タブで自動的に使用されます。
鍵の保存と管理
平文入力
パディング設定(任意)
ℹ️ チェックを外すと、最後の不足ブロックは転置されずそのまま出力されます
暗号文
対応表(平文 → 暗号文)
| # | 平文 | 暗号文 |
|---|
暗号文入力
パディング設定(任意)
⚠️ 元の平文の末尾に同じ文字が含まれていた場合、それも削除される可能性があります
復号結果(平文)
対応表(暗号文 → 平文)
| # | 暗号文 | 平文 |
|---|
📚 座学:転置式暗号を学ぶ
🔤 転置式暗号とは
転置暗号は、文字の並び順だけを入れ替える暗号方式です。 文字自体は変化しないため、文字の頻度分布は保存されますが、位置関係が複雑に入れ替わることで解読を困難にします。
🏛️ 歴史的背景
スキュタレー暗号(Scytale) - 古代スパルタで使用された最古の転置暗号。特定の太さの棒に羊皮紙を巻きつけ、縦に文字を書いていく方式。
縦列転置式暗号(Columnar Transposition) - 表形式で文字を配置し、列の順序を入れ替える方式。第一次世界大戦でも使用された。
DESのP-Box - 現代ブロック暗号における転置操作。ビット単位での順列置換により「拡散(diffusion)」を実現。
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 |
結果: ENIG → NGEI
🔄 ブロック処理とパディング
本ツールはブロック暗号の考え方を採用しています。 パターン長(= ブロックサイズ)ごとにテキストを分割し、各ブロックに対して独立に転置を適用します。
✅ パディング有効時
入力: ENIGMA (6文字)、パターン長: 4
- ブロック1:
ENIG→ 転置 →NGEI - ブロック2:
MA→ パディング →MAXX→ 転置
最後のブロックも完全な長さになるため、すべてのブロックで転置が適用されます。
❌ パディング無効時
入力: ENIGMA (6文字)、パターン長: 4
- ブロック1:
ENIG→ 転置 →NGEI - ブロック2:
MA→ そのまま →MA
不足ブロックは転置されずに残ります。
🔐 置換暗号との違い
| 項目 | 転置暗号(Transposition) | 置換暗号(Substitution) |
|---|---|---|
| 変換対象 | 文字の位置 | 文字そのもの |
| 頻度分布 | 保存される | 変化する(単一換字)または隠蔽される(多表式) |
| 例 | HELLO → LOEHL |
HELLO → URYYB (ROT13) |
| 解読への耐性 | アナグラム解析、既知平文攻撃に弱い | 頻度分析に弱い(単一換字) |
| 現代暗号での役割 | 拡散(diffusion) | 混乱(confusion) |
⚡ 転置暗号の強度と弱点
💪 強み
- 実装が単純で高速
- ブロックサイズが大きいほど組み合わせが爆発的に増加(n! 通り)
- 置換暗号と組み合わせることで強固になる
⚠️ 弱点
- 文字の頻度分布が変化しないため、アナグラム解析が可能
- 短いブロックでは総当たり攻撃が容易
- 既知平文攻撃に対して脆弱
- 単独では現代の暗号として不十分
🎓 教育的価値
- 順列の概念 - 数学的な順列(n!)を暗号の文脈で理解できる
- 逆写像の理解 - 転置パターンの逆順列を計算することで復号が可能になる
- ブロック暗号の基礎 - 固定長ブロックごとに処理する考え方を体験できる
- 拡散の原理 - シャノンの「拡散(diffusion)」概念の具体例
- 暗号強度の評価 - 鍵空間、既知平文攻撃、頻度分析などの考え方を学べる
🔗 関連する暗号技術
📖 参考文献・学習リソース
- Simon Singh『暗号解読』(新潮社) - 古典暗号から現代暗号までの歴史
- C.E. Shannon "Communication Theory of Secrecy Systems" (1949) - 拡散と混乱の理論的基礎
- Bruce Schneier『暗号技術大全』- 実践的な暗号アルゴリズムの解説
- CrypTool - インタラクティブな暗号学習ツール(オープンソース)