🔬 チップにも「指紋」がある?

LTspiceで再現する物理複製困難関数(PUF)

半導体製造のバラつきを暗号鍵にする最新技術。
モンテカルロ解析で「同じ設計図から違う個性が生まれる」瞬間を見てみよう🐾

🔬 LtSpice (Monte Carlo Analysis) 🔐 デバイス認証・ハードウェアセキュリティ 🏆 シリーズ最終章
🔬 LtSpiceシリーズ
🔬
半導体の研究をしているもふねこにとって、今回のテーマは一番身近なんだ🐾
チップを作るとき、どんなに精密に設計しても、原子レベルの「バラつき」は絶対に残る。 それは昔は「困りもの」だったけど、PUF(物理複製困難関数)の発想は逆転した。 「そのバラつきこそが、そのチップにしかない指紋だ!」 LTspiceのモンテカルロ解析で、その「個性の誕生」を体験してみよう。

🛠️ LtSpiceのインストール方法は vol.1(チュア回路)の冒頭をご確認ください。

01 コピーできない「個体差」とは?

世界中の電子機器にはシリアル番号やIDが割り振られている。 しかし、ソフトウェアで書き込まれたIDはコピー・改ざんのリスクがある。 偽造チップ・クローンデバイスの問題は、IoT・自動車・医療機器など安全が重要な分野で深刻だ。

PUFが革命的なのは、IDを「書き込む」のではなく「生まれ持つ」設計を実現した点だ。 製造プロセスで必然的に生じるバラつきを、そのままデバイスの「指紋」として利用する。 どんな高精度な製造装置を使っても、まったく同じチップは2枚と作れない。

02 SRAM PUFの仕組み

最もポピュラーなPUFの一つがSRAM(スタティックRAM)を使った方式だ。 SRAMセルは2つのインバータを背中合わせに接続した回路で、 電源が入った直後に「どちらが先に安定するか」で0か1かが決まる。

🔵 理想的なSRAMセル
INV1 ⇄ INV2
完全対称
(VT1 = VT2)
どちらに傾くかわからない。
毎回ランダムに0か1。
🟡 現実のSRAMセル
INV1 ⇄ INV2
わずかな非対称
(VT1 ≠ VT2 by ±数mV)
必ず同じ方向に傾く。
電源を入れるたびに同じ値
💡 これが「指紋」になる理由

あるチップのビット0番地は「必ず1」、ビット1番地は「必ず0」、ビット2番地は「必ず1」… この起動時の値のパターンが、そのチップだけの固有ID(指紋)になる。 完全にランダムに見えながら、同じチップでは毎回同じパターンが出る。 これが他のチップには絶対に複製できない「物理的な謎の答え」だ。

03 LTspiceでのモンテカルロ解析

LTspiceの モンテカルロ解析(mc関数) を使うと、 部品のバラつきを統計的にシミュレートできる。 これで「同じ設計図から10個の異なる個体を作る」ことが再現できる。

STEP 1

SRAMセル回路を作成

インバータ2つを背中合わせに接続したSRAMセルを配置する:

STEP 2

製造バラつきを mc 関数で設定

トランジスタの閾値電圧(Vth)または抵抗値に製造誤差を加える:

▶ mc 関数の使い方(回路図の部品パラメータに入力)
.param VTH_OFFSET = {mc(0, 0.01)} * → 0Vを中心に ±10mV のバラつきを持つ閾値電圧オフセット * または抵抗バラつきの場合: R1 node1 node2 {mc(1k, 0.05)} * → 1kΩを基準に5%の範囲でバラつかせる
💡 mc(中心値, 許容幅) の意味
mc(1k, 0.05) は「1kΩを中心に±5%の一様分布でランダムにバラつく」という指定。 実際の半導体製造では、閾値電圧のバラつきは数mV〜数十mV の範囲で生じる。
STEP 3

10個の「個体」を一度にシミュレート

回路図に以下のシミュレーションコマンドを追記する:

▶ シミュレーションコマンド
.tran 100n .step param run 1 10 1

→ Vddを0Vから立ち上げ、どちらの出力が先に1に確定するかを10パターン観察する。
.step param run によって、異なる乱数シードで10回シミュレーションが実行される。

▶ モンテカルロ解析 結果イメージ(10個体の起動値)
RUN #1
1
VTH+3.2mV
RUN #2
0
VTH-7.1mV
RUN #3
1
VTH+1.8mV
RUN #4
1
VTH+5.4mV
RUN #5
0
VTH-2.9mV
RUN #6
0
VTH-8.3mV
RUN #7
1
VTH+4.1mV
RUN #8
0
VTH-1.6mV
RUN #9
1
VTH+6.7mV
RUN #10
0
VTH-4.2mV
同じ回路図・同じ設計 → しかし起動時の値は個体ごとに固定される
指紋パターン:1 0 1 1 0 0 1 0 1 0 → これがそのチップのID
🔬

ここにLTspice モンテカルロ解析の実際の波形
(各インスタンスが異なる安定点に収束する様子)が入る予定

🔐 PUFが変えるセキュリティの未来

PUFのすごいところは、「チップの中に鍵を保存しておく必要がない」点だ。 鍵が必要なときだけ電源を入れて「指紋」を読み取り、電源を切れば鍵は消える。 物理的に分解してメモリを読んでも、そこには何も残っていない

🆔 デバイス認証

IoTデバイスのIDをPUFで生成。 出荷時にサーバー側でPUF応答パターンを登録しておき、 以降の通信でデバイスを確実に認証できる。

🔑 鍵生成・保護

AES鍵をPUFから生成し、使用後は消える。 フラッシュメモリに鍵を保存しないため、 物理的な解析(デキャップ攻撃)に強い。

🚗 自動車・医療機器

ECU(車載コンピュータ)の真正性確認に採用例あり。 偽造部品の流通を防ぐサプライチェーンセキュリティにも応用される。

⚠️ PUFの課題:温度・経年変化

温度や電圧の変化で応答がわずかに変わる「ビットエラー」問題がある。 誤り訂正符号(ECC)との組み合わせで実用化されている。

05 PUFが「究極の隠れ家」な理由

🔒

複製不可能

同じ製造ラインで作っても2枚の同じチップは存在しない。量子力学的な製造誤差は再現できない。

💨

鍵が「消える」

電源オフで鍵は消える。メモリに保存しないため、デキャップ解析・フリーズ攻撃が効かない。

🏭

追加コストゼロ

既存の製造プロセスの「バラつき」をそのまま利用。専用の鍵書き込み工程が不要。

🎯

改ざん検知

チップを物理的に解析しようとすると製造バラつきが変化し、正しい指紋が出なくなる。自己破壊的セキュリティ。

06 まとめ

🏆 LtSpiceシリーズ 全4回 完結!

1
チュア回路:カオスによる「予測不能な揺らぎ」
決定論的ながら予測不可能なカオス。乱数生成・カオス暗号の思想的ルーツ。
2
LFSR:論理回路が生む「擬似乱数」
フリップフロップとXORだけでストリーム暗号の鍵ストリームを生成。Wi-FiやGPSの核心。
3
サイドチャネル:消費電流から漏れる「情報の吐息」
数学的に完璧な暗号も、物理的な実装が秘密を漏らす。電力解析の恐怖と防御策。
4
PUF:半導体が持つ「唯一無二の個性」
バラつきを逆手に取る発想の転換。鍵を保存しない究極の隠れ家。

数式だけでは見えてこない暗号の「手触り」を、ぜひご自身のPCでシミュレーションして体感してみてください!
質問・感想はお問い合わせページへ🐾

07 関連記事

🔙 vol.3 サイドチャネルへ 🔬 暗号ラボへ戻る