Home

ICF3 派生
メモ

20年前のLSIがなぜ役に立つのか

この説明は3年前に書いたもの。多少ずれてきている部分はありますが参考にはなると思います。

20年前のLSIが役に立つはずがないと思う人がいるかもしれない。
20年前の1999年、RSA 1024bitの時代でした。時代が進むとマシンパワーが向上するため公開鍵暗号の鍵長を、だんだん長くする必要があり、現在ではRSA 2048bitが主流となっています。 20年前に開発したときはRSA 1024bitが計算できればよかったので演算器のビット長は1024bitで作られました。(厳密にはIBM互換機の仕様に合うように作られた) ですので本来であれば、現在主流のRSA 2048bitは計算できません。しかし、ある制限を条件にCRTを使ってRSA 2048bitが超高速に計算できるのです。 このある制限がIoTデバイスの暗号プロセッサとして、ほとんど問題がないということなのです。 そのある制限とは、RSAの2つの大きな素数のビット長が、どちらも1024bitであること。 この制限はWindowsなどでも同じで、良く使われています。 IoTデバイスでは、この制限に従う電子証明書を発行すれば、全く問題がないということです。(多くの場合、デフォルトでこの条件にあっていると思われます)  現在、RSA 2048bitですが、将来はRSA 4096bitが必要になってきます。マイクロコードを駆使することで低速ながらRSA 4096bitが可能です。IoTデバイスでは、低速であっても、問題がない場合が多いです。 18年前に開発したときには楕円暗号を計算することは考えられてなかったのですが17年前に楕円暗号が、計算できることを、確認しました。 OpenICF3のサイトでもシミュレータで楕円暗号を実際に計算させてみることが可能です。 楕円暗号の鍵長も長くなってきていて521bitのものもあるようです。 1024bitのモンゴメリ乗算器が、有効に、使えます。 ちなみに、このICF3のモンゴメリ乗算器は、1024bitのモンゴメリ乗算しかできないということはなく、 ビット長に正比例した時間で、任意のビット長のモンゴメリ乗算が可能です。この特長の良さは論理設計屋にしか、わからないかもですが。 RSAの性能よりもゲート面積を小さくしたい場合も対応できます。 1024bitのモンゴメリ乗算器 2個を、1個にしたり、0個にするだけです。 モンゴメリ乗算器の脱着は、とても簡単にできます。 RSA暗号よりも楕円暗号を重視したい場合は512bitの演算器にしてゲート面積を 小さくすることが可能で、マイクロコードの変更が必要ですが、大きな変更にはならない。 結論は、OpenICF3は歴史的なLSIだからいい、というだけでなく、IoTデバイスの暗号プロセッサとして、非常に良くできている。



IBMのRSA暗号の仕様

ICF3はIBMの仕様を実装したものです。IBMの仕様が実装をかなり規定していたのではないか?という疑問があるかもしれない。 現実はIBMの仕様はRSA暗号より一般化されたべき乗剰余演算です。実装が規定されるどころか普通のRSA暗号よりも実装が難しいのです。 ICF3の採用するモンゴメリ乗算の売りは除算器(余算器)が不要であることですが、IBM仕様では除算器や偶数ケースの演算器が必要なのです。