暗号計算機屋のブログ

なにか思いついたことを不定期に更新。

IoTの原価を下げる暗号プロセッサICF3

背景

ICF3はIoTデバイスに搭載する暗号プロセッサとして1999年製ながら奇跡的にジャストミートしています。その理由については、これまでいろいろ説明してきました。ここではIoTデバイスの原価を下げる暗号プロセッサについての説明です。

要点は2つ

モンゴメリ乗算や中国人剰余定理などの海外の暗号演算アルゴリズムをなるべく使わないこと。海外の暗号演算アルゴリズムを使うと国産プロセッサとしての成果が海外に流れるので結果的に原価があがるということ。

ファームウェアの変更だけで暗号演算アルゴリズムを入れ替えて暗号プロセッサの性能をIoTの用途に応じた性能のアルゴリズムの製品ができるようにすること。
性能のコントロールだけでなくRSA暗号、楕円暗号の2つに対応すること。

IoTデバイスでは高性能な演算器、高性能なアルゴリズムよりも秘密鍵を漏洩させない暗号プロセッサが重要なのです。そしてCPUと比較して少ない資源、トランジスタ数で実装できること。

1999年製なのに、どうしていろいろ対応できるの?

ICF3は1999年製ですがメインフレーム向けに開発されたため複数のファンクションを格納できるプログラムエリア(32bit×512ワード)がありました。IoT製品では、そのIoTで使う1ファンクションだけ実装すればいいので、プログラムを駆使することで、様々なことができることが、その理由です。

ICF3の1命令は、A,B,Cの3っつの1024bit演算レジスタを連結して1bit左シフトしながらA-Dの演算をしてA>=Dなら結果をAに格納して、引き算したことをCレジスタの最下位bitに記憶しておけるというようなことが可能な命令セットで、一般のCPUの命令セットとは異なり、場合によってはかなり効率的です。一方で汎用レジスタのコピーには3命令が必要。コピーしながら他の処理は可能。特定の演算を高速化するための機能が、プログラマの技量次第では、別なことにうまく使えて、かなり短いコードが書ける。

アルゴリズムと性能値

性能値は1999年のICF3のLSIの実測値と完全に同じ値が計算できるシミュレータで計算したもの。シミュレーションしていない予測値もあります。(←それでも、かなり正しい数字)
ICF3は0.27μの設計プロセスでした1999年では高価でしたが、現在では安価になっていると思うので、この性能値はかなり参考になるものだと思います。

RSA 2048bit

暗号演算アルゴリズム 性能 試作コード有無
モンゴメリ乗算+中国人剰余定理 13.4ms
中国人剰余定理 100ms
モンゴメリ乗算 473ms
海外アルゴリズム無し 980ms


RSA 4096bit

暗号演算アルゴリズム 性能 試作コード有無
モンゴメリ乗算+中国人剰余定理 1000ms
中国人剰余定理 2000ms

モンゴメリ乗算や中国人剰余定理について

詳しく知りたい人はWikiモンゴメリ乗算中国人剰余定理を見て欲しいのですが、モンゴメリ乗算はアメリカ人のPeter Montgomeryさんが1985年に発表したものです。中国人剰余定理は、どうも中国人が大昔に発明していたものらしいです。中国人剰余定理がIoTの原価を上げるか?という疑問はあります。しかしながら中国人剰余定理を使うと、実質的には、ほとんど影響しませんが、計算できないケースがあるので、使わない選択はあると思います。

まとめ

ICF3は海外アルゴリズム無しでもRSA 2048bitで1秒を切る性能がでるのでICF3は純国産の暗号プロセッサとしても考えることができて、原価の安い暗号プロセッサです。ファームを入れ替えるだけで性能やアルゴリズムを変更できるため、これ1つで様々なIoTデバイスに対応できます。その結果、IoTの原価が下がる。

2017年6月13日 22:10 追加
性能値はファームウェアの改善で性能があがる場合があります。
ICF3は1024bitのモンゴメリ乗算器が2個ついています。簡単に取り外せます。場合によってはモンゴメリ乗算器をはずしたICF3も考えられると思います。モンゴメリ乗算のアルゴリズムを使っていてもモンゴメリ乗算器を使っているとは限りません。モンゴメリ乗算器を使っているのは表のうち一番上の13.4msのものだけです。