(57)【要約】【課題】ブロックチェーンを用いてハードウェアのネットワークの信頼性を向上させ、かつ、非公開台帳を用いて故障したハードウェアを交換可能とし、ハードウェアのネットワークであるシステムの保守管理を経済的に行えるようにすること。【解決手段】ブロックチェーンと、サーバー内に備える非公開台帳を併用し、ハードウェアにリンクする論理ノード間のデータ送受信の履歴を改ざん不能にしつつ、故障したハードウェアを交換してもハードウェアにリンクしたブロックチェーンに影響が出ないようにする。
2018174112.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントと、少なくとも一つのサーバーから構成されるネットワークにおいて、
前記サーバーは、各クライアントとデータのやり取りをする入出力インターフェースを有し、
前記複数のクライアントは、それぞれ固有の物理アドレスを有し、前記入出力インターフェースを通して前記物理アドレスを前記サーバーに送信し、
前記サーバーは、更に鍵生成装置および合成装置を含み、
前記鍵生成装置および前記合成装置は、前記物理アドレスから、それぞれのクライアントに対応する秘密鍵および公開鍵を生成し、
前記秘密鍵および前記公開鍵は、それぞれ対応する前記クライアントに渡される、
ことを特徴とするネットワーク。
【請求項２】
前記サーバーは、前記複数のクライアントそれぞれに対応して、前記物理アドレス、前記秘密鍵、および前記公開鍵の組み合わせからなる認証変数を生成し、
前記複数のクライアントに対応する前記認証変数を集めて非公開台帳に記録する、
ことを特徴とする、
請求項１記載のネットワーク。
【請求項３】
前記非公開台帳は、前記サーバー内に保管し、前記サーバーの外部に対して非公開であることを特徴とする、
請求項１記載のネットワーク。
【請求項４】
前記複数のクライアントは、互いに異なる第一のクライアントと、第二のクライアントと、第三のクライアントと、を含み、
前記鍵生成装置は、前記第一のクライアントに対応する第一の秘密鍵から第一の公開鍵を生成し、
前記合成装置は、前記第一の公開鍵と、前記第二のクライアントに対応する第二の物理アドレスと、から前記第二のクライアントに対応する第二の秘密鍵を生成し、
前記鍵生成装置は、前記第二の秘密鍵から、前記第二のクライアントに対応する第二の公開鍵を生成し、
前記合成装置は、前記第二の公開鍵と、前記第三のクライアントに対応する第三の物理アドレスとから、前記第三のクライアントに対応する第三の秘密鍵を生成し、
前記鍵生成装置は、前記第三の秘密鍵から、第三の公開鍵を生成し、
前記第一の公開鍵と前記第一の秘密鍵は、互いに一対の組みを成し、
前記第二の公開鍵と前記第二の秘密鍵は、互いに一対の組みを成し、
前記第三の公開鍵と前記第三の秘密鍵は、互いに一対の組みを成す、
ことを特徴とする、
請求項１記載のネットワーク。
【請求項５】
前記合成装置は、前記第一の公開鍵と、前記第二の物理アドレスとを、所定の合成方法で合成して得た値を、所定の素数から１を引いた値で割り算した剰余を、前記第二の秘密鍵とする、
ことを特徴とする、
請求項４記載のネットワーク。
【請求項６】
前記第一の公開鍵、第一のハッシュ値、および第一の電子署名から、第一の論理ノードを形成し、
前記第二の公開鍵、第二のハッシュ値、および第二の電子署名から、第二の論理ノードを形成し、
前記第三の公開鍵、第三のハッシュ値、および第三の電子署名から、第三の論理ノードを形成し、
前記第二のハッシュは、前記第一の論理ノードをハッシュ化して生成したものであり、
前記第三のハッシュは、前記第二の論理ノードをハッシュ化して生成したものであり、
前記第二の電子署名は、前記第二のハッシュ値と前記第二の公開鍵とを前記第一の秘密鍵で暗号化して生成したものであり、
前記第三の電子署名は、前記第三のハッシュ値と前記第三の公開鍵とを前記第二の秘密鍵で暗号化して生成したものである、
ことを特徴とする、
請求項４記載のネットワーク。
【請求項７】
前記第二のクライアントは、第四の物理アドレスを有する第四のクライアントに置き換えられ、
前記第四の物理アドレスは、前記入出力インターフェースを通して、前記サーバーに送信され、
前記非公開台帳において、前記第二のクライアントに対応する前記認証変数が、前記第四の物理アドレス、前記第二の秘密鍵、および前記第二の公開鍵を含む組み合わせに置き換えられ、
前記第四のクライアントは、前記サーバーから前記第二の秘密鍵および前記第二の公開鍵を渡され、前記第一のクライアントから前記第二のハッシュ値および前記第二の電子署名を渡される、
ことを特徴とする、
請求項６記載のネットワーク。
【請求項８】
前記第一の論理ノード、前記第二の論理ノード、および前記第三の論理ノードは、論理ブロックの一部あるいは全部を形成し、
前記第一の論理ノードは、前記第一のクライアントに対応し、
前記第二の論理ノードは、前記第二のクライアントに対応し、
前記第三の論理ノードは、前記第三のクライアントに対応し、
前記第一のクライアントから前記第二のクライアントにデータを転送することによって、前記第二のハッシュ値が更新され、前記論理ブロックが変化し、
前記サーバーは、所定の時間間隔で前記論理ブロックを承認し、その時点でのタイムスタンプを添付し、前記論理ブロックの変化の履歴の少なくとも一部を記録することを特徴とする、
請求項６記載のネットワーク。
【請求項９】
ある時点で第一のタイムスタンプを添付した第一の論理ブロックと、その前のある時点で第二のスタンプを添付した第二の論理ブロックと、更にその前のある時点で第三のスタンプを添付した第三の論理ブロックとが、連結し、ブロックチェーンの一部あるいは全部を構成することを特徴とする、
請求項８記載のネットワーク。
【請求項１０】
前記第一のタイムスタンプは、前記第一の論理ブロック、第一のブロックハッシュ、および第一のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第二のタイムスタンプは、前記第二の論理ブロック、第二のブロックハッシュ、および第二のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第三のタイムスタンプは、前記第三の論理ブロック、第三のブロックハッシュ、および第三のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第一のブロックハッシュは、前記第二の論理ブロック、前記第二のブロックハッシュ、前記第二のノンス値を、まとめてハッシュ化して生成したものであり、
前記第二のブロックハッシュは、前記第三の論理ブロック、前記第三のブロックハッシュ、前記第三のノンス値を、まとめてハッシュ化して生成したものである、
ことを特徴とする、
請求項９記載のネットワーク。
【請求項１１】
前記第一のブロックハッシュ、前記第二のブロックハッシュ、および前記第三のブロックハッシュは、それぞれ所定の桁数の複数ビットの数列で構成され、
前記複数のビットは、それぞれ、第一の値、あるいは、第二の値、のどちらかの値であり、
前記第二のノンス値は、前記第一のブロックハッシュの最初のQ桁のビットが第一の値になるように調整され、
前記第三のノンス値は、前記第二のブロックハッシュの最初のQ桁のビットが前記第一の値になるように調整され、
前記Qが１６より小さい自然数である、
ことを特徴とする、
請求項１０記載のネットワーク。
【請求項１２】
前記複数のクライアントは、それぞれ複数のハードウェアで構成され、
前記複数のハードウェアは、それぞれ少なくとも一つの半導体チップを含み、
前記半導体チップは、少なくともセルアレイを含み、
前記セルアレイは、複数の認証素子で構成され、
前記複数の認証素子の一部は、前記半導体チップの製造段階における制御不能のばらつきにより、不良ビットとなり、
あるいは、前記複数の認証素子の一部は、前記半導体チップに意図的に印可したストレスにより、破壊ビットとなり、
前記不良ビット、あるいは、前記破壊ビットの、前記セルアレイ内での分布に応じて、前記物理アドレスを生成する、
ことを特徴とする、
請求項１記載のネットワーク。
【請求項１３】
前記ストレスは、電気的ストレス、光学的ストレス、機械的ストレス、あるいは、電磁場的ストレスである、
ことを特徴とする、
請求項１２記載のネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上に存在する装置を認証する技術に関する。
【背景技術】
【０００２】
進化し続けるインターネットに接続する装置の数は年とともに増大し、そのネットワーク構造も複雑化・多様化してきている。しかしながら、基本的には、特別な機能を有するサーバーを中心的なノード（基幹ノード）に据えたクライアント・サーバー（CS）型と、このような基幹ノードが存在せずすべてのノードが基本的に対等な形で接続するピアトゥア（P2P）型に大別することができる。【０００３】
ネットワークは一般に結節点（ノード）と通信線（リンク）からなる。第一のノードと第二のノードが、通信線である信号伝達路によってリンクしている。たとえば、第一のードと第二のノードは、信号伝達路を介してデータの一形態であるプロトコル・データ・ユニット（PDU）を交換している。この第一のノードと第二のノードは、それぞれ一定の整合性を持つプロトコルに従ってプロトコル・データ・ユニットを扱う。【０００４】
物のインターネット（IoT）では、これら第一および第二のノードはネットワークに接続する装置（ハードウェア）であり、物理的実態を持つので物理ノードと呼ぶ。このとき、第一の物理ノードと第二の物理ノードが物理的実態を有する信号伝達路によって接続されているとみなされる。このような信号伝達路は、有線・無線の電子信号あるいは光信号を伝達する。このように複数の物理ノードと信号伝達路で構築されるネットワークを物理ネットワークと呼ぶ。【０００５】
物理ネットワーク上で物理ノードを認識するために用いられるアドレスを物理アドレスと呼ぶ。つまり、第一の物理ノードが第一の物理アドレスを持ち、第二の物理ノードが第二の物理アドレスを持つ。第一の物理ノードから第二の物理ノードにデータを送るということは、第一の物理アドレスから第二の物理アドレスに、物理的実態を有する信号伝達路を通してデータ（この場合一例としてフレーム）が送られるということである。【０００６】
一方、第一および第二のノードに物理的実態が無い場合、これらのノードを論理ノードと呼ぶ。論理ノードは、ネットワーク上で仮想的に定義された論理アドレスに関連づけられたノードであり、必ずしも特定のバードウェアに関連づけられていない。複数の論理ノードで構築されるネットワークを論理ネットワークと呼ぶ。このとき、第一の論理ノードと第二の論理ノードを結びつける信号伝達路は必ずしも物理的実態を持っていなくて良い。【０００７】
論理ネットワーク上で論理ノードを認識するために用いられるアドレスを論理アドレスと呼ぶ。つまり、第一の論理ノードから第二の論理ノードにデータを送るということは、第一の論理アドレスから第二の論理アドレスにデータが送られると解釈される。実際には、転送されるデータに第一の論理アドレスと第二の論理アドレスを順に符号として添付することでもある。したがって転送を繰り返すと、データには複数の論理アドレスのリストが添付されることになる。この論理アドレスのリストは、このデータの最新の論理アドレスと過去の転送履歴を含むものである。こうして、このデータにアクセスするすべての論理ノードが、このデータがどこをどう転送され、今どの論理ノードに仮想的に存在していると定義されているかを知ることができる。このように、最新の論理アドレスを含む転送履歴が添付されたデータをブロック、あるいは、論理ブロックと呼ぶ。転送履歴が改ざんされない限り、論理ブロックは最新の論理アドレスによって適切に認識できる。【０００８】
転送履歴を改ざん不能にする技術として近年脚光を浴びているのが公開台帳と呼ばれる技術である。公開台帳技術の中でも最も有名なものが、ビットコインと呼ばれる暗号通貨の送金データを改ざん不能にするために考案されたブロックチェーンである。すなわち、送金履歴を改ざんできないようにすることで不正送金を防ぐネットワークシステムである。
（ブロックチェーン）【０００９】
ここでブロックチェーンについて簡単に説明する。【００１０】
ブロックチェーンは、ピア・トゥ・ピア（P2P）型ネットワークにおける公開台帳システムである。P2P型ネットワーク構造では、中核を担うサーバーの存在を仮定せず、ネットワークに結節するすべてのノード（結節点）が非中核的であり、対等であり、互いを監視し合うことによってセキュリティを担保することが必要である。すなわち、中核（コア）となるサーバーの存在を仮定したクライアント・サーバー型ネットワークでは実現不可能なアプリケーションを提供できる。【００１１】
その最も重要なものがビットコインと呼ばれる暗号通貨による送金システムである。ビットコインでは、まず過去の処理履歴と処理する主体となるアカウント名を合成して暗号化する。それを電子署名として転送し、新たな処理とするものである。したがって、処理手段を金融機関にゆだねない。更新され転送された処理履歴は、ネットワーク上の他の多くの非中核的ノードによって監視され、多数決に似た手法で公認される。【００１２】
処理履歴の転送は通貨の転送と同義であり、公認された処理履歴が通貨のように扱われる。こうして、銀行のように特定の中核的存在を介さずに処理が進行してゆく。【００１３】
ネットワーク上を流れる電子署名に利用される暗号は、アリスとボブの喩で有名な公開鍵暗号で説明するのが最も簡単である。アリスは予めボブに自分の公開鍵を送っておく。この公開鍵はネット上で誰かに盗み取られても構わない。ボブは、アリスから貰った公開鍵で手紙を暗号化し、アリスに送る。この暗号化された手紙を解読するには、アリスの公開鍵と対になっている秘密鍵が必要である。したがって、暗号が解読されない限り、ネットワーク上で誰かに盗まれても手紙の中身を読まれることはない。その秘密鍵を持っているのはアリスだけだからである。アリスは、自分で持っている秘密鍵でボブの手紙の暗号を解き、それを読むことができる。【００１４】
このように、公開鍵はネットワーク上に晒して構わない。したがって、アリスが公開鍵を送るのはボブだけではない。ただし、その公開鍵で暗号化された暗号を解いて手紙を読めるのは、暗号が解読されない限り秘密鍵を所有しているアリスだけである。公開鍵と秘密鍵は必ず一組で生成されるが、公開鍵から秘密鍵を再生することは現実的に不可能であるようにしなければならない。つまり、暗号を解くということは公開鍵から秘密鍵を再生することである。また、秘密鍵で暗号化した手紙は公開鍵で解号することもできる。【００１５】
公開鍵のもう一つの重要な役割は、アリスへ手紙を送るための宛先、すなわち、アリスのネットワーク上のアドレスになることである。ボブが暗号化した手紙をネットワークに流すとき、ネットワークに接続している任意の受信者の手に渡ることになる。このとき解号できなければ読めない。どのようにしても読めないということは、受信しなかったことと同意である。したがって、アリスのみが解号できるということは、アリスのみに届いたということと等価である。こうして、公開鍵のもう一つの役割がネットワーク上の論理アドレスになることが明らかになる。したがって、ビットコインで使用される公開鍵は、ビットコインアドレスとも呼ばれる。【００１６】
たとえば、論理ノードとは、ビットコイン等の暗号通貨を納める財布のことであり、予め論理アドレスが付与されている。財布の中身には何らかの貨幣価値のあるもの（通貨やそれと等価なコインなどに関するデータ）が納められる。更に何らかの暗号技術を用い、アドレスと財布の中身を電子署名として財布に取り付けられるようになっている。【００１７】
このような財布は、たとえば、専用アプリをパーソナルコンピューター、タブレット、スマートフォン、スマートカード等のハードウェアにインストールして使うことができる。そのとき、財布の中身は、専用アプリをインストールしたハードウェアのストレージにデジタルデータとして保存される。このデジタルデータの管理は、たとえば、P2Pを前提とした電子処理では、ハードウェアの管理者・所有者が自ら責任を持って行う必要がある。この点がクライアント・サーバー型と異なる点である。クライアント・サーバー型では、金融機関などが責任を持って行うことになる。P2Pでの電子処理は、このように中核的機能を有する金融機関のような存在を必要としない。【００１８】
図１は、処理（N-2、N-1）、処理（N-1,N）、処理（N、N＋１）、…の鎖を示す図面である。処理（N-2,N-1）は財布（N-2）から財布（N-1）への何らかの処理であり、処理（N-１,N）は財布（N-１）から財布（N）への何らかの処理であり、処理（N,N＋1）は財布（N）から財布（N＋1）への何らかの処理である。ただし、Nは３以上の任意の自然数。【００１９】
財布（N-1）の中身は、たとえば、どこかから振り込まれた１０００円だったとしよう。この１０００円の振り込み元を財布（N-2）とし、更にこの１０００円には電子署名（N-2）が添付されているとする。ただし、１０００円というのは一例に過ぎず、他の貨幣価値と等価または可換なデジタル情報であれば何でも良い。財布（N-１）は、財布の中身である１０００円と、その電子署名と、次の電子署名作成のために用いる秘密鍵（N-１）と、それと一対の組をなす固有の公開鍵（N-１）からなる。上述したように、公開鍵（N-１）は、財布（N-１）のネットワーク上のアドレスである。一例として、ビットコインアドレスが上げられる。【００２０】
次に、公開鍵（N-１）、財布（N-１）の中身、および電子署名（N-2）から、ハッシュ関数（一例としてSHA-256）を用いて、ハッシュ値（N-１）を生成する。このハッシュ値（N-１）を財布（N）に送付し、財布（N）ではそれを財布（N）の中身として保存する。一方、転送元の秘密鍵（N-１）を用いて、財布（N）のアドレスである公開鍵（N）と中身であるハッシュ値（N-１）を暗号化して電子署名（N−１）を生成し、ハッシュ値（N-１）と共に財布（N）に転送する。【００２１】
こうして財布（N）は、ハッシュ値（N-１）と、電子署名（N-１）と、さらに一対の組を成す、財布（N）に固有の公開鍵（N）及び秘密鍵（N）から構成されることになる。こうして、財布（N-１）から財布（N）へ1000円を送金する処理が完了する。【００２２】
ハッシュ値（N-１）には、この1000円が財布（N-１）から来たという情報が含まれているはずである。しかしながら、ハッシュは暗号と異なり逆変換不能なので、ハッシュ値（N-１）を逆変換（解号）してそれを読むことができない。そのため、電子署名（N-１）が添付されている。この電子署名（N-１）は、秘密鍵（N-１）を使い、公開鍵（N）およびハッシュ値（N-１）をまとめて暗号化したものである。したがって、この電子署名が本当に財布（N-１）から来たものであるかどうか確かめるには、この電子署名（N-１）を公開鍵（N-１）で解号したものと、財布（N）に納められている公開鍵（N）およびハッシュ値（N-１）と比較すれば良い。暗号が破られていない限り、一致していれば確かに秘密鍵（N-１）で電子署名したことに偽りはない。一致していなければその電子署名は偽りである。あるいは別の公開鍵、例えば公開鍵（Q）で解号した結果と一致すれば、公開鍵（Q）をアドレスとして所有する財布（Q）が不正処理したことが判る。【００２３】
ただし、過去の履歴に不正処理がないことを証明するには別の方法が必要である。なぜなら、電子署名だけでは、秘密鍵（N-１）を正規に所有している者が不正を働く可能性を否定できないからである。たとえば、所有者による秘密鍵の乱用が考えられる。P2Pを前提にしたビットコインでは、それを「仕事による証明」（PoW）によって防ごうとしている。これは、概ね上手く行っていると考えられている。「仕事による証明」（PoW）について以下で述べる。【００２４】
図１では、続いて公開鍵（N）、財布（N）の中身（この場合ハッシュ値（N-１））、および電子署名（N-１）から、ハッシュ関数（一例としてSHA-256）を用いて、ハッシュ値（N）を作成する。財布（N）はこのハッシュ値（N）を財布（N+1）に送信し、財布（N＋１）はそれを財布（N+1）の中身として納める。一方、財布（N）は、秘密鍵（N）を用いて、財布（N+1）のアドレスである公開鍵（N+1）とこのハッシュ値（N）を暗号化し、電子署名（N）を生成する。続いて、ハッシュ値（N）と共にこの電子署名（N）を財布（N+1）に送付する。【００２５】
以上から、財布（N）の中身には、財布（N-１）から財布（N）への処理（N-１、N）がハッシュ値（N-１）として記録されていることが判る。同様に、財布（N+１）の中身には、財布（N）から財布（N+1）への処理（N、N+1）がハッシュ値（N）として記録されていることが判る。こうして、任意の財布の中身は、過去のすべての処理履歴を連鎖的に含んでいることが判る。すなわち、過去の最新のハッシュ値が、過去のすべての履歴を代表している。【００２６】
一方、一つの財布に送金する財布は、図１の例のように一つとは限らない。実際には複数の財布から一つの財布に送金する場合は少なくないだろう。また、一つの財布から複数の財布に送金される場合も少なくないだろう。こうして、送金の処理履歴はより複雑になることが判る。しかしながら、最新の履歴を含むハッシュ値は必ずたった一つである。それをメルクルの根という。したがって、メルクルの根から過去を遡ることができる。それは、図２のように、メルクルの根から枝分かれした樹形図のようになる。これをメルクル樹形図という。このように、メルクル樹形は過去のすべての履歴の集まりを時系列で並べたもである。すなわち、これが上述した論理ブロックに相当する。また、最新の履歴であるメルクルの根が論理ブロックを特徴づける符号となる。【００２７】
たとえば、メルクルの根であるハッシュ値（ABCD）は、ハッシュ値（AB）およびハッシュ値（CD）に対応する履歴に繋がっている。ハッシュ値（AB）は、更にハッシュ値（A）およびハッシュ値（B）に対応する過去の履歴、すなわち、処理（A）および処理（B）にそれぞれ繋がっている。ハッシュ値（CD）は、更にハッシュ値（C）およびハッシュ値（D）に対応する過去の履歴、すなわち、処理（C）および処理（D）にそれぞれに繋がっている。【００２８】
しかしながら、そもそもハッシュ値は逆変換不可能なのでハッシュ値を解読することによって送金処理の履歴を辿ることは不可能である。たとえば財布（N）の中身（ハッシュ値（N-1））の過去の処理履歴を実際に辿る一つの方法は、任意の他の財布（M）を選び、その公開鍵（M）を使って電子署名（N）を解号し、その結果を公開鍵（N）およびハッシュ値（N-1）と比較する。一致しなければ別の財布（M+1）を選び、公開鍵（M＋1）使って解号し同じ作業をする。一致すればその処理は財布（M＋１）からの送金であったことが判る。このときM＋１はN−１であることが判る。続いてハッシュ値（N-3）を含む財布（N-2）の公開鍵（N−2）も同様の方法で検索できる。この作業を繰り返すことによって処理履歴を遡ることが可能である。ここでMおよびNは任意の自然数とする。【００２９】
こうして、論理的には過去の処理履歴を遡ってゆくことができるわけであるが、このようにハッシュ値を使って過去の履歴をひとつずつ遡ることは実は必ずしも必要ない。むしろ、数百から千個程度の処理を一塊に集め、これらの処理が現実に存在したことを何らかの方法でまとめて承認してしまえば良い。具体的には、メルクルの根以外のハッシュ値をすべて削除し、最新のハッシュ値（たとえばABCD）を符号として用いれば良い。一つの符号で代表される処理の集まりを論理ブロックと呼ぶ。【００３０】
メルクルの根（上の例ではハッシュ値（ABCD））に代表される過去の処理の集まりが存在することをタイムスタンプで承認する。こうして承認された論理ブロックがネットワーク上に公開される。したがって、これを公開台帳と呼ぶ。この承認は、公証役場に書類を持ち込み日付を付けて封書してもらう日付認証に似た作業（ワーク）である。未承認の処理の集まりを新たな論理ブロックとして承認することを記帳と呼び、記帳した者には認証作業の対価として一定の報酬がビットコインで与えられる。こうしてビットコインを獲得することを採掘（マイニング）と言い、採掘するビットコインの利用者を採掘者（マイナー）と言う。しかしながら、一度に記帳できるマイナーは一人だけなので、マイナーたちは先を競って採掘する。採掘されたビットコインは論理ネットワーク上の市場で流通する。【００３１】
一例として図３を用い、この承認作業を簡単に説明する。まず承認済みの過去の論理ブロックに関する何らかのハッシュ値を獲得する。次にネットワーク上に存在する未承認処理の集まりを発見し、その集まりのメルクルの根（ハッシュ値）を獲得する。この二つのハッシュ値に可変のノンス値というものを追加し、更にハッシュ化してブロックハッシュを作る。このとき、ビットコインではハッシュ関数としてSHA-256を利用する。もちろん、他のハッシュ関数を利用してブロックハッシュを生成することも可能である。【００３２】
ノンス値は、一般に、３２ビットの任意の値である。このノンス値を含めて生成されたハッシュ値（ここではブロックハッシュ）は２５６ビットの値である。２の２５６乗は１０の７７乗より大きく、ブロックハッシュは膨大な自由度を持っていることが判る。前記ノンス値を調整すると、ブロックハッシュの最初の数ビットをゼロにすることができる。一例として、新たに生成したブロックハッシュの最初の１６ビットがすべてゼロになる確率は２の１６乗分の１、すなわち65,536分の１である。すなわち、偶然にはほとんど起こりえないことである。【００３３】
ハッシュ関数は非可逆的である。したがって、最初の数ビット（この例では１６ビット）がゼロとなるハッシュ値（ここではブロックハッシュ）を生成するようなナンス値を、逆変換で求めることは一般に不可能である。つまり、ナンス値を変えながらハッシュ化を繰り返し、その都度生成したハッシュ値の最初の数ビットがすべてゼロになるまでそれを繰り返さなければならない。こうして、最初の１６ビットがすべてゼロとなるようなブロックハッシュを生成するためのナンス値の決定には、一定以上の計算機の活用が不可欠であることが判る。【００３４】
P2Pネットワークでは、マイニングを行うのは特定の中核的機能を持つノードではない。一定以上の計算機リソースを活用できれば誰でもマイニング可能である。マイナーは、より正確には、そのマイナーが活用するP2P上のノードは、ナンス値を変更しながらネットワーク上で総当たり探索を行い、最初の数桁がすべてゼロとなるような未承認処理の集まりを見つけ出せばよい。つまり、ナンス値を変更しながらネットワーク上を採掘（マイニング）して回っているのである。このように、必ずしも特定の未承認処理の集まりに対してナンス値を調整する必要はない。【００３５】
いずれにしろ、最初の数ビット（この例では１６ビット）がゼロのブロックハッシュが掘り出されると、このブロックハッシュに対応する未承認処理の集まりは、新たに承認された論理ブロックとして前出の承認済みの過去の論理ブロックに連結し公開することが許される。こうして論理ブロックの記帳が完成する。すなわち、最初の所定のビット数をすべてゼロにすることが論理ブロック連結の条件である。マイニングを繰り返すことによって複数のブロックが連結され、ブロックチェーンが形成されてゆく。【００３６】
上述したことから判るように、ビットコインでは通貨の信頼性は過去の処理履歴の信頼性である。公正認証に代わりその信頼性を保証しているのがブロックチェーンである。ブロックチェーンが長く伸びるほど改ざんが難しくなる。たとえば、一部の論理ブロックのデータを書き換えると、その論理ブロックにつながる論理ブロックとの連結条件（ブロックハッシュの最初の数ビットがすべてゼロ）を満たさなくなる。そこでその論理ブロックのナンス値を修正してこの条件が満たされるようにしなければならない。上述したように、ハッシュ関数は非可逆なので、それには相応の計算が必要とされる。しかしながら、その論理ブロックのナンス値を調整すると、それ以降の論理ブロックのナンス値も調整しなければならない。結局、一部のデータを改ざんするだけでブロックチェーンに連結されている複数の論理ブロックのナンス値を再調整しなければならなくなる。これには更に膨大な計算機能力を必要とする。こうして、ブロックチェーンが長く伸びるほど幾何級数的に改ざんが難しくなるとされている。【００３７】
ビットコインにおいて、通貨の偽造とは過去の処理履歴の改ざんや不正コピーである。処理の検証が成功した証として電子署名を処理履歴に添付するのであるから、通貨の偽造とは電子署名の偽造である。電子署名を作成できるのは、暗号が破られない限り、唯一電子署名に必要な秘密鍵を所有する前の財布の所有者のみである。逆に言えば、暗号が破られなかったとしても、秘密鍵の正規の利用者は過去の処理履歴を改ざんしようと思えば可能である。しかしながら、上記のように一度ブロックチェーンをくみ上げてしまうと、たとえ秘密鍵の正規の利用者であっても、ブロックチェーンを連結させるナンス値すべてを改ざんすることは難しい。ブロックチェーンが長く伸びるほどその難易度は劇的に上昇する。すなわち、一度ブロックチェーンを長くしてしまえば過去に遡って改ざん、あるいは、編集することはほぼ不可能になる。これを「仕事による証明（Proof-of-Work）」（PoW）という。【００３８】
しかしながら、不正を働く側の計算能力が全世界の他のマイナーに分配されている計算能力を凌駕するとき、不正チェーンが正規のチェーンより長くなる可能性がある。これを「５１％攻撃」という。【００３９】
５１％攻撃は、費用対効果の関係で現実的ではないという議論がある。しかしながら、ある集団の財政基盤を脆弱にするためサイバー攻撃として行われる場合はこの限りではない。たとえば、ある大国でブロックチェーンを基盤としたフィンテック２．０が広く普及していたとしよう。ある小国がこの大国の金融システムを麻痺させるためマイニングに国防費用を投入することがあるかも知れない。この場合核兵器の開発よりコストを抑えることが可能となるだろう。また、クラウドマイニングの発達により一部の業者が一時的に５１％攻撃の能力を獲得することはありえる。【００４０】
このような攻撃を防ぐため、攻撃されるであろう大国もブロックチェーンに参加する必要が出てくる。複数の国家が参加し、どの国家も５１％攻撃を実施できないような状態にしておけば問題はなくなる。このようにブロックチェーンはP2Pであるが、国際的な情報通信インフラという側面を併せ持つようになるだろう。【００４１】
P2Pネットワーク上で処理の履歴を共有化し、マイナーに承認作業を任せて信頼性を担保するという公開台帳システムの考え方は、情報通信インフラとしてビットコイン以外にも幅広い応用が期待されている。これは、最低コストで過去の処理の改ざんを現実的に不可能にできるという理由による。現実的に改ざん不可能なデータベースの需要は、たとえば、日々増大する蓄積された医療データを利用したヘルスケアや、日々増大する蓄積された処理データを利用した証券取引や、その他日々増大する蓄積されたビッグデータを活用するありとあらゆる情報サービスが考えられる。そして、フィンテック２．０と呼ばれる世界的な金融技術革新の波を引き起こしている。【００４２】
５１％攻撃を抑制するにはもう一つポイントがある。まず、攻撃するノードの数を無限大にしないことである。ノードに割り当てるアドレスがIPアドレスのような論理アドレスであると、攻撃者は無限の数の攻撃用ノードを仮想空間で獲得することが可能となる。したがって、P2Pに結節するノードは、すべてCPUなどと一対一の組みを成すようにリンクしなければならない。この考え方をOne-CPU-One-Vote（一台一票）と呼ぶ。たとえば、投票用紙一人一枚というのは、多数決のようなシステムでは不可欠な条件である。【００４３】
こうして、秘密鍵と物理的実態を持つハードウェアの個別認証とを関連付けることが必要であることが判る。しかしながら、秘密鍵はソフトウェアによる産物であり物理的実態とは縁がない。そもそもソフトウェアは、同じ規格で設計・製造されたどのハードウェアにインストールしても同じく機能するように作られたものである。すなわち、個々の物理的実態の違いに関らず同様に動くことが求められている。それゆえ物理的実態とは成り立ちから言って無縁である。にも拘わらず、IoTネットワークを構成するのは、無数のハードウェアと、それらを連結して電子データを交換する有線無線の信号伝達路の集合である。ここに秘密鍵と物理的実態とを関連付ける理由と一つのヒントの両方がある。【００４４】
具体的には、公開鍵と物理アドレスを改ざんされない何らかの方法でリンクさせることである。ここで要求される物理アドレスとは、MACアドレスなどとは違って書き換え不能なものでなければならない。
（書き換え不能の物理アドレス）  【００４５】
このように、（書き換え不能の物理アドレス）が必要なことは明白である。それを実現する方法は、ソフトウェア技術でも、ネットワーク技術でも、ハードウェア技術でも何でもよい。いずれにしろ、ソフトウェア技術、ネットワーク技術、ハードウェア技術、あるいは、それら技術の何等かの組み合わせによって何らかの形で物理的実態を有するチップに関連させることが可能であれば十分である。【００４６】
図４は、（書き換え不能の物理アドレス）を搭載したハードウェアが参加する物理ネットワークと、公開台帳を活用する論理ネットワークの関係を説明する図面である。前記ハードウェアは物理的実態を持ち、物理ネットワークを構成するノードとなるので物理ノードである。予め設定した物理アドレスを何らかの方法で秘密鍵と一対一にリンクする。公開鍵暗号によってこの秘密鍵と一対の組をなす公開鍵を論理アドレスとする論理ノードが、この物理ノード、あるいはそれに対応するハードウェアと対をなす。【００４７】
図１のように、前記物理アドレスとリンクした公開鍵を論理アドレスとする論理ノード間で情報が転送される。財布（N）の中身であるハッシュ値（N-1）は、財布（N-1）の中身であるハッシュ値（N-2）、その論理アドレスである公開鍵（N-1）および電子署名（N-2）をまとめてハッシュ化したものである。ここで、財布（N−１）、財布（N）、財布（N+1）…は、それぞれ論理ノード（N-1）、論理ノード（N）、論理ノード（N+1）…に対応する。【００４８】
ここで論理ノード（N-1）と対をなす物理ノードのアドレス、すなわち物理アドレス（N-1）を改ざんしたとしよう。この物理アドレス（N-1）と一対一にリンクする秘密鍵（N-1）は、論理ノード（N-1）の論理アドレスである公開鍵（N-1）とも一対一にリンクしている。したがって、物理アドレス（N-1）を改ざんするということは、公開鍵（N-1）の改ざんを同時に行うことを意味する。【００４９】
図１で説明したように、公開鍵（N-1）は、ハッシュ値（N-2）および電子署名（N-2）と共にハッシュ値（N-1）にハッシュ化される。したがって、公開鍵（N-1）の改ざんはハッシュ値（N-1）の改ざんでもある。一般に、ハッシュ値（N-1）は最新のハッシュ値、すなわちメルクルの根とは限らない。しかしながら、メルクル樹形、すなわち、論理ブロックの一部でも改ざんすればそれはメルクルの根を改ざんしたことと同意である。【００５０】
図３で示したように、論理ブロック（N＋１）の中身を構成するブロックハッシュ（N）は、論理ブロック（N）をすべてまとめてハッシュ化したものである。論理ブロック（N）はメルクルの根を含んでいる。このメルクルの根が上述したように改ざんされているとすると、論理ブロック（N）と論理ブロック（N＋１）との間の連結条件を破壊する。したがって、連結条件を回復するよう、論理ブロック（N）のノンス値を再調節する必要がある。たとえば、ブロックハッシュ（N＋１）の最初の１６ビットが再びすべてゼロになるよう論理論理ブロック（N）のノンス値を再計算しなければならない。ここで、ハッシュ関数は非可逆なのでこの計算には一定以上の計算能力が必要である。【００５１】
このようにノンス値を再調整して（一例として）最初の１６ビットを全てゼロにすることに成功したとしても、メルクルの根が改ざんされている限り第１７ビット以降のデータは改ざんされる。結局ブロックハッシュ（N-1）も改ざんされ、論理ブロック（N）と論理ブロック（N+1）の連結条件を破壊する。上述したのと同様にこの連結条件を回復するためには一定以上の計算能力の消費が必要であり、更に論理ブロック（N+1）と論理ブロック（N+2）の連結条件を破壊する。このようにブロックチェーンが長く連なっている限り、延々とブロック連結条件の回復のために計算を続けなければならなくなる。【００５２】
このように十分長いブロックチェーンが構成されている限り、たとえ一部であっても物理アドレスの改ざんは現実的に不可能になる。無理に改ざんすれば論理ブロック間の連結条件が満たされなくなり、ブロックチェーンが破壊される。こうして秘密鍵とリンクした物理アドレスを用いることによってブロックチェーンなどの公開台帳技術で（書き換え不可能な物理アドレス）を実現することが可能となる。
（鍵生成方法）  【００５３】
秘密鍵と互いに一対の組みをなす公開鍵を生成する方法について説明する。大別すると、ある入力から互いに一対の組みを成す秘密鍵と公開鍵を生成するRSA型鍵生成装置を用いる方法と、秘密鍵を入力してこの秘密鍵と互いに一対の組みを成す公開鍵を生成するエルガマル型鍵生成装置に大別できる。いずれにしろ、少なくとも公開鍵から秘密鍵を再生することは非常に困難である。なお、これらの鍵生成装置は、メモリに記録された一種のプログラムであっても良いし、半導体チップに搭載された組み込み回路であっても良い。【００５４】
まずRSA型の説明をする。これはリベスト・シャミア・エーデルマンにより発明された暗号鍵生成方法である。（
【非特許文献１】参照。）
【非特許文献１】Rivest, Ronald L.Shamir, Adi. Adelman, Len M. (1977-07-04), “A Method for Obtaining Digital Signature and Public-key Cryptsystems”, MIT-LCS-TM-082 (MIT Laboratory for Computer Science).
【００５５】
RSA法では、まず適当な非負整数ｅを準備する。通常２の１６乗に１を足したものを採用するがそれ以外の正の自然数を採用することも出来る。次に大きな二つの素数の組み｛ｐ、ｑ｝を何らかの方法で生成し、それらの積ｎ（＝ｐｑ）を計算する。このとき｛ｅ、ｎ｝が公開鍵となる。続いて、（ｐ−１）および（ｑ−１）の積で割った余りが１となる正の整数を更にｅで割ったものを秘密鍵ｄとする。ただし、｛ｅ、ｎ｝以外に｛ｐ、ｑ｝も既知になれば計算によってｄを獲得することが可能になるので、｛ｐ、ｑ｝は破棄するか外部に漏れないようにしなければならない。素数の組み｛ｐ、ｑ｝を外部に漏れないよう保存しているのであれば組み｛ｄ、ｐ、ｑ｝が秘密鍵であるという見方もできる。【００５６】
コード表示した物理アドレスから最初の数ビットを切り出し、１を加算して前記ｅとすることが可能である。あるいは、コード表示した物理アドレスに１を加えて正の整数ｅを生成すること可能である。【００５７】
物理アドレスから前記素数｛ｐ、ｑ｝を生成することも可能である。一例として、コード表示した物理アドレスに１を足し算し、素数かどうかを確かめる。素数であればその素数をｐとする。素数でなければ更に１を足し算して素数かどうかを確かめる。これを繰り返し、素数ｐを決める。素数ｐを決めたのち同じ手続きを繰り返し、素数ｑを決める。こうして前記素数｛ｐ、ｑ｝を求めることができる。【００５８】
素数ｑの決め方の別の一例は、物理アドレスに２を足し算して素数かどうかを確かめる。素数であればその素数をｑとする。素数でなければ更に２を足し算して素数かどうかを確かめる。これを繰り返して素数ｑを決める。【００５９】
素数ｐまたはｑを求めるために物理アドレスに足し算する数は１や２のみではなく、任意の整数（たとえばｋ）を採用することが可能である。このとき前記ｋをセキュリティパラメータとすることができる。たとえば、物理乱数あるいは疑似乱数などを用いて一定の範囲内の整数からランダムに選択し、それをセキュリティパラメータｋとすることが可能である。いずれにしろ、コード表示した物理アドレスとｋを何らかの方法で合成したものが素数になるまで合成を繰り返すことが可能である。物理アドレスが数値として十分大きい限りｐもｑも十分大きな素数となり、セキュリティパラメータｋの選択もより多様になる。【００６０】
コード表示した物理アドレスとｋの合成方法は、加減乗除すべての算術演算およびその組み合わせ、あるいは、可能な限りあらゆるビット演算が可能である。いずれにしろ、物理アドレス（Ｎ）あるいは前記ｋが数値として十分大きい限りｐも十分大きな素数となる。前記ｋは、内部入力でも外部入力でも良い。【００６１】
いずれにしろ、物理アドレスから素数ｐまたはｑを求める方法は、一例として、物理アドレスと適当に与えられた変数を合成する合成ステップと、合成された数が素数であるかどうかを判定する判定ステップと、から構成され、実際に素数が得られるまで前記合成ステップおよび前記判定ステップを繰り返すことである。図５参照。【００６２】
続いてエルガマル型を説明する。これはエルガマルによって発明された暗号鍵生成方法である。（
【非特許文献２】参照。）
【非特許文献２】A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms, Taher Elgamal, IEEE Transactions on Information Theory, v. IT-31, n. 4, 1985, pp. 469-472.
【００６３】
エルガマル法では、まず大きな素数ｐとその原始根ｇを決める。素数ｐおよび原始根ｇは設計仕様に応じて選択することができる。次に、ｐ−１より小さい非負整数ｘをランダムに選び秘密鍵とする。続いて、前記原始根ｇのｘ乗をｐで割った余りを公開鍵とする。【００６４】
物理アドレスから適当なコード変換を施し秘密鍵を得ると、物理アドレスと秘密鍵をリンクすることが可能となる。一例として、コード表示した物理アドレス、あるいは前記物理アドレスに１以上の整数を加えてｐ−１で割った余りを秘密鍵とすればよい。【００６５】
RSA型鍵生成方法もエルガマル型鍵生成方法も具体的なアルゴリズムは複数存在する。この中で現在電子署名に良く使われているのはDSA法というものとその改良版であるECDSA法である。他にもシュノール法、ランダムオラクル法、クラマーショウプ法など多種多様あるが、これらの共通点は公開鍵から秘密鍵を生成することが現実的に難しいことである。（数学的に不可能であることを証明できないが、実際に生成することは困難であると言える。）また、秘密鍵でハッシュ値等を暗号化して電子署名を生成することも共通点として挙げられる。異なる点は、秘密鍵から公開鍵を生成するか、あるいは、別の入力変数から公開鍵と秘密鍵を生成するか、などである。あるいは、変数変換に用いる代数上の問題の違いもある。たとえば、素因数分解、離散対数問題、ランダムオラクル仮定、楕円曲線問題などなどである。
（システムインテグレーション）【００６６】
多数のハードウェアより構成される大規模システムを考える。このシステムへのハッキングは、少なくとも一つハードウェアへのハッキングに他ならない。ハッキングしたことを秘密にするには、そのハードウェアへのアクセス履歴を消し去れねばならない。これは履歴の改ざんに他ならない。また、このシステムを乗っ取るためには、少なくとも構成要素である一部のハードウェアの物理アドレスを改ざんすることが必要である。【００６７】
したがって、上述のような方法で物理アドレスと論理アドレスと一対一に連結すれば、ブロックチェーンによってシステムをハッキングから守ることが可能となる。
（ハードウェア特有の問題）  【００６８】
しかしながら、物理的実態を持つハードウェアには、物理的実態を持たない論理ノードにはありえない問題が存在する。すなわち、論理ノードは機械的故障を起こしえないが、ハードウェアには常に機械的故障のリスクがつきまとう。故障したハードウェアは、システムを保持するために新しいハードウェアと交換しなければならない。【００６９】
このとき交換するハードウェアの物理アドレスが故障したハードウェアと異なれば、物理アドレスも交換されることになる。これは、物理アドレスを改ざんしたのと同じである。こうしてブロックチェーンを構成する論理ブロックが改ざんされることになる。結果として、論理ブロックの連結条件を満たせなくなり、ブロックチェーンも破壊される。【００７０】
このようなブロックチェーンの破壊を防ぐためには、物理アドレスのみならず、故障したハードウェアに記録されている履歴（ハッシュ値）や電子署名などの情報もすべて交換するハードウェアに移さなければならない。しかしながら、故障したハードウェからこのような情報を全て完全な状態で取り出すことはいつでも可能とは限らない。むしろ、故障によって不可能である場合の対処方法を準備しなければシステムを維持・管理することが不可能となる。【００７１】
例えば、上記システムをが大規模データセンターである場合、無数の個体ドライブ（SSD）に物理アドレスが割り当てられ、それぞれ物理アドレスが論理アドレスと一対一に連結され、ブロックチェーンで外部からのハッキングを遮断することが出来る。こうして、安価に安全なイントラネットが構築できる。【００７２】
全世界からの検索などのアクセスに常時対処できるよう、このような大規模データセンターは膨大な数のSSDで構成される。SSDはハードウェアであり、機械的故障を逃れられない。如何に信頼性が高く故障頻度が低かったとしても、SSDの数が膨大であるため保守点検のために日常的にSSDの交換が必要である。ブロックチェーンの性質から、たった一つでもSSDを入れ替えればブロックチェーンは破壊される。こうして、ブロックチェーンを使って大規模システムを悪質なハッカーの攻撃から守ることは困難になる。また、仮に故障したハードウェアからブロックチェーンの破壊を防ぐために必要な情報が運よく取り出せたとしても、実際にそのような情報を取り出すには時間と労力がかかり経済的ではない。
【発明の開示】
【発明が解決しようとする課題】
【００７３】
本発明は上記事情を鑑みて成されたものであり、構成要素の一部であるハードウェアを交換しても論理ブロックが改ざんされないネットワーク管理技術を提供し、ブロックチェーンを用いて安全なイントラネットを安価に構築することを目的とする。
【課題を解決するための手段】
【００７４】
本発明は、上記課題を解決するため、以下の手段を採用する。【００７５】
複数のクライアントと、少なくとも一つのサーバーから構成されるネットワークにおいて、
前記サーバーは、各クライアントとデータのやり取りをする入出力インターフェースを有し、
前記複数のクライアントは、それぞれ固有の物理アドレスを有し、前記入出力インターフェースを通して前記物理アドレスを前記サーバーに送信し、
前記サーバーは、更に鍵生成装置および合成装置を含み、
前記鍵生成装置および前記合成装置は、前記物理アドレスから、それぞれのクライアントに対応する秘密鍵および公開鍵を生成し、
前記秘密鍵および前記公開鍵は、それぞれ対応する前記クライアントに渡し、
前記サーバーは、前記複数のクライアントそれぞれに対応して、前記物理アドレス、前記秘密鍵、および前記公開鍵の組み合わせからなる認証変数を生成し、
前記複数のクライアントに対応する認証変数を集めて非公開台帳に記録する、
ことを特徴とする、
ネットワークに関する。【００７６】
前記複数のクライアントは、互いに異なる第一のクライアントと、第二のクライアントと、第三のクライアントと、を含み、
前記鍵生成装置は、前記第一のクライアントに対応する第一の秘密鍵から第一の公開鍵を生成し、
前記合成装置は、前記第一の公開鍵と、前記第二のクライアントに対応する第二の物理アドレスと、から前記第二のクライアントに対応する第二の秘密鍵を生成し、
前記鍵生成装置は、前記第二の秘密鍵から、前記第二のクライアントに対応する第二の公開鍵を生成し、
前記合成装置は、前記第二の公開鍵と、前記第三のクライアントに対応する第三の物理アドレスとから、前記第三のクライアントに対応する第三の秘密鍵を生成し、
前記鍵生成装置は、前記第三の秘密鍵から、第三の公開鍵を生成し、
前記第一の公開鍵と前記第一の秘密鍵は、互いに一対の組みを成し、
前記第二の公開鍵と前記第二の秘密鍵は、互いに一対の組みを成し、
前記第三の公開鍵と前記第三の秘密鍵は、互いに一対の組みを成す、
ことを特徴とする、
ネットワークに関する。【００７７】
前記第二のクライアントは、第四の物理アドレスを有する第四のクライアントに置き換えられ、
前記第四の物理アドレスは、前記入出力インターフェースを通して、前記サーバーに送信され、
前記非公開台帳において、前記第二のクライアントに対応する前記認証変数が、前記第四の物理アドレス、前記第二の秘密鍵、および前記第二の公開鍵を含む組み合わせに置き換えられ、
前記第四のクライアントは、前記サーバーから前記第二の秘密鍵および前記第二の公開鍵を渡され、前記第一のクライアントから前記第二のハッシュ値および前記第二の電子署名を渡される、
ことを特徴とする、
ネットワークに関する。【００７８】
ある時点で第一のタイムスタンプを添付した第一の論理ブロックと、その前のある時点で第二のスタンプを添付した第二の論理ブロックと、更にその前のある時点で第三のスタンプを添付した第三の論理ブロックとが、連結し、ブロックチェーンの一部あるいは全部を構成し、
前記第一のタイムスタンプは、前記第一の論理ブロック、第一のブロックハッシュ、および第一のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第二のタイムスタンプは、前記第二の論理ブロック、第二のブロックハッシュ、および第二のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第三のタイムスタンプは、前記第三の論理ブロック、第三のブロックハッシュ、および第三のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第一のブロックハッシュは、前記第二のブロック、前記第二のブロックハッシュ、前記第二のノンス値を、まとめてハッシュ化して生成したものであり、
前記第二のブロックハッシュは、前記第三のブロック、前記第三のブロックハッシュ、前記第三のノンス値を、まとめてハッシュ化して生成したものである、
ことを特徴とする、
ネットワークに関する。
【発明の効果】
【００７９】
本発明によれば、膨大な数のハードウェアより構成される大規模システムの保守管理の経済性と安全性の向上を両立させることが可能となる。【００８０】
以下、発明を実施するための最良の形態について、具体的に説明する。
【発明を実施するための最良の形態】
【００８１】
（第一の実施形態）【００８２】
一般に、規模の大小に関わらず、システムを構成するのは複数の物理ノードである。これら複数の物理ノードはそれぞれ一種のハードウェアであり、信号伝達路を介してお互いにデータを交換しながらシステムとしての機能を生み出している。このような大規模システムを構成する複数の物理ノードは、中核的機能を担当する基幹ノードと、基幹ノードと連携して一部の機能を担当する周辺ノードに大別できる。必然的にネットワークとしての構造はクライアント・サーバー型になるので、以下基幹ノードをサーバー、周辺ノードをクライアントと呼ぶことにする。【００８３】
このようなシステムがデータセンターである場合、クライアントは一例としてSSDである。システムがSSDである場合、クライアントは一例としてNANDフラッシュであり、サーバーはコントローラーである。システムがコントローラーである場合、サーバーは演算処理装置であり、クライアントはキャッシュメモリなどである。【００８４】
図６は、システムに組み込む前のクライアント（N-1）、クライアント（N）、およびクライアント（N+1）である。それぞれ物理アドレス（N-1）、物理アドレス（N）、および物理アドレス（N+1）が割り当てられている。ただし、Nは２以上の自然数とする。【００８５】
図７は、これらのクライアントをサーバーに認証登録する方法を示している。クライアントを始めてシステムに組み込むことを初期設定と言い、保守・管理などの都合で認証登録をやり直すことを再設定と言う。サーバーは、各クライアントに対応して入出力インターフェース（I/F）を割り当てる。各クライアントは、このI/Fを介して物理アドレス（N-1）、物理アドレス（N）、物理アドレス（N+1）をそれぞれサーバーに送信する。【００８６】
サーバーは、各クライアントから受信した物理アドレス（N）を用い、適当な方法で秘密鍵（N）を生成する。サーバーは更に鍵生成装置を含み、前記鍵生成装置はエルガマル型暗号鍵生成方法に則って秘密鍵（N）から公開鍵（N）を生成する。ここで、秘密鍵（N）および公開鍵（N）は互いに一対の組みを成す。以下順を追って具体的に説明する。【００８７】
N＝２とし、物理アドレス（１）から秘密鍵（１）を生成する。続いて、鍵生成装置がこの秘密鍵（１）から公開鍵（１）を生成する。秘密鍵（１）および公開鍵（１）をクライアント（１）に渡す。こうして、クライアント（１）には（物理アドレス（１）、秘密鍵（１）、公開鍵（１））の組み合わせが形成される。一方、サーバーの中にもクライアント（１）に対応する（物理アドレス（１）、秘密鍵（１）、公開鍵（１））の組合わせが残る。この組み合わせ認証変数と呼び、サーバー内の台帳に登録する。この台帳はサーバー外に非公開とするので非公開台帳と呼ぶことができる。【００８８】
サーバーは更に合成装置を含む。この合成装置は、公開鍵（１）と物理アドレス（２）を合成し、その合成結果から秘密鍵（２）を生成する。続いて鍵生成装置は、この秘密鍵（２）をから公開鍵（２）を生成する。秘密鍵（２）および公開鍵（２）をクライアント（２）に渡す。こうして、クライアント（２）には（物理アドレス（２）、秘密鍵（２）、公開鍵（２））の組み合わせが形成される。一方、サーバーの中にもクライアント（２）に対応する認証変数（物理アドレス（２）、秘密鍵（２）、公開鍵（２））が残り、それをサーバー内の非公開台帳に登録する。【００８９】
以後Nを更新しながらこの作業を繰り返す。すなわち、前記合成装置が物理アドレス（N）と公開鍵（N−１）を合成し、その合成結果から秘密鍵（N）を生成する。続いて、前記鍵生成装置がこの秘密鍵（N）から公開鍵（N）を生成する。秘密鍵（N）および公開鍵（N）をクライアント（N）に渡す。こうして、クライアント（N）には（物理アドレス（N）、秘密鍵（N）、公開鍵（N））の組み合わせが形成される。一方、サーバーの中にもクライアント（N）に対応する認証変数（物理アドレス（N）、秘密鍵（N）、公開鍵（N））が残り、それをサーバー内の非公開台帳に登録する。【００９０】
続いて前記合成装置が秘密鍵を生成する具体的な方法を説明する。一例として、まず適当な方法で大きな素数ｐを用意する。次に、物理アドレス（N）と公開鍵（N−１）を合成したものをハッシュ化し、その合成結果をｐ−１で割り、その余りを秘密鍵（N）とする。ここで、物理アドレスのハッシュ化は書式を整える役割も含む。物理アドレスが既に秘密鍵を生成するのに適した形式に整えられているのであれば省略することも可能である。また、N＝１の場合、公開鍵（０）は存在しないのでダミーである。したがって、予めサーバー側で初期入力として用意しておく必要がある。この初期入力を公開鍵（０）の代わりに用いれば良い。【００９１】
前記合成装置が物理アドレスと公開鍵を合成する方法は各種多様である。たとえば、足し算、引き算、掛け算、割り算、これら算術演算の組み合わせ、論理演算、その他可能な限りのあらゆるビット演算を活用することが可能である。【００９２】
こうして、クライアント（N）には（物理アドレス（N）、秘密鍵（N）および公開鍵（N））の組が保管される。同時に、前記非公開台帳には（物理アドレス（N）、秘密鍵（N）、公開鍵（N））の組がN=1から順に登録される。この非公開台帳はサーバーで保管・管理し、安全性を高めるため外部に開示しない。【００９３】
図８は、初期設定・再設定した後のクライアントをハッシュ化によって連結し、論理ブロックを形成する方法を示している。この論理ブロックの生成方法は、ビットコインと同様である。すなわち、クライアント（N-1）の公開鍵（N-1）、ハッシュ値（N-２）および電子署名（N-２）の組み合わせがビットコインの財布（N-1）に対応するものであり、本願では論理ノード（N-1）である。この論理ノード（N-1）をハッシュ化し、ハッシュ値（N−１）を生成する。続いて、このハッシュ値（N−１）とクライアント（N）の公開鍵（N）をまとめて秘密鍵（N-1）で暗号化し、電子署名（N−１）を生成する。最後に、クライアント（N-1）は、ハッシュ値（N-1）と電子署名（N-1）を共にクライアント（N）に送付する。クライアント（N）では、公開鍵（N）、ハッシュ値（N−１）および電子署名（N−１）から論理ノード（N）が形成される。【００９４】
続いて、論理ノード（N）をハッシュ化し、ハッシュ値（N）を生成する。続いて、このハッシュ値（N）とクライアント（N＋１）の公開鍵（N＋１）をまとめて秘密鍵（N）で暗号化し、電子署名（N）を生成する。最後に、クライアント（N）はハッシュ値（N）と電子署名（N）を共にクライアント（N＋１）に送付する。クライアント（N＋１）では、公開鍵（N＋１）、ハッシュ値（N）および電子署名（N）から論理ノード（N＋１）が形成される。【００９５】
この作業を繰り返し、複数の論理ノードから構成される論理ブロックが形成される。上述のような方法でハッシュ値をクライアント間で転送して行く方法は、クライアント間でデータを転送する一つの方法である。暗号通貨であればそのデータとは貨幣価値のある何かであり、ビットコインの場合それは処理記録である。（実際にはハッシュ化されたハッシュ値である。）クライアントがSSDなどのストレージであれば、必ずしもこのデータに貨幣価値は必要ない。単純にハッシュ化されたデータがSSD間を転送されるのみである。それでもこのように論理ブロックを形成することが可能である。すなわち、データの内容に関わらず論理ブロックが形成可能である。【００９６】
前記論理ブロックを含むクライアントがハードウェアである場合、上述したようにハードウェアの機械的故障に対処する方法が必要である。すなわち、故障したハードウェアを新しいハードウェアに取り換えなければならない。【００９７】
図９のように、クライアント（N）のハードウェアが故障した場合を考えよう。このとき、故障したハードウェアには物理アドレス（N）が添付されており、これと交換する新しいハードウェアには物理アドレス（N’）が添付されている。サーバーに保管されている非公開台帳には（物理アドレス（N）、秘密鍵（N）、公開鍵（N））が記録されている。これをクライアント（N）に対応する認証変数とする。故障したクライアント（N）とサーバーを結んでいたI/Fを介して物理アドレス（N’）がサーバーに入力される。サーバーは、非公開台帳を編集し、前記認証変数を（物理アドレス（N’）、秘密鍵（N）、公開鍵（N））に修正する。あるいは（物理アドレス（N’）、秘密鍵（N）、公開鍵（N）；物理アドレス（N））と記録しなおし、クライアント（N）がハードウェアを交換した履歴まで残すことも可能である。ここで、秘密鍵（N）と公開鍵（N）を修正する必要はない。【００９８】
図１０は、故障したハードウェアを置き換えた後の様子を示す図である。図８と見比べると、論理ノードは全く同じであることが判る。すなわち、論理ノードが改ざんがされなくて済む。こうして、本実施形態に関するサーバーを利用することによって、論理ブロックを改ざんすることなく故障したハードウェアを交換することが可能となる。【００９９】
ハードウェアが故障する以前に、図８の論理ノードの集まりとそのデータ転送履歴が論理ブロックとして公開されているとしよう。この論理ブロック、あるいはこの論理ブロックを内包するより広範な論理ブロックを掘り当てたマイナーが、公開台帳（たとえばブロックチェーン）に記帳する。その後ハードウェアが故障し、図９の方法でハードウェアを交換する。しかしながら、図１０のように、本実施形態ではハードウェアを交換したクライアントの論理ノードに変化はない。したがって、論理ブロックが改ざんされることはなく、ブロックチェーンの連結条件を壊す心配がない。【０１００】
こうして本実施形態に関する非公開台帳を利用すれば、ブロックチェーンの連結条件を破壊することなく故障したハードウェアを交換することが可能となる。外部のブロックチェーンの利用に追加コストは発生しないので、前記サーバーと前記複数のクライアントからなるイントラネットを外部のハッキングから低コストで守ることができる。
（第二の実施形態）【０１０１】
クライアントの間でデータをやり取りするごとに論理ノードの一部を構成するハッシュ値が変化する。したがって論理ブロックも変化する。時間軸を縦軸に取り、この変化を適当な時間間隔で区切ってタイムスタンプを添付すると、図１１のように下から上に変化する論理ブロックを積み上げることが可能である。最新のものが論理ブロック（M）であり、一つ前に承認されたものが論理ブロック（M-1）である。更にその一つ前が論理ブロック（M-2）である。ただし、本実施形態では、このタイムスタンプを発行するのは論理ブロックを構成するクライアントが接続するサーバーである。タイムスタンプは、本実施形態に関するサーバーを使ったクライアントの保守管理の都合で定められた所定の時間間隔ごとに発行される。【０１０２】
サーバーがタイムスタンプを発行するということは、その時点でその論理ブロックが存在していたことを公開台帳（たとえばブロックチェーン）に代わってサーバーが承認するということである。一方、P2P型ネットワークを前提にしたブロックチェーンでは、この承認作業は任意のマイナーによって行われる。この点で本実施形態に関する論理ブロックの承認は従来のブロックチェーンを利用する方法とは根本的に異なる。すなわち、図１１の縦に連続する論理ブロックの連鎖は通常のブロックチェーンとは異なる。【０１０３】
図１２は、本実施形態に関するサーバーによる承認作業の一例を示す図面である。論理ブロックの変遷とタイムスタンプが図中左から右に向かって並べてある。最新のものがタイムスタンプ（M）であり、一つずつ遡ってタイムスタンプ（M-1）、タイムスタンプ（M-2）…となる。同様に論理ブロック（M）、論理ブロック（M-1）、論理ブロック（M-2）…と遡ることができる。【０１０４】
論理ブロック（M-２）にブロックハッシュ（M-３）および適当に選んだノンス値を併せ、ハッシュ化してブロックハッシュ（M-２）を生成する。論理ブロック（M−１）に前記ブロックハッシュ（M−２）および適当に選んだノンス値を併せ、ハッシュ化してブロックハッシュ（M−１）を生成する。次のブロックハッシュ（M）を生成するには前記ブロックハッシュ（M-1）に論理ブロック（M）および適当に選んだノンス値を併せ、ハッシュ化すれば良い。【０１０５】
ビットコインでは、ノンス値は一般に３２ビットの任意の値である。このノンス値を含めて生成されたハッシュ値（ここではブロックハッシュ）は２５６ビットの値である。２の２５６乗は１０の７７乗より大きく、ブロックハッシュは膨大な自由度を持っていることが判る。前記ノンス値を適当に調整するとブロックハッシュの最初の数ビットをゼロにすることができる。一例として、新たに生成したブロックハッシュの最初の１６ビットがすべてゼロになる確率は２の１６乗分の１、すなわち65,536分の１である。偶然にはほとんど起こりえないことであり、このようなノンス値を掘り当てるには相応の仕事（ワーク）が必要である。また、ブロックハッシュの最初の１６ビットをゼロにすることが既存の論理ブロックに新たな論理ブロックを接続するための接続条件である。最初にゼロにするビット数を１６にしたのは、新たな論理ブロックが承認される頻度が全世界で１０分に一回程度になるよう調整するためである。【０１０６】
１６ビットの連結条件はサーバーによる管理を介さないP2P型ネットワークでのデータ転送の信頼性を維持するためであり、本願のようにサーバーを介してつながる特定のクライアント同士の間のデータ転送の信頼性を維持するためであれば、１６ビットは十分すぎると考えられる。むしろこのビット数を少なくし、本実施形態に関するサーバーが新たな論理ブロックを承認するために要する平均時間を短くすることが必要な場合がある。【０１０７】
このような状況を鑑み、本願での論理ブロック接続条件は、ブロックハッシュの最初のLビットを全てゼロにすることである。ただし、Lは１６より小さい自然数とする。本願に関わるノンス値はこの接続条件を満たすよう調整される。【０１０８】
こうしてノンス値を調整し、新たな論理ブロックを承認し、図１２のようにタイムスタンプを発行することができる。この作業は本願に関するサーバーで行うことが好ましい。【０１０９】
このように、本願に関するブロックチェーンはビットコインなどに利用される従来のブロックチェーンとは異なる。本願では、新たな論理ブロックを承認するサーバーの保守管理さえ適切にしておけば外部から処理履歴の改ざんを防ぐことが可能となる。また、公開鍵と秘密鍵を一対一に対応させる公開暗号が破られない限り、図４で示すように論理アドレスと物理アドレスをリンクさせることができる。【０１１０】
サーバーに保存される非公開台帳を適切に管理する限り、サーバー以外から物理アドレスを書き換えることは不可能である。こうして、（外部から書き換え不能の物理アドレス）を実現することができる。更に、故障したハードウェアを交換しても本願に関わるブロックチェーンを破壊しなくて済む。これは、論理ネットワーク内のみで稼働する従来のブロックチェーン（本願に関わる非公開台帳を採用しないブロックチェーン）にはない特徴である。【０１１１】
例えば、データセンターで大量に稼動しているSSDなどのストレージは、互いに連携してビッグデータを扱うことが考えらえる。SSDは本願のクライアントの一例であり、SSD間のデータのやり取りの履歴はハッシュ化されて本願に関するブロックチェーンで改ざんできないよう管理される。この管理は、実質的には非公開台帳を保存するサーバーによる管理である。【０１１２】
論理ブロックの更新は、データーセンターの活動を制御するサーバーで行う。電子署名技術と本願に関するサーバーに保存される非公開台帳を利用することにより、一度サーバーによって初期設定されたSSDの物理アドレスを外部から改ざんできないようにですることができる。（外部から書き換え不能の物理アドレス）また、前記非公開台帳をサーバー内部で利用することによって、ブロックチェーンを破壊せずに故障したSSDを交換することが可能となる。
（第三の実施形態）【０１１３】
前記物理アドレスは、物理的実態を有する半導体チップ内のセルアレイから抽出した何らかの物理的乱雑さより生成できる。このようなチップを認証チップと呼ぶ。【０１１４】
図１３は、ワード線およびビット線からなるセルアレイの一例である。ワード線およびビット線が交差したところに認証素子が配置している。この例では、行数（ワード線数）はＮであり、列数（ビット線数）はＭである。ただし、行と列はいつでも入れ替え可能である。【０１１５】
一例として、認証素子はそれぞれ少なくとも二つの端子（第一の端子および第二の端子）を持ち、ワード線およびビット線の一方が前記第一の端子に接続し、他方が前記第二の端子に接続する。あるいは別の一例として、図１４のように、ワード線を第一の制御ゲートに接続し、ビット線を第二の制御ゲートに接続する。あるいは、図１５のように、ビット線を第一の制御ゲートに接続し、ワード線を第二の制御ゲートに接続する。いずれにしろ、こうして第一の端子と認証素子との間のアクセスを制御することができる。第二の端子は、必要に応じてソース線、基板電極、あるいは、グランドに落とす。【０１１６】
一例として認証素子は抵抗体（あるいは導電体）である。あるいは、キャパシタある。あるいはＰＮ接合である。あるいはショットキー接合である。あるいはトランジスタある。あるいはトランジスタおよびキャパシタからなるＤＲＡＭセルである。あるいはトランジスタおよび可変抵抗からなる可変抵抗メモリセルである。あるいはトランジスタおよび磁気抵抗からなる磁気抵抗メモリセル（MRAM）である。あるいはスピントルク型MRAM（STT-MRAM）である。あるいは電荷蓄積層付き不揮発性メモリセルである。電荷蓄積層は電荷トラッピング層でも浮遊ゲートでもどちらでも良い。【０１１７】
あるいは、図１６のように意図的にビット線端子を排除したＮＡＮＤ型配列上に配置した電荷蓄積層付き不揮発性メモリセルである。あるいは、図１７のように意図的にビット線端子を排除したＮＡＮＤ型配列上に配置したトランジスタである。ただし、ビット線方向に直列する認証素子の集団の両端の一方にはビット線端子が接続し、他方にはソース線端子が接続する。このようにビット線端子を取り除いても、ビット線とワード線が交差するところの認証素子は、通常のNAND型の読み出し方法によって読み出すことが可能である。より具体的には、読み出す認証素子（選択セル）が含まれるビット線（選択ビット線）に連なる他のすべての認証素子のワード線（非選択ワード線）に転送電圧を印加し、選択セル以外すべてスイッチオン状態にする。その上で選択セルのワード線（選択ワード線）には転送電圧より低い電圧（読み出しゲート電圧）を印加すればよい。このとき、ビット線端子とソース線端子の間に適度な電圧（読み出しドレイン電圧）を印加してその間を流れる電流を測定すれば良い。【０１１８】
ここで、前記セルアレイ上の複数の認証素子の一部が何らかの原因で破壊され、破壊ビットとなっている、あるいは、何らかの原因で規定の特性を示さない不良ビットになっている、としよう。このような破壊ビットあるいは不良ビットのセルアレイ内での分布は、半導体チップに固有で物理的にランダムであると考えられる。また、破壊ビットは、何らかのストレスを半導体チップに意図的に印可することで確率的に発生し、セルアレイ上にランダムに分布する。不良ビットは、半導体チップ製造段階の制御不能の何らかのばらつきによって確率的に発生し、セルアレイ上にランダムに分布する。いずれにしろ、発生メカニズムはどのようなアルゴリズムとも関係しないので、物理的にランダムである。【０１１９】
以下その方法の一例を具体的に説明する。【０１２０】
まずワード線デコーダを使ってワード線を選択し、ビット線デコーダを使ってビット線を選択し、それぞれ選択されたワード線（選択ワード線）とビット線（選択ビット線）で選択された認証素子を選択セルとする。【０１２１】
ここで、認証素子は大きく分けて２種類ある。第一の種類は、破壊されると読み出し電圧を印加した際電流を流しやすく、破壊されていないと電流を流しにくい。主な例は、キャパシタ、PN接合、ショットキー接合などである。破壊されているからどうかを判定するには、破壊判定電圧を印加したときの電流の絶対値が破壊判定電流値より高いか非破壊判定電流値より低いかを調べれば良い。ただし、破壊判定電流値は非破壊判定電流値より高い。【０１２２】
第二の種類は、破壊されると読み出し電圧を印加した際電流を流しにくく、破壊されていないと電流を流しやすい。主な例は抵抗体（あるいは導電体）である。破壊されているかどうかを判定するには、破壊判定電圧を印加したときの電流の絶対値が非破壊判定電流値より高いか破壊判定電流値より低いかを調べれば良い。ただし、破壊判定電流値は非破壊判定電流値より低い。【０１２３】
セルアレイ上の認証素子の集団から複数のセルを選択して読み出すと、一般に複数の破壊ビットが見つかる。あるいは、規定の特性を示さない不良ビットが見つかる。破壊ビットあるいは不良ビットのセルアレイ上の位置情報は、ワード線番号およびビット線番号からなる配列である。これら複数の破壊ビットあるいは不良ビットの位置情報を並べてコード表示すれば、破壊ビットあるいは不良ビットの分布に応じた認証コードが得られる。破壊ビットあるいは不良ビットの発生が物理的にランダムである限り、この認証コードは半導体チップに固有で物理的にランダムであると期待される。この認証コードの書式を適当に成形し、本願に使用される物理アドレスとする。【０１２４】
破壊ビットあるいは不良ビットの数をＱとし、選択セルの数をＲとする。ただし、ＱはＲより小さな数である。このとき認証コードの場合の数はＲからＱを選ぶ場合の数に等しい。すなわち、Ｒが十分大きく破壊ビットあるいは不良ビットの存在確率が無視できるほど小さくなければ、認証コードの場合の数は非常にに大きな数になる。【０１２５】
Ｑを１ギガ（１０億）とし、Ｒを１キロ（１０００）とすると、認証コードの場合の数はおよび１０の６４３２乗に２．５を掛けた程度になる。すなわち、トリリオンノードに必要な１兆個（１０の１２乗）の半導体チップを生産したとき偶然に二つの半導体チップチップの認証コードが同じになる確率が４Ｅ−６４２１になることを意味している。半導体チップを１００兆個供給したとしても偶然に二つの半導体チップの認証コードが同じになる確率は４Ｅ−６４１９になる。これは現実的にほぼゼロである。【０１２６】
また、Ｑが１ギガでＲが１キロというのは不良率１００万分の１に相当する。すなわち、半導体チップがシックスシグマ（１００万分の３．４以下）を達成するほど不良率が低いと仮定しても、偶然に二つの半導体チップの認証コードが同じになる確率はほぼゼロであると言える。【０１２７】
また、シックスシグマ（１００万分の３．４以下）に沿って考えると、１ギガビットのチップ製品において１００万分の１以下に相当する１キロビットを他の目的に使用することは何ら問題にならない。したがって、１キロビットを認証素子用のセルアレイに割り当て、認証セル用のセルアレイに何らかのストレスを印加してほぼ半分を意図的に破壊することにする。このとき、認証コードの場合の数は１０の２９９乗の２．７倍程度になる。すなわち、半導体チップを１００兆個供給したとしても偶然に二つの半導体チップの認証コードが同じになる確率は３．７Ｅ−２８６になる。すなわち、現実的にほぼゼロである。【０１２８】
前記ストレスは、電気的ストレス、光学的ストレス、機械的ストレス、電磁場的ストレスなど多種多様である。【０１２９】
電気的ストレスの一例は、まず全セルアレイの中から認証コードを生成するために選ばれた一部の領域の認証セルを同時に選択し、全選択セルに高電圧パルスを印加する。各セルを読み出し、非破壊ビットの数が破壊ビットの数より少なかった場合非破壊ビットのみ選択して２回目の高電圧パルスを印加する。非破壊ビットの数が破壊ビットの数とほぼ同数になるまでこの作業を繰り返す。【０１３０】
光学的ストレスの一例は、アセンブリする前に認証素子用のセルアレイにＸ線や紫外線などを一定量照射する。照射量は、非破壊ビットと破壊ビットの数がほぼ同数になる程度に調整する。ただし、認証素子用のセルアレイの領域が非常狭い場合、それ以外の素子にも同様にストレスが印可される。全チップを認証素子用のセルアレイとするときに比較的有効な方法である。【０１３１】
機械的ストレスの一例は、認証チップを湾曲させたり、打撃を加えるたりすることである。ただし、認証素子用のセルアレイ以外にも同様にストレスが印可されるので、全チップを認証素子用のセルアレイとするときにのみ有効な方法である。【０１３２】
電磁場的ストレスの一例は、認証チップを強い電磁場に晒すことである。ただし、認証素子用のセルアレイ以外にも同様にストレスが印可されるので、全チップを認証素子用のセルアレイとするときにのみ有効な方法である。【０１３３】
いずれにしろ、認証素子の破壊が確率的に発生する限り、認証コードは物理的にランダムに生成される。また、偶然に二つの半導体チップの認証コードが同じになる確率が現実的にほぼゼロである限り、認証コードは半導体チップに固有の物理アドレスとして十分通用する。【０１３４】
このように、本実施形態の物理アドレスは、セルアレイ内での破壊ビットの分布から生成することが可能である。あるいは、本実施形態の物理アドレスは、セルアレイ内での不良ビットの分布から生成することが可能である。あるいは、本実施形態の物理アドレスは、セルアレイ内での破壊ビットおよび不良ビットの分布から生成することが可能である。
（第四の実施形態）【０１３５】
一部のメモリチップ製品では、メモリセルの中に予め一定の割合以下で不良ビットが発生することを考慮に入れ、不良ビットが発生したビット線をビット線ごと入れ替えるための冗長ビット線を備えている。このような不良の発生原因は多種多様であり、半導体チップ（この例ではメモリチップ）の製造段階における製造ばらつきや部材の物理的な形成過程において自然発生するばらつきに依存する。一般に、これらのばらつきは制御不能である。冗長ビット線は通常メモリチップ製品のビット容量には含まれない。一例として図１８参照。【０１３６】
図１８では、行方向に配列したビット線群を二つのグループに分ける。一方を複数の冗長ビット線からなる冗長ビット線群とし、他方を正規ビット線からなる正規ビット線群とする。正規ビット線群の行数をＮとし、冗長ビット線群の行数をＬとする。ＮもＬも非負整数であり、ＮはＬより大きい。メモリチップ製品のビット容量は、この正規ビット線群に含まれるセル数に相当する。【０１３７】
出荷前検査で正規ビット線群の中に一定の条件を満たす不良ビットが発生していることが判明すると、その不良ビットを含む正規ビット線を冗長ビット線群の中の一つの冗長ビット線に割り当てる。このような読み換え（図中読み換えＡ、読み替えＢ…）を、不良ビットを含む正規ビット線それぞれに対して行い、不良ビットを実質的に取り除くことが可能となる。【０１３８】
より具体的には、出荷前検査で不良が見つかったビット線のビット線番号とそのビット線を読み換える冗長ビット線のビット線番号を周辺領域に混載している周辺メモリ（一例としてフューズメモリなど）に記録する。この周辺メモリは、メモリセルにアクセスする際参照される。本実施形態では、この周辺メモリに記録された情報をコード表示し、所定の書式に成形したものが物理アドレスの役割を果たす。【０１３９】
このような条件を満たすメモリチップ製品の一例としてＤＲＡＭがあげられる。そのほかフラッシュメモリ、相変化メモリ、抵抗変化メモリ、磁気抵抗変化メモリ（ＭＲＡＭ）、スピントルク型ＭＲＡＭ等が考えられる。【０１４０】
出荷前検査で発覚する不良ビットの数をｍとすると、その場合の数はＮの中からｍを選ぶ組み合わせである。すなわち、Ｃ（Ｎ，ｍ）である。それぞれをどの冗長ビット線に読み換えるかを考慮に入れると、場合の数は更にLの中からｍを選んで並べる順列の数を掛け合わせなければならない。すなわち、Ｃ（Ｎ，ｍ）Ｐ（Ｌ，ｍ）である。つまり、過小評価しても場合の数はＣ（Ｎ，ｍ）程度ある。【０１４１】
典型的な４ギガビットDRAM製品の場合、たとえば、全ビット線数６５５万本に対して冗長ビット線数は１５万３千本程度である。すなわち、何らかの事情によって正規ビット線群内のビット線に不良ビットが発生する行数は、最大１５万３千程度まで量産DRAMとして許容できる。このとき冗長ビット線への再割り付けの場合の数は６５５万の内から１５万３千を選ぶ組み合わせに等しい。計算すると約１０の３１５、２８９乗（１E３１５、２８９）になる。すなわち、DRAMチップを１００兆個供給したとしても偶然に二つのDRAMチップの認証コードが同じになる確率は１Ｅ−３１５、２７５になる。現実的にほぼゼロである。【０１４２】
なお、本実施形態では、ビット線とワード線を入れ替えることも可能である。すなわち、全ワード線数４４０万本に対して冗長ワード線数は３、０４４本程度である。全冗長ワード線を読み換えに使ったと仮定すると、その場合の数はおよそ２．９E１０、９３８となる。前者の場合の数より大分少なくなるが、それでも恐ろしく大きな数である。すなわち、DRAMチップを１００兆個供給したとしても偶然に二つの認証チップの認証コードが同じになる確率は１Ｅ−１０、９２４になる。現実的にほぼゼロである。【０１４３】
こうして、非常に大きな情報エントロピーを有する認証コードを生成することが可能となる。ここで着目すべきことは、本実施形態では認証コードを生成するために１ビットも余計に割いていないことである。すなわち、冗長ビット線（あるいは冗長ワード線）は既にメモリチップ製品に搭載されているものであり、読み替え情報を記録する周辺メモリも同様である。その上偶然に二つの半導体チップの認証コードが同じになる確率が現実的にほぼゼロでるほど小さい。この認証コードは、本願の物理アドレスとして十分通用する。【０１４４】
本願に関する物理アドレスは、ハードウェアに割り当てられたコード情報である。あるいは、ハードウェアを構成する部品の一部に割り当てられたコード情報である。あるいは、ハードウェアを構成する半導体チップに割り当てられるチップ認証である。前記チップ認証は、半導体チップに固有の物理的乱雑さに基づいて生成されることを特徴とする。前記半導体チップは複数の素子で構成され、前記複数の素子は、所定のストレスを印加することによって確率的に破壊され、前記破壊された素子の位置情報の集合（分布）が前記半導体チップに固有の物理的乱雑さとなることを特徴とする。あるいは、前記半導体チップを構成する複数の素子は、製造過程における制御不能のばらつきにより、確率的に不良ビットとなる。前記不良ビットの位置情報の集合（分布）が前記半導体チップに固有の物理的乱雑さとなることを特徴とする。前記所定のストレスは、電気的ストレス、力学的ストレス、電磁場的ストレス、光学的ストレス等であることを特徴とする。【０１４５】
本願に関する巧妙なネットワーク・ハードウェア・セキュリティ・システムを構築することにより、非公開台帳を使ってブロックチェーンを破壊せずに故障した物理ノードを交換するとが可能となる。このブロックチェーンは、（第一の実施形態）では外部の論理ネットワークから任意のマイナーによって記帳されるものを利用する。すなわち、従来のブロックチェーンと整合性のあるものであり、外部のネットワークを利用してデータセンターの保守管理を効率よく安全に行うことができるようになる。一方（第二の実施形態）では、非公開台帳を保管するサーバーが論理ブロックを記帳して独自のブロックチェーンを構成する。【０１４６】
本願によれば、過去の処理履歴の改ざんを不能にし、（外部から書き換え不能の物理アドレス）を実現し、なおかつ、故障したハードウェアを交換することが可能なネットワーク・ハードウェア・セキュリティ・システムを構築することが可能となる。【０１４７】
本願ではハッシュ化を頻繁に使っている。ハッシュ化にはハッシュ関数を用いればよい。ハッシュ関数は、MD２、MD4、MD5、RIPE-MD160、SHA-256、SHA-384、SHA-512など多数存在し、このうち一例としてビットコインではSHA-256が使用されている。
なお、本発明の技術範囲は上記実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【産業上の利用可能性】
【０１４８】
安全かつ利便性の高いIoTビジネスの基盤技術をより低いコストで提供することが可能となる
【図面の簡単な説明】
【０１４９】
【図１】暗号通貨の送金の仕組みを説明する図。
【図２】メルクルの樹形図を説明する図。
【図３】ブロックチェーン（公開台帳）の仕組みを説明する図。
【図４】物理ネットワークと論理ネットワークを関連付ける概念の一例を説明する図。
【図５】本願に関する物理アドレスから素数を生成する方法の一例を説明する図。
【図６】初期設定前のクライアントの一例を説明する図。
【図７】本願に関するクライアントの初期設定・再設定の一例を説明する図。
【図８】初期設定・再設定した後のクライアントの状態と、初期設定・再設定によって形成された論理ブロックを示す図。
【図９】故障したハードウェアを交換する方法の一例を示す図。
【図１０】故障したハードウェアを交換した後の状態と論理ブロックを示す図。
【図１１】論理ブロックの更新とタイムスタンプの関係の一例を示す図。
【図１２】本願に特徴的なブロックチェーンの形成方法の一例を示す図。
【図１３】本願に関る認証素子のセルアレイの一例を説明する図。
【図１４】本願に関る認証素子へのアクセス方法の一例を示す図。
【図１５】本願に関る認証素子へのアクセス方法の一例を示す図。
【図１６】本願に関る認証素子が電荷蓄積層付きトランジスタからなる不揮発性メモリセルであり、NAND型に配列している例を説明する図。
【図１７】本願に関る認証素子がトランジスタであり、NAND型に配列している例を説明する図。
【図１８】メモリセルの不良ビットを利用する方法の一例を示す図。
【図１】
2018174112.tif 000003
【図２】
2018174112.tif 000004
【図３】
2018174112.tif 000005
【図４】
2018174112.tif 000006
【図５】
2018174112.tif 000007
【図６】
2018174112.tif 000008
【図７】
2018174112.tif 000009
【図８】
2018174112.tif 000010
【図９】
2018174112.tif 000011
【図１０】
2018174112.tif 000012
【図１１】
2018174112.tif 000013
【図１２】
2018174112.tif 000014
【図１３】
2018174112.tif 000015
【図１４】
2018174112.tif 000016
【図１５】
2018174112.tif 000017
【図１６】
2018174112.tif 000018
【図１７】
2018174112.tif 000019
【図１８】
2018174112.tif 000020
【手続補正書】
【提出日】平成30年10月12日(2018.10.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のクライアントと、少なくとも一つのサーバーから構成されるネットワークにおいて、前記サーバーは、各クライアントとデータのやり取りをする入出力インターフェースを有し、
前記複数のクライアントは、それぞれ固有の物理アドレスを有し、前記入出力インターフェースを通して前記物理アドレスを前記サーバーに送信し、
前記サーバーは、更に鍵生成装置および合成装置を含み、
前記鍵生成装置および前記合成装置は、前記物理アドレスから、それぞれのクライアントに対応する秘密鍵および公開鍵を生成し、
前記秘密鍵および前記公開鍵は、それぞれ対応する前記クライアントに渡され、
前記サーバーは、前記複数のクライアントそれぞれに対応して、前記物理アドレス、前記秘密鍵、および前記公開鍵の組み合わせからなる認証変数を生成し、
前記複数のクライアントに対応する前記認証変数を集めて非公開台帳に記録する、
ことを特徴とするネットワーク。
【請求項２】
前記非公開台帳は、前記サーバー内に保管し、前記サーバーの外部に対して非公開である
ことを特徴とする、
請求項１記載のネットワーク。
【請求項３】
前記複数のクライアントは、互いに異なる第一のクライアントと、第二のクライアントと、第三のクライアントと、を含み、
前記鍵生成装置は、前記第一のクライアントに対応する第一の秘密鍵から第一の公開鍵を生成し、
前記合成装置は、前記第一の公開鍵と、前記第二のクライアントに対応する第二の物理アドレスと、から前記第二のクライアントに対応する第二の秘密鍵を生成し、
前記鍵生成装置は、前記第二の秘密鍵から、前記第二のクライアントに対応する第二の公開鍵を生成し、
前記合成装置は、前記第二の公開鍵と、前記第三のクライアントに対応する第三の物理アドレスとから、前記第三のクライアントに対応する第三の秘密鍵を生成し、
前記鍵生成装置は、前記第三の秘密鍵から、第三の公開鍵を生成し、
前記第一の公開鍵と前記第一の秘密鍵は、互いに一対の組みを成し、
前記第二の公開鍵と前記第二の秘密鍵は、互いに一対の組みを成し、
前記第三の公開鍵と前記第三の秘密鍵は、互いに一対の組みを成す、
ことを特徴とする、
請求項１記載のネットワーク。
【請求項４】
前記合成装置は、前記第一の公開鍵と、前記第二の物理アドレスとを、所定の合成方法で合成して得た値を、所定の素数から１を引いた値で割り算した剰余を、前記第二の秘密鍵とする、
ことを特徴とする、
請求項３記載のネットワーク。
【請求項５】
前記第一の公開鍵、第一のハッシュ値、および第一の電子署名から、
第一の論理ノードを形成し、
前記第二の公開鍵、第二のハッシュ値、および第二の電子署名から、
第二の論理ノードを形成し、
前記第三の公開鍵、第三のハッシュ値、および第三の電子署名から、
第三の論理ノードを形成し、
前記第二のハッシュは、前記第一の論理ノードをハッシュ化して生成したものであり、
前記第三のハッシュは、前記第二の論理ノードをハッシュ化して生成したものであり、
前記第二の電子署名は、前記第二のハッシュ値と前記第二の公開鍵とを前記第一の秘密鍵で暗号化して生成したものであり、
前記第三の電子署名は、前記第三のハッシュ値と前記第三の公開鍵とを前記第二の秘密鍵で暗号化して生成したものである、
ことを特徴とする、
請求項３記載のネットワーク。
【請求項６】
前記第二のクライアントは、第四の物理アドレスを有する第四のクラ
イアントに置き換えられ、
前記第四の物理アドレスは、前記入出力インターフェースを通して、
前記サーバーに送信され、
前記非公開台帳において、前記第二のクライアントに対応する前記認証変数が、前記第四の物理アドレス、前記第二の秘密鍵、および前記第二の公開鍵を含む組み合わせに置き換えられ、
前記第四のクライアントは、前記サーバーから前記第二の秘密鍵および前記第二の公開鍵を渡され、前記第一のクライアントから前記第二のハッシュ値および前記第二の電子署名を渡される、
ことを特徴とする、
請求項５記載のネットワーク。
【請求項７】
前記第一の論理ノード、前記第二の論理ノード、および前記第三の論理ノードは、論理ブロックの一部あるいは全部を形成し、
前記第一の論理ノードは、前記第一のクライアントに対応し、
前記第二の論理ノードは、前記第二のクライアントに対応し、
前記第三の論理ノードは、前記第三のクライアントに対応し、
前記第一のクライアントから前記第二のクライアントにデータを転送することによって、前記第二のハッシュ値が更新され、前記論理ブロックが変化し、
前記サーバーは、所定の時間間隔で前記論理ブロックを承認し、その時点でのタイムスタンプを添付し、前記論理ブロックの変化の履歴の少なくとも一部を記録することを特徴とする、
請求項５記載のネットワーク。
【請求項８】
ある時点で第一のタイムスタンプを添付した第一の論理ブロックと、
その前のある時点で第二のスタンプを添付した第二の論理ブロックと、
更にその前のある時点で第三のスタンプを添付した第三の論理ブロックとが、連結し、ブロックチェーンの一部あるいは全部を構成することを特徴とする、
請求項７記載のネットワーク。
【請求項９】
前記第一のタイムスタンプは、前記第一の論理ブロック、第一のブロックハッシュ、および第一のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第二のタイムスタンプは、前記第二の論理ブロック、第二のブロックハッシュ、および第二のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第三のタイムスタンプは、前記第三の論理ブロック、第三のブロックハッシュ、および第三のノンス値をまとめて承認した公開台帳の記録の少なくとも一部であり、
前記第一のブロックハッシュは、前記第二の論理ブロック、前記第二のブロックハッシュ、前記第二のノンス値を、まとめてハッシュ化して生成したものであり、
前記第二のブロックハッシュは、前記第三の論理ブロック、前記第三のブロックハッシュ、前記第三のノンス値を、まとめてハッシュ化して生成したものである、
ことを特徴とする、
請求項８記載のネットワーク。
【請求項１０】
前記第一のブロックハッシュ、前記第二のブロックハッシュ、および前記第三のブロックハッシュは、それぞれ所定の桁数の複数ビットの数列で構成され、
前記複数のビットは、それぞれ、第一の値、あるいは、第二の値、のどちらかの値であり、
前記第二のノンス値は、前記第一のブロックハッシュの最初のＱ桁のビットが第一の値になるように調整され、
前記第三のノンス値は、前記第二のブロックハッシュの最初のＱ桁のビットが前記第一の値になるように調整され、
前記Ｑが１６より小さい自然数である、
ことを特徴とする、
請求項９記載のネットワーク。
【請求項１１】
前記複数のクライアントは、それぞれ複数のハードウェアで構成され、
前記複数のハードウェアは、それぞれ少なくとも一つの半導体チップを含み、
前記半導体チップは、少なくともセルアレイを含み、
前記セルアレイは、複数の認証素子で構成され、
前記複数の認証素子の一部は、前記半導体チップの製造段階における制御不能のばらつきにより、不良ビットとなり、
あるいは、前記複数の認証素子の一部は、前記半導体チップに意図的に印可したストレスにより、破壊ビットとなり、
前記不良ビット、あるいは、前記破壊ビットの、前記セルアレイ内での分布に応じて、前記物理アドレスを生成する、
ことを特徴とする、
請求項１記載のネットワーク。
【請求項１２】
前記ストレスは、電気的ストレス、光学的ストレス、機械的ストレス、あるいは、電磁場的ストレスである、
ことを特徴とする、
請求項１１記載のネットワーク。
【請求項１３】
（削除）
【国際調査報告】
2018174112.tif 000021
2018174112.tif 000022
2018174112.tif 000023
2018174112.tif 000024
2018174112.tif 000025
2018174112.tif 000026