(57)【要約】【課題】攻撃者が乱数発生素子から乱数を容易に読み出せないようにすること。【解決手段】乱数発生部２は、書込み確率が１であって、乱数発生素子の抵抗値を第１の抵抗値にするスピン注入電流を乱数発生素子に供給する１回目の書込みを行い、乱数発生素子の抵抗値を読出す１回目の読出しを行う。次に、乱数発生部２は、乱数発生部２は、読出された抵抗値より、１回目の書込みによって乱数発生素子が第１の抵抗値とされたことを検出する。このとき、乱数発生部２は、書込み確率が１／２であって、第２の抵抗値にするスピン注入電流を乱数発生素子に供給する２回目の書込みを行うことによって、乱数発生素子に乱数を発生させる。そして、温度制御回路３９は、１回目の読出しによって読出された乱数発生素子の抵抗値より、環境温度を求める。そして、環境温度に追従してスピン注入電流の大きさを変化させて、乱数発生部２に２回目の書込みを行わせる。【選択図】図３
2011113136.tif 000002
【特許請求の範囲】
【請求項１】
スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が１／２となって乱数を発生する複数の乱数発生素子を有し、書込み確率が１であって、前記乱数発生素子の抵抗値を所定の閾値より高い第１の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する１回目の書込みを行い、前記乱数発生素子の抵抗値を読出す１回目の読出しを行い、読出された前記抵抗値より、前記１回目の書込みによって前記乱数発生素子が第１の抵抗値とされたことを検出した場合に、書込み確率が１／２であって、前記乱数発生素子の抵抗値を前記所定の閾値より低い第２の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する２回目の書込みを行うことによって、前記乱数発生素子に前記乱数を発生させる乱数発生部と、
前記１回目の読出しによって読出された前記乱数発生素子の抵抗値より、前記乱数発生素子が乱数を発生する環境における環境温度を求め、前記環境温度に追従して前記スピン注入電流の大きさを変化させて、前記乱数発生部に前記２回目の書込みを行わせる温度制御部と、を備える
乱数発生装置。
【請求項２】
前記乱数発生部は、前記乱数発生素子を構成する信号検出層と磁化固定層の角度から求められる磁場角度と、前記第１の抵抗値と前記第２の抵抗値の差分である抵抗差より求められる前記抵抗差の比に基づいて、前記乱数発生素子から読出した抵抗値が前記第１又は第２の抵抗値のいずれであるかを判別する
請求項１記載の乱数発生装置。
【請求項３】
前記乱数発生部は、不揮発メモリに予め記憶した前記乱数発生素子の反転確率が１／２となる前記スピン注入電流の値を用いて、前記乱数発生素子の反転確率を１／２付近にそろえる前記スピン注入電流を複数の前記乱数発生素子に供給する
請求項１又は２に記載の乱数発生装置。
【請求項４】
前記乱数発生部は、前記１回目の読出しによって、前記乱数発生素子にリセット不良が発生したことを検出した場合に、再度、前記１回目の書込みを行う
請求項１〜３のいずれか１項に記載の乱数発生装置。
【請求項５】
前記温度制御部は、前記環境温度が所定の温度範囲を超えている場合に、前記乱数発生部に対して乱数の発生を停止させる
請求項１〜３のいずれか１項に記載の乱数発生装置。
【請求項６】
さらに、データを記憶する複数の記憶素子を有するメモリを備え、
前記記憶素子及び前記乱数発生素子は、前記メモリの内部にランダムに配置される
請求項１〜５のいずれか１項に記載の乱数発生装置。
【請求項７】
スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が１／２となって乱数を発生する複数の乱数発生素子を有し、書込み確率が１であって、前記乱数発生素子の抵抗値を所定の閾値より高い第１の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する１回目の書込みを行い、前記乱数発生素子の抵抗値を読出す１回目の読出しを行い、読出された前記抵抗値より、前記１回目の書込みによって前記乱数発生素子が第１の抵抗値とされたことを検出した場合に、書込み確率が１／２であって、前記乱数発生素子の抵抗値を前記所定の閾値より低い第２の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する２回目の書込みを行うことによって、前記乱数発生素子に前記乱数を発生させるステップと、
前記１回目の読出しによって読出された前記乱数発生素子の抵抗値より、前記乱数発生素子が乱数を発生する環境における環境温度を求め、前記環境温度に追従して前記スピン注入電流の大きさを変化させて、前記乱数発生部に前記２回目の書込みを行わせるステップと、を含む
乱数発生方法。
【請求項８】
スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が１／２となって乱数を発生する複数の乱数発生素子を有し、書込み確率が１であって、前記乱数発生素子の抵抗値を所定の閾値より高い第１の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する１回目の書込みを行い、前記乱数発生素子の抵抗値を読出す１回目の読出しを行い、読出された前記抵抗値より、前記１回目の書込みによって前記乱数発生素子が第１の抵抗値とされたことを検出した場合に、書込み確率が１／２であって、前記乱数発生素子の抵抗値を前記所定の閾値より低い第２の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する２回目の書込みを行うことによって、前記乱数発生素子に前記乱数を発生させる乱数発生部と、
前記１回目の読出しによって読出された前記乱数発生素子の抵抗値より、前記乱数発生素子が乱数を発生する環境における環境温度を求め、前記環境温度に追従して前記スピン注入電流の大きさを変化させて、前記乱数発生部に前記２回目の書込みを行わせる温度制御部と、
前記乱数発生部が発生した前記乱数を擬似乱数として用い、この擬似乱数により、所定の暗号方式によってデータを暗号化する暗号処理部と、
前記暗号化されたデータを記憶する複数の記憶素子を有するメモリと、を備える
セキュリティチップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、スピン注入磁化反転素子にスピン注入電流を注入して、乱数を発生させ、この発生した乱数を攻撃者に読み取られにくくする場合に適用して好適な乱数発生装置、乱数発生方法及びセキュリティチップに関する。
【背景技術】
【０００２】
従来、各種の暗号方式を用いてデータを暗号化し、秘匿性を高めたセキュリティチップが提供されている。このセキュリティチップでは、耐タンパ性を高めることによって、攻撃者がチップ内に記憶した暗号鍵を読出せないようにすることが求められている。このため、暗号鍵に用いる乱数をセキュリティチップ内で発生させ、この乱数についても容易に読み出せないようにする技術として、スピン注入磁化反転が採用されるようになってきた。
【０００３】
特許文献１には、スピン注入電流（スピン偏極電流とも呼ぶ。）を磁性体に注入することで生じるスピン注入磁化反転現象（以下、「スピン注入現象」と略称する。）を用いた物理乱数発生装置について提案されている。この乱数発生装置は、非特許文献１に示されるように、スピン注入現象の発生確率が、注入電流により統計物理によって決定されることを利用している。スピン注入磁化反転を用いた乱数発生装置においては、この物理的特徴を生かして原理的に真正乱数を発生できる。
【０００４】
また、非特許文献２には、システムＬＳＩチップに対するセキュリティ要求事項について記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−３１０４０３号公報
【非特許文献１】J.Z.Sun、Phys.Rev.B,Vol.62,p.570,2000年
【非特許文献２】「システムLSIのセキュリティ評価」に関する評価研究報告書  経済産業省委託調査  http://www.meti.go.jp/policy/netsecurity/downloadfiles/lsi.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、非特許文献１に示されるように、その反転確率が１／２となるスピン注入電流は、環境温度や印加磁化にも依存する。このため、実際の使用環境下に合わせてスピン注入電流を設定する必要がある。
【０００７】
【数１】
2011113136.tif 000003
【０００８】
式（１）において、Ｉｃは反転確率が１／２となるスピン注入電流、Ｈは印加磁界、Ｍｓは記録磁性層の飽和磁化であり温度依存性を持つことを表す。
乱数発生装置にスピン注入現象を用いる場合、スピン注入磁化反転素子の反転確率（以下、「反転確率」と略称する。）が厳密に１／２となる動作点で駆動すれば真性乱数が得られる。また、反転確率が１／２からずれた場合でも、連続した２ビットからの演算で１ビットの真性乱数を得ることが出来ることは、特許文献１に記載されている。しかし、反転確率が１／２から大きく乖離してしまうと、真性乱数にきわめて近い乱数が発生できなくなるため、乱数発生速度が大幅に低下してしまう。
【０００９】
また、スピン注入現象を用いた乱数発生装置では消費電力を抑えるために、一般的に飽和磁化Ｍｓを小さくしてスピン注入電流を小さくする対策がとられている。しかし、飽和磁化Ｍｓが小さな材料は、往々にして飽和磁化Ｍｓの温度変化も大きくなりやすく、結果的にスピン注入電流の温度変化が大きくなってしまう傾向にある。このため、スピン注入電流が温度により大きく変化する場合には反転確率を１／２にすることが困難となる。
【００１０】
また、非特許文献２に示されるように、セキュリティチップが備える乱数発生装置が生じた乱数は暗号鍵の種となるため、簡単に読み出されてはならない。しかし、スピン注入現象を用いた乱数発生装置は、抵抗変化型のスピン注入磁化反転素子から求まる、“０”，“１”（例えば、素子が高抵抗である場合に“０”、低抵抗である場合に“１”とする。）を乱数として用いる。このため、乱数発生装置の消費電力を調べることにより鍵が盗まれてしまう可能性がある。また、消費電力から調べるよりも難しくはなるが、セキュリティチップ上に乱数発生装置がどこに配置されているかが分かれば、以下の方法により乱数が読出される可能性がある。例えば、チップに形成された上部パッシベーション層を除去し、物理的プロービングを行うことにより、攻撃者に乱数を読出す方法がありうる。
【００１１】
また、乱数発生装置が発生した乱数を攻撃者に読み出されないようにするため、非特許文献２に開示されるように、擬似信号を入れたり、複雑な構造にして乱数発生部がどこにあるか分からないようにしたりといった、様々な対策がとられている。しかし、これらの対策をとると、セキュリティチップに余分な構造が必要となるためにコストアップにつながってしまう。しかし、セキュリティ性を高めずに、攻撃者に暗号鍵を盗まれてしまえば、暗号化していたデータはたちまち解読されてしまうので、セキュリティチップとして用いることができない。
【００１２】
本発明はこのような状況に鑑みて成されたものであり、攻撃者が乱数発生素子の発生した乱数を容易に読み出せないようにすることを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、スピン注入電流が供給されると、スピン注入現象により反転確率が１／２となって乱数を発生する複数の乱数発生素子を有する乱数発生部が乱数発生素子に乱数を発生させるものである。
乱数発生部は、乱数発生素子毎に、乱数発生素子の抵抗値を所定の閾値より高い第１の抵抗値にする、書込み確率が１であるスピン注入電流を供給する１回目の書込みを行い、乱数発生素子から抵抗値を読出す１回目の読み出しを行う。
次に、読出された抵抗値より、１回目の書込みによって乱数発生素子が第１の抵抗値とされたことを検出し、乱数発生素子の抵抗値を所定の閾値より低い第２の抵抗値にする、書込み確率が１／２であるスピン注入電流を供給する２回目の書込みを行う。
これにより、乱数発生素子に乱数を発生させる。
このとき、１回目の読出しによって読出された乱数発生素子の抵抗値より、乱数発生素子が乱数を発生する環境における環境温度を求め、環境温度に追従する書込み確率が１／２となるスピン注入電流を用いて、２回目の書込みを行わせる。
【００１４】
このようにしたことで、環境温度に追従するスピン注入電流の大きさを変化させて、乱数発生素子に書込みを行い、乱数を発生させることができる。
【発明の効果】
【００１５】
本発明によれば、乱数発生素子をリセットする第１回目の書込みを行った後、データを読み出すことによって、乱数発生素子のリセットが正しく行われたかどうかを確認できる。また、リセットが行われたことを確認した後、書込み確率が１／２であるスピン注入電流を乱数発生素子に供給する場合に、環境温度に追従してスピン注入電流の大きさを変える。このため、環境温度に変化があっても、真性乱数にきわめて近い安定した乱数を得られるという効果がある。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態におけるセキュリティチップの内部構成例と、乱数発生素子と記憶素子の平面配置の例を示す構成図である。
【図２】本発明の一実施の形態における乱数発生素子として用いられるスピン注入磁化反転素子の一例として、ＴＭＲ素子を用いた場合における積層膜の断面模式図である。
【図３】本発明の一実施の形態におけるセキュリティチップにおける乱数発生部の内部構成例を示すブロック図である。
【図４】本発明の一実施の形態における乱数発生素子のアドレスを決定する処理の例を示すフローチャートである。
【図５】本発明の一実施の形態における、決定した乱数発生素子を用いて、乱数を発生する処理の例を示すフローチャートである。
【図６】本発明の一実施の形態における低抵抗又は高抵抗における、書込み又は読出しの際の温度と、室温比率の関係の例を示す説明図である。
【図７】本発明の一実施の形態におけるセキュリティチップにおける乱数発生シーケンスのタイミングの一例を示す説明図である。
【図８】本発明の一実施の形態におけるスピン注入による８ビット乱数発生の際の消費電流の測定結果と、従来の１ビット乱数発生の際の消費電流の測定結果の例を示す説明図である。
【図９】本発明の他の実施の形態における磁場角度と抵抗差比の関係例を示す説明図である。
【発明を実施するための形態】
【００１７】
以下、発明を実施するための最良の形態（以下実施の形態とする。）について説明する。なお、説明は以下の順序で行う。
１．一実施の形態（書込み制御：温度変化によりスピン注入電流を変化させる例）
２．変形例
【００１８】
＜１．一実施の形態＞
［温度変化によりスピン注入電流を変化させる例］
【００１９】
以下、本発明の一実施形態について、図１〜図８を参照して説明する。本実施の形態では、スピン注入電流が注入されて乱数を発生し、この乱数を記憶するセキュリティチップ１に適用した例について説明する。
【００２０】
図１は、セキュリティチップ１の内部構成例と、乱数発生素子２ａ，２ｂと記憶素子３ａの平面配置の例を示す。
【００２１】
図１Ａは、セキュリティチップ１の内部構成例を示す。
セキュリティチップ１は、乱数を発生する乱数発生部２と、発生した乱数と暗号化したデータを記憶する不揮発性のメモリ３と、発生した乱数を用いてデータの暗号化処理等を行う暗号処理部４を備える。乱数発生部２は、暗号処理部４と分けて、単独の乱数発生装置として用いられる場合もある。
【００２２】
乱数発生部２が発生した乱数は、擬似乱数の種としてメモリ３に記憶される。暗号処理部４は、この乱数をメモリ３から読出して擬似乱数として用い、増幅して物理乱数を生成する。そして、暗号処理部４は、この物理乱数を所定の暗号方式（ＲＳＡ等）によってデータを暗号化し、メモリ３に暗号化されたデータを書き込む。
【００２３】
図１Ｂは、乱数発生素子２ａ，２ｂと記憶素子３ａの平面配置の例を示す。
乱数発生部２は、スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が１／２となって乱数を発生する複数の乱数発生素子２ａ，２ｂを備え、メモリ３は、データを記憶する複数の記憶素子３ａを備える。乱数発生素子２ａ，２ｂと記憶素子３ａには、スピン注入電流が注入されると磁化反転するスピン注入磁化反転素子が用いられる。このスピン注入磁化反転素子には、例えば、巨大磁気抵抗効果材料（ＧＭＲ素子）もしくはトンネル磁気抵抗効果素子（ＴＭＲ素子）などの、スピン注入電流が供給されると磁化反転し、抵抗値が変わる磁気抵抗効果素子が用いられる。乱数発生素子２ａ，２ｂと、記憶素子３ａの膜構成例については図２に後述する。
【００２４】
乱数発生素子２ａ，２ｂの形状は、短軸８０ｎｍ、長軸１４０ｎｍの楕円形である。一方、記憶素子３ａの形状は、短軸８０ｎｍ、長軸１６０ｎｍの楕円形である。そして、メモリ３の内部に、記憶素子３ａ及び乱数発生素子２ａ，２ｂがランダムに配置されており、各素子の配置間隔は、約２００ｎｍとしてある。
【００２５】
乱数発生素子２ａ，２ｂの楕円形状におけるアスペクト比は、記憶素子３ａの楕円形状におけるアスペクト比よりも低い。一般に、スピン注入磁化反転素子のアスペクト比が高いと、情報の保持特性が高くなるが、データを素子に記憶させるために大きな電流を必要とする。しかし、乱数発生素子２ａ，２ｂの楕円形状におけるアスペクト比を低くすることで、電流が小さくても容易にデータの書き換えることができ、合わせて乱数を発生させやすくする。
【００２６】
上述したとおり、乱数発生素子２ａの場所を特定されると乱数発生素子２ａを意図的に誤動作させたり、キャップ層（後述する図２参照）を除去して直接配線に針を当てたりすることにより、発生した乱数を盗まれる可能性がある。このため、極力、乱数発生素子２ａがセキュリティチップ１内のどこにあるかを攻撃者に知られないようにする。本例のメモリ３は、数ｋビット〜数百Ｍビットの情報を記憶可能な複数の記憶素子３ａで構成されており、その中から数ビット分の情報しか記憶しない乱数発生素子２ａ，２ｂを見つけ出すのは不可能に近い。また、乱数発生素子２ａ，２ｂと記憶素子３ａの素子サイズを同一にすることも可能であるため、配線により、乱数発生素子２ａと記憶素子３ａを見分ける以外に乱数発生素子２ａを見つけることは不可能であると考えられる。このため、本例のセキュリティチップ１のように乱数発生部２とメモリ３を構成することは、セキュリティを高める点で非常に有効である。
【００２７】
図２は、乱数発生素子２ａ，２ｂ、記憶素子３ａとして用いられるスピン注入磁化反転素子の一例として、ＴＭＲ素子を用いた場合における積層膜の断面模式図を示す。
【００２８】
ＴＭＲ素子の積層膜は、下地層/反強磁性体層/磁化固定層/トンネルバリア層/信号検出層/キャップ層により構成されている。本例の乱数発生素子２ａ，２ｂ、記憶素子３ａは、基板１０上に、下地層１１から順に、反強磁性層１２、磁化固定層１３、トンネルバリア層１７、記録層１８、キャップ層１９を真空装置内で連続的に形成して作成したものである。
【００２９】
本例では、磁化固定層１３を上下の磁性層が反強磁性的に結合した磁性層１４，１６とその間に挟まれる導体層１５で構成しているが、単層の強磁性体も使用可能である。また、磁化固定層を形成する磁性層１４，１６には、Ｆｅ、Ｎｉ、Ｃｏの１種もしくは２種以上からなる合金材料を用いることができる。更にこれらの磁性層の合金に、ＮｂやＺｒなどの遷移金属元素、ＢやＣなどの軽元素、Ｇｄ、Ｔｂ、Ｙなどの希土類元素、ホイスラ合金としてＭｎ、Ａｌ、Ｃｒなどを含有させることもでき、さらにはこれらの酸化物や窒化物も使用することができる。
【００３０】
磁化固定層１３に用いる導体層１５の材料としては、Ｒｕ、Ｃｕ、Ｒｈ、Ｃｒなどの磁性層間に反強磁性層間結合を生じる材料が使用できる。トンネルバリア層１７の材料としては、Ａｌ２Ｏ３、ＭｇＯ、ＨｆＯ、ＳｉＯ、ＳｉＯ２、ＳｉＮなどの材料や、これらの混合物を用いることができる。反強磁性体層の材料としては、ＰｔＭｎ、ＲｈＭｎ、ＲｕＭｎ、ＦｅＭｎ，ＩｒＭｎなどのＭｎ化合物などが使用できる。
【００３１】
記録層１８の強磁性体の材料としては、磁化固定層を形成する磁性層１４と同種のものが使用でき、例えば、Ｆｅ、Ｎｉ、Ｃｏの１種もしくは２種以上からなる合金材料、および、これらの磁性合金に上記の添加物を含む合金などが使用できる。下地層１１とキャップ層１９の材料には特に制限がないが、一般的には、Ｔａ、Ｃｒ、Ｔｉ、Ｗ、Ａｌ、Ｃｕ、ＴｉＮ、ＣｕＮなどの金属や金属窒化物などが使用できる。
【００３２】
図３は、乱数発生部２の内部構成例を示す。
図３において、それぞれの乱数発生素子２ａ，２ｂに対して構成される乱数を発生する周辺回路を、便宜的に乱数発生回路３０ａ，３０ｂとして取り扱って説明を行う。乱数発生回路３０ａ，３０ｂは、それぞれ乱数発生素子２ａ，２ｂと、乱数発生素子２ａ，２ｂに電圧を加え、スピン注入電流を供給するドライブトランジスタ３１，３２を備える。また、乱数発生回路３０ａ，３０ｂは、それぞれ乱数発生素子２ａ，２ｂから読出された乱数を増幅してメモリ３に出力するセンスアンプ回路３３，３４と、を備える。センスアンプ回路３３，３４は、情報（例えば、乱数）の読出しに用いられる。
【００３３】
また、乱数発生回路３０ａ，３０ｂは、ドライブトランジスタ３１，３２の動作を制御する書込み／読出し制御回路３６，３７と、センスアンプ回路３３，３４に対して、リファレンス電圧を供給するリファレンス電圧発生回路３８と、を備える。本例において、乱数発生回路３０ａ，３０ｂは、それぞれ乱数発生素子、ドライブトランジスタ、リファレンス電圧発生回路、及びセンスアンプ回路が一単位として構成される。
【００３４】
また、乱数発生部２は、ドライブトランジスタ３１，３２が乱数発生素子２ａ，２ｂに加えた、書込み又は読出しにおける電圧とスピン注入電流の値を記憶する不揮発性のメモリ４０を備える。また、乱数発生部２は、外部環境の温度によって乱数発生素子２ａ，２ｂに書き込むための適切な電圧とスピン注入電流の値をメモリ４０に記憶させる温度制御回路３９とを備える。温度制御回路３９は、外部環境の温度に追従してスピン注入電流の大きさを変化させる温度制御部としても用いられる。また、乱数発生素子２ａ，２ｂのアドレスを制御し、そのアドレスをメモリ４０に書き込む乱数発生部アドレス制御回路４１と、を備える。
【００３５】
乱数発生回路３０ａ，３０ｂは、書込み確率が１であって、乱数発生素子２ａ，２ｂの抵抗値を所定の閾値より高い第１の抵抗値にするスピン注入電流を乱数発生素子２ａ，２ｂに供給する１回目の書込みの後、乱数発生素子２ａ，２ｂの抵抗値を読出す１回目の読出しを行う。次に、乱数発生回路３０ａ，３０ｂは、読出された抵抗値より、１回目の書込みによって乱数発生素子２ａ，２ｂが第１の抵抗値（高抵抗側抵抗）とされたことを検出した場合に、以下の動作を行う。すなわち、書込み確率が１／２であって、乱数発生素子２ａ，２ｂの抵抗値を所定の閾値より低い第２の抵抗値にするスピン注入電流を乱数発生素子２ａ，２ｂに供給する２回目の書込みを行うことによって、乱数発生素子２ａ，２ｂに乱数を発生させる。
【００３６】
乱数発生素子２ａ，２ｂの膜構成は、以下のとおりである。すなわち、Ta(3nm) / Cu(50nm) / PtMn(20nm) / CoFe(2nm) / Ru(0.8nm) / CoFeB(4nm) / Mg(0.9nm) / CoFeB(2nm) / Ta(5nm)としてある。また、乱数発生素子２ａ，２ｂは、共に短軸８０ｎｍ、長軸１４０ｎｍの楕円形素子であり、記憶素子３ａの素子サイズである短軸８０ｎｍ、長軸１６０ｎｍより若干小さく形成される。そして、乱数発生素子２ａと記憶素子３ａの長軸は互いに平行となるように配置してある（図１参照）。
【００３７】
そして、乱数発生素子２ａには、ドライブトランジスタ３１と、センスアンプ回路３３が接続され、乱数発生素子２ｂには、ドライブトランジスタ３２と、センスアンプ回路３４が接続される。そして、２つのセンスアンプ回路３３，３４の出力（乱数）が同時にメモリ３に出力される。このように乱数発生素子２ａ，２ｂ毎に独立したドライブトランジスタ３１，３２と、書込み／読出し制御回路３６，３７を用いて、書込み／読出しを行うため、乱数発生素子２ａ，２ｂ毎に異なる値の電圧とスピン注入電流を加えることができる。
【００３８】
ドライブトランジスタ３１は、書込み／読出し制御回路３６によって、乱数発生素子２ａに対する書込みと読出しの動作が制御される。ドライブトランジスタ３２は、書込み／読出し制御回路３７によって、乱数発生素子２ｂに対する書込みと読出しの動作が制御される。書込み／読出し制御回路３６，３７は、乱数発生素子２ａ，２ｂの書込み確率がおおよそ１／２になるような電圧を乱数発生素子２ａ，２ｂに印加するために、以下の書き込み試験を行う。
【００３９】
乱数発生素子２ａ，２ｂを作成した後、書込み回数を１０３〜１０８回程度としてリセット−書込み−読出しの試験を繰り返し行う。この試験の後、乱数発生素子２ａ，２ｂへの書込み電圧をメモリ４０に保存する。このため、メモリ４０には、予め乱数発生素子２ａの反転確率が１／２となるスピン注入電流の値が記憶される。書込み／読出し制御回路３６，３７は、実際に、乱数発生素子２ａ，２ｂが乱数を発生させる際に、初期状態でメモリ４０に保存してある各素子に対する書込み電圧の情報と共に、乱数発生素子２ａの反転確率を１／２付近にそろえるスピン注入電流の値を読み出す。次に、その情報を使ってドライブトランジスタ３１，３２への印加電圧を調整し、スピン注入磁化反転素子２０、２１の書込み確率がおおよそ１／２になるような電圧でスピン注入電流を複数の乱数発生素子２ａ，２ｂに供給して、書込みを行う。これにより、乱数発生素子２ａ，２ｂに乱数を発生させることが可能となる。
【００４０】
また、書込み／読出し制御回路３６，３７がドライブトランジスタ３１，３２を制御して、乱数発生素子２ａ，２ｂから読出した電圧値はセンスアンプ回路３３，３４に供給される。ここで、リファレンス電圧発生回路３８は、例えば、乱数発生素子２ａ，２ｂが低抵抗側抵抗である場合に、この低抵抗側抵抗の値から得られる電圧値を１．２倍掛けた電圧値をリファレンス電圧として、センスアンプ回路３３，３４に供給する。これにより、リファレンス電圧を閾値として、乱数発生素子２ａ，２ｂが高抵抗又は低抵抗のいずれかの状態であることを判断することが可能となる。
【００４１】
ここで、メモリ４０に保存しておく、乱数発生素子２ａ，２ｂに対する書込み電圧の情報は、実際に乱数発生素子２ａ，２ｂに印加した電圧の情報でもよいし、段階的に印加した電圧の情報でもよい。また、センスアンプ回路３３，３４と書込み／読出し制御回路３６，３７の一部は、乱数発生部２とメモリ３で同一のものを使用する。
【００４２】
温度制御回路３９は、書込み／読出し制御回路３６，３７がメモリ４０に記憶させた、乱数発生素子２ａ，２ｂへの書込み／読出し電圧から求まるスピン注入電流の値を読み出して、外部環境の温度を求める（後述する図６参照）。そして、温度制御回路３９は、外部環境の温度によって、乱数発生素子２ａ，２ｂに対して書込み確率を１／２とするために最適なスピン注入電流の値と電圧値を求め、これらの値をメモリ４０に記憶させる。具体的には、１回目の読出しによって読出された乱数発生素子２ａの抵抗値より、乱数発生素子２ａが乱数を発生する環境における環境温度を求め、環境温度に追従してスピン注入電流の大きさを変化させて、乱数発生回路３０ａ，３０ｂに２回目の書込みを行わせる。このため、乱数発生回路３０ａ，３０ｂに含まれる書込み／読出し制御回路３６，３７は、メモリ４０から読出した電流、電圧値に基づいて、乱数発生素子２ａ，２ｂにデータを書き込む。
【００４３】
ここで、乱数発生素子２ａ，２ｂには、少なくとも記録層および磁化固定層の２層の磁性体層を有し、それらの磁性層の間に絶縁層もしくは非磁性導体層が配置されている（図２参照）。そして、乱数発生素子２ａ，２ｂと記憶素子３ａに対し、おおむね垂直に電流を流すことにより、記録層に対して磁化の反転、すなわち情報の書き込みを行う。磁化反転の確率は、スピン注入磁化反転素子に流すスピン注入電流の大きさに依存する。例えば、乱数発生部２が乱数発生素子２ａ，２ｂに乱数を発生させる際、書込み／読出し制御回路３６，３７は、リセット−書込み−読出しの動作を繰り返し行うが、リセット時には磁化反転の確率が１になる電流を調整して用いる。一方、情報の書込み時には磁化反転の確率がおおむね１／２になる電流を調整して用いる。
【００４４】
また、書込み／読出し制御回路３６，３７は、スピン注入磁化反転素子が保持する情報を読み出す際には、巨大磁気抵抗効果もしくはトンネル磁気抵抗効果により、乱数発生素子２ａ，２ｂの抵抗が記録層と磁化固定層の磁化の角度に依存することを利用する。そして、書き込み電流より十分小さな電流を流すことによって、その抵抗を検出し、基準となる抵抗値を閾値にして判別を行う。ここで、閾値より高い第１の抵抗値を高抵抗側抵抗、閾値より低い第２の抵抗値を低抵抗側抵抗と呼ぶ。この閾値は上述したとおり、リファレンス電圧発生回路３８が供給するリファレンス電圧によって定まる。
【００４５】
そして、書込み／読出し制御回路３６，３７は、乱数発生素子２ａ，２ｂに乱数を発生させる際に、１回目の書込み（リセット）−２回目の書込み−読出しのように、書き込みと読出しの組み合わせからなる制御を繰り返し行う。そして、乱数発生部２は、１回目の書込み時には磁化反転の確率が１になる電流を、２回目の書込み時には磁化反転の確率がおおむね１／２になる電流を流し、最後の読出しにより乱数出力を得る。
【００４６】
図４は、メモリ３内に点在する乱数発生素子２ａのアドレスを決定する処理の例を示す。ただし、以下の説明において、乱数発生素子２ａと同様の処理を行う乱数発生素子２ｂについては、詳細な説明を省略する。
【００４７】
始めに、乱数発生部アドレス制御回路４１が予め定めた、基準となるアドレスに配置されている乱数発生素子２ａを使って、書込み／読出し制御回路３６が乱数を発生させる（ステップＳ１）。
【００４８】
次に、乱数発生部アドレス制御回路４１は、発生させた乱数を使って、乱数発生部２における乱数発生素子２ａのアドレスを決定する（ステップＳ２）。これにより、攻撃者は、メモリ３の内部に配置されたどの乱数発生素子が、乱数を発生させるために用いられているかを容易に知ることができなくなるため、乱数発生におけるセキュリティチップ１のセキュリティ性を高めることができる。
【００４９】
次に、乱数発生部アドレス制御回路４１は、決定したアドレスに配置されている乱数発生素子２ａがショートやオープンしていない正常な素子であるか否かをチェックする（ステップＳ３）。決定した乱数発生素子２ａがショートやオープンしている異常素子である場合、ステップＳ１に処理を戻して、乱数発生部アドレス制御回路４１は、再度、乱数発生素子２ａのアドレスを決定する処理を繰り返す。
【００５０】
一方、決定した乱数発生素子２ａが正常な素子である場合、書込み／読出し制御回路３６は、乱数発生素子２ａのアドレス（複数ある場合には、複数のアドレス）をメモリ４０に保存する（ステップＳ４）。そして、書込み／読出し制御回路３６は、メモリ４０から乱数発生素子２ａのアドレスを読出して、乱数発生部２における乱数発生素子２ａにアクセスし、乱数を発生させる処理を行う（ステップＳ５）。
【００５１】
図５は、決定した乱数発生素子２ａを用いて、乱数を発生する処理について説明する。
【００５２】
始めに、書込み／読出し制御回路３６は、書き込み確率が１であって、乱数発生素子２ａの抵抗値を所定の閾値より高い第１の抵抗値（高抵抗側抵抗）にするスピン注入電流を乱数発生素子２ａに供給する１回目の書込みによりリセットを行う（ステップＳ１１）。
【００５３】
次に、書込み／読出し制御回路３６は、乱数発生素子２ａの抵抗値を読出す１回目の読み出しを行い、センスアンプ回路３３により、乱数発生素子２ａからデータを出力させる（ステップＳ１２）。センスアンプ回路３３が出力したデータは、温度制御回路３９に送られる。
【００５４】
次に、温度制御回路３９は、乱数を発生するために適した動作温度の範囲内に現在の環境温度が入っているか否かを判断する（ステップＳ１３）。具体的には、温度制御回路３９は、１回目の読出しによって読出された乱数発生素子２ａの抵抗値より、乱数発生素子２ａが乱数を発生する環境における環境温度を求める。そして、環境温度に追従してスピン注入電流の大きさを変化させて、乱数発生部３０ａに２回目の書込みを行わせる。環境温度が動作温度の範囲を超えている場合に、温度制御回路３９は、乱数発生回路３０ａに対して、乱数を発生させるための動作を停止させ、処理を終了する（ステップＳ１８）。
【００５５】
一方、環境温度が動作温度の範囲内であれば、書込み／読出し制御回路３６は、以下の処理を行う。すなわち、書込み／読出し制御回路３６は、乱数発生素子２ａから読出された抵抗値より、１回目の書込みによって乱数発生素子２ａが第１の抵抗値とされたことを検出した場合に、リセットが正確に行えたことを判断する（ステップＳ１４）。リセットが不正確である場合、ステップＳ１１に処理を移し、書込み／読出し制御回路３６は、リセット動作（１回目の書込み）を繰り返す。
【００５６】
一方、リセットが正確である場合、温度制御回路３９は、読出し信号強度から外部環境の影響を調べて、書込み確率が１/２になる電流を調整し（ステップＳ１５）、この電流の値をメモリ４０に保存する。
【００５７】
次に、書込み／読出し制御回路３６は、書込み確率が１／２であって、乱数発生素子２ａの抵抗値を所定の閾値より低い第２の抵抗値（低抵抗側抵抗）にするスピン注入電流を乱数発生素子２ａに供給する２回目の書込みを行う（ステップＳ１６）。
【００５８】
次に、書込み／読出し制御回路３６は、データの読み出しを行い、センスアンプ回路３３により、乱数発生素子２ａからデータを出力させる（ステップＳ１７）。そして、暗号処理部４は、読出したデータを乱数として用い（ステップＳ１９）、データの暗号化処理等を行う。
【００５９】
通常は、１回目の書込み（ステップＳ１１）−２回目の書込み（ステップＳ１６）−読出し（ステップＳ１７）を繰り返し行うことにより乱数を発生させる。しかし、本例の書込み／読出し制御回路３６は、１回目の書込みと２回目の書込みの間に、乱数発生素子２ａが高抵抗になったことを確認する読出しを行う。したがって、読出し回数は２回となり、通常の乱数発生シーケンスにおける読出し回数より多くなる。このため、乱数発生速度は若干落ちるが、乱数発生の正確性や動作可能温度範囲を大幅に広げることができる。
【００６０】
実際に乱数をより正確に発生させるためには、１回目の書き込み（リセット）が必ず成功する必要がある。このため、書込み／読出し制御回路３６は、１回目の読出しによって、乱数発生素子２ａの高抵抗側に書き込みができたことを、スピン注入磁化反転素子の抵抗を読み出して確認する。そして、書き込みが成功しておらず、乱数発生素子２ａにリセット不良が発生したことを検出した場合には、再度１回目の書込みを行うことによって、必ず書込み確率を１として、乱数発生素子２ａを高抵抗側にセットできる。これにより、リセット不良による乱数性の低下を完全に防ぐことができ、乱数発生素子２ａに乱数性のよい乱数を発生させることが可能となる。
【００６１】
図６は、乱数発生素子２ａ，２ｂが低抵抗又は高抵抗である状態における、書込み又は読出しの際の温度と、室温比率の関係の例を示す。
【００６２】
図５におけるステップＳ１３において、動作可能な温度範囲にいるかどうかを調べるために、抵抗と書込み確率が１／２になる電流が温度に対して線形に変化する関係（Ｔ＝α（Ｒ―Ｒ０））を用いる。この関係より、温度制御回路３９は、室温の抵抗Ｒ０に対してどのくらい抵抗Ｒが変化したかを調べて、環境温度Ｔを知ることができる。このため、ステップ１８に示したように、温度保証範囲の外に環境温度がある場合にはセキュリティチップ１の動作を停止させることができる。
【００６３】
また、２回目の書込みを行う電流の大きさを、温度変化（Ｔ＝β（Ｉ−Ｉ０））に追従して変化させるため、温度制御回路３９が高抵抗側抵抗の温度変化から環境温度Ｔを調べ、メモリ４０に保存する。これにより、書込み／読出し制御回路３６は、メモリ４０から読み取った電流の大きさに基づいて、２回目の書込みの電流（Ｉ０＋α／β（Ｒ−Ｒ０））を変更することができる。このため、セキュリティチップ１は、セキュリティチップ１が予め定める温度保証範囲内で正確に発生した乱数を用いて、データを暗号化することができる。
【００６４】
ここで注意しなければならないのは、書込み／読出し制御回路３６が乱数発生素子２ａからデータを読出す際に、低抵抗側の抵抗は温度変化がほとんどないという点である。したがって、乱数発生を行う際には、必ず高抵抗側抵抗に書き込んだ後、読出しを行わなければ、抵抗の温度変化から環境温度を測定することはできない。さらに、１回目の書込みの時に乱数発生素子２ａの高抵抗側に書き込むということは、必然的に２回目の書き込みでは乱数発生素子２ａの低抵抗側へ書込みを行うことに注意されたい。
【００６５】
図７は、セキュリティチップ１における乱数発生シーケンスのタイミングの一例を示す。
図中において、プラス側が乱数発生素子２ａの高抵抗側への書込み方向の電流、マイナス側が乱数発生素子２ａ低抵抗側への書込み方向の電流を表している。前述したとおり、１回目の書込み（リセット）時には次の読出しでおおよその環境温度を判別するため、スピン注入磁化反転素子を高抵抗側にするようにセットする。このため、書込み／読出し制御回路３６は、シーケンスの開始後、つまり５ｎｓの後２５ｎｓのパルス幅でプラス側に電流を流す。
【００６６】
書込み後は、５ｎｓ経過してから、書込み／読出し制御回路３６は、誤って書込まないように３０ｎｓのパルス幅でプラス方向に電流を流して読出しを行ってセンスアンプ回路３３にデータを出力する。そして、温度制御回路３９は、環境温度がセキュリティチップ１の動作温度範囲に収まっていることと、読出した乱数発生素子２ａが高抵抗に判別されたことをチェックする。
【００６７】
チェックに通ったら、書込み／読出し制御回路３６は、２５ｎｓのパルス幅でマイナス方向に書込み確率を１／２とするスピン注入電流を流す。スピン注入電流を流した５ｎｓ後に、３０ｎｓのパルス幅でプラス方向に電流を流し読出しを行い乱数として出力する。この乱数発生シーケンスの際に注意しなければならないのは、各動作の間隔である。保持特性の悪いスピン注入磁化反転素子（ＭＴＪ：Magnetic Tunnel Junction）を用いた場合には、各動作の間隔が空くと前の動作を保証できなくなってくる。
【００６８】
例えば、１回目の読出し後に長い間隔を空けると、せっかく環境温度が動作保証温度内に入っていることも、リセットしたことも確認できたにもかかわらず、書込みするまでの間に低抵抗に反転してしまっているかもしれない。あるいは、２回目の書込み後の間隔を空けた場合にも、本当に確率を１／２として書き込んだ後のデータなのか保証できなくなる。したがって、各動作の間隔はできるだけ短いほうがよく、本例においては、各動作の間隔を１０ｎｓ以下となるように制御している。
【００６９】
図８は、スピン注入による乱数発生の際の消費電流の測定結果の例を示す。
【００７０】
ここでは、並列配置した乱数発生素子２ａ，２ｂを４個（８ビット）用いて、８ビット乱数を発生させた場合の消費電流と、特許文献１に示したような１ビット乱数を発生させた場合の消費電流の測定結果を比較して示す。ただし、リセット時と書込み時の消費電流は削除しており、乱数発生素子２ａ，２ｂが乱数を発生させる読出し時の消費電流のみをグラフにプロットしている。
【００７１】
特許文献１に示した１ビット乱数を発生させる時の消費電流は、消費電流が大きい場合と小さい場合で、例えば、５０μＡ程度異なる。このため、消費電流を計測することで、乱数発生素子が“０”か“１”のいずれかの乱数を発生したか簡単に読み取ることができる。しかし、８ビット乱数を発生させた場合には、おおよそ８ビットの半分の４ビットが“１”になり、残りの４ビットが“０”になると考えられる。このため、全体の消費電流は、１００μＡ程度の範囲内で異なるものの、具体的にどの乱数発生素子が“０”か“１”のいずれかの乱数を発生させ、消費電流の増減に寄与したかを容易に推測することはできない。
【００７２】
例えば、消費電流の違いにより“０”のビット数が確定されたとしても８ビットのうち、どのビットが“０”であるかを特定するには、８Ｃｎ（ｎは、０ビットの数）通りの組み合わせから推測しなければならない。また、連続して発生する乱数を特定するには｛８Ｃｎ｝ｍ（ｍは乱数の連続発生回数）通りの組み合わせから推測する必要がでてくる。さらに、並列に動作させるビット数を多くするほど組み合わせは多くなるので発生した乱数を特定される危険性が極端に少なくなり、乱数の発生速度も早くなる。
【００７３】
以上説明した本実施の形態例に係るセキュリティチップ１は、スピン注入現象を用いて乱数を発生させる乱数発生部２とメモリ３で構成される。そして、記憶素子３ａの間に極めて近くに並列した複数の乱数発生素子２ａ，２ｂを配置し、乱数発生素子２ａ，２ｂを用いて乱数を発生させる。乱数発生素子２ａ，２ｂと記憶素子３ａとの間隔は、例えば、２００ｎｍと微細であり、乱数発生素子２ａ，２ｂは、メモリ３の内部にランダムに配置される。このため、プローブを接触させ、この素子が乱数発生素子として用いられているかを探すのは極めて困難である。このように、暗号化の鍵として使われる乱数を消費電力からの解析や物理的プロービングから守ることができ、非常にセキュリティ性と耐タンパ性を高くしたセキュリティチップ１を提供することができる。
【００７４】
また、１回目の書込み（リセット）を行う際は、書込み確率が１となるスピン注入電流を乱数発生素子２ａ，２ｂに書き込むことで、乱数発生素子２ａ，２ｂを高抵抗とする。そして、２回目の書込み（乱数書込み）を行う前に、乱数発生素子２ａ，２ｂから読出した抵抗値が高抵抗であることを確認する。このため、確実に乱数発生素子２ａ，２ｂがリセットされたことを確認した後、２回目の書込みを行うことができるため、乱数発生素子２ａ，２ｂが発生する乱数の乱数性が高まるという効果がある。
【００７５】
また、乱数発生部２は、乱数発生素子を複数備え、並列して複数ビットの乱数を発生することができる。このとき、乱数発生素子の反転確率は１／２であるため、消費電流は、乱数を発生させる動作毎にほとんど変動しなくなる。このため、攻撃者は、セキュリティチップ１の消費電力を調べても、どの乱数発生素子がどの乱数を発生したかを知ることが極めて困難となる。また、複数の乱数発生素子を用いて乱数を発生させるため、１個ずつの乱数発生に要する時間は読出し時間を考慮するとわずかに長くなるが、結果として得られる複数個の乱数発生に要する時間は従来の乱数発生装置より短くなる。このため、従来に比べて乱数発生を高速化することができるという効果がある。
【００７６】
また、１回目の書込み（リセット）後に読出した乱数発生素子２ａの高抵抗側抵抗の温度変化より、温度制御回路３９は、乱数発生素子が乱数を発生する際における環境温度を求める。そして、温度制御回路３９は、環境温度に追従して調整したスピン注入電流の大きさをメモリ４０に保存し、書込み／読出し制御回路３６，３７は、メモリ４０から読出したスピン注入電流の大きさで２回目の書込みを行うことができる。このため、環境温度に追従させてスピン注入電流の大きさを変化させることができ、乱数発生素子２ａ，２ｂが発生する乱数を安定化することができる。
【００７７】
また、書込み／読出し制御回路３６，３７は、１回目の書込み（リセット）後に読出した乱数発生素子２ａ，２ｂの抵抗値より、リセット不良を検出すると、再度、乱数発生素子２ａ，２ｂに１回目の書込みを行う。このため、確実に乱数発生素子２ａ，２ｂをリセットすることができ、後続の乱数発生処理において生成した乱数の信頼性を高めることができる。
【００７８】
また、攻撃者がセキュリティチップ１の動作が保証される温度の範囲外で乱数発生を行おうとしても、温度制御回路３９が環境温度を求めているため、乱数の発生を停止することができる。これにより、環境温度を変えることで、乱数発生素子が発生する乱数を特定の値に偏らせるような攻撃に対して適切な防御を行うことができる。
【００７９】
＜２．変形例＞
なお、乱数発生素子２ａ，２ｂの磁場角度と抵抗差比を用いて、乱数発生素子２ａ，２ｂが高抵抗又は低抵抗のいずれの状態であることを検出することも可能である。
【００８０】
図９は、磁場角度と抵抗差比の関係例を示す。
磁場角度とは、信号検出層と磁化固定層の角度を表す。また、抵抗差とは、第１の抵抗値（高抵抗側抵抗）と第２の抵抗値（低抵抗側抵抗）の差分であり、抵抗差比は、高抵抗と低抵抗の差を１００％として設定した値を示す。
【００８１】
この図より、磁場角度が大きくなるにつれて、抵抗差比も大きくなることが示される。例えば、磁場角度が０度である場合、抵抗差比は０％であり、抵抗に変化はない（低抵抗）が、磁場角度が１８０度である場合、抵抗差比は１００％であり、抵抗が２倍に変化する（高抵抗）ことが分かる。
【００８２】
このように、書込み／読出し制御回路３６，３７は、磁場角度と、抵抗差の比に基づいて、乱数発生素子２ａから読出した抵抗値が第１又は第２の抵抗値（高抵抗側抵抗又は低抵抗側抵抗）のいずれであるかを判別する。このため、１回目の書込み（リセット）、１回目の読出し、２回目の書込み（乱数発生）における各動作の信頼性を高め、乱数性の高い乱数を発生させることができる。
【符号の説明】
【００８３】
１…セキュリティチップ、２…乱数発生部、２ａ，２ｂ…乱数発生素子、３…メモリ、３ａ…記憶素子、４…暗号処理部、１０…基板、１１…下地層、１２…反強磁性層、１３…磁化固定層、１４…磁性層、１５…導体層、１７…トンネルバリア層、１８…記録層、１９…キャップ層、２０…スピン注入磁化反転素子、３０ａ，３０ｂ…乱数発生回路、３１，３２…ドライブトランジスタ、３３，３４…センスアンプ回路、３６，３７…読出し制御回路、３８…リファレンス電圧発生回路、３９…温度制御回路、４０…メモリ、４１…乱数発生部アドレス制御回路
【図１】
2011113136.tif 000004
【図２】
2011113136.tif 000005
【図３】
2011113136.tif 000006
【図４】
2011113136.tif 000007
【図５】
2011113136.tif 000008
【図６】
2011113136.tif 000009
【図７】
2011113136.tif 000010
【図８】
2011113136.tif 000011
【図９】
2011113136.tif 000012