(57)【要約】乱数生成器回路は複数の記憶素子を有する第１のメモリを含む。記憶素子のそれぞれは、第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有する。第１のメモリは、記憶素子のそれぞれの初期状態を示す複数のビットを含む第１の信号を生成するように機能する。乱数生成器回路は第１のメモリに結合された誤り訂正回路をさらに含む。誤り訂正回路は、第１の信号を受信し、第１のメモリへの電力の連続印加時に反復可能でない第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するように機能する。第２の信号は第１のメモリへの電力の連続印加時に反復可能な乱数である。
2011521376.tif 000002
【特許請求の範囲】
【請求項１】
乱数生成器回路であって、
複数の記憶素子を含む第１のメモリであって、前記記憶素子のそれぞれは前記第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有し、前記記憶素子の前記それぞれの初期状態を示す複数のビットを備える第１の信号を生成するように機能する第１のメモリ、及び
前記第１のメモリに結合された誤り訂正回路であって、前記第１の信号を受信し、前記第１のメモリへの電力の連続印加時に反復可能でない前記第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するように機能し、前記第２の信号は前記第１のメモリへの電力の連続印加時に反復可能な乱数である誤り訂正回路
を備えた乱数生成器回路。
【請求項２】
請求項１記載の乱数生成器回路であって、前記第１のメモリが不揮発性メモリからなる乱数生成器回路。
【請求項３】
請求項１記載の乱数生成器回路であって、前記第１のメモリがスタティックランダムアクセスメモリからなる乱数生成器回路。
【請求項４】
請求項１記載の乱数生成器回路であって、前記誤り訂正回路に結合された第２のメモリをさらに備え、前記第２のメモリは前記第２の信号を生成する際に前記誤り訂正回路によって使用される誤り訂正コードビットを記憶するように機能する乱数生成器回路。
【請求項５】
請求項４記載の乱数生成器回路であって、前記第１のメモリ及び前記第２のメモリの少なくとも１つが不揮発性メモリからなる乱数生成器回路。
【請求項６】
請求項１記載の乱数生成器回路であって、少なくとも１つのサブセットの前記複数の記憶素子のそれぞれが相補型金属酸化膜半導体回路素子からなる乱数生成器回路。
【請求項７】
請求項１記載の乱数生成器回路であって、少なくとも１つのサブセットの前記複数の記憶素子のそれぞれがラッチ素子からなる乱数生成器回路。
【請求項８】
請求項１記載の乱数生成器回路であって、前記複数の記憶素子がスタティックランダムアクセスメモリ素子からなり、前記第１のメモリは、前記電源によって前記第１のメモリに電源が入れられる後までは、及び前記第１のメモリが前記第１の信号を生成する前には書き込まれない乱数生成器回路。
【請求項９】
請求項１記載の乱数生成器回路であって、前記第１のメモリに結合されたコントローラをさらに備え、前記コントローラは前記複数の記憶素子へのアクセスを制御するように機能する乱数生成器回路。
【請求項１０】
請求項１記載の乱数生成器回路であって、前記複数の記憶素子の所与の１つの前記初期状態は、前記所与の記憶素子を形成する少なくとも１つのトランジスタに関連する１つ以上の特徴の変化の関数として判定される乱数生成器回路。
【請求項１１】
請求項１０記載の乱数生成器回路であって、前記１つ以上の特徴は、前記少なくとも１つのトランジスタのソース領域及びドレイン領域の中のドーピングレベル、前記トランジスタのチャネル領域の中のドーピングレベル、トランジスタのゲート酸化膜容量、トランジスタのゲート酸化膜の中のトラップされた電荷、前記トランジスタのチャネル領域の中のトラップされた電荷、並びにトランジスタの領域間の形状オフセット、トランジスタのチャネル長及びトランジスタのチャネル幅の少なくとも１つからなる乱数生成器回路。
【請求項１２】
請求項１記載の乱数生成器回路であって、前記複数の記憶素子の所与の１つの前記初期状態は、温度、電源電圧レベル、電源電圧スルーレート、及び電気ノイズの少なくとも１つからなる１つ以上の時間変化する要素の変化の関数として判定される乱数生成器回路。
【請求項１３】
請求項１記載の乱数生成器回路であって、前記誤り訂正回路は、前記第２の信号を生成する際にブロックコード、リードソロモンコード、及びＢｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍコードの少なくとも１つを利用する乱数生成器回路。
【請求項１４】
請求項１記載の少なくとも１つの乱数生成器回路を備える集積回路。
【請求項１５】
安全な乱数を生成するための方法であって、
複数の記憶素子を備える第１のメモリの電源を入れるステップであって、前記記憶素子のそれぞれは電源が入れられた時にそれに対応する初期状態を有する、ステップ、
前記記憶素子の前記それぞれの初期状態を示す複数のビットを備える第１の信号を生成するステップ、及び
前記第１のメモリへの電力の連続印加時に反復可能でない前記第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するステップであって、前記第２の信号は前記第１のメモリへの電力の連続印加時に反復可能な乱数であり、前記安全な乱数が前記第２の信号を示す、ステップ
を備える方法。
【請求項１６】
請求項１５記載の方法であって、前記第２の信号を生成する際に使用される誤り訂正コードビットを第２のメモリに記憶するステップをさらに備える方法。
【請求項１７】
請求項１５記載の方法であって、
二度目に前記メモリの電源を入れるステップであって、前記メモリは第２の乱数を生成するステップ、
前記エラーコードメモリ内の前記誤り訂正コードを読み出すステップ、及び
前記誤り訂正コードを使用して前記第２の乱数を訂正するステップであって、前記訂正された第２の乱数が前記第１の乱数である、ステップ
をさらに備える方法。
【請求項１８】
請求項１５記載の方法であって、前記複数の記憶素子の所与の１つの前記初期状態は、前記所与の記憶素子を形成する少なくとも１つのトランジスタに関連する１つ以上の特徴の変化の関数として判定される方法。
【請求項１９】
請求項１５記載の方法であって、前記複数の記憶素子の所与の１つの前記初期状態は、温度、電源電圧レベル、電源電圧スルーレート、及び電気ノイズの少なくとも１つからなる１つ以上の時間変化する要素の変化の関数として判定される方法。
【請求項２０】
電子システムであって、
少なくとも１つの乱数生成器回路を含む少なくとも１つの集積回路であって、前記少なくとも１つの乱数生成器回路は、
複数の記憶素子を含む第１のメモリであって、前記記憶素子のそれぞれは、前記第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有し、前記記憶素子の前記それぞれの初期状態を示す複数のビットを含む第１の信号を生成するように機能する第１のメモリ、及び
前記第１のメモリに結合された誤り訂正回路であって、前記誤り訂正回路は、前記第１の信号を受信し、前記第１のメモリへの電力の連続印加時に反復可能でない前記第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するように機能し、前記第２の信号は前記第１のメモリへの電力の連続印加時に反復可能な乱数である、誤り訂正回路
を備えた少なくとも１つの集積回路
を備えた電子システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概略として電気技術、電子技術、及びコンピュータ技術に関し、より具体的には乱数生成に関する。
【背景技術】
【０００２】
電子商取引（ｅコマース）、ポータブル通信デバイス（例えば、携帯電話）、ソリッドステートメディアストレージデバイスなどを含むがそれらに限定されないいくつかの用途では、記憶されているデータ及び／又はデバイスの使用を保護するためにセキュリティコードが必要とされる。セキュリティコード又はそのようなセキュリティコードが由来するコード若しくは数字は通常、例えばフラッシュメモリ及びワンタイムプログラマブル（ＯＴＰ）メモリなど、集積回路（ＩＣ）チップの中に組み込まれた不揮発性メモリに記憶される。不揮発性メモリは、チップの電源が切られた時にセキュリティコードがホストチップに保持されることを保証するために使用される。安全な環境を提供するためには、セキュリティコードが観察又はリバースエンジニアリングという公知の方法によって検出可能でないことが絶対必要である。残念ながら、セキュリティコードを組込み不揮発性メモリの中に記憶するほとんどの従来の方法は、目視検査法、走査型電子顕微鏡（ＳＥＭ）画像処理法、及び／又は電荷測定法によって検出されることが可能である。
【０００３】
例えば、組込みフラッシュメモリは、一意のセキュリティコードと共にプログラムされることが可能である不揮発性メモリである。しかし、フラッシュメモリセルのプログラムされたデータ状態は公知の電荷測定方法によって判定されることが可能である。酸化膜破壊アンチヒューズメモリ及び金属若しくはポリシリコン（ポリ）ヒューズメモリを含むＯＴＰメモリは一意のセキュリティコードと共にプログラムされることが可能であり、不揮発性である。しかし、メモリセルのプログラムされたデータ状態はＳＥＭ画像処理法又は代替画像処理法を使用して、アンチヒューズメモリ内のゲート酸化膜破壊領域の検査によって判定されることが可能である。同様に、金属又はポリシリコンヒューズメモリ内のそれぞれのセルのプログラムされたデータ状態は層除去及び目視検査によって判定されることが可能である。その結果として、セキュリティコードを不揮発性メモリの中にプログラムするための従来の方法には十分なセキュリティの保証がなく、従って望ましくない。
【０００４】
セキュリティコードを不揮発性メモリの中にプログラムするための代替形態として、セキュリティコードは（例えば、コード又は乱数生成器に少なくとも部分的に基づいて）ホストチップの外部で生成され、チップに伝達され、次いで、チップの中に組み込まれている不揮発性メモリに記憶されることが可能である。しかし、この手法は主にセキュリティコードがホストチップ環境の外部に知られており、従ってインターセプト及び／又は操作される可能性があるので、盗難に遭い易いという点で望ましくない。
【０００５】
従って、従来の手法によって示された制約の１つ以上を欠点として持たない、記憶されているデータ及び／又はデバイスの使用のセキュリティを保証するための技法の必要が存在する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｒｏｂｅｒｔｏ  Ｔｏｇｎｅｒｉ及びＣｈｒｉｓｔｏｐｈｅｒ  Ｊ．Ｓ．ｄｅ  Ｓｉｌｖａ、「Ｆｕｎｄａｍｅｎｔａｌｓ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ  ａｎｄ  Ｃｏｄｉｎｇ  Ｄｅｓｉｇｎ」、Ｃｈａｐｍａｎ  ＆  Ｈａｌｌ／ＣＲＣ  Ｐｒｅｓｓ、２００２年
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の諸実施形態は、安全な乱数生成のための技法を提供することにより上記の必要を満たす。知られている観察法及び／又はリバースエンジニアリング法を使用して発見するのが本質的に不可能なチップの中の乱数の反復可能な生成によって、本発明の技法は、セキュリティコードのための事実上盗難防止の不揮発性メモリストレージを提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、乱数生成器回路が提供される。乱数生成器回路は複数の記憶素子を有する第１のメモリを含む。記憶素子のそれぞれは、第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有する。第１のメモリは、記憶素子のそれぞれの初期状態を示す複数のビットを含む第１の信号を生成するように機能する。乱数生成器回路は第１のメモリに結合された誤り訂正回路をさらに含む。誤り訂正回路は第１の信号を受信し、第１のメモリへの電力の連続印加時に反復可能でない第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するように機能する。第２の信号は第１のメモリへの電力の連続印加時に反復可能な乱数である。１つ以上の乱数生成器回路が集積回路に含まれてよい。
【０００９】
本発明の他の態様によれば、安全な乱数を生成するための方法は、複数の記憶素子を備えた第１のメモリの電源を入れるステップであって、記憶素子のそれぞれは電源が入れられた時にそれに対応する初期状態を有するステップ、記憶素子のそれぞれの初期状態を示す複数のビットを備える第１の信号を生成するステップ、及び第１の信号内の反復不可能なビットを訂正し、それによって第２の信号を生成するステップであって、第２の信号は第１のメモリへの電力の連続印加時に反復可能な乱数であるステップを含む。
【００１０】
本発明の他の態様によれば、電子システムは、少なくとも１つの乱数生成器回路を含む少なくとも１つの集積回路を含む。乱数生成器回路は複数の記憶素子を含む第１のメモリを備える。記憶素子のそれぞれは、第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有する。第１のメモリは、記憶素子のそれぞれの初期状態を示す複数のビットを含む第１の信号を生成するように機能する。乱数生成器回路は第１のメモリに結合された誤り訂正回路をさらに含む。誤り訂正回路は第１の信号を受信し、第１の信号内の反復不可能なビットを訂正し、それによって乱数生成器回路の出力として第２の信号を生成するように機能する。第２の信号は第１のメモリへの電力の連続印加時に反復可能な乱数である。１つ以上の乱数生成器回路が集積回路に含まれてよい。
【００１１】
本発明のこれら及び他の特徴、目的及び利点は、添付の図面に関連して読まれるべきである本発明の例示的諸実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に関連して使用されることが可能である例示的スタティックランダムアクセスメモリ（ＳＲＡＭ）アレイを示す概略図である。
【図２】本発明の一実施形態による例示的乱数生成器回路を示すブロック図である。
【図３Ａ】本発明の一実施形態による、図２に示されているエラーコードメモリをプログラムするための例示的方法における諸ステップを示す図である。
【図３Ｂ】本発明の一実施形態による、訂正された乱数を呼び出すための例示的方法における諸ステップを示す図である。
【図４】本発明の一実施形態による少なくとも１つの安全な乱数生成器回路を備える例示的パッケージＩＣを示す部分的断面図である。
【発明を実施するための形態】
【００１３】
本発明は、本明細書では例示的メモリ回路、乱数生成器回路、及び乱数生成方法のコンテキストで説明される。しかし、本発明の技法は、本明細書で示され説明された回路及び方法に限定されないことが理解されるべきである。そうではなく、本発明の諸実施形態は、記憶されているデータ及び／又はデバイスの使用のセキュリティを保証するための技法を広く対象とする。知られている観察法及び／又はリバースエンジニアリング法を使用して発見するのが本質的に不可能なチップの中の乱数の反復可能な生成によって、例示的諸実施形態はセキュリティコードのための事実上盗難防止の不揮発性メモリストレージを提供する。本発明の好ましい実施形態はシリコンウェハで製作されることが可能であるが、本発明の諸実施形態は、代替として、ガリウムヒ素（ＧａＡｓ）、リン化インジウム（ＩｎＰ）などを含むがそれらに限定されない他の材料を備えたウェハで製作されることが可能である。
【００１４】
図１は、本発明の一実施形態に関連して使用されることが可能である例示的ＳＲＡＭアレイ１８を示す概略図である。ＳＲＡＭアレイ１８は、Ｎ個の行及びＭ個の列のアレイに配列された複数のＳＲＡＭセル２０を含み、Ｎ及びＭは整数であり、セルは行と列の各交差点にある。ＳＲＡＭアレイ１８内の所与の行に対応するＳＲＡＭセル２０は、好ましくは、語線とも呼ばれる共通の行線（例えば、行０又は行Ｎ）に接続される。同様に、所与の列に対応するＳＲＡＭセル２０は、ビット線とも呼ばれる相補的な列線（例えば、列０及び列Ｃ  ０、又は列Ｍ及び列Ｃ  Ｍ）の共通の対に接続される。列線の各対では、列Ｃは列の論理的相補を表す。
【００１５】
各ＳＲＡＭセル２０は、好ましくは、２つのｎチャネル金属酸化膜半導体（ＮＭＯＳ）プルダウントランジスタデバイス４０及び４２、２つのｐチャネル金属酸化膜半導体（ＰＭＯＳ）プルアップトランジスタデバイス４６及び４８、並びに２つのＮＭＯＳアクセストランジスタデバイス３０及び３２を備えた６トランジスタセルである。本発明は、図示されている特定のメモリセル構成に限定されない。より具体的には、デバイス４６及び４８のソースは互いに接続され、ＶＤＤでよい第１の電圧供給源への接続に適応され、デバイス４６のドレインはノード３４においてデバイス４０のドレインに接続され、デバイス４０及び４２のソースは互いに接続され、アースでよい第２の電圧供給源への接続に適応され、デバイス４２のドレインはノード３６においてデバイス４８のドレインに接続され、デバイス４６及び４０のゲートはノード３６においてデバイス４８及び４２のドレインに接続され、デバイス４８及び４２のゲートはノード３４においてデバイス４６及び４０のドレインに接続される。アクセストランジスタ３０のドレインはノード３４に接続され、アクセスデバイス３２のドレインはノード３６に接続され、デバイス３０のソースは対応する列線（例えば、列０）への接続に適応され、デバイス３２のソースは対応する相補列線（例えば、列Ｃ  ０）への接続に適応され、デバイス３０及び３２のゲートは対応する行線（例えば、行０）に接続される。
【００１６】
ＳＲＡＭセル２０は、図１に示されているように並べて配列されてよい。Ｎ個の行及びＭ個の列のアレイに配列されたメモリセルでは、通常、全てのセルを読み出すのに少なくともＮ個のメモリリードサイクルを必要とする。代替として、ＳＲＡＭセル２０は、単一の行（図示されていない）に配列され、この場合、セルは全て単一のメモリリードサイクルでアクセスされることが可能である。さらに、行線及び列線は相互に関して実質的に直交であるように、列線は好ましくは事実上垂直方向に向けられ、行線は好ましくは事実上水平方向に向けられる。しかし、本発明は、メモリセルのいかなる特定の配列にも、並びに／又は行線及び列線のいかなる特定の方向にも限定されないことが理解されるべきである。例えば、行線及び列線の他の方向（例えば、対角線）が同様に企図され、本発明の範囲内にある。
【００１７】
最初に電源が入れられた時、典型的なメモリセルは、２つの安定した初期状態、即ち、ＶＤＤ（例えば、約３．３ボルト）でよい論理高レベル（例えば、二進数「１」）を示す第１の状態、又はゼロボルトでよい論理低レベル（例えば、二進数「０」）を示す第２の状態の１つにあることができる。用語「初期状態」は、本明細書で使用される場合は、メモリセルの電源が入れられた直後であってメモリセルが書き込まれる前におけるメモリセルのデータ状態として定義されるものとする。理想的には、ＳＲＡＭセルは対称平衡回路であるように設計され、従ってＳＲＡＭセルは、電源が入れられた時に二進数１又は二進数０の初期状態にあることの等しい確率を有する。所与のメモリセルの初期状態は主にプロセスの変化及び変動によって判定される。いかなる物理的構造体の場合とも同様に、通常、寸法、構成要素の集中度、及び他の物理的特性の変化がある。
【００１８】
詳細には、ほとんどのタイプのメモリセルの場合、及びとりわけＳＲＡＭメモリセルでは、例えば、トランジスタのソース領域及びドレイン領域の中のドーピングレベル、トランジスタのチャネル領域の中のドーピングレベル、トランジスタのゲート酸化膜容量、トランジスタのゲート酸化膜の中のトラップされた電荷、トランジスタのチャネル領域の中のトラップされた電荷、トランジスタの領域間の形状オフセット、トランジスタのチャネル長、及びトランジスタのチャネル幅などを含めて、所与のメモリセルを形成するトランジスタに関連するいくつかの特徴の１つ以上の変化が生じ得る。さらに、例えば、相互接続の厚さ、長さ及び幅の変化、並びにメモリセルの中の抵抗及び容量の変化が生じ得る。メモリセルに関連する物理的パラメータ及び／又はプロセスのパラメータの変化は主としてランダムであり、従って、各メモリセルでは、電源が入れられた後にセルにおいて実現される二進数状態は本質的にランダムである。
【００１９】
本発明による使用に適したメモリセルは、プログラムされていないプロセス及び／又は寸法の変化によってセットされた初期状態を有することができるいかなる回路素子を備えてもよいことが理解されるべきである。そのようなメモリセルは、フリップフロップ、ラッチ、図１に示されている例示的ＳＲＡＭセルタイプ、他のＳＲＡＭセルタイプ、他の相補型金属酸化膜半導体（ＣＭＯＳ）回路素子などを含んでよいがそれらに限定されない。
【００２０】
メモリアレイ内のほとんどのＳＲＡＭセルは、セルに関連するプロセス及び／又は寸法の特徴が様々なので、以下では一定の初期状態と呼ばれる反復可能な初期状態を生じさせるのに十分大きなコンポジットアンバランスを有するはずである。この場合、メモリセルの電源が入れられるたびに、その初期状態は常に同じになる、即ち常に二進数０状態、又は常に二進数１状態になる。しかし、メモリアレイには、ある種の、たとえ小さくても、サブセットのメモリセルがある可能性があり、それらはほとんど電気的に平衡しているので、そのようなセルの電源は終始一貫して同じ状態で入れられるとは限らない。この場合、一般に、一定の初期状態を生じさせるほどのネットアンバランスはない。本明細書では不定の初期状態と呼ばれることもある反復不可能な初期状態を示すメモリセルは、チップ温度、電源電圧レベル、電源電圧スルーレート、及びセルの近くの電気ノイズ（例えば、スイッチングノイズ、クロストークなど）のような、しかしそれらに限定されない、他の時間変化する変化要素の影響を受ける可能性がある。
【００２１】
プロセス変化は本質的にランダムなので、所与のメモリセルの反復可能な初期状態は知られない。そのような初期状態は反復可能であるが、二進数１又は二進数０であることのほぼ等しい確率を有する。この理由で、いくつかのメモリセルの初期状態から構成されるセキュリティコードは乱数であるはずである。メモリアレイでは、一定の初期状態を有するメモリセルはメモリアレイの反復可能な署名を提供する。しかし、前述のように、メモリアレイには反復可能な初期状態を示さない小さなサブセットのメモリセルがある可能性がある。そのような場合には、結果として生じるメモリアレイから生成される乱数は、チップの電源が入れられるたびに同じとは限らないはずである。セキュリティコード生成では、結果として生じる乱数をチップの電源が入れられるたびに終始一貫して同じにすることが望ましい。従って、反復可能な乱数を生成するために、不定の初期状態を有するメモリセルが何とかして検討されなければならない。
【００２２】
本発明の一態様によれば、不定の初期状態を有するメモリセルの状態を定義するために、誤り訂正技法が利用されることが有利である。一般に、誤り訂正コード（ＥＣＣ）はメモリから読み出されたデータを訂正するために使用されることが可能である。ＥＣＣのより簡単な形式の１つはブロックコードに基づく。広く使用されるブロックコードはハミングコードである。リードソロモン（ＲＳ）コード及びＢｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ（ＢＣＨ）コードは、他の知られている誤り訂正コードである。誤り訂正の方法は、当技術分野ではよく知られている（例えば、Ｒｏｂｅｒｔｏ  Ｔｏｇｎｅｒｉ及びＣｈｒｉｓｔｏｐｈｅｒ  Ｊ．Ｓ．ｄｅ  Ｓｉｌｖａ、「Ｆｕｎｄａｍｅｎｔａｌｓ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ  ａｎｄ  Ｃｏｄｉｎｇ  Ｄｅｓｉｇｎ」、Ｃｈａｐｍａｎ  ＆  Ｈａｌｌ／ＣＲＣ  Ｐｒｅｓｓ、２００２年を参照されたい）。従って、誤り訂正理論の詳細な議論は、本明細書では説明の節約のために提供されない。本発明の技法は、ランダムで、信頼可能で、ＩＣの電源を入れる時に反復可能であるセキュリティコードを生成するために使用されることが可能である。さらに、ＩＣプロセス及び／又は寸法の変化によって引き起こされるネットメモリセルアンバランスの関数として生成されるセキュリティコードは、知られている検査法及び／又はリバースエンジニアリング法によって合理的に判定されることは不可能である。
【００２３】
図２は、本発明の一実施形態による例示的乱数生成器回路２００を示すブロック図である。乱数生成器回路２００は、複数のメモリセル又は代替記憶素子を含むＳＲＡＭメモリアレイでよい第１のメモリ２０１を備える。メモリ２０１は、メモリにＶＤＤでよい電圧の電源を供給するように機能する電源２０２への接続に適応される。メモリ２０１は、好ましくは不揮発性であり、メモリ内の複数のメモリセルのそれぞれの初期状態の関数である未訂正の乱数でよい第１の信号２０６を出力として生成するように機能する。
【００２４】
普通ＳＲＡＭは、通常に使用される場合は、ＳＲＡＭに記憶されているデータはメモリへの電源が除去された時に（即ち、ＳＲＡＭの電源が切られた時に）失われるので、不揮発性メモリとみなされないことが理解されるべきである。しかし、本明細書に記載された本発明の教示によれば、ＳＲＡＭは、メモリの電源が入れられるたびごとにＳＲＡＭ内のメモリセルの少なくとも一部分が同じ（即ち、反復可能な）初期状態を有するはずなので、安全な乱数を生成するために不揮発性記憶媒体として利用される。
【００２５】
メモリ２０１内のメモリセルは、例えば、Ｎ×Ｍのアレイに配列されてよく、ここでＮ及びＭはどちらも整数である。本発明は、メモリ２０１内のメモリセルのいかなる特定のサイズ及び／又は配列にも限定されない。例示としてのみ、メモリ２０１は１６ワード×３２ビットのアレイ（１６×３２アレイ）を備えることができる。この配列は５１２ビットのデータを生成するために、各リードサイクルが１つの３２ビットデータワードを生成する１６のメモリリードサイクルを必要とする。乱数生成器回路２００は、メモリ内のメモリセルへのアクセスを制御するためにメモリ２０１に結合されたコントローラ２０５を含んでよい。一実施形態では、コントローラ２０５は当業者によって知られているはずであるように、行及び／又は列関連の回路を備えてよい。代替として、メモリ２０１内のメモリセルはＭ個のセルの単一の行（例えば、１×Ｍアレイ）に配列されてよい。この場合、例えば、メモリ２０１は並行して機能するＭ個の別個のラッチ（明示的には図示されていない）を備えてよい。Ｍ個のメモリセルの行全体は単一のメモリリードサイクルの中で同時に読み出されることが可能である。メモリセルのこの配列を使用すれば、必要とされる制御回路は最小になるか必要とされなくなり、この場合、コントローラ２０５は除去されることが可能である。しかし、この配列はメモリセルの状態を同時に読み出すためにかなり大きな数のセンス増幅器を必要とすることになり、これはＩＣの面積及びコスト全体を増大させる可能性がある。
【００２６】
データワードは、好ましくは、メモリの電源が入れられた後に（例えば、ＶＤＤがメモリに印加されてから規定の時間後に）、及びメモリの初期状態が確立された後に、メモリ２０１から読み出される。メモリ２０１を読み出すことによって、好ましくは、メモリから乱数生成器回路２００内の次に続く処理回路への、未訂正の乱数２０６がそれに基づいているデータワードの転送が可能になる。
【００２７】
乱数生成器回路２００はメモリ２０１に結合された誤り訂正回路２０３をさらに含む。前述のように、メモリ２０１内のサブセットのメモリセルは、メモリの電源投入時に終始一貫して反復可能とは限らない未訂正の乱数２０６をそうでなければ生成するはずである所与のデータワードの中に不定の初期状態を有する可能性がある。誤り訂正回路２０３は、好ましくは、メモリ２０１から読み出される全てのデータビットが一定（反復可能）になるように、不定の初期状態を有するメモリセルによって生成されたデータワードを訂正するように機能する。従って、誤り訂正回路２０３によって生成される訂正された乱数でよい第２の信号２０７は、規則的ではないが、反復可能であるはずである。乱数生成器回路２００によって生成される出力セキュリティコードは、好ましくは訂正された乱数２０７の関数である。
【００２８】
誤り訂正回路２０３によって利用される誤り訂正回路法によれば、エラーコードメモリでよい第２のメモリ２０４は任意選択で誤り訂正回路に結合されることが可能である。メモリ２０４は、好ましくは不揮発性であり、誤り訂正回路法によって使用されるＥＣＣビットを記憶するように機能する。これらのＥＣＣビットは、好ましくは、セキュリティコード（乱数）が確立されつつある段階のある時点でメモリ２０４の中にプログラムされる。これは、デバイスの工場テスト又はカスタマテストの間、あるいはそのすぐ後でよい。これらのＥＣＣビットは一度プログラムされる必要があるだけであるが、セキュリティコードをリセットすることが望ましい場合は、後で再プログラムされてもよい。本発明の一実施形態によれば、メモリ２０４は、最初にメモリ２０１の電源を入れ、プログラムするタイミングにおいてメモリ２０１内のメモリセルの初期状態を記憶することによりプログラムされる。これらのプログラムされた状態は、メモリ２０１の「正しい」状態とみなされる。次に続く電源投入中に、メモリ２０１内のメモリセルの初期状態は、メモリ２０４に記憶されている「正しい」状態と比較され、記憶されている状態に合致しないいかなる不定のビットも誤り訂正回路２０３によって訂正されることになる。
【００２９】
本発明の様々な実施形態では、誤り訂正回路２０３は、例えば、訂正された乱数２０７を生成する際にブロックコード（例えばハミングコード）、ＲＳコード、ＢＣＨコードなどを利用することができるが、本発明は、特定の誤り訂正回路法に限定されない。メモリ２０１がメモリセルの単一の行とし配列される場合は、ＲＳコード及びＢＣＨコードは、一般に、誤りのあるデータビットを検出し訂正するために比較的長い一連のデータビットを必要とするので、好ましくはＲＳ又はＢＣＨコードが誤り訂正回路２０３によって利用される。いくつかの誤り訂正技法は訂正可能なビットの数及び／又は配列上の制約を有する。例えば、ハミングコードは、実施するのが簡単であるが、データワードごとに１つのビットエラーしか訂正することができない。従って、ハミングコードは、所与のデータワード内のビットの数が比較的小さい（例えば、約１６ビットより少ない）場合に好まれる。誤り訂正回路２０３によって利用される他の誤り訂正技法はメモリコードの記憶を必要とせず、従ってメモリ２０４は省略されてよい。
【００３０】
次に、図３Ａを参照すると、本発明の一実施形態による、図２の例示的エラーコードメモリ２０４をプログラムするための例示的方法３００が示されている。方法３００は、少なくともその一部分が誤り訂正回路２０３において実施されることが可能であり、不定の初期状態を有するメモリ２０１内のメモリセルの「正しい」状態をセットするために使用されることが可能である（図２参照）。このようにして、方法３００は、好ましくは、メモリ２０１から生成された未訂正の乱数２０６内の反復不可能なビットを訂正するために利用される。「反復不可能なビット」は、この用語が本明細書で使用される場合は、メモリへの電力の連続印加時に、所与のメモリセルの初期状態が、セルへの電力の１つ以上の前の印加中のその所与のセルの初期状態と必ずしも同じでなくてもよいように、終始一貫して同じ初期状態を有するとは限らないメモリ２０１内の所与のメモリセルの出力を広く指すものとする。
【００３１】
エラーコードメモリ２０４をプログラムするために、ステップ３０２において、最初にメモリ２０１の電源が入れられる。ステップ３０３において、誤り訂正回路２０３に転送される未訂正の乱数２０６に基づいて第１の乱数を生成するためにメモリ２０１が読み出される。この第１の乱数は反復不可能なビットを含んでよい。ステップ３０４において、誤り訂正回路２０３が、第１の乱数を表す誤り訂正コード２０８を生成する。ステップ３０５において、誤り訂正コード２０８がエラーコードメモリ２０４の中にプログラムされる。前述のように、誤り訂正コード２０８はメモリ２０１から読み出される各データワードのハミングコードでよい。エラーコードメモリ２０４をプログラムした後に、メモリ２０１の電源が入れられるたびに、誤り訂正コード２０８は、いかなる誤りのあるビットをも検出し、訂正し、訂正された乱数２０７を生成するために使用される。従って、誤り訂正回路２０３によって生成される訂正された乱数２０７は、ランダムであるが反復可能なはずである。
【００３２】
図３Ｂは、本発明の一実施形態による、訂正された乱数（例えば、図２の２０７）を呼び出すための例示的方法３２０における諸ステップを示す。呼出しは、好ましくは、例えば図３Ａに示されている例示的方法３００を使用して、エラーコードメモリ２０４がプログラムされた後に行われる。方法３２０は、ステップ３２２においてメモリ２０１の電源を入れることから開始する。電源投入中に、未訂正のデータワード内の全てのビットの初期状態が確立される。ステップ３２３において、第２の乱数が、メモリ２０１から読み出された未訂正の乱数２０６に基づいて生成される。反復不可能なビットのために、第２の乱数は、図３Ａに関連して上記で説明されたエラーコードメモリプログラミング方法３００の間に生成された第１の乱数とは異なる可能性がある。ステップ３２４において、誤り訂正コード２０８がエラーコードメモリ２０４から読み出される。この誤り訂正コード２０８を使用して、ステップ３２５において、記憶されている誤り訂正コードによって示された第１の乱数内の対応する状態に合致しない状態を有する第２の乱数内のどの反復不可能なビットも訂正される。訂正された乱数２０７は第２の乱数から生成されることになる。これは、プログラミング方法３００の間に生成された第１の乱数と同じ数のはずである。ステップ３２３において、第２の乱数が方法３００において生成された第１の乱数と同じであることが判定された場合は、訂正は行われる必要がない。この場合はステップ３２４及び３２５は省略されてよい。
【００３３】
本発明の技法の少なくとも一部分は１つ以上の集積回路において実施されることが可能である。集積回路を形成する場合、ダイは、通常、半導体ウェハの表面上に反復パターンで製作される。各ダイは本明細書に記載のデバイスを含み、他の構造体又は回路を含んでよい。個々のダイはウェハから切断又はダイシングされ、次いで、集積回路としてパッケージングされる。図４は、本発明の一実施形態による少なくとも１つの安全な乱数生成器を備える例示的パッケージＩＣ４００を示す部分的断面図である。パッケージＩＣ４００は、リードフレーム４０２、リードフレームに取り付けられた本発明の一実施形態による安全な乱数生成器を含むダイ４０４、及びプラスチックカプセル化モールド６０８を備える。当業者は、集積回路を製造するために、どのようにウェハをダイシングし、ダイをパッケージングするかを知っているはずである。そのように製造された集積回路は本発明の一部とみなされる。
【００３４】
本発明による集積回路は、セキュリティコードを利用するいかなるアプリケーション及び／又は電子システムにおいてでも利用されることが可能である。本発明を実施するのに適したシステムは、パーソナルコンピュータ、通信ネットワーク、電子商取引システム、ポータブル通信デバイス（例えば携帯電話）、ソリッドステートメディアストレージデバイスなどを含んでよいが、それらに限定されない。そのような集積回路を組み込んだシステムは本発明の一部とみなされる。本明細書で提供された本発明の教示を与えられれば、当業者は本発明の技法の他の実施形態及び利用形態を企図することができるはずである。
【００３５】
本明細書では本発明の例示的諸実施形態が添付の図面を参照しながら説明されてきたが、本発明はそれらの厳密な実施形態に限定されず、それらの実施形態において添付の特許請求の範囲の範囲から逸脱するこなく様々な他の変更及び修正が当業者によって行わることが可能であることが理解されるべきである。
【図１】
2011521376.tif 000003
【図２】
2011521376.tif 000004
【図３Ａ】
2011521376.tif 000005
【図３Ｂ】
2011521376.tif 000006
【図４】
2011521376.tif 000007
【手続補正書】
【提出日】平成23年3月9日(2011.3.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
乱数生成器回路であって、
複数の記憶素子を含む第１のメモリであって、前記記憶素子のそれぞれは前記第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有し、前記記憶素子の前記それぞれの初期状態を示す複数のビットを備える第１の信号を生成するように機能する第１のメモリ、及び
前記第１のメモリに結合された誤り訂正回路であって、前記第１の信号を受信し、前記第１のメモリへの電力の連続印加時に反復可能でない前記第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するように機能し、前記第２の信号は前記第１のメモリへの電力の連続印加時に反復可能な乱数である誤り訂正回路
を備えた乱数生成器回路。
【請求項２】
請求項１記載の乱数生成器回路であって、前記誤り訂正回路に結合された第２のメモリをさらに備え、前記第２のメモリは前記第２の信号を生成する際に前記誤り訂正回路によって使用される誤り訂正コードビットを記憶するように機能する乱数生成器回路。
【請求項３】
請求項１記載の乱数生成器回路であって、前記複数の記憶素子の所与の１つの前記初期状態は、前記所与の記憶素子を形成する少なくとも１つのトランジスタに関連する１つ以上の特徴の変化の関数として判定される乱数生成器回路。
【請求項４】
請求項３記載の乱数生成器回路であって、前記１つ以上の特徴は、前記少なくとも１つのトランジスタのソース領域及びドレイン領域の中のドーピングレベル、前記トランジスタのチャネル領域の中のドーピングレベル、トランジスタのゲート酸化膜容量、トランジスタのゲート酸化膜の中のトラップされた電荷、前記トランジスタのチャネル領域の中のトラップされた電荷、並びにトランジスタの領域間の形状オフセット、トランジスタのチャネル長及びトランジスタのチャネル幅の少なくとも１つからなる乱数生成器回路。
【請求項５】
請求項１記載の少なくとも１つの乱数生成器回路を備える集積回路。
【請求項６】
安全な乱数を生成するための方法であって、
複数の記憶素子を備える第１のメモリの電源を入れるステップであって、前記記憶素子のそれぞれは電源が入れられた時にそれに対応する初期状態を有する、ステップ、
前記記憶素子の前記それぞれの初期状態を示す複数のビットを備える第１の信号を生成するステップ、及び
前記第１のメモリへの電力の連続印加時に反復可能でない前記第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するステップであって、前記第２の信号は前記第１のメモリへの電力の連続印加時に反復可能な乱数であり、前記安全な乱数が前記第２の信号を示す、ステップ
を備える方法。
【請求項７】
請求項６記載の方法であって、前記第２の信号を生成する際に使用される誤り訂正コードビットを第２のメモリに記憶するステップをさらに備える方法。
【請求項８】
請求項６記載の方法であって、
二度目に前記メモリの電源を入れるステップであって、前記メモリは第２の乱数を生成するステップ、
前記エラーコードメモリ内の前記誤り訂正コードを読み出すステップ、及び
前記誤り訂正コードを使用して前記第２の乱数を訂正するステップであって、前記訂正された第２の乱数が前記第１の乱数である、ステップ
をさらに備える方法。
【請求項９】
請求項６記載の方法であって、前記複数の記憶素子の所与の１つの前記初期状態は、前記所与の記憶素子を形成する少なくとも１つのトランジスタに関連する１つ以上の特徴の変化の関数として判定される方法。
【請求項１０】
電子システムであって、
少なくとも１つの乱数生成器回路を含む少なくとも１つの集積回路であって、前記少なくとも１つの乱数生成器回路は、
複数の記憶素子を含む第１のメモリであって、前記記憶素子のそれぞれは、前記第１のメモリに印加される電圧供給源によって電源が入れられた時にそれに対応する初期状態を有し、前記記憶素子の前記それぞれの初期状態を示す複数のビットを含む第１の信号を生成するように機能する第１のメモリ、及び
前記第１のメモリに結合された誤り訂正回路であって、前記誤り訂正回路は、前記第１の信号を受信し、前記第１のメモリへの電力の連続印加時に反復可能でない前記第１の信号内の少なくとも１つのビットを訂正し、それによって第２の信号を生成するように機能し、前記第２の信号は前記第１のメモリへの電力の連続印加時に反復可能な乱数である、誤り訂正回路
を備えた少なくとも１つの集積回路
を備えた電子システム。
【国際調査報告】
2011521376.tif 000008
2011521376.tif 000009