
拓海先生、最近うちの若手が「PUFがヤバい」と言うのですが、そもそもPUFって何ですか。うちに関係ありますか。

素晴らしい着眼点ですね!PUFとはPhysical Unclonable Function(PUF、物理的に複製できない関数)で、製造のばらつきを利用した“個体の指紋”のようなものですよ。大丈夫、一緒にやれば必ずできますよ。

指紋みたいなものか。それを悪用できると、うちの製品の認証が破られるのでしょうか。

可能性はあります。特にArbiter PUF(APUF、アービタPUF)というタイプは遅延差で応答を決めるので、機械学習で「モデル化」されやすいんです。ここでの主題はActive learning(AL、能動学習)です。

能動学習というのは、学習者が自分でどのデータを取るかを選ぶって意味ですか。それって要するに、やり方次第で早く学べたり、逆に遅くできたりするということ?

その通りですよ。簡単に言えば要点は三つです。第一に学習者が賢く挑戦(challenge)を選べば短時間で正確にモデル化できる。第二に逆に認証側が挑戦を工夫すれば学習を遅らせられる。第三にノイズや実装差が影響するが、SVM(Support Vector Machine、サポートベクターマシン)で有効な選択がある、です。

投資対効果の話に直結しますが、うちが対策するならどこから手を付ければいいですか。製造側でモデルを残さないほうが得ですか。

まずは現状把握が最優先です。要点三つに分けると、1) 製品にどのPUFを使っているか、2) 認証で使うCRP(Challenge-Response Pair、チャレンジ応答対)の扱い方、3) 認証プロトコルが挑戦選択を外部に公開していないか、を確認してください。大丈夫、一緒に進めば整理できますよ。

なるほど。現場のエンジニアにはどう伝えればいいですか。技術的な言い回しは苦手でして。

簡潔に三点だけ伝えれば良いです。1) 認証で多種多様な挑戦を使うこと、2) 製造時にモデルをサーバに保存しないこと、3) 誰でも見られる挑戦選択は避けること。これだけで学習の効率を大きく下げられますよ。

これって要するに、挑戦の出し方で攻めやすくも守りやすくもなるということですね。

まさにその通りですよ。要点を改めて三つでまとめると、選択次第で学習は速くも遅くもなること、認証側が挑戦選択を工夫すれば攻撃を遅らせられること、そしてメーカーが安易にモデルを残すと危険になることです。大丈夫、できないことはない、まだ知らないだけです。

分かりました。では確認です。要するに、PUFの応答を学習させる側がどのデータを見せるかで、そのPUFの“真似”を作りやすくも作りにくくもできるということで、うちが守るなら挑戦の公開やモデル保存を避ける、という理解で良いですか。

その通りです。田中専務の言葉で要点をまとめて頂き、非常に良い理解です。では次は具体的に現場で取るべきチェックリストを一緒に作りましょう。大丈夫、一緒にやれば必ずできますよ。


