24時間あふれる自家天然乱数で、世界をもっと豊かに安全に

飛石技術は、2014年7月、世界最大のランダム・プール・ネットワークの構築を始めました。

各位に協力を募ります。

ハッカーの皆さんに、準備が整い次第、 ソフトウェア開発への参加をお願いします(関係者に相談中です。お待ちください)。

企業の皆さんに、協力金の支払いをお願いします。

物理サーバの管理者の皆さんに、まだ、ほんとの初期の実験段階ですが、 このランダム・プール・ネットワークへの参加をお願いします。

できるだけ早く、コンピュータ・ネットワーク利用者の皆さんに、 自由に利用できるランダム・プール・ネットワークを提供できるよう、 鋭意活動を進める所存です。

ままある質問と回答 は こちら 。また、こちらで 計画を考え ています。

背景の説明

飛石技術では、2010年より、コンピュータのセキュリティ向上のために、 OpenPGP card プロトコルを実装した USB Token, Gnuk の研究開発を行い、自由ソフトウェアとして FSIJ の著作物として発表し、 並行して設計が自由なハードウェアとして FST-01 を製品開発し、 Gnuk を組み込んで販売しています。

FST-01 の販売量は大量ではありませんが、個々人の自作のものも含め、 Gnuk Token は世界各国の GnuPG 利用者(の一部)に支持され、利用されています。

この研究開発の中で、飛石技術では、 安全なコンピューティングのために必須である物理乱数生成器の方式を考案し、 NeuG と名付けて実装をしました。 こちらも自由ソフトウェアとして FSIJ の著作物として発表しています。 また、2013年11月から2014年6月までキャンペーンを行い、希望者に対して、 USB に接続して使うデバイスの NeuG 1.0の入ったFST-01 を販売しました。

このキャンペーンにおいて、いまや、 多くの「サーバ管理者」は現実のハードウェアへのアクセスは難しく、 NeuG 1.0の入ったFST-01 を活用する環境にない、ことが判明しました。

これは、安全なコンピューティングが危機に瀕している状況の一つの兆候でしょう。 その「サーバ」は仮想であり、 正確に「計算」はできるかもしれませんが、 情報を保全したり、ランダムネスを制御することは(実は)難しいのですから。

現行のシステム構成

初期の実験段階ですが、システムが稼働しています。 このネットワークには root node, supplier node, demander node の3種類のnode があります。

下記の図のような構成です。

 <HWRNG>        (0)
[supplier] ---> [root]
       ^   (1)  ^
       |       /
    (3)|      / (2)
       |     /
       V    /
     [demander]
  1. 最初に root node が稼働します。各nodeからの登録を受け取り管理します。
  2. supplier node が物理乱数生成器を持って稼働し、root node に登録します。
  3. demander node が稼働します。root node に supplier node を問い合わせます。
  4. supplier node と demander node は乱数をやりとりします。

現在、root node はフランスで、supplier node は群馬県前橋市で、demander node(s) はそれぞれ前橋、名古屋、米国、で稼働しています。

近日中に supplier node が米国およびブラジルで稼働する予定です。

実装は、モックアップの必要最小限だけです。暗号通信も検討されてますが、まだ実装されていません。

もくろみと野望

現状把握ですが、そもそも世界でどれくらいのランダムネスが必要か、について定量的な見積りは(正確には)誰にもできていない、と考えられます。

ミクロの問題については、専門家各位の知見があります。たとえば、手近な二つの乱雑さの例を挙げると、パスワードのエントロピーはどれくらいが望ましいか(もしくは、必ず記号を含める、定期的に変更するなどの運用の推奨)、公開鍵暗号の鍵の生成には必ず手元のコンピュータで行い、/dev/random を使うことが推奨される、などです。サーバ管理者の方は、(間違って)サーバでGnuPGの鍵生成を試み(/dev/random を使うので)、大変時間がかかる、ということを経験したことがあるかもしれません。

NeuG standalone deviceを利用している経験からは、その能力 70KiB/sec は通常一台のサーバには必要十分であり、おそらく、通常のサーバの十数台は難なくまかなえる量であろうと思われます。

だだし、注意しなければならないのは、ネットワークが進歩して高速になったといえども、バンド幅は依然として高価である、ということです。仮に、一台のサーバが必要とするランダムネスが、そのネットワークのバンド幅の大半を消費してしまうとしたら、ネットワークを通じてランダムネスの供給を受ける、という考え自体を改めなくてはなりません。しかし、現況においてはそこまでの心配はなさそうです。

もくろみとしては、必要と考えるサーバ管理者が、現行のシステム構成の例でいうところの demander としてランダム・プール・ネットワークに参加し、希望する分だけ乱数の供給を受けることが安心して行える環境を整えたい、と考えています。

まず、ボトムアップに、物理サーバの管理者が supplier node を用意して、ランダム・プール・ネットワークに参加し、このネットワークを拡大していく、その体制を整えたいと考えています。

NeuG standalone deviceを100個以上(最大 400個)用意して、購入を希望する物理サーバの管理者に応えられるようにしたいと考えています。

現行で想定している物理乱数生成器は NeuG standalone deviceです。が、余裕があれば、他の乱数生成器も必要に応じて(demander が)選択できるようにする方が望ましいかもしれません。たとえば、高精度のタイマを持つ物理サーバで haveged を用いて物理乱数生成器に代える、という運用も一つの方法として検討するに値するかもしれません。

root nodes は各大陸に一つ以上ある、という環境を整えたいと考えています。

システムの実装の自由ソフトウェアを現行のモックアップの運用から、機能の洗い出しを進め、強力にしていきたいと考えています。現行では、一つの物理乱数生成器だけを想定している、一つのsupplierとの接続だけを想定している、などの単純化している制限がありますが、こういった制限を外していこうと考えています。また、ネットワーク的にできるだけ近くのsupplierを選択する機能も実装したいと考えています。さらに、トラフィックの可視化のために関連ツールの用意、ディストリビューションのパッケージとして配布するなどの整備も検討しています。

野望としては、現在のランダム・プール・ネットワークを出発点として、世界中のすべての需要に充分応えられるような、世界最大のランダム・プール・ネットワークの構築を実現したい、と考えています。

御協力のお願い

知り合いから、Goteo.org や Indigogo で資金を集めたらどうか、と提案を受けたのですが、 自分が属する近場の社会の皆様にお願いするのが筋だと考え、まずは日本語で、日本の皆さんに呼びかけることにしました。

ハッカーの皆様

Kun9BE4はその始まりから自由ソフトウェアですが、現在は飛石技術が著作権を有する形式となってます。

利用者のコンピューティングの自由を守ることを確実とし、さまざまな方の参加を受け入れて継続して研究開発ができる環境を検討しています。著作権の移譲を受け、潜在的な脅威に対抗できる環境を模索しています。

GnukやNeuGも、多くの方の協力を受けてますが、基本的に一人でソフトウェア開発を行っており、FSIJの著作物としての配布で問題なく進められました。FST-01の基板設計の著作権は飛石技術ですが、これも特に問題なくできてます。

しかし、このランダム・プール・ネットワークは世界最大を目指し、かつてない規模で進める予定です。 これまでのGnukなどよりも強力な環境が望ましいだろう、と考えています。しばし、お待ちください。

匿名希望でなければ、ソースコードの THANKS に名前を開示します。

企業の皆様

企業の皆様には下記の表のしくみを用意しました。メールで gniibe at computer.org に申し込みください。

皆様の御理解と御協力に感謝します。

名称 ランダムプール保全協力金
目的 乱数をネットワークで世界に配信し、コンピューティングを豊かに安全にします
使途 飛石技術による開発プロジェクトの人件費、関連機器の購入費、ネットワークサーバの利用費、伝道のための旅費
対象者 山頂を目指す企業 (任意での協力を呼びかけ)
金額 一口 50,000円/年 (税込)
その他 ランダムプール保全協力金に御協力いただいた企業には、一企業につき一つ NeuG1.0.xの入ったFST-01をお送りします。匿名希望でなければ、gniibe.org で企業名を開示します。会社のロゴを用意して申し込みください。

物理サーバの管理者の皆様

現行の参加方法 (準備中で、これから順次、整えます)は下記のとおりです。

  1. NeuG standalone deviceを用意する。

  2. Kun9BE4を取ってくる。 https://git.gniibe.org/cgit/kun9be4.git/

  3. GigoをNeuGを繋げた(物理)サーバで走らせる。

    # gigo ../id /dev/ttyACM0
    

という感じの手順になります。いろいろと変更されますので、時々、再スタートする必要があるでしょう。

$ git pull && make
$ cd src
# gigo ../id /dev/ttyACM0

というように。現行では暗号通信は実装されていないので、node の ID は各自で生成ください。 暗号通信が実装された段では、おそらく OpenPGP の枠組みで ID に署名、という構成になるかもしれません。

NeuG standalone deviceの購入(あるいは自作)にかかる費用、計算機資源、ネットワークの費用などは、各自の持ち出しです。

匿名希望でなければ、gniibe.org に名前(あるいはハンドル名)を開示します。

現行のしくみではランダム・プール・ネットワークに参加すると参加者にIPアドレスは開示されます。

座って注文すれば料理が出てくるようなレストランを期待されると困っちゃいますが、井戸を掘って水が出たぞ、という段階(ちゃんとした井戸にするのもこれから)だと御理解いただければ幸いです。

まだ、間に合います!

さて、突き詰めて、最悪のケースを考えてみましょう。

既に、わたしたちのこのネットワークは 100% の完全な監視下にあり、すべての通信は記録され傍受されている、と。 既に、わたしたちのコンピューティングは、100%の(誰かの)コントロール下にあり、いかなるビットの操作も、監視されている、と。

こういったケースでは、どんな大規模なランダム・プール・ネットワークがあろうとも、少々の嫌がらせになる程度で、ほとんど無力でしょう。

現実問題としては、記録と傍受および攻撃(の量)と同等の防御と自衛(の量)が必要でしょう。

ネットワークをリセットする、その第一歩として、一から世界最大のランダム・プール・ネットワークの構築を行いましょう。

さぁ、気がついたあなた、目覚めた今こそ、立ち上がりましょう。

あとがき

表題のタイトルは、前橋駅前の温泉、「ゆーゆ」のキャッチコピーに感銘を受けて思いつきました。昨日、家族で昼間行きましたがとても、いい温泉でした。

さて、20年以上前になりますが、大学を出て入った会社の新人研修で「ネットワーキング」というコマがありました。上野毛でしたか。

通信工学科卒業の僕は、これをコンピュータ・ネットワークのことだと勘違いして、なんと先進的な会社であることか、と胸を踊らせたことを覚えています。

その実は、(平成になってましたが)昭和の香りが残るアナログなもので、(今でいうところの)ソシアルネットワークがいかに大事かというものでした。

当時の銀行出身の社長が宴会芸の金魚売りの形態模写を披露してくれました。今、あらためて思います。「ネットワーキング」、大事です。ネ。