暗号計算機屋のブログ

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

モンゴメリ乗算のアルゴリズムを使わないICF3

背景

ICF3モンゴメリ乗算器を搭載した暗号プロセッサで1999年に製品化、RSA暗号の性能で世界一でした。 現在、IoTデバイスに入れる電子証明書秘密鍵を暗号プロセッサ内で演算させ秘密鍵を漏洩させないことでセキュリティを向上させたいという需要が沸いてきています。 運よく過去のICF3が、そのまま使えるという状況ですが、IoTデバイスの価格を抑えるためモンゴメリ乗算などのアルゴリズムを使いたくない、そういう需要もあるかもしれません (海外の技術に頼らず日本だけの技術の暗号プロセッサがいいというような)。 またIoTデバイスの価格を抑えるには楕円暗号よりはRSA暗号が有利であるためRSA暗号ができないといけない。 そういう条件をICF3は、満たすことが可能なのです。

https://openicf3.idletime.tokyo/

2つの選択

ICF3は暗号プロセッサなのでモンゴメリ乗算器を使わなくてもRSA暗号などの公開鍵暗号の演算が可能です。もちろん性能は落ちます。 まだマイクロコードの実装はしていませんが、おおよそRSA 2048bitで100ms弱の性能です。IoTデバイスの用途では、この性能で許容できるものは多いと思われます。 一つ目の選択はモンゴメリ乗算器を取り外したICF3を開発すること。もう一つの選択はハードウェアはそのままで、マイクロコードだけ変更してモンゴメリ乗算を使わない方法。 どちらの選択が有利になるのかは、時と場合によるのかもしれないので、有利になる方法を選択します。

モンゴメリ乗算器はプロセッサ部に食い込んだ実装になっていないので、取り外しは容易です。

モンゴメリ乗算がないと他の暗号プロセッサより性能低いのでは?

確かにICF3はモンゴメリ乗算器を使うことを前提とした暗号プロセッサなので、他の暗号プロセッサより性能が落ちることはあるかもしれません。 しかし現在のIoTデバイスで沸いた需要は暗号プロセッサ内で演算させることで秘密鍵を漏洩させないことなので、性能が必要ない場合が多いのです。 用途によっては、シビアなレスポンスが必要になって性能が要求される場合もあると思います。 そういう場合には、モンゴメリ乗算器を使ってRSA 2048bitを13.4msで演算させることができます。

ICF3の暗号プロセッサってCPUなの?

まずICF3の暗号プロセッサにはパイプラインはありません(フェッチ、デコード、実行みたいなステートがない)。またメモリもなくて16本の汎用レジスタを使って演算します。 もうそれだけでCPUの技術のほとんどが関係なくなっていると思います。 ICF3は32bitの命令セットのようですが、実は、制御信号の集合体なだけで、CPUのような命令コードが単一の意味をもつ命令セットとは異なります。 少ない制御信号で、様々な演算が可能であることが、ICF3の特長であり、CPUの技術とはあまり関係していないということです。

2017年6月5日 3:20PM 追加

次のURLにモンゴメリ乗算器 0個(汎用演算器で演算)の性能がありますが、これはモンゴメリ乗算器は使っていないものの、マイクロコードでモンゴメリ乗算のアルゴリズムを使っている場合の性能値になります。 この投稿で言っているモンゴメリ乗算のアルゴリズムを使わない性能値とは異なるので、注意してください。 モンゴメリ乗算のアルゴリズムを使わないRSA 2048bit(中国人剰余定理)は前述しましたが、100ms弱の予想です。

https://openicf3.idletime.tokyo/soft/impstatus.html