Home

「マイコン向けのICF3-Vの仕様公開」のページを追加しました。ここから

「18年前のLSIがなぜ役に立つのか」のページを追加しました。ここから

OpenICF3とは

OpenICF3は暗号プロセッサのオープンソースハードウェアです。 日立製作所が1999年に製品出荷したメインフレームMP5600EXの内蔵暗号装置に搭載された暗号LSIであるICF3がベースとなっています。 当サイトはOpenICF3の公式サイトです。 ICF3は開発コード名でRSA演算器、SHA-1演算器、Multi2演算器、DES演算器をもっていました。 RSA演算器は、当時、世界一高速であり内部にプロセッサを持っていました。 このプロセッサは非常に簡素ですが楕円暗号も演算可能であることから、 暗号プロセッサのオープンソースハードウェアとして2016年6月に公開することになったのです。 1999年製ですが、メインフレームの高性能暗号装置として開発されたものであるため、 現在、5ドル程度で売られているIoTのCPUの暗号コプロとして、ちょうどいい感じになっているのではと思います。 1024bitのモンゴメリ乗算器なので楕円暗号 521bit(←512bitではない)も可能ではないかと思います。 (現在確認済なのは楕円暗号 256bitです) RSAの鍵長は、2048bitが主流になっていますがRSA 2048/4096 bitも可能です。 OpenICF3は非常に簡素なアーキテクチャでありながら、暗号プロセッサとして十分な機能を持ち、 IoTマシンの暗号コプロとして活躍が期待できるような気がしています。 またいろいろな実装系に移植しやすい特徴も売りのひとつです。 IoTマシンもセキュリティのため暗号が必要となってくると思われます。 CPUでも演算可能ですが、十分なセキュリティを確保することは難しいと考えています。 OpenICF3はCPUによる支援がなくても楕円暗号を計算できます。

現在、当サイトにはICF3の当時の資料と、多少の解説、ICF3のマイクロコードを実際に動かして試すことができる シミュレータがあります。

OpenICF3の暗号プロセッサの命令長は32bitです。 命令コードというよりはセレクタ信号の集合体で、簡素でありながら、組み合わせで、さまざまな機能が作れ、 リソースがコンフリクトしなければ複数同時に実行できます。

OpenICF3の命令コードは、ハードウェア直結なので、維持することは難しいかもしれないですが OpenICF3の命令コードで書かれた楕円暗号などのコードが再利用していけるような構想を考えています。 OpenICF3のハードが移植しやすいことから、コードの再利用性の効果もあるように思います。

日本にも、こういったプロジェクトがあってもいいような気がしています。 みなさんに応援していただけるようお願いします。 ぜひ、みなさんの参加を待っていますので、当サイトの連絡先まで。 フォローもよろしくお願いします。

当サイトの情報や資料の著作権は、すべてOpenICF3のリーダーの平山 直紀にあります。 無断で配布するなどの行為は禁止させていただきます。


RSA世界一の記録

当時、HP社のSpeedCardに搭載されるFastMap LSIは、1024bitのRSA演算が5msであったがMP5600EXの暗号LSI ICF3は、 それよりも高速に演算することが可能なモンゴメリ乗算を使ったRSA演算器を持っていた。

MP5600EX

HP社の資料ではFastMapは”World's Fastest Crypto Engine” と表現されているが ICF3 が世界最高速の暗号エンジンだったかもしれない。 当然のことながら同時期のIBMのメインフレームの暗号LSIよりもICF3は高速だった。

Speed Card

ICF3とFastMapの比較

製品化時期

FastMap 1999年ごろ?
ICF3 1999年末

演算方式

FastMap 剰余テーブル、CPUコア有り ( PowerPC 401 )
ICF3 モンゴメリ法(b=2)、CPUコア無し(ハード論理で処理)

性能比較

Algorithm

Bit Size

FastMap [ms]

ICF3 [ms]

倍率

RSA Secret Key Sign
 /Decrypt

1024

4.900

3.448

1.42

2048

24.500

13.434

1.82

RSA Public Key Verify/Encrypt
(exponent = 65537)

1024

0.340

0.157

2.17

2048

1.300

-

-

DSS Sign

1024bit(exp:160bit)

7.000

2.160

3.24

DSS Verify

1024bit(exp:160bit)

7.000

3.230

2.18

DH Exponentiation

1024bit(exp:180bit)

3.900

1.221

3.19

1024bit(exp:300bit)

6.400

2.004

3.19

1024bit(exp:1024bit)

22.000

6.727

3.27

ICF3の製品版には中国人剰余定理のコードが入っていないため表の一番上にあるRSA Secret Key Sign/Decryptの性能はでません。 当サイトに中国人剰余定理のコードがありシミュレータで確認可能なので、ぜひ試してみてください。
中国人剰余定理を使うと計算量は、だいたい4分の1になるので理論的には表の一番下にある DH Exponentiation 1024bit(exp 1024bit)の4分の一の時間になるのですがICF3では2分の1です。





以前、ここに東芝の暗号LSIの試作の論文の話を書いていたのですが誤解する人が大勢いそうだったので削除しました。


幻のICF4

ICF3の後継LSI ICF4の設計資料(2001年2月5日)です。会社はICF3の10倍以上の性能を要求仕様としましたが、その要求仕様を満たす設計資料を作成しました。 しかしIBMの暗号LSIを採用することになりICF4は幻の暗号LSIとなりました。
(追記)2017年11月24日 厳密にはICF4の計画が途中で、IBM 4758互換のPCIeカードの開発に移行しているが、IBM 4758も開発計画も、途中で消滅した。
ICF3は低基数(基数2)のモンゴメリ乗算器ですがICF4は高基数のモンゴメリ乗算器を採用した暗号LSIでパイプラインによる高速化が実装される予定でした。 正方乗算器を利用することで自乗の場合にさらに高速化が可能でした。 実際に実装ができることは保証しませんが、少なくとも当時は消費電力が大きいが実装できるだろうと考えていた。
このメモは公式のメモではありません。ICF3の開発者である平山直紀が個人的に作成したメモです。

このICF4についてはOpenICF3のライセンスの対象外で通常の著作物となります。


ライセンスについて

オープンソースハードウェア OpenICF3のライセンスについては、こちらのページを、ご参照ください。