Home
FAQ

ICF3の暗号プロセッサは1人でやったの?

「ほぼ論理設計をしたことがないところから、いきなり暗号プロセッサを1人で設計開発して製品化した」 と言っていますが、インチキしているんじゃないか?会社の人に手伝ってもらったのではないか? とか、そう思う人があるようです。
インチキもしていないし、会社の人に手伝ってもらうこともありませんでした。
数学の才能があったからだと思っています。決して天の声によるインチキではありません。
僕の才能が、どういったものなのか、説明してみます。 僕の高校の数学の先生に「覚えたことは、忘れる」そう言われた先生がいました。 暗記に頼らず、覚えたほうがいい。ということなんだと思います。 続けて「そうは言っても、テストの時間内で回答できるようにするには問題集でカッチリ固めないといけません」 結局、テストは暗記の結果なのだろうと。
暗記が苦手な僕は、楽して覚えないで覚えようとする結果、覚えてないから、 忘れることなく数十年いられる。 (長期記憶ではない、圧縮率の高い非可逆圧縮みたいな感じ。応用範囲が広い。)

参考までに僕が、暗号プロセッサの、ほぼ論理合成できるところがないVHDLファイルをGUIツールで作成しています。 僕以外の人は、VHDLファイルを触っていなかったと思います。 ファンアウトが6を超えないようにバッファを手で挿入していますし、 転送距離が長い配線も、自分で大き目のバッファを入れるということをしています。 そして論理ゲートもANDとか、ORとかではなくて、NAND、NORゲートを使っていました。 幸いなことに2入力セレクタ(2入力マルチプレクサ)は、AND/ORの正論理だったので、 論理回路の可読性が、思ったほど悪くならなかった。
手伝ってもらったと言えそうなのが、Carry Save Adderの使い方を事前に教えてもらっていたこと。 ただし、暗号プロセッサよりも先に、Multi2暗号の設計をやっていて、Multi2のために教えてもらっていたことでした。 Carry Save Adderは乗算器でお馴染みの技術で中身は全加算器のことです。 ちょうど当時のトランジスタの技術に乗算器の作り方があってCarry Save Adderが解説されていたと思います。
VHDLのGUIツールがEDIFファイルを生成します。3000ゲートに分割されたファイルなので、それをつなぎ合わせる ファイルも、僕が作成しています。完成したファイルをレイアウト部署に送付するところまで、やりました。 通常、レイアウト部署から、結果が返ってきて、ディレイ対策をして、再びレイアウト部署に送付するのですが、 ICF3のときは、レイアウト部署から「配置をドーナツ状に修正しました」という内容の打ち合わせをして、 1回でできました。その後、「大型加算器のキャリーの配線を、特別な配線層の配線を使うから、どの配線か教えてくれ」 と連絡があって、特別な配線がされたことを知らされました。
ここで暗号プロセッサというのは、汎用四則演算器+モンゴメリ乗算器のことです。 ICF3を開発していた当時は、「剰余演算器」と呼ばれていました。日立にある当時の資料を読むときは注意してください。
会社は、シミュレーションに頼る設計を、絶対にさせない方針でした。 普通、小さい機能ごとにシミュレーションを通して、正しいことを確認しながら、全部を組み立てるのだと思いますが、 会社は僕にシミュレーションを許しませんでした。ICF2のときは、いきなり全体のシミュレーションをはじめて、 動作しなくて、どこにバグがあるのか、わからず、泣かされました。 ICF3のときは、机上による精密な設計によって、ほとんどバグがなかったように思います。 (人間の脳内でシミュレーションしていただけとも言いますが)
全体シミュレーションは、シミュレーションをする部隊があって、そこでやっていますが、設計の人数には含めないことにします。


ICF3は日立の製品名ではないのか?

いえ。ICF3は開発コードネームです。正式名称はMP5600EX 内蔵暗号機構だと思います。 表彰状にF7C/Eの文字がありますが、F7はMP5600の海外向けの開発コード。"F7C/E"は"F7C"と"F7E"の略です。 表彰状は製品名と開発コードが混在してますけど。海外向けは、記憶に間違いがなければPilotだと思いますが製品名かどうかは知りません。 日立のサイト調べるとMP5600より後の大型計算機で「内蔵暗号機構(ICF)」のような表記はあるようです。 MP5600では、「内蔵暗号機構」という表記でした。(2019年7月3日) https://www.hitachi.co.jp/products/it/server/ap8800/mp_series.html


暗号解読を加速しないのか?

暗号プロセッサのオープンソースOpenICF3を公開していますと言うと、 たまに「暗号解読を加速しないのか?」と聞かれることがあります。
僕の考え方は、暗号解読のコストパフォーマンスはGPUのほうが常に上になるだろうということです。
暗号プロセッサが高いのかというと、そういうことではなくて、 GPUは2048個とか、多数の演算器を持っていても、SSLでは2048個のトランザクションが溜まってからでないと、 演算を開始できない都合、トランザクションのレイテンシに影響します。 このレイテンシを最適化するような論文も過去にあったように思います。 FPGAでは、トランザクションのデータが到着すれば、すぐに演算が開始できるように、 1演算単位に暗号プロセッサを動作させることができるので、レイテンシの問題がありません。 またFPGAではGPUにあるようなDDRメモリは不要で、さらにDSPのレジスタを効率的に利用して、 少ないメモリで動作するため消費電力が小さくて済みます。 現時点ではSSLの演算はGPUよりFPGAが有利だと思っています。
ところが暗号解読ではGPUの演算器の数の多さのほうが、役に立つ場合が多いのです。 すべての解読でGPUに適した並列化ができることは、ないと思われますが。
もう一つの説明は、公開鍵暗号の解読は、専用演算器でなくても、GPUやCPUで効率良くできること。 超並列暗号プロセッサASICを開発するよりGPUスパコンの電気代のほうが安いだろうということです。

GPUも僕の分割加算の方法は使えるので、 レイテンシの問題は、使わないより、かなり改善されると思われます。 ただしアルゴリズムが低基数に変わるので、それで性能が下がると、トータルでの性能は、わからなくなります。 僕の予想はGPUのパフォーマンスはFPGAに劣ると思っています。 僕はGPUのプログラミングも経験があるので FPGAを塞がれればGPUを考えることはあるかもしれません。


日立のCPUとの関係

僕は1994年4月に中央研究所超高速プロセッサ部に正規に修士卒の新卒で入っています。 日立のCPUから何か持ち出されているのではないかと考える人はあると思い、ここで説明することにしました。
結論を先に言うと、日立のCPUとは全く関係がありません。
大学の研究室はコンパイラだったのですがCPUを作りたくて日立に入りました。当時の日立にはCPUがいっぱいあったのです。 1994年4月に日立の中央研究所超高速プロセッサ部の大型コンピュータのCPUを開発するところに入りました。 入社して最初の仕事は大型コンピュータのCPUの性能を測定する仕事でした。 その部署の実体は既に事業部にあり、先輩は、わざわざ研究所まで来て、 将来、自分の仕事を奪われるような行いは、しません。 1日くらいやってきて、性能測定の方法だけ、僕に教えて後は、ほとんど放置でした。 研究所に入って、1年が過ぎようとするところで、IBMのCPUを購入して大型コンピュータを 開発する部署に異動になって、IBMのCMOS CPUと日立のメモリを接続する 電子回路シミュレーションをする仕事になりました。
つまりCPUを作りたくて日立に入りましたが、CPU開発の仕事は、していません。 会社から知識は入っていません。CPU撤退でCPUの勉強をすることはないでしょう。

ちなみに大学の研究室の同期が、その大型コンピュータのCPUを開発している部署に 2年先に入っていました。僕は修士卒だったので2年遅れなのです。 僕が研究所から異動して入ったIBMのCPUを購入して大型コンピュータを開発している部署は、 壁すらない隣の部屋にありました。しかし、その同期とは卒業以来、1度も話したことがないのです。 一切、無駄な動作をさせない会社の方針の結果と、僕は特別扱いで散々仕事をさせられていたからです。

もう1人、大学の電気工学科の同期で同じく中央研究所超高速プロセッサ部に入った人がいます。 大学の研究室は違っていて、早稲田大学の総長になったこともある白井先生の研究室の卒業生。 SHマイコンの部署に配属されています。その後、どうなったのか、僕は知らないのです。

あと1人、大学の理工学部の同期で僕と同じ事業部のプロセッサ開発センターに配属された人がいたと思われます。 大学のコンピュータサークルMIS.Wに所属しているようなうわさを聞いたことが、、、 大学のときも会社に入ってからも、全く話したことがないのです。入社式のとき、一言、ご挨拶したくらいでしょうか。 僕も所属はプロセッサ開発センターだったのですが形式だけの所属でしたので。 プロセッサ開発センターが、何を開発していたのか、あまり知らないのですが、IBMのPowerPC互換のCPUをやっていたらしい。 完成したという話は聞いていないので、途中でプロジェクトが潰れたのでしょうか?
ちなみに僕もICF3のあとIBM 4758 PCI暗号化コプロセッサーの互換製品を開発するプロジェクトに入ったのですが、すぐに潰れました。 IBMの暗号プロセッサを買って、PCIeカードにするプロジェクトで、PCIeの英語の規格書を読んで終わりました。


暗号プロセッサ OpenICF3