チュア回路シミュレーションで「ダブル・スクロール・アトラクタ」を作ろう。
その予測不可能性が、現代暗号の核心とつながっている🐾
このシリーズの回路シミュレーションには、LtSpice(無料)を使います。
開発元の Analog Devices(アナログ・デバイセズ)から公式に提供されています。
.msi(Windows)または .pkg(Mac)を実行※ 旧バージョン(LTspice XVII)より最新版が安定しています。古いOSをお使いの場合はサポートをご確認ください。
「カオス」というと「混乱」のイメージがあるけど、数学的なカオスはまったく異なる概念。 決定論的なルールに従いながらも、初期条件のわずかな違いで未来が劇的に変わる現象のことだよ。
有名なのが「バタフライ効果」。ブラジルの蝶の羽ばたき一つが、テキサスの竜巻を引き起こす… つまり初期値の小数点以下の違いが、長期的には天と地ほどの差をうむ。 これが、後ほど紹介する暗号との接続ポイントになるんだ。
チュア回路(Chua's Circuit)は、1983年にカリフォルニア大学バークレー校の Leon O. Chua(蔡少棠)教授が考案した、 最もシンプルなカオスを生む電子回路だよ。 コンデンサ2つ+インダクタ1つ+非線形抵抗1つだけで作れる。
| 部品 | 値 | 役割 |
|---|---|---|
| C1(コンデンサ) | 10 nF | 電圧V₁を蓄える(高速) |
| C2(コンデンサ) | 100 nF | 電圧V₂を蓄える(低速) |
| L1(インダクタ) | 18 mH | 電流を蓄え、振動を生む |
| R1(抵抗) | 1.7 kΩ | 2成分間のエネルギー移動を調整 |
| G1(非線形素子) | 折れ線近似式 | チュア・ダイオード:カオスを生む心臓部 |
LtSpiceを起動し、New Schematic から新しい回路図を作成。 上記の C1・C2・L1・R1 を配置し、それぞれを以下のように接続しよう。
LtSpiceの bv(Behavioral Voltage Source) または bi(Arbitrary Behavioral Current Source) を配置。 Value(数式)に以下を入力する:
I = -0.757e-3*V + 0.5*(0.757e-3 - 0.409e-3)*(abs(V+1.3)-abs(V-1.3))
Edit → Edit Simulation Command を開いて:
また、回路図に初期条件を追記:
.ic V(C1)=0.1
Run(F5) でシミュレーション開始。 波形ウィンドウが開いたら:
うまくいけば、画面に蝶の羽のような「ダブル・スクロール・アトラクタ」が描かれるはず。 これが電圧の時間変化軌跡が描く「カオスの宇宙地図」だ!
ここにダブル・スクロール・アトラクタの
スクリーンショット(LtSpice実測)が入る予定
チュア回路のダブル・スクロールには、軌跡が決して同じ場所を通らないという特性がある。 初期値を小数点以下10桁まで正確に知らない限り、次の位置を予測するのは事実上不可能だ。
実は、現代暗号の「安全性」を支える柱のひとつも、まったく同じ発想から来ている。
暗号鍵の生成には「真の乱数」が必要。 ハードウェアRNGは熱ノイズや量子ゆらぎなど、 カオス的な物理現象を乱数源として利用している。
カオス系の予測不可能性を直接暗号化に利用する「カオス暗号」が1990年代から研究されている。 チュア回路の出力波形を鍵ストリームとして使う試みも実在する。
次回紹介するLFSR(線形フィードバックシフトレジスタ)も、 「予測不可能なビット列を生成する」仕組み。 カオスと同じ「決定論的だが予測困難」の思想だよ。
暗号の雪崩効果(Avalanche Effect)も、入力1ビットの違いが 出力を半分以上変える設計。 バタフライ効果を数学的に再現した仕組みといえる。
今あなたが见たダブル・スクロールは、美しい模様であると同時に、 現代暗号の思想的先祖でもあるんだ🐾