Home
2024年
2023年
2022年
2021年
2020年

5月30日 ニュース、Google後援の「Open MPWプログラム」

GIGAZINE記事
無料で自分のチップを作れるGoogle後援の「Open MPWプログラム」
僕は大型コンピュータの暗号プロセッサ3個を本気で開発した経験があるので、 試作は、必要なさそうかなという気がしています。 そして33万円したXilinxのAlveo U50でSSLアクセラレータを考えていたりする。 でもGoogleさんが、本気で僕のWZetaを製品化したいということだと、 考えられることもあるかもしれない。

公開されているプロジェクトを一通り見てみました。全プロジェクトを 「CPU」「MCU」「8bit」で検索、僕の8bit CPU WZetaと競合するようなものは無いか、 ということを調べました。

RISC-Vがほとんどですが8bit CPUは2つありました。 一つは日本のプロジェクトですが、非実用でないといけない教育用CPUなので 比較対象外。もう一つも教育向けのシンプルなアーキテクチャで アドレス空間(11bit?)なので狭すぎ。

FPGAではなくてAISCのハイブリッドSnakeCubeが 「この国に必要だ」という人がいなくて、いいのかという気もしています。


5月30日 WZetaはコンテンツ保護用途にも最適かも?

僕のツイッターのサブ垢のTLは8bitパソコンや レトロゲーム機などのツィートが多い。 最近の話題は内藤さんによるとPlayStation2のメモリカードのスロットに microSDの入ったメモリカード型のデバイスを刺してCD-ROMの代替をすることだ。

なるほどPlayStation2の実機は古くなってCD-ROMのハードが壊れているものも 多くなっていて、修理するより、CD-ROMのisoファイルが入ったmicroSD入りの、 メモリカードで代替できるというのだから、便利かもと

isoファイルは、いくらでもコピーできるから、コンテンツ保護できないか? ということなのかもしれない。

このコンテンツ保護に必要なシステムについては、あまり考えてないので、 わからないけど、生産されてから数百回~千回程度の暗号演算でいい場合は、 WZetaは、ジャストミートする。 従来マイコンはハーバードアーキテクチャが多く、プログラムメモリと データメモリを別に持つ方式だが、WZetaはノイマン型アーキテクチャで 8bitのデータ幅のメモリ1個で動作して、かつ、公開鍵暗号に強い。 MRAMなどの不揮発メモリが、数百回~千回程度の暗号演算なら、安価であるという 条件がクリアできればになるが。

今回の話に戻すと、20年前のICカードのチップ入りSDカードを再生産すれば 良いような気がする。 そう。日立、東芝、松下の3社で共同して推進していたMOPASSカードのこと。 早稲田MOPASSとも呼ばれていて、各社にいる早大卒の人たちが集まり、 やっていたコンソーシアム。僕も参加していた。

数回、MOPASSコンソーシアムの集まりに参加したのですが、東芝から来ていた サブリーダが「超流通」をやっていた。詳しくはネットで検索して調べてもらえば 良いのですが、今回のコンテンツ保護をするための技術。 「超流通」をやっていた人が、早稲田大学の現副総長の研究室の出身で、 僕と同期というのは、なんの巡り合わせなんだろうと。 SHARP X68000でリブルラブルを作るほどの腕らしいよ。


5月29日 WZetaで一般CPU互換のスタックの実装

WZetaはスタックの機能がないので、スタックを利用するアプリは ソフトウェアでスタックを実装する必要があります。 システムにとって最小限のスタックを実装することで高速で省メモリなシステムを 作ることができます。しかし一般CPU互換のスタックの実装が遅くないか? という疑問のためにWZetaの普及が進まなくなるといけないので、 一般的なCPUのスタックと同等の、なるべく高速な「互換スタック」の実装を考えてみました。

互換スタック PDF

スタック上のメモリからゼロページのメモリに転送する^LDDWというハードマクロ命令の実装が、 良くできています。とりあえずあまり改変せずにコンパイラを移植してみるという目的に 便利かもしれない。 WZetaはプログラミングテクニックを駆使できる余地が、普通のCPUの10倍くらいある感じです。

あなたとWZeta、今すぐプログラミング
あなたのプログラミングテクニックが明日を創る。かもしれない。(笑)


5月28日 WZeta SDogコアの設計図を更新

キャリーフラグをクリアするCLC命令、連続したメモリを0にするLOOPZERO命令を追加した SDogコアとSBaxコアの設計図を更新しました。公式サイトの ダウンロードのページから入手できます。 もう少し直したいと思っている点があるので最終版ではないです。

スタックの雑談を書いていましたが、削除しました。


5月27日 乗算器のない8bit CPUで高速にべき乗剰余演算するコード

軽量で非常に良くできた8bit CPUのオープンソースWZetaを普及させるために RSA暗号や楕円暗号などの公開鍵暗号で使われるべき乗剰余演算のアセンブラコードを CC0ライセンス(パブリックドメインと同じ)で公開しました。 テック系のSNSに投稿しました。

crieit
Spotlite


5月27日 WZetaシミュレータ、お試し公開(12)

新規命令LOOPZEROの追加。$PRINT命令で表示がずれるバグの対策など。 verilogのバイナリを最新版に更新。

アセンブラに強い人とか、わかる人は、わかるという説明しかないので、 悪意、敵意の無い人は、お気軽にご質問ください。

公開ファイル WZetaシミュレータ バイナリのみ
WZetaSim2022_05_27.zip
SHA-1 : 4b3deba1decf9c2df8618c1f01855bcb34cf3bf9


5月26日 WZetaオープンソースライセンスの状況

自分のために整理したものを日記にしました。

WZeta ISA命令セットアーキテクチャ仕様
なるべくRISC-Vと同じにすることを考えていますが、RISC-Vのライセンスが、 僕の考えと著しく合わない場合は不明。

SDogコア
現在、WZetaの命令セットアーキテクチャとSDogコアの実装仕様とごちゃ混ぜですが、 RISC-Vと同様な考えで、実装に対するライセンス。apacheライセンス2.0なんかを検討しています。

SBaxコア
SDogコアの機能削減版でハードマクロ命令と割込み機能がありません。 ライセンスはSDogコアと同様か。

RedCoderコア
停滞しているアドレス拡張命令を実装したコア。完成は、まだ先。

WZPC規格
CPUにWZetaを搭載したパソコンの規格。WZetaの普及のために作ろうとしています。 規格のライセンスで適当なものを探しています。

WZ-660
WZeta CPU搭載の8bitパソコンの製品。 FPGAを使った実装になる予定で部品の調達まで完了している。

WZ-660シミュレータ
WZ-660のC言語実装のシミュレータ。現在、クローズドのフリーウェア。 パッケージにはicarus verilogのバイナリも入っているので限定的な verilogシミュレーションは可能。

WZPC BIOS
画面出力ハードや数学関数の実装とパソコンソフトとを繋ぐインターフェース。 MITライセンスを考えていますが未定。

WZPC FPGAファーム
8bitパソコンのハードとして使われているFPGAのファーム。まだ存在していない。 将来的に、有料化検討。

ICF3型1024bitべき乗剰余演算プログラム
暗号プロセッサSnakeCubeの広告投稿原稿のために急遽、作成しているWZetaのソフトウェア。 パブリックドメインを考えています。 WZetaに楕円暗号の実装を促進するためのサンプルプログラム。 8bit加算器1個で効率的に演算する方法ですが、 絶対時間的には遅いため、軽量な楕円暗号か、数時間かかっても良いIoTシステム向けに 使えると思われます。WZPCの暗号BIOSに搭載できる形式になっているので、 WZPCの暗号BIOS向けのアプリが開発されれば、このべき乗剰余演算ソフトをSnakeCubeに 差し替えることが容易な予定。


5月26日 組込みシステム技術協会 第6回 RISC-V Webセミナー

高度な情報は税金を出さないと難しいのかもしれないけど、 初心者向けにちょうど良いかなと思われたのでプレゼン資料の紹介。 暗号装置をブラックボックスのまま使いたく無いという単純な理由。
RISC-Vのセキュリティ技術(TEE, Root of trust, Remote Attestation)
発表者の須崎 有康 氏に僕は一度も会ったことはなくて経歴を拝見しました。 東京農工大学から東大で博士を取得とのこと。東京農工大といえば近くに日立の 中央研究所があって東京農工大の人が出入りしているのを見ているので日立の 色濃いところの人だと思っているのですが、僕の専門分野と非常に近いこともあって、 ツイッターのツィートは、良く見させていただいています。

バックで暗躍する部隊が、競合する敵部隊をなぎ倒して、その費用回収するにしても、 なぎ倒し方は今後の改善点のような気がしています。 前面にいる人は、それに気付いてないのかもしれないですけど。

参考まで日立のセキュリティ関係で同じ名前の人がいて間違いやすいです。 もう1人は、CRYPTREC暗号リスト(電子政府推奨暗号リスト)で良く見かける 洲崎 誠一 氏です。ICF3(1999年) の開発が映画化でもされる日には、登場するかもしれない人物かも。 モンゴメリ乗算のアルゴリズムをFAXで僕に丸投げした人です。 丸投げ後、僕や工場の人間が、わからないから解説してくれというお願いを待っていたのかもしれないですが、 僕が2日で理解してしまったので、研究所にあまり払わなくて良いことになったから、 ICF3の開発が進んだ、ということなのかと思ってます。 (当時、大学では数学科以外は暗号は全くやらない)

脱線しましたが、今回の発表資料のTEEは、一般の人が知っておいていい内容だと思ったこと。 日立関係の問題は、快く思っていないのですが、参照している以上、紹介するべきだと思ったこと。

TEEが直接、僕に関係するとすれば8bitパソコンのCPUにTEEみたいなものを装備することなの かもしれないですが、CPUにアレコレ機能追加するより、暗号プロセッサを着けて解決するので、 直接関係しない予定です。


5月25日 WZeta以外の命令コード逆順の自作CPU

WZeta以外の命令コードのオペコードとオペランドを逆転させた自作CPU、 TTM8の紹介。
https://www.switch-science.com/catalog/7911/
これはCPUの仕組みを理解する目的で作られた自作CPUキットです。 TTM8は、WZetaと同様に命令コードを逆順で解釈するアーキテクチャです。 Z80や6502などの8bit CPUの命令コードは正順なので、 逆順は利点もありますが、欠点もあるということなのです。 TTM8は教育用なので欠点を考える必要がなかったということなのかも。

WZetaは命令セットの逆順の欠点を対策して実用的な命令セットにしています。 1バイトで64KBのメモリアドレスにアクセスできるアドレッシングや、ハードマクロ命令です。 逆順ではオペランドの数は、どうしても固定値になりやすく、そうなった場合、 プログラムコードが冗長になってしまいます。 具体的にはZ80などの可変長命令コードでメモリをアクセスする場合、 1バイトのオペコードと2バイトのメモリアドレスでは3バイトですが、 WZetaでは1命令に1バイトのオペランドしか扱えないので2命令、4バイトになるのです。 そこでハードマクロ命令でプログラムコードを節約できる仕組みを追加しています。 ハードマクロ命令はIoTデバイスなどのように決められた用途のみで使われる環境では、 その効果を発揮します。仮想マシンのように使うこともできますが。

TTM8よりWZetaのほうが先だったのでTTM8の開発者にツイッターで 「あんまり僕のモノマネしないでください」といったことがありますが、 そのときにTTM8の開発者はTTM8以外に逆順のものを見たことが無いと言っていました。 TTM8のマニュアルには著作権表示があります。


5月24日 WZetaと40年前のファミコンCPUとの比較

WZetaは8bit CPUですが、トランジスタ数当たりの性能と トランジスタ数を少なくすることを目標とした設計のため40年前あたりのZ80とか、ファミコンCPU、 6502との比較が適当だと思っています。ちょうど6502のことが書かれているサイトがあったので紹介します。
https://pgate1.at-ninja.jp/NES_on_FPGA/dev_cpu.htm


記事には「命令フェッチの後に必ず第一オペランドがフェッチ」と書かれています。 以下は、さっきサブのツイッターでツイートした内容。

WZetaは6502やZ80と違って第一オペランドのフェッチが先。インデックスレジスタは無いけど、 ゼロページをインデックスレジスタにすれば、インデックスレジスタに代入しなくて良い。 これを便利にするために特殊なINC命令がある。

6502はCISCでインデックスレジスタやスタックが有る。 WZetaは非CISCでインデックスレジスタもスタックも無い。 これでアセンブラの腕次第ではWZetaはZ80より高速になる。 圧倒的に高速ということもある。 データの配置を考えることが高速な理由になるなかな。


5月24日 WZetaってオープンソースなの?「紙と鉛筆だけ」の発明

最近のSNSの様子で僕がWZetaの資金を集めをしようとしているのではないかという評判のようです。 実際、8bitパソコンの販売ができそうか、考えていますが、お金というより、僕にまとわりついている 産業スパイを転職させることが目的です。ただお金が入ってこないと、お金は出てこないということかもしれない。

WZetaトランジスタ数当たりの性能、命令セット内パリティ、ハードマクロ命令など、 圧倒的な新技術のオープンソースなので、世界に広まると予想しています。圧倒的ですから。 そして世界の人が、WZetaに繋がる暗号プロセッサSnakeCube の存在を知ることになるため、そのライセンス販売が可能になるかもと思っています。

つまり産業スパイを転職させればWZetaは、有害性のない良質な、無償のオープンソース だから広めましょう。CPUハードは僕の独占になりますが、ソフトは開発した人のものなので 成果の切り分けができるので、うまくいくような気がしています。 ただSnakeCubeのライセンス販売が鍵かもしれない。

余談ですがCPUの命令セットは、その作り方で、効率の良いもの悪いものができます。 WZetaは、常識を破る変則的な命令セットですが、高い効率であることが判明しつつあります。 人類に半永久的に使われる命令セットになることもあるかもしれない。 その命令セットの発明に必要だったのは「紙と鉛筆だけ」みたいな、話です。 いつも決まった人しか儲からない絶望的な世界では、真面目に働くということは愚行になる、 そんな雰囲気を払拭できるいい話かもと、我ながら思っていたり。 実際には紙と鉛筆だけでなくてFPGAの存在も大きいのですけれども。


5月23日 WZetaの新規命令、LOOPZERO実装完了

昨日の日記に書いた連続したメモリを0にする命令だけを追加しました。もう一つは断念。 このLOOPZERO命令はverilogによるシミュレーションも正しい結果になってます。まだ十分な検証量ではないですけど。

ニモニック LOOPZERO コード 3900h

コードはLOOPINC 0と同じですが、今後はLOOPZEROとして実行されます。

ザイログ Z80で画面クリアなどのために連続したメモリを0にするにはLDIRを使うと 1命令になりますが、ネットで調べると1バイト当たり21クロック。 このため高速性が必要な用途ではPUSH命令を使っている人が多いようです。 ループアンローリングでプログラムコードをどのくらい無駄にするかに依存しましが、 13~5.5クロック程度でしょうか。

WZetaのSDogコアのLOOPZERO命令はループアンローリングなしに1バイト当たり4クロック!です。 最大256バイト、256バイト境界を超えられないという制限はありますが、 LOOPZEROを複数回、実行すれば257バイト以上もできるので問題はないと思います。

LD A,&VRAM.H
LD B,0 ; (&VRAM.L)
LD C,255 ; 256回繰り返す
LOOPZERO


WZetaとZ80の比較ができるといいのですけど。 MSX3のスペックにFPGAの性能とLUT数、FF数、周波数なんかが、書かれていると、 すごく比較ができるのかな。でもMSX3のZ80互換なCPU、R800は内部16bitという話もあるし、 絶対的な性能では圧倒的に負けるのかもしれない。 トランジスタ数を考えた性能で比較できると楽しいのかもしれない。 MSX3はゲーム関係で、税金プロジェクトではないと思っていますが、某大学が関わっているようにも見える。


5月22日 WZetaに新規命令2個追加の検討を開始

検討の開始ですが、早めの連絡が良いかと思って日記にしました。

1つは連続したメモリを0にする命令。初期化とか、画面消去などで良く使われると思います。 追加しようとする理由はトランジスタ数当たりの性能が良いと予想されたため。
参考までにZ80で連続したメモリを0にする方法はPUSH命令を使った有名な方法があるのだそうです。 1992年ごろ大学のほぼ隣にある東大卒が作ったソフトハウスでバイトしていたときに、 早稲田で1学年下だった青木和麻呂(文教大の先生、共通鍵暗号で有名)さんが、楽し気に、 このZ80の画面クリア方法を話ていた。

Z80、画面クリアをネットを調べるといくつか出てきます。内藤さんのブログにもあるみたい。
Z80 スタックに纏わる話    2021年11月29日


画面クリアだけ、わかりやすいのは、こっちかな
森田和郎さんとループアンロールとスタックポインタによる画面クリアとか


意外と連続したメモリを0にするのは、大変みたいです。 今回の新規命令は、これを1命令で行うものです。WZetaに、ご期待ください。うまくいったら、すぐに日記で連絡します。


5月21日 ハードマクロ命令の使い方とBIOS

数学関数やAESなどの暗号関数をハードマクロ命令に定義しておけば、 リソースを多用する高速なルーチンに置き換えたり、専用ハードを追加することが便利になる。 WZetaのハードマクロ命令は0番~63番までの64個しかない。 仮想マシンでは大量のハードマクロ命令を必要とするため、仮想マシンを利用する環境でも、 高速なルーチンや専用ハードを利用したい場合はハードマクロ命令1個で、いろいろな演算に対応できるようにしたほうが良い。 つまり8bitパソコンのBIOSは0番を使っていますが、そこに数学関数やAES暗号などの暗号関数を定義しておけば、 いいように思っています。

要するに演算BIOSを定義することによって、WZetaのアプリやハード開発が促進されるだろうという予測ができる。


5月20日 WZetaシミュレータ、お試し公開(11)

CLC命令を追加しただけです。 前回追加した美人キャラ表示プログラムは削除しました。

アセンブラに強い人とか、わかる人は、わかるという説明しかないので、 悪意、敵意の無い人は、お気軽にご質問ください。

2022年6月2日、公開終了
SHA-1 : 9bbcf5932259b3224bcff77bd6a9ead58780ed50


5月20日 匿名質問では気が向かないけど三角関数

WZetaのBIOSにRSA暗号(厳密には1024bitべき乗剰余)を実装する話をしたからだと思うけど、 三角関数はどうするの?みたいな、匿名質問が複数あったので、答えると
BIOSで三角関数を定義だけしておけば、みながそれを使えて、ハードを追加すればアプリを 再コンパイルすることなく、高速化されるみたいなことを、考えていたのかもしれない。
だいたいの話をすれば、入力パラメータが16bit以内ならA、Bレジスタにデータをセットして BIOSCALLすればいい。16bitを超える場合はパラメータのデータがあるアドレスの先頭アドレスを A、Bレジスタに入れるようにすれば、BIOSCALLの演算関数にできる。

僕が、パラメータを標準化しないといけないのかも、だけど、、、


5月20日 パソコンのダウンロード販売!?

SNS上で昔のフロッピーディスクのコピープロテクトの話をしていたので、 まだ遠い先の話ですが、ちょっと思いついたこと。
8bitパソコンWZ-660のハードは日記5月18日に書いたように 市販のFPGAボードのコネクタに3個の部品を刺すだけの簡単なものなので、 ハードはお客側で別途、購入してもらって、WZ-660のファームウェアのみを ダウンロード販売ということも可能なのかもと。 実際、エンドユーザーがFPGAボードのファームを書き込む作業ができるかというと、 8bitパソコンを購入したいと思う人の多くは、できるかもしれないと思った。

コピープロテクトをどうするか、昔、WindowsXPのような認証システムを 自作したことがあるのだけど、シリアルキーのほうが、エンドユーザーからみると 便利だし、お得感があって、良さそうかと思った。 1人で使うなら、5台でも、10台でもいい。10台を1人で使うことは、難しそうだし。 販売にかかるコストは、サポートにかかる時間も影響することを考えているから。

シリアルキーの販売システムは、Vector とか使うと、マージンを取られるけど、販売に力を入れてもらえそうなら、良さそうと思える。 昔と違って今は、いろいろな方法があると、思うので、どうするのか、全く決まってないですけど。


5月19日 WZetaに新規命令1個追加(改訂版)

WZetaの命令セットにキャリーフラグをクリアするCLC命令を追加しました。
verilogファイルに実装完了。

これまでCLC命令がなくて良いと思った理由はADD命令で代替できたからですが ADD命令ではゼロページメモリを1バイト使う必要があったためCLC命令を追加することにしました。 そしてCLC命令の追加に必要なトランジスタ数を調べると、僅かなトランジスタ数で良いことがわかったため。

命令コードは 01C4

参考までにキャリーフラグをセットする命令はWZetaにありません。次の2命令で代替できます。

LD A,0
SUB A,C


5月18日 WZetaシミュレータ、お試し公開(10)

前回のリリースからwzasm.exeを差し替えただけです。 あと画像を追加しました。僕の画像変換プログラムが適当なので、あまり映りは良くないですが、 僕がSNSのアイコンとして使っている美人キャラです。

アセンブラに強い人とか、わかる人は、わかるという説明しかないので、 悪意、敵意の無い人は、お気軽にご質問ください。

公開ファイル WZetaシミュレータ バイナリのみ
(公開終了)
SHA-1 : 7486b8fb212e2a3a4d2d0c68f93c0144594e32a7

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



5月18日 WZ-660シミュレータでバグ発覚

少し大きめバグなので、お知らせすることにしました。 メモリモデル HALFでアセンブルするとalloc()関係のエラーが出ます。 TINYでは問題がないので、当面、TINYがお薦めです。このバグを対策しただけのリリースを、 数時間でするかも。


5月18日 8bitパソコンの生産開始、いや試作です

部品が届いたので、これで8bitパソコンを製造できそうです。
3個の部品をコネクタに刺すだけで8bitパソコンになるのは、お手軽でいいかも思っています。 パソコンとして動作するようになるためには、まだとても長い時間がかかりそうですが。

FPGAボードの在庫切れ考慮していて、候補のArty S7-25はネットワークやPCIeがないタイプ。 Arty A7-35Tだとネットワークがついているので、小型のサーバとかに流用する懸念を持たれて、 パソコンの製造を始めると在庫が切れる予想をしていました。 S7-25は製造元のホームページを見てもMakers向けとなっているし、価格も高目なので、 逆に在庫切れの心配をしなくて済むのかと考えています。
MSXに対抗してWZPC規格を作っているのではと、思った人がいたのですが、 対抗して作ろうとしているわけではなくてCPUに僕のWZetaを使うので Z80を想定したMSXを利用することはできないからなのです。
8bit CPU WZetaが広く普及すると仮定するなら、WZetaを搭載した8bitパソコンで 慣れておけば、組込み向けの仕事にありつける可能性があることが、売りなのですね。

僕が学生の頃は、インターネットから先端の技術を学ぶことをしていました。 Dylanという新しい言語に興味を持ったのですが本を無償配布していたので、登録すると、 本当に海外から、送られてきました。しかも2度。結局、あまり読む時間はなかったのですけど
僕がC++の新しい機能にも、興味を持って詳しくなったことで、 大学のgccのバージョンを上げることになったとか。 大学でC++を使った卒論を書いたのは、僕が始めてかも。 研究室でC++の布教活動をしたのですが、あまりうまくいかず、 C言語にするようにと言われた記憶がある。
何年か前、C++の産みの親として知られるビャーネ・ストロヴストルップが、 僕のいた大学の研究室に来たときには、ちょっと笑いました。
8bit CPU WZetaのハードマクロ命令の研究は、学生さんたちも考えたほうがいいと思っています。 大企業に就職をしようとする人は、あまり個性的にならないほうが、良いというのは、現在でも、 そうなのかもしれないですが。
上に税金を取ってこれる教員がいるとWZetaの方針に合わなくなるので、 個人や、趣味でやる程度になると思ってますけど。

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


5月18日 2ランク下の半導体で7.4倍の性能

暗号プロセッサSnakeCubeの広告原稿を公開していますが「2ランク下の半導体で7.4倍の性能」という発明です。 子供でもわかることだと思いますが、安心できる半導体の確保に、これを活用することはできるように思います。 僕が開発したICF3(1999年)はRSA暗号世界一の性能でした。 IBM互換の暗号装置でしたが、外務省や世界の銀行に納められています。 会社を退職して10年以上が経過し、孤立無援の状態で発明されたSnakeCubeの利権がどうなっているのか、 監視している海外系の人は複数、必ずいます。RSA 2010年問題で研究者が盛んに研究したにも、かかわらず、 僕が発明するまで、発明されていないのです。 国内の別の企業や、大学に移そうという動きも見られますが、盗作すれば、海外が盗作しやすくなるので、 僕がSnakeCubeを持って、動けるように、したほうが良いように思います。


5月16日 WZetaの暗号BIOS搭載のシミュレータを計画

暗号プロセッサSnakeCubeの広告入稿をしたものの、審査結果が、 新しくリリースしたとか、新発売とか、あったほうが良いとのことで、 WZetaの暗号BIOS搭載のシミュレータを計画しています。既存のシミュレータに暗号BIOSの一部を実装する予定です。 可能な限り数日中にリリースできるようにすることを考えていますが、もう少し遅れることはあるかもしれません。

オープンソースのWZetaのIoTデバイスで公開鍵暗号を使う場合や、(自作の)WZPC規格の8bitパソコンで 公開鍵暗号を使うための暗号BIOSです。

将来、SnakeCubeなどの暗号プロセッサがある場合は高速に演算されます。 暗号プロセッサが無い場合は、WZetaのCPUがソフトウェアで演算します。 ソフトウェアから見ると違いは無く、暗号BIOSの仕様にしたがってBIOSコールするだけです。 恐らく、アセンブラのコードは、こんな感じ

    LD A, &crypt_param.H
    LD B, &crypt_param.L
    ^BIOSCALL 0x07

シミュレータに追加する暗号BIOSに1024bitのべき乗剰余演算のコードのみを入れるつもりですが、 試作かつ脆弱性対策無のコードになると思います。 しかし8bit加算器1個で、高速に演算する方法を、知ることができるように思います。 性能も参考になるデータになると思います。

追記
SNS上に、これはTPMなの?というような質問があったのですが、 暗号BIOSはWZetaプロジェクトなので税金は使えないためTPMのようなレベルまでいかないだろうと思います。 高いセキュリティを必要としない需要では実用になるレベルには、なるような気がしています。 そして暗号プロセッサ無しのソフト暗号では、そもそも、セキュリティを期待するのは難しい。 特権レベルでなければ鍵のあるメモリを読めないということくらいは、可能かもしれないですが。
将来、高いセキュリティを必要とした需要もカバーできる方向は、考えていかなければならない と思っていますが。この暗号BIOSの範囲を超えるものになるかもしれない。


5月16日 SnakeCubeの広告原稿公開したけど取材ないよ?

昨日の日記で暗号プロセッサのSnakeCubeの広告原稿公開をしましたが、 取材とかあるかもと思っていたのですが、まだ、ありません。 インターネットで現行のRSA 2048bitの性能が、2ランク下の半導体で7.4倍という、 とんでもない性能、どうやって発明したのかとか、あるかもと思っていたのですが。
来週、米大統領が半導体関係の話で来日するというのに、この話ができる人が現地にいないことになる。 SnakeCubeが、簡単に発明できなかった事実を考え、日本は、これを運用できる体制にするべく、 僕の問題を、考えたほうがいいように思われます。


5月16日 既存の公開暗号と新しい暗号の併用ではないかと

スラド記事5月15日     NSA曰く、新しい暗号規格にバックドアはない

記事に

米政府は 4 日、既存の公開鍵暗号を用いるすべてのデジタルシステムについて、量子耐性暗号へ移行する方針

とある。新しい公開鍵暗号の安全性が十分なのかということもあるので、余裕のあるシステムでは、 既存の公開暗号(RSA暗号など)と新しい暗号の併用となるような気がしています。 OpenSSHの新しいバージョンも耐量子暗号とのハイブリッド がデフォルトになるようです。
既存の公開鍵暗号のRSAと楕円で、安全性においてどちらがいいのかというのは、研究者によって、いろいろなのですが、 RSA暗号は鍵を大きくするだけで安全性を高くできるので、RSA暗号を好む場合があるようです。 暗号プロセッサSnakeCubeは楕円も演算できます。


5月15日 暗号プロセッサの広告原稿の公開

SNS上のTLが若干、騒がしいのは、僕が暗号プロセッサSnakeCubeの広告原稿を 入稿したからなのだと思う。メディア関係の方で、事実確認をしているのかもしれないと思ったので、 審査中の原稿を公開します。
「暗号プロセッサ SnakeCube に 8bit CPU を加え様々な暗号が可能に」


例えるなら風邪で熱を出している状態で原稿を書いているので、 至らない点はあると思います。メリットとなりそうな技術的な話は、日記で、 ダラダラ書いてきたので、時間の無駄になると思いますが、興味がある方はどうぞ。

質問は電話で頂いたほうが早いかもしれません。 ちなみにメールは多分、産業スパイによって今日の朝で止められている。

CASIOの電卓技術から、何か参照していないかという、疑問を持った人があるようなので、 ここで答えると、全て僕が創造したものなのでCASIOに限らず問題となるようなことはありません。

8bit CPUは40年以上前から「スタック」を持っているのが当たり前になっています。 そしてほとんどがインデックスレジスタを持っている。
僕の8bit CPU WZetaはスタックもインデックスレジスタも持たない、 どれにも似てないCPUになっています。

僕は1994年~2001年ごろにIBMの大型コンピュータの互換機を開発していたので、 メインフレームのCPUの命令セットを知っています。 CISCなのでデータ圧縮命令が1命令でできるような命令もあったと思います。 そういった複雑な命令はマイクロコードによって処理されるのですが、 マイクロコードは次の世代では使えなくなるので、普通の命令セットを マイクロコードとする方式で実装されています。

つまり、この普通の命令セットでより複雑な命令を実装する機能は WZetaのハードマクロ命令の機能と似ています。 ただし一般のアプリ開発者も、この機能を利用できるようにしている点が違います。 一般のアプリ開発者が利用できるハードマクロ機能を含めた命令セット仕様を、 境界線として、僕は考えています。

ありふれた機能ですが8bit CPUでは見かけたことはなく、 ハードマクロ命令を実際に使ってみて非常に便利だということに 気付いたということです。WZetaはスタックが無いので、これを1段の 高速スタックにできる点がマイコン用途では、高性能化に役立っています。 MicrosoftのMS-DOSはINT 21hでパソコンの違いを吸収しましたが、 WZetaではハードマクロ命令でマイコンの違いを吸収できます。 ハードマクロ命令実行中も、普通に割込みを受けられる。

WZetaをスタックの無いCPUにしたのは、大昔のCPUはスタックが無かったという 事実を、知っていたということが影響しているかもしれませんが40年前の8bit CPU でもスタックが当たり前ですから、当然、スタックがあったほうが有利なのです。 このスタックの利害得失を、再考し、スタック無を敢えて選択したのです。


5月14日 8bit CPU WZetaのソースコードについて

WZetaの命令セットと詳細な論理ゲートレベルの設計図は公開していますが、 verilogのソースコードは、まだ公開されていません。

産業スパイのサイバー攻撃で僕の頭が悪くなるとWZetaの開発が進まず ソースコードの公開ができなくなるので、産業スパイの転職を促進してください。 現在も、なお産業スパイのサイバー攻撃が続いています。よろしくお願いします。

icarus verilogによってバイナリにしたものはWZ-660のシミュレータといっしょに公開しています。 icarusは仮想マシンのバイナリを生成するので恐らく同一のバイナリでWindows、Linuxをはじめ 多くのOSで動作します。icarusの仮想マシンを調べたわけではないですけどSIMD系の命令は、 SIMD命令を持っているCPUはSIMD命令で実行され、そうでないCPUは1つ1つ処理するような 仮想マシンのアーキテクチャなんだろうなぁと。


5月13日 8bit CPU WZetaのサイドチャネル攻撃耐性

WZetaの設計段階でサイドチャネル攻撃耐性を考えていたのかと言われると、 考えていなかったのですが、結果的にはサイドチャネル攻撃耐性の高いプロセッサだということに気付いた。
東北大とかIBMが8bit CPU Z80で共通鍵暗号のサイドチャネル攻撃をしている論文を、 ちらっとだけ見たのですが、この程度のサイドチャネル攻撃なら想定の範囲内。

想定されない範囲においてもWZetaは、他の8bit CPUと比較してサイドチャネル攻撃耐性が 高いという予想を持っています。

WZetaのSDogコアについて言えば、どの命令も同じ処理で動作します。 WZeta SDogコアはメモリアクセスの必要のない命令もリード・ライトの動作をしているのです。 ライトはライト・イネーブルが0,1の変化をしますが、信号線1本のON、OFFを読める精度の プローブは困難であるような気がします。データ系は命令に無関係に変化してしまうので。 これは消費電力で言えば、無駄な電力を使っていることになりますが、トランジスタ数を極限まで減らした結果です。 そして極端な例で説明すれば0、1の変化率が100%であっても、トランジスタ数が半分なら50%と同じなのです。 ややわかりにくい説明ですが、WZetaは低消費電力ですと言っています。


5月13日 Googleの物理カギにWZetaとか

Googleのセキュリティキー(物理カギ)にTitanがあります。 Titanではオープンソースの32bit/64bit CPU、RISC-Vが使われています。 これを単純に8bit CPU WZeta に置き換えるとウェハーからとれるCPUの数はWZetaのほうが多いので 原価を抑えることができて、Googleは儲かるみたいな。ないだろうか? Googleは半導体ファウンドリSkyWaterに出資して 無料でチップを製造できるサービスも提供しているほどだから、 Google自身が8bit CPU WZetaを使ったセキュリティキーを作れるような 気がしました。
Google以外の他の、みなさんも、ぜひにオープンソースの8bit CPU WZetaを よろしくお願いします。


5月13日 Google認証技術パスキーと僕のPassCert

SNS上で複数、Googleの認証技術パスキーが 斡旋されているように見える。物理キーを使ってパスワード無しに認証できる技術らしい。 詳しいことは良く読まないとわからないけど、パスワード無しで認証できることは、良さそうだと思う。

より高いレベルの本人認証が必要になることもあると思う。例えば、ある企業の名簿を閲覧するのには、 パスキーで手軽に認証、自分の登録内容を変更するには別の本人認証というような。

僕が昔開発したPassCert はSSLクライアント認証を使った方式でウェブサイトごとに認証をするシステムです。 システムですがブラウザが装備しているSSLクライアント認証の枠組みを使うので物理カギを Microsoft WindowsのAPIを使って実装するクライアントソフトウェアのみの認証システムです。 パスキーと同じように偽サイトで認証されないような仕組みがあります。具体的には ブラウザがSSLサーバ証明書を使ってサイトを検証して、そのサイトに対応する物理カギの証明書を 自動的に選択してくれるというもの。パスワードの入力が必要ですが設定を変更すればパスワード無しにする こともできます。パスキーとPassCertの2つを使うと便利かもしれない。

PassCertは(独)NICTに3回くらい応募しました。 最後にはNICTに乗り込んで、どうしてこれが不採択になったのだと大騒ぎしました。 NICTの職員には 「行政裁判をして頂いても、構いません」とまで言われています。

Googleパスキーとの併用は、インターネットを安全に利用するのに、とても便利になるような気がするので、 この機会に、PassCertを見直してもらえると、いいような気がします。儲かりそうなら、どこか、ないでしょうか?

PassCertは、この日記サイトに跡地を作っています。 サイトに対応する証明書を自動選択できる機能の説明のページは
https://note.idletime.be/PassCertBook/benri.html


5月12日 AES暗号のSubBytesを8bit CPU WZetaで演算

ツイッターのTL上にAES暗号のSubBytesの話題があったので8bit CPU WZetaでは、 どのくらいの性能になるのかアセンブラのコードを作ってみた。
R0~R15はメモリの先頭にあるゼロページメモリに連続領域として確保している。 AES_SBoxは256バイト境界に置かれたSBoxのテーブル。

    LD A,&AES_SBox.H
    LD C,&R0.L

    LD B,%R0
    STZCP [A:B]
    LD B,%R1
    STZCP [A:B]
    LD B,%R2
    STZCP [A:B]
    LD B,%R3
    STZCP [A:B]
    LD B,%R4
    STZCP [A:B]
    LD B,%R5
    STZCP [A:B]
    LD B,%R6
    STZCP [A:B]
    LD B,%R7
    STZCP [A:B]

    LD B,%R8
    STZCP [A:B]
    LD B,%R9
    STZCP [A:B]
    LD B,%R10
    STZCP [A:B]
    LD B,%R11
    STZCP [A:B]
    LD B,%R12
    STZCP [A:B]
    LD B,%R13
    STZCP [A:B]
    LD B,%R14
    STZCP [A:B]
    LD B,%R15
    STZCP [A:B]

STZCP命令は[C] = [A:B], B=B+1, C=C+1
WZetaのSDogコアは全命令4サイクルなので34命令×4サイクル=136サイクル
オリジナルのZ80はマシンサイクルとTサイクルとあるけどWZetaの1サイクルは Z80のTサイクルで3サイクルといったところか。WZetaと比較できる軽量なZ80互換の 命令サイクルとかがわかると比較できるかも。


5月11日 SnakeCubeの銀行向けトークン開発をわかりやすく説明

SnakeCubeの銀行向けトークンは、一般のディスプレイ付き電子署名端末と勘違いされ、 間違った評価をされるかもしれないと思ったため、わかりやすい説明をします。

要するに現在、最高セキュリティのQRコード・トークンからの移行において、 セキュリティを少しも落とさないで、銀行サーバのセキュリティを向上させ、 トークンの原価を大きく削減できるという提案なのです。

現行トークンではサーバー側が突破されると多数の預金が危険に晒されるため厳重な 管理が行われています。SnakeCubeトークンでは現行のセキュリティに追加してRSA暗号の 電子署名が追加されるため安全性が強化されるのです。なおかつRSAの電子署名を保証しない システム設計なので、SnakeCube端末の開発が楽にできるのです。 あらゆるサイドチャネル攻撃を全て完全に対策する端末を開発するには膨大な開発コストが かかりますが、RSA暗号は量子コンピュータによって解読されるリスクがあるため、どのみち RSA暗号の署名を保証しないシステム設計になるからです。

どうして現行セキュリティを下回らないのかは下図のOTP用CPUを見てください。 OTP(ワンタイムパスワード)用と書いていますが、実際には対称鍵暗号を使った MACになると思われます。現行のQRコード・トークンの回路のQRコードによる通信部分が、 OTP用CPU上部のINだと思ってください。データの出力はOTP用CPU下部のOUTですが、 これがパソコンに繋がっていないのです。このため電気火花を散らして、どのような 誤動作をさせようとも、ファームを改竄してもパソコンにデータを送信することができないのです。 SONYだとUSB I/FのSoCを集めて全回路を1チップにする製造が可能なのではないかと思うので、 チップ製造を含めて安全を確保できることが利点。

QRコード・トークンからSnakeCubeトークンにするとUSBケーブルからの給電になります。 そしてCMOSイメージセンサーやカメラ、画像処理プロセッサ、単3電池2~4本が削減されるため、 地球環境への効果も期待できる量ではないかと思います。

暗号プロセッサSnakeCube である必要はありませんが、SnakeCubeは他にできない巨大な鍵長のRSA暗号が可能なので、 割安なRSAを使い続けることができる可能性が非常に大きい。 このためSnakeCubeを選択するしかないのではと考えています。


この日記は、以下の日記の、まとめになっていますが、参考まで
SnakeCubeの銀行向けトークン開発
SnakeCubeの銀行向けトークン開発(2)
SnakeCubeの銀行向けトークン開発(3)
SnakeCubeの銀行向けトークン開発(4)



5月10日 SnakeCubeの銀行向けトークン開発(4)

ICカード関係の特許は、特許検索すれば、結構あって「特殊レジスタ」の特許を誰か取っているかもしれない。 上手い人が特許をとっていると回避不能かもしれないけど、あきらめて払うか、回避する方法を考えるか、 もしくは、「特殊レジスタ」を削除を考える。 「特殊レジスタ」が無くても全面的に現行のQRトークンのセキュリティを上回っていると、言えるかもしれない。
超軽量8bit CPU WZetaなら多数、実装してもチップ面積を取らない。 WZetaのソフトウェアで特殊レジスタの役割を果たせばよい。 CRCなどの整合性チェックならば特許の問題はないでしょう。

これで、多くのOSに対応するUSB I/FのSoCを入手できるなら、銀行向けトークン開発で障害となっているものは、 無くなったかな???


5月10日 WZeta応用アプリ、暗号資産向けハードワレット開発

僕がやるということではありません。 ここ数日の日記で、銀行向けトークンを考えてきましたが、暗号資産向けで無保証の場合の、 最も安価なハードを考えてみました。LCDのSRAMをWZetaの仮想マシン技術で削減できないかという日記を 今年の2月に書いたのですが、銀行向けでは、それを活かせるのか、 わからなくなってしまったので、その穴埋めとして。 銀行向けでも、ここでいう新技術を使えなくないのですが、無理に使うこともない状況になったのです。
WZetaの仮想マシン技術でLCDドライバを省く
WZetaの新技術の可能性(1)
WZetaの新技術の可能性(2)
WZetaの新技術の可能性(3)
WZetaの新技術の可能性(4)


5月10日 SnakeCubeの銀行向けトークン開発(3)

QRコードのトークンからSnakeCubeのトークンへの置き換えは、 サーバー側のセキュリティが向上しますが、クライアント側で僅かにセキュリティが下がるケースがありました。 プログラムのバグで偶然にトークンの中のデータが露出してしまうケース。 トークンの近くで電気火花を散らして誤動作をさせるケースも同様。
QRコードのトークンからSnakeCubeのトークンへの置き換えで、少しもセキュリティを下げないための トークンの回路を考えてみました。QRコードのトークンの内部回路と同等の OTP回路(厳密には対称鍵によるMAC)からの出力は液晶ディスプレイのみで、何があっても、 USBから内部データを抜き取られることはない。RSA暗号側の回路の出力も、バグによる出力は、 特殊レジスタによって、ほぼ出力されないので、安全。
こういう回路を作ればSnakeCubeのトークンは一気に普及するかもしれない。USB I/FのSoCが手に入ればだけど。

セキュリティのためにCPU 4個を使っているけどメモリ1個で動作して、 トランジスタ数を極限まで減らしているWZetaなら、32bit CPUを使うより安価。

QRコードをUSBケーブルに置き換えるアイディアは2年近く前に この日記に書いたので、 日立が、これを想定した特許を抑えてしまっているかもしれない。 実装関係の特許をクリアできれば、SnakeCubeの銀行向けトークン開発は有望という状態になった。



5月10日 SnakeCubeの銀行向けトークン開発(2)

産業スパイ経由で現行のQRコード(イメージセンサー)方式の利点が届いた。 産業スパイ経由にして欲しくないところ。

QRコードを使えばWindows、Mac、Android、iOSなどあらゆるデバイスへの対応が 可能であること、新しいOSへの対応も問題がない。

僕の提案するUSBケーブル方式で、あらゆるOSに対応させる場合、 OS毎にデバイスドライバを開発する必要があるので、端末ハードのコストは安くでも、 ドライバの維持費がかかる。
そこは考えてあって前回は図の説明をしていなかったのですが、 「他社USB」は多くのOSをサポートするUSB I/Fチップ(あるいはSoC)です。 銀行のサーバーからトランザク認証トークンの8bit CPUへの通信は 暗号化されているため「あまり信用のないUSB I/Fチップ」で問題がない。 表示されているQRコードを他のアプリから読み取られても問題がないのと同じ。

僕の提案する方式のデメリットについて。 QRコードでは銀行に接続するパソコンにドライバなどの 一切の追加プログラムをインストールする必要がないのに対し、 USB I/Fチップのドライバをインストールする必要があること。 ただパソコンは、いろいろ便利なアプリをインストールして使うもので、 そのためにLCDつきの端末で安全を確保するわけなので、それほど問題には ならないだろうと考えています。
USB I/Fチップのドライバをインストールしても、 LCDを信用することに慣れれば、銀行との取引のセキュリティが下がることはないので。

すべてのチップを自社製にしていない限り、 サイドチャネルの問題については現行のQRコードもあると考えています。

SnakeCubeはRSA暗号の演算ではサイドチャネル耐性がありますが、 楕円や新しいアルゴリズムでは、サイドチャネルを考えたプログラムになるので、 安くない。

USB I/FチップのSoCを入手して安全を確保すれば、サイドチャネルの問題がなくなるので、 もしかすると、ここでも現行のQRコードよりも安全かもしれない。

新型端末では、8bit CPUのプログラムのバグにより端末内のデータの漏洩を心配する 人はあるかもしれない。8bit CPUを2個に増やして1つを通信専用にすればバグで漏洩する 可能性は少ない。

新型端末ハードの製造コストを低減するために、多少、心配しなければならない問題が増えている。 そういう意味では現行のQRコードのほうがメリットがあるのかもしれない。 しかし現行のICカードで問題は、わかっているはずなので、SONYがやらなくても、他がやる可能性は、ある。 SnakeCubeに依存しないので、SONYが僕を抑えても、意味がない。



5月9日 SnakeCubeの銀行向けトークン開発

非常に良い話だと思っています。僕が損してまでやるということはないので、みな応援しましょう。
既にトランザク認証トークンを導入している銀行もあるのですが、 まだセキュリティ的に弱いところもあったり、トークンの製造原価を低減させる余地があると思われます。 SnakeCubeを使った新型のトークンを導入して、 USBケーブルによる給電に変更。電池を不要にすれば、電池切れを心配する必要もなく、地球環境にも良い。

僕の意見は国民に安心できる半導体を供給する約束と引き換えに税金で世界をリードする 銀行向けトークンの開発の検討をしたほうが良いように思います。

この提案の肝は現行のトランザク認証トークンに使われているSONYのイメージセンサーとカメラを削減して SnakeCubeの暗号プロセッサをSONYが開発することかもしれない。僕は日立の顔を見ることもなく 非常にストレスがない。SONYに入った同期を何人か知っていますが、知り合いでなくても良いので、 関心があれば、ご連絡ください。大手半導体ファウンドリのTSMCが熊本に来るにあたって SONYも投資しているという話なのでSONY銀行で使うのに最適なような気がします。 他社製の信用できるかわからない半導体トークンを使う苦労がないのです。

現行のトランザク認証トークンの弱点は、サーバーが突破されたときに全員の口座が危険に晒されること。 SnakeCubeの新型では公開鍵暗号を併用することで被害を最小限にできます。 SnakeCube暗号プロセッサもコントローラの 8bit CPU WZetaも、僕が設計したものなので、 RSA暗号なら安価なトークンを開発することができると思います。 併用なので量子コンピュータによって解読されても、現行と同じレベルのセキュリティなのです。 必要であれば、耐量子暗号が本格的になったタイミングでSnakeCubeに追加する案もあると思います。

コスト重視の銀行トークンでは楕円暗号や耐量子暗号は高価なのでRSA暗号だけという案はあるように思います。 この新型は技術的に1ランク上のセキュリティとなるのでSONYが開発しなくても、他が開発して、 イメージセンサーのシェアを奪われる問題があることをSONYの人は考慮したほうが良いのかも。

続き
SnakeCubeの銀行向けトークン開発(2)
SnakeCubeの銀行向けトークン開発(3)
SnakeCubeの銀行向けトークン開発(4)


5月8日 SnakeCubeの広告作成のためWZeta開発はお休み

広告作成に入るまでにWZetaのリリースを、もう一度しようと思っていましたが、頭痛で作業が遅れたため、 今月末までWZ-660のシミュレータのリリースはできなくなりました。

以下は雑談
WZ-660のBIOSを作り始めたのですが、MS-DOSのようなシングルタスクOSより、マルチタスクのできる OS(BIOS)が、いいなと思い始めて、作業が拡大してしまったことも、リリースを後回しにした理由です。
ハードの違いを吸収するためにMS-DOSではx86のINT 21h命令を使っているようです。 僕はOS屋ではないのですがINT 21hだと、他の割込みが滞るような気がしています。 WZetaではハードマクロ命令があるので、これをINT 21hの替わりに使うと、 BIOSコール中でも割込みを受け付けることができて安定したBIOSになるかなと。 ところがマルチタスクになってタスクスイッチが起きると BIOSコール中に別のBIOSコールを実行するということになるので、排他制御の仕組みを検討することになった。 WZetaの命令セットには割込み禁止命令があるのでBIOSコールのハードマクロ命令の前後にDISABLE、ENABLE命令を 入れると排他制御できます。しかしこれだとINT 21hと同じになってしまうので、 必要最小限の割込み禁止で済む仕組みを検討。最後の難関はBIOSコールに渡すパラメータ。 BIOSコールしてから、パラメータを取得するまでの間にタスクスイッチが入ると、パラメータが正しい保証がなくなる。
タスク数を最大4個にしてBIOSパラメータのメモリを4面用意すれば、いいかなぁと考え出したところで、 広告入稿の締め切りに間に合わなくなると思ったのでWZeta開発を、お休みすることに。 BIOSコールしてから、パラメータを取得するまでの間をDISABLE、ENABLEにしても良かったのですが、 4面のメモリを用意したほうが、割込みがスムーズになるという判断
もしかしてハードマクロ命令を使ったシステムコールって、この規模のCPUにしては凄いかも? ちょっとそう思っただけです。


5月8日 電波型サイバー攻撃で頭痛

頭痛で全く作業ができない状態。インターネットを見ることくらいはできるのですが。


5月7日 昔話、IBMの暗号チップから秘密鍵を抜き出す方法を発見した

産業スパイによる脳破壊が深刻になってきたので、昔話を書いてみる。

はてなブログの 「3、5、7で割った余りを計算する演算器」の最後のところに書いているから、 知っている人も多いかもしれない。

ICF3(1999年)の暗号プロセッサの開発後、 日立が後継の暗号プロセッサを計画しているところでCPUだけでなく暗号プロセッサもIBMのプロセッサを購入することが決まった。 そこで問題になったのは暗号プロセッサの中に厳重に保持されている秘密鍵のバックアップだった。 秘密鍵をバックアップするための仕様はなかった。 IBMが、その方法を教えてくれるはずもなかった。 なぜなら秘密鍵の盗難の方法を教えるのと同じだからだ。

国内向けにはバックアップ機能が必要だったらしく、日立は困っていたようだ。 僕にもバックアップ機能をどうするのか、相談された。
詳細なことは書けないし、覚えていないけど、このとき僕は、数の性質を使ったパズルを解いて、 IBMの暗号チップから秘密鍵を抜き出す方法を見つけ出した。
IBMの暗号プロセッサは、同一のプロセッサにリストアするための暗号化された秘密鍵のデータを取り出すことができた。
暗号装置にRSAの公開鍵暗号を設定することで、それが可能になる。 説明は省略するがRSAの鍵は周期が大きくなるように作る。 そこに敢えて1とnを繰り返す周期の鍵を設定する。 暗号装置内部で生成される乱数に よって1かnかになる。確率50%で1になる。 1であることがわかれば、それを利用して バックアップする方法が見つかった。 確率50%では、何度か繰り返せば、普通にバックアップが可能だ。

これでIBMの暗号プロセッサを購入することも可能になったし、国内の顧客にも満を持して販売され、 日立の大型コンピュータの事業に貢献したはず。日立社内には乱数生成器を止めてバックアップをす ることを考えた人たちもあった。最後、どちらを選択したのか、知らされてないけど、乱数生成器を止めると、 それを使った全ての機能が使えなくなるし、IBMチップのバージョンが上がる度に、乱数生成器を 止めるパッチを毎回することになる。大型コンピュータの開発経験がないと気付かないことだと思うけど、 パッチが1個でも必要になると、膨大な検証工数が追加される。 普通には僕の方法を使ったと思う。

今の僕は690ml、500円、3個の洗剤と、370円、1430mlの洗剤の、どちらが安いか? という問題が解けなくなるほど、産業スパイによって僕の脳は破壊された問題を言いたい。

日立の東大卒が、僕の脳破壊をIBMに売って儲けたと考えることもできる。 開発で事業に最も活躍した僕をリストラして儲けて、 脳破壊をして儲けて、東大卒の稼ぎ方は、とてつもなく酷い。 オマケに僕の遺伝子は、両親のものではないから、理3の種馬実験で作られたものかもしれない。 僕の頭を悪く見せて、技術買い叩いて儲けているのかもしれない。


5月7日 産業スパイによる脳破壊の拡散を防ぐために

産業スパイは自分の利益を損ねる可能性のある奴、全員、脳破壊しまくる可能性はある。 拡散防止を考えたい人は多いだろう。何といっても、気付く方法は無いからだ。
親が僕の脳がどれくらい壊れているのかテストを試みた。

どちらの洗剤を購入するのが安いのか?という問題を僕に聞いた。
暗算ができなくなったことを日記に書いたからだと思う。

親「690ml、500円、3個の洗剤」
親「370円、1430mlの洗剤」

さて、僕は、この質問の後、どうなったか?
じっくり解説しよう。690ml、500円、3個…の発音を聞いたところで、僕はギブアップ。 僕の短期記憶は3桁の数字1つくらいしかない。 短期記憶に、たとえ、いくつかデータが入っても、それらの相関関係を処理できず、 相関関係が発見されるまでの数秒から、数十秒の時間が必要になることがある。

この日記は、代理で誰か書いているのか?と思うほどだが、 短期記憶が無いだけなら、どうにかなるのかもしれない。 本人が、この日記を書いている。


5月6日 経済産業省、安全保障に関わる技術流出防止を強化

5日前のNHKのニュース
安全保障に関わる技術流出防止へ きょうから規制強化 経産省

NHKの記事には、日本人に技術を提供しても問題になることが書いてある。 知らない人は、読んだほうがいいのかもしれない。

僕は海外の影響を受けない人です。仲間に入れてもらって大丈夫。 僕についている産業スパイを剥がしましょう。

僕のSnakeCubeの発明は「佐世保(SASEBO)撃沈」の日記で 書いたように、日本の研究者が税金を使って開発してもできなかった 高性能&高効率な暗号プロセッサ。これを国立大学が狙っていると産業スパイが言っている。 僕の知財がどうなっているのかを、海外を含めた多数から、監視されているから、 国立大が僕から盗めば、海外も盗んでいいと解釈され「安全保障に関わる技術流出」となるので、 国は僕を疎外しないようにしたほうがいいです。この国が僕の発明を活かせるように考えたほうが、 いいように思っています。というより頑張らないと一部の日本人しか幸せでない世界になるように 思っている。それが悪いのかと言えば、良くわからないけど。


5月6日 半導体開発人員の構成のわかりやすい説明

僕は1994年~2000年まで日立でIBMの大型コンピュータ(メインフレーム)を開発していました。 僕は1982年の「IBM産業スパイ事件」の後に入っていますが、昔はFBIによって逮捕されることも あったような技術を仕事にしていたこともあり、僕がオープンソースとして公開しているものに、 影響がないか?と思う人もあるかもしれません。

結論は、世界の半導体企業といえばIBMだけではないのですが、少なくともIBMの影響はありません。 恐らく日立を含めた他の半導体企業の影響も無いというのが、僕の主張です。

どちらかというと僕を完全監視している産業スパイが各国に技術情報をリークする可能性のほうが、 問題なくらい。僕は、東大医学部の実験体として生まれた可能性もありますが、 彼らは姿を見せることはなかった。つまり、僕を語れるのは、僕だけなのだということです。 前述の組織からの入れ知恵を疑う人が良くあると思われます。 入れ知恵はありません。僕が、日本の天才の精子から作られたか、金持ちの跡取りだったか、 僕には知らされていませんが、その両方だったとか。そういう、ことではないかと思っています。

これまでの日記やウェブに技術的なことを書いていますが、文系だと説明が良くわからないために、 オープンソースを使って大丈夫なのかを判断できないでいるのかもしれないと考え、 日立の大型コンピュータで実際にあった半導体開発人員の構成について説明をすると、 良いかもしれないと思って日記に書いてみます。人員の構成については一般と同様ではないかと 思います。半導体の製造工程、「前工程」、「後工程」はネットで調べるとすぐに見つかります。

CPUなどのチップを開発するための人員構成です

(1) ファームウエア部隊
(2) 設計部隊
(3) 前工程部隊
(4) 後工程部隊


ファームウェア部隊は、組込みソフトウェア屋で、電子回路が一切わからないくても仕事が 可能なソフトウェア部隊
設計部隊は、CPUの命令セットを論理回路にする部隊で、多くの半導体デバイスでは、 AND、ORなどの部品を接続するだけの仕事。電子回路の知識は、全くなくても可能ですが、 設計部に配属されるのには電気・電子の学科を卒業しているほうが有利ではないかと思います。
前工程部隊は、チップの中の配線のノイズの問題を考える電気・電子の知識が必須の人と、 論理合成ソフトウエア開発の人がいます。
後工程部隊は、チップを石のような素材の中に封じ込める仕事。大型コンピュータだと、 複数チップをまとめるので、サッカーボールくらいの大きさになる。 マザーボードなどの基板設計をやっている人は、後工程部隊にいることが多い。

僕は1994年に日立に入ってどの部隊にいたのかを説明します。
1994年4月、中央研究所に配属、(2)設計部隊の補助みたいな仕事。
1995年2月、事業部の(1)(2)を中心とした指令部隊に異動。 そこから(4)に出向、半年くらい基板設計をする。
司令部に戻り、ひたすら机に座って長時間残業。米国の子会社に3カ月、出向。 技術を習得するべき年齢を空費することで魔法力を得るルールの仕事になる。 CPUを設計したいという想いが強くなり、夏季・冬季休暇のときに、自費で 論理設計の勉強を始める。CQ出版が販売していたPeak VHDLという論理シミュレータを 約20万円で購入。
米国から帰国後、暗号装置の開発のリーダーとして仕事を始める。 (2)論理設計と(1)のファームウェアの人たちといっしょに仕事。 3世代目の暗号装置の開発に入るときに暗号プロセッサを1から設計するように命令された。 本格的な(2)論理設計と、自作したプロセッサのマイクロコードの開発。マイクロコードは、 最後まで、僕1人でやっています。

各部隊とIBMの技術との関係を説明します。
(1)ファームウェア部隊では、IBMから正規ルートで入手した仕様に沿ってソフトウエア開発です。
(2)設計部隊。IBMのCPUチップと日立のメモリチップの接続はIBM仕様に沿って論理設計。 これは東大学卒2名、九大学卒1名でした。暗号チップはRSA暗号(べき乗剰余)が演算できる 演算器を設計せよ、という注文だったので、IBMの演算器を全く知る必要がない仕事だった。 ファームウェアでIBMのAPIに合わせるので、ファームウェア開発の人がいて、その人が、 IBM仕様を読んで開発していた。

説明は、最初の結論の通りになっていたと思いますが、日立が少し不思議なことをやっていたので 紹介すると、こういうところで働くと、日立退職時に「IBM CMOS情報」の機密情報を守るように誓約されます。 CMOS情報と言えば、一般的には前工程の重要な機密情報を指しているように思う人が大半だと思います。 退職時に、そのことに気付かなかったのですが、日立は(1)のファームウェアの情報に「CMOS情報」 という名前を付けていたのです。

互換機のビジネスでは、大型コンピュータ発売から数年間は、重要かもしれませんが、 I/F仕様なので、一般のプログラマにも公開される情報も多く含まれたものです。 科学技術的にみれば、発売され公開されてしまえば、たいしたことのない情報になっているのです。

こんなトリックを使って、科学技術的に重要な「IBM CMOS情報」を知った人間として、退職者を 不利な状況に追い込んでいた。僕の場合はIBMチップの前工程データを扱う 電子回路シミュレーションもしていたから、間違っては、いなかったのかもしれないけど、 僕が役立つ情報を持っていないことは、完全監視によって、IBMに伝わっていると思っていて、安心していた。


5月5日 マイナビの趣深い半導体業界記事

雑文なので普通の人は読み飛ばしてください。
マイナビ記事「今も昔も産業スパイが跋扈する半導体業界」著者:吉川明日論

記事は互換機の技術や、半導体エンジニアの頭脳流出などだが、1982年の「IBM産業スパイ事件」 の話もあった。日立が産業スパイしてFBIに逮捕された話。

僕が「IBM産業スパイ事件」を知ったのは2005年に日立を退職した後のことだけど、 あの日立の長時間残業、開発現場で、そんなことが起きていたのかという感想。

IBMの大型コンピュータ(メインフレーム)の互換機を僕は開発していたのだけど、 大型コンピュータの設計仕様はIBMが互換機メーカー向けに作成したものだったし、 互換機開発に必要な情報はIBMに問い合わせることも可能な状況になっていた。

この日記では、お馴染みのIBM互換の暗号プロセッサICF3(1999年)の仕様書は、 IBMから正規ルートで入手されたものだったようです。

言いたいことを、ひとことで言えば、僕が汎用的な暗号プロセッサを作ったので、ファームウェアで IBM互換機のAPIにしている。つまりICF3にIBMの論理回路アーキテクチャの技術は入っていない。 だから日立は僕をリストラすることができてOpenICF3 として公開が可能だった。


5月5日 WZPC規格は8bit CPU WZetaの普及のためにある

一昨日の日記に8bitパソコンのWZPC規格を作り始めたこと、 昨日の日記に乗算命令の追加方法の検討を書いたので、 興味を持った海外の人があったのかもしれない。 慣れない日本語では、僕の書いたことが十分に理解できないだろうと思う。 この日記が理解の助になればと思って書いています。

WZPC規格の位置づけ。
WZPC規格は優れた規格として作られているものではなく、優れた8bit CPU WZetaを普及させるために 簡単に作れる規格。
WZPC規格はゲームパソコンとして価値があるのではなくて 新しい8bit CPU WZetaを学ぶことができることに価値がある。 ゲームパソコンとして売り出せば酷評されることになるだろう。 VDPプロセッサが無いのでゲーム機としては必須のスプライト機能がない。

VDPプロセッサの需要があれば、考えることはあるかもしれないが、 僕が頑張れる範囲にない。 WZetaやICF3-Zを流用することは可能かもしれないけど。需要は無さそう。 乗算命令のために追加するICF3-Zで音楽演奏させるアイディアとかは、 あるかもしれない。しかし、これも、まだ遠い将来のこと。 儲かるくらいの需要があれば、話は別かもしれないが、需要は無さそう。

画面の動きの激しいゲームはWZPC規格のWZ-660では無理かもしれないが、 トランプ、麻雀、戦争シミュレーションや、 素人でも簡単に作れる10分くらいのノベルゲームくらいなら動作すると思います。 それで漢字ROMを考え始めたのです。


5月4日 WZetaに乗算命令の追加は、ないの?

乗算命令については頻繁に聞かれている。これまではARMやRISC-Vに嫌がられるので見送ってきました。 8bitパソコンを作っていて、やっぱり乗算命令がないと性能不足かもしれないと思うようになった。 そこで少しだけ乗算器の追加について考えた。

いろいろやり方はあるのだけど、一つの案はICF3-Z をベースにコプロセッサとして追加すること。自分の設計なので改造すれば簡単に作れそう。 乗算命令を追加するために、自分より大きなプロセッサを追加するため、 WZetaの最大の特長であるトランジスタ数当たりの性能を失ってしまうのだが、 逆にこれはARMやRISC-Vに嫌がれることを最小にするので、良いかもしれない。

そして8bitパソコンの性能不足の役には立つので、ICF3Zベースのコプロ案は、あるかもしれない。 WZetaに無理なく接続できそう。除算命令もできるし、多少、複雑な計算も、事前に プログラムを転送しておけばいい。

このコプロでは公開鍵暗号の性能加速は、あまり期待できない。 公開鍵暗号は暗号プロセッサSnakeCubeを繋げればいいと考えている。 ICF3-ZベースのコプロはFPGAに実装するなら効率はいい。


5月4日 ゲーム言語とか

僕がやるということではありません。WZ-660のシミュレータで遊ぶネタを考えみただけです。

昔のSHARPのポケコンをゲームマシンにして子供のオモチャとして中古販売で売れないか、 ちょっと考えた。ポーカーとか麻雀ならルールを覚えても、損したと思うこともないだろうから。

1986年ごろ、僕が高校生だったときにSHARPのポケコンPC-1251というRAMが 4.2KBしかないマシンを購入した。工学社「I/O」に「ポケコンパイラ」という コンパイラが掲載され、当時の僕は感動していた。ポケコンもコンパイラの時代になったのかと。

「ポケコンパイラ」はPC-1251の1桁の液晶ディスプレイにゲームを作成するのに向いたゲーム用の 言語だったけど、1桁は厳しいから1988年ごろのSHARP E500(大学生協版PC-1480U)なら、 240x32の液晶だからポーカー、麻雀で遊べそうな気がする。

要はゲーム言語を作ってWZ-660と昔のSHARPのポケコンの双方で動作するようなコンパイラがあると、 いいのかもと。8bit CPU WZetaのハードマクロの勉強になって、後にIoT Javaの開発に役立つかもしれない、 夢のある話。

240x32の画面が表示できるWZ-660は、まだリリースできていなくて、 SnakeCubeの広告作業が終わるまで、つまり、今月末になって、しまうこともありそう。


5月3日 WZPC規格作ってみる

CPUにWZetaを搭載した8bitパソコンWZ-660を開発しています。 特定のハードに実装した結果をWZPC規格として作ってみる。 個人でやっているので完成しないことも良くあると思ってください。

画面モード160x48を廃止しようと考えているところなので、 廃止のことを早めに連絡しようと思った結果、WZPC規格に言及することになった。 数十年前のSHARPのポケコンで使われた150x32、240x32を追加しようと考えたからなのだけど、 本当は現在、コスパの良い液晶を考えたほうが良かったのかもと思っていたり。 ポケコンのエミュレータが存在しているから、いいかという気もしている。 当面は320x240、16色(QVGA)の実装をしていると思うから、ポケコン画面対応は遅れるかも。

ハードマクロ命令の0番にBIOSCALLというラベルをつけてBIOSコールにすることを考えています。 Intel x86ではソフトウェア割込み(MS-DOSではINT 21h命令)を使っていますが、 ハードマクロ命令は、ハードマクロ命令を実行中となり、割込みを受け付けるので、便利かもしれない。 アセンブラでは、次のように記述

    ^BIOSCALL 0x01

上記ではファンクション番号0x01番のBIOSコールとなる
0x01番はAレジスタに画面モードを設定しておく。 この他、キーボードやタイマーを制御できるBIOSコールを作成予定。


5月3日 WZ-660パソコンの開発、漢字表示(2)

漢字ROM作れるのか?みたな質問。漢字コードから漢字のデータに繋げる方法が、 通常のROMにデータを入れるよりFPGAのLUTのほうが、良い点がある、ということかも。 まだ実際にやってないから保証の限りではないけど。

容量の関係で利用頻度の低い漢字のデータを削減することを考えると、 漢字コードと漢字データが入っているアドレスのテーブルが必要になるけど、 FPGAのLUTやスライスで作ると、漢字データの入ったLUTを大型セレクタに接続しないだけでいい。 漢字コードと漢字データの接続はFPGAの配線で実装できて、しかも高速だということかも。

XilinxのFPGAはLUTを64bitのデータが入るROMにできる。そしてLUTが4個入った スライスは4入力セレクタのハードを持っている。さらにスライスを16入力セレクタとして使うことを考える。 最終的にデータが無いアドレスをいっぱい持った、素晴らしいROMになるということ

ただし64bitのデータを取り出すのに64クロック必要となるので1命令4クロックのWZeta SDogコアでは 16命令に1個の漢字データしか取り出せない。テーブル参照して漢字データを取り出すのも、 数命令かかるから、遅いというほどでもない。


5月2日 WZ-660パソコンの開発、漢字表示

タイマー機能を追加して、次は漢字表示を考えているところです。
MSX3もXilinxのFPGAらしいといううわさがありますが、 WZ-660はXilinxのFPGAを搭載するDigilentのArty S7-25(or A7-35 or S7-50)のボードを考えているところです。

現代の8bitパソコンで、最も面白いことと言えばMSX3のCPU、Z80(R800)とWZ-660のCPU、 WZetaのマシン語比較だと、僕は思う。 40年前(1982年)の8bitパソコンの多くはZ80と6809というCPUだった。その比較が楽しかった。 Z80の半分のクロックしかない6809でも性能が出るとか、いろいろ雑誌にも掲載されていた。

WZeta SDogコアは非常に少ないトランジスタ数で作られているためArty S7-25の5~10%程度のLUT数しか使わない。 あまったLUTに漢字ROMを入れてI/Oでアクセスするとメモリ空間も消費しないし好都合だ。 Xilinxに特化した加工をすれば8x8の恵梨沙フォントならJIS第一、第二水準など約7000字の全てが入るかもしれない。 8x8の漢字だと読みにくいからファミコン風なゲームしかできないかもしれないが。 12x12(実質11x11)のフォントだと8x8の漢字ROMの容量が2倍となってしまうのでS7-25では数千字しか入らないと思うが、 入ってない漢字をチェックできるツールがあれば、ゲームで使うのには、なんとかなるかもしれない。

MSX3で漢字ROMをどうやっているのか、わからないけど、WZ-660をArty S7-25に実装した場合、 あまったところに漢字ROMが、いっぱい入って、しかもメモリ空間を圧迫しないものができるかもしれない。 とうことで歓声をあげている。設計工数は、かかりそうだけど。

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



5月2日 今後の予定

今月末くらいまで暗号プロセッサSnakeCubeの宣伝広告を作成しているので、 1日以上、工数が必要な話は、今月末まで遅れます。


5月1日 産業スパイに妨害された

電波型サイバー攻撃によって脳を攻撃された。 産業スパイは偏差値が1減る程度の軽い問題だよねというようなことを言っているけど、 偏差値20から1減ると19になる。植物になったらどうするのかと、全然、軽くない。


暗号プロセッサ OpenICF3