擬似乱数は計算によって生成されるため、シード及びアルゴリズムが同一であれば、生成される擬似乱数の値も同一となる。そのため、同一のシード及びアルゴリズムを用いて生成した擬似乱数を相互認証等の認証コードとして使用する場合には、第三者にシード及びアルゴリズムを見破られることにより、セキュリティを破られる可能性がある。従って、セキュリティの堅牢性を向上するためには、再現不可能性を有する乱数を簡易に生成することが望まれる。
また、共通鍵暗号方式等を用いた暗号化通信では、第三者による鍵の解読を困難にすべく、通信毎に更新されるセッション鍵が共通鍵(又はその一部)として使用される。そして、セッション鍵としては、擬似乱数生成器によって生成した擬似乱数が使用されることが一般的である。擬似乱数生成器において同一のシード及びアルゴリズムを用いて擬似乱数を生成すると、生成される擬似乱数は周期性を持つことになる。従って、その周期性が利用されて第三者にセッション鍵が解読されることを回避するためには、再現不可能性を有する乱数を用いたセッション鍵を簡易に生成することが望まれる。
本発明はかかる事情に鑑みて成されたものであり、再現不可能性を有する乱数を簡易に生成することが可能な半導体記憶装置を得ることを目的とする。また、ホスト装置と半導体記憶装置との間で鍵を交換するセキュリティ方式において、再現不可能性を有する乱数を用いたセッション鍵を簡易に生成することが可能で、かつセキュリティ強度が向上されたデータ処理システム及び半導体記憶装置を得ることを目的とする。
本発明の第1の態様に係る半導体記憶装置は、乱数の生成に用いる乱数生成用データが記憶されたメモリアレイと、乱数生成用データを更新するデータ更新部と、制御部と、を備え、前記データ更新部は、前記メモリアレイから読み出した第1の乱数生成用データを更新することにより、当該第1の乱数生成用データに基づいて生成される第1の乱数より後に使用される第2の乱数を生成するための第2の乱数生成用データを生成し、前記制御部は、前記第2の乱数生成用データを前記メモリアレイに書き込むことを特徴とするものである。
第1の態様に係る半導体記憶装置によれば、データ更新部は、メモリアレイから読み出した第1の乱数生成用データを更新することにより、第1の乱数より後に使用される第2の乱数を生成するための第2の乱数生成用データを生成し、制御部は、第2の乱数生成用データをメモリアレイに書き込む。従って、メモリアレイに記憶されている乱数生成用データが新たな乱数生成用データに更新されるため、更新される乱数生成用データに基づいて乱数を生成することができる。その結果、再現不可能性を有する乱数を簡易に生成することが可能となる。
本発明の第2の態様に係る半導体記憶装置は、第1の態様に係る半導体記憶装置において特に、前記データ更新部は、前記第1の乱数生成用データとは異なる前記第2の乱数生成用データを生成することを特徴とするものである。
第2の態様に係る半導体記憶装置によれば、データ更新部は、第1の乱数生成用データとは異なる第2の乱数生成用データを生成する。従って、第1の乱数生成用データに基づいて生成される第1の乱数と、第2の乱数生成用データに基づいて生成される第2の乱数とを、互いに異ならせることができるため、再現不可能性を有する乱数を生成することが可能となる。
本発明の第3の態様に係る半導体記憶装置は、第1又は第2の態様に係る半導体記憶装置において特に、前記メモリアレイから読み出した乱数生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成する乱数生成部をさらに備えることを特徴とするものである。
第3の態様に係る半導体記憶装置によれば、乱数生成部は、メモリアレイから読み出した乱数生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成する。このように、更新される乱数生成用データをシードとして用いた乱数生成アルゴリズムによって乱数を生成することにより、乱数の真性度を担保することが可能となる。しかも、メモリアレイから読み出した乱数生成用データをそのまま乱数として使用するのではなく、当該乱数生成用データを用いた乱数生成アルゴリズムによって乱数を生成するため、メモリアレイに記憶されている乱数生成用データの一部が破損又は欠損している場合等であっても、生成される乱数の真性度を担保することが可能となる。
本発明の第4の態様に係る半導体記憶装置は、第3の態様に係る半導体記憶装置において特に、前記乱数生成部による乱数の生成処理と、前記データ更新部による乱数生成用データの更新処理及び前記制御部による乱数生成用データの書き込み処理とは、並行して実行されることを特徴とするものである。
第4の態様に係る半導体記憶装置によれば、乱数生成部による乱数の生成処理と、データ更新部による乱数生成用データの更新処理及び制御部による乱数生成用データの書き込み処理とは、並行して実行される。従って、乱数の生成処理が完了した後に乱数生成用データの更新処理を開始する場合や、乱数生成用データの書き込み処理が完了した後に乱数の生成処理を開始する場合と比較すると、処理全体の所要時間を短縮することが可能となる。
本発明の第5の態様に係る半導体記憶装置は、第1又は第2の態様に係る半導体記憶装置において特に、前記メモリアレイには、前記乱数生成用データとして乱数が記憶されていることを特徴とするものである。
第5の態様に係る半導体記憶装置によれば、メモリアレイには、乱数生成用データとして乱数が記憶されている。従って、更新される乱数生成用データを乱数として使用することにより、乱数の真性度を担保することが可能となる。しかも、メモリアレイから読み出した乱数生成用データをそのまま乱数として使用することができ、当該乱数生成用データをシードとして用いた乱数生成処理が不要であるため、乱数を生成するための所要時間を短縮することが可能となる。
本発明の第6の態様に係る半導体記憶装置は、第5の態様に係る半導体記憶装置において特に、前記データ更新部は、前記第1の乱数生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、前記第2の乱数生成用データを生成する乱数生成器を有することを特徴とするものである。
第6の態様に係る半導体記憶装置によれば、乱数生成器は、第1の乱数生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、第2の乱数生成用データを生成する。このように、第1の乱数生成用データをシードとして用いた乱数生成アルゴリズムによって第2の乱数生成用データを生成することにより、乱数として使用される乱数生成用データの真性度を担保することが可能となる。
本発明の第7の態様に係る半導体記憶装置は、第1〜第6のいずれか一つの態様に係る半導体記憶装置において特に、前記制御部は、前記第2の乱数生成用データが前記メモリアレイに正しく書き込まれるまで、乱数生成用データの書き込み処理を繰り返し実行することを特徴とするものである。
第7の態様に係る半導体記憶装置によれば、制御部は、第2の乱数生成用データがメモリアレイに正しく書き込まれるまで、乱数生成用データの書き込み処理を繰り返し実行する。従って、意図しない電源断によって乱数生成用データの書き込み処理が未完了のまま中断した場合等であっても、電源の再投入後に乱数生成用データの書き込み処理を再開することにより、第2の乱数生成用データをメモリアレイに正しく書き込むことができる。その結果、次に乱数を生成する場合には乱数生成部は第2の乱数生成用データに基づいて乱数を生成することができるため、乱数の再現不可能性を担保することが可能となる。
本発明の第8の態様に係る半導体記憶装置は、第1〜第7のいずれか一つの態様に係る半導体記憶装置において特に、前記メモリアレイには、乱数生成用データの初期値として、半導体記憶装置毎に異なる固有値が記憶されていることを特徴とするものである。
第8の態様に係る半導体記憶装置によれば、メモリアレイには、乱数生成用データの初期値として、半導体記憶装置毎に異なる固有値が記憶されている。従って、初回の乱数生成においても、半導体記憶装置毎に異なる乱数を乱数生成部によって生成することが可能となる。
本発明の第9の態様に係る半導体記憶装置は、第1〜第8のいずれか一つの態様に係る半導体記憶装置において特に、乱数生成用データは、前記メモリアレイの記憶領域のうち、ホスト装置からのアクセスが禁止されている領域に記憶されることを特徴とするものである。
第9の態様に係る半導体記憶装置によれば、乱数生成用データは、メモリアレイの記憶領域のうち、ホスト装置からのアクセスが禁止されている領域に記憶される。従って、攻撃者がホスト装置を介してメモリアレイから乱数生成用データを読み出すことや、メモリアレイに記憶されている乱数生成用データを無効なデータによって上書きすることはできないため、セキュリティ性を向上することが可能となる。
本発明の第10の態様に係る半導体記憶装置は、第1〜第9のいずれか一つの態様に係る半導体記憶装置において特に、前記半導体記憶装置の電源が投入されると、前記データ更新部による乱数生成用データの更新処理と前記制御部による乱数生成用データの書き込み処理とが自動的に実行されることを特徴とするものである。
第10の態様に係る半導体記憶装置によれば、半導体記憶装置の電源が投入されると、データ更新部による乱数生成用データの更新処理と制御部による乱数生成用データの書き込み処理とが自動的に実行される。従って、電源投入後の最初の乱数生成においては、自動更新によって書き込まれた新たな乱数生成用データに基づいて乱数を生成することが可能となる。
本発明の第11の態様に係る半導体記憶装置は、第1〜第10のいずれか一つの態様に係る半導体記憶装置において特に、前記半導体記憶装置の電源遮断が要求されると、前記データ更新部による乱数生成用データの更新処理と前記制御部による乱数生成用データの書き込み処理とが自動的に実行されることを特徴とするものである。
第11の態様に係る半導体記憶装置によれば、半導体記憶装置の電源遮断が要求されると、データ更新部による乱数生成用データの更新処理と制御部による乱数生成用データの書き込み処理とが自動的に実行される。従って、半導体記憶装置の電源が再投入された後の最初の乱数生成においては、電源遮断前の自動更新によって書き込まれた新たな乱数生成用データに基づいて乱数を生成することが可能となる。
本発明の第12の態様に係るデータ処理システムは、ホスト装置と、前記ホスト装置との間で鍵を交換することにより、前記ホスト装置から受信したコマンドを当該鍵を用いて復号し、前記ホスト装置に送信するデータを当該鍵を用いて暗号化する半導体記憶装置と、を備え、前記半導体記憶装置は、前記ホスト装置との間で送受信するデータと、鍵の生成に用いる鍵生成用データとが記憶されたメモリアレイと、鍵を生成する鍵生成部と、鍵生成用データを更新するデータ更新部と、制御部と、を有し、前記半導体記憶装置が前記ホスト装置から鍵要求を受けた場合、前記鍵生成部は、その時点で前記メモリアレイに記憶されている第1の鍵生成用データに基づいて、今回の鍵要求に対応して前記ホスト装置に送信する鍵を生成し、前記制御部は、前記鍵生成部によって生成された鍵を暗号化して前記ホスト装置に送信し、前記データ更新部は、前記第1の鍵生成用データを更新することにより、今回より後の鍵要求に対応して前記ホスト装置に送信する鍵を生成するための第2の鍵生成用データを生成し、前記制御部は、前記第2の鍵生成用データを前記メモリアレイに書き込むことを特徴とするものである。
第12の態様に係るデータ処理システムによれば、半導体記憶装置がホスト装置から鍵要求を受けた場合、データ更新部は、第1の鍵生成用データを更新することにより、今回より後の鍵要求に対応してホスト装置に送信する鍵を生成するための第2の鍵生成用データを生成し、制御部は、データ更新部によって生成された第2の鍵生成用データをメモリアレイに書き込む。従って、半導体記憶装置がホスト装置から鍵要求を受ける度に、メモリアレイに記憶されている鍵生成用データが新たな鍵生成用データに更新され、鍵生成部は、毎回更新される鍵生成用データに基づいて鍵を生成する。その結果、ホスト装置と半導体記憶装置との間で共通鍵を交換するセキュリティ方式において、再現不可能性を有する乱数を用いた共通鍵を簡易に生成でき、しかもセキュリティ強度を向上することが可能となる。
本発明の第13の態様に係るデータ処理システムは、第12の態様に係るデータ処理システムにおいて特に、前記データ更新部は、前記第1の鍵生成用データとは異なる前記第2の鍵生成用データを生成することを特徴とするものである。
第13の態様に係るデータ処理システムによれば、データ更新部は、第1の鍵生成用データとは異なる第2の鍵生成用データを生成する。従って、第1の鍵生成用データに基づいて生成される第1の鍵と、第2の鍵生成用データに基づいて生成される第2の鍵とを、互いに異ならせることができるため、再現不可能性を有する乱数を用いた共通鍵を生成することが可能となる。
本発明の第14の態様に係るデータ処理システムは、第12又は第13の態様に係るデータ処理システムにおいて特に、前記鍵生成部は、前記メモリアレイから読み出した鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、今回の鍵要求に対応して前記ホスト装置に送信する鍵を生成する乱数生成器を有することを特徴とするものである。
第14の態様に係るデータ処理システムによれば、乱数生成器は、メモリアレイから読み出した鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、今回の鍵要求に対応してホスト装置に送信する鍵を生成する。このように、毎回更新される鍵生成用データをシードとして用いた乱数生成アルゴリズムによって生成した乱数を共通鍵として使用することにより、共通鍵の真性度を担保することが可能となる。しかも、メモリアレイから読み出した鍵生成用データをそのまま共通鍵として使用するのではなく、当該鍵生成用データを用いた乱数生成アルゴリズムによって生成した乱数を共通鍵として使用するため、メモリアレイに記憶されている鍵生成用データの一部が破損又は欠損している場合等であっても、生成される共通鍵の真性度を担保することが可能となる。
本発明の第15の態様に係るデータ処理システムは、第14の態様に係るデータ処理システムにおいて特に、前記鍵生成部による鍵の生成処理及び前記制御部による鍵の送信処理と、前記データ更新部による鍵生成用データの更新処理及び前記制御部による鍵生成用データの書き込み処理とは、並行して実行されることを特徴とするものである。
第15の態様に係るデータ処理システムによれば、鍵生成部による鍵の生成処理及び制御部による鍵の送信処理と、データ更新部による鍵生成用データの更新処理及び制御部による鍵生成用データの書き込み処理とは、並行して実行される。従って、鍵の送信処理が完了した後に鍵生成用データの更新処理を開始する場合や、鍵生成用データの書き込み処理が完了した後に鍵の生成処理を開始する場合と比較すると、処理全体の所要時間を短縮することが可能となる。
本発明の第16の態様に係るデータ処理システムは、第12又は第13の態様に係るデータ処理システムにおいて特に、前記鍵生成部は、前記メモリアレイから読み出した鍵生成用データを、今回の鍵要求に対応して前記ホスト装置に送信する鍵として生成することを特徴とするものである。
第16の態様に係るデータ処理システムによれば、鍵生成部は、メモリアレイから読み出した鍵生成用データを、今回の鍵要求に対応してホスト装置に送信する鍵として生成する。このように、毎回更新される鍵生成用データを共通鍵として使用することにより、共通鍵の真性度を担保することが可能となる。しかも、メモリアレイから読み出した鍵生成用データをそのまま共通鍵として使用することができ、当該鍵生成用データをシードとして用いた乱数生成処理が不要であるため、ホスト装置から鍵要求を受けてからホスト装置に共通鍵を送信するまでの所要時間を短縮することが可能となる。
本発明の第17の態様に係るデータ処理システムは、第16の態様に係るデータ処理システムにおいて特に、前記データ更新部は、前記メモリアレイから読み出した前記第1の鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、前記第2の鍵生成用データを生成する乱数生成器を有することを特徴とするものである。
第17の態様に係るデータ処理システムによれば、乱数生成器は、メモリアレイから読み出した第1の鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、第2の鍵生成用データを生成する。このように、第1の鍵生成用データをシードとして用いた乱数生成アルゴリズムによって第2の鍵生成用データを生成することにより、共通鍵として使用される鍵生成用データの真性度を担保することが可能となる。
本発明の第18の態様に係るデータ処理システムは、第12〜第17のいずれか一つの態様に係るデータ処理システムにおいて特に、前記制御部は、前記第2の鍵生成用データが前記メモリアレイに正しく書き込まれるまで、鍵生成用データの書き込み処理を繰り返し実行することを特徴とするものである。
第18の態様に係るデータ処理システムによれば、制御部は、第2の鍵生成用データがメモリアレイに正しく書き込まれるまで、鍵生成用データの書き込み処理を繰り返し実行する。従って、意図しない電源断によって鍵生成用データの書き込み処理が未完了のまま中断した場合等であっても、電源の再投入後に鍵生成用データの書き込み処理を再開することにより、第2の鍵生成用データをメモリアレイに正しく書き込むことができる。その結果、ホスト装置からの次回の鍵要求に対して鍵生成部は第2の鍵生成用データに基づいて鍵を生成することができるため、鍵の再現不可能性を担保することが可能となる。
本発明の第19の態様に係るデータ処理システムは、第12〜第18のいずれか一つの態様に係るデータ処理システムにおいて特に、前記メモリアレイには、鍵生成用データの初期値として、半導体記憶装置毎に異なる固有値が記憶されていることを特徴とするものである。
第19の態様に係るデータ処理システムによれば、メモリアレイには、鍵生成用データの初期値として、半導体記憶装置毎に異なる固有値が記憶されている。従って、ホスト装置からの初回の鍵要求に対しても、半導体記憶装置毎に異なる鍵を鍵生成部によって生成することが可能となる。
本発明の第20の態様に係るデータ処理システムは、第12〜第19のいずれか一つの態様に係るデータ処理システムにおいて特に、鍵生成用データは、前記メモリアレイの記憶領域のうち、前記ホスト装置からのアクセスが禁止されている領域に記憶されることを特徴とするものである。
第20の態様に係るデータ処理システムによれば、鍵生成用データは、メモリアレイの記憶領域のうち、ホスト装置からのアクセスが禁止されている領域に記憶される。従って、攻撃者がホスト装置を介してメモリアレイから鍵生成用データを読み出すことや、メモリアレイに記憶されている鍵生成用データを無効なデータによって上書きすることはできないため、セキュリティ性を向上することが可能となる。
本発明の第21の態様に係るデータ処理システムは、第12〜第20のいずれか一つの態様に係るデータ処理システムにおいて特に、前記半導体記憶装置の電源が投入されると、前記データ更新部による鍵生成用データの更新処理と前記制御部による鍵生成用データの書き込み処理とが自動的に実行されることを特徴とするものである。
第21の態様に係るデータ処理システムによれば、半導体記憶装置の電源が投入されると、データ更新部による鍵生成用データの更新処理と制御部による鍵生成用データの書き込み処理とが自動的に実行される。従って、電源投入後の最初の鍵要求に対しては、自動更新によって書き込まれた新たな鍵生成用データに基づいて生成された鍵を、ホスト装置に送信することが可能となる。
本発明の第22の態様に係るデータ処理システムは、第12〜第21のいずれか一つの態様に係るデータ処理システムにおいて特に、前記半導体記憶装置の電源遮断が要求されると、前記データ更新部による鍵生成用データの更新処理と前記制御部による鍵生成用データの書き込み処理とが自動的に実行されることを特徴とするものである。
第22の態様に係るデータ処理システムによれば、半導体記憶装置の電源遮断が要求されると、データ更新部による鍵生成用データの更新処理と制御部による鍵生成用データの書き込み処理とが自動的に実行される。従って、半導体記憶装置の電源が再投入された後の最初の鍵要求に対しては、電源遮断前の自動更新によって書き込まれた新たな鍵生成用データに基づいて生成された鍵を、ホスト装置に送信することが可能となる。
本発明の第23の態様に係る半導体記憶装置は、鍵の生成に用いる鍵生成用データが記憶されたメモリアレイと、鍵を生成する鍵生成部と、鍵生成用データを更新するデータ更新部と、制御部と、を備え、前記鍵生成部は、前記メモリアレイに記憶されている第1の鍵生成用データに基づいて第1の鍵を生成し、前記データ更新部は、前記第1の鍵生成用データを更新することにより、前記第1の鍵より後に使用される第2の鍵を生成するための第2の鍵生成用データを生成し、前記制御部は、前記第2の鍵生成用データを前記メモリアレイに書き込むことを特徴とするものである。
第23の態様に係る半導体記憶装置によれば、データ更新部は、第1の鍵生成用データを更新することにより、第1の鍵より後に使用される第2の鍵を生成するための第2の鍵生成用データを生成し、制御部は、データ更新部によって生成された第2の鍵生成用データをメモリアレイに書き込む。従って、メモリアレイに記憶されている鍵生成用データが新たな鍵生成用データに更新され、次回の鍵生成において鍵生成部は、更新された鍵生成用データに基づいて鍵を生成する。その結果、再現不可能性を有する乱数を用いた鍵を簡易に生成でき、しかもセキュリティ強度を向上することが可能となる。
本発明の第24の態様に係る半導体記憶装置は、第23の態様に係る半導体記憶装置において特に、前記データ更新部は、前記第1の鍵生成用データとは異なる前記第2の鍵生成用データを生成することを特徴とするものである。
第24の態様に係る半導体記憶装置によれば、データ更新部は、第1の鍵生成用データとは異なる第2の鍵生成用データを生成する。従って、第1の鍵生成用データに基づいて生成される第1の鍵と、第2の鍵生成用データに基づいて生成される第2の鍵とを、互いに異ならせることができるため、再現不可能性を有する乱数を用いた鍵を生成することが可能となる。
本発明の第25の態様に係る半導体記憶装置は、第23又は第24の態様に係る半導体記憶装置において特に、前記鍵生成部は、前記メモリアレイから読み出した鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、鍵を生成する乱数生成器をさらに備えることを特徴とするものである。
第25の態様に係る半導体記憶装置によれば、乱数生成器は、メモリアレイから読み出した鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、鍵を生成する。このように、更新された鍵生成用データをシードとして用いた乱数生成アルゴリズムによって生成した乱数を鍵として使用することにより、鍵の真性度を担保することが可能となる。しかも、メモリアレイから読み出した鍵生成用データをそのまま鍵として使用するのではなく、当該鍵生成用データを用いた乱数生成アルゴリズムによって生成した乱数を鍵として使用するため、メモリアレイに記憶されている鍵生成用データの一部が破損又は欠損している場合等であっても、生成される鍵の真性度を担保することが可能となる。
本発明の第26の態様に係る半導体記憶装置は、第25の態様に係る半導体記憶装置において特に、前記鍵生成部による鍵の生成処理と、前記データ更新部による鍵生成用データの更新処理及び前記制御部による鍵生成用データの書き込み処理とは、並行して実行されることを特徴とするものである。
第26の態様に係る半導体記憶装置によれば、鍵生成部による鍵の生成処理と、データ更新部による鍵生成用データの更新処理及び制御部による鍵生成用データの書き込み処理とは、並行して実行される。従って、鍵の送信処理が完了した後に鍵生成用データの更新処理を開始する場合や、鍵生成用データの書き込み処理が完了した後に鍵の生成処理を開始する場合と比較すると、処理全体の所要時間を短縮することが可能となる。
本発明の第27の態様に係る半導体記憶装置は、第23又は第24の態様に係る半導体記憶装置において特に、前記鍵生成部は、前記メモリアレイから読み出した鍵生成用データを、鍵として生成することを特徴とするものである。
第27の態様に係る半導体記憶装置によれば、鍵生成部は、メモリアレイから読み出した鍵生成用データを、鍵として生成する。このように、更新された鍵生成用データを鍵として使用することにより、鍵の真性度を担保することが可能となる。しかも、メモリアレイから読み出した鍵生成用データをそのまま鍵として使用することができ、当該鍵生成用データをシードとして用いた乱数生成処理が不要であるため、鍵の生成に要する所要時間を短縮することが可能となる。
本発明の第28の態様に係る半導体記憶装置は、第27の態様に係る半導体記憶装置において特に、前記データ更新部は、前記メモリアレイから読み出した前記第1の鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、前記第2の鍵生成用データを生成する乱数生成器を有することを特徴とするものである。
第28の態様に係る半導体記憶装置によれば、乱数生成器は、メモリアレイから読み出した第1の鍵生成用データをシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、第2の鍵生成用データを生成する。このように、第1の鍵生成用データをシードとして用いた乱数生成アルゴリズムによって第2の鍵生成用データを生成することにより、鍵として使用される鍵生成用データの真性度を担保することが可能となる。
本発明によれば、再現不可能性を有する乱数を簡易に生成することが可能な半導体記憶装置を得ることができる。また、ホスト装置と半導体記憶装置との間で鍵を交換するセキュリティ方式において、再現不可能性を有する乱数を用いた鍵を簡易に生成することが可能で、かつセキュリティ強度が向上されたデータ処理システム及び半導体記憶装置を得ることができる。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
図1は、本発明の実施の形態に係るデータ処理システム100の構成を概略的に示す図である。データ処理システム100は、ホスト装置1と半導体記憶装置2とを備えて構成されている。半導体記憶装置2は、例えば、ホスト装置1に着脱自在に接続可能なメモリカードである。データ処理システム100は、ホスト装置1と半導体記憶装置2との間でセッション鍵としての共通鍵を交換することにより、両者間で送受信されるコマンドやデータの暗号化及び復号を行うセキュリティ方式(共通鍵暗号方式)を採用する。
<実施の形態1>
図2は、本発明の実施の形態1に係る半導体記憶装置2Aの構成を示す図である。図2の接続関係で示すように、半導体記憶装置2Aは、ホストインタフェース11、暗号化・復号部12、制御部13、乱数生成部14A、データ更新部15A、メモリインタフェース16、及びメモリアレイ17を備えて構成されている。本実施の形態1では、乱数生成部14Aが鍵生成部として機能する。メモリアレイ17は、例えばNAND型フラッシュメモリを用いて構成されている。但し、この例に限定されるものではなく、メモリアレイ17はNOR型フラッシュメモリ等を用いて構成されていても良い。
メモリアレイ17は、全記憶領域の一部に、ホスト装置1からのアクセスが禁止されている禁止領域20を含んでいる。つまり、ホスト装置1は、メモリアレイ17に対するデータの読み出し及び書き込みを行う際に、データの読み出し先及び書き込み先として禁止領域20のアドレスを指定することができない。禁止領域20には、乱数生成用データX(本実施の形態1ではシード)が記憶されている。メモリアレイ17の全記憶領域のうち、禁止領域20以外の領域には、ホスト装置1と半導体記憶装置2Aとの間で送受信される任意のデータ(画像、音声、テキスト、コード、管理情報等)が記憶されている。
図3は、乱数生成部14Aの構成を示す図である。図3に示すように、乱数生成部14Aは乱数生成器21を有している。乱数生成器21は、禁止領域20から読み出された乱数生成用データをシードとして用いて、擬似乱数生成アルゴリズム、ハッシュ関数、共通鍵方式の暗号化アルゴリズム、又は公開鍵方式の暗号化アルゴリズム等の任意の乱数生成アルゴリズム(又はその組合せ)によって、ディジタル乱数であるセッション鍵(共通鍵)を生成する。
図4は、データ更新部15Aの構成を示す図である。図4に示すように、データ更新部15Aはカウンタ22を有している。カウンタ22は、禁止領域20から読み出された乱数生成用データをインクリメント又はデクリメントすることにより、更新後の乱数生成用データを生成する。図4に示した構成によると、カウンタ22を用いた簡易な構成によって、乱数生成用データの更新処理を実現することが可能となる。なお、乱数生成部14Aと同様の乱数生成器を用いてデータ更新部15Aを構成しても良い。またこの場合には、乱数生成部14Aとデータ更新部15Aとで同一の乱数生成器を共用しても良い。
以下、図2〜4を参照して、本実施の形態1に係る半導体記憶装置2Aの動作について説明する。
システムの電源が投入されると、まず制御部13は、予め実装されている鍵K0を暗号化・復号部12に設定(初期化)する。また、ホスト装置1においても、半導体記憶装置2Aと共通の鍵K0が設定される。禁止領域20には、システムの電源が前回遮断された際に禁止領域20に記憶されていた最新の乱数生成用データX1が記憶されている。なお、半導体記憶装置2Aの工場出荷時点では、乱数生成用データXの初期値として、半導体記憶装置2A毎に異なる固有値が禁止領域20に記憶されている。
例えばメモリアレイ17に記憶されているデータをホスト装置1が読み出す前に、ホスト装置1は、共通鍵を更新するために半導体記憶装置2Aに対して鍵要求を送信する。具体的にホスト装置1は、鍵の更新を要求するための乱数生成コマンドC0Aを生成した後、当該乱数生成コマンドC0Aを鍵K0を用いて暗号化することにより、暗号化乱数生成コマンドC0Aを生成する。そして、当該暗号化乱数生成コマンドC0Aを、半導体記憶装置2Aに送信する。
暗号化乱数生成コマンドC0Aは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化乱数生成コマンドC0Aを鍵K0を用いて復号し、復号後の乱数生成コマンドC0Aを制御部13に入力する。
次に制御部13は、乱数生成コマンドC0Aに基づいて、禁止領域20から乱数生成用データX1を読み出すための読み出し要求R1を生成する。
読み出し要求R1はメモリインタフェース16を介してメモリアレイ17に入力され、その時点で禁止領域20に記憶されている乱数生成用データX1がメモリアレイ17から読み出される。
乱数生成用データX1は、メモリインタフェース16を介して乱数生成部14A及びデータ更新部15Aに入力される。
次に乱数生成部14Aは、乱数生成用データX1に基づいて、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K1を生成する。具体的に、乱数生成器21は、乱数生成用データX1をシードとして用いて、上記擬似乱数生成アルゴリズム等の乱数生成アルゴリズムによって乱数を生成することにより、セッション鍵K1を生成する。乱数生成部14Aは、乱数生成用データX1に基づいて生成したセッション鍵K1を、制御部13に入力する。次に制御部13は、セッション鍵K1を暗号化・復号部12に入力する。次に暗号化・復号部12は、セッション鍵K1を鍵K0を用いて暗号化する。次に制御部13は、暗号化・復号部12によって生成された暗号化セッション鍵K1を、ホストインタフェース11を介してホスト装置1に送信する。
また、データ更新部15Aは、乱数生成用データX1を更新することにより、次回(又はそれ以降。以下同様)の鍵要求に対応してホスト装置1に送信するセッション鍵K2を生成するための乱数生成用データX2を生成する。具体的に、カウンタ22は、乱数生成用データX1をインクリメント又はデクリメントすることにより、乱数生成用データX1とは異なる乱数生成用データX2を生成する。データ更新部15Aは、更新後の乱数生成用データX2を、制御部13に入力する。次に制御部13は、禁止領域20に乱数生成用データX2を書き込むための書き込み要求W2を生成する。書き込み要求W2はメモリインタフェース16を介してメモリアレイ17に入力され、禁止領域20に記憶されている乱数生成用データX1が、更新後の乱数生成用データX2によって上書きされる。ここで制御部13は、禁止領域20に記憶されている乱数生成用データX1が乱数生成用データX2によって正しく上書きされるまで、乱数生成用データX2の上書き処理を繰り返し実行する。具体的に制御部13は、上書き処理の完了後に乱数生成用データX2を禁止領域20から読み出し、当該乱数生成用データX2の内容が、データ更新部15Aから入力された乱数生成用データX2の内容と同一であるか否かを判定(ベリファイ)する。そして、両データの内容が同一となるまで乱数生成用データX2の上書き処理を繰り返し実行する。なお、データ更新部15Aによって更新される乱数生成用データの値としては、過去に使用された値を回避して常に未使用の値を採用するのが望ましいが、カウンタ値に上限がある場合等には過去に使用された値を採用しても良い。また、メモリアレイ17の同一領域に対するアクセス集中に起因する不良発生を回避すべく、更新後の乱数生成用データを書き込むための領域を禁止領域20内に複数箇所設けても良い。
なお、乱数生成部14Aによるセッション鍵K1の生成処理及び制御部13によるホスト装置1へのセッション鍵K1の送信処理と、データ更新部15Aによる乱数生成用データX2の更新処理及び制御部13による乱数生成用データX2の上書き処理とは、並行して実行される。つまり、セッション鍵K1の生成処理及び乱数生成用データX2の更新処理は、同時に実行が開始される。従って、例えば乱数生成用データX2の上書き処理に伴う書き込みレイテンシ期間が長い場合には、セッション鍵K1の生成処理及びセッション鍵K1の送信処理は当該書き込みレイテンシ期間内に実行されることとなる。
次にホスト装置1は、暗号化セッション鍵K1を鍵K0を用いて復号することにより、更新後のセッション鍵K1を取得する。
次にホスト装置1は、セッション鍵K1の設定(初期化)を要求するための初期化コマンドC0Bを生成した後、当該初期化コマンドC0Bを鍵K0を用いて暗号化することにより、暗号化初期化コマンドC0Bを生成する。そして、当該暗号化初期化コマンドC0Bを、半導体記憶装置2Aに送信する。
暗号化初期化コマンドC0Bは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化初期化コマンドC0Bを鍵K0を用いて復号し、復号後の初期化コマンドC0Bを制御部13に入力する。
次に制御部13は、初期化コマンドC0Bに基づく設定信号D1によって、暗号化・復号部12にセッション鍵K1を設定する。また、ホスト装置1においても、半導体記憶装置2Aと共通のセッション鍵K1が設定される。以上の処理により、ホスト装置1及び半導体記憶装置2Aの共通鍵が鍵K0からセッション鍵K1に更新される。その後、セッション鍵K1を用いて、ホスト装置1と半導体記憶装置2Aとの間でコマンド及びデータの暗号化通信が実行される。
その後、セッション鍵を再更新して暗号化通信を行う場合には、ホスト装置1は、共通鍵を更新するために半導体記憶装置2Aに対して鍵要求を送信する。具体的にホスト装置1は、暗号化乱数生成コマンドC1Aを半導体記憶装置2Aに送信する。
暗号化乱数生成コマンドC1Aは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化乱数生成コマンドC1Aをセッション鍵K1を用いて復号し、復号後の乱数生成コマンドC1Aを制御部13に入力する。
次に制御部13は、乱数生成コマンドC1Aに基づいて、禁止領域20から乱数生成用データX2を読み出すための読み出し要求R2を生成する。
読み出し要求R2はメモリインタフェース16を介してメモリアレイ17に入力され、その時点で禁止領域20に記憶されている乱数生成用データX2がメモリアレイ17から読み出される。
乱数生成用データX2は、メモリインタフェース16を介して乱数生成部14A及びデータ更新部15Aに入力される。
次に乱数生成部14Aは、乱数生成用データX2に基づいて、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K2を生成する。乱数生成部14Aは、乱数生成用データX2に基づいて生成したセッション鍵K2を、制御部13に入力する。次に制御部13は、セッション鍵K2を暗号化・復号部12に入力する。次に暗号化・復号部12は、セッション鍵K2をセッション鍵K1を用いて暗号化する。次に制御部13は、暗号化・復号部12によって生成された暗号化セッション鍵K2を、ホストインタフェース11を介してホスト装置1に送信する。
また、データ更新部15Aは、乱数生成用データX2を更新することにより、次回の鍵要求に対応してホスト装置1に送信するセッション鍵K3を生成するための乱数生成用データX3を生成する。データ更新部15Aは、更新後の乱数生成用データX3を、制御部13に入力する。次に制御部13は、禁止領域20に乱数生成用データX3を書き込むための書き込み要求W3を生成する。書き込み要求W3はメモリインタフェース16を介してメモリアレイ17に入力され、禁止領域20に記憶されている乱数生成用データX2が、更新後の乱数生成用データX3によって上書きされる。ここで制御部13は、禁止領域20に記憶されている乱数生成用データX2が乱数生成用データX3によって正しく上書きされるまで、乱数生成用データX3の上書き処理を繰り返し実行する。
次にホスト装置1は、暗号化セッション鍵K2をセッション鍵K1を用いて復号することにより、更新後のセッション鍵K2を取得する。
次にホスト装置1は、セッション鍵K2の設定(初期化)を要求するための初期化コマンドC1Bを生成した後、当該初期化コマンドC1Bをセッション鍵K1を用いて暗号化することにより、暗号化初期化コマンドC1Bを生成する。そして、当該暗号化初期化コマンドC1Bを、半導体記憶装置2Aに送信する。
暗号化初期化コマンドC1Bは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化初期化コマンドC1Bをセッション鍵K1を用いて復号し、復号後の初期化コマンドC1Bを制御部13に入力する。
次に制御部13は、初期化コマンドC1Bに基づく設定信号D2によって、暗号化・復号部12にセッション鍵K2を設定する。また、ホスト装置1においても、半導体記憶装置2Aと共通のセッション鍵K2が設定される。以上の処理により、ホスト装置1及び半導体記憶装置2Aの共通鍵がセッション鍵K1からセッション鍵K2に更新される。その後、セッション鍵K2を用いて、ホスト装置1と半導体記憶装置2Aとの間でコマンド及びデータの暗号化通信が実行される。
以降は同様に、ホスト装置1から半導体記憶装置2Aに鍵要求が送信される度に、ホスト装置1及び半導体記憶装置2Aにおいて共通鍵が更新される。
<実施の形態2>
図5は、本発明の実施の形態2に係る半導体記憶装置2Bの構成を示す図である。図5の接続関係で示すように、半導体記憶装置2Bは、ホストインタフェース11、暗号化・復号部12、制御部13、データ更新部15B、メモリインタフェース16、及びメモリアレイ17を備えて構成されている。本実施の形態2では、データ更新部15Bが鍵生成部として機能する。メモリアレイ17の禁止領域20には、乱数生成用データY(本実施の形態2では乱数)が記憶されている。
図6は、データ更新部15Bの構成を示す図である。図6に示すように、データ更新部15Bは乱数生成器23を有している。乱数生成器23は、禁止領域20から読み出された乱数生成用データをシードとして用いて、擬似乱数生成アルゴリズム、ハッシュ関数、共通鍵方式の暗号化アルゴリズム、又は公開鍵方式の暗号化アルゴリズム等の任意の乱数生成アルゴリズム(又はその組合せ)によって、ディジタル乱数である新たな乱数生成用データを生成する。また、データ更新部15Bは、禁止領域20から読み出された乱数生成用データを、そのままセッション鍵として出力する。
以下、図5,6を参照して、本実施の形態2に係る半導体記憶装置2Bの動作について説明する。
システムの電源が投入されると、まず制御部13は、予め実装されている鍵K0を暗号化・復号部12に設定(初期化)する。また、ホスト装置1においても、半導体記憶装置2Bと共通の鍵K0が設定される。禁止領域20には、システムの電源が前回遮断された際に禁止領域20に記憶されていた最新の乱数生成用データY1が記憶されている。なお、半導体記憶装置2Bの工場出荷時点では、乱数生成用データYの初期値として、半導体記憶装置2B毎に異なる固有値が禁止領域20に記憶されている。
例えばメモリアレイ17に記憶されているデータをホスト装置1が読み出す前に、ホスト装置1は、共通鍵を更新するために半導体記憶装置2Bに対して鍵要求を送信する。具体的にホスト装置1は、鍵の更新を要求するための乱数生成コマンドC0Aを生成した後、当該乱数生成コマンドC0Aを鍵K0を用いて暗号化することにより、暗号化乱数生成コマンドC0Aを生成する。そして、当該暗号化乱数生成コマンドC0Aを、半導体記憶装置2Bに送信する。
暗号化乱数生成コマンドC0Aは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化乱数生成コマンドC0Aを鍵K0を用いて復号し、復号後の乱数生成コマンドC0Aを制御部13に入力する。
次に制御部13は、乱数生成コマンドC0Aに基づいて、禁止領域20から乱数生成用データY1を読み出すための読み出し要求R1を生成する。
読み出し要求R1はメモリインタフェース16を介してメモリアレイ17に入力され、その時点で禁止領域20に記憶されている乱数生成用データY1がメモリアレイ17から読み出される。
乱数生成用データY1は、メモリインタフェース16を介してデータ更新部15Bに入力される。
次にデータ更新部15Bは、乱数生成用データY1に基づいて、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K1を生成する。本実施の形態2では乱数生成用データY1自身が乱数であるため、データ更新部15Bは、メモリアレイ17から読み出した乱数生成用データY1をそのまま、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K1として出力する。データ更新部15Bは、乱数生成用データY1をセッション鍵K1として、制御部13に入力する。次に制御部13は、セッション鍵K1を暗号化・復号部12に入力する。次に暗号化・復号部12は、セッション鍵K1を鍵K0を用いて暗号化する。次に制御部13は、暗号化・復号部12によって生成された暗号化セッション鍵K1を、ホストインタフェース11を介してホスト装置1に送信する。
また、データ更新部15Bは、乱数生成用データY1を更新することにより、次回の鍵要求に対応してホスト装置1に送信するセッション鍵K2を生成するための乱数生成用データY2を生成する。具体的に、乱数生成器23は、乱数生成用データY1をシードとして用いて、上記擬似乱数生成アルゴリズム等の乱数生成アルゴリズムによって新たな乱数生成用データY2を生成する。データ更新部15Bは、更新後の乱数生成用データY2を、制御部13に入力する。次に制御部13は、禁止領域20に乱数生成用データY2を書き込むための書き込み要求W2を生成する。書き込み要求W2はメモリインタフェース16を介してメモリアレイ17に入力され、禁止領域20に記憶されている乱数生成用データY1が、更新後の乱数生成用データY2によって上書きされる。ここで制御部13は、禁止領域20に記憶されている乱数生成用データY1が乱数生成用データY2によって正しく上書きされるまで、乱数生成用データY2の上書き処理を繰り返し実行する。
次にホスト装置1は、暗号化セッション鍵K1を鍵K0を用いて復号することにより、更新後のセッション鍵K1を取得する。
次にホスト装置1は、セッション鍵K1の設定(初期化)を要求するための初期化コマンドC0Bを生成した後、当該初期化コマンドC0Bを鍵K0を用いて暗号化することにより、暗号化初期化コマンドC0Bを生成する。そして、当該暗号化初期化コマンドC0Bを、半導体記憶装置2Bに送信する。
暗号化初期化コマンドC0Bは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化初期化コマンドC0Bを鍵K0を用いて復号し、復号後の初期化コマンドC0Bを制御部13に入力する。
次に制御部13は、初期化コマンドC0Bに基づく設定信号D1によって、暗号化・復号部12にセッション鍵K1を設定する。また、ホスト装置1においても、半導体記憶装置2Bと共通のセッション鍵K1が設定される。以上の処理により、ホスト装置1及び半導体記憶装置2Bの共通鍵が鍵K0からセッション鍵K1に更新される。その後、セッション鍵K1を用いて、ホスト装置1と半導体記憶装置2Bとの間でコマンド及びデータの暗号化通信が実行される。
その後、セッション鍵を再更新して暗号化通信を行う場合には、ホスト装置1は、共通鍵を更新するために半導体記憶装置2Bに対して鍵要求を送信する。具体的にホスト装置1は、暗号化乱数生成コマンドC1Aを半導体記憶装置2Bに送信する。
暗号化乱数生成コマンドC1Aは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化乱数生成コマンドC1Aをセッション鍵K1を用いて復号し、復号後の乱数生成コマンドC1Aを制御部13に入力する。
次に制御部13は、乱数生成コマンドC1Aに基づいて、禁止領域20から乱数生成用データY2を読み出すための読み出し要求R2を生成する。
読み出し要求R2はメモリインタフェース16を介してメモリアレイ17に入力され、その時点で禁止領域20に記憶されている乱数生成用データY2がメモリアレイ17から読み出される。
乱数生成用データY2は、メモリインタフェース16を介してデータ更新部15Bに入力される。
次にデータ更新部15Bは、乱数生成用データY2に基づいて、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K2を生成する。データ更新部15Bは、乱数生成用データY2に基づいて生成したセッション鍵K2を、制御部13に入力する。次に制御部13は、セッション鍵K2を暗号化・復号部12に入力する。次に暗号化・復号部12は、セッション鍵K2をセッション鍵K1を用いて暗号化する。次に制御部13は、暗号化・復号部12によって生成された暗号化セッション鍵K2を、ホストインタフェース11を介してホスト装置1に送信する。
また、データ更新部15Bは、乱数生成用データY2を更新することにより、次回の鍵要求に対応してホスト装置1に送信するセッション鍵K3を生成するための乱数生成用データY3を生成する。データ更新部15Bは、更新後の乱数生成用データY3を、制御部13に入力する。次に制御部13は、禁止領域20に乱数生成用データY3を書き込むための書き込み要求W3を生成する。書き込み要求W3はメモリインタフェース16を介してメモリアレイ17に入力され、禁止領域20に記憶されている乱数生成用データY2が、更新後の乱数生成用データY3によって上書きされる。ここで制御部13は、禁止領域20に記憶されている乱数生成用データY2が乱数生成用データY3によって正しく上書きされるまで、乱数生成用データY3の上書き処理を繰り返し実行する。
次にホスト装置1は、暗号化セッション鍵K2をセッション鍵K1を用いて復号することにより、更新後のセッション鍵K2を取得する。
次にホスト装置1は、セッション鍵K2の設定(初期化)を要求するための初期化コマンドC1Bを生成した後、当該初期化コマンドC1Bをセッション鍵K1を用いて暗号化することにより、暗号化初期化コマンドC1Bを生成する。そして、当該暗号化初期化コマンドC1Bを、半導体記憶装置2Bに送信する。
暗号化初期化コマンドC1Bは、ホストインタフェース11を介して暗号化・復号部12に入力される。次に暗号化・復号部12は、暗号化初期化コマンドC1Bをセッション鍵K1を用いて復号し、復号後の初期化コマンドC1Bを制御部13に入力する。
次に制御部13は、初期化コマンドC1Bに基づく設定信号D2によって、暗号化・復号部12にセッション鍵K2を設定する。また、ホスト装置1においても、半導体記憶装置2Bと共通のセッション鍵K2が設定される。以上の処理により、ホスト装置1及び半導体記憶装置2Bの共通鍵がセッション鍵K1からセッション鍵K2に更新される。その後、セッション鍵K2を用いて、ホスト装置1と半導体記憶装置2Bとの間でコマンド及びデータの暗号化通信が実行される。
以降は同様に、ホスト装置1から半導体記憶装置2Bに鍵要求が送信される度に、ホスト装置1及び半導体記憶装置2Bにおいて共通鍵が更新される。
<変形例>
上記実施の形態1,2では、半導体記憶装置2A,2Bは、ホスト装置1から鍵要求を受けた時に、データ更新部15A,15Bによる乱数生成用データの更新処理と制御部13による乱数生成用データの上書き処理とを実行した。
これに加えて、システムの電源が投入されると、電源投入の直後に乱数生成用データの更新処理及び上書き処理を自動的に(つまりホスト装置1からの乱数生成コマンドの受信を待つことなく)実行しても良い。
また、これに加えて、システムの電源遮断が要求されると、電源遮断の直前に乱数生成用データの更新処理及び上書き処理を自動的に実行しても良い。
<まとめ>
上記実施の形態1,2に係る半導体記憶装置2A,2Bによれば、データ更新部15A,15Bは、メモリアレイ17から読み出した第1の乱数生成用データX1,Y1を更新することにより、第1の乱数(セッション鍵K1)より後に使用される第2の乱数(セッション鍵K2)を生成するための第2の乱数生成用データX2,Y2を生成する。また、制御部13は、メモリアレイ17に記憶されている第1の乱数生成用データX1,Y1を、第2の乱数生成用データX2,Y2によって上書きする。従って、メモリアレイ17に記憶されている乱数生成用データX1,Y1が新たな乱数生成用データX2,Y2に更新されるため、更新される乱数生成用データに基づいて乱数を生成することができる。その結果、再現不可能性を有する乱数を簡易に生成することが可能となる。
同様に上記実施の形態1,2に係るデータ処理システム100によれば、半導体記憶装置2A,2Bがホスト装置1から鍵要求を受けた場合、データ更新部15A,15Bは、第1の乱数生成用データ(鍵生成用データ)X1,Y1を更新することにより、今回より後の鍵要求に対応してホスト装置1に送信するセッション鍵K2を生成するための第2の乱数生成用データX2,Y2を生成する。また、制御部13は、メモリアレイ17に記憶されている第1の乱数生成用データX1,Y1を、データ更新部15A,15Bによって生成された第2の乱数生成用データX2,Y2によって上書きする。従って、半導体記憶装置2A,2Bがホスト装置1から鍵要求を受ける度に、メモリアレイ17に記憶されている乱数生成用データが新たな乱数生成用データに更新され、乱数生成部(鍵生成部)14A,14Bは、毎回更新される乱数生成用データに基づいてセッション鍵を生成する。その結果、ホスト装置1と半導体記憶装置2A,2Bとの間で共通鍵を交換するセキュリティ方式において、再現不可能性を有する乱数を用いた共通鍵を簡易に生成でき、しかもセキュリティ強度を向上することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置2A,2B及びデータ処理システム100によれば、データ更新部15A,15Bは、第1の乱数生成用データX1,Y1とは異なる第2の乱数生成用データX2,Y2を生成する。従って、第1の乱数生成用データX1,Y1に基づいて生成される第1の乱数と、第2の乱数生成用データX2,Y2に基づいて生成される第2の乱数とを、互いに異ならせることができるため、再現不可能性を有する乱数を生成することが可能となる。
また、上記実施の形態1に係る半導体記憶装置2Aによれば、乱数生成器21は、メモリアレイ17から読み出した乱数生成用データX1,X2をシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成する。このように、更新される乱数生成用データX1,X2をシードとして用いた乱数生成アルゴリズムによって乱数を生成することにより、乱数の真性度を担保することが可能となる。しかも、メモリアレイ17から読み出した乱数生成用データX1,X2をそのまま乱数として使用するのではなく、当該乱数生成用データX1,X2を用いた乱数生成アルゴリズムによって乱数を生成するため、メモリアレイ17に記憶されている乱数生成用データX1,X2の一部が破損又は欠損している場合等であっても、生成される乱数の真性度を担保することが可能となる。
同様に上記実施の形態1に係るデータ処理システム100によれば、乱数生成器21は、メモリアレイ17から読み出した乱数生成用データX1,X2をシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K1,K2を生成する。このように、毎回更新される乱数生成用データX1,X2をシードとして用いた乱数生成アルゴリズムによって生成した乱数を共通鍵として使用することにより、共通鍵の真性度を担保することが可能となる。しかも、メモリアレイ17から読み出した乱数生成用データX1,X2をそのまま共通鍵として使用するのではなく、当該乱数生成用データX1,X2を用いた乱数生成アルゴリズムによって生成した乱数を共通鍵として使用するため、メモリアレイ17に記憶されている乱数生成用データX1,X2の一部が破損又は欠損している場合等であっても、生成される共通鍵の真性度を担保することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置2A,2Bによれば、乱数生成部14A,14Bによる乱数の生成処理と、データ更新部15A,15Bによる乱数生成用データの更新処理及び制御部13による乱数生成用データの上書き処理とは、並行して実行される。従って、乱数の生成処理が完了した後に乱数生成用データの更新処理を開始する場合や、乱数生成用データの上書き処理が完了した後に乱数の生成処理を開始する場合と比較すると、処理全体の所要時間を短縮することが可能となる。
同様に上記実施の形態1,2に係るデータ処理システム100によれば、乱数生成部14A,14Bによるセッション鍵の生成処理及び制御部13によるセッション鍵の送信処理と、データ更新部15A,15Bによる乱数生成用データの更新処理及び制御部13による乱数生成用データの上書き処理とは、並行して実行される。従って、セッション鍵の送信処理が完了した後に乱数生成用データの更新処理を開始する場合や、乱数生成用データの上書き処理が完了した後にセッション鍵の生成処理を開始する場合と比較すると、処理全体の所要時間を短縮することが可能となる。
また、上記実施の形態2に係る半導体記憶装置2Bによれば、メモリアレイ17には、乱数生成用データY1,Y2として乱数が記憶されている。従って、更新される乱数生成用データY1,Y2を乱数として使用することにより、乱数の真性度を担保することが可能となる。しかも、メモリアレイ17から読み出した乱数生成用データY1,Y2をそのまま乱数として使用することができ、当該乱数生成用データY1,Y2をシードとして用いた乱数生成処理が不要であるため、乱数を生成するための所要時間を短縮することが可能となる。
同様に上記実施の形態2に係るデータ処理システム100によれば、データ更新部15B(鍵生成部)は、メモリアレイ17から読み出した鍵生成用データY1,Y2を、今回の鍵要求に対応してホスト装置1に送信するセッション鍵K1,K2として生成する。このように、毎回更新される乱数生成用データY1,Y2を共通鍵として使用することにより、共通鍵の真性度を担保することが可能となる。しかも、メモリアレイ17から読み出した乱数生成用データY1,Y2をそのまま共通鍵として使用することができ、当該乱数生成用データY1,Y2をシードとして用いた乱数生成処理が不要であるため、ホスト装置1から鍵要求を受けてからホスト装置1に共通鍵を送信するまでの所要時間を短縮することが可能となる。
また、上記実施の形態2に係る半導体記憶装置2B及びデータ処理システム100によれば、乱数生成器23は、メモリアレイ17から読み出した第1の乱数生成用データY1,Y2をシードとして用いて、所定の乱数生成アルゴリズムによって乱数を生成することにより、第2の乱数生成用データY2,Y3を生成する。このように、第1の乱数生成用データY1,Y2をシードとして用いた乱数生成アルゴリズムによって第2の乱数生成用データY2,Y3を生成することにより、乱数及び共通鍵として使用される乱数生成用データの真性度を担保することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置2A,2Bによれば、制御部13は、メモリアレイ17に記憶されている第1の乱数生成用データX1,Y1が第2の乱数生成用データX2,Y2によって正しく上書きされるまで、乱数生成用データの上書き処理を繰り返し実行する。従って、意図しない電源断によって乱数生成用データの上書き処理が未完了のまま中断した場合等であっても、電源の再投入後に乱数生成用データの上書き処理を再開することにより、メモリアレイ17に記憶されている第1の乱数生成用データX1,Y1を第2の乱数生成用データX2,Y2によって正しく上書きすることができる。その結果、次に乱数を生成する場合には乱数生成部14A,14Bは第2の乱数生成用データX2,Y2に基づいて乱数を生成することができるため、乱数の再現不可能性を担保することが可能となる。
同様に上記実施の形態1,2に係るデータ処理システム100によれば、制御部13は、メモリアレイ17に記憶されている第1の乱数生成用データX1,Y1が第2の乱数生成用データX2,Y2によって正しく上書きされるまで、乱数生成用データの上書き処理を繰り返し実行する。従って、意図しない電源断によって乱数生成用データの上書き処理が未完了のまま中断した場合等であっても、電源の再投入後に乱数生成用データの上書き処理を再開することにより、メモリアレイ17に記憶されている第1の乱数生成用データX1,Y1を第2の乱数生成用データX2,Y2によって正しく上書きすることができる。その結果、ホスト装置1からの次回の鍵要求に対して乱数生成部14A,14Bは第2の乱数生成用データX2,Y2に基づいてセッション鍵K2を生成することができるため、鍵の再現不可能性を担保することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置2A,2Bによれば、メモリアレイ17には、乱数生成用データの初期値として、半導体記憶装置2A,2B毎に異なる固有値が記憶されている。従って、初回の乱数生成においても、半導体記憶装置2A,2B毎に異なる乱数を乱数生成部14A,14Bによって生成することが可能となる。
同様に上記実施の形態1,2に係るデータ処理システム100によれば、メモリアレイ17には、乱数生成用データの初期値として、半導体記憶装置2A,2B毎に異なる固有値が記憶されている。従って、ホスト装置1からの初回の鍵要求に対しても、半導体記憶装置2A,2B毎に異なるセッション鍵を乱数生成部14A,14Bによって生成することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置2A,2B及びデータ処理システム100によれば、乱数生成用データは、メモリアレイ17の記憶領域のうち、ホスト装置1からのアクセスが禁止されている禁止領域20に記憶される。従って、攻撃者がホスト装置1を介してメモリアレイ17から乱数生成用データを読み出すことや、メモリアレイ17に記憶されている乱数生成用データを無効なデータによって上書きすることはできないため、セキュリティ性を向上することが可能となる。
また、上記変形例に係る半導体記憶装置2A,2Bによれば、半導体記憶装置2A,2Bの電源が投入されると、データ更新部15A,15Bによる乱数生成用データの更新処理と制御部13による乱数生成用データの上書き処理とが自動的に実行される。従って、電源投入後の最初の乱数生成においては、自動更新によって上書きされた新たな乱数生成用データに基づいて乱数を生成することが可能となる。
同様に上記変形例に係るデータ処理システム100によれば、半導体記憶装置2A,2Bの電源が投入されると、データ更新部15A,15Bによる乱数生成用データの更新処理と制御部13による乱数生成用データの上書き処理とが自動的に実行される。従って、電源投入後の最初の鍵要求に対しては、自動更新によって上書きされた新たな乱数生成用データに基づいて生成されたセッション鍵を、ホスト装置1に送信することが可能となる。
また、上記変形例に係る半導体記憶装置2A,2Bによれば、半導体記憶装置2A,2Bの電源遮断が要求されると、データ更新部15A,15Bによる乱数生成用データの更新処理と制御部13による乱数生成用データの上書き処理とが自動的に実行される。従って、半導体記憶装置2A,2Bの電源が再投入された後の最初の乱数生成においては、電源遮断前の自動更新によって上書きされた新たな乱数生成用データに基づいて乱数を生成することが可能となる。
同様に上記変形例に係るデータ処理システム100によれば、半導体記憶装置2A,2Bの電源遮断が要求されると、データ更新部15A,15Bによる乱数生成用データの更新処理と制御部13による乱数生成用データの上書き処理とが自動的に実行される。従って、半導体記憶装置2A,2Bの電源が再投入された後の最初の鍵要求に対しては、電源遮断前の自動更新によって上書きされた新たな乱数生成用データに基づいて生成されたセッション鍵を、ホスト装置1に送信することが可能となる。