(57)【要約】【課題】簡単な構成で、つまり低コストで処理を行うことが可能な技術を提供する。【解決手段】乱数生成装置１は、不確定なデータ１００を出力する不確定回路１０と、暗号処理装置１１とを備えている。暗号処理装置１１は、自身の暗号機能を使用して入力データ３００を暗号化するとともに、自身の暗号機能と不確定回路１０から出力されるデータ１００とを使用して、当該データ１００よりも一様性を有する乱数３１０を生成する。【選択図】図１
2014224879.tif 000002
【特許請求の範囲】
【請求項１】
不確定なデータを出力する不確定回路と、
暗号処理装置と
を備え、
前記暗号処理装置は、自身の暗号機能を使用して入力データを暗号化するとともに、自身の暗号機能と前記不確定回路から出力されるデータとを使用して、当該データよりも一様性の高い乱数を生成する、乱数生成装置。
【請求項２】
請求項１に記載の乱数生成装置であって、
前記乱数は、暗号で用いられる鍵として、あるいは認証で用いられる認証コードとして使用される、乱数生成装置。
【請求項３】
請求項２に記載の乱数生成装置であって、
前記乱数は鍵として前記暗号処理装置に入力される、乱数生成装置。
【請求項４】
請求項１乃至請求項３のいずれか一つに記載の乱数生成装置と、
記憶部と
を備え、
前記暗号処理装置は、前記記憶部から読み出されたデータを暗号化する、記憶装置。
【請求項５】
請求項４に記載の記憶装置と、
前記記憶装置を制御するホスト装置と
を備える、情報処理システム。
【請求項６】
暗号機能を有し、当該暗号機能を使用して鍵を生成する鍵生成部を備え、
前記鍵生成部は、
データと自身の暗号機能とを使用して第１の鍵を生成し、
前記第１の鍵と自身の暗号機能とを使用して第２の鍵を生成する、暗号処理装置。
【請求項７】
請求項６に記載の暗号処理装置であって、
前記データは、不確定回路から出力される不確定なデータである、暗号処理装置。
【請求項８】
請求項６及び請求項７のいずれか一つに記載の暗号処理装置であって、
暗号機能を有する暗号処理部をさらに備え、
前記暗号処理部は、自身の鍵として、前記鍵生成部で生成される前記第１及び第２の鍵のどちらか一方を使用する、暗号処理装置。
【請求項９】
請求項８に記載の暗号処理装置であって、
前記暗号処理部は、自身の鍵として、前記鍵生成部で生成される前記第２の鍵を使用する、暗号処理装置。
【請求項１０】
互いに暗号化通信を行う記憶装置及びホスト装置を備える情報処理システムであって、
前記記憶装置は、
不確定なデータを出力する不確定回路と、
データを暗号化する暗号処理装置と
を有し、
前記暗号処理装置は、自身の暗号機能と前記不確定回路から出力されるデータとを使用して第１の鍵を生成し、
前記記憶装置は、前記暗号処理装置で生成された前記第１の鍵を前記ホスト装置に出力し、
前記ホスト装置は、第２の鍵を生成し、当該第２の鍵を前記記憶装置に出力し、
前記暗号処理装置は、自身が生成した前記第１の鍵及び前記ホスト装置からの前記第２の鍵を共通鍵として使用し、
前記ホスト装置は、自身が生成した前記第２の鍵及び前記記憶装置からの前記第１の鍵を共通鍵として使用する、情報処理システム。
【請求項１１】
請求項１０に記載の情報処理システムであって、
前記記憶装置は、前記暗号処理装置で暗号化された前記第１の鍵を前記ホスト装置に出力する、情報処理システム。
【請求項１２】
請求項１０及び請求項１１のいずれか一つに記載の情報処理システムであって、
前記ホスト装置は、前記第２の鍵を暗号化して前記記憶装置に出力する、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理に関する。
【背景技術】
【０００２】
特許文献１に記載されているように、従来から暗号処理に関して様々な技術が提案されている。また特許文献２には、乱数生成技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２３４１５３号公報
【特許文献２】特開２００３−１７３２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されているように、乱数生成と暗号処理とが同じ装置で行われることがある。このような装置や他の装置等においては、簡単な構成で、つまり低コストで処理が行えることが望まれる。
【０００５】
そこで、本発明は上述の点に鑑みて成されたものであり、簡単な構成で、つまり低コストで処理を行うことが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明に係る乱数生成装置の一態様は、不確定なデータを出力する不確定回路と、暗号処理装置とを備え、前記暗号処理装置は、自身の暗号機能を使用して入力データを暗号化するとともに、自身の暗号機能と前記不確定回路から出力されるデータとを使用して、当該データよりも一様性の高い乱数を生成する。
【０００７】
また、本発明に係る乱数生成装置の一態様では、前記乱数は、暗号で用いられる鍵として、あるいは認証で用いられる認証コードとして使用される。
【０００８】
また、本発明に係る乱数生成装置の一態様では、前記乱数は鍵として前記暗号処理装置に入力される。
【０００９】
また、本発明に係る記憶装置の一態様は、上記の乱数生成装置と、記憶部とを備え、前記暗号処理装置は、前記記憶部から読み出されたデータを暗号化する。
【００１０】
また、本発明に係る情報処理システムの一態様は、上記の記憶装置と、前記記憶装置を制御するホスト装置とを備える。
【００１１】
また、本発明に係る暗号処理装置の一態様は、暗号機能を有し、当該暗号機能を使用して鍵を生成する鍵生成部を備え、前記鍵生成部は、データと自身の暗号機能とを使用して第１の鍵を生成し、前記第１の鍵と自身の暗号機能とを使用して第２の鍵を生成する。
【００１２】
また、本発明に係る暗号処理装置の一態様では、前記データは、不確定回路から出力される不確定なデータである。
【００１３】
また、本発明に係る暗号処理装置の一態様では、暗号機能を有する暗号処理部がさらに設けられ、前記暗号処理部は、自身の鍵として、前記鍵生成部で生成される前記第１及び第２の鍵のどちらか一方を使用する。
【００１４】
また、本発明に係る暗号処理装置の一態様では、前記暗号処理部は、自身の鍵として、前記鍵生成部で生成される前記第２の鍵を使用する。
【００１５】
また、本発明に係る情報処理システムの一態様は、互いに暗号化通信を行う記憶装置及びホスト装置を備える情報処理システムであって、前記記憶装置は、不確定なデータを出力する不確定回路と、データを暗号化する暗号処理装置とを有し、前記暗号処理装置は、自身の暗号機能と前記不確定回路から出力されるデータとを使用して第１の鍵を生成し、前記記憶装置は、前記暗号処理装置で生成された前記第１の鍵を前記ホスト装置に出力し、前記ホスト装置は、第２の鍵を生成し、当該第２の鍵を前記記憶装置に出力し、前記暗号処理装置は、自身が生成した前記第１の鍵及び前記ホスト装置からの前記第２の鍵を共通鍵として使用し、前記ホスト装置は、自身が生成した前記第２の鍵及び前記記憶装置からの前記第１の鍵を共通鍵として使用する。
【００１６】
また、本発明に係る情報処理システムの一態様では、前記記憶装置は、前記暗号処理装置で暗号化された前記第１の鍵を前記ホスト装置に出力する。
【００１７】
また、本発明に係る情報処理システムの一態様では、前記ホスト装置は、前記第２の鍵を暗号化して前記半導体メモリに出力する。
【発明の効果】
【００１８】
本発明によれば、簡単な構成で、つまり低コストで処理を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】乱数生成装置の構成を示す図である。
【図２】メモリシステムの構成を示す図である。
【図３】半導体メモリの動作を示すフローチャートである。
【発明を実施するための形態】
【００２０】
図１は実施の形態に係る乱数生成装置１の構成を示す図である。本実施の形態に係る乱数生成装置１は、一様性の高い乱数を生成して出力するとともに、入力データを暗号化する暗号機能を有している。図２に示されるように、乱数生成装置１は、不確定回路１０と暗号処理装置１１とを備えている。
【００２１】
不確定回路１０は、不確定なデータ１００を生成して出力する。データ１００はデジタルデータである。不確定回路１０は、例えば、抵抗あるいはダイオードの熱雑音を利用して不確定なデータ１００を生成することができる。また不確定回路１０は、例えば、水晶発振器の揺らぎを利用して不確定なデータ１００を生成することができる。また不確定回路１０は、特許文献２に記載されているように、例えば、ＲＳフリップフロップ等の論理回路を利用して不確定なデータ１００を生成することができる。論理回路を利用して不確定なデータを生成する不確定回路１０は「不確定論路回路」とも呼ばれる。不確定回路１０から出力されるデータ１００は、再現不可能性を有する、一様性の低い乱数であると見ることができる。一様性の低い乱数については、そのエントロピー（乱雑性）は低くく、エントロピーの低い乱数は真性度が低いことから、データ１００は真性度の低い乱数と言える。
【００２２】
暗号処理装置１１は、暗号機能を有しており、当該暗号機能を使用して、入力データ３００を暗号化し、暗号化後の入力データ３００を暗号データ３１０として出力する。さらに、暗号処理装置１１は、自身の暗号機能と不確定回路１０から出力されるデータ１００とを使用して、当該データ１００よりも一様性の高い乱数２００を生成して出力する。つまり、暗号処理装置１１は、自身の暗号機能とデータ１００とを使用して、当該データ１００よりも“１”と“０”の出現頻度（出現確率）の差が小さい乱数２００（当該データ１００よりも値の偏りが少ない乱数２００）を生成して出力する。暗号処理装置１１は、データの一様性を高める一様化回路の機能を有していると言える。暗号処理装置１１で生成される乱数２００は、再現不可能性を有する、一様性の高いデジタルデータである。一様性の高い乱数については、そのエントロピーは高く、エントロピーの高い乱数は真性度が高いことから、乱数２００は、真性度の高い乱数と言える。なお、暗号処理装置１１は、自身の暗号機能を使用して、暗号化されたデータを復号化しても良い。
【００２３】
このような乱数生成装置１で生成される真性度の高い乱数２００は、例えば、機密性の高い情報として使用することができる。機密性の高い情報としては、例えば、暗号で用いられる鍵や、認証で用いられる認証コードがある。乱数２００は、ＤＥＳ（Data Encryption Standard）あるいはＡＥＳ（Advanced Encryption Standard）等の暗号アルゴリズムで使用される鍵として使用することができる。また、乱数２００は、例えば、複数の装置間での相互認証において当該複数の装置間で使用される認証コードとして使用することができる。
【００２４】
以上のように、本実施の形態に係る乱数生成装置１では、暗号処理装置１１の暗号機能と不確定回路１０から出力されるデータ１００とが使用されて一様性の高い乱数２００が生成されることから、不確定回路１０から出力されるデータ１００のエントロピーを高めるために当該データ１００を一様化する一様化回路を暗号処理装置１１とは別に設ける必要がなくなる。よって、暗号処理と、真性度の高い乱数の生成とを簡単な構成で実現することができる。その結果、暗号処理と乱数生成とを行う装置の低コスト化が可能となる。なお、一様化回路は、特許文献１に記載されているように「平滑回路」とも呼ばれる。また、本実施の形態のように、乱数２００の一様性を暗号処理装置１１の一部を使って担保することによって、回路規模のオーバーヘッドを最小限に抑えることができる。
【００２５】
＜乱数生成装置の使用例＞
次に乱数生成装置１の使用例と暗号処理装置１１の構成例について説明する。図２は、乱数生成装置１を搭載した半導体メモリ２０を備えるメモリシステム５０を示すブロック図である。
【００２６】
図２に示されるように、情報処理システムの一種であるメモリシステム５０は、乱数生成装置１を有する半導体メモリ２０と、当該半導体メモリ２０を制御するホスト装置３０とを備えている。記憶装置の一種である半導体メモリ２０とホスト装置３０とは互いに暗号化通信を行う。
【００２７】
メモリシステム５０は、例えば、ゲーム装置に実装されるコンピュータシステムである。当該ゲーム装置は、ゲーム装置本体と、それに着脱可能なゲームカートリッジとを備えている。半導体メモリ２０はゲームカートリッジに内蔵され、ホスト装置３０はゲーム装置本体に内蔵される。ホスト装置３０は、一種のコンピュータである。ユーザは、ゲーム装置本体に装着するゲームカードリッジを交換することによって、様々な種類のゲームを楽しむことができる。メモリシステム５０では、ホスト装置３０と半導体メモリ２０との間において、暗号で使用される鍵の交換が行われる。
【００２８】
半導体メモリ２０は、例えばマスクＲＯＭ（Read Only Memory）である。半導体メモリ２０は、乱数生成装置１を構成する不確定回路１０及び暗号処理装置１１と、コマンドデコーダ１２と、記憶部であるメモリアレイ１３とを備えている。本例では、暗号処理装置１１が使用されて半導体メモリ２０のセキュリティが実現されている。また、乱数生成装置１で生成された乱数２００は、暗号処理装置１１に対して鍵として入力される。
【００２９】
図２に示される暗号処理装置１１は、例えば、共通鍵暗号方式の一種であるストリーム暗号方式を使用して、データを暗号化及び復号化する。なお、暗号処理装置１１は、共通鍵暗号方式の一種であるブロック暗号方式を使用してデータを暗号化及び復号化しても良い。また暗号処理装置１１は、公開鍵暗号方式を使用してデータを暗号化及び復号化しても良い。
【００３０】
暗号処理装置１１は、複数の暗号処理部１１０，１１１と、演算回路１１２と、第１選択回路１１３と、第２選択回路１１４と、第３選択回路１１５とを備えている。暗号処理部１１０，１１１のそれぞれは暗号機能を有している。暗号処理部１１０，１１１では、使用される暗号アルゴリズムは互いに同じであっても良いし、互いに異なっても良い。暗号処理部１１０，１１１で使用される暗号アルゴリズムとしては、例えば、ＤＥＳあるいはＡＥＳなどが考えられる。本例に係る暗号処理装置１１では、暗号処理部１１０が、自身の暗号機能（自身の暗号アルゴリズム）と不確定回路１０から出力されるデータ１００とを使用して、一様性の高い乱数２００を生成する。
【００３１】
第１選択回路１１３は、入力される第１制御信号に基づいて、入力される３つのデータのうちのいずれか一つのデータを選択し、選択したデータをデータ５５０ａとして暗号処理部１１０に出力する。また第２選択回路１１４は、入力される第２制御信号に基づいて、入力される３つのデータのうちのいずれか一つのデータを選択し、選択したデータをデータ５５０ｂとして暗号処理部１１０に出力する。
【００３２】
本実施の形態では、第１選択回路１１３から出力されるデータ５５０ａと、第２選択回路１１４から出力されるデータ５５０ｂとで、暗号処理部１１０で使用される共通鍵５５０が構成される。暗号処理部１１０は、この共通鍵５５０に基づいて、自身の初期化（自身の暗号アルゴリズムの初期化）を行う。以後、共通鍵５５０を構成するデータ５５０ａ，５５０ｂを、それぞれ「第１共通鍵５５０ａ」及び「第２共通鍵５５０ｂ」と呼ぶ。第１共通鍵５５０ａは、例えば、共通鍵５５０の上位データであって、第２共通鍵５５０ｂは、例えば、共通鍵５５０の下位データである。なお、第１共通鍵５５０ａは、共通鍵５５０の一部であれば良く、共通鍵５５０の上位データでなくても良い。また、第２共通鍵５５０ｂは、共通鍵５５０における、第１共通鍵５５０ａ以外の部分であれば良く、共通鍵５５０の下位データでなくても良い。
【００３３】
第１選択回路１１３には、暗号処理装置１１に予め記憶された固定鍵５００の一部である第１固定鍵５００ａと、不確定回路１０から出力されるデータ１００の一部である第１データ１００ａと、暗号処理装置１１で生成される乱数２００との３つのデータが入力される。第１選択回路１１３において、例えば第１固定鍵５００ａが選択される際には、第１固定鍵５００ａが第１共通鍵５５０ａとして暗号処理部１１０に入力される。
【００３４】
第２選択回路１１４には、固定鍵５００における、第１固定鍵５００ａ以外の部分である第２固定鍵５００ｂと、不確定回路１０から出力されるデータ１００における、第１データ１００ａ以外の部分である第２データ１００ｂと、ホスト装置３０から送られてくる乱数６００との３つのデータが入力される。第２選択回路１１４において、例えば乱数６００が選択される際には、乱数６００が第２共通鍵５５０ｂとして暗号処理部１１０に入力される。乱数６００は、後述するように、コマンドデコーダ１２から出力される。以後、乱数２００を「メモリ乱数２００」と呼び、乱数６００を「ホスト乱数６００」と呼ぶことがある。
【００３５】
第３選択回路１１５は、入力される第３制御信号に基づいて、入力される２つのデータのうちのいずれか一つのデータを選択し、選択したデータを出力データ５６０として演算回路１１２に出力する。第３選択回路１１５には、メモリ乱数２００と、メモリアレイ１３から出力されるデータ４００（以後、「メモリデータ４００」と呼ぶ）との２つのデータが入力される。第３選択回路１１５が、例えばメモリデータ４００を選択する場合には、メモリデータ４００が出力データ５６０となる。なお、第１選択回路１１３〜第３選択回路１１５を制御するための第１〜第３制御信号は、例えば、半導体メモリ２０内で生成される。
【００３６】
暗号処理部１１１は、暗号処理部１１０から出力される後述のセッション鍵ＳＫに基づいて自身の初期化（自身の暗号アルゴリズムの初期化）を行う。初期化後の暗号処理部１１１は、自身の暗号機能（自身の暗号アルゴリズム）を使用してキーストリームＫＳを生成して出力する。言い換えれば、初期化後の暗号処理部１１１は、暗号処理を行ってキーストリームＫＳを生成して出力する。
【００３７】
演算回路１１２は、暗号処理部１１１から出力されるキーストリームＫＳと、ホスト装置３０から出力される、暗号化されたコマンド３５０（以後、「暗号コマンド３５０」と呼ぶことがある）との排他的論路和を演算して出力する。これにより、ホスト装置３０からの暗号コマンド３５０が復号化される。復号化された暗号コマンド３５０は、平文コマンド３６０としてコマンドデコーダ１２に入力される。
【００３８】
また、演算回路１１２は、暗号処理部１１１から出力されるキーストリームＫＳと、第３選択回路１１５からの出力データ５６０との排他的論理和を演算して出力する。これにより、出力データ５６０が暗号化される。暗号化された出力データ５６０は、暗号データ５７０としてホスト装置３０に出力される。
【００３９】
このように、演算回路１１２は、暗号処理部１１１から出力されるデータをキーストリームＫＳとして使用して、入力されるデータを暗号化あるいは復号化する。
【００４０】
コマンドデコーダ１２は、入力される平文コマンド３６０をデコードして、当該平文コマンド３６０を解析する。コマンドデコーダ１２は、入力される平文コマンド３６０を解析した結果、当該平文コマンド３６０がメモリアレイ１３からデータを読み出すことを指示する読み出しコマンドである場合には、アドレス信号及びリード信号等の制御信号をメモリアレイ１３に出力する。これにより、メモリアレイ１３からメモリデータ４００が出力される。メモリアレイ１３には、例えば、複数のゲームプログラムや、各ゲームプログラムで使用される各種データなどが記憶されている。第３選択回路１１５からメモリデータ４００が出力されると、演算回路１１２においてメモリデータ４００が暗号化され、暗号化後のメモリデータ４００がホスト装置３０に入力される。ホスト装置３０は、入力されるメモリデータ４００にゲームプログラムが含まれている場合には、当該ゲームプログラムを実行する。
【００４１】
またコマンドデコーダ１２は、入力される平文コマンド３６０をデコードして、当該平文コマンド３６０に含まれる、ホスト装置３０が生成したホスト乱数６００を抽出する。コマンドデコーダ１２は、抽出したホスト乱数６００を第２選択回路１１４に出力する。
【００４２】
ホスト装置３０には、半導体メモリ２０の乱数生成装置１と同様の乱数生成装置が（以後、「ホスト側乱数生成装置」と呼ぶ）が設けられている。ホスト側乱数生成装置は、不確定回路１０と同様の不確定回路（以後、「ホスト側不確定回路」と呼ぶ）と、暗号処理装置１１と同様の暗号処理装置（「以後、ホスト側暗号処理装置」と呼ぶ）とを有している。ホスト装置３０は、ホスト側暗号処理装置を使用してコマンドを暗号化し、暗号化後のコマンド（暗号コマンド３５０）を半導体メモリ２０に出力する。また、ホスト装置３０は、ホスト側暗号処理装置を使用して、半導体メモリ２０からの暗号データ５７０を復号化する。
【００４３】
またホスト側乱数生成装置では、乱数生成装置１と同様にして、ホスト側暗号処理装置が、自身の暗号機能とホスト側不確定回路から出力されるデータとを使用して一様性の高いホスト乱数６００を生成する。ホスト装置３０は、生成したホスト乱数６００を含む所定のコマンドを半導体メモリ２０に出力する。なお、ホスト側乱数生成装置は、半導体メモリ２０の乱数生成装置１とは異なる方法でホスト乱数６００を生成しても良い。
【００４４】
本実施の形態に係るメモリシステム５０では、ホスト乱数６００及びメモリ乱数２００が鍵として使用される。ホスト装置３０と半導体メモリ２０との間で、ホスト乱数６００及びメモリ乱数２００の交換が行われることによって、鍵交換が行われる。
【００４５】
＜メモリシステムでの鍵交換について＞
次に、ホスト装置３０と半導体メモリ２０との間で鍵交換が行われる際のメモリシステム５０の動作について説明する。図３は、ホスト装置３０と半導体メモリ２０との間で鍵交換が行われる際の当該半導体メモリ２０の動作を示すフローチャートである。
【００４６】
図３に示されるように、ステップｓ１において、半導体メモリ２０では固定鍵５００が使用されて暗号処理装置１１についての初期化処理が行われる。この初期化処理は、ホスト装置３０と半導体メモリ２０との間で鍵交換を行うために必要な処理である。
【００４７】
ステップｓ１においては、第１選択回路１１３が第１固定鍵５００ａを選択して出力し、第２選択回路１１４が第２固定鍵５００ｂを選択して出力する。これにより、暗号処理部１１０には、固定鍵５００が共通鍵５５０として入力される。暗号処理部１１０は、入力された固定鍵５００（共通鍵５５０）に基づいて、自身の初期化（自身の暗号アルゴリズムを初期化）を行う。そして、初期化後の暗号処理部１１０は、自身の暗号機能を使用してセッション鍵ＳＫを生成して暗号処理部１１１に出力する。言い換えれば、初期化後の暗号処理部１１０は、暗号処理を行ってセッション鍵ＳＫを生成して出力する。ステップｓ１では、暗号処理部１１０における、固定鍵５００に基づいて初期化された暗号アルゴリズムの出力がセッション鍵ＳＫとなる。
【００４８】
またステップｓ１では、暗号処理部１１１が、入力されたセッション鍵ＳＫに基づいて、自身の初期化（自身の暗号アルゴリズムを初期化）を行う。そして、初期化後の暗号処理部１１１は、自身の暗号機能を使用してキーストリームＫＳを生成して演算回路１１２に出力する。ステップｓ１では、暗号処理部１１１における、セッション鍵ＳＫで初期化された暗号アルゴリズムの出力がキーストリームＫＳとなる。以後、このキーストリームＫＳを特に「鍵交換用キーストリームＫＳ」と呼ぶ。
【００４９】
ホスト装置３０でも、同様にして、固定鍵５００と同じ固定鍵が使用されてホスト側暗号処理装置についての初期化処理が行われる。これにより、ホスト側暗号処理装置においても、鍵交換用キーストリームＫＳと同じキーストリーム（以後、「ホスト側鍵交換用キーストリーム」と呼ぶ）が生成される。
【００５０】
ホスト装置３０は、ホスト側鍵交換用キーストリームを生成すると、当該ホスト側鍵交換用キーストリームを使用して乱数生成コマンドを暗号化する。乱数生成コマンドは、半導体メモリ２０に対してメモリ乱数２００を生成することを命令するコマンドである。ホスト装置３０は、暗号化された乱数生成コマンドを半導体メモリ２０に出力する。
【００５１】
ステップｓ２において、半導体メモリ２０が暗号化された乱数生成コマンドを受信すると、ステップｓ３において、演算回路１１２は、鍵交換用キーストリームＫＳを使用して当該乱数生成コマンドを復号化する。復号化された乱数生成コマンドはコマンドデコーダ１２に入力される。
【００５２】
コマンドデコーダ１２において乱数生成コマンドが解析されると、ステップｓ４において、第１選択回路１１３が第１データ１００ａを選択して出力し、第２選択回路１１４が第２データ１００ｂを選択して出力する。これにより、不確定回路１０から出力されるデータ１００が乱数生成用の共通鍵５５０（暫定の共通鍵５５０）として暗号処理部１１０に入力される。
【００５３】
次にステップｓ５において、鍵を生成する鍵生成部として機能する暗号処理部１１０は、自身の暗号機能（自身の暗号アルゴリズム）と、入力されたデータ１００（乱数生成用の共通鍵５５０）とを使用して、当該データ１００よりも一様性の高いメモリ乱数２００を生成して出力する。具体的には、暗号処理部１１０は、データ１００に基づいて自身の初期化を行う。そして、初期化後の暗号処理部１１０は、自身の暗号機能を使用してメモリ乱数２００を生成して出力する。ステップｓ５では、暗号処理部１１０における、データ１００（一様性の低い乱数）に基づいて初期化された暗号アルゴリズムの出力が、一様性の高いメモリ乱数２００となる。暗号アルゴリズムの出力については、暗号アルゴリズムの本質から予測不可能性を有することから、暗号アルゴリズムの出力では、“０”と“１”の出現確率の差が小さい。したがって、暗号処理部１１０において一様性の高いメモリ乱数２００を生成することができる。
【００５４】
暗号処理部１１０でメモリ乱数２００が生成されると、ステップｓ６において、第１選択回路１１３がメモリ乱数２００を選択して出力する。これにより、メモリ乱数２００が、鍵交換後に使用される正式な第１共通鍵５５０ａとして暗号処理部１１０に入力される。
【００５５】
次にステップｓ７において、半導体メモリ２０は、ステップｓ５で生成された、鍵としてのメモリ乱数２００をホスト装置３０に出力する。ステップｓ７では、第３選択回路１１５がメモリ乱数２００を選択して出力する。これにより、演算回路１１２には、出力データ５６０としてメモリ乱数２００が入力される。演算回路１１２は、入力されたメモリ乱数２００と鍵交換用キーストリームＫＳとの排他的論理和を演算して出力する。これにより、鍵交換用キーストリームＫＳで暗号化されたメモリ乱数２００が暗号データ５７０としてホスト装置３０に入力される。
【００５６】
ホスト装置３０に対して暗号化されたメモリ乱数２００が入力されると、ホスト側暗号処理装置は、ホスト側鍵交換用キーストリームを使用して、当該メモリ乱数２００を復号化する。また、ホスト装置３０では、半導体メモリ２０と同様にして、鍵として扱われるホスト乱数６００が生成される。そして、ホスト装置３０は、生成したホスト乱数６００を含むホスト乱数コマンドを生成する。このホスト乱数コマンドは、ホスト側暗号処理装置において、ホスト側鍵交換用キーストリームに基づいて暗号化される。暗号化されたホスト乱数コマンドは半導体メモリ２０に入力される。
【００５７】
ステップｓ８において、半導体メモリ２０が暗号化されたホスト乱数コマンドを受信すると、ステップｓ９において、暗号処理装置１１は、鍵交換用キーストリームＫＳを使用して当該ホスト乱数コマンドを復号化する。復号化されたホスト乱数コマンドはコマンドデコーダ１２に入力される。
【００５８】
次にステップｓ１０において、コマンドデコーダ１２は、ホスト乱数コマンドをデコードして、当該ホスト乱数コマンドからホスト乱数６００を抽出する。ホスト乱数６００が取得されると、ステップｓ１１において、第２選択回路１１４は当該ホスト乱数６００を選択して出力する。これにより、ホスト乱数６００が、鍵交換後に使用される正式な第２共通鍵５５０ｂとして暗号処理部１１０に入力される。暗号処理部１１０には、メモリ乱数２００及びホスト乱数６００から成る正式な共通鍵５５０が入力される。
【００５９】
ホスト装置３０においても、半導体メモリ２０と同様に、ホスト側暗号処理装置における、暗号処理部１１０に相当する暗号処理部に対して、半導体メモリ２０からのメモリ乱数２００とホスト乱数６００から成る正式な共通鍵が入力される。
【００６０】
ホスト装置３０は、半導体メモリ２０に対して、正式な共通鍵５５０を使用して暗号処理装置１１についての初期化処理を行うことを命令する初期化コマンドを生成する。そして、ホスト装置３０では、ホスト側暗号処理装置が、ホスト側鍵交換用キーストリームを使用して初期化コマンドを暗号化する。暗号化された初期化コマンドは半導体メモリ２０に入力される。
【００６１】
ステップｓ１２において、半導体メモリ２０が暗号化された初期化コマンドを受信すると、ステップｓ１３において、演算回路１１２は、鍵交換用キーストリームＫＳを使用して当該初期化コマンドを復号化する。復号化された初期化コマンドは、コマンドデコーダ１２に入力される。
【００６２】
コマンドデコーダ１２において初期化コマンドが解析されると、ステップｓ１４において、正式な共通鍵５５０（メモリ乱数２００及びホスト乱数６００）が使用されて暗号処理装置１１についての初期化処理が行われる。具体的には、暗号処理部１１０は、入力された正式な共通鍵５５０に基づいて、つまりホスト乱数６００及びメモリ乱数２００に基づいて、自身の初期化を行う。そして、初期化後の暗号処理部１１０は、自身の暗号機能を使用してセッション鍵ＳＫを生成して出力する。暗号処理部１１１は、暗号処理部１１０で生成されたセッション鍵ＳＫに基づいて、自身の初期化を行う。そして、初期化後の暗号処理部１１１は、自身の暗号機能を使用してキーストリームＫＳを生成して出力する。以後、暗号処理装置１１では、ホスト装置３０からのコマンドが、暗号処理部１１１から出力されるキーストリームＫＳで復号化される。また、メモリアレイ１３からのメモリデータ４００が暗号処理部１１１から出力されるキーストリームＫＳで暗号化される。
【００６３】
ホスト装置３０では、半導体メモリ２０と同様にして、ホスト乱数６００とメモリ乱数２００とから成る正式な共通鍵が使用されてホスト側暗号処理装置についての初期化処理が行われる。初期化処理後のホスト側暗号処理装置では、半導体メモリ２０に送信されるコマンドがキーストリームで暗号化されるとともに、半導体メモリ２０からの暗号データ５７０（暗号化されたメモリデータ４００）がキーストリームで復号化される。
【００６４】
このように、ホスト装置３０と半導体メモリ２０との間で鍵交換（本例では乱数の交換）を行うことによって、ホスト装置３０と半導体メモリ２０との間での相互認証を実現することができる。
【００６５】
また、本例のように、暗号処理装置１１の一部（暗号処理部１１０）を使って生成された一様性の高い乱数２００をセキュリティおける機密性の高い情報として使用することによって、セキュリティにおける機密性の高い情報を低コストで生成することができる。
【００６６】
また、本例のように、暗号処理装置１１の一部を使って生成された一様性の高い乱数２００を鍵として使用することによって、生成される鍵や交換される鍵のセキュリティを確保でき、その結果、暗号通信のセキュリティの確保を低コストで実現できる。
【００６７】
また、鍵生成部として機能する暗号処理部１１０は、ステップｓ５において、データ１００と自身の暗号機能とを使用して第１の鍵であるメモリ乱数２００を生成している。そして、暗号処理部１１０は、ステップｓ１４において、第１の鍵と自身の暗号機能とを使用して、第２の鍵であるセッション鍵ＳＫを生成している。このように、暗号処理部１１０が自分で生成した第１の鍵を使用して第２の鍵を生成することによって、簡単な構成でセキュリティの高い鍵を生成することができる。つまり、低コストでセキュリティの高い鍵を生成することができる。また、暗号処理部１１０では、不確定回路１０から出力されるデータ１００が使用されて第１の鍵が生成されているため、当該第１の鍵のセキュリティを高めることができる。上記の例では、第１の鍵（メモリ乱数２００）は、暗号処理部１１１では使用されていなかったが、メモリシステム５０で鍵交換が行われない場合等においては、暗号処理部１１１は、自身の鍵として第１の鍵を使用しても良い。
【００６８】
なお、上記の例では、暗号処理部装置１１で生成されたメモリ乱数２００が当該暗号処理装置１１で使用されているが、他の装置で使用されても良い。また、上記の例では、暗号処理装置１１に複数の暗号処理部を設けていたが、１つの暗号処理部だけを設けても良い。また、上記の例では、ホスト装置３０と半導体メモリ２０との間で鍵交換が行われているが、鍵交換を行わなくても良い。この場合には、半導体メモリ２０では、暗号処理装置１１で生成されたメモリ乱数２００だけで正式な共通鍵５５０が構成されることになる。また、ホスト装置３０においても、半導体メモリ２０から送られてくるメモリ乱数２００だけで、ホスト側暗号処理装置での正式な共通鍵が構成されることになる。また、本例のように記憶領域（記憶素子）に半導体素子が使用された半導体メモリ２０に不確定回路１０及び暗号処理装置１１等を設ける代わりに、記憶領域に半導体素子が使用されない記憶装置に不確定回路１０及び暗号処理装置１１等を設けても良い。
【００６９】
以上のように、乱数生成装置１、半導体メモリ２０及びメモリシステム５０は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【００７０】
１  乱数生成装置
１０  不確定回路
１１  暗号処理装置
２０  半導体メモリ
３０  ホスト装置
５０  メモリシステム
【図１】
2014224879.tif 000003
【図２】
2014224879.tif 000004
【図３】
2014224879.tif 000005