Home
2020年
2019年
2018年

9月30日 (独) 工業所有権情報・研修館のタイムスタンプ保管サービス終了

INPIT(独立行政法人 工業所有権情報・研修館)のタイムスタンプ保管サービスの終了のお知らせがきました。 「お知らせ」には、次のようにかかれていました。

本サービスの終了はTSAが提供しているサービスに影響を与えるものではございませんので、TSAが提供しているタイムスタンプを先使用権や営業秘密等の立証手段として引き続きご利用頂けると誠に幸甚です。

現状のタイムスタンプが、先使用権や営業秘密等の立証手段として使えなくなったわけではなく、使えるみたいなので、 安心しています。


9月29日 SnakeCube、暗号プロセッサのARMになれるか

RSA暗号は シャミア(ウィキペディアへ)により1977年に公開され、その計算式は非常に単純で、べき乗剰余(g^x mod p)です。 単純な計算式からは想像もできないほど、長年に渡って、さまざまな計算方法が研究されてきました。 その一つであるモンゴメリ乗算のアルゴリズムはPeter L. Montgomery(Wikipediaへ) により1985年に公開され、恐らく1999年のICF3がモンゴメリ乗算を搭載した 初の製品化された半導体チップです。1999年の当時は高速な除算器を使ったものや、 事前に余算した結果をメモリに記録させておく方法などの半導体チップがありました。 ICF3の後も、RSA暗号の高速化は世界中で研究され続けました。そして2018年、 Naoki Hirayama(僕のこと)によって SnakeCubeが発明されたのです。 理論限界を考えるならSnakeCubeを超えるものはSnakeCubeに酷似したもの以外は困難であるように思います。
SnakeCubeはレイテンシ性能、世界一でもなく、スループット性能、世界一でもないと思います。 SnakeCubeはレイテンシ性能とスループット性能がバランスした世界一だと思っています。 それはクレジットカードやマイナンバーカードで使われる次世代ICチップとして最適です。 またSnakeCubeは鍵長が長くなっても性能がほとんど劣化せず、とても作りやすいという特長があります。 インターネットの常時httpsによるサーバ負荷の軽減などでも、役立つことが期待できます。 このSnakeCubeの発明によって人類にRSA暗号の鍵長を長くするという選択肢が 与えられたというのが大きな功績になるかと思います。 SnakeCubeはRSA暗号以外にも楕円暗号など巨大整数の四則演算を使った演算ができます。 新しい公開鍵暗号を発明するにあたって困難性に巨大整数を使うことが容易になることも功績になるかもしれません。
僕が単独で発明してしまったため、横取りして他国の発明としてしまおうと考える人が多く、 僕がSnakeCubeをARMのように成長させ、この国の産業発展に貢献させるしかないと考えています。 横取りした人が自分で儲けるという可能性が少ないのは、僕のリストラに関する問題のためです。
この国の一番の組織が日本政府とは限らず、特許庁が買収されていないとは限らないこともあります。 全く、わかりませんが、しかし、そうだとすれば、SnakeCubeを守るには国民の多くが、 SnakeCubeによるこの国の経済効果を守る必要があるように思います。


9月27日 暗号プロセッサICF3(1999年)の真実の記録として

RISC-Vで暗号のサイドチャネルが話題になっている。日本のRISC-Vと言えば日立製作所の中央研究所が参加しているせいかと。

言いたいことは日立製作所 中央研究所がICF3の設計、開発に貢献したわけではなくICF3の電力解析攻撃耐性などのプレゼンをしていただけ。

ICF3の開発には日立製作所 中央研究所の出身者が僕を含めて3名います。1人は東大卒のICF3のリーダ。1人は筑波大卒のシミュレーション担当。僕は教科書からモンゴメリ乗算の公式だけを切り取られた不十分な英文を丸投げされて、初期検討から製品出荷までを担当しています。

シミュレーション担当はリーダよりも年上でシミュレーションが行えるような手配、作業のみ。テスト項目と期待値は、僕が作っているので不良を検証するための項目を考えているわけではありません。RSA以外の演算器もそうだと思います。

東大卒のリーダは512bitの加算器の設計までは僕といっしょにやっていました。加算器なので既存の方法を実装するのみなのですが、規模が大きいのでファンアウトによる遅延がどのくらいになりそうかの見積もりでした。その後の設計は僕がやっています。

僕は新卒で中央研究所に配属されましたが1年しないうちに大型コンピュータ事業部に転勤になっているので、研究者というより、事業部の(東大卒がいっぱいいる)経営層に近いところにいたエンジニアかも。

僕はICF3の設計案を複数、作るように要求されました。モンゴメリ乗算の基数を最小の2から最大の2^nまで検討しました。このとき基数2なら作れそうだと言いました。その後、数週間の期限つきでモンゴメリ乗算を採用するのか、しないのか決めてくれとリーダに言われました。僕はモンゴメリ乗算は見送りましょうと期限の数日前に提案したのですが、リーダは基数2を強行する決断をしたのです。リーダは、この決断の貢献があるにはありますが、このとき僕が適当に解いたRマイナス1乗の解釈を正しくできている様子ではなかった。リーダは日立のCMOS CPU開発プロジェクトの失敗後、事業部の仕事で多忙になり、ろくに勉強をする時間を与えられていないのです。僕は最初から、そうでしたけど。

ICF3の公式サイトにゲートレベルの全設計図があります。ライセンスには注意してほしいのですが、見ればCPUの技術が役立つようなところはありません。そして巨大なプロセッサを実装するための設計が必要でした。

ICF3の設計・開発の現場に、CPUの技術を持つ人が周囲にいたのですが、そういう人に聞こうとすれば、経営層から怒られるので、聞くことはありません。僕の力のみで設計すれば経営層の利益が大きくなるからです。

ICF3設計の前に、中央研究所が電力解析攻撃への耐性を検討するように、僕に言っていれば中央研究所の成果になったかもしれない。ICF3に電力解析攻撃耐性があるのは、僕の運によるもの。モンゴメリ乗算の公式の不十分なコピーを僕にFAXで送ったのはシステム開発研究所。日立製作所の研究所ではある。

冒頭に書きましたが、日立製作所 中央研究所がICF3の設計、開発に貢献したわけではなくICF3の電力解析攻撃耐性などのプレゼンをしていただけ。

OpenICF3公式サイト


9月25日 日本のみんな、技術がインド企業に漏洩したかも

VVDN Technologiesという企業。 RSA暗号を高速化する製品を販売している。 インターネットで検索してもRSAの技術的な資料は見当たらない。 RSA暗号の高速化は昔から、多くの研究論文がある。 技術的な背景のあるところでなければ製品化は難しいはず。
RSAの高速化の方法は、いろいろあって必ずしも僕のSnakeCubeと同じとは限らないのですが、 インド企業ということで日立製作所が関係しているのではないかと疑った。 手遅れになると大変なので早期に報告することにしました。
1994年、僕が日立製作所 中央研究所に入った頃の年輩の立ち話を、たまたま耳しました。 開発をインドにシフトさせる話だった。 それ以後も日立とインドとの関わりを社内の立ち話で聞くことは良くあった。 そして昨年、インドに日立銀行を作っている。 僕には日立が手引きをしていると疑うに十分な状況なのです。
少なくとも、SnakeCubeは僕が日立製作所を退職して10年以上が経過した 2018年の発明 が入っているので日立製作所が扱っていいものではない。 ここ10年で日立と接触したのは大型コンピュータ事業部の事務系の人、1人と メールで数回やり取りをした程度で、SnakeCubeの共同開発をしているわけではない。 もう少し言えば、僕1人でSnakeCubeの開発をしている。 邪魔をするような助言をする人は、たまにいたかもしれないが、僕のために助言してくれる人はない。
日立が関与しているとしてもSnakeCubeの技術が漏洩していたとしたなら、 日本の損害は大きなものになる可能性がある。 不確定要素が多いですが、問題が大きいと思っています。 日本のみなさん、食い止めましょう。


9月25日 生死をも左右するソフトウェアの設計

GIGAZINE記事 「生死をも左右するソフトウェアの設計・構築はどうすれば完璧に近づけられるのか?」
ツイッターのTL上で話題になっているようです。 飛行機の開発に携わった開発者を、その飛行機に乗せて安全を確かめるみたいな話。
国産OS TRONの技術者17名が墜落事故で死んだっていう日航機123便墜落のことを思い出す人が絶対いそう。 暗に、産業スパイによって僕の脳が破壊されることを心配してもらっているのだろうか。(←というより心配してもらいたい)
10日前の9月15日、暗号プロセッサ SnakeCubeの公式サイトでSnakeCubeは暗号プロセッサのARMのようなものですと書いたので、 これが国産OS TRONのように思えたのかもしれない。
SnakeCubeとTRONの違いは、TRONが(時間さえかければできる)OS技術の集大成、 日本でやっても米国でやっても同じなら、米国だよねと考える人が多い。 一方、SnakeCubeはRSA暗号高速化の長い歴史の中で誰も解けなかった問題を解くことに成功した 高性能&高効率なモンゴメリ乗算器搭載の巨大整数四則演算器なのです。
RSAは素因数分解の困難性を安全の根拠とした公開鍵暗号です。 僕は暗号アルゴリズムの安全性について専門ではないので安全性について言うことができませんが、 巨大整数を使った困難性を持つ新しい公開鍵暗号を発明できる可能性を SnakeCubeによって作ることができると思っています。 耐量子暗号の研究が進んでいますが、万に一つでも全部没になることはないのだろうか。 SnakeCubeによって可能性を作っておくことは必要な気がしています。

(注) 「長い歴史の中で誰も解けなかった問題」と書いた根拠ですが、僕が発明してから今日まで、 日本の特許、米国の論文などを調査していますが、類似するものは見つかっていません。 あまり十分な調査にはなっていませんが、もし類似する発明を他の誰かがしていたとしたら、 常時httpsが普及するあたりで、発明者が騒ぎ出していたはずで、FPGAの実装くらいは、 存在していただろうと考えているのです。


9月22日 RSA 2048bitは2030年まで

クレジットカードなどICチップがついているものの多くはRSA暗号の演算器が入っている。 マイナンバーカードもRSA暗号です。量子コンピュータの進歩によってRSA暗号が破られるリスクは、どのくらいなのか。 デジタル庁の創設の話題の中で、そういった話をしている人も多いと思っています。 政府の組織で、暗号の安全性について検討している組織があって、そういったところの考えを見てみることにしました。
量子コンピュータ時代に向けた暗号の在り方検討タスクフォース
上記ウェブページには2019年「第1回議事概要」「第2回議事概要」「第3回議事概要」と資料があります。 僕が説明するより直接読んだほうがいいと思います。
2030年にはRSA 2048bitを廃止する計画を考えているようです。 2030年までまだ10年ありますからSnakeCube をICカード向けに急ぐ必要はなくて、FPGAによるSSLアクセラレータを先に開発していこうと思っています。 ICカードはFPGAと違って、何度も作り直すことができないので、開発コストが高いのです。 SSLアクセラレータを経由してICカードを作れば、FPGAは何度も作り直せるため、 洗練されたハードウエアを流用できるので、 低コストに4096/8192/16384bitのRSAが演算できるICカードが作れます。
税金をかけて開発してRSA暗号が破られてしまった時のことを考えると、 既に実績のある僕が、頑張れば、通常の開発コストの10分の一以下にはなるだろうから、 僕の稼働効率を100%に近づけたほうがいいのです。 現状、目、頭、体を痛めつけられて10%程度の稼働率です。これをどうにかしたほうがいいように思っています。


9月22日 Torの匿名掲示板に書き込めない

僕が、大麻の密売、児童モノのダウンロードをやっていることにできないか、 考える人が絶対いると思ったので日記に書くことに。 目的はオープンソースのCPUについて語れる場所をTorの匿名掲示板に書き込むことです。 Tor上の匿名掲示板「onionちゃんねる」までは到達できるのですが、その中の Tor板に書き込むところで接続障害が多発して、書き込みがうまくいきません。
自宅からはでは妨害を回避できないと考え、AmazonのVPSにTor Browserが最初から 入っている便利なUbuntuがあったので、VPS上のTor Browserから書き込みをしてみましたが、 2時間近くやっても、接続を切られたり、漢字コードが間違っているみたいなメッセージが出力されたりで、 うまくいきません。漢字コードはUTF-8に変更するなどして対応したのですが、その後、すべて接続が切られました。
接続が切られるところですが、自宅内や自宅とVPS間の接続が切れることも多いのですが、 VPSから「onionちゃんねる」の間で切れているのではと思えることもありました。
産業スパイが、書込みを妨害する理由は、多分、CPUについて語れる場所をGab(マストドン風SNS)にしているからだと思います。 Gabは1年分(約60ドル)を購入しているので、安定稼働する可能性が高い。 僕のGabのアカウントはzeviosです。

ついでに近況を報告
連日、目、頭、体のいたるところが痛み、作業できないほどではないのですが、 作業をはじめようとすると急激に痛みが増大して、作業できないのと同じという日々が続いています。 SnakeCubeの開発を推進するべく奮戦しています。死守する覚悟でやっているので、妨害は損害しか発生させません。 SnakeCubeによる経済効果は大きいと思っています。僕も、そのことを考えています。 産業スパイの中には日本が凹むことに興味がない人もいるので、自らの意思が必要になることはあるように思っています。


9月20日 ネットでデジタル庁の創設が話題になっている

そのコア技術はマイナンバーカードによる電子署名。マイナンバーカードはICチップにRSA署名演算できるハードが入っている。大型コンピュータ向けに僕が1999年に作った ICF3もRSA署名演算ができて世界一の性能でした。ICF3は僕の個人技で作られたもので、ICF3のおかげで日立はこの分野で優勢。だが最大の功労者の僕をリストラしている。僕は2005年の退職時、次の転職先を日立に斡旋してもらうと日立に文句を言えなくなってしまうためICF3を持って出ていくことにしたのです。2016年、ICF3をオープンソースとして公開。東大の学生を含めたグループに「あなた(のような老人)ではICF3を活かすことができないだろうから、貰ってやる」と言わんばかりに、包囲、遠方からの射撃をされていた気がしたが、そんな中、2018年にICF3の性能を飛躍的に向上させる発明をした。数週間前、実機検証が完了した暗号プロセッサSnakeCubeのことです。これは日立にとっては最悪の状況でデジタル庁、マイナンバーカードで重要な半導体技術を、イジメまくった僕が持っているという状況なのです。

RSAは量子コンピュータによる解読の可能性がありますが、デジタル庁によってマイナンバーカードの利用が進めば、まだ安全性が十分に確認されていない耐量子暗号よりもRSAの延命、つまりSnakeCubeが必要なるかもしれない。そして日立は最悪の状況を避けられそうにないと僕は考えています。

SnakeCubeについては、次のURLにあります。
https://openicf3.idletime.tokyo/snakecube/


9月14日 (回想)大型コンピュータを米国に輸出した話

1996年頃のこと、日立の製品化前の大型コンピュータを米国にある子会社に 輸出する仕事をしたことを思い出した。 まだマイクロコードなどのソフトウェアを電子媒体で米国に持ち込むことができず、 マイクロコードを紙に印刷して、段ボール箱に詰めて、手続き書を書いて米国の子会社に送付した。 輸出手続きの仕事は、これが最初で最後なので、あまり覚えていないですが。


9月13日 SnakeCube開発の作業報告

ファイルをダウンロードした直後、ファイルを確認するとファイルがないので ブラウザのダウンロード履歴を確認。履歴が残っていた。ほぼ不正アクセスで削除されたものと思われます。
パソコンの電源が入らないことが頻繁に起きたため、これから少しだけ高いATX電源に交換。 少し高いATX電源なんだからサイバー攻撃に耐えてくれと願う。 パーツを全部外さないとATX電源の交換ができないタイプなので時間を取られるだろう。
ファーウェイへの輸出規制が米国で本格化している中、 公開鍵暗号の暗号プロセッサの発明は重要な技術であるはず。 みなさん、一生懸命、妨害活動をする、この国は、おかしいと思う人になってください。


9月12日 ブログで公開していたコードを削除

僕の書いたブログの古い記事のアクセスが増えているので、あれっっと思って見たら、 バグっているバージョンのコードが公開されていたので、あわてて消しました。
不正アクセスで改ざんされたー、ということではなく更新するの忘れていました。 複数ブログで同じ投稿をしていたりするので「はてぶ」だけ、更新を忘れて、失態を晒していました。
言い訳をするなら、2005年に日立を退職した後、左耳が一度、ほとんど聞こえなったことや、 左右の耳が聞こえなくなることが頻繁にあったこととか、頭痛とかが原因だと思っています。


9月12日 電通大の崎山先生の論文を誤訳してました

申し訳ありません。このブログに書いた内容です。訂正しました。 巨大整数用四則演算プロセッサSnakeCubeが高速である秘密
ブログ全体としては大きな影響はなく、少し下方修正されただけになります。
ただUiからT0iの区間を1サイクルと書いていましたが2サイクルだった間違いは大きく、 関係者にご迷惑をおかけしたかもしれません。


9月12日 セキュリティ・コプロセッサとしてSnakeCubeを

これまで公開鍵暗号の専用演算器はCPUと協調して演算するものが多く、 秘密鍵が漏洩しないようにセキュリティを考えながら、コプロセッサを設計する必要はありました。
電通大の崎山先生(元日立製作所)の専用演算器は、恐らくCPU無しにRSA暗号を演算できます。 普通より事前定数の数が1個増えますが、これは大きな問題にはならない。 ただし中国人剰余定理(with CRT)を使った演算はできないので、 ある種のサイドチャネル耐性が不要な場合は性能が大幅に落ちます。
SnakeCubeは暗号プロセッサがついているので RSA暗号や楕円暗号、その他の暗号演算がCPU無しに演算が可能です。 ISO/IEC-9796のような演算も、可能でした。つまりCPUとの協調動作しないので 秘密鍵が漏洩することがない。またA×D mod B、D×D mod Bを同時にする演算器なので RSA暗号では秘密鍵の値に依存することなく一定時間で演算できます。 その他の暗号でも一定時間になるようにプログラムすればできます。
言いたいことは、セキュリティ・コプロセッサとしてSnakeCubeをお使いいただけないかと。


9月12日 SnakeCube開発の作業報告

眠らされていた時間がながかったため作業は進んでいません。
7:00AM
右手の小指が、何の前兆もなく激しく痛み出した。あわてて右手の小指を見ると、 大きさ5mm×20mmの青あざが、何故かあった。ベッドに倒れこんで、 痛みをこらえていると1分くらいで痛みが引いてきて10分で、ほとんど戻った。 青あざは残っている。
強制無線接続の脳制御プログラムがバグったのか、思わず産業スパイに聞いた。


9月10日 不正アクセスで性能記録を作ったデータは大丈夫だったのか?

8月27日の日記で報告したSnakeCubeのRSA性能の記録ですが、 8月30日の日記 で報告した開発機への不正アクセスでデータが破壊されていなかったのか? と疑問を持った人がいたので説明します。不正アクセスが発覚したのは8月30日ですが、 不正アクセスでデータ破壊があったのは、タイムスタンプ(証明書 ←オンラインによる自動発行)による保管前だったのではという可能性についてです。
今、タイムスタンプされたデータで再現テストをして確認しました。 SnakeCubeのRSA性能の記録は検証できます。


9月9日 SnakeCube開発の作業報告

頭痛で、ほとんど作業が進まなかった。


9月8日 SnakeCube開発の作業報告

腹痛で日記を書くこと以外できなくなったので作業報告をします。 48bit版のSnakeCubeで手動による配置をしています。図のオレンジの部分が手動配置したLUTやFFです。
8月27日の日記に書いていますが 暗号プロセッサSnakeCubeの性能が実機で測定され、高性能、高効率であることが実証されたと思っています。 このSnakeCubeによって新規の商機が発生するレベルに達していると考えています。
頭痛発生センターは、腹痛を発生させ僕の崩壊によって解決を図ろうとしていますが、 崩壊しないように気合を入れてますから、この方法では無駄に時間が過ぎて、損失が大きくなるばかりだと思います。 頭痛発生センターを止めることを考えてください。

6:00AM
 腹痛が強い痛みに変わった。もう1時間くらい経過するだろうか。

6:30AM
 腹痛が頭痛に変わった。

7:30AM
 頭痛が悪寒に変わった。

図をマウスでクリックすると拡大されます


9月7日 SnakeCube開発の作業報告

昨日から今日の夕方まで新型の腹痛に悩まされ、痛みはそれほどではないものの、 作業は完全に止まっていた。 これまでSnakeCubeの配置、配線を論理合成に任せてきたが、手動で配置するとどうなるのか、 作業を進めています。楽しみ。


9月6日 Red Hat Linux 1年99ドル購入

このお布施で不正アクセスや機器の故障が無くなること期待。


9月6日 耐量子暗号FALCONをIoTの実装で比較(2)

前回の説明では少しわかりにくかったので、明確に言うと、結局、 高性能な公開鍵暗号を必要とされるIoTではARM搭載のFPGAデバイスZynqが優勢になるかもしれない。 FALCONもFPGAを使えば、もっと高速になるはずで、 最初はRSAで様子をみながらFALCONに切り替えることも、考えられます。
前回の説明でArty A7にしたのはZynqより製造原価が安価に見えて利益率がいいように思えたので。
SnakeCubeが搭載されたZynqやArtyが売れるようになれば、いいなぁ。


9月6日 耐量子暗号FALCONをIoTの実装で比較

FALCONの勉強を開始してまだ半日ですが、多分大丈夫。FALCONは現在も勝ち残った耐量子暗号で署名ができます。 SSL証明書を搭載したIoTを想定した比較をします。 良くあるケースではないかもしれないですが、普通にありそうなケースかも。 FALCONの公式サイトにARM Cortex-M4を搭載した評価ボードの結果があったので、その数字を使います。 正しい数字を使いながら、僕のSnakeCubeが良く見える前提条件を選定することで、SnakeCubeの優位性を説明するものです。
SnakeCubeはDIGILENTの評価ボード Arty A7-100Tを使います。 本日のAVNETでの価格 は2万6000円でした。このFPGAボードにソフトRISC-VとSnakeCubeを搭載してWebサーバを作ります。 SnakeCubeでRSA 3072bitを演算するには134個のDSPが必要です。Arty A7-100TのDSP数は240個です。 FPGAの約半分以上がSnakeCubeで、残りをRISC-Vや、その他の回路で使用します。 RSA 3072bitの署名は、8月27日の日記 のRSA 2048bitの結果から約4[ms]です。予測値なので、実際にやると、もっと下がる可能性はありますが、 大きく下回ることはないと考えています。
FALCONの公式サイトにあるARM Cotex-M4搭載ボード。 STM32F4 discovery(STM32F407VG-DISC1) 168 MHz、RAM 192KBです。 FALCON-512の署名は126[ms]です。仮にARMのクロックを3GHzにしてもFALCON-512署名は 7[ms]くらいなので、それでもSnakeCube RSA 3072bitに勝てません。
安全性についてFALCON-512はRSA2048 bitと比較されることが多く、 RSA 3072bitのほうが安全と考えられます。
FALCONの他にも勝ち残っている耐量子暗号がありますが、FALCONだけを考えるなら、 XilinxのFPGAを搭載するDIGILENTのArty A7-100TでIoTのウェブサーバでいいのかも という結論。やったー!
言いたかったことは僕の脳破壊は産業への影響が大きいから止めさせないと。 これで言えたか!?今も、頭痛で辛いです。

FALCON以外の耐量子暗号も、近いうちに、調べるとしよう。


9月5日 国内大手メーカ製Wi-Fiルータの調子が悪い

国内大手メーカ製のWi-Fiルータを数年前に導入してから、ほとんど問題を起こすことなく稼働していた。 電源を入れなおしても、なんとなく動作するものの正常動作しない。 Wi-Fiルータの設定をすることになるが、何とWi-Fiルータを設定できるような安全なパソコンがない。 OSのクリーン・インストールをはじめようとしたが、まずはHDDにセクタ不良がないかの確認。 HDDの検査に7時間30分かかると表示された。ああ、時間が過ぎていく。
頭痛発生センターを閉鎖しない限りは、稼働し続けるわけで、頭痛はするし、目は見えにくくなるし、 頭はボケるし、体は痛くなるし、かゆみも発生するし、どれも緩く、だが続いている。 全体として僕の稼働率が10%くらいまで、落ち込んでいる。


9月5日 Vivadoの論理合成が突然、劣悪になった件

9月1日の日記で報告したものだが、今日まで、これに悩まされ続けた。 経験的には不正アクセスでverilogのソースコードを改ざんをする可能性は低いと思っていたからだと思う。 速いクロックから遅いクロックへのマルチサイクルパスのディレイ制約が改ざんされていた。 セットアップとホールドの2つの制約をするのだが、ホールドの制約で信号名に アンダースコアの1文字を追加してホールド制約が無効にされていた。
ホールドが無効になったまま論理合成をすると、デフォルトのマルチサイクルのホールド条件を満たすため、 時間をかけて試行錯誤して、劣悪な合成結果を出力するようです。Vivado 2020.1では。
Vivado 2019.2で、同様の論理合成をすると、ホールド制約を守ることを、すぐにあきらめて、 ホールド制約違反の合成結果を出力しました。
Vivado 2019.2がホールドをすぐにあきらめてくれたおかげで原因が一瞬で判明しました。
不正アクセスによって1週間という時間を奪われた。


9月5日 昨日の不正アクセス対応(6)

頭痛が激しくなり眠っているうちに次の日になっていた。 起きてパソコンを触ろうとすると、日本メーカのディスプレイがスタンバイから復帰しない。 初めての現象だ。またかと思った。数分、もたついた。 CPU切替器の故障を疑ったがディスプレイの電源ケーブルを一度、抜いたら正常動作に戻った。


9月4日 昨日の不正アクセス対応(5)

8月30日にあった不正アクセスについて今後の対応策を検討中。 SUSE Linux Enterpriseを購入してみるか、Red Hat enterprise linuxを購入してみるか、 取り敢えず、どちらもダウンロード、インストールして使用感を確かめているところ。 SUSEのセルフサポート3年が135ドル、Red Hatはセルフサポート1年で99ドル、ただし開発者無償というプランもある。
僕みたいに違法手段で監視されている人間にとっては3年135ドルがいいのかもと。 一般では開発者無償というのは、有難いのかも。
オフラインインストールで便利だったのはSUSE、普段使っているツールが入っているので、 インストールの手間が少ない。 ちなみにRed Hat 8.1はVivadoが対応していると書かれているがRed Hat 8.1のオフラインでは起動しなかった。 Red Hat 7.7で起動するところまで確認している。
SUSEが便利なのでSUSEを選択したいのですが、不正アクセス対応策において 米国 Red Hatの神様にお布施を払ったほういいのか、どうか。というところ。
Red Hat 7.7でVivadoの動作を確認しつつ、選択を考える。


9月2日 2048ビットRSA暗号は量子コンピューターでいつ破られるか?

MIT Technology Reviewの過去記事(有料記事) 2048ビットRSA暗号は量子コンピューターでいつ破られるか? がツイッターのタイムライン上に見えてしまって、 これどうなの?と言わんばかりだったので1ヶ月だけMIT Technology Reviewを購入してみることに。
僕は、この記事の有料購入を、あんまりお薦めしない。 RSA 2048bitは安全ですと、メディアで報道しても、真実が変化するわけではない。
多少ネタバレになるのかもしれないけど、Googleやスウェーデン王立工科大学に「所属する人達」 の研究によって量子コンピュータによる解読が2桁という単位で進歩しました。 だけどRSA 2048bitは安全ですという内容。もう一度、誰かが2桁以上という単位で進歩させたら、 安全じゃないでしょうと、言いたい。「1度あることは2度ある」という日本のことわざがある。 なぜ1度しかないと言い切っているのだろうか。


9月2日 昨日の不正アクセス対応(4)

SUSE LinuxにVivadoをインストールしてSnakeCubeを論理合成しました。 現象変わりません。SYNTHESISは成功しますが、IMLEMENTATIONが終わりません。 ネットワークから切断してSUSEはオフライン・インストールしています。 Vivadoもpgpで検証したものをライトプロテクトされたSDからインストールしています。 このことからサイバー攻撃している箇所が、マシンのハードに内在するかもしれない。
言いたいことは、僕は元大型コンピュータのハードウェア設計エンジニアで、 普通の人よりは詳しい、ハードに内在することを説明できる能力が高いのです。 これからサイバー攻撃による制御が、できなくなることのほうが困ると思われるので、 僕へのサイバー攻撃を諦めていただければと思います。
SnakeCubeのソースコードにIMLEMENTATIONが終わらないバグをサイバー攻撃で仕込まれた可能性があります。 この騒動でSnakeCubeのRSA2048bitの性能、Xilinx FPGAにおける性能を、疑問に思わせることがうまくいっているのかもしれません。
このYouTube動画にあるように、 きちんとFPGAの実機で動作させてLEDが正しい答えを表示しています。 LEDが正しい答えと周波数を表示するには、少なくとも230MHz以上で動作する以外ないので、 疑問に思った人は、疑問に思わなくていいように考えます。

補足すると、性能実験の仕組みによっては、成功すれば成功したというLEDが点灯するだけの 性能実験もあります。 その場合、僕自身が正しく性能が出ていたことを確信できず、ここで真っ青な顔をしていたことでしょう。 上記、説明の通り、僕は性能が出ていたことを確信しているのです。


9月2日 昨日の不正アクセス対応(3)

SUSE LinuxにVivadoをインストールして再度、SnakeCubeの論理合成結果が変になった件を確認しようとしています。 SUSE LinuxとVivadoをインストールした直後、マシンを再起動してもOSが起動しなくなった。 HDDが故障してないかHDDの全領域をアクセスする診断ツールでテストしても何の問題もない。 原因不明。妨害によるものかも。 しかたなく、もう一度、SUSE LinuxtとVivadoのインストールをしています。
ここからは、通常のパソコン管理作業。一昨日、通販で購入したSSDの性能テスト。 リード・ライト 500MB/s前後の数字が出ました。販売店の提示している性能が出ていることの確認。
Vivadoで論理合成をするために購入したメモリの動作検証。 数年前、同じマシンでメモリ増設をして失敗した経験があったのですが、今回は成功しました。

今日も頭痛と目が辛かった。今日みたいなパソコン管理作業でなければ、1日ほとんど寝ていたということになっただろう。 SnakeCubeの海賊版を作る人が、いなくなれば、頭痛が止まるかもしれない。 頭痛の目標は、僕の脳破壊で行動不能になったところで、海賊版に移行をする戦略だと思う。 海賊版をする人は、頭痛との関連性を考え、絶対に止めてください。脳破壊の共犯者になると思いますから。 破壊がどの程度か、知らない人は精密に判定したほうがいいかもしれません。精密に日記に書いています。


9月1日 Vivadoの論理合成結果が変になった

48bit版の小さいSnakeCubeをVivadoで論理合成すると3時間以上かかって、尚且つ、 合成結果が恐ろしく性能が悪い。作業が完全に停止して3日目になる。目や頭に絶えず苦痛を与え続けられていることも問題。
OSをSUSEに変更してみることに。SUSEをインストールする場所が見つからず、 eSATAで内蔵HDDを外付けすることに。電源は古くなったATX電源を活用。 画像はATX電源をマザーボードに接続しなくても電源が入る基板。


8月31日 昨日の不正アクセス対応(2)

新しくVivadoをインストールしたマシンでもSnakeCubeの48bit版の合成(Implementation)が終わらない。 妨害がまだ続いているということ。VivadoはWindows10とCentOSで使っているがSUSEへの変更を模索。 SUSEのダウンロード中。
SnakeCubeは非常に小さい実装で高性能を実現したため、これまでにないシステムが作れるようになると思われます。 SnakeCubeによって小型ネットワーク機器のシステムでRSA暗号を採用しやすくなるのです。 楕円暗号しかサポートできない暗号チップでは、楕円暗号が解読される心配から、公開鍵暗号を使ってシステムを作れないと 思う人も多いと考えます。楕円とRSA暗号をサポートできるSnakeCubeであれば、どちらも解読の心配はあるものの、 公開鍵暗号を使ったシステムを作れると思う人も出てくると思います。
僕への妨害が続けば、産業の発展が妨げられ損害計上されると思うのです。


8月31日 昨日の不正アクセス対応

不正アクセスされにくい構造にすることかと思っています。 Vivadoが動くマシンをもう一台、増やしました。メモリ不足なマシンだったので、 メモリを購入。ついでにSSD、USBメモリも買いました。
小さなトラブルであっても、多数発生して、ほとんど作業が進まないという状況。 世界は待ってくれないはずなので、危機感を持つべきなんだと思います。

世間ではイーロン・マスク氏が豚の脳に電極を埋め込んで、埋め込みをはずした 豚が元気とかニュースになっている。
僕は、長いこと頭痛に悩まされていますが、この頭痛非破壊ではありません。しかも手術不要です。 豚の話は、危険なので頭痛がなくなれば話すことはなくなると思うのです。


8月30日 開発機まで不正アクセスで侵入されているかも

開発機のVivadoでSnakeCubeの48bitの合成しました。通常、合成に10分かかることはない。 ところが2時間を超えました。開発機に不正アクセスがあったものと推測されます。
幸いINPITのタイムスタンプ保管サービスに タイムスタンプを保管したばかりで、そのときバックアップを複数していたため、 ソースコードが破壊されていても大丈夫では、あります。 経験的には、ソースコードを破壊することはなく、産業スパイにとって不都合な小さな問題を 改ざんすることが最大だと考えています。
産業スパイが自宅に合い鍵で侵入して証拠隠滅してくることを想定して対策しています。 いくらINPITのタイムスタンプ保管サービスでタイムスタンプを保管しても、 データを破壊されると、SnakeCubeの記録を証明できなくなるのです。 産業スパイがデータ破壊に成功すると、別の企業で悠々とSnakeCubeの海賊版を作る ということができてしまうのです。
体中が軽く痛んで、動けなくなっている時間が長くなっています。 このまま妨害活動を野放しにしていれば、まだまだ続くと思われます。 脳神経を乗っ取られて、半分失神させられていることもありますが、 この予期された状態を冷静に分析し、対応していくので、結局は、 妨害活動を止めないと被害が拡大していくように思いますが、どうでしょうか。


8月29日 ソフトRISC-VとSnakeCubeでネットワーク機器みたいな

Facebookにインドが国をあげてRISC-Vのアプリケーションをコンテストする記事が投稿されていました。 XilinxのArtix7-35TまたはArtix7-100T FPGAボードが配られるとか。
ここからは、インドの話とは無関係になりますが、Artix7-35Tは、 僕がSnakeCubeでRSA 2048bitの性能測定で使ったものです。 Artix7はCPUは付いていないのでRISC-Vのソフトプロセッサになりますが、 ネットワークの認証などの重たい公開鍵暗号の処理はSnakeCubeで高速に演算できます。
高性能なARMマイコンよりもSnakeCubeは高速なので、たとえソフトプロセッサのRISC-Vが遅くても、 高性能なARMマイコンでは満たせない要求仕様を満たせるかもしれません。 例えばRSA 4096bit以上になってくるとネットワーク機器では遅延が問題となる場合は、 SnakeCubeを実装したFPGAが活躍するのかも。
ARM Cortex-A57 1.43GHzをopensslで性能測定するとRSA 2048bit(Private CRT)6.23[ms]です。 SnakeCubeはモンゴメリ乗算器1個(DSP 45個)なら3.05[ms]、モンゴメリ乗算器2個(DSP 90個)なら1.74[ms]です。 (SnakeCube単体での性能なので組み込んだときに、少し性能が下がる可能性はあるかも)
RSA 2048bitでもSnakeCubeが活躍できるかも。

The...

Risc-V Associationさんの投稿 2020年8月28日金曜日

8月29日 Xilinx ZynqにSnakeCube組込みソリューション

そういうソリューションを作れば、できるかもという話です。
Xilinx ZynqとはARM CPUを搭載したFPGAチップのことでLinuxを動かしてIoT機器をすぐに作れてしまいそうなものです。 安価なZynqは僕がSnakeCubeを実装したArtix-7なのでSnakeCubeをすぐにZynqへ組み込むことができると思います。
組込み向けの高性能なARMよりもSnakeCubeはレイテンシ性能が上なので高性能なARMマイコンより 安価なZynqのほうがコスパが良くなるケースはあるかもしれません。 RSA暗号の計算はSnakeCubeで全部やるのでキャッシュから秘密鍵が漏洩するというような問題はありません。 SnakeCubeのアーキテクチャ的には秘密鍵が漏れるということはありませんがFPGAに実装した場合は、 秘密鍵が漏れないことを保証するのは難しいかもしれません。
安価なZynqではDSP 90個以上のものは、あまりないのでモンゴメリ乗算器1個のSnakeCubeとなってしまいます。 RSA 2048bit(Private CRT)の性能が3.05[ms]です。Cortex-A57 1.43GHzでも6.23[ms]なので3.05[ms]の性能が必要な IoTではZynq+SnakeCubeになるでしょう。
DSP90個以上のZynqにすればモンゴメリ乗算器2個を使って1.74[ms]の性能も出ます。
RSAの性能不足でARMマイコンでは不可能なシステムでも、Zynq+SnakeCubeを使えばシステムが作れて、 大量に売れればSnakeCubeもXilinxも、儲かるということなんだろうと。


8月29日 SnakeCubeはSSHの公開鍵に対応できるか

GIGAZINEの記事 『SSHの公開鍵暗号には「RSA」「DSA」「ECDSA」「EdDSA」のどれを使えばよいのか?』
記事の最後にRSAとEdDSAと書かれているのですが暗号プロセッサSnakeCubeでEdDSAが 実装できるのかという話をします。
ただ一日中、頭痛や体の痛みでほとんど作業が出来ていない状況で、詳しく調べる時間が取れません。 四則演算、論理演算、モンゴメリ乗算ができるだけで良ければEdDSAを実装できると思います。 つまりSnakeCubeでSSHの鍵を守れます。
EdDSAは計算量が少ないみたいなので、高速化はいらないかもしれないですが、 SnakeCubeでのプログラミングは2つのモンゴメリ乗算器を使って高速化することです。 モンゴメリ乗算1回でA×D mod BとD×D mod Bの2つの乗算をします。 これを実行するモンゴメリ乗算器が2個あるので、これらを並列動作させて高速化します。
数か月前の日記でXilinxの別のシリーズへの対応や、IntelのFPGAへの対応ができそうか、 SnakeCubeのシミュレータを作って確認しています。FPGAはASICと違って、 乗算器のバラツキが大きいため、命令セットで違いを完全に吸収するのは、難しいのです。 なるべくプログラマから違いを見えないようにした命令セットにしていって、 暗号プロセッサのトップシェアへと向かえば日本の産業として大きくなるかなぁ。
脳神経を乗っ取って頭痛や体に痛みを与える人を異動させないといけないのかもしれない。


8月28日 僕の発明が国の研究のコア技術を超えた

詳しくは昨日の日記にあります。国の研究とは、 FPGAデバイスの特性を活かした高効率なFDFM Processor Core(広大演算器)によって科学技術計算で役立てようというもの。 その効率を僕の発明(SnakeCube)が、上回るということを昨日の日記で説明しています。 そしてSnakeCubeはスループットの効率だけでなく、レイテンシ性能においてはFDFM Processor Coreの50倍以上であり、 SnakeCubeが、いかに画期的な発明であるか、説明できたように思います。
国の研究ですから、税金がそれなりに投下されています。 僕の方は10年以上前に退職に追い込まれ、それ以来、ほとんど収入がない状態です。
SnakeCubeを国の研究に持って行きたいと思う人はあるのかもしれませんが、 前述した僕の状態のため難しくなっています。
国が研究しているコア技術を超える発明を支えるため、 なるべく税金ではなく商業で儲けることで賄えるという方向を模索しています。 僕が開発するSSLアクセラレータが売れることなのだと思います。
これまでの研究をしてきた研究者の生活はどうなるのか?という疑問について。 僕は修士卒で日立製作所の中央研究所に入り、すぐに実践配備され、運よく活躍して、 ICF3で大活躍をした後、退職に追い込まれ、もう10年以上、ほとんど収入のない生活を しているという問題の解決を、みなで考えて欲しい。一応、僕も研究者として就職した身です。
この発明は2年以上前に発見されています。妨害が防がれていれば、1年はかからなかったと思います。 今後は、発明の円滑な運用や、僕の状態の改善を考えていくのだと思います。


8月27日 暗号プロセッサSnakeCubeと広大演算器を比較

昨日、SnakeCubeのRSA 2048bitの記録を更新してタイムスタンプによる記録保存を行いました。 RSA 2048bit(Private CRT)の1.74[ms]が、どのくらいの性能なのか、比較をしないと、 わからないという人が多く、ネットを検索して論文を探しました。
広島大学の中野先生の論文が見つかりました。
The Parallel FDFM Processor Core Approach for CRT-based RSA Decryption

実は、この論文の存在は以前から知っていました。 今日、科研費の検索サイトで中野先生のプロジェクトを見つけ、データの改ざんを発見しました。 不正アクセスで改悪されていました。改悪の度合いが異常だったこと、上記の論文の存在を知っていたので、 気づくことができました。政府関係のサイトであっても改ざんされていない保証はないなと思いました。
中野先生は、少しだけ日立製作所にいらしゃったようです。広大演算器と勝手に呼んでしまいますが、ご容赦ください。 この手の研究は数字が精密に出てしまって、厳密に比較できてしまうのです。 発明は、時間や研究費に比例するものではなく、僕も日立製作所の中央研究所に入ったことがあるくらいの人なので、 SnakeCubeが広大演算器を超えることを言うのですが、お気になさらず、見てやってください。
広大演算器はスループットに特化した演算器です。 僕のSnakeCubeは90個のDSP(乗算器)を並列動作させて高速に演算をします。 一方、広大演算器は1個のDSPと1個のRAMの演算コアを複数使ってスループットを稼ぐ方式です。
上記論文の広大演算器はXilinxのFPGA、Vertex-6 XC6VLX240T-1 を使っています。 SnakeCubeで記録をだしたFPGAもXilinxでArtix-7 XC7A35TICSG324-1Lを使いました。 DSPは、どちらもDSP48E1なので全く同じ、Vertex-6 XC6VLX240T-1が600MHzで動作するのに対し、 Artix-7 XC7A35TICSG324-1Lは464MHzが最大なので広大演算器のFPGAのほうが少し高性能なのかもしれません。
論文にはRSA 2048bit(Private CRT)が98.21[ms]とあってSnakeCubeは1.74[ms]ですからレイテンシ性能は SnakeCubeが圧倒的に勝ています。デバイス当たりのスループットを考えます。 広大演算器がArtix-7 XC7A35TICSG324-1Lに何個、入るかを考えれば良さそうです。 Artix-7 XC7A35TICSG324-1LにはBRAMが50個しかないので50個が限界です。 スライスで計算すると48個程度かも。(1コア、108スライスで計算)
98.21 ÷ 48 = 2.05[ms]
通信回路の領域を考えてないので実際には2.05[ms]よりも低い性能になるでしょう。
SnakeCubeも、通信回路を空いている領域に入れると、少し周波数が落ちる可能性もありますが、 1.74[ms]と考えます。
SnakeCubeはデバイス当たりのスループットでも広大演算器に勝る

これまでRSA 2048bit SSLアクセラレータとして広大演算器が有利だと思われがちでしたが、 RSA 2048bitでもSnakeCubeが、お買い得!という結論です。 スループット特化型よりもスループットで勝るSnakeCubeの効率の良さが伝わればと。

SnakeCube 1個のDSPの数は90個なのでDSPが170個のデバイスでは1個しか入らないことを考えると 必ずしもSnakeCubeがスループットでも勝るということはないのかも。 逆にVertex-6 XC6VLX240T-1にSnakeCubeが何個入るかを考えます。 デバイスにDSPが768個あるのでSnakeCubeは8個入ります。一方、論文では広大演算器は320個入るので
広大演算器 98.21 ÷ 320 = 0.307[ms]
SnakeCube 1.74 ÷ 8 = 0.218[ms]
こちらもSnamkeCubeがスループットで勝っているようです。


8月27日 SnakeCube、RSA2048の記録を更新(3)

日記(1)日記(2)に続いて、また記録を更新しました。 XilinxのFPGA(XC7A35TICSG324-1L)を搭載するDIGILENTのArtyでRSA 2048bit(Private CRT)が1.74[ms]で計算できました。 90個の乗算器を全部、236MHzで効率的に稼働させています。乗算器の稼働率は74%。 乗算器を使っていないときもシフトレジスタとして使っているのでDSPの利用率は、ほぼ100%です。 FPGA(XC7A35TICSG324-1L)デバイスの限界は450MHz以上ですが、Xilinx Artix-7では236MHz以上は厳しいかもしれません。 Alveo(UltraScale/UltraScale+)ではデバイスの限界にもう少し近づけることができるかもしれません。 (DSPがArtix-7より高機能なのでDSPだけでループさせられるかも)
1個のモンゴメリ乗算器は45個のDSPで構成されていますが、 暗号プロセッサによって2個のモンゴメリ乗算器を並列に動作させています。 Vivadoの画像をみると上にまだ通信回路が入りそうな余地があります。 恐らく、通信回路を入れると配線リソースを暗号プロセッサから奪うので周波数が236MHzから下がるのだと思います。 LEDで周波数236MHzを確認したverilogをタイムスタンプして証明書(PDF) を発行してもらいました。(オンラインによる自動発行)
YouTubeに記念動画もアップしています。


図をマウスでクリックすると拡大されます


8月26日 腹痛、イテテ

午前2時。腹痛とともに目が覚める。 脳神経を乗っ取られているので、いろいろなことが起きるが、この腹痛は初めてかもしれない。 1時間近く、叫びならがらベッドの上を、のたうち回った。激痛ではないが、内臓破壊されてないか心配。

午前3時15分。再び痛みが増して、ベッドの上をのたうち回った。

正確な時間はわからないが午前4時ごろには痛みがなくなって、午前6時過ぎまで、ぐっすり寝た。


8月25日 Xilinx Alveoを買うか迷う

2003年、PCIカードのSSLアクセラレータ AEP1000Lを秋葉原のお店で買った。 当時の僕は日立の金融部門で認証局関係の仕事をしていたが、 趣味で自分のお金で購入。税込み13万4400円。性能はRSA 1024bit(Private CRT) を1秒間に1000回というのが公称値でした。 RSA 1024bit(Private CRT)1回の時間は20[ms]だったと思います。 1999年のICF3は3.48[ms]でしたから、まだまだ負けていませんでした。

XilinxのAlveoはPCIeカードなので僕のSnakeCubeをインストールすれば AEP1000Lのようなアクセラレータカードとして、すぐに使えそうな気がしています。 SnakeCubeは、暗号プロセッサですが、AlveoにはPCIeのハードとドライバが用意されていると思うので、 すぐに作れそうな気がするのです。
作れば、どのくらい売れるのかと、思いつつ、Alveoを眺めているところ。 Alveo U50は30万円以上、売れる当てがないと、ちょっと厳しい値段。 動画配信用にAlveo U30が既に販売されているが、一般向けにはまだのようです。 SSLアクセラレータとして性能はDSP 5952個のU50がいいのか、DSP 1728個のU30がいいのか。 SSLアクセラレータの場合、性能があっても使いきれないと、無駄になるので、試案のしどころ。
僕がQiita投稿した RSA 8192bitの性能を測定するソースコードを見るとわかるのですがRSA暗号は 鍵長が長くなると、非常に重たくなっていくので、そういった将来を考えるなら 高性能なAlveoでもいいのかもしれません。
まだ半分ぐらいしか検証できていませんが、SnakeCubeは、鍵長が長くなっても CPUと比較して性能が落ちないので、鍵が長くなった場合、AlveoのSnakeCubeは活躍するかもしれません。
半分の検証で言うのは、多少無理があるのかもしれないですが、SnakeCubeを実装した Xilinxのローエンドに近いFPGA(XC7A35TICSG324-1L)でRSA 2048bit(Private CRT) 1.77[ms]という数字が、 もうすぐ出ます。この数字からRSA 4096bit(Private CRT)の数字を作ると8[ms]くらいになります。
上記、Qiitaブログで一番、性能がいいCore i3 3.4GHzの数字は6.5[ms]ですから、RSA 4096bit以上では Xilinxの比較的ローエンドのFPGAがレイテンシ性能で上回ることになり、 結論を急ぐとAlveoのSSLアクセラレータが活躍することになると思っています。 実はレイテンシ性能が下回っていてもSSLアクセラレータでは、あまり問題なく、現状の鍵長でも、 十分に活躍します。
SSLアクセラレータといっても秘密鍵を堅牢に守りたい需要はあると考えられるため、 万が一、ASICのSnakeCubeを作ろうということになれば、Alveo SSLアクセラレータと競合することになる。 このあたりがAlveoを購入しようかと思う理由。ASICのSSLアクセラレータと比較してAlveoが安価なら、 Alveoも売れるのかもですが。
SnakeCubeの暗号プロセッサの命令セットを公開して素数判定などの処理や、科学技術計算向けのアプリを Alveoで走るようにすれば、Alveoの価値は上がるのかもしれない。

画像はAlveoではなくてAEP1000Lを買ったときのレシートと、購入したAEP1000Lの写真。


8月23日 Verilog版のSnakeCube開発(47)

作業報告のみ。頭痛で軽く思考できなくされていていることも作業が進まない原因。 暗号プロセッサSnakeCubeの性能を決めるモンゴメリ乗算器の周波数を改善するべく試行錯誤しています。 とりあえずモンゴメリ乗算器を構成する90個のDSPの位置を固定してみたところです。 下図(VivadoのImplementation)でオレンジ色の縦の線が2本あると思いますが、それが90個のDSPです。 クロックの位相を45度ずらしてみたり、いろいろやっていますが、250MHzを達成するものが合成されず、 合成結果の詳細を細かく分析しています。
設計時にディレイの厳しいところは、ちゃんと対策しているのですが、合成でディレイを満たさなくなるまで、 論理圧縮されて、あれれとか。そんな状況。

図をマウスでクリックすると拡大されます


8月23日 改めて電通大演算器との比較

巨大整数用四則演算プロセッサSnakeCubeが高速である秘密 で電通大演算器と呼ぶことにした崎山先生の論文ですが、改めて読み直すと少し違っていたので、訂正したいと思います。
僕のツイッターのタイムライン上に電通大演算器を忘れてくれというツイートを見かけた。 どうも電通大演算器の論文を読み直して欲しいのだと解釈。パソコンのHDDに保存してあった 崎山先生の論文を読み直しました。何が言いたいかといえば、ここ数日の日記を読んでいただければわかるように Vivadoが勝手にフリーズする環境なのでパソコンに保存してあった論文が改ざんされていない保証はない。
都合のいいように論文を改ざんをして、それを僕に読ませるきっかけをツイッターで与えた。 僕はそう判断しています。この方法、これまでも何度か、やられたことがある。 東大関連が陣頭指揮している感じ。
これまでの経験もあって、疑いましたが、論文に改ざんがあったのではなくて、僕が読み違った可能性もあると思っています。
僕はこの論文をはじめて見たときに、圧倒的に僕が勝っていると一瞬で判断してしまったため、 この論文のことは忘れていました。
僕のブログでは論文にあるUiからT0iの区間を1サイクルと説明しましたが、改めて読むと2サイクルになっていました。 圧倒的に勝っていると思ったので結果まで読まなかったのですが、 今読むとXilinxのFPGA、XC2VP30のデータがあることに気が付きました。 XC2VP30は、もう絶版になっているので、検証することができません。なんか怪しいので、怪しまれないためには、 Xilinxの新しいFPGAでデータを取り直すのがいいのかもしれません。
改めて読み直した論文では、僕とは別の方向でパイプライン化をして高速化をしています。 電通大演算器はXC2VP30で125MHzの周波数が出たと書いてあります。 そして1024bit RSA(Private CRT無し)が4.4msと書かれてありました。 k-ary methodを使えば2.7msとも書いてあったのですが、ASICに実装する場合の ゲート効率の問題で対象からはずしました。
電通大演算器の4.4[ms]と比較できるSnakeCubeの数字は、正確な数字はまだ出していませんが約1.5[ms]です。 SnakeCubeのFPGAはXilinxのXC7A35TICSG324-1LなのでXC2VP30との違いを考慮する必要があります。 XC7A35TICSG324-1Lは新しいデバイスですがコスパ重視の低性能タイプ。 XC2VP30は、良く知りませんが、当時としては高性能タイプなんだと思います。
SnakeCubeが、圧倒的に勝っているという僕の認識を改善したくて、再度、崎山先生の論文を読むように 仕組んだということなんだろうと思っています。
問題なのはXC2VP30は絶版になっていて4.4[ms]を改ざんしても、誰も検証できないこと。

追加で言うとSnakeCubeは演算器だけでなく暗号プロセッサも入っています。 そして暗号プロセッサは2個の演算器を並列に実行させることが可能です。

どうして電通大演算器がSnakeCubeと違うパイプライン化をしていくことになったのか。 僕のこのブログ わかりやすいICF3-Fのモンゴメリ乗算器の説明にある魔法の中継FF(フリップ・フロップ)に、 気が付くことができなかったからなのだろうと。この魔法の中継FFがあるおかげで、SnakeCubeは ビット長の大きな演算器が作れます。一方、電通大演算器は1024bitのRSAで256bitの演算器になったのは、 中継FFがなくて、大きな演算器が作れなかったのかなと。


8月23日 僕の出生の秘密

親に聞いたところで本当のことを言うとは思ってないので聞いたことがありません。 僕がこの話をするのは、僕が特別な人間で、 だから世界の銀行に収めるような暗号装置の開発を担当したと思う人がいると思ったので。
僕の子供の頃は、ごくありふれた家庭で、ごく普通に育ってきた。 僕はもう50歳を超えますが、数年前までは、疑う余地もなくそう思っていた。 いろいろな情報を総合して考えて左手首の傷にたどり着いた。 そして、さらに数年が経過した今、この左手首の傷について、こう思うようになった。
この左手首の傷は、赤ちゃんの頃からある。事故でついた傷なら、出血多量で、 その場で死んでいる。僕が生きているってことは、医学的に死んだことにして、その場で蘇生。 医学的な死、つまり法律上死亡したことで法律的な手続きがスムーズになったのだろうということ。 考えられることは、財産の相続権。そして僕を蘇生したのは、念のためかもしれない。 財産の相続権はともかく、そう考えていくと、いろいろな状況が、それを思わせる。
やっぱり特別な人間かも、でも人権を失うようなことはないと思うのです。
蛇足ですけど、左手首の傷は真実ですから、 僕の映画化とか、小説とか、売れるネタになりそうですよね。 僕が成功すれば、映画も儲かるみたいな(笑)

図をマウスでクリックすると拡大されます


8月22日 Verilog版のSnakeCube開発(46)

今、目の前で起きている現象を言うとCentOS7上のVivadoで論理合成中、Vivadoが一時的にフリーズ。 論理合成プロセスがサスペンドするわけではなくてVivadoのGUIがフリーズする。 これが何度も起きている。Vivadoを使いはじめて1年以上にはなるがフリーズしたことはない。
これ以上、Vivadoがフリーズすることがなくなれば、いいのですが。


8月22日 GNUに寄付をするとCentOSの調子が良くなる?

SnakeCubeの開発OSについて、論理合成や動作検証のほとんどをWindowsマシンで実行しています。 僕のスキルはWindowsとLinuxのどちらかが得意ということはなく、どちらもそれなりにできます。 CUIによる開発が好みであること、今後も、状況に応じてWindows、Linuxを使っていくことを考えて、 SnakeCubeの開発OSとしてCentOSも使っています。
Windowsの調子も良くないのですがCentOSの調子も悪くて、困っているのです。 プロセスが勝手にサスペンドして論理合成が止まるケースが多発中。 ちょうどGNUから寄付の勧誘メールが届いていて、 GNUに寄付をすると調子が悪い問題が解決するなら、また寄付をしてみようかと。 (24時間営業の産業スパイが脳内にいる)
GNUに寄付をすると領収書と領収書番号が届くので安心できるように思っています。 今回も寄付をするとしても、またこれまでと同じ少額の寄付になる予定。 CentOSの調子は良くなるのだろうか?
1999年のICF3の開発をしていた時代も、容赦なく取り立てに来るのですが、 社会は冷たいというのが僕の感想です。もう何度も話ていますが、当時は最も残業の多い部署で、 いっぱい仕事をさせていただいたおかげで、世間知らずだったというか、なんというか。 Perlはイタリア人が作ったからイタリアの物を買えみたいな見えない圧力がかかり都内の大手デパートに 1万円のイタリアのワインを買ったこととかあります。 Perlの開発者、ラリー・ウォールさんはアメリカの人だったというのを後から知って憤慨しました。
そういった経験を踏まえ、今後は、社交性を高めていければと思っています。 参考までの話、SnakeCubeの動作検証はPerlを使わずC言語のみでできるように開発環境を作りました。 これは、「取り立て」の問題もありますが、WindowsにはPerlが標準でついていないので、 Perlをインターネットからダウンロードしてインストールすることになるのですが、 ダウンロードしたファイルが安全かどうかということもあるのです。


8月21日 SnakeCubeのビジネスをどうやっていくのか

1999年のICF3 の暗号プロセッサは初期検討から商品に付属するフロッピーディスクまで僕が作っていました。 フロッピーに貼るシールの印刷は、僕ではありませんが、シールを貼る仕事はしています。 もちろんフロッピーに書き込むデータの作成の仕事もしています。
そういった実績のある僕が1人で開発して直販するので儲からないはずはない、と漠然と考えていました。
XilinxのAlveoについて、あれこれ考えていたりします。
SnakeCubeを使ったSSLアクセラレータで利益を出せるところに直接いって、 話すことができればと思ったのです。FacebookやZOOMでもいいと思っていますが。
SnakeCubeは従来よりもずっと高性能、高効率なので発明だと思っていますが、 発明の対価が少ないと不平を言うよりは、自分で効率良く発明の対価を得たいと 思っているので、その際には、よろしくお願いいたします。
まだ、もう少し開発を続けていると思いますが、そのうち。


8月21日 SnakeCube、RSA2048の記録を更新(2)

昨日の日記でRSA 2048bit(Private CRT)が1.91[ms]になりました、と報告しました。 プログラムの改善のみで1.77[ms]になりそうです。 暗号プロセッサのプログラムなので普通のアセンブラだと思っている人が改善できることはありません。 僕の頭が破壊されると世界的な記録?に影響が出ます。 このまま人の頭の中に無断で乗り込んできて妨害活動をしているという状況が続けば SnakeCubeをコアにしたビジネスに影響がでて僕以外の人にも迷惑が及びます。 このあたりで、無断で乗り込んで悪さをすることを、止める必要があると思います。


8月20日 SnakeCube、RSA2048の記録を更新

暗号プロセッサにモンゴメリ乗算器をもう一個追加してモンゴメリ乗算器2個で RSA 2048bit(Private crt)を実機で計算させました。LEDで正しい答えが計算できていることを確認しました。 モンゴメリ乗算器の周波数を250MHzから232MHzに下げたため性能は1.91[ms]です。
下図はVivadoによる実装データの記念画像です。まだ通信回路を実装できる余裕はありそうです。 この記録はnone-subtraction Montgomeryを採用しているので、製品で採用できなければもう少し性能が下がるかもしれません。 none-subtraction MontgomeryについてはCQ出版DegignWaveの2008年あたりに解説記事があるので、そちらを参照してください。 この性能測定で使ったArty と同じXilinxのFPGAを使ったCmod A7 でSSLアクセラレータを作る可能性が大きくなっていますが、ボードについているクロックが100MHzではなくて12MHzなので、 もしかすると、ちょっと性能を落とす必要があるかも。予測値は2.0~2.1[ms]。
多少作業をしたくらいでは、これ以上、性能は上がらないかもしれませんが、引き続き記録更新を狙っていきます。

図をマウスでクリックすると拡大されます



8月20日 Verilog版のSnakeCube開発(45)

頭痛と暗闇と体が重くなる現象が消えて楽になったという日記を書いたら、再び、 頭痛が酷くなってきた。この頭痛を止めないと、どうなるかの予測が必要だと思います。 SnakeCubeの発明が僕から動くことはないのでSnakeCubeの発明が発明でなくなれば、この国の損失となるはず。 この国の損失が利益になる人にとっては、この状況がいいのかもしれない。 つまり、この頭痛を止める必要があると思っています。
暗号プロセッサSnakeCubeの性能を決めるのはモンゴメリ乗算器の周波数。 この目標を250MHzから232MHzに下げたところ、合成に成功したケースが1つ見つかりました。


8月20日 Verilog版のSnakeCube開発(44)

頭痛と暗闇と体が重くなる現象が消えて楽になっています。 それでも左目の調子が良くならず、左目をつぶって、右目だけで作業をすることはある。
暗号プロセッサSnakeCubeの性能を決めるのはモンゴメリ乗算器の周波数。 目標を250MHzから240MHzに下げたが、クロック生成のところでノイズが増加するため、 まだ240MHzの合成は成功していません。細かいところの改善を繰り返して240MHzを成功させることを継続中。 クロックの技術に詳しくない人のために、ちょっと説明をすると基板上の100MHzのクロックから 任意の周波数のクロックを生成する回路がXilinxによって提供されている。 これが生成したい周波数によってノイズが増減する。ノイズの量が示されているから、 これがディレイの計算に入るのだろうと考える。ノイズの量を見る限り240MHzは割高な周波数で、 できるなら250MHzを達成するような改善策ができればと考えているところ。
参考までに。知っている人も多いと思いますが、僕は1996年の日立の大型コンピュータの基板において、 CMOSノイズを評価しながら配線長を決めるという仕事していました。CPUはIBM製。 地味な仕事のように見えるけど当時、現場では注目されていた仕事。成果としても大きい。 当時のIBMのCMOSは日立よりも高性能でIBMが1サイクルで基板上を転送するところを、 日立のCMOSの性能の問題で1サイクル転送ができず、1.5サイクルで転送することになったため、厳格なディレイ計算が要求された。 転送サイクルは1.5サイクルですが転送ピッチは1サイクルなので、IBMと比較して、あまり性能を劣化させずに、 IBM互換機を製品出荷できたのです。 僕の役割はPerlプログラムによる回路シミュレーションの自動集計と、配線長の自動計算。 電気屋にはプログラマがいなかったことが幸いして活躍している。


8月19日 Verilog版のSnakeCube開発(43)

頭痛のため布団にいることも、しばしば。風邪のような頭痛だけど風邪と違って壊れてないかが心配。 少なとも完全に回復はしない。
論理合成や動作検証などでパソコンが足りなくなっている。 Intel Core2 Duo E8400(3GHz 2コア2スレッド)に換装した10年以上前のパソコンの手入れをして動作検証用にしてみた。 動作検証にかかる時間が思ったよりも遅くてベンチマークテストをやってみるとやっぱり遅い。66%くらいの性能しか出てない。 CPUにスローの魔法をかけられたかと一瞬、思ったが、偽物をつかまされた可能性を考えた。 インターネットで調べてみると、どうもBIOSの設定でShutdown Temperature の温度設定をすると CPUクロック倍率が6倍に固定になる仕様らしく、魔法でも偽物でも、なかったようです。 Shutdown TemperatureをDISABLEにしたらクロック倍率が6倍から9倍になってE8400の仕様である3GHzで動作するようになった。
これで開発速度が向上した。


8月19日 Verilog版のSnakeCube開発(42)

8月14日に暗号プロセッサSnakeCubeがXilinxのFPGAでRSA 2048bit 3.05[ms]を達成したことを報告しました。 このSnakeCubeはモンゴメリ乗算器が1個(DSP 45個)です。これを2個に増やしたものを開発中です。 XilinxのXC7A35TICSG324-1Lは24×17の乗算器(DSP)を全部で90個持っていますが、これを全部使ってRSA 2048bitの性能を向上させます。 SnakeCubeのVerilogシミュレータでは正しい答えを計算できました。現在、論理合成中です。 モンゴメリ乗算器1個のときはFPGAのリソースの使用率が60%くらいでしたが、2個になって80%(DSPは100%)くらいになっています。 リソースの使用率が増えた影響でモンゴメリ乗算器の周波数250MHzを達成するのが難しい状況。 周波数240MHz辺りなら論理合成に成功するかもという状況です。もし240MHzで論理合成が成功すれば3.05[ms]から1.85[ms]に性能が改善されます。
今もなお、頭の痺れで十分な精度をもって仕事をするのが辛い状況です。 この問題を解決するため、念入りに某大手企業を締め出していいことにしたいと思います。 これはご協力いただくのが簡単なので、効果が期待できるように考えています。


8月16日 HDD消去を忘れずに

HDDの消去を怠っていない、ということを言いたいだけ。 捨てたHDDから開発データが盗難されることのないように。
今日、HDDの消去をしていたらHDD消去ソフトから見えない国内メーカ製のHDDがあって、ちょっとびっくり。 LinuxベースのHDD消去ソフトとWindowsベースのHDD消去ソフト、どちらからも見えない。 HDD消去ソフトの過去バージョンを引っ張り出して消去しました。
HDD消去で時間を潰してしまいました。きちんと開発するコストは大きいのかもしれない。


8月16日 XilinxのRSA暗号のライブラリ

既にあるようです。ハード実装だと書かれているのですがFPGAのことをハードだと言うのであれば、 僕のSnakeCubeで置き換えると、恐らくSnakeCubeが圧倒的に高速。 XilinxのAPI(XilRSA)はCRTを使っていないので、現在、性能を測定しているSnakeCube 1032bitでは 置き換えることはできないです。そのうち、そのまま置き換えられるものを考えてみようかと。 XilinxのAPIは事前定数 R^2 mod Mも使えるようなので、この事前定数が使えればSnakeCubeは、 もう少し性能が上がります。R^2 mod Mの事前定数がなくても演算できるハードがSnakeCubeの メリットかも。


8月15日 食事中のテレビ

夕食中にテレビで「知られざるガリバー エクセレントカンパニーファイル」が放映されていた。 僕の席からだとテレビは、ほぼ真後ろの位置なので全く見えない。両親がイリソ電子工業が出ていると言う。 どうもイリソ電子工業が市内の企業だと思ったらしい。 何度も言うのだが、僕は一向にテレビの方向に顔を向けることはしない。 目が悪くなって後方のテレビを見ても、あまり良く見えないのだ。両親は目が悪くなっていることを知らない。
日替わりで視力が変わるし、もう眼鏡では矯正できないレベルに突入していて、眼鏡では改善できない。 視力を奪ったヤツを止めないと、どうにもならない。


8月15日 本日のHDD故障2個

左は2003年の40GBのHDD、右はamazonで売られていた激安中古HDD。 どちらも変な音を発生するようになったので交換。 変な音を発生させるHDDは過去にも、何度も経験している。 しばらく休ませて他の場所で使うと、しばらく動くということを繰り返す。 変な音がするたびにHDDを廃棄すると自然故障率を超えるような気がするし。
40GBのHDDは廃棄、右のHDDは3回書き込みのディスク消去中。どこかで再利用するか。

写真にHDDメーカ名とか映っていますが、あまりHDDメーカとか関係ないように思っていたり。 1日平均3回~5回、「気に入らない」とか言いながら僕が使っているパソコンのUSBを勝手に切断する USB切断魔が24時間体制でいることが問題。 切断するのは、ほとんどがCPU切替機で、被害はないけど、イライラはさせらている。 ここ数十年の経験から言うと、切断できるのはUSBに限らないという予想。かなり多彩ないたずらができる様子。 皆さんも、振り回されないように、偽装も多い。


図をマウスでクリックすると拡大されます


8月14日 暗号プロセッサSnakeCubeがXilinxのFPGAでRSA 2048bitを3.05[ms]で演算できました!

Facebookに投稿した内容と同一です。昨日の日記を詳しくしたような内容。

この暗号プロセッサが日本に明るい将来をもたらすと思っています。商機を逃がさないようにするためには障害の排除を急ぐべきなのかもと思っています。

測定に使用したFPGAボードはDIGILENTのArty、FPGAはXilinxのXC7A35TICSG324-1Lです。RSA 2048bit (Private crt)、1回の演算時間が3.05[ms]

このFPGAには乗算器(24×17)が90個あるのですが、RSA暗号では多数の乗算器に有効な演算をさせることが難しく、これまであまり高性能、高効率なもを作ることができていません。僕の発明と僕が1999年に製品化した暗号プロセッサにより乗算器に有効な演算を連続してさせることが可能になりました。
今回は90個の乗算器のうち45個で約75%の利用率を達成させて3.05[ms]の性能を出しています。演算器は1032bitですがCRTを使うことで2048bitのRSAを演算しています。暗号プロセッサも、役に立っているということです。乗算器の周波数は250MHzです。Xilinxのデータシートには最大290MHzで動作することが書かれています。乗算器の構成を変更すると最大464MHzになるらしいですが250MHzが実用的な限界かも。記録だけを考えるなら、もっと周波数を上げることはできるかもしれないですが。SSLアクセラレータの製品にすることを考えているため。
周波数を決めているのはデータ系のパイプラインではなく最下位ビット近辺の演算をブロッド・キャストするところです。データ系のパイプラインの周波数だけを示して高速だと言っている海賊版があるので念のため。
DSP(乗算器を含んだ小さいプロセッサ)では5サイクルに4回、有効な乗算をしています。空いている1回でシフトレジスタの役割をしていることとも効率がいい要因になっています。
暗号プロセッサ1個、乗算器(45個)×1でFPGAのリソースの60%を使っています。これから乗算器2個になるような改善をしてArtyでの記録更新を狙います。成功する保証はありませんが、成功したら、記録更新の報告をします。
図は、正しく計算できたことをLEDを使って1バイトづつ表示させるためのArtyのLEDとスイッチ、ボタンの配置です。


図をマウスでクリックすると拡大されます


8月14日 Verilog版のSnakeCube開発(41)

WindowsでVivadoが落ちる件。落ちたときのメッセージを見るとメモリ不足なのですが 32GBのメモリを搭載しているマシンなので、 不正侵入したユーザープロセスがメモリを確保して落ちた可能性も考えています。 LinuxのVivadoでは同じマシンで論理合成(232ケース)をしても落ちていません。 基本的には、ハードを含めたあらゆるサイバー攻撃が可能なんだとは、思っているのですけど。 より簡単なサイバー攻撃で十分な場合は、それで済ますという傾向があるようです。 僕の原因追跡の思考を読みながら別の手を打ってくるとか。かなりキツイ。

2020年8月14日 9:00AM
再びメモリ不足で落ちました。今回はエラーメッセージがでることなく落ちています。 このマシンは24GB搭載のマシンですが、Vivadoのある一つのプロセスがメモリの90%を消費していました。 本当にメモリ不足で落ちたように見えるのですが、 サイバー攻撃する人の目線で考えるとメモリ不足を偽装する可能性があると見ています。 これがサイバー攻撃であるかは、ともかくWindowsで苦戦しております。


図をマウスでクリックすると拡大されます


8月13日 実機で現時点でRSA 2048の最高性能を確認

実機での確認が遅れた理由はサイバー攻撃だけでなく、 実機ではレジスタ0番の値しかLEDから読み出せないハードだったからです。 1032bitのSnakeCubeではRSA 2048bitの演算結果を2本のレジスタに格納するため、 複数のレジスタ番号をLEDで読み出せるようにする必要がありました。 その修正をして、論理合成をするのですが、232個の論理合成をして成功するのは2、3個なので、 時間がかかってしまいました。
今回、Artyの実機で確認された性能です。
RSA 2048bit(Private CRT) 3.05[ms]
Xilinx Artix-7のFPGA、XC7A35TICSG324-1L(Arty)での世界一とかなってないだろうか?
参考までにCmod A7も 同じFPGAチップですがクロックが100MHzではなくて12MHzなので、同じ性能はでないですが、参考にはなるかと。
これからモンゴメリ乗算器を、もう一個追加してArtyでの記録更新を狙います。成功するとは限らないですけど。

図をマウスでクリックすると拡大されます


8月13日 Verilog版のSnakeCube開発(40)

サイバー攻撃の被害が大きくなってきました。 Windows上で動作しているVivadoでSnakeCubeの合成(232ケース)を実行中、 約100ケースが終わったところでCPUの利用率0%に近い状態になっています。 約100ケースが終わったところで強制終了されたのと同じ状態です。
暗号プロセッサSnakeCubeは今後、活躍する技術であることは、明らかであるように思っています。 今、FPGAによる実機で検証されたばかりで、大事なところなのです。


8月13日 Verilog版のSnakeCube開発(39)

WindowsマシンにXilinxのVivadoをインストールするためダウンロードした VivadoのファイルをUSB-HDDからWindowsマシンにコピーするところでサイバー攻撃にあって、 コピーを妨害された。一夜が過ぎた、早朝、もう一度、コピーをすると、やはり妨害してきた。 このため作業に遅れが生じています。昨夜、妨害されていなければ、 この早朝に修正をしたSnakeCubeの合成(232ケース)が終了していたかもしれない。

8月13日 6:30AM
USB-HDDからHDDを取り出してeSATAケーブルでVivadoのファイルをコピー。 現在、コピーをしているところですが、35.5GBのファイルが展開されているフォルダなので 時間がかかります。 コピーが終われば、自作のフォルダ比較ソフトでコピーが正しくできたかを確認。 そして、USB-HDDのHDDを別のWindowsマシンにあるファイルともフォルダ比較ソフトで ファイルになにか細工がされていないかを確認。妨害によって作業が遅れています。

マシンにeSATAのポートがあると、多少、抵抗できるかも。


8月12日 Verilog版のSnakeCube開発(38)

今日はSnakeCubeの開発環境について書いてみたいと思います。 不正アクセスに備えてWindows/Linux/FreeBSDなど、いろいろなOSで 動作するように開発環境を作ってきました。 単一の環境では不正アクセスなのかバグなのかを判断するのは難しく、攻撃もされやすい。 それでもUSBの回路を不正アクセスされると、厳しいのですが。 Verilogが動作する1CD Linuxも自作しているので、開発環境がインストールされていないマシンでも、 すぐにVerilogを動作させることができます。
XilinxのVivadoはFreeBSDには対応していないのでFreeBSDでは、すべての開発をすることはできません。 しかしWindowsではすべての開発をすることができます。 ただLinuxのCUIが便利なのでWindowsだけで開発することはないとは思いますが、 Windowsが多くなる傾向のように思います。
頑張った点はPerlや多倍長整数演算ライブラリGMPを使っていないこと。 どちらも苦労してます。
新しいフリーソフトをパソコンにインストールするとき、そのフリーソフトが安全であることを、 考える必要があって、なるべく標準のツールで開発できるようにしたのです。


8月11日 暗号プロセッサSnakeCubeのビジネス

ソフトバンクのARM株売却などARMが話題になっているようです。 SnakeCubeはARMのようなIPビジネスにならないか、考えているところで、ARMが気になったりしています。 ARMのようなIPビジネスは中立性がないといけないみたいな。 アップルのようなハード・ソフトを販売しているところでは、中立性が保てないとか。議論されている。
RSA暗号の鍵を生成するためには素数判定の演算が必要です。 鍵が大きくなると飛躍的に演算量が増えるため、暗号プロセッサSnakeCubeは、 そういった用途でも役に立ちます。ただARMほど用途はなく、 中立性を貫くことによるデメリットのほうが多いような気もしています。
現在、僕はSSLアクセラレータを開発していますが、SnakeCubeをIPとして販売すれば、 同じくSSLアクセラレータを開発する可能性があり、競合します。 競合するものは、作らないように制御できれば、いいような。


8月11日 Verilog版のSnakeCube開発(37)

2008年のCQ出版DegignWaveに改良型モンゴメリ乗算の方法が説明されています。 このIEEE論文にあった方法を暗号プロセッサSnakeCube(8月3日タイムスタンプ版)用にプログラムを作ってみました。 まだVerilogシミュレーションで正しい結果が得られただけでFPGAでは動作を確認していませんが、 RSA 2048bit(private crt)が3.05[ms]で演算できることが確認できました。
柔道やボクシングのように階級別にすれば世界一とか、なってないかぁ。 XilinxのArtix-7(27nm)、UltraScale(20nm)、UltraScale+(16nm)で3階級制覇とか。(笑)
頭痛は現在も続いています。厳密な表現をするなら脳神経を乗っ取られ人体実験されている状態。 実にいろいろなことができるようです。目を見えなくすることも、心臓をつつくこともできる。 東大にギリギリ合格できないところまで偏差値を下げることとか。 人体実験は禁止されているので、取り押さえれば、暗号プロセッサの開発が捗ることは間違いないと思うのですが。


8月10日 Verilog版のSnakeCube開発(36)

XilinxのVivadoをWindows10にインストールするのに必要な労力。 ただインストールするのは簡単なのですがセキュリティを考えると、 かなり手間がかかる作業になるという話。 Vivadoのダウンロード・ファイルが35.5GBもあってtar形式なので Windowsに何か、ソフトを追加しないと解凍できない。 そしてLinux系のOSはWindowsで使われるNTFSなどのファイルシステムを必ずしも サポートしていない。Ubuntuなど便利なOSもあるが、Ubuntuに含まれるソフトの何かが、 勝手に何かしないか心配でCentOS7を使うのだが、NTFS、exFATへのアクセスは手間がかかる。 そしてexFATが使えるようにFUSEをインストールしたが、最近、動かなくなった。 そこで自作の1CD Linuxを使ってVivadoのファイルをNTFSのファイルシステム上に展開することに。 自作の1CD Linuxを作る労力は、馬鹿にならない。1CD Linuxのセキュリティも完全ではない。 そこでWindowsを使ってVivadoを展開したものと、比較する。この比較のソフトウェアは自作。 一週間くらい作業を止めて自作のフォルダ比較ソフトを開発している。
産業スパイに24時間監視されているせいで、安全性のために費やされる時間が多くなっている。 24時間営業の産業スパイ以外にもサイバー攻撃を仕掛けてくることもあるとは思うので、 完全に無駄というわけではないのですが。


8月10日 Verilog版のSnakeCube開発(35)

再び頭痛。頭の痺れ。狭い範囲の思考しかできなくなるのが辛い。物忘れも激しい。 RSA 2048bit(private crt)のプログラムをC言語シミュレータとVerilogシミュレータで乱数を使って検証中。 Verilogシミュレータで1032bitのSnakeCubeを動かすとRSAの演算1回で1時間以上。 さらに乱数系はicarusでしか動かなないのでRSAの演算1回で8時間とか。 自宅に計算サーバが2台なかったら、辛かったかも。


8月9日 Verilog版のSnakeCube開発(34)

人工頭痛から体が怠くて動けない状態に変更されて作業があまりはかどっていません。 ただ布団に入っても頭は動いていることが多いためRSA 2048bit(private crt)の性能が、 もう少し上がるのを思い出した。2008年頃のCQ出版のDesignWaveに記事があったIEEE論文の改良型モンゴメリを使うと、 もう少し早くなるのです。ただし鍵長が長くなると効果がなくなっていくので本番の製品で採用するかは未定。 これは8月3日にタイムスタンプしたverilogファイルでも動作するので、 ハードウェアの記録としては8月3日になるのだと思う。 つまり予定通りに行くとRSA 2048bit(private crt)の性能が約3.1[ms]になる。
そしてモンゴメリ乗算器を暗号プロセッサに、もう一個追加する方向。 この性能改善は、FPGAボードArtyでは面積不足で成功しない可能性も大きい。


8月8日 Verilog版のSnakeCube開発(33)

再び人工的な頭痛で作業ペースが落ちています。 プログラミングが趣味の僕が一時的にプログラム不能になるほどでした。 やはり頭の壊れ懸念されています。
RSA 2048bitの署名が可能な1032bitのSnakeCubeですがRSA 2048bitの署名をするプログラムを作りました。 まだシミュレーション上の結果のみですがRSA 2048bit署名1回、3.18[ms]になりました。 予定の3.3[ms]よりも少し性能が上がったみたいです。


8月6日 SnakeCubeシミュレータのWin版バイナリ公開

暗号プロセッサSnakeCubeを世の中の人に認知してもらうための余興として SnakeCubeシミュレータ(1032bit)のWin版バイナリを、この日記で公開することに。
Windows10で動作するasim.exeとSnamkeCubeのプログラムの ファイルpowmod_odd.scの2つのファイルが入っています。
Windowsのコマンドプロンプトから

asim powmod_odd.sc

と入力するとプログラムが実行されて終了時のA,B,C,Dのレジスタが表示されます。 Aレジスタの値が、べき乗剰余演算の演算結果で、サンプルデータは OpenICF3公式サイトのシミュレータのページにある べき乗剰余演算(奇数)のコードと同じです。
ただ、それだけを試してもらうための公開バイナリです。 verilogから実行形式を作っているわけではなくて、暗号プロセッサの動作を人が考えて作ったものです。 特にモンゴメリ乗算器が1サイクルで演算を完了する仕様バグがあるので、正しいコードなら 正しい演算結果になるという仕様。暗号演算器(モンゴメリ乗算器)の部分は疑似コードなので リバースエンジニアリングをしても、疑似コードです。 このSnakeCubeは改良型モンゴメリ乗算を演算できるような専用命令を既に実装していますが、 公開コードの中には改良型モンゴメリ乗算ではなくて、普通のモンゴメリ乗算のコードで演算しています。 開発中のためプログラム仕様も今後変更される可能性があります。 シミュレーションを実行するパソコンは、壊れてもいいような安全なパソコンを推奨します。
SnakeCubeで楕円暗号も演算できます。将来的には、このシミュレータが楕円暗号の 特許が絡むような高速なコードを、いち早く取り込むことに役に立つとか、 脆弱性があるとか、ないとかの議論に使われるとか、などを考えていたります。

C言語版SnakeCubeシミュレータ(2020年8月6日)


8月6日 動画配信向けのXilinxのFPGAカード

動画配信向けのPCIeアクセラレータ Alveo U30を発見。 オープンソースのffmpegに対応しているとか。 動画配信で使い終わった頃にSnakeCubeをインストールして SSLアクセラレータにできないか、ちょっと思ったり。 SSL証明書の秘密鍵がCPUのキャッシュ上にあるときに、他のプロセスが読み出せるみたいな問題も、 解決できると、良さそう。 秘密鍵の漏洩が万に一つでもあってはいけないという用途では難しいかもしれませんけど。

SnakeCubeをArtix-7に実装して周波数を上げるのに問題となっているところが、わかっています。 UltraScale+はArtix-7よりも効率が上がるかもしれないと思っているのです。


8月5日 Xilinxの開発者コンテスト

Xilinx(ザイリンクス)と Hackster.io が共催する開発者コンテストがあるようです。
ザイリンクス アダプティブ コンピューティング チャレンジ
僕もSnakeCubeでエントリーできないか考えました。参加資格に法人設立から8年以内とあったので断念せざるを得ませんでした。 僕の株式会社iCanal(←OV SSL証明書)は設立から14年なので。
また個人でのエントリーもできるようなのですがオープンソースにすることが必須なのでSnakeCubeでは無理なのです。
参考までに8bit CPU ICF3-Z Zeviosは 制限の緩いオープンソースライセンスなので、どうぞ。
データセンターがXilinxのPCIeカード Alveo U50を、ある目的のために購入して、使わなくなった Alveo U50にSnakeCubeをソフトウエアのようにインストールしてSSLアクセラレータ・カードにするとか。 (SSLアクセラレータ・カードとしてだけだと、ちょっと高価なので)
量子コンピュータによる暗号解読が発覚したときのため、 鍵を大きくできる準備が必要だと思いますが、既にあるAlveoを使うのはいいかもと思っています。 RSA 2048bitのSSLアクセラレータ・カードとして使えるのですが、 必要に応じてRSA 4096bitや、それ以上の鍵長のアクセラレータに書き換えることができるので。
SnakeCubeはCPUと異なり、鍵長に比例した演算器を使ってRSAを演算できるため、鍵長が長くなればCPUより高速ですし、 鍵長が大きくなるとRSAの演算量は膨大なものになるので。 RSAの演算量については、僕のこのブログ が参考になると思います。
(株)iCanalでSnakeCubeというソフトウエアのライセンス販売してみようかとか、そんなことを考えていました。
ただAlveoには不要な部品が多数ついているので、やっぱり不要な部品を削ったものを作るという可能性はあるかも。 秘密鍵を安全にするために、ハードを作ることになる可能性もある。
産業スパイに24時間、まとわりつかれている問題を、どうにかしないと。


8月4日 SnakeCubeの知財を守るため証明書をもらいました

独立行政法人工業所有権情報・研修館によるタイムスタンプ保管サービスを利用しました。 以下のPDFファイルが、発行していただいた証明書になります。(オンラインによる自動発行システム)
「タイムスタンプトークン預入証明書」
RSA 2048bit(復号化)が演算できるSnakeCubeのverilogファイルのハッシュ値、合成結果の画像、 合成条件を記載したPDFファイルを作成しタイムスタンプをしました。
この他に2つほどRFC 3161のタイムスタンプで証拠を残しています。

このタイムスタンプには「アマノタイムスタンプサービス3161」を使っています。 署名されたPDFに時刻の精度が0.5秒とありました。 RSA暗号の鍵長が長くなると精度を保証するため高速なRSA暗号のハードが必要になるのかもと、 思っています。 SnakeCubeはRSA暗号の鍵長が長くなってくるとCPUよりも高速になるので、 こういったタイムスタンプで役に立つことはあるかもしれません。

2020年8月5日追記
タイムスタンプの精度の定義を知らないので、あまり正しくないことを言ったかも。 タイムスタンプの時刻を受け付け時間にすれば、署名の計算時間が長くなっても、いいのかもしれません。 PDFを開いてタイムスタンプをすると数時間、PDFを開きっぱなしにしておけば、タイムスタンプが完了するとか。 AdobeAcrobatは、各国の事情に応じたタイムスタンプの方式をプラグインという形式で実現しているから、 国が決めれば、どうにでもできるという範囲は、広いのかもしれません。 世界標準のほうが普及すると、国だけでは決まらないですけど。


8月3日 RSA 2048bitの暗号プロセッサがFPGAの実機で動作!(3)

XilinxのEDAツール、Vivado(2020.1)の論理合成はSynthesisが8種、Implementationが29種なので 合計8×29=232ケースの論理合成が可能。 RSA 2048bitが演算できるSnakeCubeを250MHzの条件で232ケースの論理合成をした結果、 3ケースが250MHzを達成しました。


8月3日 RSA 2048bitの暗号プロセッサがFPGAの実機で動作!(2)

250MHzを達成しました!昨日の速報では計算上、まだ250MHzが達成されていない実装を250MHz動作させました。 合成オプションを探っているうちに250MHzで動作するものが合成できました。 再度、実機で250MHzで動作させて正しい計算結果であることを確認しました。 下の図が、今回、250MHzを達成したときのVivadoの画面。 合成に成功したものが1つあることが画像からわかると思います。

図をマウスでクリックすると拡大されます



8月2日 RSA 2048bitの暗号プロセッサがFPGAの実機で動作!(1)

RSA 2048bitが演算できる暗号プロセッサSnakeCubeは 僕が発明した方式の暗号プロセッサです。高性能、高効率なアーキテクチャです。XilinxのFPGAの実機により検証されました。 これまで1032bitのSnakeCubeと呼んでいたもの。

FPGAボード : Arty
FPGA : Xilinx XC7A35TICSG324-1L

Artix-7のスピードグレード -1なのでローエンドに近いFPGAです。
FPGAで動作した周波数はモンゴメリ乗算器 250MHz、暗号プロセッサ31.25MHzです。 まだ1日かけて作業しただけなので十分には性能を出しきれてないかもしれません。 250MHzは1サイクル=4nsです。Xilinxのツールの計算は4.045ns 4.033nsなので、少しオーバーしていますが、 実機で250MHzで動作させて正しい計算結果を出力しています。暗号プロセッサのほうは、まだかなり余裕があるので 暗号プロセッサの周波数は31.25MHzから35.71MHzに性能を上げることができるかもしれません。 RSAの性能はモンゴメリ乗算器の周波数を高速にするほうが有利なので、暗号プロセッサの周波数を無理に上げることはないのですが。
このXilinxのFPGAでRSA 2048bitを計算する時間ですが約3.3[ms]の予定です。 2年前、Webサイトで3.2[ms]の試算をしていましたから、予想通りの性能になりました。 モンゴメリ乗算器の周波数が2年前より2倍になっているのですが、 モンゴメリ乗算器を2個から1個に減らしているので、結果的に予想通りなったということになります。
SSLアクセラレータとして使うにはFPGA上に通信回路を搭載する必要があり、モンゴメリ乗算器を2個から1個に減らす必要がありました。 通信回路を搭載しなければモンゴメリ乗算器を、もう1個、追加できるだけの面積が残っていそうです。 通信回路なし、モンゴメリ乗算器1個で約60%の面積です。頑張れば、モンゴメリ乗算器2個でも通信回路を搭載できるかもしれません。 参考まで、SSLアクセラレータの商品化を目指しているため、暗号プロセッサには、演算中に次の演算データを転送できる機能が 既に実装されています。
XilinxのEDAツールが良かったおかげで1032bitのSnakeCubeが1日の作業で、ここまで来ました。 配置もEDAツールに任せて性能が出ました。巨大演算器もEDAツールでうまくいくのか、まだちょっと気がかりですけど。 専門家以外の人に説明をすると、僕の作っているverilogファイルは、 20年前のお絵描きソフトを使って論理ゲートレベルの設計図を作成してから、verilogに直しているので、 あまり論理合成は使われていません。EDAツールは配置、配線のみを利用するという使い方をしています。 作成したSnakeCubeのverilogファイルを、いろいろなデバイスに移植するために、 論理合成を増やしていくことは、あり得ます。

今後、この暗号プロセッサSnakeCubeの高性能、高効率を活かして、商品化の目途を立てていきたいと思います。 普通には大企業で税金を使いながら開発されていた商品です。 それが、僕1人よって激安な開発コストで商品化されるかもしれないのです。 僕1人で激安に開発できた理由は、いろいろあります。滅多にあることではないと思っています。 ぜひ、僕を応援してください。

下図はRSA 248bitが計算できるSnakeCube(1032bit)をArty に実装したVivadoの画面です。

図をマウスでクリックすると拡大されます


8月1日 96bitのSnakeCubeがFPGAの実機で動作しました

2日前に48bitのSnakeCubeの実機動作に成功していますが、96bitのSnakeCubeでも実機動作に成功しました。 使用したFPGAのデータシートにはDSPの最大周波数は290MHzと書いてある。 SnakeCubeは250MHzで動作したのでDSPの限界付近?まで動作したと言えるかも???
DSPの構成を変更すると464MHzまで動作する見たいなので、機会をみて、考えるのかも。 でも次は1032bitのSnakeCubeを実機動作させたいと思います。 規模が大きくなると合成でうまくいくのか、わからないので、手で配置することを 考えていましたが、配置もEDAツールに任せてみて、動作するなら、それでもいいか。


暗号プロセッサ OpenICF3