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


では一体スキャンチェインの何が問題なのでしょうか?

 どれほど接続方法がランダムだとしても、まるで席替えをするように、FF自体が入出力のたびにLSI内で位置を変わることはできませんよね。となると、出力された文字列のうち、たとえば1列目に来る数値は、かならず100番目のフリップフロップから出されたデータなのです。となると、2列目に来る数値は99番目のFF、3列目に来る数値は98番目、というように、データの何列目に何番目のFFから出力された数値があるか、ということが分かってしまうのです。学生さんとディスカッションするなかで、世界で初めてこのことに気づきました。

接続方法はランダムでも、出力される文字列はいつも同じ順番であるため、出力されたデータをいくつか並べることで、LSIの暗号自体も分かってしまうのですね。

 理論としては解明しましたので、ほんとうに暗号回路に含まれている鍵の情報を知ることができるのか実証するため、実験を行いました。暗号には「共通鍵暗号系」と「公開鍵暗号系」という大きく2つの種類があります。暗号は数え切れないほど日々発表されていますが、世の中で実際に使われているものの大部分はこの2つです。両方の暗号系のうち、いくつかのLSIで試しましたが、すべて暗号の鍵を解読できてしまいました。

では世の中に出回っているLSIのほとんどは、スキャンベース攻撃によって暗号が漏れてしまうのですね。

 「これほど作り込めば見破ることはできないだろう」と思うくらい強固な暗号を自分で作り、スキャンベース攻撃をしかける、という自作自演のような実験も行いましたが、攻撃が成功してしまいました。このことから、どんなに複雑に作り込んだ暗号だとしても、スキャンベース攻撃によって見破られてしまうということが分かりました。

いまのLSI作成方法ではどんなに複雑な暗号を作ったとしても、中身が見破られてしまうのですね。なにか対策は見つかっているのでしょうか?

 「ランダムオーダースキャン」という方法を見つけました。現在のスキャンチェインの問題点は読み取る順番がいつも変わらないので、この順番を設計者のみが知っている法則によって変えることができれば、撹乱することができます。そこで編み出したランダムオーダースキャンという方法は、データを出力する毎に、その数値の並び順が変わってくるというものです。そのLSIの構造をすべて把握している設計者にのみ、いつ、どこからデータが出るかが分かりますが、暗号を狙う攻撃者は知ることができません。

ランダムオーダースキャンに関して、先生は国内外さまざまな場所で発表されています。

 数学的にも強固なシステムであるうえに、実験でも良い結果が出ているため、ひろく世の中に受け入れられ、高く評価していただいています。セキュリティに関する問題は攻撃者とのイタチごっこであるため、絶対に見破られないという確証はありませんが、かなり強固なシステムであると自負しています。

初歩的な質問で恐縮ですが、そもそもスキャンチェインとはLSIを作ったあとに付け加えるものなのでしょうか。

 LSIの設計図はスキャンチェイン込みで書かれているため、工場に発注し、出来上がった時点ですでにスキャンチェインは入っています。しかし、ある種「余分なもの」であるスキャンチェインを入れるぶん、1cmのものが1.5cmになる、といった具合に、チップが物理的にすこしだけ大きくなってしまいます。とはいえ、そのすこし大きいというだけのデメリットで暗号漏洩を防ぐことができるのなら、スキャンチェインを入れ込む価値は十分あると思うのです 。