説明

乱数発生装置、乱数発生方法及びセキュリティチップ

【課題】攻撃者が乱数発生素子から乱数を容易に読み出せないようにすること。
【解決手段】乱数発生部2は、書込み確率が1であって、乱数発生素子の抵抗値を第1の抵抗値にするスピン注入電流を乱数発生素子に供給する1回目の書込みを行い、乱数発生素子の抵抗値を読出す1回目の読出しを行う。次に、乱数発生部2は、乱数発生部2は、読出された抵抗値より、1回目の書込みによって乱数発生素子が第1の抵抗値とされたことを検出する。このとき、乱数発生部2は、書込み確率が1/2であって、第2の抵抗値にするスピン注入電流を乱数発生素子に供給する2回目の書込みを行うことによって、乱数発生素子に乱数を発生させる。そして、温度制御回路39は、1回目の読出しによって読出された乱数発生素子の抵抗値より、環境温度を求める。そして、環境温度に追従してスピン注入電流の大きさを変化させて、乱数発生部2に2回目の書込みを行わせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、スピン注入磁化反転素子にスピン注入電流を注入して、乱数を発生させ、この発生した乱数を攻撃者に読み取られにくくする場合に適用して好適な乱数発生装置、乱数発生方法及びセキュリティチップに関する。
【背景技術】
【0002】
従来、各種の暗号方式を用いてデータを暗号化し、秘匿性を高めたセキュリティチップが提供されている。このセキュリティチップでは、耐タンパ性を高めることによって、攻撃者がチップ内に記憶した暗号鍵を読出せないようにすることが求められている。このため、暗号鍵に用いる乱数をセキュリティチップ内で発生させ、この乱数についても容易に読み出せないようにする技術として、スピン注入磁化反転が採用されるようになってきた。
【0003】
特許文献1には、スピン注入電流(スピン偏極電流とも呼ぶ。)を磁性体に注入することで生じるスピン注入磁化反転現象(以下、「スピン注入現象」と略称する。)を用いた物理乱数発生装置について提案されている。この乱数発生装置は、非特許文献1に示されるように、スピン注入現象の発生確率が、注入電流により統計物理によって決定されることを利用している。スピン注入磁化反転を用いた乱数発生装置においては、この物理的特徴を生かして原理的に真正乱数を発生できる。
【0004】
また、非特許文献2には、システムLSIチップに対するセキュリティ要求事項について記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−310403号公報
【非特許文献1】J.Z.Sun、Phys.Rev.B,Vol.62,p.570,2000年
【非特許文献2】「システムLSIのセキュリティ評価」に関する評価研究報告書 経済産業省委託調査 http://www.meti.go.jp/policy/netsecurity/downloadfiles/lsi.pdf
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、非特許文献1に示されるように、その反転確率が1/2となるスピン注入電流は、環境温度や印加磁化にも依存する。このため、実際の使用環境下に合わせてスピン注入電流を設定する必要がある。
【0007】
【数1】

【0008】
式(1)において、Icは反転確率が1/2となるスピン注入電流、Hは印加磁界、Msは記録磁性層の飽和磁化であり温度依存性を持つことを表す。
乱数発生装置にスピン注入現象を用いる場合、スピン注入磁化反転素子の反転確率(以下、「反転確率」と略称する。)が厳密に1/2となる動作点で駆動すれば真性乱数が得られる。また、反転確率が1/2からずれた場合でも、連続した2ビットからの演算で1ビットの真性乱数を得ることが出来ることは、特許文献1に記載されている。しかし、反転確率が1/2から大きく乖離してしまうと、真性乱数にきわめて近い乱数が発生できなくなるため、乱数発生速度が大幅に低下してしまう。
【0009】
また、スピン注入現象を用いた乱数発生装置では消費電力を抑えるために、一般的に飽和磁化Msを小さくしてスピン注入電流を小さくする対策がとられている。しかし、飽和磁化Msが小さな材料は、往々にして飽和磁化Msの温度変化も大きくなりやすく、結果的にスピン注入電流の温度変化が大きくなってしまう傾向にある。このため、スピン注入電流が温度により大きく変化する場合には反転確率を1/2にすることが困難となる。
【0010】
また、非特許文献2に示されるように、セキュリティチップが備える乱数発生装置が生じた乱数は暗号鍵の種となるため、簡単に読み出されてはならない。しかし、スピン注入現象を用いた乱数発生装置は、抵抗変化型のスピン注入磁化反転素子から求まる、“0”,“1”(例えば、素子が高抵抗である場合に“0”、低抵抗である場合に“1”とする。)を乱数として用いる。このため、乱数発生装置の消費電力を調べることにより鍵が盗まれてしまう可能性がある。また、消費電力から調べるよりも難しくはなるが、セキュリティチップ上に乱数発生装置がどこに配置されているかが分かれば、以下の方法により乱数が読出される可能性がある。例えば、チップに形成された上部パッシベーション層を除去し、物理的プロービングを行うことにより、攻撃者に乱数を読出す方法がありうる。
【0011】
また、乱数発生装置が発生した乱数を攻撃者に読み出されないようにするため、非特許文献2に開示されるように、擬似信号を入れたり、複雑な構造にして乱数発生部がどこにあるか分からないようにしたりといった、様々な対策がとられている。しかし、これらの対策をとると、セキュリティチップに余分な構造が必要となるためにコストアップにつながってしまう。しかし、セキュリティ性を高めずに、攻撃者に暗号鍵を盗まれてしまえば、暗号化していたデータはたちまち解読されてしまうので、セキュリティチップとして用いることができない。
【0012】
本発明はこのような状況に鑑みて成されたものであり、攻撃者が乱数発生素子の発生した乱数を容易に読み出せないようにすることを目的とする。
【課題を解決するための手段】
【0013】
本発明は、スピン注入電流が供給されると、スピン注入現象により反転確率が1/2となって乱数を発生する複数の乱数発生素子を有する乱数発生部が乱数発生素子に乱数を発生させるものである。
乱数発生部は、乱数発生素子毎に、乱数発生素子の抵抗値を所定の閾値より高い第1の抵抗値にする、書込み確率が1であるスピン注入電流を供給する1回目の書込みを行い、乱数発生素子から抵抗値を読出す1回目の読み出しを行う。
次に、読出された抵抗値より、1回目の書込みによって乱数発生素子が第1の抵抗値とされたことを検出し、乱数発生素子の抵抗値を所定の閾値より低い第2の抵抗値にする、書込み確率が1/2であるスピン注入電流を供給する2回目の書込みを行う。
これにより、乱数発生素子に乱数を発生させる。
このとき、1回目の読出しによって読出された乱数発生素子の抵抗値より、乱数発生素子が乱数を発生する環境における環境温度を求め、環境温度に追従する書込み確率が1/2となるスピン注入電流を用いて、2回目の書込みを行わせる。
【0014】
このようにしたことで、環境温度に追従するスピン注入電流の大きさを変化させて、乱数発生素子に書込みを行い、乱数を発生させることができる。
【発明の効果】
【0015】
本発明によれば、乱数発生素子をリセットする第1回目の書込みを行った後、データを読み出すことによって、乱数発生素子のリセットが正しく行われたかどうかを確認できる。また、リセットが行われたことを確認した後、書込み確率が1/2であるスピン注入電流を乱数発生素子に供給する場合に、環境温度に追従してスピン注入電流の大きさを変える。このため、環境温度に変化があっても、真性乱数にきわめて近い安定した乱数を得られるという効果がある。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施の形態におけるセキュリティチップの内部構成例と、乱数発生素子と記憶素子の平面配置の例を示す構成図である。
【図2】本発明の一実施の形態における乱数発生素子として用いられるスピン注入磁化反転素子の一例として、TMR素子を用いた場合における積層膜の断面模式図である。
【図3】本発明の一実施の形態におけるセキュリティチップにおける乱数発生部の内部構成例を示すブロック図である。
【図4】本発明の一実施の形態における乱数発生素子のアドレスを決定する処理の例を示すフローチャートである。
【図5】本発明の一実施の形態における、決定した乱数発生素子を用いて、乱数を発生する処理の例を示すフローチャートである。
【図6】本発明の一実施の形態における低抵抗又は高抵抗における、書込み又は読出しの際の温度と、室温比率の関係の例を示す説明図である。
【図7】本発明の一実施の形態におけるセキュリティチップにおける乱数発生シーケンスのタイミングの一例を示す説明図である。
【図8】本発明の一実施の形態におけるスピン注入による8ビット乱数発生の際の消費電流の測定結果と、従来の1ビット乱数発生の際の消費電流の測定結果の例を示す説明図である。
【図9】本発明の他の実施の形態における磁場角度と抵抗差比の関係例を示す説明図である。
【発明を実施するための形態】
【0017】
以下、発明を実施するための最良の形態(以下実施の形態とする。)について説明する。なお、説明は以下の順序で行う。
1.一実施の形態(書込み制御:温度変化によりスピン注入電流を変化させる例)
2.変形例
【0018】
<1.一実施の形態>
[温度変化によりスピン注入電流を変化させる例]
【0019】
以下、本発明の一実施形態について、図1〜図8を参照して説明する。本実施の形態では、スピン注入電流が注入されて乱数を発生し、この乱数を記憶するセキュリティチップ1に適用した例について説明する。
【0020】
図1は、セキュリティチップ1の内部構成例と、乱数発生素子2a,2bと記憶素子3aの平面配置の例を示す。
【0021】
図1Aは、セキュリティチップ1の内部構成例を示す。
セキュリティチップ1は、乱数を発生する乱数発生部2と、発生した乱数と暗号化したデータを記憶する不揮発性のメモリ3と、発生した乱数を用いてデータの暗号化処理等を行う暗号処理部4を備える。乱数発生部2は、暗号処理部4と分けて、単独の乱数発生装置として用いられる場合もある。
【0022】
乱数発生部2が発生した乱数は、擬似乱数の種としてメモリ3に記憶される。暗号処理部4は、この乱数をメモリ3から読出して擬似乱数として用い、増幅して物理乱数を生成する。そして、暗号処理部4は、この物理乱数を所定の暗号方式(RSA等)によってデータを暗号化し、メモリ3に暗号化されたデータを書き込む。
【0023】
図1Bは、乱数発生素子2a,2bと記憶素子3aの平面配置の例を示す。
乱数発生部2は、スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が1/2となって乱数を発生する複数の乱数発生素子2a,2bを備え、メモリ3は、データを記憶する複数の記憶素子3aを備える。乱数発生素子2a,2bと記憶素子3aには、スピン注入電流が注入されると磁化反転するスピン注入磁化反転素子が用いられる。このスピン注入磁化反転素子には、例えば、巨大磁気抵抗効果材料(GMR素子)もしくはトンネル磁気抵抗効果素子(TMR素子)などの、スピン注入電流が供給されると磁化反転し、抵抗値が変わる磁気抵抗効果素子が用いられる。乱数発生素子2a,2bと、記憶素子3aの膜構成例については図2に後述する。
【0024】
乱数発生素子2a,2bの形状は、短軸80nm、長軸140nmの楕円形である。一方、記憶素子3aの形状は、短軸80nm、長軸160nmの楕円形である。そして、メモリ3の内部に、記憶素子3a及び乱数発生素子2a,2bがランダムに配置されており、各素子の配置間隔は、約200nmとしてある。
【0025】
乱数発生素子2a,2bの楕円形状におけるアスペクト比は、記憶素子3aの楕円形状におけるアスペクト比よりも低い。一般に、スピン注入磁化反転素子のアスペクト比が高いと、情報の保持特性が高くなるが、データを素子に記憶させるために大きな電流を必要とする。しかし、乱数発生素子2a,2bの楕円形状におけるアスペクト比を低くすることで、電流が小さくても容易にデータの書き換えることができ、合わせて乱数を発生させやすくする。
【0026】
上述したとおり、乱数発生素子2aの場所を特定されると乱数発生素子2aを意図的に誤動作させたり、キャップ層(後述する図2参照)を除去して直接配線に針を当てたりすることにより、発生した乱数を盗まれる可能性がある。このため、極力、乱数発生素子2aがセキュリティチップ1内のどこにあるかを攻撃者に知られないようにする。本例のメモリ3は、数kビット〜数百Mビットの情報を記憶可能な複数の記憶素子3aで構成されており、その中から数ビット分の情報しか記憶しない乱数発生素子2a,2bを見つけ出すのは不可能に近い。また、乱数発生素子2a,2bと記憶素子3aの素子サイズを同一にすることも可能であるため、配線により、乱数発生素子2aと記憶素子3aを見分ける以外に乱数発生素子2aを見つけることは不可能であると考えられる。このため、本例のセキュリティチップ1のように乱数発生部2とメモリ3を構成することは、セキュリティを高める点で非常に有効である。
【0027】
図2は、乱数発生素子2a,2b、記憶素子3aとして用いられるスピン注入磁化反転素子の一例として、TMR素子を用いた場合における積層膜の断面模式図を示す。
【0028】
TMR素子の積層膜は、下地層/反強磁性体層/磁化固定層/トンネルバリア層/信号検出層/キャップ層により構成されている。本例の乱数発生素子2a,2b、記憶素子3aは、基板10上に、下地層11から順に、反強磁性層12、磁化固定層13、トンネルバリア層17、記録層18、キャップ層19を真空装置内で連続的に形成して作成したものである。
【0029】
本例では、磁化固定層13を上下の磁性層が反強磁性的に結合した磁性層14,16とその間に挟まれる導体層15で構成しているが、単層の強磁性体も使用可能である。また、磁化固定層を形成する磁性層14,16には、Fe、Ni、Coの1種もしくは2種以上からなる合金材料を用いることができる。更にこれらの磁性層の合金に、NbやZrなどの遷移金属元素、BやCなどの軽元素、Gd、Tb、Yなどの希土類元素、ホイスラ合金としてMn、Al、Crなどを含有させることもでき、さらにはこれらの酸化物や窒化物も使用することができる。
【0030】
磁化固定層13に用いる導体層15の材料としては、Ru、Cu、Rh、Crなどの磁性層間に反強磁性層間結合を生じる材料が使用できる。トンネルバリア層17の材料としては、Al、MgO、HfO、SiO、SiO、SiNなどの材料や、これらの混合物を用いることができる。反強磁性体層の材料としては、PtMn、RhMn、RuMn、FeMn,IrMnなどのMn化合物などが使用できる。
【0031】
記録層18の強磁性体の材料としては、磁化固定層を形成する磁性層14と同種のものが使用でき、例えば、Fe、Ni、Coの1種もしくは2種以上からなる合金材料、および、これらの磁性合金に上記の添加物を含む合金などが使用できる。下地層11とキャップ層19の材料には特に制限がないが、一般的には、Ta、Cr、Ti、W、Al、Cu、TiN、CuNなどの金属や金属窒化物などが使用できる。
【0032】
図3は、乱数発生部2の内部構成例を示す。
図3において、それぞれの乱数発生素子2a,2bに対して構成される乱数を発生する周辺回路を、便宜的に乱数発生回路30a,30bとして取り扱って説明を行う。乱数発生回路30a,30bは、それぞれ乱数発生素子2a,2bと、乱数発生素子2a,2bに電圧を加え、スピン注入電流を供給するドライブトランジスタ31,32を備える。また、乱数発生回路30a,30bは、それぞれ乱数発生素子2a,2bから読出された乱数を増幅してメモリ3に出力するセンスアンプ回路33,34と、を備える。センスアンプ回路33,34は、情報(例えば、乱数)の読出しに用いられる。
【0033】
また、乱数発生回路30a,30bは、ドライブトランジスタ31,32の動作を制御する書込み/読出し制御回路36,37と、センスアンプ回路33,34に対して、リファレンス電圧を供給するリファレンス電圧発生回路38と、を備える。本例において、乱数発生回路30a,30bは、それぞれ乱数発生素子、ドライブトランジスタ、リファレンス電圧発生回路、及びセンスアンプ回路が一単位として構成される。
【0034】
また、乱数発生部2は、ドライブトランジスタ31,32が乱数発生素子2a,2bに加えた、書込み又は読出しにおける電圧とスピン注入電流の値を記憶する不揮発性のメモリ40を備える。また、乱数発生部2は、外部環境の温度によって乱数発生素子2a,2bに書き込むための適切な電圧とスピン注入電流の値をメモリ40に記憶させる温度制御回路39とを備える。温度制御回路39は、外部環境の温度に追従してスピン注入電流の大きさを変化させる温度制御部としても用いられる。また、乱数発生素子2a,2bのアドレスを制御し、そのアドレスをメモリ40に書き込む乱数発生部アドレス制御回路41と、を備える。
【0035】
乱数発生回路30a,30bは、書込み確率が1であって、乱数発生素子2a,2bの抵抗値を所定の閾値より高い第1の抵抗値にするスピン注入電流を乱数発生素子2a,2bに供給する1回目の書込みの後、乱数発生素子2a,2bの抵抗値を読出す1回目の読出しを行う。次に、乱数発生回路30a,30bは、読出された抵抗値より、1回目の書込みによって乱数発生素子2a,2bが第1の抵抗値(高抵抗側抵抗)とされたことを検出した場合に、以下の動作を行う。すなわち、書込み確率が1/2であって、乱数発生素子2a,2bの抵抗値を所定の閾値より低い第2の抵抗値にするスピン注入電流を乱数発生素子2a,2bに供給する2回目の書込みを行うことによって、乱数発生素子2a,2bに乱数を発生させる。
【0036】
乱数発生素子2a,2bの膜構成は、以下のとおりである。すなわち、Ta(3nm) / Cu(50nm) / PtMn(20nm) / CoFe(2nm) / Ru(0.8nm) / CoFeB(4nm) / Mg(0.9nm) / CoFeB(2nm) / Ta(5nm)としてある。また、乱数発生素子2a,2bは、共に短軸80nm、長軸140nmの楕円形素子であり、記憶素子3aの素子サイズである短軸80nm、長軸160nmより若干小さく形成される。そして、乱数発生素子2aと記憶素子3aの長軸は互いに平行となるように配置してある(図1参照)。
【0037】
そして、乱数発生素子2aには、ドライブトランジスタ31と、センスアンプ回路33が接続され、乱数発生素子2bには、ドライブトランジスタ32と、センスアンプ回路34が接続される。そして、2つのセンスアンプ回路33,34の出力(乱数)が同時にメモリ3に出力される。このように乱数発生素子2a,2b毎に独立したドライブトランジスタ31,32と、書込み/読出し制御回路36,37を用いて、書込み/読出しを行うため、乱数発生素子2a,2b毎に異なる値の電圧とスピン注入電流を加えることができる。
【0038】
ドライブトランジスタ31は、書込み/読出し制御回路36によって、乱数発生素子2aに対する書込みと読出しの動作が制御される。ドライブトランジスタ32は、書込み/読出し制御回路37によって、乱数発生素子2bに対する書込みと読出しの動作が制御される。書込み/読出し制御回路36,37は、乱数発生素子2a,2bの書込み確率がおおよそ1/2になるような電圧を乱数発生素子2a,2bに印加するために、以下の書き込み試験を行う。
【0039】
乱数発生素子2a,2bを作成した後、書込み回数を103〜108回程度としてリセット−書込み−読出しの試験を繰り返し行う。この試験の後、乱数発生素子2a,2bへの書込み電圧をメモリ40に保存する。このため、メモリ40には、予め乱数発生素子2aの反転確率が1/2となるスピン注入電流の値が記憶される。書込み/読出し制御回路36,37は、実際に、乱数発生素子2a,2bが乱数を発生させる際に、初期状態でメモリ40に保存してある各素子に対する書込み電圧の情報と共に、乱数発生素子2aの反転確率を1/2付近にそろえるスピン注入電流の値を読み出す。次に、その情報を使ってドライブトランジスタ31,32への印加電圧を調整し、スピン注入磁化反転素子20、21の書込み確率がおおよそ1/2になるような電圧でスピン注入電流を複数の乱数発生素子2a,2bに供給して、書込みを行う。これにより、乱数発生素子2a,2bに乱数を発生させることが可能となる。
【0040】
また、書込み/読出し制御回路36,37がドライブトランジスタ31,32を制御して、乱数発生素子2a,2bから読出した電圧値はセンスアンプ回路33,34に供給される。ここで、リファレンス電圧発生回路38は、例えば、乱数発生素子2a,2bが低抵抗側抵抗である場合に、この低抵抗側抵抗の値から得られる電圧値を1.2倍掛けた電圧値をリファレンス電圧として、センスアンプ回路33,34に供給する。これにより、リファレンス電圧を閾値として、乱数発生素子2a,2bが高抵抗又は低抵抗のいずれかの状態であることを判断することが可能となる。
【0041】
ここで、メモリ40に保存しておく、乱数発生素子2a,2bに対する書込み電圧の情報は、実際に乱数発生素子2a,2bに印加した電圧の情報でもよいし、段階的に印加した電圧の情報でもよい。また、センスアンプ回路33,34と書込み/読出し制御回路36,37の一部は、乱数発生部2とメモリ3で同一のものを使用する。
【0042】
温度制御回路39は、書込み/読出し制御回路36,37がメモリ40に記憶させた、乱数発生素子2a,2bへの書込み/読出し電圧から求まるスピン注入電流の値を読み出して、外部環境の温度を求める(後述する図6参照)。そして、温度制御回路39は、外部環境の温度によって、乱数発生素子2a,2bに対して書込み確率を1/2とするために最適なスピン注入電流の値と電圧値を求め、これらの値をメモリ40に記憶させる。具体的には、1回目の読出しによって読出された乱数発生素子2aの抵抗値より、乱数発生素子2aが乱数を発生する環境における環境温度を求め、環境温度に追従してスピン注入電流の大きさを変化させて、乱数発生回路30a,30bに2回目の書込みを行わせる。このため、乱数発生回路30a,30bに含まれる書込み/読出し制御回路36,37は、メモリ40から読出した電流、電圧値に基づいて、乱数発生素子2a,2bにデータを書き込む。
【0043】
ここで、乱数発生素子2a,2bには、少なくとも記録層および磁化固定層の2層の磁性体層を有し、それらの磁性層の間に絶縁層もしくは非磁性導体層が配置されている(図2参照)。そして、乱数発生素子2a,2bと記憶素子3aに対し、おおむね垂直に電流を流すことにより、記録層に対して磁化の反転、すなわち情報の書き込みを行う。磁化反転の確率は、スピン注入磁化反転素子に流すスピン注入電流の大きさに依存する。例えば、乱数発生部2が乱数発生素子2a,2bに乱数を発生させる際、書込み/読出し制御回路36,37は、リセット−書込み−読出しの動作を繰り返し行うが、リセット時には磁化反転の確率が1になる電流を調整して用いる。一方、情報の書込み時には磁化反転の確率がおおむね1/2になる電流を調整して用いる。
【0044】
また、書込み/読出し制御回路36,37は、スピン注入磁化反転素子が保持する情報を読み出す際には、巨大磁気抵抗効果もしくはトンネル磁気抵抗効果により、乱数発生素子2a,2bの抵抗が記録層と磁化固定層の磁化の角度に依存することを利用する。そして、書き込み電流より十分小さな電流を流すことによって、その抵抗を検出し、基準となる抵抗値を閾値にして判別を行う。ここで、閾値より高い第1の抵抗値を高抵抗側抵抗、閾値より低い第2の抵抗値を低抵抗側抵抗と呼ぶ。この閾値は上述したとおり、リファレンス電圧発生回路38が供給するリファレンス電圧によって定まる。
【0045】
そして、書込み/読出し制御回路36,37は、乱数発生素子2a,2bに乱数を発生させる際に、1回目の書込み(リセット)−2回目の書込み−読出しのように、書き込みと読出しの組み合わせからなる制御を繰り返し行う。そして、乱数発生部2は、1回目の書込み時には磁化反転の確率が1になる電流を、2回目の書込み時には磁化反転の確率がおおむね1/2になる電流を流し、最後の読出しにより乱数出力を得る。
【0046】
図4は、メモリ3内に点在する乱数発生素子2aのアドレスを決定する処理の例を示す。ただし、以下の説明において、乱数発生素子2aと同様の処理を行う乱数発生素子2bについては、詳細な説明を省略する。
【0047】
始めに、乱数発生部アドレス制御回路41が予め定めた、基準となるアドレスに配置されている乱数発生素子2aを使って、書込み/読出し制御回路36が乱数を発生させる(ステップS1)。
【0048】
次に、乱数発生部アドレス制御回路41は、発生させた乱数を使って、乱数発生部2における乱数発生素子2aのアドレスを決定する(ステップS2)。これにより、攻撃者は、メモリ3の内部に配置されたどの乱数発生素子が、乱数を発生させるために用いられているかを容易に知ることができなくなるため、乱数発生におけるセキュリティチップ1のセキュリティ性を高めることができる。
【0049】
次に、乱数発生部アドレス制御回路41は、決定したアドレスに配置されている乱数発生素子2aがショートやオープンしていない正常な素子であるか否かをチェックする(ステップS3)。決定した乱数発生素子2aがショートやオープンしている異常素子である場合、ステップS1に処理を戻して、乱数発生部アドレス制御回路41は、再度、乱数発生素子2aのアドレスを決定する処理を繰り返す。
【0050】
一方、決定した乱数発生素子2aが正常な素子である場合、書込み/読出し制御回路36は、乱数発生素子2aのアドレス(複数ある場合には、複数のアドレス)をメモリ40に保存する(ステップS4)。そして、書込み/読出し制御回路36は、メモリ40から乱数発生素子2aのアドレスを読出して、乱数発生部2における乱数発生素子2aにアクセスし、乱数を発生させる処理を行う(ステップS5)。
【0051】
図5は、決定した乱数発生素子2aを用いて、乱数を発生する処理について説明する。
【0052】
始めに、書込み/読出し制御回路36は、書き込み確率が1であって、乱数発生素子2aの抵抗値を所定の閾値より高い第1の抵抗値(高抵抗側抵抗)にするスピン注入電流を乱数発生素子2aに供給する1回目の書込みによりリセットを行う(ステップS11)。
【0053】
次に、書込み/読出し制御回路36は、乱数発生素子2aの抵抗値を読出す1回目の読み出しを行い、センスアンプ回路33により、乱数発生素子2aからデータを出力させる(ステップS12)。センスアンプ回路33が出力したデータは、温度制御回路39に送られる。
【0054】
次に、温度制御回路39は、乱数を発生するために適した動作温度の範囲内に現在の環境温度が入っているか否かを判断する(ステップS13)。具体的には、温度制御回路39は、1回目の読出しによって読出された乱数発生素子2aの抵抗値より、乱数発生素子2aが乱数を発生する環境における環境温度を求める。そして、環境温度に追従してスピン注入電流の大きさを変化させて、乱数発生部30aに2回目の書込みを行わせる。環境温度が動作温度の範囲を超えている場合に、温度制御回路39は、乱数発生回路30aに対して、乱数を発生させるための動作を停止させ、処理を終了する(ステップS18)。
【0055】
一方、環境温度が動作温度の範囲内であれば、書込み/読出し制御回路36は、以下の処理を行う。すなわち、書込み/読出し制御回路36は、乱数発生素子2aから読出された抵抗値より、1回目の書込みによって乱数発生素子2aが第1の抵抗値とされたことを検出した場合に、リセットが正確に行えたことを判断する(ステップS14)。リセットが不正確である場合、ステップS11に処理を移し、書込み/読出し制御回路36は、リセット動作(1回目の書込み)を繰り返す。
【0056】
一方、リセットが正確である場合、温度制御回路39は、読出し信号強度から外部環境の影響を調べて、書込み確率が1/2になる電流を調整し(ステップS15)、この電流の値をメモリ40に保存する。
【0057】
次に、書込み/読出し制御回路36は、書込み確率が1/2であって、乱数発生素子2aの抵抗値を所定の閾値より低い第2の抵抗値(低抵抗側抵抗)にするスピン注入電流を乱数発生素子2aに供給する2回目の書込みを行う(ステップS16)。
【0058】
次に、書込み/読出し制御回路36は、データの読み出しを行い、センスアンプ回路33により、乱数発生素子2aからデータを出力させる(ステップS17)。そして、暗号処理部4は、読出したデータを乱数として用い(ステップS19)、データの暗号化処理等を行う。
【0059】
通常は、1回目の書込み(ステップS11)−2回目の書込み(ステップS16)−読出し(ステップS17)を繰り返し行うことにより乱数を発生させる。しかし、本例の書込み/読出し制御回路36は、1回目の書込みと2回目の書込みの間に、乱数発生素子2aが高抵抗になったことを確認する読出しを行う。したがって、読出し回数は2回となり、通常の乱数発生シーケンスにおける読出し回数より多くなる。このため、乱数発生速度は若干落ちるが、乱数発生の正確性や動作可能温度範囲を大幅に広げることができる。
【0060】
実際に乱数をより正確に発生させるためには、1回目の書き込み(リセット)が必ず成功する必要がある。このため、書込み/読出し制御回路36は、1回目の読出しによって、乱数発生素子2aの高抵抗側に書き込みができたことを、スピン注入磁化反転素子の抵抗を読み出して確認する。そして、書き込みが成功しておらず、乱数発生素子2aにリセット不良が発生したことを検出した場合には、再度1回目の書込みを行うことによって、必ず書込み確率を1として、乱数発生素子2aを高抵抗側にセットできる。これにより、リセット不良による乱数性の低下を完全に防ぐことができ、乱数発生素子2aに乱数性のよい乱数を発生させることが可能となる。
【0061】
図6は、乱数発生素子2a,2bが低抵抗又は高抵抗である状態における、書込み又は読出しの際の温度と、室温比率の関係の例を示す。
【0062】
図5におけるステップS13において、動作可能な温度範囲にいるかどうかを調べるために、抵抗と書込み確率が1/2になる電流が温度に対して線形に変化する関係(T=α(R―R))を用いる。この関係より、温度制御回路39は、室温の抵抗Rに対してどのくらい抵抗Rが変化したかを調べて、環境温度Tを知ることができる。このため、ステップ18に示したように、温度保証範囲の外に環境温度がある場合にはセキュリティチップ1の動作を停止させることができる。
【0063】
また、2回目の書込みを行う電流の大きさを、温度変化(T=β(I−I))に追従して変化させるため、温度制御回路39が高抵抗側抵抗の温度変化から環境温度Tを調べ、メモリ40に保存する。これにより、書込み/読出し制御回路36は、メモリ40から読み取った電流の大きさに基づいて、2回目の書込みの電流(I+α/β(R−R))を変更することができる。このため、セキュリティチップ1は、セキュリティチップ1が予め定める温度保証範囲内で正確に発生した乱数を用いて、データを暗号化することができる。
【0064】
ここで注意しなければならないのは、書込み/読出し制御回路36が乱数発生素子2aからデータを読出す際に、低抵抗側の抵抗は温度変化がほとんどないという点である。したがって、乱数発生を行う際には、必ず高抵抗側抵抗に書き込んだ後、読出しを行わなければ、抵抗の温度変化から環境温度を測定することはできない。さらに、1回目の書込みの時に乱数発生素子2aの高抵抗側に書き込むということは、必然的に2回目の書き込みでは乱数発生素子2aの低抵抗側へ書込みを行うことに注意されたい。
【0065】
図7は、セキュリティチップ1における乱数発生シーケンスのタイミングの一例を示す。
図中において、プラス側が乱数発生素子2aの高抵抗側への書込み方向の電流、マイナス側が乱数発生素子2a低抵抗側への書込み方向の電流を表している。前述したとおり、1回目の書込み(リセット)時には次の読出しでおおよその環境温度を判別するため、スピン注入磁化反転素子を高抵抗側にするようにセットする。このため、書込み/読出し制御回路36は、シーケンスの開始後、つまり5nsの後25nsのパルス幅でプラス側に電流を流す。
【0066】
書込み後は、5ns経過してから、書込み/読出し制御回路36は、誤って書込まないように30nsのパルス幅でプラス方向に電流を流して読出しを行ってセンスアンプ回路33にデータを出力する。そして、温度制御回路39は、環境温度がセキュリティチップ1の動作温度範囲に収まっていることと、読出した乱数発生素子2aが高抵抗に判別されたことをチェックする。
【0067】
チェックに通ったら、書込み/読出し制御回路36は、25nsのパルス幅でマイナス方向に書込み確率を1/2とするスピン注入電流を流す。スピン注入電流を流した5ns後に、30nsのパルス幅でプラス方向に電流を流し読出しを行い乱数として出力する。この乱数発生シーケンスの際に注意しなければならないのは、各動作の間隔である。保持特性の悪いスピン注入磁化反転素子(MTJ:Magnetic Tunnel Junction)を用いた場合には、各動作の間隔が空くと前の動作を保証できなくなってくる。
【0068】
例えば、1回目の読出し後に長い間隔を空けると、せっかく環境温度が動作保証温度内に入っていることも、リセットしたことも確認できたにもかかわらず、書込みするまでの間に低抵抗に反転してしまっているかもしれない。あるいは、2回目の書込み後の間隔を空けた場合にも、本当に確率を1/2として書き込んだ後のデータなのか保証できなくなる。したがって、各動作の間隔はできるだけ短いほうがよく、本例においては、各動作の間隔を10ns以下となるように制御している。
【0069】
図8は、スピン注入による乱数発生の際の消費電流の測定結果の例を示す。
【0070】
ここでは、並列配置した乱数発生素子2a,2bを4個(8ビット)用いて、8ビット乱数を発生させた場合の消費電流と、特許文献1に示したような1ビット乱数を発生させた場合の消費電流の測定結果を比較して示す。ただし、リセット時と書込み時の消費電流は削除しており、乱数発生素子2a,2bが乱数を発生させる読出し時の消費電流のみをグラフにプロットしている。
【0071】
特許文献1に示した1ビット乱数を発生させる時の消費電流は、消費電流が大きい場合と小さい場合で、例えば、50μA程度異なる。このため、消費電流を計測することで、乱数発生素子が“0”か“1”のいずれかの乱数を発生したか簡単に読み取ることができる。しかし、8ビット乱数を発生させた場合には、おおよそ8ビットの半分の4ビットが“1”になり、残りの4ビットが“0”になると考えられる。このため、全体の消費電流は、100μA程度の範囲内で異なるものの、具体的にどの乱数発生素子が“0”か“1”のいずれかの乱数を発生させ、消費電流の増減に寄与したかを容易に推測することはできない。
【0072】
例えば、消費電流の違いにより“0”のビット数が確定されたとしても8ビットのうち、どのビットが“0”であるかを特定するには、8Cn(nは、0ビットの数)通りの組み合わせから推測しなければならない。また、連続して発生する乱数を特定するには{8Cn}m(mは乱数の連続発生回数)通りの組み合わせから推測する必要がでてくる。さらに、並列に動作させるビット数を多くするほど組み合わせは多くなるので発生した乱数を特定される危険性が極端に少なくなり、乱数の発生速度も早くなる。
【0073】
以上説明した本実施の形態例に係るセキュリティチップ1は、スピン注入現象を用いて乱数を発生させる乱数発生部2とメモリ3で構成される。そして、記憶素子3aの間に極めて近くに並列した複数の乱数発生素子2a,2bを配置し、乱数発生素子2a,2bを用いて乱数を発生させる。乱数発生素子2a,2bと記憶素子3aとの間隔は、例えば、200nmと微細であり、乱数発生素子2a,2bは、メモリ3の内部にランダムに配置される。このため、プローブを接触させ、この素子が乱数発生素子として用いられているかを探すのは極めて困難である。このように、暗号化の鍵として使われる乱数を消費電力からの解析や物理的プロービングから守ることができ、非常にセキュリティ性と耐タンパ性を高くしたセキュリティチップ1を提供することができる。
【0074】
また、1回目の書込み(リセット)を行う際は、書込み確率が1となるスピン注入電流を乱数発生素子2a,2bに書き込むことで、乱数発生素子2a,2bを高抵抗とする。そして、2回目の書込み(乱数書込み)を行う前に、乱数発生素子2a,2bから読出した抵抗値が高抵抗であることを確認する。このため、確実に乱数発生素子2a,2bがリセットされたことを確認した後、2回目の書込みを行うことができるため、乱数発生素子2a,2bが発生する乱数の乱数性が高まるという効果がある。
【0075】
また、乱数発生部2は、乱数発生素子を複数備え、並列して複数ビットの乱数を発生することができる。このとき、乱数発生素子の反転確率は1/2であるため、消費電流は、乱数を発生させる動作毎にほとんど変動しなくなる。このため、攻撃者は、セキュリティチップ1の消費電力を調べても、どの乱数発生素子がどの乱数を発生したかを知ることが極めて困難となる。また、複数の乱数発生素子を用いて乱数を発生させるため、1個ずつの乱数発生に要する時間は読出し時間を考慮するとわずかに長くなるが、結果として得られる複数個の乱数発生に要する時間は従来の乱数発生装置より短くなる。このため、従来に比べて乱数発生を高速化することができるという効果がある。
【0076】
また、1回目の書込み(リセット)後に読出した乱数発生素子2aの高抵抗側抵抗の温度変化より、温度制御回路39は、乱数発生素子が乱数を発生する際における環境温度を求める。そして、温度制御回路39は、環境温度に追従して調整したスピン注入電流の大きさをメモリ40に保存し、書込み/読出し制御回路36,37は、メモリ40から読出したスピン注入電流の大きさで2回目の書込みを行うことができる。このため、環境温度に追従させてスピン注入電流の大きさを変化させることができ、乱数発生素子2a,2bが発生する乱数を安定化することができる。
【0077】
また、書込み/読出し制御回路36,37は、1回目の書込み(リセット)後に読出した乱数発生素子2a,2bの抵抗値より、リセット不良を検出すると、再度、乱数発生素子2a,2bに1回目の書込みを行う。このため、確実に乱数発生素子2a,2bをリセットすることができ、後続の乱数発生処理において生成した乱数の信頼性を高めることができる。
【0078】
また、攻撃者がセキュリティチップ1の動作が保証される温度の範囲外で乱数発生を行おうとしても、温度制御回路39が環境温度を求めているため、乱数の発生を停止することができる。これにより、環境温度を変えることで、乱数発生素子が発生する乱数を特定の値に偏らせるような攻撃に対して適切な防御を行うことができる。
【0079】
<2.変形例>
なお、乱数発生素子2a,2bの磁場角度と抵抗差比を用いて、乱数発生素子2a,2bが高抵抗又は低抵抗のいずれの状態であることを検出することも可能である。
【0080】
図9は、磁場角度と抵抗差比の関係例を示す。
磁場角度とは、信号検出層と磁化固定層の角度を表す。また、抵抗差とは、第1の抵抗値(高抵抗側抵抗)と第2の抵抗値(低抵抗側抵抗)の差分であり、抵抗差比は、高抵抗と低抵抗の差を100%として設定した値を示す。
【0081】
この図より、磁場角度が大きくなるにつれて、抵抗差比も大きくなることが示される。例えば、磁場角度が0度である場合、抵抗差比は0%であり、抵抗に変化はない(低抵抗)が、磁場角度が180度である場合、抵抗差比は100%であり、抵抗が2倍に変化する(高抵抗)ことが分かる。
【0082】
このように、書込み/読出し制御回路36,37は、磁場角度と、抵抗差の比に基づいて、乱数発生素子2aから読出した抵抗値が第1又は第2の抵抗値(高抵抗側抵抗又は低抵抗側抵抗)のいずれであるかを判別する。このため、1回目の書込み(リセット)、1回目の読出し、2回目の書込み(乱数発生)における各動作の信頼性を高め、乱数性の高い乱数を発生させることができる。
【符号の説明】
【0083】
1…セキュリティチップ、2…乱数発生部、2a,2b…乱数発生素子、3…メモリ、3a…記憶素子、4…暗号処理部、10…基板、11…下地層、12…反強磁性層、13…磁化固定層、14…磁性層、15…導体層、17…トンネルバリア層、18…記録層、19…キャップ層、20…スピン注入磁化反転素子、30a,30b…乱数発生回路、31,32…ドライブトランジスタ、33,34…センスアンプ回路、36,37…読出し制御回路、38…リファレンス電圧発生回路、39…温度制御回路、40…メモリ、41…乱数発生部アドレス制御回路

【特許請求の範囲】
【請求項1】
スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が1/2となって乱数を発生する複数の乱数発生素子を有し、書込み確率が1であって、前記乱数発生素子の抵抗値を所定の閾値より高い第1の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する1回目の書込みを行い、前記乱数発生素子の抵抗値を読出す1回目の読出しを行い、読出された前記抵抗値より、前記1回目の書込みによって前記乱数発生素子が第1の抵抗値とされたことを検出した場合に、書込み確率が1/2であって、前記乱数発生素子の抵抗値を前記所定の閾値より低い第2の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する2回目の書込みを行うことによって、前記乱数発生素子に前記乱数を発生させる乱数発生部と、
前記1回目の読出しによって読出された前記乱数発生素子の抵抗値より、前記乱数発生素子が乱数を発生する環境における環境温度を求め、前記環境温度に追従して前記スピン注入電流の大きさを変化させて、前記乱数発生部に前記2回目の書込みを行わせる温度制御部と、を備える
乱数発生装置。
【請求項2】
前記乱数発生部は、前記乱数発生素子を構成する信号検出層と磁化固定層の角度から求められる磁場角度と、前記第1の抵抗値と前記第2の抵抗値の差分である抵抗差より求められる前記抵抗差の比に基づいて、前記乱数発生素子から読出した抵抗値が前記第1又は第2の抵抗値のいずれであるかを判別する
請求項1記載の乱数発生装置。
【請求項3】
前記乱数発生部は、不揮発メモリに予め記憶した前記乱数発生素子の反転確率が1/2となる前記スピン注入電流の値を用いて、前記乱数発生素子の反転確率を1/2付近にそろえる前記スピン注入電流を複数の前記乱数発生素子に供給する
請求項1又は2に記載の乱数発生装置。
【請求項4】
前記乱数発生部は、前記1回目の読出しによって、前記乱数発生素子にリセット不良が発生したことを検出した場合に、再度、前記1回目の書込みを行う
請求項1〜3のいずれか1項に記載の乱数発生装置。
【請求項5】
前記温度制御部は、前記環境温度が所定の温度範囲を超えている場合に、前記乱数発生部に対して乱数の発生を停止させる
請求項1〜3のいずれか1項に記載の乱数発生装置。
【請求項6】
さらに、データを記憶する複数の記憶素子を有するメモリを備え、
前記記憶素子及び前記乱数発生素子は、前記メモリの内部にランダムに配置される
請求項1〜5のいずれか1項に記載の乱数発生装置。
【請求項7】
スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が1/2となって乱数を発生する複数の乱数発生素子を有し、書込み確率が1であって、前記乱数発生素子の抵抗値を所定の閾値より高い第1の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する1回目の書込みを行い、前記乱数発生素子の抵抗値を読出す1回目の読出しを行い、読出された前記抵抗値より、前記1回目の書込みによって前記乱数発生素子が第1の抵抗値とされたことを検出した場合に、書込み確率が1/2であって、前記乱数発生素子の抵抗値を前記所定の閾値より低い第2の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する2回目の書込みを行うことによって、前記乱数発生素子に前記乱数を発生させるステップと、
前記1回目の読出しによって読出された前記乱数発生素子の抵抗値より、前記乱数発生素子が乱数を発生する環境における環境温度を求め、前記環境温度に追従して前記スピン注入電流の大きさを変化させて、前記乱数発生部に前記2回目の書込みを行わせるステップと、を含む
乱数発生方法。
【請求項8】
スピン注入電流が供給されると、スピン注入現象により磁化の反転確率が1/2となって乱数を発生する複数の乱数発生素子を有し、書込み確率が1であって、前記乱数発生素子の抵抗値を所定の閾値より高い第1の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する1回目の書込みを行い、前記乱数発生素子の抵抗値を読出す1回目の読出しを行い、読出された前記抵抗値より、前記1回目の書込みによって前記乱数発生素子が第1の抵抗値とされたことを検出した場合に、書込み確率が1/2であって、前記乱数発生素子の抵抗値を前記所定の閾値より低い第2の抵抗値にする前記スピン注入電流を前記乱数発生素子に供給する2回目の書込みを行うことによって、前記乱数発生素子に前記乱数を発生させる乱数発生部と、
前記1回目の読出しによって読出された前記乱数発生素子の抵抗値より、前記乱数発生素子が乱数を発生する環境における環境温度を求め、前記環境温度に追従して前記スピン注入電流の大きさを変化させて、前記乱数発生部に前記2回目の書込みを行わせる温度制御部と、
前記乱数発生部が発生した前記乱数を擬似乱数として用い、この擬似乱数により、所定の暗号方式によってデータを暗号化する暗号処理部と、
前記暗号化されたデータを記憶する複数の記憶素子を有するメモリと、を備える
セキュリティチップ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−113136(P2011−113136A)
【公開日】平成23年6月9日(2011.6.9)
【国際特許分類】
【出願番号】特願2009−266629(P2009−266629)
【出願日】平成21年11月24日(2009.11.24)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】