(57)【特許請求の範囲】
【請求項１】
静的電流を印加されており、磁気抵抗(MR)素子の磁化に基づいて決定される抵抗を有する、MR素子であって、前記MR素子の抵抗は、静的電流が電流パルスと独立に印加されている間に変化するMR素子と、
前記MR素子の抵抗を感知し、前記MR素子の前記感知された抵抗に基づいて乱数値を提供するように構成される、感知回路とを含む、装置。
【請求項２】
前記MR素子が、スピントルク注入(STT)磁気トンネル接合(MTJ)デバイスを含む、請求項1に記載の装置。
【請求項３】
前記感知回路が、
前記MR素子に結合された第1の入力と、基準電圧を受け取る第2の入力と、第1の乱数値を生成するために使用される感知された値を提供する出力とを有する、センスアンプを含む、請求項1に記載の装置。
【請求項４】
前記MR素子と直列に結合された抵抗をさらに含み、抵抗および前記MR素子が抵抗分圧器を形成する、請求項3に記載の装置。
【請求項５】
前記センスアンプの前記第2の入力に結合された第2のMR素子をさらに含む、請求項3に記載の装置。
【請求項６】
前記MR素子および前記第2のMR素子が、異なる形状、または異なるサイズ、または異なる厚さ、またはこれらの組合せを有する、請求項5に記載の装置。
【請求項７】
前記MR素子に結合され、前記MR素子の前記抵抗を測定するために使用される前記静的電流を提供するように構成される、電流源をさらに含む、請求項3に記載の装置。
【請求項８】
前記感知回路がさらに、
前記センスアンプに結合され、前記感知された値を受け取り前記乱数値を提供するように構成される、フリップフロップをさらに含む、請求項3に記載の装置。
【請求項９】
前記MR素子と直列または並列に結合される少なくとも1つの追加のMR素子をさらに含む、請求項1に記載の装置。
【請求項１０】
少なくとも1つの磁気抵抗(MR)素子を含み、前記少なくとも1つのMR素子に基づいて第1の乱数値を提供するように構成される、エントロピー源であって、
前記少なくとも1つのMR素子に対して静的電流を提供するように構成される、バイアス回路と、
前記少なくとも1つのMR素子の抵抗を感知し、前記感知された抵抗に基づいて乱数値を提供するように構成される、感知回路と
を含む、エントロピー源と、
前記第1の乱数値を受け取り処理して、第2の乱数値を提供するように構成される、ポスト処理モジュールとを含む、装置。
【請求項１１】
前記ポスト処理モジュールが、前記第1の乱数値をハッシュし、前記第2の乱数値を提供するように構成される、請求項10に記載の装置。
【請求項１２】
前記ポスト処理モジュールが、暗号学的ハッシュ関数に基づいて、前記第1の乱数値をハッシュするように構成される、請求項11に記載の装置。
【請求項１３】
各第2の乱数値のビットの総数が、前記第2の乱数値を生成するために使用されるすべての第1の乱数値のビットの総数よりも多い、請求項10に記載の装置。
【請求項１４】
前記ポスト処理モジュールが、
前記エントロピー源を含む複数のエントロピー源から、第1の乱数値の複数の列を受け取るように構成される、複数のシフトレジスタと、
前記複数のシフトレジスタから中間の値の複数の列を受け取り、前記中間の値をハッシュし、前記第2の乱数値を提供するように構成される、ハッシュモジュールとを含む、請求項10に記載の装置。
【請求項１５】
各第1の乱数値が1ビットの値を含み、各中間の値がQビットの値を含み、各第2の乱数値がNビットの値を含み、QおよびNが各々1より大きい、請求項14に記載の装置。
【請求項１６】
前記ポスト処理モジュールが、前記第1の乱数値および誤差検出コードに基づいて、前記第2の乱数値を生成するように構成される、請求項10に記載の装置。
【請求項１７】
前記誤差検出コードが巡回冗長検査(CRC)を含む、請求項16に記載の装置。
【請求項１８】
前記ポスト処理モジュールが、
生成器多項式を実装し、前記第1の乱数値を受け取り前記第2の乱数値を提供するように構成される、線形フィードバックシフトレジスタ(LFSR)を含む、請求項10に記載の装置。
【請求項１９】
前記ポスト処理モジュールが、
直列に結合される複数のレジスタと、
前記複数のレジスタ中の少なくとも2つのレジスタに結合され、少なくとも2つのエントロピー源から第1の乱数値の少なくとも2つの列を受け取るように構成される、少なくとも2つの結合器とを含み、前記複数のレジスタおよび前記少なくとも2つの結合器が、少なくとも2つのフィードバックビットによって生成器多項式を実装し、前記少なくとも2つのエントロピー源が前記エントロピー源を含む、請求項10に記載の装置。
【請求項２０】
前記ポスト処理モジュールが、
前記第1の乱数値を受け取り、中間の乱数値を提供するように構成される、エントロピー累算器と、
前記中間の乱数値を受け取り、第2の乱数値を提供するように構成される、暗号化モジュールとを含む、請求項10に記載の装置。
【請求項２１】
前記ポスト処理モジュールが、
複数のエントロピー源から第1の乱数値の複数の列を受け取り処理し、前記第2の乱数値を提供するように構成される結合器を含み、前記複数のエントロピー源が前記エントロピー源を含む、請求項10に記載の装置。
【請求項２２】
前記結合器が排他的OR(XOR)回路を含む、請求項21に記載の装置。
【請求項２３】
前記結合器が、第1の乱数値の前記複数の列の中の複数の第1の乱数値のモジュロM加算を実行して、対応する第2の乱数値を得るように構成され、Mが1よりも大きい整数である、請求項21に記載の装置。
【請求項２４】
前記ポスト処理モジュールが、
前記第2の乱数値を生成するように構成されるストリーム暗号生成器を含み、前記第1の乱数値が、前記ストリーム暗号生成器の動作または内部状態を変える、請求項10に記載の装置。
【請求項２５】
前記ストリーム暗号生成器が、ストリーム暗号アルゴリズムに基づいて前記第2の乱数値を生成するように構成され、前記第1の乱数値が、前記ストリーム暗号アルゴリズムの係数を選択する、請求項24に記載の装置。
【請求項２６】
前記ストリーム暗号生成器が、ストリーム暗号アルゴリズムに基づいて前記第2の乱数値を生成するように構成され、前記第1の乱数値が、前記ストリーム暗号生成器の前記内部状態を変える、請求項24に記載の装置。
【請求項２７】
前記第1の乱数値が1ビットの乱数値を含み、前記第2の乱数値が複数ビットの乱数値を含む、請求項10に記載の装置。
【請求項２８】
複数の行および複数の列に配置された磁気抵抗(MR)セルのアレイであって、各MRセルが少なくとも1つのMR素子を含む、アレイと、
MRセルの前記複数の行に結合された複数のワード線と、
MRセルの前記複数の列に結合された複数の選択線と、
前記複数の選択線に結合され、前記アレイ中の選択されたMRセルの抵抗を感知し乱数値を提供するように構成される、感知回路と、
前記複数の選択線に結合され、パルスを提供して前記アレイ中の前記MRセルの状態を変えるように構成される、複数のプログラム源とを含む装置であって、前記複数のプログラム源が、
前記選択されたMRセルが第1の方向に確率的に切り替えられるべきである時に、前記選択されたMRセルに結合される第1のプログラム源と、
前記選択されたMRセルが第2の方向に確率的に切り替えられるべきである時に、前記選択されたMRセルに結合される第2のプログラム源とを含む、装置。
【請求項２９】
前記複数のプログラム源が、電流パルスまたは電圧パルスを提供して、前記アレイ中の前記MRセルの前記状態を変えるように構成される、請求項28に記載の装置。
【請求項３０】
前記第1のプログラム源および前記第2のプログラム源の少なくとも1つが、前記選択されたMRセルの切り替えの確率の目標に基づいて決定される、可変の振幅、または可変のパルス期間、または可変の振幅と可変のパルス期間の両方を有するパルスを提供するように構成される、請求項28に記載の装置。
【請求項３１】
前記複数のプログラム源が、個々に設定されたパルス振幅、またはパルス期間、またはパルス振幅とパルス期間の両方を有する、請求項28に記載の装置。
【請求項３２】
前記選択されたMRセルが、単一の動作でプログラムされ、前記単一の動作において前記第1のプログラム源または前記第2のプログラム源から電流パルスまたは電圧パルスを加えられる、請求項28に記載の装置。
【請求項３３】
前記選択されたMRセルが、複数の動作でプログラムされ、前記複数の動作の各々において前記第1のプログラム源または前記第2のプログラム源から電流パルスまたは電圧パルスを加えられる、請求項28に記載の装置。
【請求項３４】
前記アレイ中のMRセルが、第1の速度で選択され感知されて、前記第1の速度よりも高い第2の速度で乱数値を生成する、請求項28に記載の装置。
【請求項３５】
各MRセルが、直列に結合された複数のMR素子を含む、請求項28に記載の装置。
【請求項３６】
各MRセルが、並列に結合された複数のMR素子を含む、請求項28に記載の装置。
【請求項３７】
各MRセル中の前記複数のMR素子が、一緒に結合されるフリー層と、やはり一緒に結合される固定層とを有する、請求項36に記載の装置。
【請求項３８】
前記感知回路のための基準電圧を提供するために使用される、少なくとも1つのMRセルをさらに含む、請求項28に記載の装置。
【請求項３９】
前記アレイ中の前記MRセルが、異なる形状、または異なるサイズ、または異なる厚さ、またはこれらの組合せのMR素子を含む、請求項28に記載の装置。
【請求項４０】
少なくとも1つの磁気抵抗(MR)素子を含み、前記少なくとも1つのMR素子に基づいて第1の値を提供するように構成される、エントロピー源と、
前記第1の値を受け取り処理して、前記エントロピー源との干渉を示すものを提供するように構成される、検出モジュールとを含み、
前記検出モジュールが、前記第1の値の圧縮を実行し、前記圧縮の出力速度に基づいて前記エントロピー源との干渉を検出するように構成される、装置。
【請求項４１】
前記検出モジュールが、前記第1の値の中の0の割合および1の割合に基づいて、前記エントロピー源との干渉を検出するように構成される、請求項40に記載の装置。
【請求項４２】
前記検出モジュールが、前記第1の値の中の連続する0の数および連続する1の数に基づいて、前記エントロピー源との干渉を検出するように構成される、請求項40に記載の装置。
【請求項４３】
前記検出モジュールが、0および1の所定のパターンが発生した数に基づいて、前記エントロピー源との干渉を検出するように構成される、請求項40に記載の装置。
【請求項４４】
乱数値を生成する方法であって、
磁気抵抗(MR)素子の磁化に基づいて決定される抵抗を有する前記MR素子に、静的電流を加えるステップであって、前記MR素子の抵抗は、静的電流が電流パルスと独立に印加されている間に変化するステップと、
前記MR素子に加えられた前記静的電流によって前記MR素子の抵抗を感知するステップと、
前記MR素子の前記感知された抵抗に基づいて、第1の乱数値を生成するステップとを含む、方法。
【請求項４５】
前記MR素子の前記抵抗を感知する前記ステップが、前記MR素子の前記抵抗を基準値と比較して、感知された値を得るステップを含み、前記第1の乱数値を生成する前記ステップが、前記感知された値をラッチングして前記第1の乱数値を得るステップを含む、請求項44に記載の方法。
【請求項４６】
前記第1の乱数値を処理して第2の乱数値を得るステップをさらに含む、請求項44に記載の方法。
【請求項４７】
前記第1の乱数値を処理する前記ステップが、暗号学的ハッシュ関数、誤差検出コード、またはストリーム暗号アルゴリズムの少なくとも1つに基づいて、前記第1の乱数値を処理するステップを含む、請求項46に記載の方法。
【請求項４８】
第1の乱数値の複数の列を、前記MR素子を含む複数のMR素子の抵抗を感知することによって生成するステップと、
第1の乱数値の前記複数の列を処理して第2の乱数値を得るステップとをさらに含む、請求項44に記載の方法。
【請求項４９】
前記MR素子との干渉を検出するステップをさらに含む、請求項44に記載の方法。
【請求項５０】
磁気抵抗(MR)素子の磁化に基づいて決定される抵抗を有する前記MR素子に、静的電流を加えるための手段であって、前記MR素子の抵抗は、静的電流が電流パルスと独立に印加されている間に変化する手段と、
前記MR素子に加えられた前記静的電流によって前記MR素子の抵抗を感知するための手段と、
前記MR素子の前記感知された抵抗に基づいて、第1の乱数値を生成するための手段とを含む、装置。
【請求項５１】
前記第1の乱数値を処理して第2の乱数値を得るための手段をさらに含む、請求項50に記載の装置。
【請求項５２】
第1の乱数値の複数の列を、前記MR素子を含む複数のMR素子の抵抗を感知することによって生成するための手段と、
第1の乱数値の前記複数の列を処理して第2の乱数値を得るための手段とをさらに含む、
請求項50に記載の装置。
【請求項５３】
少なくとも1つのプロセッサに、磁気抵抗(MR)素子の磁化に基づいて決定される抵抗を有する前記MR素子への静的電流の印加を指示させるためのコードであって、前記MR素子の抵抗は、静的電流が電流パルスと独立に印加されている間に変化するコードと、
前記少なくとも1つのプロセッサに、前記MR素子に加えられた前記静的電流による前記MR素子の抵抗の感知を指示させるためのコードと、
前記少なくとも1つのプロセッサに、前記MR素子の前記感知された抵抗に基づく第1の乱数値の生成を指示させるためのコードとを含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、「ENTROPY SOURCE WITH STT-MTJ SEMICONDUCTOR DEVICE FOR RANDOM NUMBER GENERATOR」という表題の、2011年9月20日に出願され、その全体が参照により本明細書に組み込まれる、仮米国出願第61/536,769号の優先権を主張する。
【０００２】
本開示は、全般に電子回路に関し、より詳細には、乱数値を生成するための技法に関する。
【背景技術】
【０００３】
乱数(RN)生成器は、様々な用途で乱数値を生成するために広く使用されている。たとえば、暗号セキュリティアルゴリズムを実装するコンピュータのようなデバイスは通常、乱数値(通常はランダムなバイナリビット)の発生源を必要とする。RN生成器は、暗号セキュリティアルゴリズムのために乱数値をコンピュータ様デバイスに提供するために、使用され得る。RN生成器は、RNGまたはランダムビット生成器(RBG)とも一般に呼ばれる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Kiyomoto他、「A Word-Oriented Stream Cipher Using Clock Control」
【発明の概要】
【発明が解決しようとする課題】
【０００５】
RN生成器は、ランダムビットの列を提供できる、エントロピー源によって実装され得る。十分なセキュリティ強度を確保するために、エントロピー品質および関連するセキュリティ強度をより簡単に定量化できるように、エントロピー源は、単純1階マルコフ過程によって最大限にモデル化され得る状態遷移を有する物理デバイスによって実装され得る。ランダムビットは、物理デバイスの状態遷移の列から導出され得る。しかしながら、エントロピー源に使用され得る大半の物理デバイスは、高価であり、多量の電力を必要とし、データの生成が遅い。さらに、これらの物理デバイスの状態遷移を単純マルコフ過程としてモデル化することは、困難または非現実的であることがあり、これは、物理デバイスの性能を定量化することをより難しくし得る。
【課題を解決するための手段】
【０００６】
1つまたは複数の磁気抵抗(MR)素子に基づいて乱数値を生成できるエントロピー源およびRN生成器が、本明細書で説明される。一態様では、低エネルギーのエントロピー源は、MR素子および感知回路を含み得る。MR素子は、静的電流を加えられてよく(かつ電流パルスを加えられなくてよく)、MR素子の磁化に基づいて決定される可変抵抗を有し得る。静的電流は、振幅および極性が不変の電流であり、たとえば電流パルスではない。MR素子は、異なる磁化状態の間を自発的かつランダムに遷移することがあり、これらの遷移がMR素子の抵抗に影響し得る。感知回路は、MR素子の抵抗を感知し、MR素子の感知された抵抗に基づいて乱数値を提供することができる。
【０００７】
別の態様では、RN生成器は、エントロピー源およびポスト処理モジュールを含み得る。エントロピー源は、少なくとも1つのMR素子を含んでよく、少なくとも1つのMR素子に基づいて第1の乱数値を提供することができる。ポスト処理モジュールは、第1の乱数値を受け取り処理し(たとえば、暗号学的ハッシュ関数、誤差検出コード、ストリーム暗号アルゴリズムなどに基づいて)、ランダム性の特性が向上した第2の乱数値を提供することができる。
【０００８】
さらに別の態様では、エントロピー源は、MRセルのアレイおよび感知回路を含み得る。MRセルのアレイは、複数の行および複数の列に配置され得る。各MRセルは、少なくとも1つのMR素子を含み得る。複数のワード線が、MRセルの複数の行に結合され得る。複数の選択線が、MRセルの複数の列に結合され得る。複数のビット線も、MRセルの複数の列に結合され得る。感知回路は、複数の選択線に結合されてよく、アレイ中のMRセルの抵抗を感知することができる。アレイ中のMRセルは、第1の速度で選択され(たとえば、交互に)感知されて、第1の速度よりも高くてよい第2の速度で乱数値を生成することができる。
【０００９】
さらに別の態様では、干渉検出モジュールは、エントロピー源および検出モジュールを含み得る。エントロピー源は、少なくとも1つのMR素子を含んでよく、少なくとも1つのMR素子に基づいて第1の値を提供することができる。検出モジュールは、第1の値を受け取り処理して、エントロピー源との干渉を示すものを提供することができる。検出モジュールは、第1の値における0の割合および1の割合、または、第1の値における連続する0の数および連続する1の数、または、第1の値において0および1の所定のパターンが発生する数、または、第1の値の圧縮の出力速度などのような、様々な基準に基づいて、エントロピー源との干渉を検出することができる。
【００１０】
本開示の様々な態様および特徴が、以下でさらに詳細に説明される。
【図面の簡単な説明】
【００１１】
【図１】RN生成器のブロック図である。
【図２Ａ】低エネルギーのエントロピー源の1つの設計を示す図である。
【図２Ｂ】低エネルギーのエントロピー源の1つの設計を示す図である。
【図３】高エネルギーのエントロピー源の設計を示す図である。
【図４】図3の制御回路によって実行される処理を示す図である。
【図５】MRセルのアレイを伴うエントロピー源の設計を示す図である。
【図６Ａ】MRセルの1つの設計を示す図である。
【図６Ｂ】MRセルの1つの設計を示す図である。
【図６Ｃ】MRセルの1つの設計を示す図である。
【図７Ａ】RN生成器のある設計を示す図である。
【図７Ｂ】RN生成器のある設計を示す図である。
【図８Ａ】RN生成器のある設計を示す図である。
【図８Ｂ】RN生成器のある設計を示す図である。
【図９】RN生成器のある設計を示す図である。
【図１０】RN生成器のある設計を示す図である。
【図１１】RN生成器のある設計を示す図である。
【図１２】RN生成器のある設計を示す図である。
【図１３】干渉検出回路を示す図である。
【図１４】乱数値を生成するための処理を示す図である。
【図１５】ワイヤレスデバイスのブロック図である。
【発明を実施するための形態】
【００１２】
1つまたは複数のMR素子に基づいて乱数値を生成できるエントロピー源およびRN生成器が、本明細書で開示される。MR素子は、その磁化とともに変化する抵抗を有する素子である。MR素子は、磁気トンネル接合(MTJ)半導体デバイス、スピントルク注入磁気トンネル接合(STT-MTJ)半導体デバイス、または、磁化に対する可変の抵抗を伴う何らかの他のデバイスであってよい。STT-MTJデバイスは、(他のMTJデバイスのように磁界によってプログラムされるのではなく)デバイスに電流を流すことによってプログラムされ/書き込まれる、MTJデバイスである。エントロピー源としてMR素子(たとえば、STT-MTJデバイス)を使用することは、製造の容易性、低コスト、良好な性能、およびエントロピーとセキュリティ強度とを定量化する能力などの、いくつかの利点をもたらし得る。
【００１３】
エントロピー源およびRN生成器は、ワイヤレスデバイス、携帯電話、スマートフォン、タブレット、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、ネットブック、スマートブックなどのような、様々な電子デバイスに使用され得る。エントロピー源およびRN生成器はまた、暗号化、ノイズ源(たとえば、試験装置のための)、確率論のための列の生成(たとえば、確率変数を表す列)、モンテカルロシミュレーション、最適化問題、遺伝的アルゴリズムなどのような、様々な用途に使用され得る。
【００１４】
図1は、RN生成器100の設計のブロック図を示す。この設計では、RN生成器100は、エントロピー源110およびポスト処理モジュール120を含む。エントロピー源110は、1つまたは複数のMR素子(たとえば、1つまたは複数のSTT-MTJデバイス)を含み、「1」または「0」のランダムビットであり得る第1の乱数値を生成する。「ランダム」および「予測不可能」という用語は、交換可能に使用され得る。図1に示される設計では、ポスト処理モジュール120は、エントロピー源110から第1の乱数値を受け取り、真のランダムな源からの乱数値と(統計的に)よりよく一致する第2の乱数値を生成する。モジュール120によるポスト処理は、ランダム性の特性を向上させることができる。第2の乱数値は、バイナリ値または非バイナリ値であり得る。図1に示されない別の設計では、第1の乱数値は、ポスト処理を何ら伴わずに、第2の乱数値として直接提供され得る。この設計では、RN生成器は、エントロピー源110のみを含む。
【００１５】
一態様では、低エネルギーのエントロピー源は、静的電流(たとえば、小さいDC電流)に基づいて動作する、1つまたは複数のMR素子を含み得る。静的電流は、感知電流とも呼ばれることがあり、MR素子の状態を切り替えるのに通常必要な電流の量よりも少なくてよい。電流パルスは、抵抗の変化を引き起こすためには、1つまたは複数のMR素子に加えられない。むしろ、熱ノイズおよび/または他の現象による(1つまたは複数の)MR素子の抵抗の変化が、乱数値を生成するために検出され使用される。(1つまたは複数の)MR素子に対して静的電流を使用することは、少ない電力消費、簡単な回路設計などのような、様々な利点をもたらし得る。低エネルギーのエントロピー源は、低エネルギーの現象(たとえば、熱ノイズ)を使用してエントロピーを生成し、一方、高エネルギーのエントロピー源は、より高エネルギーの刺激(たとえば、電流パルス)を使用してエントロピーを生成する。低エネルギーのエントロピー源は、高エネルギーのエントロピー源からのエントロピーに匹敵し得る、量および質が適切なエントロピーを生成することができる。
【００１６】
図2Aは、図1のエントロピー源110の一設計である、低エネルギーのエントロピー源110xの概略図を示す。エントロピー源110xは、抵抗210、MR素子220、および感知回路230を含む。抵抗210は、1つの端子が第1の基準電圧(VREF1)に結合され、第2の端子がノードXに結合される。抵抗210はまた、電圧VREF1ではなく電源電圧(VDD)にも結合され得る。MR素子220は、一方の端子がノードXに結合され、他方の端子が回路のグラウンドに結合される。感知回路230は、センスアンプ240(たとえば、比較器)と、Dフリップフロップ250とを含む。センスアンプ240は、非反転入力がノードXに結合され、反転入力が第2の基準電圧(VREF2)を受け取り、出力がフリップフロップ250のD入力に結合される。フリップフロップ250はまた、そのクロック入力においてクロックを受け取り、そのQ出力において第1の乱数値(たとえば、ランダムビット)を提供する。フリップフロップ250を使用することの利点は、フリップフロップの出力のすべての遷移がクロックと同期するということである。
【００１７】
MR素子220は、STT-MTJデバイスまたは何らかの他のタイプのMR素子を含み得る。STT-MTJデバイスは、中心に磁気トンネル層を伴う磁性材料の2つの層のサンドイッチによって形成される。2つの導体が、磁性材料の2つの層に接続される。STT-MTJデバイスの抵抗は可変であり、2つの層の相対的な磁化に依存する。磁性材料の2つの層のうちの一方は、通常、固定された磁化(スピン偏極)を有し、固定層と呼ばれ得る。磁性材料の2つの層のうちの他方は、磁化を切り替えることができ、フリー層と呼ばれ得る。2つの層の相対的な磁化は、駆動電流が加えられていない時でも、自発的に(たとえば、熱ノイズ/エネルギーにより)切り替わり得る。STT-MTJデバイスの抵抗は、2つの層の相対的な磁化に依存する。
【００１８】
図2Aに示される設計では、抵抗分圧器が、MR素子220の抵抗を感知するために使用される。具体的には、ノードXにおける電圧(VX)は、抵抗210の一定の抵抗R1と、MR素子220の可変抵抗R2と、抵抗分圧器に印加される電圧VREF1とに依存する。電圧VXは、次のように表され得る。
【００１９】
【数１】
0005826400.tif 000002
【００２０】
式(1)に示されるように、MR素子220の抵抗R2が、磁性材料の2つの層の相対的な磁化の自発的な切り替わりによって変化すると、電圧VXもそれに従って変化する。センスアンプ240は、電圧VXを電圧VREF2と比較し、電圧VXが電圧VREF2よりも高ければhighの出力電圧を提供し、そうでなければlowの出力電圧を提供する。抵抗210の抵抗R1、電圧VREF1、および/または電圧VREF2は、MR素子220の抵抗が目標値にある時に電圧VXが電圧VREF2に近くなるように、選択され得る。
【００２１】
センスアンプ240は、MR素子220の抵抗を感知し、感知された抵抗に基づいてバイナリの出力値を提供することができる。センスアンプ240からのバイナリの出力値は、クロックに基づいてフリップフロップ250によってサンプリングされ、第1の乱数値を得る。フリップフロップ250によるセンスアンプ240からの出力値のサンプリングは、後続のデジタル回路のセットアップタイムおよびホールドタイムとの適合を確実にし得る。
【００２２】
図2Aの設計は、低エネルギーの現象に基づいて、MR素子220の抵抗の変化を検出する。具体的には、MR素子220の抵抗は、駆動電流を何ら伴うことなく、自由な発振により変化する。この設計により、エントロピー源110xのための回路が比較的簡単になり得る。この設計はまた、MR素子220の消耗を軽減し、その信頼性を向上させ得る。MR素子はまた、熱ノイズおよび/または他のエネルギー源による動揺のもとで自発的な状態の切り替わりをMR素子がより容易に起こし得るように、設計され製造され得る。たとえば、STT-MTJデバイスは、自発的な状態の切り替わりを起こし得るように、弱い保持力を伴って、かつ/または安定した軸を伴わずに、実装され得る。
【００２３】
図2Bは、図1のエントロピー源110の別の設計である、低エネルギーのエントロピー源110yの概略図を示す。エントロピー源110yは、抵抗210、MR素子220、および感知回路230を含み、これらは図2Aについて上で説明されたように結合されるが、抵抗210は、電圧VREF1ではなく電圧VDDに結合される。エントロピー源110yはさらに、抵抗212および214によって形成される分圧器を含む。抵抗212は、電圧VDDとノードYとの間に結合される。抵抗214は、ノードYと回路のグラウンドとの間に結合される。センスアンプ240は、非反転入力がノードXに結合され、反転入力がノードYに結合され、出力がフリップフロップ250のD入力に結合される。フリップフロップ250はまた、そのクロック入力においてクロックを受け取り、そのQ出力において第1の乱数値(たとえば、ランダムビット)を提供する。
【００２４】
図2Bは、ブリッジ回路を使用して、MR素子220の抵抗を測定する。ブリッジ回路は、センスアンプ240が、ノードXの電圧をノードYの電圧と比較することを可能にする。したがって、MR素子220のインピーダンスを感知するのに、基準電圧VREF1およびVREF2が必要ではなく、これは回路設計を簡単にし得る。
【００２５】
図2Aおよび図2Bは、抵抗分圧器を使用した、MR素子220の可変抵抗を感知する2つの設計を示す。MR素子220の可変抵抗は、他の方式でも感知され得る。別の設計では、電流源が、静的電流をMR素子220に加えることができる(たとえば、抵抗210は省略される)。そうすると、ノードXの電圧VXは、静的電流(これは既知である)とMR素子220の抵抗(これは測定されている)とに依存する。さらに別の設計では、別の抵抗が、MR素子220と直列に接続されてよく、電圧が直列の組合せに印加されてよい。要素の1つ(MR素子または抵抗)にかかる電圧が感知され得る。さらに別の設計では、MR素子220は、当業者によって知られているブリッジ回路のいずれであってもよい「ブリッジ」回路中に配置されてよい。ブリッジ回路は、基準電圧(たとえば、図2Aの電圧VREF2)の必要をなくし得る。
【００２６】
さらに別の設計では、第2のMR素子が、センスアンプ240の反転入力に結合されてよく、基準電圧を生成するために使用されてよい。抵抗が、第2のMR素子と電源電圧との間に結合されてよく、または、電流源が、静的電流を第2のMR素子に加えてよい。非反転入力に結合されるMR素子220およびセンスアンプ240の反転入力に結合される第2のMR素子は、基準電圧の良好な整合およびより良好な追従を実現するために、異なる設計、異なる形状、異なるサイズ、異なる厚さ、および/または、異なる他の特性を有してよい。
【００２７】
一般に、MR素子220の抵抗は、(i)MR素子に電流を流して電圧を感知することによって、または、(ii)MR素子に電圧を印加して電流を感知することによって、測定され得る。選択肢(i)では、少量の電流が、MR素子220のインピーダンス(およびしたがって状態)を感知するために使用され得る。この少量の電流は、MR素子220の磁化を確率的に反転させるのに必要な量よりも、かなり少なくてよい。MR素子220の全体の磁気モーメントも測定され得る。
【００２８】
図2Aおよび図2Bは、単一のMR素子220を伴う、低エネルギーのエントロピー源の2つの設計を示す。一般に、低エネルギーのエントロピー源は、任意の方法で結合され得る、任意の数のMR素子を含み得る。一設計では、複数のMR素子は直列に結合され得る。別の設計では、複数のMR素子は並列に結合され得る。MR素子の直列または並列の組合せは、ノードXと回路のグラウンドとの間に結合され得る。複数のMR素子の使用は、(i)より多くのMR素子からのエントロピーの収集を改善し、(ii)任意の所与のMR素子の歩留まりは100%未満であるので冗長なMR素子により集積回路(IC)の歩留まりを改善し、(iii)MR素子は通常サイズが小さいのでコストと回路/ダイの面積の増加を最小限にし得る。
【００２９】
エントロピー源は、書込みパルス(たとえば、電流パルス)を加えることによって変化し得る抵抗を有する、1つまたは複数のMR素子を含み得る。この場合、(1つまたは複数の)MR素子の抵抗の変化は、高エネルギーの現象に基づいて検出され得る。高エネルギーの現象に基づいて(1つまたは複数の)MR素子を動作させることは、エントロピー源のよりロバストな動作をもたらし得るが、(1つまたは複数の)MR素子のより早い消耗を引き起こし得る。
【００３０】
図3は、図1のエントロピー源110の別の設計である、高エネルギーのエントロピー源110zの概略図を示す。エントロピー源110z内で、抵抗310、312、および314は、一端がノードEに結合され、他端が制御回路340の3つのポートに結合される。MR素子320は、一端がノードEに結合され、他端が回路のグラウンドに結合される。センスアンプ330(たとえば、比較器)は、非反転入力がノードEに結合され、反転入力が基準電圧(VREF)を受け取り、出力が制御回路340の入力に結合される。制御回路340はまた、そのクロック入力においてクロックを受け取り、その出力において第1の乱数値を提供する。別の設計では、センスアンプ330は、第1の乱数値を直接提供することができる。
【００３１】
制御回路340は、書込みパルスを生成して、MR素子320の状態を変えることができる。MR素子320は、任意の所与の瞬間において、状態「0」または「1」のいずれかであり得る。状態「0」は、MR素子320の抵抗が目標値より小さいことに対応してよく、状態「1」は、MR素子320の抵抗が目標値より大きいことに対応してよい。
【００３２】
一般に、パルスは、電流パルスまたは電圧パルスであってよく、正または負のいずれかの極性であってよい。一設計では、制御回路340は、(i)第1のスイッチを介して抵抗312に結合された正パルス生成器と、(ii)第2のスイッチを介して抵抗314に結合された負パルス生成器とを含み得る。正の電流パルスは、抵抗312を介してMR素子320に加えられ、MR素子320の状態を「0」から「1」に反転させることができる。負の電流パルスは、抵抗314を介してMR素子320に加えられ、MR素子320の状態を「1」から「0」に反転させることができる。正のパルスは、第2のスイッチを開き、正パルス生成器を有効にし、第1のスイッチを閉じることによって、抵抗312を介してMR素子320に加えられ得る。負のパルスは、第1のスイッチを開き、負パルス生成器を有効にし、第2のスイッチを閉じることによって、抵抗314を介してMR素子320に加えられ得る。抵抗312および314はまた、2つの電流経路によって置き換えられ得る。各パルス生成器は、適切な振幅の電圧または電流パルス、たとえば、100マイクロアンペア(μA)または何らかの他の値の電流パルスを生成することができる。パルスは、MR素子320の磁性材料の2つの層の相対的な磁化を、何らかの確率で変化させ得る。相対的な磁化の変化は、MR素子320の抵抗を変化させ得る。
【００３３】
別の設計では、制御回路340は、単一のパルス生成器を含み得る。スイッチの第1のセットは、このパルス生成器が、(i)抵抗312を介したMR素子320に対する正のパルス、または(ii)抵抗314を介したMR素子320に対する負のパルスを生成できるように、パルス生成器を接続することができる。さらに別の設計では、1つまたは複数のパルス生成器は、抵抗312および314と電源との間に結合されるスイッチを制御することによって形成され得る。パルスの幅は、スイッチの閉鎖の期間によって決定され得る。
【００３４】
一設計では、書込みパルスはMR素子320に加えられてよく、書込みパルスを加えた後にMR素子320の抵抗が感知され得る。別の設計では、MR素子320の抵抗が感知されてよく、次いで書込みパルスがMR素子320に加えられ、その状態を場合によっては変化させ得る。さらに別の設計では、MR素子320のインピーダンスは、書込みパルスがMR素子320に加えられている間に感知され得る。
【００３５】
図4は、図3の制御回路340によって実行される処理400の設計の流れ図を示す。最初に、感知/読取り電流が図3の抵抗310を介して流されてよく、MR素子320の状態がセンスアンプ330によって感知され得る(ブロック412)。MR素子320の感知された状態が「0」であるか「1」であるかの判定が行われ得る(ブロック414)。ブロック414において状態「0」が感知される場合、エントロピー累算器に論理値「0」が提供され得る(ブロック416)。抵抗310を介した感知電流が停止されてよく、MR素子320の磁化を状態「1」に反転させる傾向のある書込みパルス(たとえば、正の電流パルス)が加えられ得る(ブロック418)。そうではなく、ブロック414において状態「1」が感知される場合、エントロピー累算器に論理値「1」が提供され得る(ブロック420)。抵抗310を介した感知電流が停止されてよく、MR素子320の磁化を状態「0」に反転させる傾向のある書込みパルス(たとえば、負の電流パルス)が加えられ得る(ブロック422)。処理は、ブロック418または422の後にブロック412に戻る。
【００３６】
図3の制御回路340は、様々な方法で実装され得る。一設計では、制御回路340は、上で説明されたように、抵抗312に結合された正パルス生成器と、抵抗314に結合された負パルス生成器と、スイッチとを含み得る。スイッチは、正パルス生成器または負パルス生成器のいずれかを、任意の所与の瞬間において有効にし、MR素子320へと接続することができる。別の設計では、制御回路340は、その出力がスイッチを介して正または負でMR素子320の2つの端子の間に与えられ得る、単一のパルス生成器を含み得る。この設計では、MR素子320の2つの端子は、パルス生成器にまたがって配置されてよく、抵抗312および314は、パルス生成器を含むブロックへと吸収されてよい。さらに別の設計では、回路は、MR素子320の一方の端子を電源に接続し(たとえば、抵抗310を介して)、MR素子320の他方の端子を回路のグラウンドに接続することができる。電源への接続と回路のグラウンドへの接続の切り替えは、MR素子320を状態「0」に反転させることが望まれているか、状態「1」に反転させることが望まれているかに基づいて、選択され得る。
【００３７】
一設計では、MR素子320のために制御回路340によって生成される各書込みパルスがMR素子320の状態を約50%の確率で切り替えるように、エントロピー源110zが動作し得る。制御回路340は、約50%の確率の状態の切り替えを実現するように、書込みパルスの振幅および/もしくは期間、ならびに/または、書込みパルス間の間隔を制御するための、回路を含み得る。たとえば、制御回路340内のフィードバック回路(状態機械など)が、十分長い時間にわたって、センスアンプ330によって提供される「0」および「1」の値の数を平均することができ、MR素子320の切り替えの確率が50%になる点に向かって書込みパルスを調整し(たとえば、電圧、電流、および/または書込みパルスの期間を調整し)、センスアンプ330からより偏りのない出力を得ることができる。
【００３８】
別の設計では、制御回路340は、状態が切り替わるまで、一連の書込みパルスをMR素子320に加えることができる。MR素子320の状態を切り替えるために加えられる書込みパルスの数が、第1の乱数値として提供され得る。MR素子320は、一連の書込みパルスが加えられる前に、初期状態にリセットされ得る。
【００３９】
抵抗分圧器は、図2Aおよび図2Bの抵抗210およびMR素子220と同様に、一定の抵抗を有する抵抗310および可変抵抗を有するMR素子320によって形成される。MR素子320の抵抗は、センスアンプ330によってノードEの電圧(VE)を電圧VREFと比較することによって、感知され得る。MR素子320の抵抗は、他の方式でも感知され得る。いずれの場合でも、センスアンプ330は、MR素子320の感知された抵抗に基づいて、バイナリの出力値を提供することができる。センスアンプ330からのバイナリの出力値は、クロックに基づいて制御回路340によってサンプリングされ、第1の乱数値を得ることができる。
【００４０】
図3は、書込みパルスによってMR素子320の抵抗を変え、抵抗分圧器によってMR素子320の抵抗を感知する、設計を示す。MR素子320の抵抗は、他の方式でも変えられ得る。たとえば、MR素子320の抵抗は、強い外部磁界によって変えられ得る。
【００４１】
図3は、単一のMR素子320を伴うエントロピー源の設計を示す。一般に、エントロピー源は、直列に、並列に、または何らかの他の方式で結合され得る、任意の数のMR素子を含み得る。複数のMR素子の使用は、エントロピー収集とともにICの歩留まりを改善することができる。
【００４２】
図5は、図1のエントロピー源110のさらに別の設計である、エントロピー源110wの概略図を示す。エントロピー源110wは、M行およびN列のMRセル520を伴うMxNのアレイ510を含み、一般に、M>1かつ/またはN>1である。各MRセル520は、以下で説明されるように、様々な設計に基づいて実装され得る。各列は、M個のMRセル520aj〜520mj、スイッチ522j〜528j、ならびにプログラム(「Prog.」)源532jおよび534jを含み、jは列のインデックスであり、j∈{a,...,n}である。各列jの中のM個のMRセル520aj〜520mjは、その列に対するビット線(BL)542jおよび選択線(SL)544jに接続される。各列jの中のM個のMRセル520aj〜520mjはさらに、それぞれ、M個のワード線(WL)546a〜546mに接続される。各列jに対して、スイッチ522jは、プログラム源532jとビット線542jの第1の端部との間に結合され、スイッチ524jは、プログラム源534jと選択線544jの第1の端部との間に結合される。各列jに対して、スイッチ526jは、ビット線542jの第2の端部と回路のグラウンドとの間に結合され、スイッチ528jは、選択線544jの第2の端部と回路のグラウンドとの間に結合される。各列jに対して、ビット線542jの第2の端部および選択線544jの第2の端部は、感知回路550に与えられる。感知回路550は、関連するワード線およびビット線によって選択される、各MRセルの抵抗を感知することができる。感知回路550は、選択されたMRセルの感知された抵抗に基づいて、第1の乱数値を提供する。
【００４３】
各列jに対して、プログラム源532jは、列jの中のMRセル520aj〜520mjの状態を「0」から「1」に変えるために使用され得る。プログラム源534jは、MRセル520aj〜520mjの状態を「1」から「0」に変えるために使用され得る。したがって、プログラム源532jおよび534jは、MRセル520aj〜520mjに書き込むために使用され得る。一設計では、同じプログラム源532jおよび534jが、(i)MR素子520aj〜520mjの状態を変えるために使用される書込み回路と(ii)MR素子520aj〜520mjの状態を感知するために使用される読取り回路の両方に対して使用され得る。
【００４４】
図6Bに示されるように、一設計では、プログラム源532および534は、たとえば、直列に結合されたMR素子を含むMRセル520に対する、電流源であり得る。図6Cに示されるように、別の設計では、プログラム源532および534は、たとえば、並列に結合されたMR素子を含むMRセル520に対する、電圧源であり得る。
【００４５】
一設計では、プログラム源532および534は、振幅/大きさおよび幅が一定の電流パルスまたは電圧パルスを提供する、定電流源または定電圧源であってよい。別の設計では、プログラム源532および534は、振幅および/または幅が調整可能な電流パルスまたは電圧パルスを提供する、設定可能な電流源または電圧源であってよい。MRセルは、任意の所与の瞬間において、状態PまたはAPのいずれかであり得る。状態Pは、MR素子の論理値「0」と等価であってよく、状態APは、MR素子の論理値「1」と等価であってよい。一設計では、プログラム源532および534は、状態Pから状態APへの第1の方向と、状態APから状態Pへの第2の方向という、2つの方向へのMRセル520の所望のプログラムを提供するように独立に構成され得る。
【００４６】
所与のMRセルの状態が切り替わる確率は、MRセルに加えられるプログラムパルス(たとえば、電流パルスまたは電圧パルス)の振幅に依存し得る。第1の方向へと状態を切り替える所望の/目標の確率は、プログラム源532からのプログラムパルスの振幅を調整することによって、得られ得る。第2の方向へと状態を切り替える所望の確率は、プログラム源534からのプログラムパルスの振幅を調整することによって、得られ得る。たとえば、プログラム源532からのパルスは、約50%の確率で第1のMRセルをAP状態へと切り替えさせるように、第1のMRセルに加えられ得る。プログラム源534からのパルスは、約50%の確率で第2のMRセルをP状態へと切り替えさせるように、第2のMRセルに加えられ得る。一般に、第1の方向または第2の方向へと状態を切り替える所望の/目標の確率は、プログラムパルスの振幅および/またはプログラムパルスの長さを調整することによって、得られ得る。
【００４７】
プログラム源532または534は、(i)(たとえば、20%と80%との間の確率で)MRセルの状態を確率的に切り替えることができ、または、(ii)(たとえば、90%を超える高い確率で)MRセルの状態を決定論的に切り替えることができる、適切な振幅のプログラムパルスを提供するように構成され得る。たとえば、プログラム源532または534は、(i)20%の確率的な切り替えのための第1の振幅(たとえば、80μA)のプログラムパルス、または、(ii)99%の決定論的な切り替えのための第2の振幅(たとえば、150μA)のプログラムパルスを提供することができる。プログラム源532および534は、状態Pから状態AP、さらに状態APから状態Pという両方の方向への、MRセルの所望の/最適な確率的なプログラムを可能にし得る。
【００４８】
MRセルは、たとえば、1つのプログラム源532または534からの単一のプログラムパルスによって、単一の動作において第1の方向または第2の方向のいずれかへと確率的にプログラムされ得る。MRセルはまた、MRセルからのエントロピーの品質および量を改善するために、複数の動作において確率的にプログラムされ得る。たとえば、MRセルは、第1の動作において第1の切り替えの確率で、次いで、第2の動作において第2の切り替えの確率で、確率的にプログラムされ得る。第1および第2の切り替えの確率は、好適である50%の切り替えの確率に近くても近くなくてもよい。
【００４９】
一設計では、MRセルは次のようにプログラムされ得る。プログラムカウントが、0へと初期化され得る。MRセルは、その現在の状態を判定するために読み取られ得る。MRセルは次いで、好適である50%の切り替えの確率に近くても近くなくてもよい特定の確率で、反対の状態へ切り替わるようにプログラムされ得る。次いで、プログラムカウントがインクリメントされ得る。プログラムカウントが総カウント(たとえば、16)よりも少ない場合、MRセルは、上で説明されたステップを繰り返すことによって、もう一度プログラムされ得る。一般に、切り替えの確率が好適である50%の切り替えの確率から離れている場合でも、MRセルからのエントロピーの品質は、総カウントが次第に大きくなりプログラム動作が次第に多くなると、改善する。
【００５０】
一設計では、エントロピー源110wからの第1の乱数値が、第2の乱数値として直接使用され得る。別の設計では、エントロピー源110wからの第1の乱数値は、より良好なランダム性の特性を有する第2の乱数値を生成するために、ポスト処理モジュール120によってさらに処理され得る。この設計では、エントロピー源110wは、エントロピー生成のために使用されてよく、所望の品質または量のエントロピーは、総カウントを調整することによって得られ得る。
【００５１】
エントロピー源110wは、状態の切り替えの広範囲の確率(たとえば、1%から99%まで)に対して、所望の品質および量のエントロピーを生成することができる。たとえば、エントロピー源110wは、切り替えの確率が好適である50%の切り替えの確率に近くない場合でも、かつ、切り替えの確率が0%または100%ではない限りその確率が未知であっても、「0」である約50%の確率と「1」である約50%の確率とを伴って、各ランダムビットを生成することができる。総カウントは、所望の品質および量のエントロピーを提供するように選択され得る。エントロピー源110wは、約50%の切り替えの確率を得るようにプログラム源532および534からのプログラムパルスの振幅および/または幅を調整する必要なく、所望の品質および量のエントロピーを生成することができる。切り替えの確率が広範囲でも、「0」または「1」である確率がほぼ等しいランダムビットを生成できることは、非常に望ましいことがあり、それは、ICプロセス、電圧、および温度(PVT)の変動を通じて50%の切り替えの確率を得ることは、困難または非現実的であり得るからである。
【００５２】
図5のスイッチ522〜528は、Nチャネル金属酸化膜半導体(NMOS)トランジスタ、Pチャネル金属酸化膜半導体(PMOS)トランジスタ、および/または他のタイプのトランジスタによって実装され得る。各列jに対して、スイッチ524jおよび526jは、列jに対する第1の制御信号Ujによって制御され、スイッチ522jおよび528jは、列jに対する第2の制御信号Vjによって制御される。
【００５３】
図6Aは、図5のMRセル520の各々に対して使用され得る、MRセル520aの設計を示す。この設計では、MRセル520aは、単一のMR素子620(たとえば、STT-MTJデバイス)とNMOSトランジスタ622とを含む。NMOSトランジスタ622は、ドレインが選択線(SL)に結合され、ゲートがワード線(WL)に結合され、ソースがMR素子620の一方の端子に結合される。MR素子620の他方の端子は、ビット線(BL)に結合される。NMOSトランジスタ622は、(i)ソース線とビット線との間にMR素子620を接続するためにオンにされてよく、または、(ii)ソース線およびビット線からMR素子620を切断するためにオフにされてよい。
【００５４】
図6Bは、図5のMRセル520の各々に対しても使用され得る、MRセル520bの設計を示す。この設計では、MRセル520bは、直列に結合される複数(K個)のMR素子620a〜620kとNMOSトランジスタ622とを含む。NMOSトランジスタ622は、ドレインが選択線(SL)に結合され、ゲートがワード線(WL)に結合され、ソースが最も上のMR素子620aのフリー層の端子に結合される。MR素子620は、1つのSTT-MTJデバイス(たとえば、STT-MTJデバイス620a)の固定層が次のSTT-MTJデバイス(たとえば、STT-MTJデバイス620b)のフリー層に結合されるように結合され得る、STT-MTJデバイスであり得る。最も下のMR素子620kの固定層の端子はビット線(BL)に結合される。NMOSトランジスタ622は、(i)ソース線とビット線との間にMR素子620a〜620kを接続するためにオンにされてよく、または、(ii)ソース線およびビット線からMR素子620a〜620kを切断するためにオフにされてよい。
【００５５】
図6Cは、図5のMRセル520の各々に対しても使用され得る、MRセル520cの設計を示す。この設計では、MRセル520cは、並列に結合される複数(K個)のMR素子620a〜620kとNMOSトランジスタ622とを含む。NMOSトランジスタ622は、ドレインが選択線(SL)に結合され、ゲートがワード線(WL)に結合され、ソースがK個のMR素子620a〜620kのフリー層の端子に結合される。MR素子620は、すべてのSTT-MTJデバイスのフリー層が一緒に結合され、すべてのSTT-MTJデバイスの固定層も一緒に結合されるように結合され得る、STT-MTJデバイスであり得る。K個のMR素子620a〜620kの固定層の端子はビット線(BL)に結合される。NMOSトランジスタ622は、(i)ソース線とビット線との間にMR素子620a〜620kを接続するためにオンにされてよく、または、(ii)ソース線およびビット線からMR素子620a〜620kを切断するためにオフにされてよい。
【００５６】
図5に戻って参照すると、プログラム源532および534は、MRセル520が図6Bの直列に結合されるMRセル520bによって実装される場合、電流源であり得る。プログラム源532および534は、MRセル520が図6Cの並列に結合されるMRセル520cによって実装される場合、電圧源であり得る。
【００５７】
図5のエントロピー源110wは次のように動作し得る。行iおよび列jの所与のMRセル520ijの状態は、(i)行iに対するワード線WLiをアクティブ化してMRセル520ijに対するNMOSトランジスタ622をオンし、(ii)列jに対するスイッチ522j〜528jを開き、(iii)BLj線とSLj線との間の抵抗を感知することによって、感知され得る。MRセル520ijの状態は、(i)行iに対するワード線WLiをアクティブ化し、(ii)列jに対するプログラム源532jをMRセル520ijに印加し、(iii)列jに対するスイッチ522jおよび528jを閉じ、(iv)列jに対するスイッチ524jおよび526jを開くことによって、「0」から「1」に変更され得る。MRセル520ijの状態は、(i)行iに対するワード線WLiをアクティブ化し、(ii)列jに対するプログラム源534jをMRセル520ijに印加し、(iii)列jに対するスイッチ524jおよび526jを閉じ、(iv)列jに対するスイッチ522jおよび528jを開くことによって、「1」から「0」に変更され得る。所与の列の中の複数のMR素子は、これらのMR素子に対するワード線をアクティブ化することによって、同時に感知され得る。異なるMRセル520は、これらのMRセルに対する制御線を適切にアクティブ化することによって、異なるクロック周期で感知され得る。
【００５８】
一設計では、基準アレイが、アレイ510中のMR素子520の抵抗および状態を感知するために使用され得る。一設計では、基準アレイは、MRアレイ510と同様(たとえば、同一)であり得る。別の設計では、基準アレイは、MRアレイ510と異なっていてよい。たとえば、アレイ510中のMR素子は、たとえば、異なる設計、異なる形状、サイズ、厚さなどにより、基準アレイ中のMR素子と異なっていてよい。基準アレイはまた、MR素子の代わりにポリ抵抗によって実装され得る。
【００５９】
エントロピー源は、上で説明された利点を得るために、(たとえば、図5に示されるような)複数のMR素子またはセルを含み得る。そのようなエントロピー源は、エントロピー生成の性能を改善するために、様々な方法で動作し得る。
【００６０】
一設計では、エントロピー生成速度は、複数のMR素子(たとえば、数百または数千のMR素子)の出力を交互配置または多重化することによって、向上し得る。たとえば、単一のMR素子は、10MHzの速度で感知されてよく、10MHzのエントロピー生成速度をサポートし得る。10GHzというはるかに高いエントロピー生成速度が、1000個のMR素子を順次感知して、これらのMR素子の出力を交互配置することによって実現され得る。
【００６１】
別の設計では、電力消費および切り替え電流が、複数のMR素子の出力を多重化することによって減らされ得る。たとえば、単一のMR素子は、10MHzのエントロピー生成速度を得るために、100ns以下の切り替えパルスによって10MHzの速度で感知されてよい。同じ10MHzのエントロピー生成速度が、1μs以下の切り替えパルスによって10個のMR素子を順次感知し、これらのMR素子の出力を交互配置することによって、実現され得る。より長い切り替えパルスは、電力消費を減らし得る。
【００６２】
別の態様では、RN生成器は、たとえば図1に示されるような、エントロピー源およびポスト処理モジュールを含み得る。エントロピー源は、1つまたは複数のMR素子に基づいて第1の乱数値を生成することができる。ポスト処理モジュールは、エントロピー源から第1の乱数値を受け取ることができ、より良好なランダム性の特性を有する第2の乱数値を生成することができる。ポスト処理モジュールは、様々な方式で実装されてよく、ポスト処理モジュールのいくつかの例示的な設計が以下で説明される。
【００６３】
図7Aは、図1のRN生成器100の一設計である、RN生成器100aのブロック図を示す。この設計では、RN生成器100aは、エントロピー源110と、図1のポスト処理モジュール120の一設計である暗号学的ハッシュモジュール120aとを含む。ハッシュモジュール120aは、エントロピー源110から第1の乱数値(たとえば、ランダムビット)を受け取り、第2の乱数値を生成する。一設計では、ハッシュモジュール120aは、エントロピー源110からのL個のランダムビットの各ブロックを統合してLビットの乱数値を形成し、Lは任意の適切な整数値であり得る。ハッシュモジュール120aは次いで、暗号学的/セキュアハッシュアルゴリズムに基づいて、複数のLビットの乱数値をハッシュし、Nビットのハッシュ値を提供し、Nは任意の適切な整数値であり得る。Nビットのハッシュ値は、一般にハッシュダイジェストとも呼ばれ、第2の乱数値として提供される。ハッシュモジュール120aは、SHA-1(セキュアハッシュアルゴリズム)、SHA-2(SHA-224、SHA-256、SHA-384、およびSHA-512を含む)、MD-4(メッセージダイジェスト)、MD-5、または、当技術分野で知られている何らかの他のセキュアハッシュアルゴリズムを実装することができる。セキュアハッシュアルゴリズムは、暗号の特性を有するので、入力メッセージとそのダイジェストとの間の関数は不可逆であり、2つの入力メッセージが同じダイジェストにマッピングする可能性は非常に低い。セキュアハッシュアルゴリズムは、任意の長さの入力メッセージを受け取ることができ、固定長のハッシュダイジェストを提供することができる。
【００６４】
図7Bは、図1のRN生成器100の別の設計である、RN生成器100bのブロック図を示す。この設計では、RN生成器100bは、K個のエントロピー源110a〜110kと、図1のポスト処理モジュール120の別の設計である暗号学的ハッシュモジュール120bとを含む。一般に、Kは、1よりも大きな任意の整数値であり得る。複数のエントロピー源の使用は、ランダム性を向上させることができる。K個のエントロピー源110a〜110kの各々は、図2Aのエントロピー源110x、図2Bのエントロピー源110y、図3のエントロピー源110z、図5のエントロピー源110w、または何らかの他のエントロピー源によって実装され得る。図7Bの各エントロピー源110は、1つまたは複数のMR素子に基づいて、第1の乱数値(たとえば、ランダムビット)の列を生成することができる。
【００６５】
ハッシュモジュール120b内で、K個のシフトレジスタ720a〜720kが、それぞれ、K個のエントロピー源110a〜110kから第1の乱数値を受け取ることができる。各シフトレジスタ720は、関連するエントロピー源110からのQ個のランダムビットの各ブロックを統合してQビットの乱数値を形成することができ、Qは1よりも大きな任意の整数値であり得る。ハッシュモジュール120bは、シフトレジスタ720a〜720kからQビットの乱数値を受け取ることができ、これらのQビットの乱数値を組み合わせてLビットの乱数値を形成することができる。一設計では、ハッシュモジュール120bは、シフトレジスタ720a〜720kからのK個のQビットの乱数値の各セットを統合して、1つのLビットの乱数値を得ることができ、ここでK*Q=Lである。別の設計では、ハッシュモジュール120bは、排他的論理和(XOR)関数によって、シフトレジスタ720a〜720kからのK個のQビットの乱数値の各セットを組み合わせて、1つのLビットの乱数値を得ることができ、ここでQ=Lである。ハッシュモジュール120bはまた、他の方式で、シフトレジスタ720a〜720kからのK個のQビットの乱数値の各セットを組み合わせることができる。いずれの場合でも、ハッシュ関数730は、暗号学的/セキュアハッシュアルゴリズムに基づいて、複数のLビットの乱数値をハッシュし、Nビットのハッシュ値を提供することができ、Nは任意の適切な整数値であり得る。
【００６６】
一設計では、ハッシュ関数730は、Lビットという広い入力の幅を有してよく、Lは、SHA-256では256ビットであり得る、ハッシュ関数のブロックサイズであり得る。別の設計では、ハッシュ関数730は、整数のバイト、たとえば、1、2、4、または8バイトの入力の幅を有し得る。シフトレジスタ720は、図7Bに示されるように、エントロピー源110a〜110kからの第1の乱数値(たとえば、ランダムビット)を累積するために使用され得る。さらに別の設計では、ハッシュ関数730は、エントロピー源110a〜110kから第1の乱数値を直接受け取ることができ、シフトレジスタ720は省略され得る。
【００６７】
図8Aは、図1のRN生成器100のさらに別の設計である、RN生成器100cのブロック図を示す。この設計では、RN生成器100cは、エントロピー源110と、図1のポスト処理モジュール120の別の設計である巡回冗長検査(CRC)モジュール120cとを含む。CRCモジュール120cは、エントロピー源110から第1の乱数値(たとえば、ランダムビット)を受け取り、第2の乱数値を生成する。CRCモジュール120cは、R個のレジスタで構成される線形フィードバックシフトレジスタ(LFSR)によって実装されてよく、R個は任意の整数値であり得る。R個のレジスタは、良好な統計的特性を有する出力を提供できる、生成器多項式に基づいて接続され得る。一設計では、第1の乱数値は、CRCモジュールに提供されるデータパケットと同様の方式で、CRCモジュール120cに提供され得る。CRCモジュール120cは、特定の数の第1の乱数値がCRCモジュールに提供された後で、たとえば、データパケット全体がCRCモジュールに提供された後で生成されているCRCと同様の方式で、Nビットの第2の乱数値を提供することができ、ここでN≦Rである。エントロピー源110からのランダムビットはまた、決定論的な擬似ランダムビット生成器、または、誤差検出コードに基づいてビットを生成するモジュール、または何らかの他のビット生成器に対するシードとするために、使用され得る。
【００６８】
図8Bは、図1のRN生成器100のさらに別の設計である、RN生成器100dのブロック図を示す。この設計では、RN生成器100dは、複数(K個)のエントロピー源110a〜110kと、図1のポスト処理モジュール120のさらに別の設計であるCRCモジュール120dとを含む。各エントロピー源110は、1つまたは複数のMR素子に基づいて、第1の乱数値(たとえば、ランダムビット)の列を生成することができる。
【００６９】
図8Bに示される設計では、CRCモジュール120dは、K個のXORゲート820a〜820kとLFSR 830とを含む。LFSR 830は、直列に結合されたR個のレジスタを含み得る。R個のレジスタの出力は、各クロック周期において、Kビットだけ左にシフトされ得る。XORゲート820a〜820kは、それぞれ、K個のエントロピー源110a〜110kから第1の乱数値を受け取ることができる。各XORゲート820はまた、LFSR 830中の1つまたは複数のビットを受け取ることができ、1つまたは複数のビットは、CRCモジュール120dによって実装されている生成器多項式に基づいて決定されている。各XORゲート820は、すべての入力ビットのモジュロ2加算を実行し、各クロック周期において1ビットの出力を提供することができる。K個のXORゲート820a〜820kは、LFSR 830の最初のK個のレジスタに対して、自身の出力を提供することができる。一設計では、CRCモジュール120dは、エントロピー源110a〜110kから第1の乱数値を受け取ることができ、特定の数の第1の乱数値がCRCモジュールに提供された後で、Nビットの第2の乱数値を提供することができ、ここでN≦Rである。
【００７０】
1つの例示的な設計では、Kは4に等しくてよく、Rは34に等しくてよく、Nは32に等しくてよい。エントロピー源110は、自身のランダムビットを、CRCモジュール120d内の4つのXORゲート820に提供することができる。CRCモジュール120dは、34ビットのLFSR 830も含んでよく、次の生成器多項式を実装することができる。
x33+x11+1=0          式(2)
【００７１】
例示的な設計では、第1のXORゲート820aは、第1のエントロピー源110aからのランダムビットと、さらにLFSR 830のビット10および33とを受け取ることができる。第2のXORゲート820bは、第2のエントロピー源110bからのランダムビットと、さらにLFSR 830のビット9および32とを受け取ることができる。第3のXORゲートは、第3のエントロピー源からのランダムビットと、さらにLFSR 830のビット8および31とを受け取ることができる。第4のXORゲートは、第4のエントロピー源からのランダムビットと、さらにLFSR 830のビット7および30とを受け取ることができる。第1から第4のXORゲートは、それぞれ、LFSR 830のレジスタ3、2、1および0に、自身の出力を提供することができる。LFSR 830は、各クロック周期において、4ビットだけ左にシフトされ得る。32ビットの第2の乱数値は、16回以上のクロック周期ごとに(たとえば、4つのエントロピー源からの64個以上のランダムビットがLFSR 830に提供された後)、LFSR 830の32個のレジスタ(たとえば、レジスタ2〜33)によって提供され得る。
【００７２】
図9は、図1のRN生成器100のさらに別の設計である、RN生成器100eのブロック図を示す。この設計では、RN生成器100eは、エントロピー源110およびポスト処理モジュール120eを含む。ポスト処理モジュール120eは、エントロピー累算器122および暗号化モジュール124を含む。エントロピー累算器122は、エントロピー源110からの第1の乱数値を受け取り累算して、中間の乱数値を提供することができる。エントロピー累算器122は、多項式生成器、コードなどに基づいて、エントロピー累算を実行することができる。暗号化モジュール124は、中間の乱数値を受け取り、第2の乱数値を提供することができる。暗号化モジュール124は、公開されている、連邦情報処理規格(FIPS)のSpecial Publication800-90またはFIPS 140によって認められた他の規格、およびその付録に列挙されるアルゴリズムのような、任意の暗号化アルゴリズムを実装することができる。暗号化モジュール124はまた、当業者によって知られている何らかの他の暗号化アルゴリズムを実装することができる。
【００７３】
図10は、図1のRN生成器100のさらに別の設計である、RN生成器100fのブロック図を示す。この設計では、RN生成器100fは、K個のエントロピー源110a〜110kと、図1のポスト処理モジュール120のさらに別の設計である結合器120fとを含む。K個のエントロピー源110a〜110kは、第1の乱数値(たとえば、ランダムビット)のK個の列を生成することができる。結合器120fは、K個のエントロピー源110a〜110kから第1の乱数値のK個の列を受け取ることができ、第2の乱数値を生成することができる。図10に示される一設計では、結合器120fは、第1の乱数値のK個の列を受け取るK個の入力を有するXORゲート126によって実装され得る。図10に示されない別の設計では、結合器モジュール120fは、モジュロM加算器を実装することができ、Mは任意の適切な値であり得る。
【００７４】
RN生成器100fは、様々な方式でNビットの第2の乱数値を生成することができる。一設計では、各クロック周期において、K個の列の中のK個の第1の乱数値が、モジュロ2N加算されて、そのクロック周期に対するNビットの第2の乱数値を得ることができる。たとえば、N=2かつK≧4である場合、各クロック周期に対して、K個のエントロピー源110a〜110kからのK個の第1のランダムビットが、モジュロ4加算されて、そのクロック周期に対する2ビットの第2の乱数値を得ることができる。別の設計では、各クロック周期において、K個の列の中のK個の第1の乱数値が、モジュロ2加算されて、そのクロック周期に対する1ビットの組み合わされた値を得ることができる。Nビットの第2の乱数値は、N個のクロック周期中で、結合器120fによって提供されるN個の組み合わされた値によって形成され得る。結合器120fは、他の回路によっても実装され得る。
【００７５】
図11は、図1のRN生成器100のさらに別の設計である、RN生成器100gのブロック図を示す。この設計では、RN生成器100gは、2つのエントロピー源110aおよび110bと、図1のポスト処理モジュール120の別の設計であるストリーム暗号モジュール120gとを含む。各エントロピー源110は、1つまたは複数のMR素子に基づいて、ランダムビットの列を生成する。
【００７６】
ストリーム暗号モジュール120gは、2つのLFSR 1120および1130と非線形関数1140とを含み、これらが集合的に、修正されたK2ストリーム暗号アルゴリズムを実装する。LFSR 1120は、第1の生成器多項式を実装し、直列に結合された5個のQビットレジスタ1122a〜1122eを含み、Qは1よりも大きな任意の整数値であってよく、たとえば、Q=8、16、32などである。乗算器1124は、最後のレジスタ1122eからQビットの値を受け取り、このQビットの値を係数α0と乗算する。加算器1126は、乗算器1124およびレジスタ1122bからのQビットの値を受け取り、有限体加算に基づいて2つのQビットの値を合計し、Qビットの結果をレジスタ1122aに提供する。2つのQビットの値の有限体加算は、2つのQビットの値のビット単位のXORを実行することによって、実現され得る。LFSR 1130は、第2の生成器多項式を実装し、直列に結合される11個のQビットレジスタ1132a〜1132kを含む。乗算器1134aは、レジスタ1132cからQビットの値を受け取り、このQビットの値を、エントロピー源110aからのランダムビットに基づいて選択される係数1またはα3のいずれかと、乗算する。乗算器1134bは、レジスタ1132kからQビットの値を受け取り、このQビットの値を、エントロピー源110bからのランダムビットに基づいて選択される係数α1またはα2と、乗算する。加算器1136aは、乗算器1134bおよびレジスタ1132jからのQビットの値を受け取り合計する。加算器1136bは、加算器1136aおよびレジスタ1132eからのQビットの値を受け取り合計する。加算器1136cは、乗算器1134aおよび加算器1136bからのQビットの値を受け取り合計する。各加算器1136は、有限体加算に基づいて2つのQビットの値を合計し、Qビットの結果を提供する。
【００７７】
非線形関数1140は、LFSR 1120のレジスタ1122aおよび1122eからのQビットの値とともに、LFSR 1130のレジスタ1132a、1132b、1132g、および1132kからのQビットの値を受け取る。非線形関数1140は、非線形関数に基づいて、受け取られたQビットの値を処理し、Nビットの第2の乱数値を提供する。第2の乱数値は、暗号化、復号、ならびに/または他の暗号化および非暗号化機能のための、暗号鍵として使用され得る。非線形関数およびK2ストリーム暗号アルゴリズムは、公開されている「A Word-Oriented Stream Cipher Using Clock Control」という表題のKiyomoto他により詳述される論文において説明されている。
【００７８】
図11に示される設計では、1つのエントロピー源110aが、乗算器1134aに対する係数を動的に選択するために使用され、別のエントロピー源110bが、乗算器1134bに対する係数を動的に選択するために使用される。この設計では、LFSR 1130に対するフィードバック多項式は、エントロピー源110aおよび110bからの乱数値に応じて、4つの可能な値を有する。別の設計では、単一のエントロピー源が、乗算器1134aのみに対する係数、乗算器1134bのみに対する係数、または乗算器1134aと1134bの両方に対する係数を選択するために使用され得る。たとえば、エントロピー源からの偶数のインデックスのランダムビットは、乗算器1134aに対する係数を選択することができ、エントロピー源からの奇数のインデックスのランダムビットは、乗算器1134bに対する係数を選択することができる。さらに別の設計では、複数のエントロピー源が、乗算器1134aに対する係数を選択するために、組み合わされ(たとえば、XORをとられ)使用され得る。代替的に、または加えて、複数のエントロピー源が、乗算器1134bに対する係数を選択するために、組み合わされ使用され得る。乗算器1134aおよび/または1134bに対する係数を選択するために複数のエントロピー源を使用することで、個々のMR素子の障害に対する抵抗性を高めることができ、また、各状態「0」または「1」の割合を50%に近づけることができる。1つまたは複数のエントロピー源も、LFSR 1130の1つまたは複数の乗算器に対する係数を他の方式で動的に選択するために使用され得る。
【００７９】
1つまたは複数のエントロピー源からの乱数値はまた、LFSR 1130の動作および/または状態を他の方式で変え得る。一設計では、乱数値は、LFSR中の選択されたビットと組み合わされ得る(XORをとられ得る)。別の設計では、乱数値は、LFSR中の異なるタップを選択し得る。さらに別の設計では、レジスタ(たとえば、シフトレジスタ)は、Q個のエントロピー源から多くのビットを受け入れることができる。レジスタが満杯になると、LFSRからのビットのセット中の各ビットは、そのビットの以前の値とレジスタの選択されたビットとのXORによって、置き換えられ得る。
【００８０】
図12は、図1のRN生成器100のさらに別の設計である、RN生成器100hのブロック図を示す。この設計では、RN生成器100hは、Q個のエントロピー源110a〜110qおよびストリーム暗号モジュール120hを含み、これは、図1のポスト処理モジュール120の別の設計であり、Qは1よりも大きい任意の整数値であり得る。エントロピー源110a〜110qは、ランダムビットのQ個の列を生成する。図12に示される設計では、直列並列(S/P)変換器1210が、ランダムビットのQ個の列を受け取り、Qビットの乱数値の列を提供する。各Qビットの乱数値は、ランダムビットのQ個の列の各々から1ビットを含み得る。S/P変換器1210は、一直線の配線によって実装され得る。図12に示されない別の設計では、S/Pコンバータ1210は、単一のエントロピー源110からランダムビットの単一の列を受け取り、Qビットの乱数値の列を提供する。各Qビットの乱数値は、ランダムビットの単一の列の中のQビットに基づいて形成され得る。一般に、S/P変換器1210は、1つまたは複数のエントロピー源からのランダムビットの1つまたは複数の列を受け取ることができ、Qビットの乱数値の列を提供することができる。
【００８１】
ストリーム暗号モジュール120hは、修正されたSNOW3Gストリーム暗号アルゴリズムを実装し、LFSR 1220、有限状態機械(FSM)1230、ならびに加算器1240および1242を含む。LFSR 1220は、直列に結合された16個のQビットレジスタ1222a〜1222pを含み、生成器多項式α・x15+x13+α-1・x4+1=0を実装する。有限体乗算器1224aは、最後のレジスタ1222pからQビットの値を受け取り、このQビットの値を係数α0と乗算する。有限体乗算器1224bは、レジスタ1222eからQビットの値を受け取り、このQビットの値を係数α-1と乗算する。加算器1226aは、乗算器1224aおよびFSM 1230からのQビットの値を受け取り合計する。加算器1226bは、加算器1226aおよびレジスタ1222nからのQビットの値を受け取り合計する。加算器1226cは、加算器1226bおよび乗算器1224bからのQビットの値を受け取り合計する。各加算器1226は、有限体加算に基づいて2つのQビットの値を合計し、Qビットの結果を提供する。
【００８２】
FSM 1230は、3つのQビットレジスタ1232a〜1232cと、2つの置換ボックス(S-box)1234aおよび1234bとを含む。整数加算器1236aは、追加のモジュロ2Qに基づいて、レジスタ1222aおよび1232aからのQビットの値を受け取り合計する。加算器1238aは、加算器1236aおよびレジスタ1232bからのQビットの値を受け取り合計して、そのQビットの出力をFSM 1230の出力として提供する。加算器1242は、レジスタ1222kおよびS/P変換器1210からのQビットの値を、受け取り合計する。加算器1238bは、加算器1242およびレジスタ1232cからのQビットの値を受け取り合計する。加算器1238および1242の各々は、有限体加算に基づいて2つのQビットの値を合計し、Qビットの結果を提供する。整数加算器1236bは、追加のモジュロ2Qに基づいて、加算器1238bおよびレジスタ1232bからのQビットの値を受け取り合計して、そのQビットの出力をレジスタ1232aに提供する。加算器1240は、レジスタ1222pおよびFSM 1230からのQビットの値を合計し、Nビットの第2の乱数値を提供し、ここでN≦Qである。S-box 1234aは、レジスタ1232aの出力を受け取り、入力をレジスタ1232bに提供する。S-box 1234bは、レジスタ1232bの出力を受け取り、入力をレジスタ1232cに提供する。各S-box 1234は、事前に定義された関数に基づいて、Qビットの入力をQビットの出力にマッピングする。
【００８３】
一設計では、FSM 1230および加算器1242は、LFSR 1220を初期化するために、ある数のクロック周期の間動作し得る。次いで、LFSR、FSM 1230、および加算器1240が、第2の乱数値を生成するために動作し得る。RN生成器100hはまた、他の方式で動作し得る。
【００８４】
一設計では、エントロピー源110およびS/P変換器1210は、LFSR 1220およびFSM 1230に対して使用される同じクロックに基づいて動作し得る。別の設計では、LFSR 1220およびFSM 1230は、第1のクロックに基づいて動作してよく、エントロピー源110およびS/P変換器1210は、第1のクロックよりも高速な第2のクロックに基づいて動作してよい。この設計は特に、各クロック周期が一度にLFSR 1220およびFSM 1230を実行させる場合に、適用可能であり得る。
【００８５】
図11および図12は、エントロピーをRN生成器に継続的に注入する2つの例を示す。図11では、RN生成器100gは、2個のランダムビットを受け入れ、32個のランダムビットを提供する。したがって、RN生成器100gは、NISTの定義に従うと、非決定論的ランダムビット生成器(NRBG)としての資格がない。図12では、RN生成器100hは、出力の速度にほぼ等しい、MRデバイスからのエントロピーを受け入れる。したがって、RN生成器100hは、NISTの定義によれば、NRBGとしての資格があり得る。
【００８６】
図11および図12は、1つまたは複数のエントロピー源に基づいて、2つの例示的な暗号化機能(たとえば、ストリーム暗号アルゴリズム)の初期状態を修正する2つの設計を示し、各エントロピー源は1つまたは複数のMR素子を含み得る。暗号化機能の動作はまた、図11および図12において与えられる特定の例以外の他の方式で、1つまたは複数のエントロピー源に基づいて修正され得る。エントロピー源はまた、他の暗号化機能の初期状態および/または動作を修正するために使用され得る。
【００８７】
ポスト処理モジュール120の様々な例示的な設計が、上で説明されてきた。一般に、ポスト処理回路120は、(たとえば、図7A、図8A、または図9に示されるように)単一のエントロピー源から順次第1の乱数値を受け取ってよく、または、(たとえば、図7B、図8B、図10、図11、または図12に示されるように)複数のエントロピー源から並列に第1の乱数値を受け取ってよい。ポスト処理モジュール120は、第1の乱数値を統計的または計算的に組み合わせることができる、エントロピー抽出器であり得る。統計的エントロピー抽出器は、モデルの仮定(たとえば、あるイベントのインスタンスが独立であり理想的に分布しているという仮定)に基づいて動作することができ、偏りがなく相関がなく真のランダム源と統計的に区別不可能である、乱数値を生成することができる。計算的エントロピー抽出器は、第1の乱数値をハッシュ関数のような関数に与えることができ、ランダムビットのブロックとして出力を提示することができる。選択されたハッシュ関数が理想的なハッシュ関数とよく近似している場合、計算的エントロピー抽出器は、1つまたは複数のMR素子から導出される第1の乱数値に基づいて、真のランダム源と区別不可能である第2の乱数値を生成することが可能であるはずである。
【００８８】
別の態様では、検出回路が、1つまたは複数のMR素子を含むエントロピー源との干渉を検出するために使用され得る。MR素子は、磁界に基づいて変化する可変抵抗を有する。たとえば、STT-MTJデバイスの抵抗は、上で説明されたように、磁性材料の2つの層の相対的な磁化に基づいて変化し得る。MR素子は、たとえば、MR素子のすぐ近くに配置される磁石によって、干渉を受け得る。MR素子との干渉は、以下で説明されるように検出され得る。
【００８９】
図13は、MR素子1320との干渉を検出するために使用され得る、アナログ干渉検出回路1300の概略図を示す。干渉検出回路1300は、エントロピー源1310および検出モジュール1330を含む。エントロピー源1310内で、抵抗1312は、一端が第1の基準電圧(VREF1)に結合され、他端がノードAに結合される。MR素子1320は、一端がノードAに結合され、他端が回路のグラウンドに結合される。
【００９０】
検出モジュール1330内で、センスアンプ1332は、入力がノードAに結合され、出力が抵抗1334の一端に結合される。センスアンプ1332はまた、図2Aまたは図2Bに示されるような、しかし簡単にするために図13には示されていない、基準電圧を受け取ることができる。抵抗1334の他端はノードBに結合される。キャパシタ1336がノードBと回路のグラウンドとの間に結合される。第1の比較器1340aは、非反転入力がノードBに結合され、反転入力が第2の基準電圧(VREF2)を受け取り、出力がORゲート1350の第1の入力に結合される。第2の比較器1340bは、反転入力がノードBに結合され、非反転入力が第3の基準電圧(VREF3)を受け取り、出力がORゲート1350の第2の入力に結合される。ORゲート1350は誤差信号を提供する。電圧VREF2は電圧VREF3より高い。電圧VREF2およびVREF3は、通常の動作のもとでのMR素子1320の抵抗値の目標範囲を定める。干渉検出器1360は、ORゲート1350から誤差信号を受け取り、MR素子1320が干渉されているかどうかを以下で説明されるように判定し、干渉指示を提供する。
【００９１】
センスアンプ1332は、MR素子1320の抵抗とは無関係である、ノードAの電圧(VA)を感知する。感知された電圧は、抵抗1334およびキャパシタ1336で構成されるローパスフィルタによってフィルタリングされる。ノードBにおけるフィルタリングされた電圧(VB)は、比較器1340aによって電圧VREF2と比較され、比較器1340bによって電圧VREF3とも比較される。誤差信号は、比較器1340aまたは1340bのいずれかの出力がhighである場合、論理highの状態にある。
【００９２】
MR素子1320は、たとえば強い磁界または温度によってMR素子の動作を操作しようという外部からの試みを検出するための、センサとして使用される。一設計では、MR素子1320は、エントロピー源において使用されるMR素子とは異なり得る。別の設計では、エントロピー源において使用されるMR素子はまた、干渉検出回路1300中のMR素子1320として使用され得る。いずれの場合でも、電圧VBは、センスアンプ1332の出力のデューティサイクルに対して線形の関係があり、デューティサイクルは、「1」である出力ビットの割合に依存する。比較器1340aは、デューティサイクルが電圧VREF2によって決定されるhighの閾値を超えるかどうかを検出する。比較器1340bは、デューティサイクルが電圧VREF3によって決定されるlowの閾値を下回るかどうかを検出する。デューティサイクルがhighの閾値とlowの閾値の間にない場合、誤差信号は論理highの状態にある。図13には示されないが、ORゲート1350の出力は、誤差信号を提供し得るフリップフロップに提供され得る。いずれの場合でも、誤差信号は、MR素子1320の感知された抵抗に依存する、検出されたデューティサイクルに基づいて決定される1と0の列を含み得る。
【００９３】
モジュール1360は、様々な方式で、誤差信号に基づいてMR素子1320との干渉を検出することができる。一設計では、モジュール1360は、所定の期間にわたり、誤差信号中の連続する1の数と連続する0の数とを数えることができる。モジュール1360は、連続する1の数のカウントまたは連続する0の数のカウントが、小さすぎるか大きすぎるかのいずれかである場合、干渉があると判断することができる。別の設計では、モジュール1360は、所定の期間にわたり、所定のパターン(たとえば、「11」、「10」、「01」、および「11」というパターン)が発生する数を数えることができる。モジュール1360は、任意のパターンのカウントが小さすぎるまたは大きすぎる場合、干渉があると判断することができる。さらに別の設計では、モジュール1360は、誤差信号中の1および0の列を圧縮アルゴリズムに提供することができる。圧縮アルゴリズムの出力速度が小さすぎる場合、モジュール1360は干渉があると判断することができる。モジュール1360はまた、他の方式で、誤差信号に基づいてMR素子1320との干渉を検出することができる。
【００９４】
別の設計では、センスアンプ1332の出力は、たとえばセンスアンプ1332の出力に接続されたフリップフロップによって、デジタル化され得る。センスアンプ1332のデジタル化された出力は、抵抗1334およびキャパシタ1336によって形成され得る、アナログローパスフィルタによってフィルタリングされ得る。ローパスフィルタは、デジタル化された出力の平均化を実行することができる。比較器1340aおよび1340bは、フィルタリングされた信号を、highおよびlowの閾値と比較することができる。フィルタリングされた信号がhighの閾値を上回るまたはlowの閾値を下回る場合、ORゲート1350からの誤差信号は論理highに設定されてよく、これは干渉があることを示す。
【００９５】
図3のエントロピー源110c(フィードバック回路を伴う、または伴わない)も、干渉を検出するために使用され得る。たとえば、センスアンプ330によって提供される「1」と「0」の値の比が求められ、lowの閾値およびhighの閾値と比較され得る。highの閾値およびlowの閾値は、50%前後に中心があるべきである、上記の比の許容される値の枠に基づいて定義され得る。比がhighの閾値を超える場合、またはlowの閾値を下回る場合、干渉が検出され得る。
【００９６】
一設計では、装置(たとえば、IC、ワイヤレスデバイス、電子モジュールなど)は、たとえば図2Aまたは図2Bに示されるように、MR素子と感知回路とを含み得る。MR素子(たとえば、MR素子210)は、静的電流を加えられてよく、MR素子の磁化に基づいて決定される可変抵抗を有し得る。MR素子は、STT-MTJデバイス、または、磁化に対して可変の抵抗を有する何らかの他のタイプのデバイスを含み得る。感知回路は、MR素子の抵抗を感知し、MR素子の感知された抵抗に基づいて乱数値を提供することができる。
【００９７】
一設計では、感知回路は、MR素子に結合された第1の入力と、基準電圧を受け取る第2の入力と、第1の乱数値を生成するために使用される感知された値を提供する出力とを有する、センスアンプ(たとえば、図2Aのセンスアンプ240)を含み得る。感知回路はさらに、MR素子と直列に結合された抵抗(たとえば、抵抗210)を含んでよく、抵抗とMR素子の組合せが抵抗分圧器を形成する。一設計では、基準電圧(たとえば、図2Aの電圧VREF2)は、基準電圧生成器によって生成され得る。別の設計では、基準電圧(たとえば、図2Bの電圧VY)は、抵抗分圧器に基づいて生成されてよく、抵抗分圧器は、MR素子とともにブリッジ回路を形成することができ、(たとえば、図2Bに示されるように)MR素子の抵抗を測定するために使用され得る。さらに別の設計では、第2のMR素子が、センスアンプの第2の入力に結合されてよく、基準電圧を生成するために使用されてよい。
【００９８】
一設計では、抵抗(たとえば、抵抗210)は、MR素子と電圧との間に結合されてよく、(たとえば、図2Aおよび図2Bに示されるように)MR素子に対して静的電流を提供することができる。別の設計では、電流源が、MR素子に結合されてよく、MR素子に対して静的電流を提供することができる。
【００９９】
一設計では、感知回路はさらに、センスアンプに結合されたフリップフロップ(たとえば、フリップフロップ250)を含み得る。フリップフロップは、センスアンプから感知された値を受け取り、乱数値を提供することができる。感知された値をフリップフロップによってラッチングすることで、乱数値が、乱数値を受け取るデジタル回路のセットアップタイムおよびホールドタイムと適合できることが確実になり得る。
【０１００】
一設計では、少なくとも1つの追加のMR素子が、MR素子と直列に(たとえば、図6Bに示されるように)、または並列に(たとえば、図6Cに示されるように)結合され得る。複数のMR素子の使用は、エントロピー生成とともに信頼性を改善することができる。
【０１０１】
別の設計では、装置(たとえば、IC、ワイヤレスデバイス、電子モジュールなど)は、たとえば図1に示されるように、エントロピー源とポスト処理モジュールとを含み得る。エントロピー源は、少なくとも1つのMR素子を含んでよく、少なくとも1つのMR素子に基づいて第1の乱数値を提供することができる。ポスト処理モジュールは、第1の乱数値を受け取り処理して、第2の乱数値を提供することができる。
【０１０２】
一設計では、ポスト処理モジュールは、単一のエントロピー源から第1の乱数値の単一の列を受け取ることができ、第1の乱数値のこの単一の列に基づいて第2の乱数値を生成することができる。別の設計では、ポスト処理モジュールは、複数のエントロピー源から第1の乱数値の複数の列を受け取ることができ、第1の乱数値の複数の列に基づいて第2の乱数値を生成することができる。
【０１０３】
一設計では、ポスト処理モジュールは、(たとえば、図7Aに示されるような暗号学的ハッシュ関数に基づいて)第1の乱数値をハッシュして、第2の乱数値を提供することができる。別の設計では、ポスト処理モジュールは、たとえば図7Bに示されるように、複数のシフトレジスタおよびハッシュモジュールを含み得る。複数のシフトレジスタは、エントロピー源を含む複数のエントロピー源から、第1の乱数値の複数の列を受け取ることができる。ハッシュモジュールは、複数のシフトレジスタから中間の値の複数の列を受け取り、中間の値をハッシュし、第2の乱数値を提供することができる。各第1の乱数値は1ビットの値を含んでよく、各中間の値はQビットの値を含んでよく、各第2の乱数値はNビットの値を含んでよく、QおよびNは1より大きくてよい。一設計では、各第2の乱数値のビットの総数は、第2の乱数値を生成するために使用されるすべての第1の乱数値のビットの総数より少なくてよいので、入力ビットの総数は出力ビットの総数より多い。
【０１０４】
さらに別の設計では、ポスト処理モジュールは、第1の乱数値と、誤差検出コード、たとえば図8Aに示されるようなCRCとに基づいて、第2の乱数値を生成することができる。ポスト処理モジュールは、生成器多項式を実装するLFSRを含み得る。LFSRは、第1の乱数値を受け取り、第2の乱数値を提供することができる。
【０１０５】
さらに別の設計では、ポスト処理モジュールは、直列に結合された複数のレジスタ(たとえば図8Bのレジスタ830)および少なくとも2つの結合器を含み得る。各結合器は、XORゲート(たとえば、図8Bに示されるような)、モジュロ2加算器などであってよい。少なくとも2つの結合器は、複数のレジスタ中の少なくとも2つのレジスタに結合されてよく、少なくとも2つのエントロピー源から第1の乱数値の少なくとも2つの列を受け取ることができる。複数のレジスタおよび少なくとも2つの結合器は、少なくとも2つのフィードバックビットによって生成器多項式を実装することができる。
【０１０６】
さらに別の設計では、ポスト処理モジュールは、たとえば図9に示されるような、エントロピー累算器および暗号化モジュールを含み得る。エントロピー累算器は、第1の乱数値を受け取り、中間の乱数値を提供することができる。暗号化モジュールは、中間の乱数値を受け取り、第2の乱数値を提供することができる。暗号化モジュールは、暗号学的ハッシュ関数、ストリーム暗号アルゴリズムなどに基づいて、第2の乱数値を生成することができる。
【０１０７】
さらに別の設計では、ポスト処理モジュールは結合器を含み得る。結合器は、図10に示されるようなXORゲート、または、Mが1よりも大きい整数であるモジュロM加算器、または、何らかの他の回路を含み得る。結合器は、複数のエントロピー源から第1の乱数値の複数の列を受け取り処理し、第2の乱数値を提供することができる。結合器は、第1の乱数値の複数の列の中の複数の第1の乱数値のモジュロM加算を実行し、対応する第2の乱数値を得ることができる。
【０１０８】
さらに別の設計では、ポスト処理モジュールは、たとえば図11または図12に示されるような、ストリーム暗号生成器を含み得る。ストリーム暗号生成器は、第2の乱数値を生成することができる。第1の乱数値は、ストリーム暗号生成器の動作および/または内部状態を変えることができる。一設計では、ストリーム暗号生成器は、たとえば図11に示されるように、K2ストリーム暗号アルゴリズムに基づいて第2の乱数値を生成することができる。第1の乱数値は、K2ストリーム暗号アルゴリズムの係数を選択することができる。別の設計では、ストリーム暗号生成器は、たとえば図12に示されるように、SNOW3Gストリーム暗号アルゴリズムに基づいて第2の乱数値を生成することができる。第1の乱数値は、SNOW3Gストリーム暗号アルゴリズムの内部状態を変えることができる。
【０１０９】
一設計では、エントロピー源は、たとえば図2Aまたは図2Bに示されるように、低エネルギーのエントロピー源であってよく、バイアス回路および感知回路を含み得る。バイアス回路(たとえば、抵抗210)は、少なくとも1つのMR素子に対して静的電流を提供することができる。感知回路(たとえば、感知回路230)は、少なくとも1つのMR素子の抵抗を感知し、感知された抵抗に基づいて第1の乱数値を提供することができる。別の設計では、エントロピー源は、たとえば図3に示されるように、高エネルギーのエントロピー源であってよく、制御回路および感知回路を含み得る。制御回路は、電流パルスまたは電圧パルスを生成して、少なくとも1つのMR素子の状態を変えることができる。感知回路は、少なくとも1つのMR素子の抵抗を感知し、感知された抵抗に基づいて乱数値を提供することができる。
【０１１０】
一設計では、第1の乱数値は1ビットの値を含んでよく、第2の乱数値は複数ビットの値を含んでよい。一般に、第1の乱数値および第2の乱数値は各々、任意の数のビットの値を含み得る。
【０１１１】
エントロピー源は、ハードウェア中で、たとえば、IC、電子モジュールなどにおいて実装され得る。ポスト処理モジュールは、以下で説明されるように、様々な方式で、ハードウェア、ソフトウェア、および/またはファームウェアで実装され得る。
【０１１２】
さらに別の設計では、装置(たとえば、IC、ワイヤレスデバイス、電子モジュールなど)は、たとえば図5に示されるように、MRセルのアレイ、感知回路、および、複数のプログラム源を含み得る。MRセルのアレイ(たとえば、MRアレイ510)は、複数の行および複数の列に配置され得る。複数のワード線が、MRセルの複数の行に結合され得る。複数の選択線が、MRセルの複数の列に結合され得る。複数のビット線も、MRセルの複数の列に結合され得る。感知回路(たとえば、感知回路550)は、複数の選択線に結合されてよく、アレイ中の選択されたMRセルの抵抗を感知し、乱数値を提供することができる。複数のプログラム源(たとえば、プログラム源532および534)は、複数の選択線に結合されてよく、パルスを与えてアレイ中のMRセルの状態を変えることができる。複数のプログラム源は、(i)選択されたMRセルが第1の方向に切り替えられるべきである場合に、選択されたMRセルに結合される第1のプログラム源(たとえば、プログラム源532a)と、(ii)選択されたMRセルが第2の方向に切り替えられるべきである場合に、選択されたMRセルに結合される第2のプログラム源(たとえば、プログラム源534a)とを含み得る。
【０１１３】
各MRセルは、少なくとも1つのMR素子を含み得る。一設計では、各MRセルは、たとえば図6Aに示されるように、単一のMR素子を含み得る。別の設計では、各MRセルは、直列に(たとえば、図6Bに示されるように)、または並列に(たとえば、図6Cに示されるように)結合された複数のMR素子を含み得る。一設計では、アレイ中のMRセルは、同一のMR素子を含み得る。別の設計では、アレイ中のMRセルは、ICの歩留まりを改善するために、設計、形状、サイズ、厚さなどが異なるMR素子を含み得る。
【０１１４】
一設計では、選択されたMRセルは、単一の動作でプログラムされてよく、単一の動作において第1のプログラム源または第2のプログラム源から電流パルスまたは電圧パルスを加えられ得る。別の設計では、選択されたMRセルは、複数の動作でプログラムされてよく、各動作において第1のプログラム源または第2のプログラム源から電流パルスまたは電圧パルスを加えられ得る。一設計では、少なくとも1つのMRセルは、感知回路のための基準電圧を提供するために使用され得る。
【０１１５】
複数のプログラム源は、電流パルスまたは電圧源を提供して、アレイ中のMRセルの状態を変えることができる。一設計では、第1のプログラム源と第2のプログラム源の少なくとも1つは、選択されたMRセルの切り替えの確率の目標に基づいて決定される、可変の振幅のパルスを提供することができる。別の設計では、第1のプログラム源と第2のプログラム源の少なくとも1つは、切り替えの確率の目標に基づいて決定される、可変の期間のパルスを提供することができる。さらに別の設計では、第1のプログラム源と第2のプログラム源の少なくとも1つは、切り替えの確率の目標に基づいて決定される、可変の振幅および可変の期間のパルスを提供することができる。一設計では、複数のプログラム源は、個々に設定されたパルス振幅および/またはパルス期間を有し得る。
【０１１６】
一設計では、アレイ中のMRセルは、第1の速度で選択され感知されて、第1の速度よりも高くてよい第2の速度で乱数値を生成することができる。MRセルは、より高い速度で乱数値を得るために組み合わされ得る。
【０１１７】
さらに別の設計では、装置(たとえば、IC、ワイヤレスデバイス、電子モジュールなど)は、たとえば図13に示されるように、エントロピー源と検出モジュールとを含み得る。エントロピー源は、少なくとも1つのMR素子(たとえば、少なくとも1つのSTT-MTJデバイス)を含んでよく、少なくとも1つのMR素子に基づいて第1の値を提供することができる。検出モジュールは、第1の値を受け取り処理することができ、エントロピー源との干渉を示すものを提供することができる。
【０１１８】
検出モジュールは、様々な方式で干渉を検出することができる。一設計では、検出モジュールは、第1の値の中の0および1の割合に基づいて、エントロピー源との干渉を検出することができる。別の設計では、検出モジュールは、第1の値の中の連続する0の数および連続する1の数に基づいて、エントロピー源との干渉を検出することができる。さらに別の設計では、検出モジュールは、0および1の所定のパターンが発生した数に基づいて、エントロピー源との干渉を検出することができる。さらに別の設計では、検出モジュールは、第1の値の圧縮を実行することができ、圧縮の出力速度に基づいてエントロピー源との干渉を検出することができる。検出モジュールはまた、様々な方式で干渉を検出することができる。
【０１１９】
図14は、乱数値を生成するための処理1400の設計を示す。静的電流は、MR素子の磁化に基づいて決定される可変抵抗を有する、MR素子に加えられ得る(ブロック1412)。MR素子の抵抗は、MR素子に加えられる静的電流によって感知され得る(ブロック1414)。第1の乱数値は、MR素子の感知された抵抗に基づいて生成され得る(ブロック1416)。ブロック1414および1416の一設計では、MR素子の抵抗は、基準値と比較されて、感知された値を得ることができる。次いで、感知された値はラッチングされて、第1の乱数値を得ることができる。
【０１２０】
第1の乱数値は、乱数値を必要とするアプリケーションによって直接使用され得る。あるいは、第1の乱数値は、第2の乱数値を得るために処理され得る(ブロック1418)。たとえば、第1の乱数値は、暗号学的ハッシュ関数、誤差検出コード、ストリーム暗号アルゴリズムに基づいて処理され得る。
【０１２１】
一設計では、第1の乱数値の複数の列は、MR素子を含む複数のMR素子の抵抗を感知することによって生成され得る。第1の乱数値の複数の列は、第2の乱数値を得るために、(たとえば、図7Bに示されるようなハッシュ関数、図8Bに示されるような誤差検出コード、または図10に示されるような結合器によって)処理され得る。
【０１２２】
少なくとも1つのMR素子を含むエントロピー源からの第1の乱数値は、次の特性の1つまたは複数を有し得る。
・限られた計算能力でも、一定の予測不可能性がある
・攻撃者に知られていない
・攻撃者による影響を受けない
・偏りがないまたは相関がないとは必ずしも限らない
・エントロピーは出力ビットレートよりも低くてよい
【０１２３】
エントロピー源およびポスト処理モジュールを含むRN生成器からの第2の乱数値は、次の特性の1つまたは複数を有し得る。
・限られた計算能力でも、予測不可能である
・攻撃者に知られていない
・攻撃者による影響を受けない
・無視できる程度の偏りおよび相関
・出力ビットレートと等しい、またはそれに非常に近いエントロピー
【０１２４】
RN生成器に対する第1の乱数値を生成するために少なくとも1つのMR素子を使用することは、様々な利点をもたらし得る。第1に、MR素子は、エントロピーの他のソースよりも良好な特性を有してよく、良好なエントロピー源を作成するために使用され得る。MR素子の抵抗の変化は、確率過程を形成する。MR素子は、MR素子の物理特性に基づいて、単一の検証可能なモデルによって特徴付けられ得る。モデルのパラメータは、MR素子の測定に基づいて推定され得る。MR素子は、測定、コンピュータシミュレーションなどに基づいて、モデルに従うことが証明され得る。エントロピー源は、高利得のデバイスを使用することなく(抵抗を感知するためのセンスアンプを除き)、MR素子によって作成され得る。このエントロピー源は、低コストかつ低電力にでき、専有する回路面積を小さくでき、半導体デバイス上で簡単に製造できる。このエントロピー源は、生成速度を高速にでき、場合によってはGHz範囲という高い速度で第1の乱数値を提供することが可能であり得る。エントロピー源からの第1の乱数値は、ランダム性を改善するために調整またはポスト処理され得る。
【０１２５】
少なくとも1つのMR素子を含むエントロピー源およびRN生成器は、上で説明されたように、様々な電子デバイスにおいて使用され得る。ワイヤレスデバイスにおけるエントロピー源およびRN生成器の使用が、以下で説明される。
【０１２６】
図15は、1つまたは複数のエントロピー源および/または1つまたは複数のRN生成器を含み得る、ワイヤレスデバイス1500のブロック図を示す。ワイヤレスデバイス1500は、携帯電話、スマートフォン、タブレット、PDA、ラップトップコンピュータ、ネットブック、スマートブック、端末、ハンドセットなどであってよい。ワイヤレスデバイス1500は、符号分割多元接続(CDMA)ネットワーク、Global System for Mobile Communications(GSM(登録商標))ネットワーク、Long Term Evolution(LTE)ネットワーク、ワイヤレスローカルエリアネットワーク(WLAN)などを含み得る、1つまたは複数のワイヤレス通信ネットワークを介した通信をサポートすることができる。
【０１２７】
ワイヤレスデバイス1500は、受信経路および送信経路を介した双方向通信をサポートすることができる。受信経路において、基地局および/または他のデバイスによって送信される信号は、アンテナ1512によって受信され、受信機(RCVR)1514に与えられ得る。受信機1514は、受信信号を調整およびデジタル化し、入力されたサンプルを、さらに処理するためにデジタルセクション1520に与えることができる。送信経路において、送信機(TMTR)1516は、送信されるべきデータをデジタルセクション1520から受信することができる。送信機1516は、データを処理および調整することができ、変調信号を生成することができ、変調信号は、アンテナ1512を介して基地局および/または他のデバイスに送信され得る。
【０１２８】
デジタルセクション1520は、たとえば、モデムプロセッサ1522、中央処理装置(CPU)/縮小命令セットコンピュータ(RISC)1524、メインコントローラ1526、スタティックランダムアクセスメモリ(SRAM)1528、安全モジュール1530、読取り専用メモリ(ROM)1532、NANDフラッシュコントローラ1534、およびシンクロナスダイナミックRAM(SDRAM)コントローラ1536のような、様々な処理モジュール、インターフェースモジュール、およびメモリモジュールを含んでよく、これらのすべてが、1つまたは複数のバス1560を介して互いに通信し得る。モデムプロセッサ1522は、データ送信および受信ための処理、たとえば、符号化、変調、復調、復号などを実行することができる。CPU/RISC1524は、たとえば、音声通話、ウェブブラウジング、マルチメディア、ゲーム、ユーザインターフェース、測位などのような、様々な用途のための汎用的な処理を実行することができる。メインコントローラ1526は、デジタルセクション1520内の様々なユニットの動作を指示し得る。SRAM1528は、デジタルセクション1520内のコントローラおよびプロセッサによって使用されるプログラムコードおよびデータを記憶することができる。ROM1532は、ワイヤレスデバイス1500のためのブートコードおよび/または他のコードならびにデータを記憶することができる。NANDフラッシュコントローラ1534は、NANDフラッシュ1544とデジタルセクション1520との間でのデータの転送を容易にし得る。SDRAMコントローラ1536は、SDRAM1546とデジタルセクション1520との間でのデータの転送を容易にし得る。
【０１２９】
安全モジュール1530は、機密情報(たとえば、個人情報、業務情報、パスワードなど)、および/またはデバイス1500に対する他の情報を安全に記憶することができる。安全モジュール1530は、乱数値を生成するために、エントロピー源および/またはRN生成器1540を含み得る。RN生成器1540は、エントロピー源1540から第1の乱数値を受け取り第2の乱数値を生成するための、ポスト処理回路を含み得る。安全モジュール1530は、エントロピー源および/またはRN生成器1540によって生成される乱数値を使用できる、暗号化アルゴリズムを実装することができる。安全モジュール1530はまた、ワイヤレスデバイス1500内の他のモジュールに乱数値を提供することができる。ワイヤレスデバイス1500内の他のモジュールおよびプロセッサはまた、乱数値を生成するために、エントロピー源および/またはRN生成器を含み得る。プロセッサ1524のようなプロセッサはまた、(たとえば、使用するプロセッサ上で実行されるソフトウェアのための)RN生成器を含み得る。
【０１３０】
一般に、デジタルセクション1520は、任意の数の処理モジュール、インターフェースモジュール、およびメモリモジュールを含み得る。デジタルセクション1520は、1つまたは複数のデジタル信号プロセッサ(DSP)、マイクロプロセッサ、RISCプロセッサなどで実装され得る。デジタルセクション1520は、1つまたは複数の特定用途向け集積回路(ASIC)および/または他の何らかのタイプの集積回路(IC)上で製造され得る。
【０１３１】
情報および信号は、様々な異なる技術および技法のいずれかを使用して表され得ることが、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【０１３２】
さらに、本明細書の開示に関して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は理解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップは、上では概してそれらの機能に関して説明されてきた。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、具体的適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を具体的な適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【０１３３】
本明細書の開示に関して説明される様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、DSP、ASIC、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェアコンポーネント、または本明細書で説明される機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【０１３４】
本明細書の開示に関して説明される方法またはアルゴリズムのステップは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、ASIC中に常駐し得る。ASICは、ユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別コンポーネントとして常駐し得る。
【０１３５】
1つまたは複数の例示的な設計では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、または任意のそれらの組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、命令またはデータ構造の形態の所望のプログラムコード手段を搬送または記憶するために使用され汎用もしくは専用コンピュータまたは汎用もしくは専用プロセッサによってアクセスされ得る、任意の他の媒体を備え得る。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フレキシブルディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１３６】
本開示の前述の説明は、いかなる当業者でも本開示を作成または使用することができるように提供される。本開示への様々な修正が当業者には容易に明らかであり、本明細書で定義される一般的な原理は、本開示の趣旨および範囲を逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明される例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴に一致する最大の範囲を与えられるものである。
【符号の説明】
【０１３７】
100  RN生成器
100h  RN生成器
110  エントロピー源
110a  エントロピー源
110b  エントロピー源
110k  エントロピー源
110q  エントロピー源
110w  エントロピー源
110x  低エネルギーのエントロピー源
110y  低エネルギーのエントロピー源
110z  高エネルギーのエントロピー源
120  ポスト処理モジュール
120a  暗号学的ハッシュ関数
120b  暗号学的ハッシュモジュール
120c  CRCモジュール
120d  CRCモジュール
120e  ポスト処理モジュール
120f  結合器
120g  ストリーム暗号モジュール
120h  ストリーム暗号モジュール
122  エントロピー累算器
124  暗号化モジュール
126  XORゲート
210  抵抗
212  抵抗
214  抵抗
220  MR素子
230  感知回路
310  抵抗
312  抵抗
314  抵抗
320  MR素子
330  センスアンプ
340  制御回路
510  アレイ
520aa  MRセル
520aj  MRセル
520ba  MRセル
520bj  MRセル
520ma  MRセル
520mj  MRセル
522a  スイッチ
522j  スイッチ
524a  スイッチ
524j  スイッチ
526a  スイッチ
526j  スイッチ
528a  スイッチ
528j  スイッチ
532a  プログラム源
532j  プログラム源
534a  プログラム源
532j  プログラム源
546a  ワード線
546b  ワード線
546m  ワード線
550  感知回路
620  MR素子
622  NMOSトランジスタ
720a  シフトレジスタ
720k  シフトレジスタ
730  暗号学的ハッシュ関数
820a  XORゲート
820b  XORゲート
820k  XORゲート
830  LFSR
1120  LFSR
1122a  Qビットレジスタ
1122b  Qビットレジスタ
1122c  Qビットレジスタ
1122d  Qビットレジスタ
1122e  Qビットレジスタ
1124  乗算器
1126  加算器
1130  LFSR
1132a  Qビットレジスタ
1132b  Qビットレジスタ
1132c  Qビットレジスタ
1132d  Qビットレジスタ
1132e  Qビットレジスタ
1132f  Qビットレジスタ
1132g  Qビットレジスタ
1132h  Qビットレジスタ
1132i  Qビットレジスタ
1132j  Qビットレジスタ
1132k  Qビットレジスタ
1134a  乗算器
1134b  乗算器
1136a  加算器
1136b  加算器
1136c  加算器
1140  非線形関数
1210  S/P変換器
1220  LFSR
1222a  Qビットレジスタ
1222b  Qビットレジスタ
1222c  Qビットレジスタ
1222d  Qビットレジスタ
1222e  Qビットレジスタ
1222f  Qビットレジスタ
1222g  Qビットレジスタ
1222h  Qビットレジスタ
1222i  Qビットレジスタ
1222j  Qビットレジスタ
1222k  Qビットレジスタ
1222l  Qビットレジスタ
1222m  Qビットレジスタ
1222n  Qビットレジスタ
1222o  Qビットレジスタ
1222p  Qビットレジスタ
1224a  乗算器
1224b  乗算器
1226a  加算器
1226b  加算器
1226c  加算器
1230  有限状態機械
1232a  Qビットレジスタ
1232b  Qビットレジスタ
1232c  Qビットレジスタ
1234a  置換ボックス
1234b  置換ボックス
1236a  整数加算器
1236b  整数加算器
1238a  加算器
1238b  加算器
1242  加算器
1300  干渉検出回路
1312  抵抗
1320  MR素子
1330  検出モジュール
1332  センスアンプ
1334  抵抗
1336  キャパシタ
1340a  第1の比較器
1340b  第2の比較器
1350  ORゲート
1360  干渉検出器
1500  ワイヤレスデバイス
1512  アンテナ
1514  受信機
1516  送信機
1520  デジタルセクション
1522  モデムプロセッサ
1524  CPU/RISC
1526  メインコントローラ
1528  SRAM
1530  安全モジュール
1532  ROM
1534  NANフラッシュコントローラ
1536  SDRAMコントローラ
1540  エントロピー源およびRN生成器
1544  NANDフラッシュ
1546  SDRAM
【図１】
0005826400.tif 000003
【図２Ａ】
0005826400.tif 000004
【図２Ｂ】
0005826400.tif 000005
【図３】
0005826400.tif 000006
【図４】
0005826400.tif 000007
【図５】
0005826400.tif 000008
【図６Ａ】
0005826400.tif 000009
【図６Ｂ】
0005826400.tif 000010
【図６Ｃ】
0005826400.tif 000011
【図７Ａ】
0005826400.tif 000012
【図７Ｂ】
0005826400.tif 000013
【図８Ａ】
0005826400.tif 000014
【図８Ｂ】
0005826400.tif 000015
【図９】
0005826400.tif 000016
【図１０】
0005826400.tif 000017
【図１１】
0005826400.tif 000018
【図１２】
0005826400.tif 000019
【図１３】
0005826400.tif 000020
【図１４】
0005826400.tif 000021
【図１５】
0005826400.tif 000022