Mona投稿してMONAをもらおう。今日、GIGAZINEに第2次世界大戦でヒトラーが使った暗号機がeBayに出品されたことが、ニュースになった。そこで、僕が2003年に購入した暗号機をMonappyに出品してみた。https://monappy.jp/checkout/izuna-GJRilWQ暗号機はAEP1000LというPCIカード。1秒間に1000回のRSA暗号を演算可能。おお、これは僕のICF3の記録を抜いたのかと思い、思わず性能を確認するために購入したもの。AEP1000Lは推定32個の演算器を持っているので1個の性能は20msのようだ。ICF3の3.448msより遅いことを確認して、倉庫にしまった。暗号LSIの話について、なんか、聞いてみたいこととか、あれば答えるよ。http://cpuboss.com/cpus/Intel-Core-i7-4770K-vs-AMD-Athlon-64-3000半導体プロセスの進歩についても、おっしゃる通り、かなり進歩していますが、RSA暗号のアルゴリズムの進歩の影響が大きい。RSA暗号を高速化するためのアルゴリズム、モンゴメリ乗算はCPUで実装するのに非常に効率がいいアルゴリズムなのです。+0MONA/0人ICF3もモンゴメリ乗算を使った暗号LSIだ。RSA暗号はCPUでは実装するには効率が悪く、専用演算器が非常に有効であるという、ことをセールストークにしようとした、話があった。いうことか?モンゴメリ乗算は、解釈によって、さまざまな実装方法があるのだ。ICF3の解釈は、CPUの持つ演算器では効率が悪く専用演算器が有効な解釈をしていた。日立が、本当に、そんなセールストークをしたか、どうかは営業でない僕には、知る方法がない。一般にソフトウェアのライブラリに実装されている解釈は、CPUの持つ乗算器で効率的に実装できる解釈になっている。ハードウェアで実装する場合のゲート効率なんかを考えた人は、当時、あまりいなかったので、この時点では、あんまりわかっていなかったのだ。つづきICF3のモンゴメリ乗算の解釈は、どうやって決まったのか?一番、実装が容易だったから。東芝の逆数特許を回避できたのは、大きかったかもしれない。初期検討段階では、東芝の逆数特許の存在は、知らなかった。ハードウェア論理実装が、得意ではないところだと、汎用のCPUコアを利用した別の解釈を選択したかもしれない。僕がハードウェア論理実装が得意であったかは、わからないけど。(データを左から右へと渡すだけの論理を改造することぐらいしかやったことがなかった。つづきはじめての論理実装だったから、作るので、精一杯だった。そのおかげで消費電力対策が、できていない。これが電流解析不能という、セールスポイントを生み出した。RSAは、秘密鍵の値によって、計算したり、しなくて良い場合があったりして、電流や電波を解析すると、秘密鍵が特定できる、あるいは、秘密鍵の範囲を狭めることができるのだ。演算器を使ってない場合、電流と止めて、消費電力対策してしまうと、解析情報を与えてしまうことになるところだった。ハードウェア論理実装が、得意ではないところだと、汎用のCPUコアを利用した別の解釈を選択したかもしれない。最近の東大には3年のときに「CPU実験」という授業があるらしい。ミッションは「半年かけてできるだけ速いコンピュータを作れ」FPGAで本当にCPUを作ってしまうのだそうだ。いう経験があれば、将来必要になったときでも、対応可能だろうと思った。ICF3は、専用演算器みたいなことを書いたが、1024bitのレジスタ4本とモンゴメリ乗算器を持つCPUみたいなものだった。モンゴメリ乗算によって、割算(余算)を乗算でできるようになるが、割算(余算)の計算が不要になるわけではないし、このモンゴメリ乗算では奇数しか計算できない。←SSLだけなら偶数は計算できないていい。このため結局、モンゴメリ乗算を使わない普通の方法でも、RSA暗号できる必要があった。ICF3が製品出荷されるまで世界一だったFastMapや、IBMがモンゴメリ乗算を使っていなかったのは、このあたりが難しかった?からなのかも。+0MONA/0人ICF3で僕に与えられたミッションは論理合成は使わず、6千ゲートのNAND/NORのブロックを6種類くらいでRSAやDSSなどのIBM仕様を実装することだった。東大のCPU実験とは、イメージが違うと思う。6千ゲートって、わりと少ない。最終的には、10種類以上のブロックを使ったものになった。ミッションはRSAやDSSだけだったが、CPUが柔軟にできていたため、IBMのフルスペックの仕様を実装することができてしまった。+2MONA/1人>>11理由をこのスレに書いてくれ、許可する。+0MONA/0人モンゴメリ乗算がCPUで効率的に実装できるという根拠は、割算を乗算に変換して、通常の乗算器で計算できるからというだけではない。乗算器は、ブースの乗算アルゴリズムによって、ゲート効率が良くなっている点。+0MONA/0人ところでブースの乗算アルゴリズムをウィキペディアで調べると「彼の時代のマシンではシフトは加算よりも高速であり、ある種の数値では彼のアルゴリズムは高速であった。今のIntelの最新のCPUのデバイスでもシフトは加算よりも高速だと思う。確かにCPU命令レベルではシフトも加算も1クロックかもしれないが、ゲートレベルのディレイの話では、シフトは加算よりも高速だと思う。ブースの乗算アルゴリズムは数値に依存するアルゴリズムではなかったと思うけど。過去の計算機屋を老害扱いにしたい、政治的な、匂いがするよ。+0MONA/0人モンゴメリ乗算のアルゴリズムはCPUで効率的に実装できるから、今後、RSA専用LSIを開発することはできないのか?社会に需要を見つけるのが先だが、CPUより有利なアイディアはある。アイディアというレベルで、実際に実装して検証されたものではないが、僕の実装経験から、考えたものではある。モンゴメリ乗算を使ったRSAでは2048bitなどの大きな数の乗算を多数、計算する。2048bit×2048bitの乗算器をゲートで作るには、膨大なゲート数が必要になり、ゲート面積が大きくなると配線ディレイの問題から、実装できても不利になる。64bit×64bitの乗算器を繰り返し実行して2048bit×2048bitの乗算結果を求める。RSAの乗算には、自乗が多数含まれる。自乗計算では理論的には(64bit)乗算の回数を半分にして2倍にしてやればいいため計算量が減る。2bitの世界では2倍はシフト演算でいいため、計算量が減る。(補足)ICF3のモンゴメリ乗算の解釈では、偶数は計算できないと、書いたのだがRSA暗号について、いえば、2つの大きな素数の積は、必ず「奇数」だから偶数は計算できる必要はない。偶数の計算が必要なアプリは、当時、あまり見つかっていないが、IBMの仕様では、偶数が計算できる必要があったため、偶数の場合も計算できるように実装した。今のIntelの最新のCPUのデバイスでもシフトは加算よりも高速だと思う。シフトの機能に依存するから、間違いではないのかもしれない。少なくとも1bitシフトの機能だけでいいなら、加算よりも、シフトは高速。+0MONA/0人>>18「このスレを友人の東工大の院生に見せたら笑われてしまった一体どうしてだろう...」このスレが、馬鹿にされるような、愚かな内容だったと、解釈できるわけで、黙っている、わけには、いかないのです。理由を説明してください。+0MONA/0人きっと飲み会で上機嫌だったからでしょう。他の話題に移ったのは、さして興味がなかったからでしょう。+0MONA/0人Wikiの「ブースの乗算アルゴリズム」、もう少し読んでから書けばよかった。この説明では、発明当時(1950年)では、役に立ったアルゴリズムで、もうあまり役に立たないものというように読めてしまう。動作原理の説明で使われているマシンが1960年~1980年くらいのマシンだから役に立たないものとなったのでは、ないだろうか?現在の時代、使えるゲート数が飛躍的に増えて、ブースの乗算アルゴリズムは、ほとんどのマイクロプロセッサの乗算器に採用される、非常に役に立つアルゴリズムとなった。(少なくとも10年くらい前までは)インターネットから得られる情報、うわさ、評価が、真実とは違う場合があるという教訓になったような気がする。ブースなんてアルゴリズムは、今となっては、過去の遺物なんですよ。最新の情報を摂取している、われわれに、かなうと思うな」先輩「いったいいつの最新の情報なのだ。+0MONA/0人ICF3の話じゃなくて、Monappyに出品した暗号LSIの話このスレのタグに、高いとかついているので、少し値下げしてみる。AEP1000Lは、たった1回性能を測定して、買ったときの箱にいれて眠らせていたのだけど、なぜか、表面にサビができている。写真をよくみて、検討してね。+0MONA/0人さらに値下げしてみる。802.11n/b/gWindows10ではドライバのインストールをせずに、そのまま使えました。+0MONA/0人そういえば、買い手はついたの?パソコンでいえば、今となってはドン亀になったPentiumが載っているマザーボードでしょ。いえば、買い手はついたの?まぁ、あまり売れると思っていないので。パソコンでいえば、今となってはドン亀になったPentiumが載っているマザーボードでしょ。x1をPCIに変換するボードがあるから、最新のパソコンでも動作する可能性はある。+0MONA/0人やっぱり、売れてないわけですね。izunaさんが、世間とズレまくっていますね。お気に入り新規登録してMONAをもらおう登録すると、投稿したり、MONAをもらったりすることができます。質問したり、答えたりしてMONAを手に入れてください。