Involution Studio

インボリューション(2回適用で元に戻る変換)を、換字式/転置式/ビット反転式で軽量体験。
「同じ操作で元に戻る」直感性を活かした学習ハブです。

Overview

インボリューションとは?

インボリューション(involution)とは、同じ操作を2回繰り返すと元に戻るという性質のことです。
もっとも基本的な例は文字列の反転です。 「HELLO」→「OLLEH」→「HELLO」のように、2回適用で元の文字列に戻ります。
文字列の反転、行列の転置、符号反転など、身近な例から暗号技術まで幅広く応用されています。

インボリューション(involution)は「同じ変換を2回適用すると恒等写像に戻る」性質です。
数学的には f(f(x)) = x と表現されます。

行列の転置も同様で、Aの転置が Aᵀ 、(Aᵀ)ᵀ = A となります。
数値では符号反転(マイナスを付ける)が典型例で、-(-x) = x となります。
これらの例はすべて「同じ操作を2回繰り返すと元に戻る」というもっとも直感的な対称性を示しています。

暗号分野では、インボリューションは「暗号化と復号が同一の手順」であることを意味します。
この性質により、設計コスト・検証コスト・回路面積の削減に大きく寄与します。

古典暗号の多くがこの性質を利用しています。
AtbashはA↔Z, B↔Yのようにアルファベットを鏡写し対応させる手法で、2回適用で平文に戻ります。
ROT13は26文字の半分(13文字)ずらし、ROT47は94文字の半分(47文字)ずらしで同様の効果を得ます。
現代暗号ではFeistel構造が有名で、ラウンド関数を用いてブロック暗号を構成します。
これらの手法はすべて同一のアルゴリズムで暗号化と復号を行えるため、ハードウェア実装で特に有効です。

インボリューションの性質はAIやセキュリティ分野でも重要な意味を持ちます。
可逆性や対称性はシステムの理解可能性を高め、検証作業を容易にします。
AIモデルの解釈性向上では、入力と出力の対応関係が明確な関数が有用です。
セキュリティ監査では、対称性を持つアルゴリズムは、不正な操作やバックドアの発見がしやすくなります。

Substitution

換字式インボリューション

同じ置換を2回適用して元に戻るタイプ。ここでは軽量デモを案内し、詳細は各専用ツールへ。

アトバッシュはもっとも古い換字暗号の一つで、A↔Z, B↔Y のように文字を鏡写し対応させます。
同じ変換を2回適用すると元の文字に戻る、典型的なインボリューション暗号です。

結果:
変換表 (使用された文字をハイライト):
A↔Z
B↔Y
C↔X
D↔W
E↔V
F↔U
G↔T
H↔S
I↔R
J↔Q
K↔P
L↔O
M↔N
N↔M
O↔L
P↔K
Q↔J
R↔I
S↔H
T↔G
U↔F
V↔E
W↔D
X↔C
Y↔B
Z↔A

ROT13はA-Zの26文字を半分(13文字)だけシフトする置換暗号です。
半分だけ回転するため2回適用すると元に戻るというインボリューション性を持ち、暗号化と復号が同一の操作で実行できます。

ROT47はROT13の拡張版で、数字・記号・英字を含むASCII文字(33〜126)の94文字を半分(47文字)だけシフトします。
ROT13より幅広い文字種を扱えるため、より実用的なテキストの難読化が可能で、同様に2回適用で元に戻ります。

Transposition

転置式インボリューション

並べ替え(転置)で2回適用することで元に戻るタイプ。文字列・カード・行列などで直感的に理解可能。

文字列を逆順に並べ替えるもっとも基本的な転置操作です。
"HELLO" → "OLLEH" → "HELLO"のように、2回適用で元に戻る特性を持ちます。

結果:

隣接する文字のペアを交換する操作です。
"ABCD" → "BADC" → "ABCD"のように、2回適用で元の順序に戻ります。

結果:

行列の行と列を入れ替える操作です。3×3行列では、転置を2回適用すると元の行列に戻ります。
暗号学では、鍵を使わない完全縦列転置式暗号において、正方形に配置した平文に対してこのインボリューション性質を利用できます。

💡 実際の暗号ツールで試す

縦列転置式暗号でインボリューション性を体験するには:
「鍵なし+正方形を満たす平文(足りなければ埋字で調整)」に設定してください。

Bitwise

ビット反転式インボリューション

ビット単位の変換で「2回適用で元に戻る」を体験。Feistel は“同一回路で復号可能”という設計思想を紹介。

ビット反転(NOT演算)は、0を1に、1を0に変換するもっとも基本的なビット操作です。
2回連続で適用すると元のビットパターンに戻る、典型的なインボリューション演算です。

結果:

Feistel構造とは?
Feistel構造は、暗号化のための巧妙な仕組みです。データを左右2つの部分に分けて、特別な計算を行います。
驚くことに、まったく同じ手順を繰り返すだけで、暗号化も復号も両方できるのです!
これがインボリューション(同じ操作を2回行うと元に戻る性質)の美しい例です。

📖 使い方
1️⃣ 入力値(8ビット = 0-255の数値)を設定して左右ブロックに分割
2️⃣ キー値(4ビット = 0-15の数値)でラウンド関数を制御
3️⃣ 「次のラウンド」を4回押すと、魔法のように元の値に戻る!
4️⃣ 同じ処理が暗号化と復号の両方になることを体感
この8ビット値が左4ビット・右4ビットに分かれます
ラウンド関数の計算に使用されます
現在の値: