暗号プロセッサのオープンソースハードウェア OpenICF3


暗号プロセッサのオープンソースハードウェア OpenICF3

オープンソースハードウェアとは

オープンソースのソフトウェアで得られたようなメリットをハードウェアでも得られることを期待している。
まだ、あまり広まっていない。
CPUのオープンソースハードウェアにはRISC-V、OpenRISC、OpenPOWER、OpenSPARCなどがあるようです。

暗号プロセッサ

楕円暗号を処理するためには、ある程度、複雑な処理が必要である。
専用演算器にCPUを組み合わせることでも暗号演算は可能だが、セキュリティがない。
そこでCPUの支援なく暗号演算が可能な暗号プロセッサが必要になってきた。

OpenICF3

1999年 日立製作所のメインフレームMP5600EXの内蔵暗号装置にICF3という暗号LSIがあった。
RSA演算器、SHA-1演算器、Multi2演算器、DES演算器を搭載していた。
当時、世界最高速でRSA暗号を演算できた。
OpenICF3は、このICF3をベースにRSA演算器を中心としたオープンソースハードウェア。

OpenICF3のRSA演算器

OpenICF3はICF3のRSA演算器と同一です。RSA演算器の内部に簡素なCPUを持っているため、RSA演算器を暗号プロセッサと呼んでいます。ICF3は1999年製なので現時点で安全な鍵長の暗号を演算できるか?という質問をするなら「演算できます」が答えになります。
演算器は1024bitですがRSA暗号では中国人剰余定理を使うことで2048bitが演算できます。
楕円暗号も安全な鍵長は長くなっていますが521bit程度なので、むしろ1024bitの演算器が、ちょうど良い感じになっています。
性能はかなり落ちますが中国人剰余定理を使わないRSA 2048bitや、中国人剰余定理を使ったRSA 4096bitも可能

OpenICF3の設計思想

  • 極めて簡素なハードウェアでありながら、組み合わせで多様な機能を作れること
  • いろいろな実装系に移植することが容易であること

AND演算器やXOR演算器すらありませんが、実質ゲート数ゼロのOR演算器と引き算用のNOT演算器を使ってマイクロコードで実現できます。
LSIに実装するためには論理ゲートをブロックに分割してLSI平面上に配置しますが、ブロックの種類が少なく、配置が容易です。
配置が容易な理由は、16bitのプロセッサを64個並べて1024bitのプロセッサとして動くような実装であるためです。
大演算器なのでLSI平面上の広い面積に配置しなければいけないが、暗号演算において隣接する近いデータだけでいいような構造を作ることができたのも配置が容易な理由。ただし厳密には注意しなければいけないディレイがいくつかある。

この結果、高い移植性が実現されるのです。

OpenICF3の命令コード

命令コードは32bit長で極端な水平コードになっています。水平コードなので組み合わせで多用な機能が実現できます。楕円暗号は難解なのでOpenICF3向けに開発された楕円暗号のコードを利用できるメリットはあると思います。また独自の暗号アルゴリズムをOpenICF3の命令コードで開発すれば、多くの実装系に移植されるであろう??? OpenICF3のLSIで動作することになります。

OpenICF3のサイト

https://openicf3.idletime.tokyo/
サイトにはシミュレータのWebアプリがあります。RSA暗号や楕円暗号のコードを試すことが可能です。