(57)【要約】【課題】再現不可能性を有する乱数を簡易に生成することが可能な半導体記憶装置を得る。【解決手段】半導体記憶装置２はメモリアレイ１７と乱数生成部１５とを備え、乱数生成部１５は、メモリアレイ１７の不安定要素に基づいて乱数を生成する。メモリアレイ１７には、読み出したデータに含まれる誤りの発生状況、後天性不良ブロックの発生状況、及び先天性不良ブロックの発生状況等の様々な不安定要素が存在する。これらの不安定要素は、メモリアレイ１７の個体毎に異なり、また、同一の個体であっても長期的及び短期的な時間の経過等に伴って変動する。従って、このようなメモリアレイ１７の不安定要素に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。【選択図】図２
2014142891.tif 000002
【特許請求の範囲】
【請求項１】
メモリアレイと、
乱数生成部と、
を備え、
前記乱数生成部は、前記メモリアレイの不安定要素に基づいて乱数を生成する、半導体記憶装置。
【請求項２】
前記メモリアレイから読み出した第１のデータに発生している、不安定要素としての誤りを検出する誤り検出部をさらに備え、
前記乱数生成部は、前記誤り検出部から入力された、前記第１のデータに関する誤りの検出結果を示す情報に基づいて、乱数を生成する、請求項１に記載の半導体記憶装置。
【請求項３】
乱数生成用に予め準備された第２のデータを前記メモリアレイに書き込む制御部をさらに備え、
前記誤り検出部は、前記制御部によって書き込まれた前記第２データを、前記第１のデータとして前記メモリアレイから読み出す、請求項２に記載の半導体記憶装置。
【請求項４】
前記乱数生成部は、前記メモリアレイから読み出した、不安定要素としての誤りが発生している第１のデータに基づいて、乱数を生成し、
乱数生成用に予め準備された第２のデータを前記メモリアレイに書き込む制御部をさらに備え、
前記乱数生成部は、前記制御部によって書き込まれた前記第２のデータを、前記第１のデータとして前記メモリアレイから読み出す、請求項１に記載の半導体記憶装置。
【請求項５】
パターンが異なる複数の前記第２のデータが予め準備されており、
前記制御部は、複数の前記第２のデータの中から乱数生成の処理毎に異なる前記第２のデータを選択して前記メモリアレイに書き込む、請求項３又は４に記載の半導体記憶装置。
【請求項６】
前記メモリアレイは、前記第２のデータを書き込むための複数のブロックを有し、
前記制御部は、前記複数のブロックの中から乱数生成の処理毎に異なるブロックを選択して前記第２のデータを書き込む、請求項３〜５のいずれか一つに記載の半導体記憶装置。
【請求項７】
前記乱数生成部はさらに、前記制御部が前記第２のデータを前記メモリアレイに書き込む際の、不安定要素としての書き込み所要時間に基づいて、乱数を生成する、請求項３〜６のいずれか一つに記載の半導体記憶装置。
【請求項８】
前記乱数生成部はさらに、前記第２のデータを前記メモリアレイから消去する際の、不安定要素としての消去所要時間に基づいて、乱数を生成する、請求項３〜７のいずれか一つに記載の半導体記憶装置。
【請求項９】
前記メモリアレイは複数のブロックを有し、
前記複数のブロックに含まれる後天性不良ブロックに関する情報を記憶する記憶部をさらに備え、
前記乱数生成部は、前記記憶部から入力された、不安定要素としての後天性不良ブロックに関する情報に基づいて、乱数を生成する、請求項１〜８のいずれか一つに記載の半導体記憶装置。
【請求項１０】
前記メモリアレイは複数のブロックを有し、
前記複数のブロックに含まれる先天性不良ブロックに関する情報を記憶する記憶部をさらに備え、
前記乱数生成部は、前記記憶部から入力された、不安定要素としての先天性不良ブロックに関する情報に基づいて、乱数を生成する、請求項１〜９のいずれか一つに記載の半導体記憶装置。
【請求項１１】
前記乱数生成部は、前記メモリアレイの一以上の不安定要素をシードとして用いて、所定のアルゴリズムによって乱数を生成する、請求項１〜１０のいずれか一つに記載の半導体記憶装置。
【請求項１２】
複数のブロックを有するメモリアレイと、
前記メモリアレイから読み出したデータに発生している誤りを検出する誤り検出部と、
前記複数のブロックに含まれる不良ブロックに関する情報を記憶する記憶部と、
乱数生成部と、
を備え、
前記乱数生成部は、前記記憶部から入力された、不良ブロックに関する情報を第１パラメータとして用い、前記誤り検出部から入力された、前記データに関する誤りの検出結果を示す情報を第２パラメータとして用いて、所定のアルゴリズムによって乱数を生成する、半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関する。
【背景技術】
【０００２】
乱数は、暗号アルゴリズムにおける鍵の生成等に用いられる。真性乱数に近い乱数を得るための手法の一つとして、抵抗又はダイオードにおいて発生する雑音を利用して乱数を生成する方式が実用化されている。しかしながら、この方式では、低レベルの雑音をアナログ増幅回路によって増幅する必要があるため、アナログ増幅回路の回路規模が大きくなり、結果として乱数生成回路の回路規模が全体として増大する。また、アナログ回路を用いて乱数生成回路を構成する場合には、回路設計の難易度が高くなる。従って、回路規模の増大及び回路設計の複雑化を回避するためには、計算によって生成可能なディジタル乱数の使用が望まれる。
【０００３】
ディジタル乱数としては、擬似乱数が広く用いられている。擬似乱数は、乱数生成回路において、シード（初期値及びデータ）を用いた所定のアルゴリズムによって生成される。
【０００４】
なお、下記特許文献１には、不確定論理回路と、不確定論理回路から出力されるディジタル値における「０」及び「１」の出現頻度を均等にするための一様化回路とを備える乱数生成回路が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３６０４６７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
擬似乱数は計算によって生成されるため、初期値及びアルゴリズムが同一であれば、生成される擬似乱数の値も同一となる。従って、擬似乱数をセキュリティ用途で使用する場合には、攻撃者に初期値及びアルゴリズムを見破られることにより、セキュリティを破られる可能性がある。そのため、相互認証等の認証コードとして擬似乱数を使用することは、セキュリティの堅牢性の低下を招く。
【０００７】
本発明はかかる事情に鑑みて成されたものであり、再現不可能性を有する乱数を簡易に生成することが可能な半導体記憶装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の態様に係る半導体記憶装置は、メモリアレイと、乱数生成部と、を備え、前記乱数生成部は、前記メモリアレイの不安定要素に基づいて乱数を生成することを特徴とするものである。
【０００９】
第１の態様に係る半導体記憶装置によれば、乱数生成部は、メモリアレイの不安定要素に基づいて乱数を生成する。メモリアレイには、読み出したデータに含まれる誤りの発生状況、後天性不良ブロックの発生状況、及び先天性不良ブロックの発生状況等の様々な不安定要素が存在する。これらの不安定要素は、メモリアレイの個体毎に異なり、また、同一の個体であっても長期的及び短期的な時間の経過等に伴って変動する。従って、このようなメモリアレイの不安定要素に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【００１０】
本発明の第２の態様に係る半導体記憶装置は、第１の態様に係る半導体記憶装置において特に、前記メモリアレイから読み出した第１のデータに発生している、不安定要素としての誤りを検出する誤り検出部をさらに備え、前記乱数生成部は、前記誤り検出部から入力された、前記第１のデータに関する誤りの検出結果を示す情報に基づいて、乱数を生成することを特徴とするものである。
【００１１】
第２の態様に係る半導体記憶装置によれば、誤り検出部は、メモリアレイから読み出した第１のデータに発生している誤りを検出する。そして、乱数生成部は、誤り検出部から入力された、第１のデータに関する誤りの検出結果を示す情報に基づいて、乱数を生成する。メモリアレイから読み出した第１のデータに発生している誤りの発生状況（発生数、発生位置、及び発生態様等）は、同一の個体であっても完全に一致することはなく、また、時間の経過に伴う変動も顕著である。従って、メモリアレイから読み出した第１のデータに発生している誤りの発生状況に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【００１２】
本発明の第３の態様に係る半導体記憶装置は、第２の態様に係る半導体記憶装置において特に、乱数生成用に予め準備された第２のデータを前記メモリアレイに書き込む制御部をさらに備え、前記誤り検出部は、前記制御部によって書き込まれた前記第２データを、前記第１のデータとして前記メモリアレイから読み出すことを特徴とするものである。
【００１３】
第３の態様に係る半導体記憶装置によれば、制御部は、乱数生成用に予め準備された第２のデータをメモリアレイに書き込む。そして、誤り検出部は、制御部によって書き込まれた第２データを、第１のデータとしてメモリアレイから読み出すことにより、第１のデータに発生している誤りを検出する。従って、誤りを発生させやすい適切なデータを第２のデータとして準備することができ、その結果、生成する乱数の真性度を高めることが可能となる。
【００１４】
本発明の第４の態様に係る半導体記憶装置は、第１の態様に係る半導体記憶装置において特に、前記乱数生成部は、前記メモリアレイから読み出した、不安定要素としての誤りが発生している第１のデータに基づいて、乱数を生成し、乱数生成用に予め準備された第２のデータを前記メモリアレイに書き込む制御部をさらに備え、前記乱数生成部は、前記制御部によって書き込まれた前記第２のデータを、前記第１のデータとして前記メモリアレイから読み出すことを特徴とするものである。
【００１５】
第４の態様に係る半導体記憶装置によれば、乱数生成部は、メモリアレイから読み出した第１のデータに基づいて乱数を生成する。メモリアレイから読み出した第１のデータに発生している誤りの発生状況（発生数、発生位置、及び発生態様等）は、同一の個体であっても完全に一致することはなく、また、時間の経過に伴う変動も顕著である。従って、メモリアレイから読み出した、誤りが発生している第１のデータに基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。しかも、制御部は、乱数生成用に予め準備された第２のデータをメモリアレイに書き込み、乱数生成部は、制御部によって書き込まれた第２データを、第１のデータとしてメモリアレイから読み出すことにより、第１のデータに基づいて乱数を生成する。従って、誤りを発生させやすい適切なデータを第２のデータとして準備することができ、その結果、生成する乱数の真性度を高めることが可能となる。
【００１６】
本発明の第５の態様に係る半導体記憶装置は、第３又は第４の態様に係る半導体記憶装置において特に、パターンが異なる複数の前記第２のデータが予め準備されており、前記制御部は、複数の前記第２のデータの中から乱数生成の処理毎に異なる前記第２のデータを選択して前記メモリアレイに書き込むことを特徴とするものである。
【００１７】
第５の態様に係る半導体記憶装置によれば、パターンが異なる複数の第２のデータが予め準備されており、制御部は、複数の第２のデータの中から乱数生成の処理毎に異なる第２のデータを選択してメモリアレイに書き込む。第２のデータを異ならせることによって、第１のデータにおける誤りの発生状況を異ならせることができるため、生成する乱数の真性度を高めることが可能となる。
【００１８】
本発明の第６の態様に係る半導体記憶装置は、第３〜第５のいずれか一つの態様に係る半導体記憶装置において特に、前記メモリアレイは、前記第２のデータを書き込むための複数のブロックを有し、前記制御部は、前記複数のブロックの中から乱数生成の処理毎に異なるブロックを選択して前記第２のデータを書き込むことを特徴とするものである。
【００１９】
第６の態様に係る半導体記憶装置によれば、制御部が第２のデータを書き込むための複数のブロックが割り当てられており、制御部は、複数のブロックの中から乱数生成の処理毎に異なるブロックを選択して第２のデータを書き込む。第２のデータを書き込むブロックを異ならせることによって、第１のデータにおける誤りの発生状況を異ならせることができるため、生成する乱数の真性度を高めることが可能となる。
【００２０】
本発明の第７の態様に係る半導体記憶装置は、第３〜第６のいずれか一つの態様に係る半導体記憶装置において特に、前記乱数生成部はさらに、前記制御部が前記第２のデータを前記メモリアレイに書き込む際の、不安定要素としての書き込み所要時間に基づいて、乱数を生成することを特徴とするものである。
【００２１】
第７の態様に係る半導体記憶装置によれば、乱数生成部は、制御部が第２のデータをメモリアレイに書き込む際の、不安定要素としての書き込み所要時間に基づいて、乱数を生成する。第２のデータをメモリアレイに書き込む際の所要時間は、同一の個体であっても、第２のデータの内容や、書き込み対象ブロックの劣化度合い等に応じて変動する。従って、誤りの発生状況のみならず書き込み所要時間をも加味して乱数を生成することにより、生成する乱数の真性度を高めることが可能となる。
【００２２】
本発明の第８の態様に係る半導体記憶装置は、第３〜第７のいずれか一つの態様に係る半導体記憶装置において特に、前記乱数生成部はさらに、前記第２のデータを前記メモリアレイから消去する際の、不安定要素としての消去所要時間に基づいて、乱数を生成することを特徴とするものである。
【００２３】
第８の態様に係る半導体記憶装置によれば、乱数生成部は、第２のデータをメモリアレイから消去する際の、不安定要素としての消去所要時間に基づいて、乱数を生成する。第２のデータをメモリアレイから消去する際の所要時間は、同一の個体であっても、第２のデータの内容や、消去対象ブロックの劣化度合い等に応じて変動する。従って、誤りの発生状況のみならず消去所要時間をも加味して乱数を生成することにより、生成する乱数の真性度を高めることが可能となる。
【００２４】
本発明の第９の態様に係る半導体記憶装置は、第１〜第８のいずれか一つの態様に係る半導体記憶装置において特に、前記メモリアレイは複数のブロックを有し、前記複数のブロックに含まれる後天性不良ブロックに関する情報を記憶する記憶部をさらに備え、前記乱数生成部は、前記記憶部から入力された、不安定要素としての後天性不良ブロックに関する情報に基づいて、乱数を生成することを特徴とするものである。
【００２５】
第９の態様に係る半導体記憶装置によれば、乱数生成部は、不安定要素としての後天性不良ブロックに関する情報に基づいて、乱数を生成する。後天性不良ブロックの発生状況（発生数、発生位置等）は、メモリアレイの個体毎に異なり、また、同一の個体であっても時間の経過に伴って変動する。従って、後天性不良ブロックの発生状況に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【００２６】
本発明の第１０の態様に係る半導体記憶装置は、第１〜第９のいずれか一つの態様に係る半導体記憶装置において特に、前記メモリアレイは複数のブロックを有し、前記複数のブロックに含まれる先天性不良ブロックに関する情報を記憶する記憶部をさらに備え、前記乱数生成部は、前記記憶部から入力された、不安定要素としての先天性不良ブロックに関する情報に基づいて、乱数を生成することを特徴とするものである。
【００２７】
第１０の態様に係る半導体記憶装置によれば、乱数生成部は、不安定要素としての先天性不良ブロックに関する情報に基づいて、乱数を生成する。先天性不良ブロックの発生状況（発生数、発生位置等）は、メモリアレイの個体毎に異なる。従って、先天性不良ブロックの発生状況に基づいて乱数を生成することにより、メモリアレイの個体毎に異なる乱数を簡易に生成することが可能となる。
【００２８】
本発明の第１１の態様に係る半導体記憶装置は、第１〜第１０のいずれか一つの態様に係る半導体記憶装置において特に、前記乱数生成部は、前記メモリアレイの一以上の不安定要素をシードとして用いて、所定のアルゴリズムによって乱数を生成することを特徴とするものである。
【００２９】
第１１の態様に係る半導体記憶装置によれば、乱数生成部は、メモリアレイの一以上の不安定要素をシードとして用いて、所定のアルゴリズムによって乱数を生成する。従って、生成する乱数の真性度を高めることができるとともに、ビット長等に関して所望の態様の乱数を生成することが可能となる。
【００３０】
本発明の第１２の態様に係る半導体記憶装置は、複数のブロックを有するメモリアレイと、前記メモリアレイから読み出したデータに発生している誤りを検出する誤り検出部と、前記複数のブロックに含まれる不良ブロックに関する情報を記憶する記憶部と、乱数生成部と、を備え、前記乱数生成部は、前記記憶部から入力された、不良ブロックに関する情報を第１パラメータとして用い、前記誤り検出部から入力された、前記データに関する誤りの検出結果を示す情報を第２パラメータとして用いて、所定のアルゴリズムによって乱数を生成することを特徴とするものである。
【００３１】
第１２の態様に係る半導体記憶装置によれば、乱数生成部は、記憶部から入力された、不良ブロックに関する情報を第１パラメータとして用い、誤り検出部から入力された、メモリアレイから読み出したデータに関する誤りの検出結果を示す情報を第２パラメータとして用いて、所定のアルゴリズムによって乱数を生成する。後天性不良ブロックの発生状況（発生数、発生位置等）は、メモリアレイの個体毎に異なり、また、同一の個体であっても時間の経過に伴って変動する。また、先天性不良ブロックの発生状況は、メモリアレイの個体毎に異なる。また、メモリアレイから読み出したデータに発生している誤りの発生状況（発生数、発生位置、及び発生態様等）は、同一の個体であっても完全に一致することはなく、また、時間の経過に伴う変動も顕著である。従って、不良ブロックに関する情報を第１パラメータとして用い、メモリアレイから読み出したデータに関する誤りの検出結果を示す情報を第２パラメータとして用いて、乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。しかも、乱数生成部は、第１パラメータ及び第２パラメータをシードとして用いて、所定のアルゴリズムによって乱数を生成する。従って、生成する乱数の真性度を高めることができるとともに、ビット長等に関して所望の態様の乱数を生成することが可能となる。
【発明の効果】
【００３２】
本発明によれば、再現不可能性を有する乱数を簡易に生成することが可能な半導体記憶装置を得ることができる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施の形態に係るコンピュータシステムの構成を概略的に示す図である。
【図２】本発明の実施の形態に係る半導体記憶装置の構成を簡略化して示す図である。
【図３】メモリアレイの構成を示す図である。
【図４】第１の変形例に係る半導体記憶装置の構成を簡略化して示す図である。
【図５】第３の変形例に係る半導体記憶装置の構成を簡略化して示す図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００３５】
図１は、本発明の実施の形態に係るコンピュータシステムの構成を概略的に示す図である。コンピュータシステムは、ホスト装置１と半導体記憶装置２とを備えて構成されている。半導体記憶装置２は、例えば、ホスト装置１に着脱自在に接続可能なメモリカードである。
【００３６】
半導体記憶装置２がホスト装置１に接続されて半導体記憶装置２の電源がオンされると、ホスト装置１及び半導体記憶装置２は相互認証を行う。
【００３７】
ホスト装置１は、認証用の乱数を生成した後に、その乱数を暗号化する。そして、暗号化後の乱数を半導体記憶装置２に向けて送信する。半導体記憶装置２は、ホスト装置１から受信した乱数を復号した後に、その乱数を再び暗号化する。そして、暗号化後の乱数をホスト装置１に向けて送信する。ホスト装置１は、半導体記憶装置２から受信した乱数を復号する。そして、自身が生成して半導体記憶装置２に送信した乱数と、半導体記憶装置２から受信した乱数とを比較する。ホスト装置１は、両者が一致する場合には半導体記憶装置２は正規品であると判定し、両者が一致しない場合には半導体記憶装置２は正規品ではないと判定する。
【００３８】
同様に、半導体記憶装置２は、認証用の乱数を生成した後に、その乱数を暗号化する。そして、暗号化後の乱数をホスト装置１に向けて送信する。ホスト装置１は、半導体記憶装置２から受信した乱数を復号した後に、その乱数を再び暗号化する。そして、暗号化後の乱数を半導体記憶装置２に向けて送信する。半導体記憶装置２は、ホスト装置１から受信した乱数を復号する。そして、自身が生成してホスト装置１に送信した乱数と、ホスト装置１から受信した乱数とを比較する。半導体記憶装置２は、両者が一致する場合にはホスト装置１は正規品であると判定し、両者が一致しない場合にはホスト装置１は正規品ではないと判定する。
【００３９】
図２は、本発明の実施の形態に係る半導体記憶装置２の構成を簡略化して示す図である。図２の接続関係で示すように、半導体記憶装置２は、ホストインタフェース１１、メモリコントローラ１２、ＲＡＭ等の記憶部１３、誤り検出訂正回路１４、乱数生成部１５、メモリインタフェース１６、及びメモリアレイ１７を備えて構成されている。メモリアレイ１７は、例えば、ＭＬＣ（Multiple Level Cell）方式のＮＡＮＤ型フラッシュメモリを用いて構成されている。但し、この例に限定されるものではなく、メモリアレイ１７は、ＳＬＣ（Single Level Cell）方式のＮＡＮＤ型フラッシュメモリや、ＮＯＲ型フラッシュメモリ等を用いて構成されていても良い。
【００４０】
図３は、メモリアレイ１７の構成を示す図である。メモリアレイ１７は、複数のブロックＢ１〜ＢＮに分割されており（「Ｎ」は例えば４０９６）、各ブロックには複数のページが含まれている。ＮＡＮＤ型フラッシュメモリにおいて、ブロックはデータの消去の最小単位であり、ページはデータの書き込み及び読み出しの最小単位である。
【００４１】
以下、半導体記憶装置２が認証用の乱数を生成してホスト装置１に送信する処理について、図２，３を用いて詳細に説明する。
【００４２】
ホスト装置１は、所定の書き込みコマンドをデータＤ１として半導体記憶装置２に向けて送信する。書き込みコマンドには、書き込み対象ブロックの論理アドレスと、書き込み対象データとが含まれる。
【００４３】
書き込み対象ブロックとしては、メモリアレイ１７が有する全ブロックＢ１〜ＢＮのうちの複数のブロックが、書き込み対象ブロックの候補として割り当てられている。例えば、読み出しデータに誤りが発生しやすいブロック（但し不良ブロックを除く）が製造時又は実動作において特定され、そのようなブロックが書き込み対象の候補ブロックとして割り当てられる。ホスト装置１は、複数の候補ブロックの中から一のブロックを選択することにより、書き込み対象ブロックを設定する。また、ホスト装置１は、複数の候補ブロックの中から、乱数生成の処理毎に（つまり半導体記憶装置２の電源がオンされて認証が必要になる度に）異なるブロックを選択する。なお、候補ブロックは１個のみ割り当てられていても良い。また、書き込み対象ブロックを候補ブロックに限定するのではなく、ホスト装置１が実動作で使用する任意のブロックを書き込み対象ブロックとして選択しても良い。また、ブロックの選択は、ホスト装置１ではなくメモリコントローラ１２が行っても良い。
【００４４】
書き込み対象データとしては、パターンが異なる複数のサンプルデータが予め準備されている。例えば、インクリメントパターンのデータ（０１２・・・ＤＥＦ）、デクリメントパターンのデータ（ＦＥＤ・・・２１０）、千鳥パターンのデータ（５Ａ５Ａ・・・、又はＡ５Ａ５・・・等）が、サンプルデータとして準備されている。ホスト装置１は、複数のサンプルデータの中から一のデータを選択することにより、書き込み対象データとして設定する。また、ホスト装置１は、複数のサンプルデータの中から、乱数生成の処理毎に異なるデータを選択する。なお、サンプルデータは１個のみ準備されていても良い。また、書き込み対象データをサンプルデータに限定するのではなく、ホスト装置１が実動作で使用する任意のデータを書き込み対象データとして選択しても良い。また、書き込み対象データの選択は、ホスト装置１ではなくメモリコントローラ１２が行っても良い。
【００４５】
次にホストインタフェース１１は、受信した書き込みコマンドをデータＤ２としてメモリコントローラ１２に入力する。
【００４６】
次にメモリコントローラ１２は、書き込みコマンドを解析することにより、書き込み対象ブロックの論理アドレスをデータＤ３として記憶部１３に入力するとともに、書き込み対象データをデータＤ６として誤り検出訂正回路１４に入力する。
【００４７】
記憶部１３には、論理アドレスを物理アドレスに変換するためのアドレス変換テーブル（論物変換テーブル）が格納されており、記憶部１３は、入力された論理アドレスを、対応する物理アドレスに変換して、データＤ４としてメモリインタフェース１６に入力する。
【００４８】
誤り検出訂正回路１４は、入力されたデータＤ６に基づいて書き込み対象データのシンドロームを算出し、書き込み対象データ及びシンドロームをデータＤ７としてメモリインタフェース１６に入力する。
【００４９】
次にメモリインタフェース１６は、書き込み対象ブロックの物理アドレスをデータＤ５としてメモリアレイ１７に入力するとともに、書き込み対象データ及びシンドロームをデータＤ８としてメモリアレイ１７に入力する。これにより、書き込み対象データ及びシンドロームが、メモリアレイ１７の書き込み対象ブロックに書き込まれる。
【００５０】
次にホスト装置１は、所定の誤り情報取得コマンドをデータＤ１として半導体記憶装置２に向けて送信する。誤り情報取得コマンドには、上述した書き込み対象ブロックに等しい読み出し対象ブロックの論理アドレスが含まれる。
【００５１】
次にホストインタフェース１１は、受信した誤り情報取得コマンドをデータＤ２としてメモリコントローラ１２に入力する。
【００５２】
次にメモリコントローラ１２は、誤り情報取得コマンドを解析することにより、読み出し対象ブロックの論理アドレスをデータＤ３として記憶部１３に入力する。
【００５３】
次に記憶部１３は、入力された論理アドレスを、対応する物理アドレスに変換して、データＤ４としてメモリインタフェース１６に入力する。
【００５４】
次にメモリインタフェース１６は、読み出し対象ブロックの物理アドレスをデータＤ５としてメモリアレイ１７に入力する。これにより、メモリアレイ１７の読み出し対象ブロックに格納されているデータが読み出され、読み出しデータ及びシンドロームがデータＤ９としてメモリインタフェース１６に入力される。
【００５５】
次にメモリインタフェース１６は、読み出しデータ及びシンドロームをデータＤ１０として誤り検出訂正回路１４に入力する。
【００５６】
次に誤り検出訂正回路１４は、シンドロームに基づいて、読み出しデータにおける誤りの発生状況を検出する。具体的に、誤り検出訂正回路１４は、読み出しデータにおける符号誤りの発生数（ビット数）をカウントする。また、読み出しデータにおける符号誤りの発生位置（符号誤りが発生しているページアドレス、及び、ページの先頭アドレスから符号誤りが発生しているビットまでのオフセット値等）を特定する。また、読み出しデータにおける誤りの発生態様（符号「０」から符号「１」へのビット化けか、符号「１」から符号「０」へのビット化けか等）を検出する。そして、誤り検出訂正回路１４は、これらの読み出しデータに関する誤りの検出結果を示す情報を、データＤ１３として乱数生成部１５に入力する。また、誤り検出訂正回路１４は、誤りを訂正した後の読み出しデータを、データＤ１１としてメモリコントローラ１２に入力する。
【００５７】
次にホスト装置１は、所定の乱数生成コマンドをデータＤ１として半導体記憶装置２に向けて送信する。
【００５８】
次にホストインタフェース１１は、受信した乱数生成コマンドをデータＤ２としてメモリコントローラ１２に入力する。
【００５９】
次にメモリコントローラ１２は、乱数を生成させるための所定の制御信号をデータＤ１２として乱数生成部１５に入力する。
【００６０】
次に乱数生成部１５は、誤り検出訂正回路１４から入力されたデータＤ１３に基づいて、乱数を生成する。例えば、データＤ１３に含まれる各種の誤り情報を先頭から順に配列することによって、乱数を生成する。
【００６１】
ここで、読み出しデータにおける誤りの発生数が少ない等の理由により、一つのデータＤ１３に含まれる誤り情報を配列するだけでは必要なビット長（例えば１２８ビット）に足りない場合には、乱数生成部１５は、不足部分に任意のデータ（例えばオール「０」）をパディングすることによって、必要ビット長の乱数を生成する。あるいは、書き込み対象ブロック及び／又は書き込み対象データを更新して上記と同様の処理を繰り返すことによって新たなデータＤ１３を取得し、複数のデータＤ１３に含まれる誤り情報を配列することによって必要ビット長の乱数を生成しても良い。
【００６２】
また、一つのデータＤ１３に含まれる誤り情報が膨大であり、乱数の必要ビット長を超える場合には、乱数生成部１５は、超過分を削除することによって必要ビット長の乱数を生成する。あるいは、必要ビット長の相当分の誤り情報と、超過分の誤り情報とを、排他的論理和等によって合成することにより、必要ビット長の乱数を生成しても良い。
【００６３】
乱数生成部１５は、生成した乱数をデータＤ１４としてメモリコントローラ１２に入力する。
【００６４】
次にメモリコントローラ１２は、データＤ１４で示される乱数を暗号化した後、データＤ１５としてホストインタフェース１１に入力する。
【００６５】
次にホストインタフェース１１は、データＤ１５で示される暗号化された乱数をデータＤ１６としてホスト装置１に向けて送信する。
【００６６】
このように本実施の形態に係る半導体記憶装置２によれば、乱数生成部１５は、メモリアレイ１７の不安定要素の一つである読み出しデータの誤り発生状況に基づいて、乱数を生成する。メモリアレイ１７には、読み出しデータに含まれる誤りの発生状況、後天性不良ブロックの発生状況、先天性不良ブロックの発生状況、データを書き込む際の書き込み所要時間、及びデータを消去する際の消去所要時間等の、様々な不安定要素が存在する。これらの不安定要素は、メモリアレイ１７（又は半導体記憶装置２）の個体毎に異なり、また、同一の個体であっても長期的及び短期的な時間の経過等に伴って変動する。本実施の形態に係る半導体記憶装置２によれば、メモリアレイ１７の不安定要素の一つである読み出しデータの誤り発生状況に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【００６７】
また、本実施の形態に係る半導体記憶装置２によれば、誤り検出訂正回路１４（誤り検出部）は、メモリアレイ１７から読み出した読み出しデータ（第１のデータ）に発生している誤りを検出する。そして、乱数生成部１５は、誤り検出訂正回路１４から入力された、読み出しデータに関する誤りの検出結果を示す情報（データＤ１３）に基づいて、乱数を生成する。メモリアレイ１７から読み出した読み出しデータに発生している誤りの発生状況（発生数、発生位置、及び発生態様等）は、同一の個体であっても完全に一致することはなく、また、時間の経過に伴う変動も顕著である。従って、メモリアレイ１７から読み出した読み出しデータに発生している誤りの発生状況に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【００６８】
また、本実施の形態に係る半導体記憶装置２によれば、メモリコントローラ１２（制御部）は、乱数生成用に予め準備された書き込み対象データ（第２のデータ）をメモリアレイ１７に書き込む。そして、誤り検出訂正回路１４は、メモリコントローラ１２によって書き込まれた書き込み対象データを、読み出しデータとしてメモリアレイ１７から読み出すことにより、読み出しデータに発生している誤りを検出する。従って、誤りを発生させやすい適切なデータを書き込み対象データとして準備することができ、その結果、生成する乱数の真性度を高めることが可能となる。
【００６９】
また、本実施の形態に係る半導体記憶装置２によれば、パターンが異なる複数の書き込み対象データがサンプルデータとして予め準備されており、メモリコントローラ１２は、複数の書き込み対象データの中から乱数生成の処理毎に異なるデータを選択してメモリアレイ１７に書き込む。書き込み対象データを異ならせることによって、読み出しデータにおける誤りの発生状況を異ならせることができるため、生成する乱数の真性度を高めることが可能となる。
【００７０】
また、本実施の形態に係る半導体記憶装置２によれば、メモリコントローラ１２が書き込み対象データを書き込むための複数の候補ブロックが予め割り当てられており、メモリコントローラ１２は、複数の候補ブロックの中から乱数生成の処理毎に異なるブロックを選択して書き込み対象データを書き込む。書き込み対象データを書き込むブロックを異ならせることによって、読み出しデータにおける誤りの発生状況を異ならせることができるため、生成する乱数の真性度を高めることが可能となる。
【００７１】
以下、本発明に係る半導体記憶装置２の様々な変形例について、上記実施の形態との相違点を中心に説明する。後述する変形例は、任意に組み合わせて適用することが可能である。
【００７２】
＜第１の変形例＞
第１の変形例では、読み出しデータにおける誤りの発生状況に加えて（あるいはそれに代えて）、メモリアレイ１７の不安定要素の一つである不良ブロックの発生状況に基づいて乱数を生成する半導体記憶装置２について説明する。また、一以上の不安定要素をシードとして用いて、任意のアルゴリズムによって乱数を生成する半導体記憶装置２について説明する。
【００７３】
図４は、第１の変形例に係る半導体記憶装置２の構成を簡略化して示す図である。記憶部１３には、不良ブロックを管理するための不良ブロック管理テーブルが格納されている。不良ブロック管理テーブルには、メモリアレイ１７が有するブロックＢ１〜ＢＮのうちの先天性不良ブロック（製造過程において発生した不良ブロック）の物理アドレスが記述されている。また、不良ブロック管理テーブルには、ブロックＢ１〜ＢＮのうちの後天性不良ブロック（実動作において発生した不良ブロック）の物理アドレスが記述されている。
【００７４】
各ブロックＢ１〜ＢＮの所定ページには、そのブロックが先天性不良ブロックであるか否かを示す所定のフラグ情報が記述されている。従って、全ブロックＢ１〜ＢＮの上記所定ページを順にサーチすることにより、先天性不良ブロックを特定するための情報を含む不良ブロック管理テーブルを作成して記憶部１３に格納することができる。以下、具体的に説明する。
【００７５】
ホスト装置１は、先天性不良ブロックの情報取得コマンドをデータＤ１として半導体記憶装置２に向けて送信する。
【００７６】
次にホストインタフェース１１は、受信した情報取得コマンドをデータＤ２としてメモリコントローラ１２に入力する。
【００７７】
次にメモリコントローラ１２は、情報取得コマンドを解析することにより、サーチ対象ブロックの論理アドレスをデータＤ３として記憶部１３に入力する。
【００７８】
記憶部１３は、入力された論理アドレスを物理アドレスとして、データＤ４としてメモリインタフェース１６に入力する。
【００７９】
次にメモリインタフェース１６は、サーチ対象ブロックの物理アドレスをデータＤ５としてメモリアレイ１７に入力する。
【００８０】
次にメモリアレイ１７は、サーチ対象ブロック内の上記フラグ情報を確認することにより、サーチ対象ブロックが先天性不良ブロックであるか否かを示す情報をデータＤ９としてメモリインタフェース１６に入力する。
【００８１】
かかる情報は、メモリインタフェース１６から、誤り検出訂正回路１４、メモリコントローラ１２、及びホストインタフェース１１をこの順に経由して、ホスト装置１に向けて送信される。ホスト装置１は、全ブロックＢ１〜ＢＮに関する先天性不良ブロック情報を取得するまで、上記と同様の処理を繰り返し実行する。
【００８２】
次にホスト装置１は、所定の管理テーブル更新コマンドをデータＤ１として半導体記憶装置２に向けて送信する。管理テーブル更新コマンドには、全ての先天性不良ブロックの物理アドレスが含まれる。
【００８３】
次にホストインタフェース１１は、受信した管理テーブル更新コマンドをデータＤ２としてメモリコントローラ１２に入力する。
【００８４】
次にメモリコントローラ１２は、管理テーブル更新コマンドを解析することにより、全ての先天性不良ブロックの物理アドレスが記述された不良ブロック管理テーブルを作成する。そして、作成した不良ブロック管理テーブルを記憶部１３に格納する。
【００８５】
また、実動作において後天性不良ブロックが発生した場合には、メモリコントローラ１２は、その後天性不良ブロックの物理アドレスを追加するように、記憶部１３に格納されている不良ブロック管理テーブルを更新する。
【００８６】
メモリアレイ１７における不良ブロック（先天性不良ブロック及び後天性不良ブロック）の発生状況を示す不良ブロック情報は、データＤ２０として記憶部１３から乱数生成部１５に入力される。不良ブロック情報には、不良ブロック数及び不良ブロックの物理アドレスが含まれる。
【００８７】
乱数生成部１５は、誤り検出訂正回路１４から入力されたデータＤ１３と、記憶部１３から入力されたデータＤ２０とに基づいて、乱数を生成する。具体的に乱数生成部１５は、データＤ１３及びデータＤ２０をシードとして用いて、擬似乱数生成アルゴリズム、ハッシュ関数、又は共通鍵方式の暗号化アルゴリズム等の任意の乱数生成アルゴリズムによって、ディジタル乱数を生成する。ディジタル乱数を生成するにあたり、乱数生成部１５は、データＤ２０を第１パラメータ（初期値）として使用し、データＤ１３を第２パラメータ（データ）として使用する。初期値を使用せずデータのみを使用するアルゴリズムを採用する場合には、乱数生成部１５は、データＤ１３，Ｄ２０の一方をデータとして使用しても良いし、データＤ１３，Ｄ２０の双方をデータとして使用しても良い。
【００８８】
また、乱数生成部１５は、データＤ１３，Ｄ２０のビット長に制限されることなく、乱数の必要ビット長に応じてビット長を拡張又は圧縮することによって、所望のビット長の乱数を生成することができる。
【００８９】
なお、上記実施の形態と同様に、乱数生成部１５は、データＤ１３に含まれる各種の誤り情報と、データＤ２０に含まれる不良ブロック情報とを順に配列することによって、乱数を生成しても良い。
【００９０】
このように第１の変形例に係る半導体記憶装置２によれば、乱数生成部１５は、メモリアレイ１７の不安定要素の一つである先天性不良ブロックに関する情報に基づいて、乱数を生成する。先天性不良ブロックの発生状況（発生数、発生位置等）は、メモリアレイ１７の個体毎に異なる。つまり、先天性不良ブロックに関する不良ブロック情報は、メモリアレイ１７の個体差を反映したユニークＩＤとして使用することができる。従って、先天性不良ブロックの発生状況に基づいて乱数を生成することにより、メモリアレイ１７の個体毎に異なる乱数を簡易に生成することが可能となる。
【００９１】
また、第１の変形例に係る半導体記憶装置２によれば、乱数生成部１５は、メモリアレイ１７の不安定要素の一つである後天性不良ブロックに関する情報に基づいて、乱数を生成する。後天性不良ブロックの発生状況は、メモリアレイ１７の個体毎に異なり、また、同一の個体であっても時間の経過に伴って変動する。従って、後天性不良ブロックの発生状況に基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【００９２】
また、第１の変形例に係る半導体記憶装置２によれば、乱数生成部１５は、メモリアレイ１７の一以上の不安定要素をシードとして用いて、所定のアルゴリズムによって乱数を生成する。従って、生成する乱数の真性度を高めることができるとともに、ビット長等に関して所望の態様の乱数を生成することが可能となる。
【００９３】
＜第２の変形例＞
第２の変形例では、読み出しデータにおける誤りの発生状況に加えて（あるいはそれに代えて）、メモリアレイ１７の不安定要素の一つである書き込み所要時間及び消去所要時間に基づいて乱数を生成する半導体記憶装置２について説明する。
【００９４】
上記実施の形態においてメモリコントローラ１２は、書き込み対象ブロックに書き込み対象データを書き込む。その際、書き込み対象ブロックに以前の書き込み対象データ（以下「旧データ」と称す）が書き込まれている場合には、メモリコントローラ１２は、その旧データを消去した後に、新たな書き込み対象データを書き込む。ここで、メモリコントローラ１２は、書き込み対象ブロックから旧データを消去するために要した時間を計測し、消去所要時間を示すデータＤ１２として乱数生成部１５に入力する。また、メモリコントローラ１２は、旧データの消去後、書き込み対象ブロックに新たな書き込み対象データを書き込むために要した時間を計測し、書き込み所要時間を示すデータＤ１２として乱数生成部１５に入力する。
【００９５】
乱数生成部１５は、誤り検出訂正回路１４から入力されたデータＤ１３と、メモリコントローラ１２から入力されたデータＤ１２とに基づいて、乱数を生成する。例えば、データＤ１３に含まれる各種の誤り情報と、データＤ１２に含まれる消去所要時間及び書き込み所要時間とを順に配列することによって、乱数を生成する。
【００９６】
このように第２の変形例に係る半導体記憶装置２によれば、乱数生成部１５は、旧データをメモリアレイ１７から消去する際の、不安定要素としての消去所要時間に基づいて、乱数を生成する。旧データをメモリアレイ１７から消去する際の所要時間は、同一の個体であっても、データの内容や消去対象ブロックの劣化度合い等に応じて変動する。従って、誤りの発生状況のみならず消去所要時間をも加味して乱数を生成することにより、生成する乱数の真性度を高めることが可能となる。
【００９７】
また、第２の変形例に係る半導体記憶装置２によれば、乱数生成部１５は、メモリコントローラ１２が書き込み対象データをメモリアレイ１７に書き込む際の、不安定要素としての書き込み所要時間に基づいて、乱数を生成する。書き込み対象データをメモリアレイ１７に書き込む際の所要時間は、同一の個体であっても、データの内容や書き込み対象ブロックの劣化度合い等に応じて変動する。従って、誤りの発生状況のみならず書き込み所要時間をも加味して乱数を生成することにより、生成する乱数の真性度を高めることが可能となる。
【００９８】
＜第３の変形例＞
上記実施の形態では、乱数生成部１５は、誤り検出訂正回路１４から入力された誤りの検出結果を示す情報（データＤ１３）に基づいて乱数を生成した。これに代えて乱数生成部１５は、メモリアレイ１７から読み出された読み出しデータそのものに基づいて、乱数を生成しても良い。
【００９９】
図５は、第３の変形例に係る半導体記憶装置２の構成を簡略化して示す図である。メモリインタフェース１６は、読み出し対象ブロックの物理アドレスをデータＤ５としてメモリアレイ１７に入力する。これにより、メモリアレイ１７の読み出し対象ブロックに格納されているデータが読み出され、読み出しデータ及びシンドロームがデータＤ９としてメモリインタフェース１６に入力される。
【０１００】
次にメモリインタフェース１６は、読み出しデータをデータＤ１０として乱数生成部１５に入力する。乱数生成部１５は、メモリインタフェース１６から入力されたデータＤ１０に基づいて、乱数を生成する。
【０１０１】
このように第３の変形例に係る半導体記憶装置２によれば、乱数生成部１５は、メモリアレイ１７から読み出した読み出しデータ（データＤ１０）に基づいて乱数を生成する。メモリアレイから読み出した読み出しデータに発生している誤りの発生状況（発生数、発生位置、及び発生態様等）は、同一の個体であっても完全に一致することはなく、また、時間の経過に伴う変動も顕著である。従って、メモリアレイ１７から読み出した、誤りが発生している読み出しデータに基づいて乱数を生成することにより、再現不可能性を有する乱数を簡易に生成することが可能となる。
【符号の説明】
【０１０２】
２  半導体記憶装置
１２  メモリコントローラ
１３  記憶部
１４  誤り検出訂正回路
１５  乱数生成部
１７  メモリアレイ
【図１】
2014142891.tif 000003
【図２】
2014142891.tif 000004
【図３】
2014142891.tif 000005
【図４】
2014142891.tif 000006
【図５】
2014142891.tif 000007