早稲田大学大学院基幹理工学研究科情報理工学専攻 教授 戸川望先生インタビュー「LSIテスト設計技術に起因するICカードの脆弱性の解明」(第1回)


この数珠つなぎのような赤い線は実際には見えないんですね

 見えません。見えたとしても実際に設計した人でないと意味がわかりません。黒い部分をフリップフロップ(FF)といいます。何かを記憶できるところとお考えください。それが右図では、一筆書きのように結ばれていますが、実際にこれが作動するときには、単純に近いFF同士が赤い線のようにつながります。このつながり方は、設計者にしかわからないものです。ですから、スキャンチェインには暗号対策は必要ないと思われてきたのです。

ところで、一つのFFのなかにはどれぐらいの情報量が入っているんですか

 FFは1ビット単位なので、なかにはゼロか1しかありません。この図ではかなり省略されていますが、実際には1万個縲怩P0万個ぐらいの数があります。ですから、2の1万乗ぐらいの記憶容量があるということです。

一般のキャッシュカードのなかには、この仕組み自体はどのぐらい入っているんですか?

 どこを単位と指定するかによって変わるので、一概にいうのは難しいのですが、通常の小さなICチップで100万トランジスタあるとイメージしてもらってかまいません。いまインテルが販売しているようなもので数億トランジスタです。

たしかに、複雑かつ大容量だということはわかりました。では現在のスキャンチェインの構造のどこに問題があるのでしょうか。

 実際に製品をチェックするときには、クロック信号を一時停止させます。するとscan-outからデータが出力されてきます。水道のホースを使用していて、いったん水の栓を閉めても、すぐに水は止まらないでしばらく流れてくるイメージをもってもらってもかまいません。
 するとFFの中のデータがスナップショットのように出力される状態になってしまうというのが問題なのです。
 右図のデータは「横」に見たときにはランダムに見えますが、「縦」に並べて見ると特定のFFの値の変化を見ていることになるのです。図では3つのFFが書かれていますが、左端のFFは赤、真ん中のFFは黄色、右端のFFは青色の部分にそれぞれ対応しているのです。つまりデータを「横」から「縦」へ読み取り方を変えると、暗号回路のなかに含まれている「秘密鍵」が分かってしまうからひじょうに危険なのです。

その読み取りを可能にしたのがこの写真の装置ですね

 はい。この写真(左図)は市販のFPGAと呼ばれている集積回路の一種です。この上に、私のチームで回路を読み取る仕組みを埋め込み、AES暗号回路(実際と同じぐらいのもの)を実装したICから、データを取り出すと「秘密鍵」を解読することができたのです。自作自演ですが、これまで大丈夫とされてきた暗号回路を解読できてしまったのです。