【発明の効果】
【0069】
本発明によれば、真に物理的実態に対して一意に割り当てられ、編集不可能で、物のインターネットの時代になっても認証数が枯渇する不安のない物理アドレスを提供することが可能となる。
【0070】
図7は、本発明の実施例による情報機器140の基本構成を概念的に示した図面である。たとえば、複数の(たとえばN個の)半導体チップ(第一のチップ110、第二のチップ120…第Nのチップ130)が搭載されている。
図8は、この情報機器140を第一のノード2001とし、信号伝達路1000を介して第二のノード2002と接続する場合を図示したものである。第一のノード2001内の、第一のチップ110は、外部入出力装置(I/O)50を通して信号伝達路1000に接続している。ここで、第一のチップ110は、チップ認証装置60を搭載している
【0071】
本発明によるチップ認証装置60は、外部入出力装置50から受け取るコール(入力信号)に応じてその都度出力信号を発生するものであり、発生された出力信号は物理的乱雑さを利用して生成されるものである。また、入力信号を変えると出力信号も変わるという特徴を有している。この点で、
図6で説明したMACアドレスとは根本的に異なるものである。すなわち、MACアドレスは、不揮発性メモリチップ3010に保存されたデータであり、入力信号によって出力を変更するような機能を持つものではない。
【0072】
《物理的にクローン不可能な機能》
このような機能として近年注目を集めている技術は、物理的にクローン不可能な機能(PUF)と呼ばれるものである。これは、指紋や網膜などの生体情報を用いて人の個人認証を行うのと同様に、半導体のチップにおいても、一つ一つ異なる物理的特性を用いてチップの個体認証行うものである。要求される主な特徴は、(1)同一のPUFに異なる入力をすれば、常に異なる出力をすること、(2)同一の入力をした異なるPUFは、常に異なる出力をすること、(3)入力と出力の組み合わせを盗まれても、未知の入力に対する出力は予測不可能であること、(4)入力と出力の関係が安定していて信頼できること、である。この中で、条件(4)は半導体のチップが量産品である限り特に自明である。
【0073】
ICチップ製品(半導体チップ製品)の場合、パッケージ剤の化学光学的性質を用いたPUFを利用するもの(コーティングPUF)(特許公開2009-519473号公報参照)と、チップそのものに依存したPUFを利用するもの(チップPUF)がある。特に近年では、チップ内に保存された暗号鍵の盗難や偽造チップの問題が注目されていることもあり、後者、すなわちPUFをチップ内に搭載する技術への注目度が高い。たとえば、暗号鍵と、適当に選んだ入力コードに対応してPUFが出力するPUFデータとをアクティブコード生成装置に入力し、生成したアクティブコードを内部メモリに保存する方法がある。アクティブコードの生成は、チップの出荷前か事前登録の際に一回のみ行うものとし、その後は必要に応じてチップ内に保存したアクティブコードとPUFデータを鍵生成装置に入力してその都度暗号鍵をチップ内で生成する。この方法では、暗号鍵も、暗号鍵を生成するために使用した入力コードも、内部メモリに保存する必要はない。したがって、チップが暗号処理をしている間にハックされない限り、暗号鍵を盗まれる心配はない。一方、アクティブコードを盗まれる可能性はあるが、アクティブコードのみ盗んでも、PUFデータがなければ暗号鍵を複製できない仕組みである。すなわち、PUFデータを取得するために使用した入力コードがわからない限り、上記(1)と(3)の条件が暗号鍵の複製を防ぐことになる。このように、暗号鍵の複製を非常に困難にするのがPUFを利用するメリットの一つである。
【0074】
しかしながら、今最も注目されているPUFの使い方はICチップの個体認証である。これには上記(2)の条件が必須である。つまり、PUFは、入力するリード信号(この場合、入力コード)に対し、チップに固有の認証(PUFデータ)を出力しなければならない。
【0075】
さらに、物のインターネットにおいては、ノード数は数兆個を遥かに超えることが予想されるので、PUFが個別認証すべき個体数も桁違いに大きくなる。すなわち、上記PUFの条件(1)−(4)に次の条件を追加すべきである。すなわち、(5)一つの入力に対する出力のパターンが現実的に無限と見なせるほど大きな数となること、である。こうして、超巨大な物のインターネットでチップの物理的認証を実現するためにPUFを活用することが可能である。
【0076】
ここで、コーティングPUFが(1)−(5)の条件を満たしていたとしよう。コーティングPUFの読み出しは、パッケージに光学的刺激を与えることにより行われる。これは、ネットワークを介して(電子的に)チップの個別認証を読み出すことはできないことを意味している。したがって、更に次の条件を付加すべきである。すなわち、(6)ネットワーク上のチップ認証はチップPUFでなければならない。
【0077】
上記条件(6)を満たすチップPUFは大きく分けて2種類報告されている。一方は回路のばらつきを利用した回路PUFであり、もう一方は回路以外の微細構造のばらつきを応用したもの(製造PUF)(特開2015−201884号公報参照)である。回路PUFは、更に、回路の配線遅延を利用するもの(遅延PUF)(国際公開第WO2011118548号明細書参照)と、回路のメタスタビリティを利用するもの(メタスタビリティPUF)(特開2013−131868号公報参照)に分かれる。遅延PUFとは、IC内で同様の設計仕様で集積化された複数の回路の動作時間に関する制御不能のばらつきを利用するものである。利用される回路の代表例は、アービター回路、グリッチ回路、リング発振回路などである。メタスタビリティPUFで使用される回路は、主にスタティックランダムアクセスメモリ(以下SRAM)とラッチ回路(バタフライPUF)である。
【0078】
回路PUFの弱点は、まず個体差が小さいことである。これは条件(5)を満たすのに不利である。そして出力が不安定であり、条件(4)を満たすのに不利である。更に温度変化などの外部環境に影響されやすく、フォールト攻撃に弱い。そのため増幅回路や温度センサー回路などを追加する必要がある。こうして設計への負荷が高くなり、PUFデータの長さへの制限が大きくなる。すなわち、上記条件(5)を満たすことが非常に難しい。PUFデータそのものが短ければ、たとえ出力がランダムであっても、認証付けられるチップの数が制限される。
【0079】
製造PUFでは、意図的に集積化された層間バイアの製造ばらつきに起因するランダムな断線などが利用される。回路PUFの弱点の多くを解消できる可能性があるが、従来の半導体製品に含まれない特殊な構造を集積化する必要があり、一般的に製造工程への負荷が大きくなる。やはりIoT全般に向けて普及するにはハードルが高いと言える。
【0080】
そのほか、デバイスの信頼性を利用するもの(特開2015−139010号公報参照)も提案されているが、信頼性そのものが低く、条件(4)を満たさない。また、電源オン時のダイナミックランダムアクセスメモリ(以下、DRAM)のキャパシタのばらつきを利用するもの(Fatemeh Tehranipoor, Nima Karimian, Kan Xiao, John Chandy, “DRAM based Intrinsic Physical Unclonable Functions for System Level Security”, in GLSVLSI'15 Proceedings of the 25th edition on Great Lakes Symposium on VLSI, pp. 15-20, 2015. 参照)も報告されている。これは、原理的にラッチ回路PUFと共通の問題を抱えている。すなわち、個体差が小さく、環境要因の変化を利用したフォールト攻撃に弱い。
【0081】
上述のように、個々に解決すべき問題はあるものの、PUFの機能そのものは、ネットワークの相互のつながりの中でMACアドレスを利用せずに物理的実態を持つノードの最小単位(半導体チップ)の物理的認証を実現するのに有効であると考えられる。たとえば一例として、
図8のように、本発明のチップ認証装置60を有する第一のチップ110を搭載する第一のノード2001が、信号伝達路1000を通して、第二のノード2002とデータを交換(交信)する場合を考えよう。
【0082】
たとえば、第二のノード2002は、何らかの形式で接続された第一のノード2001を認識するために信号A、信号B、信号C、…を入力コードとして、信号伝達路1000を介して第一のノード2001に搭載されるチップ認証装置60に与える。チップ認証装置60は、それぞれ信号A1、信号B1、信号C1、…を出力コードとして信号伝達路1000を介して第二のノード2002に返す。ここで、第二のノード2002は、第一のノード2001を、「信号Aの入力に対して信号A1の出力を返し、信号Bの入力に対して信号B1の出力を返し、信号Cの入力に対して信号C1の出力を返し、…」という装置であると認識する。この場合、(A、B、C、…:A1、B1、C1、…)であらわされる数列を交信シリーズと呼ぶ。あるいは、別の場合では、第二のノード2002は第一のノード2001を「信号Fの入力に対して信号F1の出力を返し、信号Aの入力に対して信号A1の出力を返し、信号Kの入力に対して信号K1の出力を返し、…」と認識する。この場合の交信シリーズは、(F、A、K、…:F1、A1、K1、…)であらわされる。しかしながら、このような交信はすべての可能な入力信号に対して行わなくても良い。入力信号のパターン(入力コード)は無限にあり、特定の装置に対してそのすべてを行うことは不毛である。むしろ入力信号のパターン数が無限にあることは、第一のノード2001にネット接続しうる装置の数を無制限にすることに有用である。こうして、第一のノード2001を第二のノード2002に最初に接続する際、第二のノード2002は、第一のノード2001を登録することになる。この登録は、第二のノード2002の正規の使用者か、或いは、第二のノード2002の正規の使用者から正規に権限を委譲された者が行うことが望ましい。
【0083】
《物理層での通信方法》
図9の例では、第二のノード2002の正規の使用者92が、自ら所有する第一のノード2001を使って第二のノード2002を操作する例を説明している。第一のノード2001と第二のノード2002は、信号伝達路1000を介して成立する交信シリーズ80を用いて交信(接続)し、連携して第二のノード2002の正規の使用者92の目的とする仕事を行う。ここで、第二のノード2002の正規の使用者92は、交信シリーズ80にいかなるコミットメントもしない。もしコミットメントをする場合、第二のノード2002の管理・使用方法が煩雑になり、物のインターネットの利便性が大きく損なわれることになる。
【0084】
もし第一のノード2001がMACアドレスを持ち、第一のノード2001と第二のノード2002がイーサネット(登録商標)形式で接続していれば、チップ認証装置60は不要のように思える。しかしながら、上述したように、物のインターネットにおいて物理的実態のあるノード同士の相互認証をイーサネット(登録商標)形式に任せることの問題は下記のような2点である。(イ)もうすぐ枯渇すること。(ロ)悪意あるハッキングに対して脆弱であること、である。このような状況を鑑み、本発明のチップ認証装置の必要性が理解される。
【0085】
まず、遠隔攻撃者が
図9の第一のノード2001を遠隔攻撃する場合を考える。たとえば、遠隔攻撃者は、第一のノード2001を自ら所有する偽造ノードに不正に置き換える。ここで、偽造ノードは、第一のノード2001に内蔵されるチップ認証装置60を使用せずに、この交信シリーズ80を完全に模倣しなければならない。これが可能かどうかを見極めればよい。不可能であれば、本発明のチップ認証方式によって、装置の乗っ取りを防ぐことができると判明する。そのための前提条件として、第一のノード2001を偽造ノードと不正に置き換えようとする者(遠隔攻撃者)は、実際の第一のノード2001を手に取ることができないとする。これは、物のインターネットにおいては自然な条件である。すなわち、物のインターネットにおける乗っ取りは遠隔操作を前提にしているからである。遠隔攻撃者の目的は、自分が手元に所有する偽造ノードを使って第二のノード2002を遠隔操作することである。
図9の第一のノード2001を手元に奪取するためには、第二のノード2002に正規に接続する第一のノード2001が存在する場所に赴き、秘密裏に奪取しなければならない。これは、攻撃をネット上で完結することができないことを意味する。すなわち、第二のノードの正規の使用者92に気づかれずに遠隔操作をすることができないのと同義である。偽造ノードと第二のノード2002がネット接続されると、第二のノード2002は、偽造ノードを認識するために、ネットワークを介して入力信号(R、L、A、…)を偽造ノードに入力する。このとき、ネットを介して偽造ノードが出力信号(R3、L3、A3、…)を第二のノード2002に返したとする。こうして、偽交信シリーズ(R、L、A、…:R3、L3、A3、…)が生成される。すなわち、遠隔攻撃者は、偽交信シリーズを正規の交信シリーズ80、この例の場合、(R、L、A、…:R1、L1、A1、…)に完全に一致させなければならない。すなわち、(R3、L3、A3、…)が(R1、L1、A1、…)と一致すれば、遠隔攻撃は成功する。例えば、遠隔攻撃者は、(R3、L3、A3、…)を、第二のノード2002の内部メモリに保存されている登録コードと一致させれば良い。
【0086】
遠隔攻撃には基本的に二つの方法がある。第一の方法は、第二のノード2002の内部メモリに保存されている情報から、入力コードと、少なくとも登録コードを盗み取ることである。たとえば、遠隔攻撃者が登録コード(R1、L1、A1)と入力コード(R、L、A)とを盗み取ることに成功したとする。このとき、遠隔攻撃者は、所有する偽造ノードを第一のノード2001に置き換えて第二のノード2002を不正に遠隔操作することができる。このような遠隔攻撃からシステムを守るため、システム管理者は第二のノード2002の内部メモリを厳重に防御しなければならない。
【0087】
内部メモリに入力コードや登録コードを保存する第二のノード2002のような装置は、訓練を受けた専門家が常に最新のセキュリティ技術を駆使して厳重に保守することが望ましい。このように、第二のノード2002はネットワークの中央に置かれ、基幹的な役割を担い、セキュリティ管理者による中央管理下にあると仮定する。これを基幹ノードと呼ぶ。これに対し、基幹ノードに接続し、セキュリティ管理者による中央管理化にないノードを周辺ノードとする。
図10は、3つの周辺ノード(第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430)が、基幹ノード400に接続する例である。基幹ノード400は、入力コード402と登録コード403のリストを内部メモリ401に保存する。一方、周辺ノードは、登録コードも入力コードも保存せず、それぞれ相違するチップ認証装置を搭載するチップを内蔵しているものとする。たとえば、
図7は、周辺ノードの基本構成の一例である。また、基幹ノード400の内部メモリ401に保存された、登録コード403のリストの中の一つの要素と、入力コード402の組み合わせが、各周辺ノードに対応する交信シリーズとなる。
【0088】
上述のように、交信シリーズに関する情報を保存した基幹ノードを中央管理下におくことによって遠隔攻撃の第一の方法は防がれるが、ネットワークに接続するノード数が数兆個に上る場合、すべての装置を基幹ノード400のように厳重に防御・保守することは現実的に不可能である。これは中央管理の限界を意味している。そこで、遠隔攻撃者は、基幹ノード400に接続する中央管理の行き届かない装置、
図10の例では、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430・・・のうちの少なくともどれか一つを乗っ取ろうとする。これが遠隔攻撃の第二の方法である。しかしながら、これらの周辺ノードは、入力コードと登録コードのペア(交信シリーズ80)を内部メモリに保存していないので、遠隔攻撃の第二の方法も成功しない。
【0089】
たとえば、遠隔攻撃者が適当に選んだ信号(X、Y、Z)を第一の周辺ノード410に入力し、(X1、Y1、Z1)の返信を得る。ここで、第一の周辺ノード410はチップ認証装置を搭載しているものとする。信号(X、Y、Z)が、基幹ノード400が第一の周辺ノード410と交信する際に用いる入力コード402(P、S、T)と異なる場合、遠隔攻撃者が受け取る返信(X1、Y1、Z1)は、基幹ノードに保存される登録コード402の(P1、S1、T1)とは異なる。これは、周辺ノードに搭載されるチップ認証装置が、異なる入力に対して必ず異なる出力を出す性質(出力の独立性)を持つことを前提にしている。こうして、チップ認証装置が「出力の独立性」を持っている限り、遠隔攻撃の第二の方法も失敗に終わるのである。ここで、周辺ノードと基幹ノード400がもしイーサネット(登録商標)形式による相互認証を採用していたらどうなるだろうか?遠隔攻撃者は、周辺ノードに搭載されているイーサネット(登録商標)カードの内部メモリ(たとえば、
図6の例では、不揮発性メモリチップ3010)からMACアドレスを容易に盗み出すことができる。こうして、本発明のチップ認証装置がMACアドレスを置き換える意義が明らかになる。
【0090】
ここで残る問題は、遠隔攻撃者が適当に選んだ信号セット(X、Y、Z)が、たまたま基幹ノード400の内部メモリ401に保存した入力コード402(P、S、T)に一致することである。このような偶然を防ぐため、入力コードの要素数を十分多くし、更に基幹ノード400の管理者以外には非公開とすることである。そして、この情報は基幹ノード400の管理者によって厳重に守られるべきである。また、時より変更することが望ましい。この変更を行った場合、基幹ノード400に接続する周辺ノードの再登録を行うことが必要になる。このような再登録を行う頻度を減らすために、入力コードの要素数は可能な限り多くするように管理することが必要である。これらの条件を満しつつ、入力コードはパスコードとして振る舞う。
【0091】
すなわち、本発明のチップ認証装置を用いる相互認証形式は、イーサネット(登録商標)形式と同様に物理的実態のあるノード同士の相互認証を司るものであり、一方で、ネットワークを形成するノードを、相互認証に関わる情報を保存し中央管理下に置かれるノード(基幹ノード)と、それ以外のノード(周辺ノード)に分割する。周辺ノードは、相互認証に関わる情報を保存しない代わりに本発明のチップ認証装置を搭載し、所定の入力に対して出力を返す。入力が異なれば必ず異なる出力を返す「出力の独立性」を満たすものである。出力の独立性については、以下で詳述する。
【0092】
ここで、入力コードは、さまざまな周辺ノードへの認証IDを検査するために共通して使うことが望ましい。この場合、おのおのの周辺ノードへのアクセスに個別に必要なものではない。このような事情から、本発明で説明する入力コードを以下“共通パスコード”と呼ぶことにする。こうして、前記基幹ノードは少なくとも一つの共通パスコードを所有する。
【0093】
基幹ノード400が計算機(パソコン等)の場合、これに接続する第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430は、計算機に接続して用いられる周辺機器となる。たとえば、マウス、キーボード、マイクロホン、などである。上述したとおり、基幹ノード400である計算機本体は、最新のウィルス対策ソフトを使用して管理者が責任を持って管理することが前提となる。本件に関わる発明は、周辺ノード(マウス、キーボード、マイクロホン等)の不正な置き換えから計算機本体を守ることが目的となる。これにより、計算機本体を守ることを目的とするウィルス対策ソフトが守りきれない周辺ノードを遠隔攻撃から守ることができる。
【0094】
上記基幹ノード400がネットワークサービスの中心的機能を担うサーバーの場合、たとえば、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430は、このネットワークサービスを利用するエンドユーザーの端末である。たとえば、スマートフォン、タブレット、計算機端末、スマート家電のリモコン、自動運転車の操作パネル、あるいはその他のウェアラブル端末等である。上述したとおり、基幹ノードは、十分に訓練を受けた専門家が最新のセキュリティソフトウェアを駆使して責任を持って管理することが前提となる。本件に関わる発明の目的の一つは、エンドユーザーの端末(スマートフォン、タブレット、計算機端末、その他のウェアラブル端末等)の不正な置き換え(乗っ取り)からサーバー(基幹ノード)への不正アクセスを防ぐことである。これによって、十分に訓練を受けた専門家が最新のセキュリティソフトウェアを駆使しても守りきれない、ネットワーク上に無数に存在する情報端末を遠隔攻撃からシステム全体を守ることができる。
【0095】
基幹ノード400がクラウドセンシングサービスの中心的機能を担うデータセンターの場合、これに接続する第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430は、このデータセンターが必要とするデータを取得するセンサーである。上述したように、センサーの数は無数であり、世界中の広い範囲に設置される。このようなセンサーの例は、GPS、ウィルスモニター、温度計、地震計、ソケット型可視光通信デバイス、バイオセンサー、各種スマートメーターなど無数にある。したがって、その一つ一つを中央管理で遠隔攻撃から守ることは現実的に不可能である。上述したとおり、基幹ノードは、十分に訓練を受けた専門家が最新のセキュリティソフトウェアを駆使して責任を持って管理することが前提となる。本件に関わる発明の目的の一つは、このようなセンサーの置き換え(乗っ取り)から基幹ノードへの不正アクセスを防ぐことである。これによって、十分に訓練を受けた専門家が最新のセキュリティ技術を駆使しても守りきれない、クラウドセンシングのためのネットワーク上に無数に存在するセンサーを遠隔攻撃から守ることができる。
【0096】
ここで、本発明の特徴の一つとして、中央管理の行き届かない周辺ノード(たとえば、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430)は、前記共通パスコードのような入力データや登録コードを保存しないことがあげられる。このように、認証通信のために必要なデータ(たとえは、共通パスコード、あるいは、登録コード)を保存する“基幹ノード”と保存しない“周辺ノード”に分けることが特徴となる。同時に、認証通信のために必要なデータ(たとえは、共通パスコード、あるいは、登録コード)を保存する“基幹ノード”は中央管理し、認証通信のために必要なデータ(たとえは、共通パスコードなど、あるいは、登録コード)を保存しない“周辺ノード”には本発明のチップ認証装置を搭載することを特徴とする。ただし、物理的実態のあるノード同士の相互認証に関するものである点はイーサネット(登録商標)形式と同様である。
【0097】
図11のように、上記共通パスコードは、第一の基幹ノード1400に少なくとも一つ保存され、周辺ノードを認識する際に周辺ノードに送られる。たとえば、第一の基幹ノード1400は第一の共通パスコード1410を、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430に送る。これらの周辺ノードは、第一の基幹ノード1400を「第一の共通パスコード1410を送ってくるもの」として認識する。
【0098】
図12に示すように、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430は、この第一の共通パスコード1410の入力に対応し、それぞれ、第一の認証4101、第二の認証4201、第三の認証4301を、第一の基幹ノード1400に返す。第一の基幹ノード1400は、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430を、「第一の共通パスコード1410に対して、それぞれ第一の認証4101、第二の認証4201、第三の認証4301を返すもの」と認識する。ここで、第一の認証4101、第二の認証4201、第三の認証4301のうちのどの二つの認証も同じではない。また、第一の基幹ノード1400が別の共通パスコードを使用することも可能である。これは、より高度な管理のために便利なことがある。このように、各基幹ノードが使用する共通パスコードはそれぞれ複数であることが望ましい。
【0099】
ここでは、入力が同じであってもチップ認証装置が異なれば必ず異なる出力を返す「出力の独立性」を満たすことを前提としている。「出力の独立性」については、以下で詳述する。
【0100】
実際のネットワークでは、周辺ノードは無数にあり、しかも基幹ノードは一つに限らない。たとえば、
図13では、二つの基幹ノード(第一の基幹ノード1400、第二の基幹ノード2400)と五つの周辺ノード(第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430、第四の周辺ノード440、第五の周辺ノード450)からなるネットワークの一例を示している。そのネットワークは、トポロジーにより接続された二つのネットワークユニット(第一ネットワークユニット及び第二ネットワークユニット)に分割されている。第一の基幹ノード1400を中心に、第四の周辺ノード440と第五の周辺ノード450とで一つのネットワークユニットを構成し、第二の基幹ノード2400と、第一の周辺ノード410、第二の周辺ノード420、及び第三の周辺ノード430とでもう一方のネットワークユニットを構成する。ここで、これらのネットワークユニットは、互いに前記トポロジーの第一の基幹ノード1400と第二の基幹ノード2400とで接続している。さらに、ネットワークユニット内において、第五の周辺ノード450は、第一の基幹ノード1400とのみ接続し、第一の周辺ノード410、第二の周辺ノード420、及び第三の周辺ノード430は、第二の基幹ノード2400とのみ接続している。一方、第四の周辺ノード440は、第一の基幹ノード1400と第二の基幹ノード2400と接続している。
【0101】
すなわち、本発明のネットワーク構造において、複数のネットワークユニットを接続するトポロジーは、互いに異なるネットワークユニットに属する基幹ノード同士の接続、および、互いに異なるネットワークユニットに属する基幹ノードと周辺ノードの接続によって定義される。特に、本発明のネットワークのトポロジーでは、周辺ノード同士は、互いに異なるネットワークユニットに属するかどうかに関らず、互いに直接接続しないことが特徴である。
【0102】
ここで、接続とは、上述した認証作業によってノード同士が互いを認証する認証接続のことを意味しており、単純な連結とは異なる。以下、物理的実態のある情報機器あるいは電子装置のネットワークを考える際、特に断りのない限り、認証接続の意味で接続という言葉を用いる。更に、この意味での「認証」接続は、一つのパッケージ化されたシステム内の装置(モジュール、あるいは、チップ)同士の接続をも含む。
【0103】
たとえば、自動車は複数の制御システムを内包している。駆動システム、ブレーキシステム、ナビゲーションシステム、自動運転車なら自動運転システム等、複数の子システムが連携して稼動する総合システムと考えられる。これら子システムのそれぞれが上述のネットワークユニットの一つ一つ、あるいは、いくつかの連携したネットワークユニットに対応している。このとき、自動車一台は、複数のネットワークユニットから構成される一つのネットワークである。更に、各ネットワークユニットを構成する周辺ノードや基幹ノードの最小単位は半導体チップである。周辺ノードは、例えば、エンジンの温度を感知するセンサーであったり、車体の各部位が感じる加速度センサーであったり、燃料の残量を感知するセンサーであったり、様々なセンサーが考えられる。これらのセンサーから集まる情報を解析し利用する演算処理装置が基幹ノードとなる。自動車以外にも航空機、列車、工場、発電所、送電システム等、社会インフラに関する施設や装置も一つのパッケージ化されたシステムと見なすことができる。よって、その内部に半導体チップが採用されている限り、本発明が対象とするネットワークが存在する。
【0104】
本発明の特徴のひとつとして、このような複数の基幹ノードと複数の周辺ノードからなるネットワークにおいて、基幹ノード同士は直接接続が可能であるが、周辺ノード同士は直接接続をしないことが上げられる。これは、中央管理の行き届かない周辺ノードでは、共通パスコードのような入力データを保存しないためである。その代わりに、周辺ノード同士は、基幹ノードを介して間接的に接続する。
【0105】
たとえば、第一の周辺ノード410と第二の周辺ノード420は、第二の基幹ノード2400を介して間接的に接続可能である。第四の周辺ノード440と第五の周辺ノード450は、第一の基幹ノード1400を介して間接的に接続可能である。第三の周辺ノード430と第四の周辺ノード440は、互いに接続している第一の基幹ノード1400と第二の基幹ノード2400とを介して間接的に接続可能である。こうして、すべての周辺ノードに流れるデータを、複数の基幹ノードでモニターすることが可能となる。すなわち、本発明によれは、中央管理のためのリソースを基幹ノードにのみ集中させることが可能となる。
【0106】
図13の具体的な例としては、たとえば、自動運転車とスマートハウスの組合せが上げられる。たとえば、第一の基幹ノード1400、第四の周辺ノード440、および第五の周辺ノード450からなるネットワークユニットは、共に一つの自動運転車を構成する部品であるとする。同時に、第二の基幹ノード2400、第一の周辺ノード410、第二の周辺ノード420、第三の周辺ノード430からなるネットワークユニットは、共に一つのスマートハウスの部品であるとする。災害時に自動運転車のバッテリーがスマートハウスのバッテリーを補完するような場合、たとえば、スマートハウスのバッテリーの状況を把握するためのセンサー(たとえば、第四の周辺ノード440)が自動運転車に搭載されている。このように、第四の周辺ノード440は、第一の基幹ノード1400と第二の基幹ノード2400のどちらとも接続することになる。あるいは、複数の自動車を連携して自動運転するタクシーシステムのような応用も本発明のネットワークの一例となる。
【0107】
図14に示すように、本発明を用いたネットワークでは、前記トポロジーは一つの周辺ノード(たとえば第一の周辺ノード410)が複数の基幹ノード(たとえば、第一の基幹ノード1400、第二の基幹ノード2400、第三の基幹ノード3400)との接続を含むことも認められる。第一の基幹ノード1400は、第一の共通パスコード1410を有し、第二の基幹ノード2400は、第二の共通パスコード2410を有し、第三の基幹ノード3400は、第三の共通パスコード3410を有するものとする。すなわち、第一の周辺ノード410は、第一の基幹ノード1400を「第一の共通パスコード1410を入力してくるもの」と認識し、第二の基幹ノード2400を「第二の共通パスコード2410を入力してくるもの」と認識し、第三の基幹ノード3400を「第三の共通パスコード3410を入力してくるもの」と認識する。これらの入力に対し、第一の基幹ノード1400は、第一の周辺ノード410を「第一の認証11を返すもの」と認識し、第二の基幹ノード2400は、第一の周辺ノード410を「第二の認証12を返すもの」と認識し、第三の基幹ノード3400は、第一の周辺ノード410を「第三の認証13を返すもの」と認識する。ここで、通信認証に関するデータ(共通パスコード、あるいは、共通パスコードに対応して返信する認証データ等)は基幹ノードに保存され、周辺ノードには保存されない。周辺ノードには、本発明のチップ認証装置を搭載する。
【0108】
その中で、たとえば、第一の基幹ノード1400と第二の基幹ノード2400は直接接続しているが、第一の基幹ノード1400も第二の基幹ノード2400も、第三の基幹ノード3400とは直接接続していないものとする。ここで、第三の基幹ノード3400が遠隔攻撃者でないという証明はない。このため、第一の周辺ノード410に接続認証に関するデータ(共通パスコード)を保存しないということは重要である。たとえば、最初に第一の周辺ノード410が第一の基幹ノード1400に登録される際、第一の基幹ノード1400は、第一の周辺ノード410が第一の基幹ノード1400の後に他の基幹ノードと接続することを制限することが可能となる。なぜなら、第一の周辺ノード410の外部入出力制御装置は、受信する全ての信号を第一の基幹ノード1400に転送し、第一の基幹ノード1400は、第一の周辺ノード410への全ての入力をモニターすることが可能だからである。
【0109】
ここで、もし第一の共通パスコード1410と同等のコードが発見されたら、緊急処置を施すことができる。たとえば、第一の基幹ノード1400は、第一の周辺ノード410を切り離す。あるいは、遠隔攻撃者の動きをモニターするためだけに第一の周辺ノード410を利用する。第一の基幹ノード1400の次に、第二の基幹ノード2400が第一の周辺ノード410を登録する場合、第二の基幹ノード2400は、あらかじめ第一の基幹ノード1400に、第一の周辺ノード410を登録する許可を申請する。これには、第二の基幹ノード2400と第一の基幹ノード1400が直接接続していることが必要である。第一の基幹ノード1400が、第二の基幹ノード2400に対し、第一の周辺ノード410への接続を許可すれば、第一の周辺ノード410は、第二の共通パスコード2410を受け付け、第二の基幹ノード2400に第二の認証12を返信し、第二の基幹ノード2400は、第一の周辺ノード410を登録する。以後、第二の基幹ノード2400と第一の周辺ノード410は、第一の基幹ノード1400の許可を経ずに、認証接続可能となる。次に、第三の基幹ノード3400が、第一の周辺ノード410と接続するには、第一の基幹ノード1400、あるいは、第一の基幹ノード1400及び第二の基幹ノード2400が、第一の周辺ノード410に対し、あらかじめ、第三の共通パスコード3410の受付を許可しておく必要がある。こうして、第一の基幹ノード1400、あるいは、第一の基幹ノード1400及び第二の基幹ノード2400は、第三の基幹ノード3400と第一の周辺ノード410の接続を制限する権限を得ることになる。すなわち、許可の無い入力コードが第一の周辺ノード410に入力された場合、接続を拒絶、あるいは、制限する。この権限の行使は、第一の基幹ノード1400、あるいは、第一の基幹ノード1400および第二の基幹ノード2400の正規の管理者によって行われるものとする。
【0110】
次に、本発明で提案するチップ認証方式が満たすべき条件について述べておこう。
【0111】
《出力の独立性》
まず、
図15に示すように、二つの異なる第一のチップ認証装置21と第二のチップ認証装置22に対して、同じ入力信号(入力信号Q)を入力する。このとき、第一のチップ認証装置21は出力信号Aを出力する。第二のチップ認証装置22は出力信号Bを出力する。ただし、出力信号Aと出力信号Bとは異なる。このように、入力信号が同一であってもチップ認証装置が異なる場合出力信号はそれぞれ異なる。この性質は共通パスコードを使う場合(
図11、
図12)に必要な条件である。すなわち、同じパスコードをそれぞれ異なるチップ認証装置を搭載する周辺ノードに入力信号として入力しても、それぞれの周辺ノードから返って来る出力信号は周辺ノード毎に相異なるものでなければならない。
【0112】
たとえば、
図11のように、第一の基幹ノード1400が、第一の共通パスコード1410をそれぞれ異なるチップ認証装置を内蔵する第一の周辺ノード410、第二の周辺ノード420、第三の認証装置430に与えたとき、これらの周辺ノードから返って来る出力信号は、
図12に示すように、それぞれ第一の認証4101、第二の認証4201、第三の認証4301となる。ここで、第一の認証4101、第二の認証4201、第三の認証4301の内のどの二つも相異なるものとする。
【0113】
《入力の独立性》
反対に、同一のチップ認証装置に異なる入力信号を入力すると、それぞれ相異なる出力信号を出力する。たとえば、
図16に示すように、チップ認証装置60に入力信号Cを入力すると出力信号Aを出力する。同じチップ認証装置60に入力信号Dを入力すると出力信号Bを出力する。ここで、出力信号Aと出力信号Bは、入力信号Cと入力信号Dが異なる限り、それぞれ相異なる出力信号である。この性質は、
図14のように、異なる基幹ノードからそれぞれ異なるパスコードを入力信号として同一の周辺ノードに入力し、それぞれ基幹ノードが相異なる認証を該周辺ノードから出力信号として受け取る場合に必要な条件である。具体的には、第一の基幹ノード1400が第一の共通パスコード1410を第一の周辺ノード410に入力し、第一の周辺ノード410が第一の認証11を第一の基幹ノード1400に出力し、第二の基幹ノード2400が第二の共通パスコード2410を第一の周辺ノード410に入力し、第一の周辺ノード410が第二の認証12を第二の基幹ノード2400に出力し、第三の基幹ノード3400が第三の共通パスコード3410を第一の周辺ノード410に入力し、第一の周辺ノード410が第三の認証13を第三の基幹ノード3400に出力する、というような場合である。ここで、言うまでも無く、上記認証11、12、13は、どの二つをとっても相異なるものとする。
【0114】
すなわち、
図13は「入力の独立性」の条件と「出力の独立性」の条件を同時に利用するネットワーク構造の一例となっている。ほとんどの場合、実際には、基幹ノードの数は2より大きく、周辺ノードの数は5より大きい。
図13は、もっとも簡単な一例に過ぎない。
【0115】
《出力の予測不可能性》
図17に示すように、n個の入力信号(Q1、Q2…Qn)を同一のチップ認証装置60に与えたとき、それぞれの入力信号に対し出力信号(R1、R2…Rn)が得られることを知っているものとする。このとき、n個の入力信号(Q1、Q2…Qn)のいずれとも異なる入力信号Qn+1を同一のチップ認証装置60に与えずに、これを与えたときに得られるはずの出力信号Rn+1を、(Q1、R1)、(Q2、R2)、…(Qn、Rn)のセットから予測することは不可能である。ただし、nは2以上の整数とする。チップ認証装置60が、何らかのアルゴリズムによって出力を生成している場合、すなわち、ソフトウェアによって認証を返す場合、ほぼ必ずこの条件は破られる。したがって、チップ認証装置60は物理的乱雑さを利用して出力信号を生成しなければならない。
【0116】
《入出力の信頼性》
図18に示すように、実際には、入力信号Qを制御する回路に関わる制御不能のノイズなどにより、入力信号Qには入力信号誤差31(ΔQ)が混入する。これに対し、入力信号誤差31(ΔQ)及び出力信号を制御する回路に関わる制御不能のノイズなどにより、出力信号Rには出力信号誤差32(ΔR)が混入する。このとき、二つの異なる入力信号(たとえば、Q1およびQ2)の差の絶対値は、入力信号誤差31(ΔQ)の絶対値の最大値より大きいものとする。ここで、入力信号Q1に対する出力信号R1と、入力信号Q2に対する出力信号R2との間の差の絶対値は、出力信号誤差32(ΔR)の絶対値より常に大きくなければならない。
【0117】
本発明に関わるチップ認証方式は、上述した「出力の独立性」、「入力の独立性」、「出力の予測不可能性」、及び「入出力の信頼性」の4つすべてを同時に満たしていなければならない。
【0118】
《検査》
本発明が実施される以前から稼動しているネットワークを本発明の要件を満たすように発展させる場合には、既に基幹ノードに接続している周辺ノードを、本発明によるチップ認証装置を搭載したチップで構成された周辺ノードに置き換えて行かねばならない。ここで、この置換えが確実に行われたかどうか検査することが必要になる。あるいは、本発明のチップ認証装置を搭載していないチップを採用した周辺ノードが一部でも不正に使用されていないかどうかを検査することが必要である。ここで説明する検査は、基幹ノードの保守点検の一部として随時行うことが可能であり、また、周辺ノードの登録時にも行うことが望ましい。
【0119】
この検査のためにもっとも有効な方法は、中央管理下にある基幹ノードを使って検査対象となる周辺ノードを実際に遠隔攻撃することである。検査対象となる周辺ノードを構成するチップが本発明のチップ認証装置を用いていない場合、内蔵メモリに入力コード42と登録コード43の対応表(
図19参照)を保存しているはずである。たとえば、一つの入力コードに対して複数の登録コードのリストが対応している。これらの登録コードは、一つの共通パスコードを複数の周辺ノードに入力したときのそれぞれの出力に対応している。一般に、共通パスコードは一つとは限らないので、
図19のような対応表になる。もし入力コードが一つだけであれば、対応表は、
図19の、たとえば、上半分のみとなるだろう。
図10は入力コード402が一つの場合の一例である。いずれにしろ、本発明のチップ認証装置を搭載したチップの内蔵メモリにはこのようなコードは保存されていない。
図19のようなコード対応表を正規に保存しているのは、本発明に関するネットワークでは基幹ノードだけである。
図10にある入力コード402と登録コード403の組合せがそれである。
図10の入力コード402が
図27の入力コード42に対応し、
図10の登録コード403が
図19の登録コード43に対応している。
【0120】
図20を用いて具体的な検査作業の流れを説明する。まず、検査する周辺ノードを見つけたところから始める。次に、検査対象の周辺ノードの内蔵メモリを読み出す。ここで読み出されたコードの中に、基幹ノードに保存されている入力コードの中に一致するものがあるかどうかを調べる。たとえば、
図19の入力コード42、あるいは、
図10の入力コード402などである。不一致の場合、さらに、基幹ノードに保存されている登録コードと比較する。たとえば、
図19の登録コード43、あるいは、
図10の登録コード403などである。そこで一致しなかった場合、検査した周辺ノードを公正なものとして承認する。公正と承認されなかったものは不正と判定し接続を遮断することができる。こうして、人手によらず自動的に不正周辺ノードを遮断することが可能となる。次に検査する周辺ノードがあるかどうか探す。なければ終了する。あれば、その検査対象となる周辺ノードの内部メモリを読み出し、以下同様に行う。
【0121】
図21を用いて、別の検査作業の流れを説明する。第一に、検査する周辺ノードの内蔵メモリを読み出す。ここで読み出されたコードの中に、基幹ノードに入力コードとして保存されている入力コードの中と一致するものがあるかどうかを調べる。たとえば、
図19の入力コード42、あるいは、
図10の入力コード402などである。不一致の場合、検査した周辺ノードを公正なものとして承認する。一致する場合、更に基幹ノードに登録コードとして保存されている登録コードの中に一致するものがあるかどうか調べる。たとえば、
図19の登録コード43、あるいは、
図10の登録コード403などである。一致した場合、検査した周辺ノードを不正品として判定する。一致しない場合、公正なものとして承認する。次に検査する周辺ノードがあるかどうか探す。なければ終了する。あれば、その検査対象となる周辺ノードの内部メモリを読み出し、以下同様に行う。
【0122】
図20と
図21の検査方法の違いは、それぞれ検査基準の違いによって生じる。
図20および
図21は、本発明に関連して考えられる検査方法のほんの二例であるに過ぎない。他の検査基準を考案すれば、他の検査方法を考え出すことが可能である。たとえば、
図20および
図21において、入力コードの比較と登録コードの比較の順序を入れ替えることも可能である。
【0123】
イーサネット(登録商標)形式では、MACアドレスフィルタリングという検査方法がある。しかしながら、本発明の検査方法、たとえば
図20および
図21の検査方法には、周辺ノードと基幹ノードを分離し、基幹ノードに保存した入力コードと登録コードが周辺ノードに保存されているかどうかを段階的に検査することが基本であり、MACアドレスフィルタリングにはそのような特徴はない。したがって、本発明の検査方法は、MACアドレスフィルタリングとは具体的に異なる検査方法である。
【0124】
こうして、本発明の実施形態に関わるチップ認証方式を用いる、ネットワークを構成するすべてのノードは、たとえば、
図13のように、訓練を受けたセキュリティ専門家が保守・管理する基幹ノード(たとえば、1400、2400)のグループと、前記セキュリティ専門家が管理できない周辺ノード(たとえば、410、420、430、440,450)のグループに分けられる。ここで、周辺ノード同士はお互いに直接に接続せず、基幹ノードとのみ接続可能とする。こうして、一つの基幹ノードとそれに直接接続する複数の周辺ノードからなるネットワークユニットを構成する。基幹ノードは、基幹ノード同士と任意に接続可能であり、周辺ノード同士は、基幹ノードを介して間接的に接続可能である。こうして、各ネットワークユニット同士も接続可能である。
図13は、二つのネットワークユニットが互いの基幹ノード同士の接続によって連携したネットワークの一例である。実際には、もっと多数の基幹ノード、すなわち、もっと多数のネットワークユニットから構成されるネットワークも実現可能である。また、ネットワーク上の物理的実態を持ったノード(たとえば、情報機器や電子装置)同士の接続は、上述した認証作業によって物理的実態を持つノード同士が互いを認証する、認証接続することを意味している。
【0125】
各周辺ノードには、すべて異なるチップ認証装置が搭載されている。
図11及び
図12に示すように、基幹ノード1400は、少なくとも一つの固有の共通パスコード1410を保有する。
図10に示すように、基幹ノード1400が出力する共通パスコードは、基幹ノードの内蔵メモリに入力コード(たとえば、402)として厳重に保管される。
図12に示すように、共通パスコード1410を入力された周辺ノード(410、420、430)は、この共通パスコードに対しておのおの固有の認証(4101、4201、4301)を基幹ノード1400にそれぞれ返信する。ここで返信される認証は、どの二つをとってもお互いに異なることが必要である。そのため、周辺ノードに搭載される本発明のチップ認証装置は、
図15に示すように、「出力の独立性」を満たさなければならない。
図10に示すように、基幹ノード1400は、周辺ノードから返信されてきた出力信号を、入力コード(たとえば、402)のそれぞれに対応する形で内蔵メモリに厳重に保管する登録コード(たとえば、403)と便宜比較する。
【0126】
図14に示すように、一つの周辺ノードが複数の基幹ノードと接続することが許される。この場合、一つの周辺ノード(たとえば、410)は、複数の共通パスコード(たとえば、1410、2410、3410)を入力され、それぞれ異なる入力に対して、それぞれ異なる認証(たとえば、11、12、13)を出力しなければならない。そのため、周辺ノードに搭載される、本発明のチップ認証装置は、
図16に示すように、「入力の独立性」を満たさなければならない。
【0127】
《チップ認証方法》
続いて、本発明によるチップ認証装置に関する条件を考える。まず、チップ認証装置をソフトウェアで構成する場合、入力信号に対する出力信号の作成は、かならずある種のアルゴリズムを用いて行われることになる。したがって、遠隔攻撃者がこのアルゴリズムを解読した場合、入力コードさえ判っていれば、たとえば、登録コード43を偽造することが可能となる。こうして、この遠隔攻撃者は、少なくとも周辺ノードの一部を乗っ取り、基幹ノードに不正アクセスすることが可能となる。このような不正行為防ぐため、本発明のチップ認証装置は、
図17に示すように、「出力の予測不可能性」を満たさなければならない。しかしながら、プログラムがアルゴリズムで設計されている限り、どのようなプログラムも「出力の予測不可能性」を満たすことができない。これは、プログラムにより完全な乱数を生成することが不可能であることと同じ事情である。このように、チップ認証装置は、物理的乱雑さを活用したものでなければならない。
【0128】
前記のようなチップ認証装置は、チップ内に他の機能を持つモジュールと一緒に混載してもよいし、または、チップ認証機能のみを持つチップとして単独で製造しても良い。また、チップ認証装置は、入力コード(共通パスコード)を受け取る度に、物理的乱雑さに基づいて出力信号(認証コード)を発生することが望ましい。共通パスコードは周辺ノードのメモリに保存してはならない。電子装置が複数のチップで構成される場合、
図7に示すように、少なくとも一つのチップが本発明のチップ認証装置を搭載することが必要である。また、チップ認証装置そのものがチップで実現される電子装置であっても良い。こうして、前記ネットワークは、構成要素である周辺ノード及び基幹ノードが、少なくとも一つのチップから構成される電子装置のネットワークである。
【0129】
ここで、本発明のチップ認証装置のための4つの条件は、上述したPUFの条件のうちの4つにそれぞれ対応している。たとえば、「入力の独立性」は、(1)同一の周辺ノードに異なる入力をすれば常に異なる出力をすることと同一である。「出力の独立性」は、(2)同一の入力をした異なる周辺ノードは常に異なる出力をすることと同一である。「出力の予測不可能性」は、(3)入力と出力の組み合わせを盗まれても未知の入力に対する出力は予測不可能であることと同一である。「入出力の信頼性」は、(4)入力と出力の関係が安定していて信頼できることと同一である。更に上述したように、本発明のチップ認証装置は、PUFのために付加する五番目の条件(5)一つの入力に対する出力のパターンが現実的に無限と見なせるほど大きな数となること、および、六番目の条件(6)ネットワーク上のチップ認証はチップPUFでなければならない、を満たさなければならない。チップ認証装置であるかぎり、(6)を満たすことは自明である。従って、本発明のチップ認証装置は、以下に説明するように、この5つの条件を全て満たすように構成さればよい。
【0130】
上記5つの条件を全て満たす本発明に関するチップ認証装置は、半導体装置の素子アレイ上に配置した複数の認証素子によって構成することが可能である。ここで、この認証素子は、たとえば“1”と“0”のどちらかに対応する信号を出力するものと仮定する。
【0131】
ただし、おのおのの認証素子が出力する信号が“1”に対応するのか“0”に対応するのかは確率的であり、その確率がどのようなアルゴリズムにもよらない限り物理的にランダムであるとみなされる。すなわち、“1”と“0”の物理的にランダムな組み合わせを生成できるとみなされる。こうして、上記第三の条件、すなわち、(出力の予測不可能性)は満たされる。ここで、“1”を黒、“0”を白として、前記素子アレイ上のアドレスにしたがってプロットすると、
図22のような白と黒がランダムに配置された市松模様ができる。
【0132】
“1”と“0”のランダムな組み合わせということは、乱数がデジタルで発生することと同等である。デジタルであるということは、第4の条件、すなわち、
図18で説明した「入出力の信頼性」が満たされることと同等である。
【0133】
第5の条件、すなわち、出力のパターンが現実的に無限と見なせるほど大きな数となること、を満たすためには、素子アレイ上の素子の数を十分に大きくすることが必要である。
【0134】
第一の条件、すなわち「入力の独立性」と、第二の条件、すなわち「出力の独立性」は、この市松状の白黒のランダムパターンをどのように活用するかによって満たすことが可能である。以下具体的に説明する。
【0135】
図23は、
図22を実現するための素子の配列の一例である。行方向にL本のワード線503が並んでいる。図中は縦方向に相当する。それと直交するように、ビット線902が列方向にM本並んでいる。L本のワード線503とM本のビット線が交差するところにチップ認証装置のエレメントである認証素子977が配列する。
【0136】
図24は、
図23の認証素子用アレイ960の中からN本のワード線503とN本のビット線902を抜き出したものである。Nは、一般に、上記のLやMより小さいか同じ自然数である。入力コード(P、S、T、…)の例として、(a(1),b(1),a(2),b(2),…,a(N),b(N)) を考えよう。この入力コードを配列aと配列bに分割し、(a(1),a(2),…,a(N)) を第一行から順に対応させる。同時に、(b(1),b(2),…,b(N)) を第一列から順に対応させる。このとき、a(i) とb(j) の組み合わせで構成される入力に対して、第i行第j列の認証素子977が出力する信号に関連するデータを要素d(i,j) とする。たとえば、d(i,j) は“1”あるいは“0”である。ただし、iおよびjは1からNまでの自然数である。ここで、自然数の組み合わせ (i,j) は、認証素子977のアドレスに対応する。
図24の例では、要素d(5,N-2) が図示されている。ここで、要素d(i,j) の集まり {d(i,j)} は、0と1のランダムな集合体で構成される乱数コードである。d(i,j) の値が1のときを黒、0のときを白とすれば、
図22のような、白と黒のランダムな市松模様が得られる。
【0137】
このように、入力コードを2つに分割し、行と列に対応させることで、入力コードと認証素子のアドレスを対応させることが可能である。入力コードの分割の仕方は、あらかじめ決められた書式に則り実行すれば良い。もちろん、配列aと配列bを交換するのも一例であることは自明である。方法は無数に存在し、ここで例示したような配列aと配列bを入力コードから交互に抜き出す方法はそのうちの一例に過ぎない。また、配列aと配列bの要素数は必ずしも等しくなくても良い。ただし、入力コードの全要素を入力できるよう、認証素子用アレイ960の行数と列数の和は、少なくとも入力コードの全要素数より大きいものとする。ここで、上記入力コードを {a(i),b(j)} と表記することにする。ただし、iおよびjはそれぞれ独立の自然数とする。こうして、数列 {a(i)}、数列 {b(j)}、及び乱数コード {d(i,j)} から、何らかの方法を用いて出力コード {c(i,j)} を作成する。入力コード {a(i),b(j)} 及び出力コード {c(i,j)} の組み合わせが、
図9の交信シリーズ80に対応している。この乱数コード {d(i,j)} の一例として、物理乱数を用いればよい。
【0138】
本発明に係る例について、主に、第一の入力数列 {a(i)} と、第二の入力数列 {b(j)} と、及び物理乱数 {d(i,j)} とから、出力コード {c(i,j)} を作成する方法について、以下図面を参照して説明する。
【0139】
一例として、数列 {a(i)} および {b(j)} の要素は0か1であるとし、出力コード {c(i,j)} を生成するために、剰余演算mod(x,y) を用いることにする。これは、xをyで割ったあまりである。
c(i,j) = mod(a(i) +b(j) +d(i,j),2) 式1
図25は、数列 {a(i)}、数列 {b(j)}、及び物理乱数 {d(i,j)} と、式1に基づいて出力される出力コード {c(i,j)} との関係を一覧表にしたものである。この方法を用いると、0と1の数の割合に変化がないことが容易に想像される。これは、交信シリーズ80によって扱われるデータ量を安定化させるために必要な条件である。すなわち、式1の右辺に入力される情報量と、式1の左辺から出力されるデータ量がほぼ同等であることが求められる。すなわち、入力情報量と出力情報量が大きく異なる場合、式1で定義される系の情報量は、少ない方に合わせられ、結果として、少なくともその差分だけ情報を失うことになるからである。情報量を失うということは、PUFのために付加した五番目の条件(5)一つの入力に対する出力のパターンが現実的に無限と見なせるほど大きな数となること、を満たす上で障害になる可能性がある。したがって、このような状況は可能な限り避けるべきである。この条件(5)を満たすためには、乱数の場合の数が現実的にほぼ無限とみなされるほど大きな数になることが求められる。
【0140】
図26は、式1で示したメカニズムを実現するための基本構成の一例を示した概念図である。すなわち、乱数発生装置601で物理乱数 {d(i,j)} を発生し、基幹ノード400から、共通パスコードとして、入力コード {a(i),b(j)} が入力され、コード発生装置602で出力コード {c(i,j)} を生成する。この例では、乱数発生装置601とコード発生装置602が、共にチップ認証装置600の構成要素となっている。一方、自明なので特に図示しないが、他の例ではコード生成装置602をチップ認証装置600の外に置くことも可能である。いずれにしろ、少なくとも乱数発生装置601をできる限り安価にチップ内に搭載しなければならない。本発明では、乱数発生装置601の一例として、
図22で概念的に説明した方法を用いる。コード発生装置602は、式1で判るように、コード発生に一種のアルゴリズム(剰余演算)を使用しているが、同時に物理乱数 {d(i,j)} で物理的乱雑さを取り込んでいる。このため、上の条件(3)、すなわち、「出力の予測不可能性」が満たされる。なお、入力コードの全要素を取り込むためには、乱数発生装置601の行数と列数の和は、少なくとも、{a(i)} の要素数と {b(j)} の要素数の和と同じか、それより大きいものとする。
【0141】
図27は、本発明の他の一例を説明する図面である。すなわち、基幹ノード400から入力コード(P、S、T、…)がスクランブル装置604に送られる。こうして、入力コード(P、S、T、…)は(P’、S’、T’、…)に変換される。このコードは、周辺ノードにモジュールされているチップ認証装置600への入力コード(P’、S’、T’、…)として入力される。ここで、自明なので特に図示しないが、基幹ノード400に接続する周辺ノードは、少なくともチップ認証装置600を搭載するチップをマウントしている。チップ認証装置600は、入力コード(P’、S’、T’、…)の入力に対して認証(P1、S1、T1、…)を返す。次に、(1)この認証(P1、S1、T1、…)を基幹ノード400へ出力する。あるいは、(2)この認証(P1、S1、T1、…)をスクランブル装置604に返し、スクランブルした認証(P1’、S1’、T1’、…)を基幹ノード400に返す。あるいは、自明なので特に図示しないが、(3)二つ目の別のスクランブル装置を使って認証(P1、S1、T1、…)を認証(P1’’、S1’’、T1’’、…)に変換してから基幹ノード400に返す。(3)の方法では、少なくとも二つの独立のスクランブル装置が必要である。
【0142】
いずれにしろ、コスト面から、スクランブル装置604はチップ認証装置600を搭載するチップに混載することが望ましい。
図28は、スクランブル装置604の基本構成の一例を示す図である。この例では、スクランブル装置604は、乱数発生装置605及びコード発生装置606から構成される。スクランブル装置604を構成する乱数発生装置605およびコード発生装置606の詳しい説明は、
図26で説明したのと同様なので、ここでは説明を省略する。なお、自明なので特に図示しないが、コード発生装置606は、スクランブル装置604の外に置くことも可能である。
【0143】
図29は、
図23の認証素子977により構成される、認証素子用アレイ960の一例、もしくは、一部を示すものである。
図23とは逆に、行が横方向、列が縦方向になっている。この一例では、行数はN+Kで、列数はNである。上部K行N列の領域を、スクランブル装置604を構成するスクランブル装置セルアレイ614とし、下部N行N列を、チップ認証装置600を構成するチップ認証装置セルアレイ611としている。もちろん、この行と列の役割は逆転させても本発明の本質には変更がない。
【0144】
図30は、スクランブル装置604を構成する乱数発生装置605を実現する方法の別の一例を説明する図である。まず、{a(j)+b(j)} を列毎に入力する。ここで、jは列番号である。次に、式2に従って、物理乱数の要素d(i,j) を行方向に足し上げたものを2で割ったあまりに、列番号 (j) に従ってa(j)+b(j) を加える。ここで、iは行番号である。その和を更に2で割ったあまりを中間出力 {f(j)} とする。こうして、入力コード {a(j),b(j)} はスクランブル装置604で物理的乱数を取り込んで中間コード {a(i),f(j)} に変換される。この {a(i),f(j)} を次の入力コードとしてチップ認証装置600に入力し、式3に従って、出力コード {c(i,j)} を出力する。なお、自明なので特に説明しないが、{b(j)} はダミーであっても良い。
【数1】
c(i,j) = mod(a(i) +f(j) + d(i+K,j),2) 式3
【0145】
ここで、スクランブル装置604の行数Kとチップ認証装置600の行数Nの選び方は、必ずしも基幹ノード側で管理する必要はない。たとえば、周辺ノードを基幹ノードに登録する際、周辺ノードの所有者、あるいは、周辺ノードの正規の管理者が、任意に決定してもよい。決定された(N、K)は周辺ノード側の内部メモリ等に保存することが可能である。あるいは、反対に、(N、K)を基幹ノードの内部メモリ等に保存することも可能である。
【0146】
この時点では(N、K)は基幹ノード側が知らなくても良い情報であるが、基幹ノードが中央管理するネットワークに登録し、接続された後は、ネットワークメンテナンスの時などに基幹ノード側で検査し必要に応じて改定することが可能である。その際、改定された(N、K)で周辺ノードを再登録する必要がある。
【0147】
(N、K)を改定すると、たとえ同じ入力コード {a(i),b(j)} を入力しても、スクランブル装置604が生成する中間コード {a(i),f(j)} が異なる。したがって、チップ認証装置600が生成する出力コード {c(i,j)} も異なる。
【0148】
たとえば、一例として、基幹ノードは前回のメンテナンス時に改定した(N、K)を記録しておく。次のメンテナンス時、周辺ノードの内部メモリに保存されている(N、K)を読み出し、前回基幹ノードに記録しておいた(N、K)と比較する。もし一致していないようなら、チップが不正アクセスを受けたとして、ネットワークからこの周辺ノードを切り離すか、管理者に警報を出すことができる。こうして、(N、K)をセキュリティバッファとして有効活用することも可能である。なお、式1−3に基づくコード生成方法では、物理乱数 {d(i,j)} を用いているので、仮にセキュリティバッファ(N、K)が流出したとしても問題ない。
【0149】
上記の式1−3にしたがってコード生成するため、このコード発生装置602を含む周辺ノードに搭載される演算処理装置を使用する場合、スクランブル装置604とチップ認証装置600の間に生成される中間出力 {f(j)} は、該演算処理装置の外に出力しないよう、演算処理装置内のレジスタに、中間出力 {f(j)} の一部あるいは全部を格納することが望ましい。あるいは、必要に応じて中間出力 {f(j)} の一部あるいは全部を使用の都度消去することが望ましい。いずれにしろ、入力コードの一部である {a(i)} と中間出力 {f(j)} から構成される中間コード {a(i),f(j)} は、該周辺ノードの外部には出力されない。
【0150】
また、遠隔操作によってコード生成中のレジスタからチップ内あるいは演算処理装置内に閉じ込められた中間出力 {f(j)} をリバースエンジニアリングで取り出すのは至難の業である。これは、レジスタが非常に小さな動的メモリであることによる。たとえば、通常のパソコンでは32ビット、多くとも64ビットしかない。一方、中間出力 {f(j)} をすべて記録するのに必要な容量はNビットである。したがって、Nが十分大きければ、コード生成するには、中間出力 {f(j)} をいくつかのセグメントに分割してレジスタにその都度格納しなければならない。ここで、コード生成のために一度に使えるレジスタのビット数をRとすると、
図30において、たとえば、第1列から第R列までをセグメント1、第R+1列から第2R列までをセグメント2、第2R+1列から第3R列までをセグメント3、…とし、式2に基づいてセグメント毎に中間出力 {f(j)} の一部を生成し、レジスタに格納する。すなわち、Nが十分大きければ、中間出力 {f(j)} を格納したレジスタ領域はセグメントを更新するごとに上書きされる。したがって、コード生成途中であっても、遠隔操作によって中間出力 {f(j)} の全体を一度に盗まれることはない。
【0151】
あるいは、上記の式1−3にしたがってコード生成するため、該コード発生装置602を含む周辺ノードに搭載される演算処理装置を使用する場合、スクランブル装置604とチップ認証装置600の間に生成される中間出力 {f(j)} は、該周辺ノードの外に出力しないよう、該周辺ノードの内部メモリに、中間出力 {f(j)} の一部あるいは全部を格納することが望ましい。つまり、入力コードの一部である {a(i)} と中間出力 {f(j)} から構成される中間コード {a(i),f(j)} は、該周辺ノードの外部には出力されない。
【0152】
あるいは、上記の式1−3にしたがってコード生成するため、同一チップ内の周辺回路を用いる場合、スクランブル装置604とチップ認証装置600の間に生成される中間出力 {f(j)} は、該チップの外部には出力されない。つまり、入力コードの一部である {a(i)} と中間出力 {f(j)} から構成される中間コード {a(i),f(j)} は、該チップの外部には出力されない。
【0153】
いずれにしろ、出力コード {c(i,j)} の生成が終われば中間出力 {f(j)} は自動的に上書き消去することが望ましい。また、本発明では、入力コード {a(i),b(j)} から中間コード {a(i),f(j)} を生成するのに物理乱数 {d(i,j)}(i=1,…K)を利用しているので、物理乱数 {d(i,j)}(i=1,…K)の要素数が十分大きければ入力コード {a(i),b(j)} から中間出力 {f(j)} を予測することは、現実的に不可能である。更に、中間コード {a(i),f(j)} から出力コード {c(i,j)} を生成するのに前者とは独立の物理乱数 {d(i,j)}(i=K+1,…K+N)を利用しているので、物理乱数 {d(i,j)}(i=K+1,…K+N)の要素数が十分大きければ、出力コード {c(i,j)} を予測することは現実的に不可能である。
【0154】
たとえば、
図29の例で考えてみよう。スクランブル装置セルアレイ614(行数K)およびチップ認証装置セルアレイ611(行数N)のビット容量を概算すると次のようになる。まず、入力コードの場合の数は、2の2N乗である。スクランブル装置セルアレイ614の物理乱数 {d(i,j)} の場合の数は、2のNK乗である。一方、チップ認証装置セルアレイ611からなる物理乱数 {d(i,j)} の場合の数は、2のY乗であり、YはNの2乗である。出力コード {c(i,j)} の場合の数は、2のZ乗であり、ZはNの2乗である。
【0155】
次に、(N、K)を決定するために必要な要件を考える。一般的なデジタル暗号回線で用いられる入力コードは、現在128ビットから256ビットである。このビット数は、暗号セキュリティの都合から年々少しずつ増加しているが、それでもこれから10年程度の間は256ビットからせいぜい512ビットの間で推移するであろう。そこで、一例としてN=K=512の場合で見積もる。このとき、入力コードの場合の数は、2の1024乗である。これは、既に通常の電卓が扱える整数の桁数をはるかに上回る情報量である。実際に関数電卓で計算すると無限大が出てくる。スクランブル装置の物理乱数 {d(i,j)} の場合の数、チップ認証装置の物理乱数 {d(I+N,j)} の場合の数、および出力コード数 {c(i,j)} の場合の数は更に大きく、すべて同様に2の、512の2乗の乗である。もちろん、現実的な無限大である。ここで、512の2乗は262,144なので、スクランブル装置を含めても262キロビットもあればチップ認証装置としては十分な容量である。この容量は、通常のDRAM製品のシリコンダイ辺りの容量(4ギガビット)に比べて4桁小さく、およそ1万分の1以下とはるかに小さい。
【0156】
N=K=128の場合では、入力コードの場合の数は、2の256乗であり、およそ10の77乗となる。上述したように、物のインターネットでは通信ノードの数は全世界で一兆個(10の12乗)より多くなると考えられる。10の77乗は無限大ではないが、全世界のノード数よりはるかに大きく、たまたま入力コードが同じになるという可能性は、10のマイナス65乗と極めて小さくなり、現実的なゼロである。スクランブル装置の物理乱数 {d(i,j)} の場合の数、チップ認証装置の物理乱数 {d(I+N,j)} の場合の数、および出力コード数 {c(i,j)} の場合の数は、すべて同様に2の128の更に2乗となり、もちろん、現実的な無限大である。ここで、128の2乗は16,384なので、スクランブル装置を含めても16キロビットもあればチップ認証装置としては十分な容量である。この容量は、通常のDRAM製品のシリコンダイ辺りの容量(4ギガビット)に比べて5桁小さく、およそ10万分の1以下とはるかに小さい。
【0157】
このように、仮に中間コード {f(j)} が盗まれていたとしても、物理乱数 {d(i,j)}(j=K+1,…K+N)からなる物理的乱雑さによって出力コード {c(i,j)} を予測するのは不可能である。その上、セキュリティバッファ(N、K)を随時更新することができるので、同じ入力コード {a(j),b(j)} に対して生成される中間コードは随時更新される。
【0158】
図31は、スクランブル装置セルアレイ614とチップ認証装置セルアレイ611を含むメモリチップの一例を示す図である。これらの領域が、メモリ領域と共に、ワード線方向に配列し、ワード線503を共有している。
図32は、スクランブル装置セルアレイ614とチップ認証セルアレイ611を含むメモリチップの他一例を示す図である。メモリ領域を含むこれら3つの領域がビット線方向に配列し、ビット線902を共有している。このように、ワード線503とビット線902を入れ替えても、本発明の発明は、本質的に何も変わりはない。
【0159】
図33は、認証素子977の一例を示す図である。ワード線503とビット線902の交差するところにキャパシタ982を配置している。一般に、キャパシタは絶縁膜を二つの導電体で挟んだ構造をしており、二つの導電体の間に電界を印加することで電荷を蓄えるものである。ここで、印加電界が直流であれば電流を流さない。しかしながら、印加電界が高すぎると絶縁膜が破壊され、こうして破壊されたキャパシタは、直流でも電流を流すようになる。ワード線503とビット線902の間に電圧を印加することで、選択された交差点のキャパシタ982に電界を印加することが可能である。なお、ここで破壊のために印加する電圧は交流でも直流でもかまわない。
【0160】
この破壊の発生は確率的であり、物理的乱雑さを伴うものと考えられる。破壊した認証素子は低い電界でも電流を流しやすくなり、たとえばメモリでは“1”に相当する。
図22では黒に相当する。反対に、破壊しなかった認証素子は低い印加電界に対して電流を流し難く、たとえばメモリでは“0”に相当する。
図22では白に相当する。絶縁破壊のための印加電界やキャパシタの詳細な条件(物性、構造、サイズ等)を調整することによって、この確率を大雑把に調整することが可能となる。この確率をおよそ50%程度にすると、
図22のような白黒のランダムな市松模様が得られる。
【0161】
図34は、破壊判定のために用いる電流電圧特性である。横軸は、読み出しのために認証素子977(
図33の例ではキャパシタ982)に印加される読み出し電圧の絶対値であり、縦軸は、その読み出し電圧に応じて認証素子977を通して流れる電流の絶対値である。ここで、電圧が高ければ認証素子に印加される電界が高く、電圧が低ければ電界も低くなる。破壊された認証素子では、低い電圧にもかかわらず非常に大きな電流が流れる。一方、破壊されなかった認証素子では、高い電圧においてもほとんど電流が流れない。この差を見極める方法として、破壊判定電圧932における破壊判定電流値933と非破壊判定電流値934を設定する。すなわち、絶対値が破壊判定電圧932に一致する読み出し電圧を認証素子977に印加したときに、認証素子977を流れる電流の絶対値が破壊判定電流値933より高ければ、当該認証素子は破壊していると判定し、非破壊判定電流値934より低ければ破壊していないと判定する。
【0162】
実際に読み出す際は、まず、読み出す素子のアドレスを選択しなければならない。アドレスを選択するには、
図23に示すように、行デコーダー972で素子行を選択し、列デコーダー973で素子列を選択する。この素子行と素子列の組み合わせがアドレスである。
図35の例では、一行目にこのアドレスを2進法で表記している。こうして選択されたアドレスに対応する認証素子977が接続するワード線503とビット線902の間に、
図34で説明したような方法で読み出し電圧を印加し、対応するアドレスのデータ(“1”あるいは“0”)を読み出す。読み出し後、選択する認証素子のアドレスを変更し、次の認証素子のデータを読み出す。認証素子用アレイ960中の全ての認証素子のデータが読み出されるまでこの作業を繰り返す。
【0163】
図34の判定方法には、破壊判定電流値933と非破壊判定電流値934の間に一定のギャップがある。このため、読み出し電流の絶対値がこのギャップ内にある素子は破壊されたとも非破壊のままであるとも判定されない。このような認証素子は、メモリに相当すると“0”でも“1”でもないため、“X”と表記することにする。このとき、2進表記した認証素子のセルアレイ上のアドレスと、対応する認証素子のデータの一例を示したのが
図35である。その3行目を見ると、一例として、左から、“1”、“1”、“0”、“1”、“X”、“0”、“0”、“1”…“0”となっている。このように、左から五番目の認証素子のデータが“X”になっている。
【0164】
次に、
図35のような“0”と“1”の列とそれぞれに対応するアドレスの組み合わせを市松状にプロットしたものが
図22の白黒のパターンになると予想される。ここで、“0”は白に変換され、“1”は黒に変換されるものとする。しかしながら、“0”でも“1”でもない“X”が存在すると、
図22のような白黒の市松状のパターンを生成することはできない。そこで、市松状にプロットする前に“X”に対応する認証素子をプロットから排除しなければならない。
【0165】
たとえば、“X”に対応する認証素子のアドレス(たとえば、
図35の例では2進法表記で100)をバッファーに保存する。各アドレスに対応する認証素子のデータをバッファーの記録と比較し、対応するアドレスがバッファー内に存在したら読まないというような作業を行う。この作業によって、
図35の4行目のように、“X”に対応する認証素子のデータは取り除かれ、“0”と“1”のみからなるデータとアドレスの組合せが生成される。こうして、
図22のように、白黒の市松状のパターンが得られる。
【0166】
ところで、上述した絶縁膜の破壊現象には、一般に、ソフト破壊とハード破壊の二つのモードがある。ソフト破壊モードは、しばしばハード破壊の前段階として現れ、読み出し電圧に対する電流がハード破壊時より低く、非破壊時より高い。また、ソフト破壊モードでは、電圧を繰り返し印加する間に非破壊状態に戻ったり、ハード破壊モードに遷移したりすることもあり状態が不安定である。しかしながら、一度ハード破壊モードに陥ると、非破壊状態に戻ることはなく、またソフト破壊モードに遷移することもない。本発明においては、
図34および
図35で説明した方法により、より安定した破壊モードであるハード破壊モードをメモリの“1”とみなし、ソフト破壊モードを“X”としている。破壊判定電流値933と非破壊判定電流値934の間のギャップは、ソフト破壊モードに“X”をラベルするためのものである。こうして、上述した方法によって、“X”のソフト破壊した素子のデータを取り除くことによって、
図22の市松状の白黒パターンは、繰り返し電圧を印加しても変化し難くなり、パターンの再現性を獲得する。
【0167】
一般に、電気的ストレスによってソフト破壊状態からハード破壊状態に遷移する場合と、非破壊状態からソフト破壊状態に遷移する場合と、どちらかを人為的に優勢にするよう制御することは難しい。したがって、電気的ストレスを繰り返すうち“X”とラベルされたソフト破壊状態の割合が所定の値以下になることもあれば、それ以上になることもある。しかしながら、ソフト破壊状態の認証素子の数が一定以上に多いと、データ数の減少によりパターンの乱雑さの情報量が不足する。さらに、物理的乱雑さを最大限にするには、情報エントロピーの考え方から“0”と“1”の割合がおおよそ50%ずつになることが望ましい。そこで、素子に電気的ストレスを印加するための電圧パルスを繰り返し、ソフト破壊モード“X”を減らしたり、“0”と“1”の割合を所定のレベルに調整したりする方法が必要になる。以下破壊パルスの繰り返し方法を説明する。こうして、第四の条件(4)入力と出力の関係が安定していて信頼できること、を満をたすことが可能となる。
【0168】
一例として、
図36の方法を紹介する。第一破壊パルス電圧を印加した後、
図34で説明した方法で破壊検査を実施する。“X”の割合が一定値より高ければ、続いて、第二破壊パルス電圧を印加し、再び
図34の方法で破壊検査を行う。まだ“X”の割合が多ければ、第三パルス電圧を印加し、
図34の方法で破壊検査を行う。この作業を、“X”の割合が所定の値以下になるまで繰り返す。この作業の繰り返し回数の上限値もあらかじめ設定しておく必要がある。作業の繰り返し上限に到達しても“X”の割合が所定の値以下にならない場合、そのチップ認証装置は検査不合格となる。検査に合格しなかった場合、そのチップは不良品とされ、廃棄される。検査に合格した場合、上述したように“X”とラベルされた認証素子のアドレスをバッファーに記録し、対応する認証素子のデータを取り除く。ただし、認証素子の数が十分多ければ、多少ソフト破壊の割合が多くとも、十分に大きな情報量の物理的乱雑さを確保することが可能である。この場合、“X”の割合を検査するこの作業は省くことができる。
【0169】
ここで、“X”はソフト破壊状態に対応するので、複数回パルスを印加しているうちにハード“1”に遷移するものが出てくる。“0”から“X”に遷移するものの割合が少なくなければ全体として“0”の割合が下がり、“1”の割合が多くなる。すなわち、たとえ1回目のパルスを与えた際は“0”の数が多くても複数回パルス印加するうちに“1”の割合が増えていく。このように、パルス印加回数、パルス印加時間、及び、パルス波高の上昇方法を最適化することにより、取り除かれるデータ(“X”)の割合をできる限り低減しつつ、“0”と“1”の割合を50%ずつに近づけることが可能となる。失敗した場合、上述したように、検査不合格とみなし不良品として廃棄する。こうして、十分な情報量の物理的乱雑さを有し、安定した“0”と“1”のデータからなる良品のみを製品として出荷することができる。
【0170】
破壊パルスを繰り返し印加する他の一例として、
図37を紹介する。
図36の例との違いは、破壊パルスが印加されるたびに高くなっている点である。その他の説明は
図36の例と同様なので省略する。
【0171】
ソフト破壊モード“X”を取り除く別の方法は、“X”の認証素子のみ選択し、ハード破壊モード“1”に遷移するまで、繰り返し電圧を印加する方法である。このときの破壊電圧の印加の仕方は、たとえば、
図36あるいは
図37のような方法である。この方法は、 “0”の割合がまだ“1”の割合よりある分だけ高いうちに行うことが望ましい。
【0172】
また別の一例では、認証素子の素子構造によってソフト破壊よりハード破壊を優勢にすることが可能である。たとえば、
図38のように、第一導電体1053、第二導電体1052、絶縁膜910、導電体先端部1051からなる素子構造を考えよう。第一導電体1053には第一電極1055が接続しており、第二導電体1052には第二電極1054が接続している。第一電極1055は、ワード線502あるいはビット線902のどちらか一方に接続し、第二電極1054は他方に接続する。導電体先端部1051周辺の絶縁膜1050の分子構造は、力学的ストレスにより安定しておらず、破壊しやすくなる。さらに、破壊パルスを印加したときに導電体先端部1051の周辺に電界が集中しやすい。すなわち、よりハード破壊しやすくなる。しかしながら、導電体先端部1051の深さには製造ばらつきがあるので、導電体先端部1051と第二導電体1052の間の絶縁膜1050の破壊発生確率も認証素子ごとにばらつく。ここで、更に上述した破壊パルスの印加の仕方を工夫することによって“0”と“1”の物理的乱雑さをなるべく大きくするよう、調整することが可能となる。
【0173】
図39は認証素子977の別一例を示す図である。ワード線503とビット線902の交差するところにダイオード要素を配置している。具体的には、一例としてPN接合986(
図39)で可能である。あるいは、別の一例として、ショットキー接合987(
図40)が可能である。ダイオードに強い電圧ストレスを印加すると、ダイオードは確率的に破壊される。破壊されたかどうかは物理的に乱雑であり、ダイオードに逆方向の読み出し電圧を印加して判定する。破壊された素子では、ダイオードに逆方向の読み出し電圧を印加すると電流が流れやすくなり、たとえばメモリの“1”に相当する。破壊されなかったダイオードでは、逆方向の読み出し電圧を印加しても電流が流れ難く、たとえばメモリの“0”に相当する。ストレスも読み出しも、電圧は、それぞれ選択するワード線503及びビット線902の間に印加する。
【0174】
上述のように、それぞれワード線503とビット線902とに接続する認証素子977を構成する要素がPN接合986やショットキー接合987のようなダイオードである場合、読み出し電圧は逆方向である。一方、それぞれワード線503とビット線902とに接続する認証素子977を構成する要素がキャパシタ982の場合、読み出し電圧の方向は正方向逆方向を区別しなくてよい。この点に留意すると、ダイオードの破壊判定方法は、
図34と同様に説明できる。ここで、ダイオードを挟む二つの電極に印加する読み出し電圧は絶対値であり、読み出し電圧を印加したときにダイオード要素を流れる電流も絶対値である。すなわち、PN接合やショットキー接合の場合、これらの絶対値は、逆方向電圧および逆方向電流のことを意味する。その他、詳細の説明は、キャパシタの場合と同様なので省略する。
【0175】
図41は、認証素子977がトランジスタ983の場合を示す図面である。一般に、トランジスタは、半導体基板表面の二つの近接する拡散層とゲートキャパシタから構成されている。ゲートキャパシタは、半導体基板上に、ゲート絶縁膜、及び、ゲート電極を積層したものである。この例では、二つの拡散層の内の一方をビット線902に接続している。ゲート電極にはワード線503を接続する。すなわち、この例では、ゲート絶縁膜の破壊という物理的ばらつき要因を採用することが可能である。絶縁破壊を用いる場合、たとえばビット線902に対してワード線503に電圧ストレスを印加する。この電圧ストレスは、一例として、
図36のようなパルスでも良い。また別の一例として、
図37のようなパルスでも良い。読み出しは、
図34のように、ビット線902とワード線503の間に破壊判定電圧932を印加し、ビット線902とワード線503の間を流れる電流を読めば良い。
【0176】
図42は、認証素子977が、トランジスタ983とキャパシタ982から構成されるDRAMセルの場合である。ここでは、キャパシタ982の破壊を利用する方法を説明する。具体的には、トランジスタ983をオン状態にするための転送電圧をワード線503とビット線902の間に印加する。その間にビット線902に高電圧ストレスを印加する。この高電圧ストレスは、一例として、
図36や
図37のようなパルスである。読み出しは、
図34のように、ワード線503に転送電圧を印加している間に、ビット線902を流れる電流を読めば良い。転送電圧の絶対値は、ビット線に印加する電圧の絶対値より大きく、その電圧差はトランジスタ983をオン状態にするのに必要な電圧である。トランジスタ983のゲート絶縁膜を破壊する場合、
図41と同様な方法が可能である。このとき、ビット線902に繋がっている側のゲート絶縁膜が破壊されることになる。いずれにしろ、破壊は確率的であり、物理的乱雑さの起源となる。
【0177】
ここで重要なことは、認証素子977は、通常のDRAMセルをそのまま用いることができる点である。すなわち、DRAMチップに本発明のチップ認証装置を追加する場合、メモリセル領域の一部に認証装置領域(セルアレイ)を確保するだけで製造のための追加コストは必要ない。認証装置領域のために必要なビット容量は、DRAMに限らず一般的なメモリ容量に比べて非常に少なくて済む。
【0178】
上述したように、
図29のセルアレイを例にとり、N=K=512の場合で見積もると、262キロビットもあればチップ認証装置としては十分な容量である。この容量は、通常のDRAM製品のシリコンダイ辺りの容量(4ギガビット)に比べて4桁小さく、およそ1万分の1以下とはるかに小さい。N=K=128の場合、16キロビットもあればチップ認証装置としては十分な容量であることがわかる。この容量は、通常のDRAM製品のシリコンダイ辺りの容量(4ギガビット)に比べて5桁小さく、およそ10万分の1以下とはるかに小さい。
【0179】
DRAMの価格は、現在、4ギガビット品で2.5米ドルから3米ドルの間で推移している。DRAMセルをそのまま認証素子977として使用することができるので、物理乱数の情報量を十分維持しながら、ソフト破壊モード“X”の分を取り除いて「入出力の信頼性」を確保したとしても、スクランブル装置を含めたチップ認証装置の値段は、1チップ辺り最大でも0.03米セント程度である。
【0180】
図43は、認証素子977の別の一例を示す図である。ワード線503とビット線902の交差するところに、不揮発性メモリの制御に用いる選択トランジスタ984を配置している。不揮発性メモリのメモリ素子は、第一導電型の半導体基板もしくは第一導電型のウェル上の二つの拡散層の間に積層された、シリコン、トンネル膜、電荷蓄積層、層間絶縁膜、制御ゲートからなる、ゲート積層構造である。前記選択トランジスタ984は、このメモリ素子の層間絶縁膜の一部もしくは全てを層間導電層に置き換えたもの、あるいは、層間絶縁膜を突き抜けるように開けた縦穴に導電材を埋め込んだ導電体ビアなどを用いても良い。いずれにしろ、制御ゲートに接続したワード線503に高電圧を印加することで、選択された交差点の選択トランジスタ984のトンネル膜に高電界ストレスを加えることが可能である。ここで、トンネル膜の破壊および読み出しは、トランジスタ983のゲート絶縁膜の破壊と同様になる。また、トンネル膜の破壊は確率的であり、物理的乱雑さの起源となる。すなわち、トランジスタ983のゲート絶縁膜をトンネル膜に置き換えれば説明は全て同じなので、ここでの説明は省略する。
【0181】
図44は、認証素子977の別の一例を示す図である。ワード線503とビット線902の交差するところに抵抗985を配置している。ワード線503とビット線902の間に高電圧を印加することで、選択された交差点の抵抗985に電界ストレスを加えることが可能である。
【0182】
一般に、抵抗は高抵抗導電材を二つの端子で挟んだものであり、抵抗に高電界を印加すると確率的に断線し、ワード線503とビット線902の交点は非導通(ショート)状態になる。ショートしなかった場合(非ショート)、ワード線503とビット線902の交点は導通状態である。どのアドレスの抵抗がショートするか、あるいは、非ショートのままかはあくまで物理的乱雑さによって決まるので、
図22のようなランダムな市松パターンを作ることができる。
【0183】
抵抗が破壊されたかどうかは、抵抗985に読み出し電圧を印加して判定する。ショートした認証素子では、読み出し電圧を印加しても電流が流れづらく、たとえば、メモリの“0”に相当する。ショートしなかった認証素子では、読み出し電圧が低くても電流が流れやすく、たとえば、メモリの“1”に相当する。このような抵抗のショートは、導電体の破壊と同じであり、たとえば、エレクトロマイグレーションなどによって引き起こされる。すなわち、エレクトロマイグレーションは確率的に発生し、発生した素子はメモリの“0”に相当し、発生しなかった素子はメモリの“1”に相当する。
【0184】
図45は、ショート判定のために用いる電流電圧特性である。横軸は、読み出しのために抵抗985に印加される読み出し電圧の絶対値であり、縦軸は、その読み出し電圧に応じて抵抗985を通して流れる電流の絶対値である。ショートしなかった認証素子では、低い電圧にもかかわらず非常に大きな電流が流れる。一方、ショートした認証素子では、高い電圧においてもほとんど電流が流れない。この差を見極める方法として、ショート判定電圧742における非ショート判定電流値743とショート判定電流値744を設定する。すなわち、絶対値がショート判定電圧742に一致する読み出し電圧を抵抗985に印加したときに抵抗985を通して流れる電流の絶対値が、非ショート判定電流値743より高ければ、ショートしていないと判定し、ショート判定電流値744より低ければショートしていると判定する。
【0185】
図45の判定方法には、非ショート判定電流値743とショート判定電流値744の間に一定のギャップがある。このため、読み出し電流の絶対値がこのギャップ内にある認証素子977は、ショートが発生したとも発生しなかったとも判定されない。このような認証素子977は、メモリに相当すると“0”でも“1”でもないため、“X”と表記することにする。このとき、認証素子977のセルアレイ上のアドレス(番地)と、対応する認証素子977のデータの一例を示すと、認証素子977がキャパシタ982の場合と同様に、
図35のようになる。一例として、左から、“1”、“1”、“0”、“1”、“X”、“0”、“0”、“1”、…、“0”となっている。このように、五番目の素子のデータが“X”になっている。ここで、“X”を取り除き、
図22のような白黒のみの市松模様を得る方法は、キャパシタ982の場合と同様なので、ここでの説明は省略する。
【0186】
実際に読み出す際は、まず、読み出す素子のアドレスを選択しなければならない。アドレスを選択するには、
図23に示すように、行デコーダー972で素子行を選択し、列デコーダー973で素子列を選択する。この素子行と素子列の組み合わせがアドレスである。
図35の例では、このアドレスを2進法で表記している。こうして選択されたアドレスに対応する素子が接続するワード線503とビット線902の間に、
図45で説明したような方法で読み出し電圧を印加し、対応するアドレスのデータ(“1”あるいは“0”)を読み出す。読み出し後、選択する認証素子のアドレスを変更し、次の認証素子のデータを読み出す。
図23に示す認証素子用アレイ960中の全ての素子のデータが読み出されるまでこの作業を繰り返す。
【0187】
図46は、抵抗985の一例を示す図である。第一導電体1053、第二導電体1052、絶縁膜910、導電体接合部970からなる素子構造である。第一導電体1053には第一電極1055が接続しており、第二導電体1052には第二電極1054が接続している。第一電極1055は、ワード線503あるいはビット線902のどちらか一方に接続し、他方は第二電極1054に接続する。導電体接合部970の太さには製造上のばらつきがある。そのため、抵抗値にばらつきがあり、ショートする確率にもばらつきがある。したがって、電圧ストレスを繰り返し印加してショートと非ショートの確率がほぼ50%になるように調整することが望ましい。ここで、繰り返しパルス印加の具体的方法は、例えば、
図36や
図37のような方法が考えられる。
【0188】
一般に、電気的ストレスによって導電体接合部970の高抵抗部位には熱が発生し、エレクトロマイグレーションを起し易くなる。エレクトロマイグレーションを起すと、その箇所で導電体接合部970は断線(ショート)する。断線後は、例えば、
図38のようになり、導電体接合部970は導電体先端部1051のように変形する。更に高温のため酸化が進み、断線箇所、すなわち導電体先端部1051と第二導電体1052の間には絶縁膜1050が入り込む。こうして、非ショート状態からショート状態に遷移する。
【0189】
更に電気的ストレスを繰り返し印加し続けると、断線箇所の酸化膜が絶縁破壊を起し、今度はショート状態から非ショート状態に遷移する。
【0190】
非ショート状態からショート状態に遷移する場合と、ショート状態から非ショート状態に遷移する場合のどちらか一方を人為的に優勢にするような制御は難しい。その中間状態が“X”である。したがって、電気的ストレスを繰り返すうちに“X”とラベルされた中間状態の割合が所定の値以下になることもあれば、それ以上になることもある。しかしながら、中間状態の素子の数が一定以上に多いと、データ数の減少によりパターンの乱雑さが不足する。そこで、素子に電気的ストレスを印加するための電圧パルスを繰り返す方法が必要になる。一例として、第一破壊パルス電圧を印加した後、
図45で説明した方法で破壊検査を実施する。このとき、“X”の割合が一定値より高ければ、続いて、第二破壊パルス電圧を印加し、再び
図45の方法で破壊検査を行う。まだ“X”の割合が多ければ、第三パルス電圧を印加し、
図45の方法で破壊検査を行う。この作業を、“X”の割合が所定の値以下になるまで繰り返す。この作業の繰り返し回数の上限値もあらかじめ設定する必要がある。作業の繰り返し上限に到達しても“X”の割合が所定の値以下にならない場合、そのチップ認証装置は検査不合格となる。検査に合格した場合、上述したように“X”とラベルされた素子のアドレスをバッファーに記録し、対応する素子のデータを取り除く。不合格の場合は廃棄する。ただし、素子の数が十分多ければ、多少中間状態の割合が多くとも、十分に大きな物理的乱雑さを確保することが可能である。この場合、“X”の割合を検査するこの作業は省くことができる。
【0191】
一方、物理的乱雑さを最大限に利用するには、“0”と“1”の割合がおおよそ50%ずつになることが望ましい。 “X”とラベルされた素子は、パルス電圧印加を繰り返すうちに確率的に“0”に遷移するので、たとえ1回目のパルスを与えた際は“1”の数が多くても複数回パルス印加するうちに“0”の割合が増えていく。ここで、繰り返しパルス印加の具体的方法は、例えば、
図36や
図37のような方法が考えられる。
【0192】
このように、パルス印加回数、パルス印加時間、及び、パルス波高の上昇方法を最適化することにより、取り除かれるデータ(“X”)の割合をできる限り低減しつつ、“0”と“1”の割合をほぼ50%ずつに近づけることが可能となる。失敗した場合、上述したように、検査不合格とみなし、不良品として廃棄する。こうして、十分な物理的乱雑さを有し、安定した“0”と“1”のデータからなる良品のみを製品として出荷することができる。
【0193】
図47は、
図44に採用される抵抗985の別の一例である。これは、金属配線パターン作成時に一緒に作成することができる。したがって、導電体930は通常のメタル配線と同じ材料であることが望ましく、パターン形状は、
図47のように、少なくとも一部は矩形に曲がっていることが望ましい。この曲がった部分に熱が溜まり易くなり、エレクトロマイグレーションを起して断線し易くなる。たとえば、第一電極1055はワード線503に接続し、第二電極1054はビット線902に接続する。
【0194】
また、
図47のように矩形に曲がった部分は通常のメタル配線より細いことが望ましい。たとえば、矩形部分以外のところをレジストでマスクし、酸化工程を経てスリミングすることでこのような構造が作成できる。
【0195】
導電体930は、複数回矩形に曲げることも可能である。
図48はその一例であり、9箇所矩形に曲がっている。こうして、ショートする確率を配線パターニングで調節することも可能である。ただし、第一電極1055はワード線503に接続し、第二電極1054はビット線902に接続する。
【0196】
図46の構造は、たとえば、第一導電体1053の側から絶縁膜910を貫通する穴(ビア)を開け、そこに導電材料を埋め込むと、
図49のように導電体ビア530を作成できる。これは、
図46の導電体接合部970の一例である。ここで、ビア深さの狙い値を第一導電体1053と第二導電体1052の間の距離に等しくなるようビア製造工程を調整した場合を考える。たまたま狙い値どおりに作成されると、
図49の中央の素子のように、ビアが第一の導電体1053と第二の導電体1052の間にぴたりと収まる。
【0197】
しかしながら、一般には、
図50に示すように、ビアのアスペクト比や穴径には製造上の避けられないばらつきがある。このばらつきは、ビア深さをもばらつかせる。こうして、ある素子では導電体接合部970の長さが足りず、第一導電体1053と第二導電体1052の間が断線(ショート)して
図38のようになる。またある素子では接続(非ショート)して
図46のようになる。たとえば、この
図49の例では、左からショート、接続(非ショート)、接続(非ショート)である。
【0198】
ワード線503とビット線902で選択した認証素子977の導電体接合部970がショートしていれば電流は流れず、たとえばメモリセルに対応させると“0”状態となる。反対に、ショートしていなければ電流が流れ、たとえばメモリセルに対応させると“1”状態となる。 “0”を白、“1”を黒とみなすと、
図22のようなランダムな白黒のパターンが生成される。
【0199】
ここで、ビア深さのばらつきは、大量生産プロセスにおける製造上のばらつきなので、どのようなアルゴリズムとも関係が無い。したがって、物理的ばらつきとみなすことができる。また、必ずしも電気的なストレスを印加することなく、
図22のような白黒のランダムな市松パターンを得ることができる。
【0200】
しかしながら、導電体ビア製造後に、ショートと非ショートの割合を測定し、所望の値からのずれが大きければ、電気的ストレスを印加して回復を期待することが可能である。たとえば、ショートしている場合(たとえば、
図49の左端の認証素子)、電気的ストレスを繰り返すうちにビア底と第二導電体1052の間の絶縁膜の一部(たとえば、
図38の絶縁膜1050)が絶縁破壊し、ショート状態から非ショート状態に転移することがある。反対に、非ショートの場合(たとえば、
図49の中央)、電気的ストレスを繰り返すうちエレクトロマイグレーションを起こして非ショート状態からショート状態に転移することがある。
【0201】
しかしながら、絶縁破壊とエレクトロマイグレーションのどちらを優勢にするかを人為的に制御するのは難しい。そこで、データ“1”が優勢な場合、データ“1”の素子のみ選択して電気的ストレスを印加し、反対に、データ“0”が優勢の場合、データ“0”の素子のみ選択して電気的ストレスを印加する。こうして、“1”と“0”の割合を検査しながら、所望の割合に近づくまで、このような電気的ストレスの印加を繰り返すことが望ましい。このとき、各々選択された素子群に繰り返し印加するストレスパルスは、たとえば、
図36や
図37のようなものを使うことができる。
【0202】
実際に読み出す際には、まず、読み出す素子のアドレスを選択しなければならない。アドレスを選択するには、
図23に示すように、行デコーダー972で素子行を選択し、列デコーダー973で素子列を選択する。この素子行と素子列の組み合わせがアドレスである。
図35の例では、このアドレスを2進法で表記している。こうして選択されたアドレスに対応する素子が接続するワード線503とビット線902の間に、
図45で説明したような方法で読み出し電圧を印加し、対応するアドレスのデータ(“1”あるいは“0”)を読み出す。読み出し後、選択する認証素子のアドレスを変更し、新たに選択した認証素子のデータを同様な方法で読み出す。こうして
図23に示す認証素子アレイ960中の全ての認証素子のデータが読み出されるまでこの作業を繰り返す。
【0203】
上述の例では、たとえば、
図38あるいは
図46において、第一電極1055は、ビット線902とワード線503のどちらか一方に接続し、第二電極1054は他方に接続している。しかしながら、本発明に関る構成範囲はこれに留まらず、次のような構成も可能である。たとえば、
図51のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。第一電極1055と第二電極1054の他方は接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図52のように、第一電極1055と第二電極1054のどちらか一方が接地され、あるいはソース線に接続され、あるいは別の回路に連なる任意の端子に接続される。他方は2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0204】
図53および
図54は、認証素子としてキャパシタ982を用いた場合を示す図である。たとえば、
図53のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。第一電極1055と第二電極1054の他方は、接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図54のように、第一電極1055と第二電極1054のどちらか一方が接地され、あるいはソース線に接続され、あるいは別の回路に連なる任意の端子に接続される。他方は2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0205】
図55および
図56は、認証素子としてPN接合986を用いた例を示す図である。たとえば、
図55のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。第一電極1055と第二電極1054の他方は、接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図56のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。他方は接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0206】
図57および
図58は、認証素子としてショットキー接合987を用いた例を示す図である。たとえば、
図57のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。第一電極1055と第二電極1054の他方は接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図58のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。他方は接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0207】
図59および
図60は、認証素子として抵抗985を用いた例を示す図である。たとえば、
図59のように、第一電極1055と第二電極1054のどちらか一方が2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。第一電極1055と第二電極1054の他方は、接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図60のように、ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。また、抵抗985の一例として、
図47および
図48の導電体930が挙げられる。導電体は、細く、あるいは、矩形状に加工することによって抵抗体あるいはヒューズとして利用できる。あるいは、
図46のように、導電体接合部970を導電体930として用いることもできる。
【0208】
図61および
図62は、認証素子としてトランジスタ983を用いた例を示す図である。たとえば、
図61のように、トランジスタ983のゲートが、2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。トランジスタ983のソースおよびドレインは、接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ここで、ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図62のように、ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0209】
図63および
図64は、認証素子としてトランジスタ983およびキャパシタ982からなるDRAMセルを用いた例を示す図である。
図63のように、トランジスタ983のゲートが、2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。トランジスタ983のソースおよびドレインの一方は、接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。トランジスタ983のソースおよびドレインの他方は、キャパシタ982の二つの端子のうちの一方に接続する。キャパシタ982の他方の端子は接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ここで、ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図64のように、ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0210】
図65および
図66は、認証素子として選択トランジスタ984を用いた例を示す図である。たとえば、
図65のように、選択トランジスタ984のゲートが、2つの制御ゲート(第一の制御ゲート996および第二の制御ゲート997)を挟んでゲート電極955と接続する。選択トランジスタ984のソースおよびドレインは、接地してもよいし、ソース線に接続しても良いし、あるいは別の回路に連なる任意の端子に接続しても良い。ここで、ビット線902は第二の制御ゲート997に接続し、ワード線503は第一の制御ゲート996に接続する。あるいは、
図66のように、ビット線902は第一の制御ゲート996に接続し、ワード線503は第二の制御ゲート997に接続する。
【0211】
図67は、ビット線方向に隣り合った選択トランジスタ984同士の拡散層を接続した場合の例である。これは、NAND型の配置と言われるもので、素子と素子の間からビット線端子を取り除いた状態になっている。ただし、素子が不揮発性メモリセルではなく、認証素子977なので、いわゆるNANDフラッシュとは異なり、NAND型認証素子アレイである。ここでは、認証素子は選択トランジスタ984であるが、特に、そのトンネル膜から構成されるキャパシタの絶縁破壊を用いる。
図68は、NAND型認証素子アレイの別の一例である。この例では、認証素子としてトランジスタ983を採用している。ここでは、特に、そのゲート絶縁膜から構成されるキャパシタの絶縁破壊を用いる。いずれにしろ、キャパシタの破壊(あるいは絶縁破壊)を用いる。したがって、動作方法は同様であり、以下まとめて説明する。
【0212】
図69は、本実施形態に関する認証用素子アレイ960の一例である。ページバッファ790は、NAND型不揮発性メモリセルアレイのページバッファを兼ねることができる。ページバッファ790は、ビット線902との接続をオン/オフさせるためのビット線接続ゲート791を含んでいる。更に、ページバッファ790は、内部にセンスアンプやラッチアップなどをつかさどる回路を設けている。
【0213】
本実施形態では、NANDフラッシュのメモリセルを混載することができる。しかしながら、DRAMやSRAM等の揮発性メモリ、あるいは、NORフラッシュ、磁気抵抗メモリ、相変化型メモリ、抵抗変化型メモリ等の別種の不揮発性メモリを混載することも可能である。いずれにしろ本発明の本質を変更する必要はない。すなわち、本発明に関する認証素子アレイ960と混載するメモリは、必要に応じ、アドレスのためのビット線またはワード線の少なくとも一方を共有するだけであり、メモリの種類にはかかわりがない。
【0214】
認証素子977に電圧パルスを印加するには、一例として、以下に示すような方法で行う。まず、ビット線側の選択ゲートに正の電位を与え、ビット線電極側にあるドレイン選択トランジスタ(SGD)9811をオン状態にする。同様に、破壊したい素子につながるワード線とビット線電極側のドレイン選択トランジスタ9811の間にワード線が存在する場合は、そのワード線にも正の電位を与え、対応する各セルトランジスタ(認証素子977)をオン状態とする。ここで、破壊パルスを印加したい素子につながるビット線の電位を0Vにする。次に、破壊パルスを印加するワード線を選択し、破壊パルス電圧を印加する。破壊パルスを印加する方法の一例は、たとえば、
図36または
図37で説明した方法で行う。また、複数のチップ認証コードを持つ際は、それぞれの認証コードに対してそれぞれチップ認証ブロックが必要である。このような場合、一つのチップ認証装置に
図36または
図37を試してパルス回数を決定し、それをチップ内のメモリ領域(あるいはバッファー)に記憶させ、別のチップ認証領域に、ここで記憶したのと同じ回数の破壊パルスを印加することも出来る。その際は、パルスとパルスの間の破壊率検査は省略可能である。
【0215】
図70は、本発明に関する破壊検査時の電圧パルス波形の例を示す図である。まず、読み出す認証素子977(セルトランジスタ)に関する1本のワード線を選択し、0Vより高い所定の電位を与える。選択ワード線とドレイン選択トランジスタ(SGD)9811の間に他のワード線が存在する場合は、そのワード線にも正の電位を与え、関連する認証素子(セルトランジスタ)をオン状態とする。ビット線は0Vないし、選択ワード線よりは低い所定の正の電位を与える。この選択ワード線とビット線の電位差は、たとえば、
図34の破壊判定電圧932程度である。同時に、ドレイン選択トランジスタ(SGD)9811のゲートには正の電位を与え、ドレイン選択トランジスタ(SGD)9811をオン状態にする。次にビット線接続ゲート791を0Vに下げる。このとき、ビット線接続トランジスタ7910はオフとなり、ビット線はページバッファ790内の検知回路から切り離される。もし選択した認証素子977の絶縁膜が破壊され導電状態であれば、ビット線の電位は上昇する。反対に、導電状態でなければビット線の電位は変化しない。次に、再度ビット線接続ゲート791に正の電位を与え、ビット線接続トランジスタ7910をオンにする。続いて、ページバッファ790内でビット線の電位変化を検知する。認証素子977の絶縁膜の導通・非導通状態に因るビット線電位差をページバッファ790内で拡大し、ラッチ回路にhigh/low データとして格納する。つまり、ビット線電位が所定の電位(たとえば、破壊判定電圧値9330)以上であれば、選択した認証素子977の絶縁膜は破壊されていると見なし、ビット線電位が所定の電位(たとえば、非破壊判定電圧値9340)以下であれば、選択した認証素子977の絶縁膜は破壊されていないと見なす。ここで、破壊判定電圧値9330及び非破壊判定電圧値9340は、それぞれ、
図34の破壊判定電流値933と非破壊判定電流値934に対応する電圧値である。この例では、破壊が導通状態であり、非破壊が非導通状態である。
【0216】
図71を用いて、本実施例に関する破壊検査時の電圧パルス波形の別の一例を説明する。まず、読み出す認証素子977(セルトランジスタ)に関する1本のワード線を選択し、0Vを与える。同じく選択ワード線とドレイン選択トランジスタ9811間に他のワード線が存在する場合は、そのワード線にも正の電位を与え、関連する認証素子(セルトランジスタ)をオン状態とする。ビット線には所定の正の電位を与える。この選択ワード線とビット線の電位差は、たとえば、
図34の破壊判定電圧932程度である。同時に、ドレイン選択トランジスタ9811のゲートには正の電位を与え、ドレイン選択トランジスタ9811をオン状態にする。次に、ビット線接続ゲート791を0Vに下げる。このとき、ビット線接続トランジスタ7910はオフとなり、ビット線はページバッファ790内の検知回路から切り離される。もし選択した認証素子977の絶縁膜が破壊され導通状態であれば、ビット線の電位は下降する。反対に、導電状態でなければ、ビット線の電位は変化しない。次に、再度ビット線接続ゲート791に正電位を与え、ビット線接続トランジスタ7910をオンにする。続いて、ページバッファ790内でビット線の電位変化を検知する。認証素子977の絶縁膜の導電・非導電状態に因るビット線電位差をページバッファ790内で拡大し、ラッチ回路にhigh/low データとして格納する。つまりビット線電位が所定の電位(たとえば、破壊判定電圧値9331)より低ければ、選択した認証素子977の絶縁膜は破壊されていると見なし、ビット線電位が所定の電位(たとえば、非破壊判定電圧値9341)より高ければ、選択した認証素子977の絶縁膜は破壊されていないと見なす。ここで、破壊判定電圧値9331及び非破壊判定電圧値9341は、それぞれ、
図34の破壊判定電流値933と非破壊判定電流値934に対応する電圧値である。ここで、破壊は導電状態であり、非破壊は非導電状態である。
【0217】
不揮発性メモリの複数のブロックの隣に1ブロック分の領域をチップ認証装置アレイとして割り当てることが可能である。たとえば、
図31や
図32のようにレイアウト可能である。このように、チップ認証装置と不揮発性メモリ装置とは異なるものであるが、ビット線902、あるいは、ワード線503を共有することでチップ面積を節約することが可能である。
【0218】
図22に示したような半導体装置の素子アレイ上に構成できる物理的にランダムな組み合わせの特殊な例は、例えば、行ごとに“1”と“0”を数え、“1”が多ければその行を黒とする。“0”が多ければその行を白とする。あるいは、行ごとに“1”と“0”を2進法で足し上げた結果の1桁目の値が“1”ならその行を黒とする。反対に“0”ならその行を白とする。あるいは、各行に関する何らかの性質に応じて行ごとに“1”か“0”を決定することも可能である。
【0219】
このように、なんらかの演算によって行ごとの値(“1”か“0”)を決定し、その結果を、
図72のように、各行に対応する代換素子979に記録する。たとえば、2進数のビット演算なら何でも可能である。あるいは、“0”および“1”を総和して、最下位の桁のみを代換素子979に記録することが望ましい。あるいは、“0”の数と“1”の数を比較し、多い方の値を代換素子979に記録することも可能である。代換素子979は、メモリ素子やヒューズ等が好ましい。ただし、メモリ素子は不揮発性であっても揮発性であっても良い。たとえば、不揮発性の場合、浮遊ゲートを有するものであることが望ましい。あるいは、磁気抵抗の変化を使ったものであったり、相変化を使ったものであったり、抵抗層の抵抗値の変化を使ったものである。揮発性の場合、キャパシタや特殊な回路に蓄積した電荷量を使ったものでもよい。
【0220】
いずれにしろ、
図22の白と黒のランダムな市松模様は、
図73のように、ランダムな水平模様に変換される。これは、QRコード(登録商標)からバーコードへの変換と似ている。この変換により同じ行数での情報量は減少するが、行数が十分大きく、縞模様における白と黒の割合が過度に一方的でなければ、十分な乱雑さを保持できるはずである。
【0221】
ここで、
図23は、
図22を再現するために、各々市松格子状には何らかの認証素子977が配置したものである。これまで述べてきたように、認証素子977は、メモリ素子でも良く、抵抗でも良く、キャパシタでも良く、ダイオードでも良く、スイッチでも良く、ある種のトランジスタでも良く、少なくとも第一と第二の二つの状態を出力できるものであれば何でも良い。ここでは、行数がNで、列数がMである。NもMも、
図22が十分な乱雑さを確保できる程度の大きさの整数であることが求められる。
【0222】
つづいて、入力コード(P、S、T、…)の例として、(a(1),a(2), …,a(N)) を考えよう。
図74のように、各行の代換素子979に (a(1),a(2), …,a(N)) を第一行から順に対応させる。このとき、第i行のデータ(1/0)を要素d(i) とする。ここで、要素d(i) の集合 {d(i)} は、0と1のランダムな集合体で構成される乱数コードである。同様に、上記入力コードを {a(i)} と表記することにする。ただし、iは1からNまでの整数である。続いて、入力コード {a(i)} 及び乱数コード {d(i)} から、何らかの方法を用い出力コード {c(i)} を生成する。入力コード {a(i)} 及び出力コード {c(i)} の組み合わせが、
図9の交信シリーズ80に対応している。
【0223】
ただし、上述して来たように、
図22が物理的にランダムな白と黒のパターンである限り、{d(i)} が0と1のランダムな集合体で構成される乱数コードであるという条件が満たされる。もちろん、上述した例において、行と列を入れ替えても本発明の性質は本質的に変わらない。
【0224】
ここで、一例として、出力コード {c(i)} を生成するために、剰余演算mod(x,y) を用いることにする。これは、xをyで割ったあまりである。
図75は、数列 {a(i)} 及び物理乱数 {d(i)} と、式4に基づいて出力される出力コード {c(i)} との関係を一覧表にしたものである。
c(i) = mod(a(i) +d(i),2) 式4
【0225】
式1に似ているが、列の要素jがなくなっている点で簡単化されている。また、この方法を用いると、変換の前後で0と1の数の割合に変化がないことが容易に想像される。これは、交信シリーズ80によって扱われるデータ量を安定化させるために必要な条件である。すなわち、式4の右辺に入力される情報量と、式4の左辺から出力されるデータ量がほぼ同等であることが求められる。すなわち、入力情報量と出力情報量が大きく異なる場合、式4で定義される系の情報量は、少ない方に合わせられ、結果として、少なくともその差分だけ情報エントロピー(物理的乱雑さ)を失うことになるからである。
【0226】
図76は、式4で示したメカニズムを実現するための基本構成の一例を示した概念図である。すなわち、乱数発生装置601で物理乱数 {d(i)} を発生し、基幹ノード400から、共通パスコードとして入力コード {a(i)} が入力され、コード発生装置602で出力コード {c(i)} を生成する。この例では、乱数発生装置601とコード発生装置602が、共にチップ認証装置600の構成要素となっている。一方、自明なので特に図示しないが、他の例ではコード生成装置602をチップ認証装置600の外に置くことも可能である。いずれにしろ、少なくとも乱数発生装置601をできる限り安価にチップ内に搭載しなければならない。本発明では、乱数発生装置601の一例として、
図73および
図74で概念的に説明した方法を用いる。コード発生装置602は、式4で概念的に説明されるように、プログラムで構成することが可能である。ここで、コード発生に一種のアルゴリズムを使用しているが、物理乱数 {d(i)} で物理的乱雑さを取り込むことが本発明の特徴である。ただし、入力コードの全要素を入力できるよう、乱数発生装置601の行数は、少なくとも、{a(i)} の要素数と同じか、それより大きいものとする。
【0227】
図27は、式4により動作するスクランブル装置604の使用方法の一例を示す図面である。基幹ノード400から入力コード(P、S、T、…)がスクランブル装置604に送られる。こうして、入力コード(P、S、T、…)は(P’、S’、T’、…)に変換される。このコードは、周辺ノードにモジュールされているチップ認証装置600への入力コード(P’、S’、T’、…)として入力される。ここで、
図7のように、基幹ノード400に接続する周辺ノードは、少なくともチップ認証装置600を搭載するチップをマウントしている。チップ認証装置600は、認証(P1、S1、T1、…)を返す。次に、(1)この認証(P1、S1、T1、…)を基幹ノードへ出力する。あるいは、(2)この認証(P1、S1、T1、…)をスクランブル装置に返して、もう一度スクランブルされた認証(P1’、S1’、T1’、…)を基幹ノード400に返す。あるいは、自明なので特に図示しないが、(3)二つ目の別のスクランブル装置を使って認証(P1、S1、T1、…)を認証(P1’’、S1’’、T1’’、…)に変換してから基幹ノード400に返す。(3)の方法では、少なくとも二つの独立のスクランブル装置が必要である。
【0228】
図77は、
図72の認証素子977と代換素子979からなる素子アレイの一部あるいは全部を示すものである。行数はN+Kである。このN+Kは、チップ内の全ビット線数より少ないか同じ、あるいは、全ワード線数より少ないか同じとすることができる。ここでは、上部K行の領域をスクランブル装置セルアレイ614とし、下部N行をチップ認証装置セルアレイ611としている。この(N,K)の組み合わせは、
図29に関連する例と同様に、セキュリティバッファーとして活用することが可能である。
【0229】
まず、式5のように、{a(i)} と {d(i)} を行ごとに足し合わせたものを2で割り、中間出力 {f(i)} とする。その要素f(i) は、式5で与えられる。
f(i) = mod(a(i) +d(i),2) 式5
【0230】
ここで、{f(i)} がスクランブル装置セルアレイ614に関する出力となる。ただし、iは1からNの自然数である。
【0231】
つづいて、式5において、配列 {a(i)} を中間コード {f(i)} に置き換えれば、コード発生装置602の出力 {c(i)} となる。実際には、対応する要素a(i) をf(i) に置き換え、式6のようになる。
c(i) = mod(f(i) +d(i),2) 式6
【0232】
代換素子979がヒューズの場合、たとえば、
図73は、
図72の各行にヒューズを設置することによって実現できる。たとえば、切断したヒューズを黒の行とし、切断しない行を白とすると、この白/黒のランダムな水平模様は、列方向に並んだヒューズの非切断/切断のパターンに置き換えられる。また、ヒューズの切断・非切断は、対応する各行に関するなんらかの性質によって決定する。
【0233】
ヒューズの非切断/切断の決定方法は、各行の白と黒の数を数えるだけではない。何らかの事情により、ある行の中に回復不能のエラーが発生している場合に対応する行のヒューズを切断し、そうでない場合に非切断するということでも良い。この回復不能のエラーの出現が物理的に乱雑に発生する限り有効である。また、この例の場合、切断と非切断の割合は50%程度から大きくずれていても良い。
【0234】
回復不能のエラーが発生している行はリダンダンシー行と呼ばれる別の行に置き換えられ、半導体装置としては使用しない。反対に、それ以外の行は製品の半導体装置の一部として利用する。これは不良品を出荷させないために良く使われる手法であるが、ここでは、リダンダンシー行に置き換えられる行と置き換えられない行の組み合わせが物理的に乱雑であることに注目する。つまり、不良品を出荷させないために置き換えていた部分(リダンダンシー行の領域)を用いることによって、チップ認証装置600用に新たな領域を設けなくても、物理的乱雑さを出力させることが可能となるのである。
【0235】
ところで、メモリセルアレイの各行にそれぞれヒューズを当てはめるようなことは稀である。ゆえに、何らかの事情によりある行の中に回復不能のエラーが発生している場合、その対応する行の番号(行番号)を別途用意するメモリ領域(リダンダンシーメモリ)に保存する。そして、メモリ素子にアクセスするとき、そのメモリ素子がリダンダンシーメモリに属しているかどうかを調べる。属していない場合アクセスし、属している場合アクセスせずに対応する行をリダンダンシー行の一つと置き換える。こうして、何らかの事情によるメモリ素子の回復不能なエラーの発生を物理的乱雑さとして応用する場合、
図72等に見られる代換素子979を用いずに、リダンダンシー用のメモリ領域を利用することが可能である。
【0236】
ただし、この手法で十分な大きさの物理的乱雑さを出力するためには、行数Nが十分大きくなければならない。ここで、リダンダンシーメモリに属する行数をLとすると、Lは1より十分大きく、Nより十分小さな整数である。
【0237】
上述したような条件を満たす半導体製品は、たとえば、ダイナミックランダムアクセスメモリ(DRAM)である。この場合、上述した認証素子977は、DRAMのメモリ素子である。典型的な4ギガビットDRAM製品の場合、たとえば、全ビット線数655万本に対して、何らかの事情により回復不能のエラーが発生する行を置き換えるために準備する行数(リダンダンシーに関するビット線数)は、たとえば、15万3千程度であろう。ここでリダンダンシー用に設けるビット線方向を
図72の行方向に当てはめたが、反対に、ワード線を当てはめることも可能である。いずれにしろ、リダンダンシーに関する場合の数は、簡単な見積もりとして、655万の内から15万3千を選ぶ順列に等しい。計算すると約10の315289乗になる。これは恐ろしく大きい数であり、現実的にほぼ無限大と考えてよい。
【0238】
次に、ワード線方向を
図72の行方向に当てはめると、典型的な4ギガビットDRAM製品の場合、ワード線数440万に対してリダンダンシー行の総数は、たとえば、3,044である。440万から3、044を選ぶ順列の数は、計算するとおよそ10の20222乗のさらに1.6倍となる。ビット線リダンダンシーの場合の数より大分少なくなるが、それでもワード線リダンダンシーの場合の数も恐ろしく大きな数である。いずれにしろ、改めてチップ認証装置600用の領域を設けなくても、汎用DRAMの製品管理のためにあらかじめ設置されているリダンダンシーメモリを用いることによって、現実的に無限大の物理的乱雑さを手に入れることが可能である。
【0239】
このように、汎用DRAM製品は、製品管理用にあらかじめリダンダンシーメモリとしてヒューズメモリが取り付けられており、しかもビット線数もリダンダンシー行の数も十分大きく、得られる物理的乱雑さも十分である。したがって、チップ認証装置600としてチップ内のすべての領域のリダンダンシーを使うことも可能だが、その一部のみをチップ認証装置600として使用することも可能である。この場合、行数Nはチップ内の全ビット線数、あるいは、全ワード線数より小さくなる。
【0240】
本発明に関するチップ認証装置では、たとえば、
図78のように、少なくともチップ認証モジュール60および入出力制御モジュール800を、チップ10に搭載することができる。この入出力制御モジュール800は、入出力制御回路、ワード線制御回路、ビット線制御回路、データ入出力バッファー等を含むことができる。
【0241】
更に、本発明によるチップ認証装置は、たとえば、
図79のように、少なくともチップ認証モジュール600と、認証装置用制御モジュール880と、入出力制御モジュール810と、スクランブル装置モジュール890と、及び中間コード用バッファーモジュール900とから構成され、チップ10に搭載することができる。この入出力制御モジュール810は、入出力制御回路およびデータ入出力バッファーを含むことができるが、ワード線制御回路及びビット線制御回路を含まない。スクランブル装置モジュール890は、
図27のスクランブル装置604を含み、スクランブル装置604が生成する中間コードは、入出力制御モジュール810とは独立した中間コード用バッファーモジュール900に格納され、外部からの要請があってもデータをチップ10の外部に出力しない。これは、中間コードをチップ内に閉じ込めるためである。認証装置用制御モジュール880は、ワード線制御回路、ビット線制御回路、データバッファーを含むことができる。また、
図35で説明した、モード“X”に対応するアドレスを記録する内部記録部も含むことができる。同様の記録部は、必要に応じて、スクランブル装置モジュール890にも含むことができる。
【0242】
外部入出力装置50から入力コード {a(i)} と {b(j)} の集合が入力されると、入出力制御モジュール810は、入力コード {a(i)} と {b(j)} の集合をスクランブル装置モジュール890に渡す。ここで、式2に基づいて生成された中間コード {f(i,j)} は、中間コード用バッファーモジュール900に一時格納され、認証装置用制御モジュール880に引き渡される。認証装置用制御モジュール880は、内部のワード線制御回路、ビット線制御回路、及びデータバッファーなどを駆使し、チップ認証モジュール600から取得した乱数コード {d(i,j)} と、中間コード {f(i,j)} とに応じ、式3に基づいて、出力コード {c(i,j)} を生成し、内部のデータバッファーに一時格納する。入出力制御モジュール810は、外部入出力装置50を通じて出力コード {c(i,j)} をチップ10の外に出力する。こうして、中間出力 {f(i,j)} をチップ内に閉じ込めておくことが可能となる。
【0243】
あるいは、外部入出力装置50から入力コード {a(i)} が入力されると、入出力制御モジュール810は、入力コード {a(i)} をスクランブル装置モジュール890に渡す。ここで、式5に基づいて生成された中間コード {f(i)} は、中間コード用バッファーモジュール900に一時格納され、認証装置用制御モジュール880に引き渡される。認証装置用制御モジュール880は、内部のワード線制御回路、ビット線制御回路、及びデータバッファーなどを駆使し、チップ認証モジュール600から取得した乱数コード {d(i)} と中間コード {f(i)} とに応じ、式6に基づいて出力コード {c(i)} を生成し、内部のデータバッファーに一時格納する。入出力制御モジュール810は、外部入出力装置50を通じて出力コード {c(i)} をチップ10の外に出力する。こうして、中間出力 {f(i)} をチップ内に閉じ込めておくことが可能となる。
【0244】
認証素子977は、MOS型トランジスタ、DRAMセル、不揮発性メモリセルトランジスタ、相変化メモリセル、抵抗変化メモリセル、磁気変化メモリセル、PN接合、ショットキー接合、キャパシタ、絶縁膜、抵抗など、一般的な半導体製造工程で同時に製造可能なデバイスやその部品であれば何でも良い。あるいは特殊にデザインされた微小構造でも使用可能である。
【0245】
認証素子977を確率的に破壊する場合、破壊方法は、選択した素子に電気的なストレスを与えればよい。このとき、チップ上の全アドレスを選択することもできれば、必要に応じて一部のアドレスのみを選択して破壊パルスを印加することも可能である。
【0246】
図22で“1”と“0”の割合がほぼ同じになると、
図73の水平模様の乱雑さは増大する傾向がある。そのため、何らかの事情によりチップ認証装置に使える素子領域が制限される場合や、小容量製品のチップ認証装置を作成する場合には、できる限り、
図22での“1”と“0”の割合を等しくする必要がある。たとえば、
図36あるいは
図37に示すように、破壊パルスを段階的に印加して“1”と“0”の割合を調整する方法がある。まず、第一パルス電圧を印加し、続いて検査をする。このとき、非破壊素子の数が多ければ、第二パルス電圧を印加する。検査後まだ非破壊素子の数が多ければ、さらに第三パルス電圧を印加して検査する。こうして、
図36あるいは
図37のように、破壊パルスを段階的に印加することによって、非破壊素子の数が段階的に減り破壊素子の数が段階的に増大して行く。両者の差が所定の範囲内に収まるところで破壊パルスの印加を中止する。
【0247】
あるいは、パルス電圧をチップ認証装置の全素子に印加して続いて検査をする。このとき、非破壊素子の数が多ければ、非破壊素子のみ選択して再びパルス電圧を印加する。検査後まだ非破壊素子の数が多ければ、再び非破壊素子のみ選択してパルス電圧を印加する。この場合、破壊パルスの印加を繰り返すのは非破壊素子のみにすることが望ましい。破壊パルスを段階的に増大してもしなくても、非破壊素子は段階的に破壊され、“0”と“1”の割合は近づいてゆく。両者の差が所定の範囲内に収まるところで破壊パルスの印加を中止する。
【0248】
破壊パルスの印加が終わった後、“0”でも“1”でもないもの“X”が残留している場合がある。このような場合、
図35で説明した方法を用いて、“X”を除去すれば良い。
【0249】
一般に、電子装置を構成するチップは一つとは限らない。
図13のネットワークの一例を構成する第一、第二、…、第五の周辺ノードも、少なくとも一つ以上のチップから構成されていると考えられる。一例として、
図7では、周辺ノードである情報機器140が、第一のチップ110、第二のチップ120、…、第Nのチップ130から構成される。このうち、必ずしもすべてのチップが本発明のチップ認証装置を搭載している必要はない。
図7の例では、第一のチップ110のみがチップ認証のための関連モジュールを搭載している。