(57)【要約】【課題】従来よりもセキュリティ性が向上されたメモリシステムを得る。【解決手段】処理部５は、ＣＰＵ４から入力されたコマンドビット列Ｃ１を、部分ビット列ＰＣ１０〜ＰＣ１７に分割する。次に、処理部５は、部分ビット列ＰＣ１０〜ＰＣ１７の配列順序をランダムに変更して、新たなコマンドビット列Ｃ２を得る。コマンドビット列Ｃ２は、インタフェース部７を介して、ホスト機器２から半導体メモリ３に向けて一括送信される。次に、処理部９は、ホスト機器２から送信されたコマンドビット列Ｃ２を、インタフェース部１１を介して受信する。そして、処理部９は、元のコマンドビット列Ｃ１が復元されるように、コマンドビット列Ｃ２を構成する部分ビット列ＰＣ１０〜ＰＣ１７の配列順序を変更する。次に、処理部９は、復元されたコマンドビット列Ｃ１によってメモリセルアレイ部８にアクセスする。【選択図】図１
2008140104.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶部を有するメモリ装置と、
前記メモリ装置にアクセス可能なホスト機器と
を備え、
前記ホスト機器は、
前記ホスト機器から前記メモリ装置に送信すべき第１のビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更して前記メモリ装置に向けて出力する、第１の処理部
を有し、
前記メモリ装置は、
前記ホスト機器から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記第１のビット列を復元し、当該第１のビット列に基づいて前記データ記憶部にアクセスする、第２の処理部
を有する、メモリシステム。
【請求項２】
前記メモリ装置は、
前記メモリ装置から前記ホスト機器に送信すべき第２のビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更して前記ホスト機器に向けて出力する、第３の処理部
をさらに有し、
前記ホスト機器は、
前記メモリ装置から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記第２のビット列を復元する、第４の処理部
をさらに有する、請求項１に記載のメモリシステム。
【請求項３】
データ記憶部を有するメモリ装置と、
前記メモリ装置にアクセス可能なホスト機器と
を備え、
前記メモリ装置は、
前記メモリ装置から前記ホスト機器に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更して前記ホスト機器に向けて出力する、第１の処理部
を有し、
前記ホスト機器は、
前記メモリ装置から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記ビット列を復元する、第２の処理部
を有する、メモリシステム。
【請求項４】
前記第１及び第２の処理部はそれぞれ、
前記複数の部分ビット列を各部分ビット列毎に異なる番地に格納可能なバッファメモリと、
前記バッファメモリの番地を指定する番地指定回路と
を有し、
前記バッファメモリへの前記複数の部分ビット列の格納処理、及び、前記バッファメモリからの前記複数の部分ビット列の出力処理のうちの一方の処理を、シーケンシャルな番地指定によって実行し、他方の処理を、所定のパラメータを用いたランダムな番地指定によって実行することにより、前記複数の部分ビット列の配列順序の変更が実現される、請求項１〜３のいずれか一つに記載のメモリシステム。
【請求項５】
前記所定のパラメータは、固定値、データテーブルに予め記述されている複数の値の中から選択された値、及び、疑似乱数に基づいて生成された値のうちのいずれか一つである、請求項４に記載のメモリシステム。
【請求項６】
前記番地指定回路は、前記所定のパラメータを用いて論理演算を行う論理回路が複数段に縦続接続された回路構成を有する、請求項４又は５に記載のメモリシステム。
【請求項７】
ホスト機器から、データ記憶部を有するメモリ装置にアクセスする、メモリアクセス方法であって、
（Ａ）前記ホスト機器において、前記ホスト機器から前記メモリ装置に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更するステップと、
（Ｂ）前記ホスト機器において、前記ステップ（Ａ）による処理後の前記複数の部分ビット列を、前記メモリ装置に向けて出力するステップと、
（Ｃ）前記メモリ装置において、前記ホスト機器から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記ビット列を復元するステップと、
（Ｄ）前記メモリ装置において、前記ステップ（Ｃ）による処理後の前記ビット列に基づいて、前記データ記憶部にアクセスするステップと
を備える、メモリアクセス方法。
【請求項８】
ホスト機器から、データ記憶部を有するメモリ装置にアクセスする、メモリアクセス方法であって、
（Ａ）前記メモリ装置において、前記メモリ装置から前記ホスト機器に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更するステップと、
（Ｂ）前記メモリ装置において、前記ステップ（Ａ）による処理後の前記複数の部分ビット列を、前記ホスト機器に向けて出力するステップと、
（Ｃ）前記ホスト機器において、前記メモリ装置から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記ビット列を復元するステップと
を備える、メモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステム及びメモリアクセス方法に関する。
【背景技術】
【０００２】
半導体メモリを着脱自在に接続することによって、当該半導体メモリに記憶されているソフトウェアプログラムやデータ等を利用する情報処理装置が知られている。
【０００３】
このような半導体メモリの中には、内部に記憶されているデータ等の機密を保護するために、特定のセキュリティ技術が搭載されているものがある。例えば下記特許文献１には、所定のキーデータを利用してデータを暗号化する技術が開示されている。
【０００４】
【特許文献１】特開平９−１０６６９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に開示された技術のようにキーデータを利用してデータの暗号化を行う場合であっても、半導体メモリと情報処理装置との間で行われる通信の内容を観測することが可能であるため、大量のサンプルを解析することで暗号が解読される可能性があり、セキュリティ性が十分とはいえない。
【０００６】
本発明はかかる事情に鑑みて成されたものであり、従来よりもセキュリティ性が向上されたメモリシステム及びメモリアクセス方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明に係るメモリシステムは、データ記憶部を有するメモリ装置と、前記メモリ装置にアクセス可能なホスト機器とを備え、前記ホスト機器は、前記ホスト機器から前記メモリ装置に送信すべき第１のビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更して前記メモリ装置に向けて出力する、第１の処理部を有し、前記メモリ装置は、前記ホスト機器から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記第１のビット列を復元し、当該第１のビット列に基づいて前記データ記憶部にアクセスする、第２の処理部を有することを特徴とする。
【０００８】
第２の発明に係るメモリシステムは、第１の発明に係るメモリシステムにおいて特に、前記メモリ装置は、前記メモリ装置から前記ホスト機器に送信すべき第２のビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更して前記ホスト機器に向けて出力する、第３の処理部をさらに有し、前記ホスト機器は、前記メモリ装置から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記第２のビット列を復元する、第４の処理部をさらに有することを特徴とする。
【０００９】
第３の発明に係るメモリシステムは、データ記憶部を有するメモリ装置と、前記メモリ装置にアクセス可能なホスト機器とを備え、前記メモリ装置は、前記メモリ装置から前記ホスト機器に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更して前記ホスト機器に向けて出力する、第１の処理部を有し、前記ホスト機器は、前記メモリ装置から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記ビット列を復元する、第２の処理部を有することを特徴とする。
【００１０】
第４の発明に係るメモリシステムは、第１〜第３のいずれか一つの発明に係るメモリシステムにおいて特に、前記第１及び第２の処理部はそれぞれ、前記複数の部分ビット列を各部分ビット列毎に異なる番地に格納可能なバッファメモリと、前記バッファメモリの番地を指定する番地指定回路とを有し、前記バッファメモリへの前記複数の部分ビット列の格納処理、及び、前記バッファメモリからの前記複数の部分ビット列の出力処理のうちの一方の処理を、シーケンシャルな番地指定によって実行し、他方の処理を、所定のパラメータを用いたランダムな番地指定によって実行することにより、前記複数の部分ビット列の配列順序の変更が実現されることを特徴とする。
【００１１】
第５の発明に係るメモリシステムは、第４の発明に係るメモリシステムにおいて特に、前記所定のパラメータは、固定値、データテーブルに予め記述されている複数の値の中から選択された値、及び、疑似乱数に基づいて生成された値のうちのいずれか一つであることを特徴とする。
【００１２】
第６の発明に係るメモリシステムは、第４又は第５の発明に係るメモリシステムにおいて特に、前記番地指定回路は、前記所定のパラメータを用いて論理演算を行う論理回路が複数段に縦続接続された回路構成を有することを特徴とする。
【００１３】
第７の発明に係るメモリアクセス方法は、ホスト機器から、データ記憶部を有するメモリ装置にアクセスする、メモリアクセス方法であって、（Ａ）前記ホスト機器において、前記ホスト機器から前記メモリ装置に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更するステップと、（Ｂ）前記ホスト機器において、前記ステップ（Ａ）による処理後の前記複数の部分ビット列を、前記メモリ装置に向けて出力するステップと、（Ｃ）前記メモリ装置において、前記ホスト機器から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記ビット列を復元するステップと、（Ｄ）前記メモリ装置において、前記ステップ（Ｃ）による処理後の前記ビット列に基づいて、前記データ記憶部にアクセスするステップとを備えることを特徴とする。
【００１４】
第８の発明に係るメモリアクセス方法は、ホスト機器から、データ記憶部を有するメモリ装置にアクセスする、メモリアクセス方法であって、（Ａ）前記メモリ装置において、前記メモリ装置から前記ホスト機器に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更するステップと、（Ｂ）前記メモリ装置において、前記ステップ（Ａ）による処理後の前記複数の部分ビット列を、前記ホスト機器に向けて出力するステップと、（Ｃ）前記ホスト機器において、前記メモリ装置から出力された前記複数の部分ビット列を入力し、当該複数の部分ビット列の配列順序を変更して前記ビット列を復元するステップとを備えることを特徴とする。
【発明の効果】
【００１５】
第１の発明に係るメモリシステムによれば、ホスト機器が有する第１の処理部は、ホスト機器からメモリ装置に送信すべき第１のビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更してメモリ装置に向けて出力する。従って、ホスト機器からメモリ装置に向けて送信された第１のビット列が第三者によって不正に読み出された場合であっても、複数の部分ビット列の配列順序が変更されていることによって、第三者による第１のビット列の解析が困難となり、セキュリティ性を高めることができる。
【００１６】
第２の発明に係るメモリシステムによれば、メモリ装置が有する第３の処理部は、メモリ装置からホスト機器に送信すべき第２のビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更してホスト機器に向けて出力する。従って、メモリ装置からホスト機器に向けて送信された第２のビット列が第三者によって不正に読み出された場合であっても、複数の部分ビット列の配列順序が変更されていることによって、第三者による第２のビット列の解析が困難となり、セキュリティ性を高めることができる。
【００１７】
第３の発明に係るメモリシステムによれば、メモリ装置が有する第１の処理部は、メモリ装置からホスト機器に送信すべきビット列を複数の部分ビット列に分割し、当該複数の部分ビット列の配列順序を変更してホスト機器に向けて出力する。従って、メモリ装置からホスト機器に向けて送信されたビット列が第三者によって不正に読み出された場合であっても、複数の部分ビット列の配列順序が変更されていることによって、第三者によるビット列の解析が困難となり、セキュリティ性を高めることができる。
【００１８】
第４の発明に係るメモリシステムによれば、バッファメモリへの複数の部分ビット列の格納処理、及び、バッファメモリからの複数の部分ビット列の出力処理のうちの一方の処理を、シーケンシャルな番地指定によって実行し、他方の処理を、所定のパラメータを用いたランダムな番地指定によって実行することにより、複数の部分ビット列の配列順序を簡易かつ確実に変更することが可能である。
【００１９】
第５の発明に係るメモリシステムによれば、所定のパラメータとして固定値を用いた場合には、回路構成が簡単となってコストの低減を図ることができる。また、所定のパラメータとして、データテーブルに予め記述されている複数の値の中から選択された値、又は、疑似乱数に基づいて生成された値を用いた場合には、パラメータが変更される毎に複数の部分ビット列の配列順序も変更されるため、セキュリティ性を高めることができる。
【００２０】
第６の発明に係るメモリシステムによれば、番地指定回路は、所定のパラメータを用いて論理演算を行う論理回路が複数段に縦続接続された回路構成を有する。このように、複数のパラメータを用いることによって、複数の部分ビット列の配列順序の変更の態様がより複雑となるため、セキュリティ性を高めることができる。
【００２１】
第７の発明に係るメモリアクセス方法によれば、ホスト機器からメモリ装置に送信すべきビット列は、複数の部分ビット列に分割され、当該複数の部分ビット列の配列順序が変更されて、ホスト機器からメモリ装置に向けて出力される。従って、ホスト機器からメモリ装置に向けて送信されたビット列が第三者によって不正に読み出された場合であっても、複数の部分ビット列の配列順序が変更されていることによって、第三者によるビット列の解析が困難となり、セキュリティ性を高めることができる。
【００２２】
第８の発明に係るメモリアクセス方法によれば、メモリ装置からホスト機器に送信すべきビット列は、複数の部分ビット列に分割され、当該複数の部分ビット列の配列順序が変更されて、メモリ装置からホスト機器に向けて出力される。従って、メモリ装置からホスト機器に向けて送信されたビット列が第三者によって不正に読み出された場合であっても、複数の部分ビット列の配列順序が変更されていることによって、第三者によるビット列の解析が困難となり、セキュリティ性を高めることができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００２４】
図１は、本発明の実施の形態に係るメモリシステム１の構成を示すブロック図である。図１を参照して、メモリシステム１は、ホスト機器２と半導体メモリ３とを備えて構成されている。ホスト機器２は、任意のデータ処理装置である。半導体メモリ３は、例えば、ホスト機器２に着脱自在に接続可能なメモリカードである。
【００２５】
ホスト機器２は、ＣＰＵ４、処理部５，６、及びインタフェース部７を備えて構成されている。半導体メモリ３は、メモリセルアレイ部８、処理部９，１０、及びインタフェース部１１を備えて構成されている。
【００２６】
以下、ホスト機器２から読み出しコマンドが発行され、それに対応するデータが半導体メモリ３から読み出されて、ホスト機器２に返信される場合を例にとり説明する。但し、本発明は、半導体メモリ３からのデータの読み出しのみならず、半導体メモリ３へのデータの書き込み等の他の処理にも適用可能である。
【００２７】
図１を参照して、ＣＰＵ４は、読み出しコマンドを発行する。ここでは、一例として８バイト長の読み出しコマンドが発行されたものとする。そのコマンドのビット列（以下「コマンドビット列Ｃ１」と称す）は、ＣＰＵ４から処理部５に入力される。
【００２８】
図２は、図１に示した処理部５，９における処理内容を示す模式図である。図２の（Ａ）には、８バイト長のコマンドビット列Ｃ１が示されている。
【００２９】
図１を参照して、処理部５は、ＣＰＵ４から入力されたコマンドビット列Ｃ１を、複数のビット列（以下「部分ビット列」と称す）に分割する。例えば、図２の（Ｂ）に示すように、８バイト長のコマンドビット列Ｃ１を、先頭から順に、各１バイト長の合計８個の部分ビット列ＰＣ１０〜ＰＣ１７に分割する。その結果、図２の（Ｂ）に示したコマンドビット列Ｃ１においては、先頭からＰＣ１０→ＰＣ１１→ＰＣ１２→ＰＣ１３→ＰＣ１４→ＰＣ１５→ＰＣ１６→ＰＣ１７の順に、部分ビット列が配列されている。
【００３０】
次に、処理部５は、図２の（Ｃ）に示すように、複数の部分ビット列ＰＣ１０〜ＰＣ１７の配列順序を、図２の（Ｂ）に示した状態からランダムに変更して、新たなコマンドビット列Ｃ２を得る。具体的に、コマンドビット列Ｃ２においては、先頭からＰＣ１２→ＰＣ１３→ＰＣ１０→ＰＣ１１→ＰＣ１６→ＰＣ１７→ＰＣ１４→ＰＣ１５の順に、部分ビット列が配列されている。処理部５における配列順序の変更手法については、後に詳述する。
【００３１】
処理部５によって作成されたコマンドビット列Ｃ２は、インタフェース部７を介して、ホスト機器２から半導体メモリ３に向けて一括送信される。つまり、ＰＣ１２→ＰＣ１３→ＰＣ１０→ＰＣ１１→ＰＣ１６→ＰＣ１７→ＰＣ１４→ＰＣ１５の順に、複数の部分ビット列がホスト機器２から半導体メモリ３に向けて連続的に送信される。
【００３２】
このように、本実施の形態に係るメモリシステム１によれば、ホスト機器２が有する処理部５は、ホスト機器２から半導体メモリ３に送信すべきコマンドビット列Ｃ１を複数の部分ビット列ＰＣ１０〜ＰＣ１７に分割し、当該複数の部分ビット列ＰＣ１０〜ＰＣ１７の配列順序を変更することによってコマンドビット列Ｃ２を生成する。そして、生成したコマンドビット列Ｃ２を、半導体メモリ３に向けて出力する。従って、ホスト機器２から半導体メモリ３に向けて送信されたコマンドビット列Ｃ２が第三者によって不正に読み出された場合であっても、複数の部分ビット列ＰＣ１０〜ＰＣ１７の配列順序が変更されていることによって、第三者によるコマンドビット列の解析が困難となり、セキュリティ性を高めることができる。
【００３３】
次に、半導体メモリ３の処理部９は、ホスト機器２から送信されたコマンドビット列Ｃ２を、インタフェース部１１を介して受信する。そして、処理部９は、図２の（Ｄ）に示すように、元のコマンドビット列Ｃ１が復元されるように、コマンドビット列Ｃ２を構成する部分ビット列ＰＣ１０〜ＰＣ１７の配列順序を変更する。その結果、図２の（Ｄ）に示したコマンドビット列Ｃ１においては、図２の（Ｂ）に示したコマンドビット列Ｃ１と同様に、先頭からＰＣ１０→ＰＣ１１→ＰＣ１２→ＰＣ１３→ＰＣ１４→ＰＣ１５→ＰＣ１６→ＰＣ１７の順に、部分ビット列が配列されている。処理部９における配列順序の復元手法については、後に詳述する。
【００３４】
次に、処理部９は、復元されたコマンドビット列Ｃ１によってメモリセルアレイ部８にアクセスする。この例では、コマンドビット列Ｃ１は読み出しコマンドであるため、コマンドビット列Ｃ１中に記述されているアドレスに対応するデータが、メモリセルアレイ部８から読み出される。ここでは、８バイト長のデータがメモリセルアレイ部８から読み出されたものとする。そのデータのビット列（以下「データビット列Ｄ１」と称す）は、メモリセルアレイ部８から処理部１０に入力される。
【００３５】
図３は、図１に示した処理部６，１０における処理内容を示す模式図である。図３の（Ａ）には、８バイト長のデータビット列Ｄ１が示されている。
【００３６】
図１を参照して、処理部１０は、メモリセルアレイ部８から入力されたデータビット列Ｄ１を、複数の部分ビット列に分割する。例えば、図３の（Ｂ）に示すように、８バイト長のデータビット列Ｄ１を、先頭から順に、各１バイト長の合計８個の部分ビット列ＰＤ１０〜ＰＤ１７に分割する。図３の（Ｂ）に示したデータビット列Ｄ１においては、先頭からＰＤ１０→ＰＤ１１→ＰＤ１２→ＰＤ１３→ＰＤ１４→ＰＤ１５→ＰＤ１６→ＰＤ１７の順に、部分ビット列が配列されている。
【００３７】
次に、処理部１０は、図３の（Ｃ）に示すように、複数の部分ビット列ＰＤ１０〜ＰＤ１７の配列順序を、図３の（Ｂ）に示した状態からランダムに変更して、新たなデータビット列Ｄ２を得る。データビット列Ｄ２においては、先頭からＰＤ１５→ＰＤ１４→ＰＤ１７→ＰＤ１６→ＰＤ１１→ＰＤ１０→ＰＤ１３→ＰＤ１２の順に、部分ビット列が配列されている。処理部１０における配列順序の変更手法については、後に詳述する。
【００３８】
処理部１０によって作成されたデータビット列Ｄ２は、インタフェース部１１を介して、半導体メモリ３からホスト機器２に向けて一括送信される。つまり、ＰＤ１５→ＰＤ１４→ＰＤ１７→ＰＤ１６→ＰＤ１１→ＰＤ１０→ＰＤ１３→ＰＤ１２の順に、複数の部分ビット列が半導体メモリ３からホスト機器２に向けて連続的に送信される。
【００３９】
このように、本実施の形態に係るメモリシステム１によれば、半導体メモリ３が有する処理部１０は、半導体メモリ３からホスト機器２に送信すべきデータビット列Ｄ１を複数の部分ビット列ＰＤ１０〜ＰＤ１７に分割し、当該複数の部分ビット列ＰＤ１０〜ＰＤ１７の配列順序を変更することによってデータビット列Ｄ２を生成する。そして、生成したデータビット列Ｄ２を、ホスト機器２に向けて出力する。従って、半導体メモリ３からホスト機器２に向けて送信されたデータビット列Ｄ２が第三者によって不正に読み出された場合であっても、複数の部分ビット列ＰＤ１０〜ＰＤ１７の配列順序が変更されていることによって、第三者によるデータビット列の解析が困難となり、セキュリティ性を高めることができる。
【００４０】
次に、ホスト機器２の処理部６は、半導体メモリ３から送信されたデータビット列Ｄ２を、インタフェース部７を介して受信する。そして、処理部６は、図３の（Ｄ）に示すように、元のデータビット列Ｄ１が復元されるように、データビット列Ｄ２を構成する部分ビット列ＰＤ１０〜ＰＤ１７の配列順序を変更する。その結果、図３の（Ｄ）に示したデータビット列Ｄ１においては、図３の（Ｂ）に示したデータビット列Ｄ１と同様に、先頭からＰＤ１０→ＰＤ１１→ＰＤ１２→ＰＤ１３→ＰＤ１４→ＰＤ１５→ＰＤ１６→ＰＤ１７の順に、部分ビット列が配列されている。処理部６における配列順序の復元手法については、後に詳述する。
【００４１】
処理部６によって復元されたデータビット列Ｄ１は、ＣＰＵ４に入力される。これにより、ＣＰＵ４は、発行したコマンドビット列Ｃ１に対応するデータビット列Ｄ１を受け取る。
【００４２】
＜処理部５における配列順序の変更処理＞
図４は、図１に示した処理部５の構成を示すブロック図である。処理部５は、バッファメモリ２１と番地指定回路２０とを有している。この例では、コマンドビット列Ｃ１を構成する部分ビット列ＰＣ１０〜ＰＣ１７の個数が合計８個であるため、バッファメモリ２１は、番地Ｉ０〜Ｉ７で示される合計８個（以上）の記憶領域を有している。また、部分ビット列ＰＣ１０〜ＰＣ１７が各々１バイト長であるため、バッファメモリ２１の各記憶領域の記憶容量も１バイト（以上）である。
【００４３】
また、番地指定回路２０は、排他的論理和の論理演算を行う論理回路（以下「ＥＸ−ＯＲ回路」と称す）２２０〜２２２を有している。この例では、コマンドビット列Ｃ１を構成する部分ビット列ＰＣ１０〜ＰＣ１７の個数が合計８（＝２３）個であるため、合計３個のＥＸ−ＯＲ回路２２０〜２２２が設けられている。ＥＸ−ＯＲ回路２２０〜２２２の各一方の入力端子にはパラメータＰ１の値が入力され、各他方の入力端子には転送カウンタＴ１の値が入力される。例えば、ＥＸ−ＯＲ回路２２０の一方の入力端子にはパラメータＰ１のｂｉｔ０の値が入力され、他方の入力端子には転送カウンタＴ１のｂｉｔ０の値が入力される。パラメータＰ１の決定手法については、後に詳述する。なお、図４において、ｂｉｔ０が最下位ビットを示し、ｂｉｔ２が最上位ビットを示している。そして、ＥＸ−ＯＲ回路２２０〜２２２からの出力値で規定される３ビットの信号Ｓ１によって、バッファメモリ２１の番地Ｉ０〜Ｉ７が指定される。
【００４４】
図５〜７は、処理部５における配列順序の変更処理を説明するための図である。図５を参照して、この例ではパラメータＰ１の値は「０１０」に設定されている。転送カウンタＴ１の値は、図１に示したクロックＣＬＫに同期して、「０００」→「００１」→「０１０」→「０１１」→「１００」→「１０１」→「１１０」→「１１１」と増加する。その結果、パラメータＰ１の値と転送カウンタＴ１の値との排他的論理和として規定される信号Ｓ１の値は、「０１０」→「０１１」→「０００」→「００１」→「１１０」→「１１１」→「１００」→「１０１」と遷移する。信号Ｓ１の「０００」がバッファメモリ２１の番地Ｉ０に対応し、「１１１」が番地Ｉ７に対応するため、図５に示すように、Ｉ２→Ｉ３→Ｉ０→Ｉ１→Ｉ６→Ｉ７→Ｉ４→Ｉ５の順に、バッファメモリ２１の番地が指定されることになる。
【００４５】
図６を参照して、コマンドビット列Ｃ１をバッファメモリ２１に格納する際には、番地Ｉ０→Ｉ１→Ｉ２→Ｉ３→Ｉ４→Ｉ５→Ｉ６→Ｉ７のシーケンシャルな順に、各部分ビット列ＰＣ１０〜ＰＣ１７をバッファメモリ２１の各記憶領域に格納する。一方、部分ビット列ＰＣ１０〜ＰＣ１７をバッファメモリ２１から出力する際には、信号Ｓ１を用いたランダムな処理によって、番地Ｉ２→Ｉ３→Ｉ０→Ｉ１→Ｉ６→Ｉ７→Ｉ４→Ｉ５の順に、各部分ビット列ＰＣ１０〜ＰＣ１７をバッファメモリ２１の各記憶領域から出力する。その結果、バッファメモリ２１からは、ＰＣ１２→ＰＣ１３→ＰＣ１０→ＰＣ１１→ＰＣ１６→ＰＣ１７→ＰＣ１４→ＰＣ１５の順に部分ビット列ＰＣ１０〜ＰＣ１７が読み出され、これによって、配列順序が変更されたコマンドビット列Ｃ２が生成される。
【００４６】
なお、図６とは逆の処理を行っても良い。つまり、図７を参照して、部分ビット列ＰＣ１０〜ＰＣ１７をバッファメモリ２１に格納する際に、信号Ｓ１を用いたランダムな処理を行い、一方、部分ビット列ＰＣ１０〜ＰＣ１７をバッファメモリ２１から出力する際には、番地Ｉ０からＩ７に向けてのシーケンシャルな処理を行っても良い。この場合、図７に示すように、例えば、部分ビット列ＰＣ１０は番地Ｉ２に格納され、部分ビット列ＰＣ１１は番地Ｉ３に格納され、部分ビット列ＰＣ１２は番地Ｉ０に格納される。図７の場合も、図６と同様に配列順序が変更されたコマンドビット列Ｃ２を得ることができる。
【００４７】
このように、バッファメモリ２１への複数の部分ビット列ＰＣ１０〜ＰＣ１７の格納処理、及び、バッファメモリ２１からの複数の部分ビット列ＰＣ１０〜ＰＣ１７の出力処理のうちの一方の処理を、シーケンシャルな番地指定によって実行し、他方の処理を、パラメータＰ１を用いたランダムな番地指定によって実行することにより、複数の部分ビット列ＰＣ１０〜ＰＣ１７の配列順序を簡易かつ確実に変更することが可能である。後述の処理部６，９，１０についても同様である。
【００４８】
なお、以上の説明では処理部５をハードウェアで構成する例について述べたが、プロセッサを搭載し、上記した処理部５の機能をソフトウェアによって実現しても良い。後述の処理部６，９，１０についても同様である。
【００４９】
＜処理部９における配列順序の復元処理＞
図８は、図１に示した処理部９の構成を示すブロック図である。処理部９は、バッファメモリ３１と番地指定回路３０とを有している。この例では、コマンドビット列Ｃ２を構成する部分ビット列ＰＣ１０〜ＰＣ１７の個数が合計８個であるため、バッファメモリ３１は、番地Ｉ０〜Ｉ７で示される合計８個（以上）の記憶領域を有している。また、コマンドビット列Ｃ２を構成する部分ビット列ＰＣ１０〜ＰＣ１７が各々１バイト長であるため、バッファメモリ３１の各記憶領域の記憶容量も１バイト（以上）である。
【００５０】
また、番地指定回路３０は、ＥＸ−ＯＲ回路３２０〜３２２を有している。この例では、コマンドビット列Ｃ２を構成する部分ビット列ＰＣ１０〜ＰＣ１７の個数が合計８（＝２３）個であるため、合計３個のＥＸ−ＯＲ回路３２０〜３２２が設けられている。ＥＸ−ＯＲ回路３２０〜３２２の各一方の入力端子にはパラメータＰ２の値が入力され、各他方の入力端子には転送カウンタＴ２の値が入力される。転送カウンタＴ２の値は、図１に示したクロックＣＬＫに同期して、「０００」→「００１」→「０１０」→「０１１」→「１００」→「１０１」→「１１０」→「１１１」と増加する。ＥＸ−ＯＲ回路３２０〜３２２からの出力値で規定される３ビットの信号Ｓ２によって、バッファメモリ３１の番地Ｉ０〜Ｉ７が指定される。
【００５１】
ここで、コマンドビット列Ｃ２から元のコマンドビット列Ｃ１を正確に復元するためには、パラメータＰ２の値として、図４に示したパラメータＰ１と同じ値を設定する必要がある。そこで例えば、パラメータＰ１の値を、コマンドビット列を構成する複数の部分ビット列の一部（例えば部分ビット列ＰＣ１７）に記述することにより、処理部５から処理部９へパラメータＰ１の値を通知することができる。具体的には、今回のコマンドに関して使用すべきパラメータＰ２の値は、前回のコマンドに関して処理部５から処理部９に送信された部分ビット列に記述されることによって、すでに処理部９に通知されている。そして、処理部９は、そのパラメータＰ２の値（今回のコマンドに関して使用されたパラメータＰ１の値に等しい）を用いて、今回のコマンドに関する復元処理を行う。
【００５２】
処理部９は、上記の処理部５と同様の手法によって、コマンドビット列Ｃ２を構成する部分ビット列ＰＣ１０〜ＰＣ１７の配列順序を変更する。つまり、バッファメモリ３１へのコマンドビット列Ｃ２の格納処理を、シーケンシャルな番地指定によって実行し、バッファメモリ３１からの部分ビット列ＰＣ１０〜ＰＣ１７の出力処理を、パラメータＰ２を用いたランダムな番地指定によって実行する。あるいは、バッファメモリ３１へのコマンドビット列Ｃ２の格納処理を、パラメータＰ２を用いたランダムな番地指定によって実行し、バッファメモリ３１からの部分ビット列ＰＣ１０〜ＰＣ１７の出力処理を、シーケンシャルな番地指定によって実行する。そして、パラメータＰ２の値を、パラメータＰ１の値と等しく設定することにより、コマンドビット列Ｃ２から元のコマンドビット列Ｃ１を復元して、バッファメモリ３１から出力することができる。
【００５３】
＜処理部１０における配列順序の変更処理＞
図９は、図１に示した処理部１０の構成を示すブロック図である。処理部１０は、バッファメモリ４１と番地指定回路４０とを有している。この例では、データビット列Ｄ１を構成する部分ビット列ＰＤ１０〜ＰＤ１７の個数が合計８個であるため、バッファメモリ４１は、番地Ｉ０〜Ｉ７で示される合計８個（以上）の記憶領域を有している。また、部分ビット列ＰＤ１０〜ＰＤ１７が各々１バイト長であるため、バッファメモリ４１の各記憶領域の記憶容量も１バイト（以上）である。
【００５４】
また、番地指定回路４０は、ＥＸ−ＯＲ回路４２０〜４２２を有している。この例では、データビット列Ｄ１を構成する部分ビット列ＰＤ１０〜ＰＤ１７の個数が合計８（＝２３）個であるため、合計３個のＥＸ−ＯＲ回路４２０〜４２２が設けられている。ＥＸ−ＯＲ回路４２０〜４２２の各一方の入力端子にはパラメータＰ３の値が入力され、各他方の入力端子には転送カウンタＴ３の値が入力される。そして、ＥＸ−ＯＲ回路４２０〜４２２からの出力値で規定される３ビットの信号Ｓ３によって、バッファメモリ４１の番地Ｉ０〜Ｉ７が指定される。
【００５５】
図１０〜１２は、処理部１０における配列順序の変更処理を説明するための図である。図１０を参照して、この例ではパラメータＰ３の値は「１０１」に設定されている。転送カウンタＴ３の値は、図１に示したクロックＣＬＫに同期して、「０００」→「００１」→「０１０」→「０１１」→「１００」→「１０１」→「１１０」→「１１１」と増加する。その結果、パラメータＰ３の値と転送カウンタＴ３の値との排他的論理和として規定される信号Ｓ３の値は、「１０１」→「１００」→「１１１」→「１１０」→「００１」→「０００」→「０１１」→「０１０」と遷移する。信号Ｓ３の「０００」がバッファメモリ４１の番地Ｉ０に対応し、「１１１」が番地Ｉ７に対応するため、図１０に示すように、Ｉ５→Ｉ４→Ｉ７→Ｉ６→Ｉ１→Ｉ０→Ｉ３→Ｉ２の順に、バッファメモリ４１の番地が指定されることになる。
【００５６】
図１１を参照して、データビット列Ｄ１をバッファメモリ４１に格納する際には、番地Ｉ０→Ｉ１→Ｉ２→Ｉ３→Ｉ４→Ｉ５→Ｉ６→Ｉ７のシーケンシャルな順に、各部分ビット列ＰＤ１０〜ＰＤ１７をバッファメモリ４１の各記憶領域に格納する。一方、部分ビット列ＰＤ１０〜ＰＤ１７をバッファメモリ４１から出力する際には、信号Ｓ３を用いたランダムな処理によって、番地Ｉ５→Ｉ４→Ｉ７→Ｉ６→Ｉ１→Ｉ０→Ｉ３→Ｉ２の順に、各部分ビット列ＰＤ１０〜ＰＤ１７をバッファメモリ４１の各記憶領域から出力する。その結果、バッファメモリ４１からは、ＰＤ１５→ＰＤ１４→ＰＤ１７→ＰＤ１６→ＰＤ１１→ＰＤ１０→ＰＤ１３→ＰＤ１２の順に部分ビット列ＰＤ１０〜ＰＤ１７が読み出され、これによって、配列順序が変更されたデータビット列Ｄ２が生成される。
【００５７】
なお、図１１とは逆の処理を行っても良い。つまり、図１２を参照して、部分ビット列ＰＤ１０〜ＰＤ１７をバッファメモリ４１に格納する際に、信号Ｓ３を用いたランダムな処理を行い、一方、部分ビット列ＰＤ１０〜ＰＤ１７をバッファメモリ４１から出力する際には、番地Ｉ０からＩ７に向けてのシーケンシャルな処理を行っても良い。この場合、図１２に示すように、例えば、部分ビット列ＰＤ１０は番地Ｉ５に格納され、部分ビット列ＰＤ１１は番地Ｉ４に格納され、部分ビット列ＰＤ１２は番地Ｉ７に格納される。図１２の場合も、図１１と同様に配列順序が変更されたデータビット列Ｄ２を得ることができる。
【００５８】
＜処理部６における配列順序の復元処理＞
図１３は、図１に示した処理部６の構成を示すブロック図である。処理部６は、バッファメモリ５１と番地指定回路５０とを有している。この例では、データビット列Ｄ２を構成する部分ビット列ＰＤ１０〜ＰＤ１７の個数が合計８個であるため、バッファメモリ５１は、番地Ｉ０〜Ｉ７で示される合計８個（以上）の記憶領域を有している。また、データビット列Ｄ２を構成する部分ビット列ＰＤ１０〜ＰＤ１７が各々１バイト長であるため、バッファメモリ５１の各記憶領域の記憶容量も１バイト（以上）である。
【００５９】
また、番地指定回路５０は、ＥＸ−ＯＲ回路５２０〜５２２を有している。この例では、データビット列Ｄ２を構成する部分ビット列ＰＤ１０〜ＰＤ１７の個数が合計８（＝２３）個であるため、合計３個のＥＸ−ＯＲ回路５２０〜５２２が設けられている。ＥＸ−ＯＲ回路５２０〜５２２の各一方の入力端子にはパラメータＰ４の値が入力され、各他方の入力端子には転送カウンタＴ４の値が入力される。転送カウンタＴ４の値は、図１に示したクロックＣＬＫに同期して、「０００」→「００１」→「０１０」→「０１１」→「１００」→「１０１」→「１１０」→「１１１」と増加する。ＥＸ−ＯＲ回路５２０〜５２２からの出力値で規定される３ビットの信号Ｓ４によって、バッファメモリ５１の番地Ｉ０〜Ｉ７が指定される。
【００６０】
ここで、データビット列Ｄ２から元のデータビット列Ｄ１を正確に復元するためには、パラメータＰ４の値として、図９に示したパラメータＰ３と同じ値を設定する必要がある。そこで例えば、パラメータＰ３の値を部分ビット列ＰＤ１７に記述することにより、処理部１０から処理部６へパラメータＰ４の値を通知することができる。具体的には、今回のデータに関して使用すべきパラメータＰ４の値は、前回のデータに関して処理部１０から処理部６に送信された部分ビット列に記述されることによって、すでに処理部６に通知されている。そして、処理部６は、そのパラメータＰ４の値（今回のデータに関して使用されたパラメータＰ３の値に等しい）を用いて、今回のデータに関する復元処理を行う。あるいは、ホスト機器２のＣＰＵ４がパラメータＰ３，Ｐ４の値を設定し、その値を処理部６，１０に通知しても良い。
【００６１】
処理部６は、上記の処理部１０と同様の手法によって、データビット列Ｄ２を構成する部分ビット列ＰＤ１０〜ＰＤ１７の配列順序を変更する。つまり、バッファメモリ５１へのデータビット列Ｄ２の格納処理を、シーケンシャルな番地指定によって実行し、バッファメモリ５１からの部分ビット列ＰＤ１０〜ＰＤ１７の出力処理を、パラメータＰ４を用いたランダムな番地指定によって実行する。あるいは、バッファメモリ５１へのデータビット列Ｄ２の格納処理を、パラメータＰ４を用いたランダムな番地指定によって実行し、バッファメモリ５１からの部分ビット列ＰＤ１０〜ＰＤ１７の出力処理を、シーケンシャルな番地指定によって実行する。そして、パラメータＰ４の値を、パラメータＰ３の値と等しく設定することにより、データビット列Ｄ２から元のデータビット列Ｄ１を復元して、バッファメモリ５１から出力することができる。
【００６２】
＜パラメータＰ１の決定手法＞
以下では、パラメータＰ１の決定手法について説明するが、他のパラメータＰ２〜Ｐ４についても同様の手法によって決定可能である。
【００６３】
図１４は、図４に示した番地指定回路２０の第１の構成例を示すブロック図である。パラメータ決定部６０は例えば３ビットのレジスタであり、上記の例では「０１０」という固定値が、パラメータＰ１として、予めレジスタに設定されている。レジスタの設定値は、電源投入時などの所定のタイミング毎に更新しても良い。ＥＸ−ＯＲ回路２２は、パラメータＰ１と転送カウンタＴ１とに基づいて信号Ｓ１を生成する。このように、パラメータＰ１として固定値を用いることにより、回路構成が簡単となってコストの低減を図ることができる。
【００６４】
図１５は、図４に示した番地指定回路２０の第２の構成例を示すブロック図である。ＰＮ生成部６１は、任意のアルゴリズムによって疑似乱数（以下「ＰＮ」と称す）を生成する。パラメータ決定部６０は、ＰＮ生成部６１から入力されたＰＮに基づいて、パラメータＰ１を決定する。例えば、ＰＮ生成部６１が生成したＰＮの下位３ビットを、パラメータＰ１として設定する。コマンドが発行される毎にパラメータ決定部６０がＰＮ生成部６１からＰＮを取り込み、その取り込んだＰＮに基づいてパラメータＰ１の値を更新しても良い。ＥＸ−ＯＲ回路２２は、パラメータＰ１と転送カウンタＴ１とに基づいて信号Ｓ１を生成する。このように、パラメータＰ１として、ＰＮに基づいて生成された値を用いた場合には、パラメータＰ１が変更される毎に部分ビット列ＰＣ１０〜ＰＣ１７の配列順序も変更されるため、セキュリティ性を高めることができる。
【００６５】
図１６は、図４に示した番地指定回路２０の第３の構成例を示すブロック図である。複数のパラメータ値が記述されたデータテーブル６２が予め作成されて、パラメータ決定部６０が参照可能な記憶部に、そのデータテーブル６２が記憶されている。パラメータ決定部６０は、インデックス値Ａ０〜Ａｎをランダムに選択し、選択されたインデックス値に対応するパラメータ値が、パラメータＰ１として設定される。コマンドが発行される毎にパラメータ決定部６０がインデックス値Ａ０〜Ａｎを更新することによって、パラメータＰ１の値を変更しても良い。ＥＸ−ＯＲ回路２２は、パラメータＰ１と転送カウンタＴ１とに基づいて信号Ｓ１を生成する。このように、パラメータＰ１として、データテーブル６２に予め記述されている複数の値の中から選択された値を用いた場合には、パラメータＰ１が変更される毎に部分ビット列ＰＣ１０〜ＰＣ１７の配列順序も変更されるため、セキュリティ性を高めることができる。
【００６６】
図１７は、図４に示した番地指定回路２０の第４の構成例を示すブロック図である。パラメータ決定部６０ａ，６０ｂは、図１４〜１６に示したパラメータ決定部６０のうちの任意のものである。つまり、パラメータ決定部６０ａ，６０ｂからそれぞれ出力されるパラメータＰ１ａ，Ｐ１ｂは、固定値（図１４）、ＰＮに基づいて生成された値（図１５）、及び、データテーブル６２に予め記述されている複数の値の中から選択された値（図１６）のうちのいずれかである。ＥＸ−ＯＲ回路２２ａは、パラメータＰ１ａの値と転送カウンタＴ１の値との排他的論理和をとることによって、信号Ｓ１ａを出力する。ＥＸ−ＯＲ回路２２ｂは、パラメータＰ１ｂの値と信号Ｓ１ａの値との排他的論理和をとることによって、信号Ｓ１を出力する。このように、図１７に示した番地指定回路２０は、パラメータＰ１ａ，Ｐ１ｂを用いて論理演算を行う論理回路２２ａ，２２ｂが複数段に縦続接続された回路構成を有する。複数のパラメータＰ１ａ，Ｐ１ｂを用いることによって、部分ビット列ＰＣ１０〜ＰＣ１７の配列順序の変更の態様がより複雑となるため、セキュリティ性を高めることができる。
【００６７】
＜変形例＞
例えば図１を参照して、以上の説明では、ホスト機器２内において処理部５と処理部６とが別々に構成されている例について述べたが、これらの処理部５，６は一体として共通に構成しても良い。この場合、図４に示した番地指定回路２０と図１３に示した番地指定回路５０とを共用でき、図４に示したバッファメモリ２１と図１３に示したバッファメモリ５１とを共用できる。
【００６８】
同様に、以上の説明では、半導体メモリ３内において処理部９と処理部１０とが別々に構成されている例について述べたが、これらの処理部９，１０は一体として共通に構成しても良い。この場合、図８に示した番地指定回路３０と図９に示した番地指定回路４０とを共用でき、図８に示したバッファメモリ３１と図９に示したバッファメモリ４１とを共用できる。
【００６９】
また、以上の説明では、複数バイト長のビット列の一括転送において、バイト単位でビット列を複数の部分ビット列に分割し、バイト単位で配列順序を変更する例について述べたが、これに限らず、複数ページ長のビット列の一括転送において、ページ単位でビット列を複数の部分ビット列に分割し、ページ単位で配列順序を変更しても良い。また、この場合、さらに各ページ内において、バイト単位でビット列を複数の部分ビット列に分割し、バイト単位で配列順序を変更しても良い。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施の形態に係るメモリシステムの構成を示すブロック図である。
【図２】図１に示した処理部における処理内容を示す模式図である。
【図３】図１に示した処理部における処理内容を示す模式図である。
【図４】図１に示した処理部の構成を示すブロック図である。
【図５】配列順序の変更処理を説明するための図である。
【図６】配列順序の変更処理を説明するための図である。
【図７】配列順序の変更処理を説明するための図である。
【図８】図１に示した処理部の構成を示すブロック図である。
【図９】図１に示した処理部の構成を示すブロック図である。
【図１０】配列順序の変更処理を説明するための図である。
【図１１】配列順序の変更処理を説明するための図である。
【図１２】配列順序の変更処理を説明するための図である。
【図１３】図１に示した処理部の構成を示すブロック図である。
【図１４】図４に示した番地指定回路の第１の構成例を示すブロック図である。
【図１５】図４に示した番地指定回路の第１の構成例を示すブロック図である。
【図１６】図４に示した番地指定回路の第１の構成例を示すブロック図である。
【図１７】図４に示した番地指定回路の第１の構成例を示すブロック図である。
【符号の説明】
【００７１】
１  メモリシステム
２  ホスト機器
３  半導体メモリ
５，６，９，１０  処理部
８  メモリセルアレイ部
２０，３０，４０，５０  番地指定回路
２１，３１，４１，５１  バッファメモリ
２２，２２ａ，２２ｂ  ＥＸ−ＯＲ回路
６０，６０ａ，６０ｂ  パラメータ決定部
６１  ＰＮ生成部
６２  データテーブル
【図７】
2008140104.tif 000003
【図８】
2008140104.tif 000004
【図１１】
2008140104.tif 000005
【図１２】
2008140104.tif 000006
【図１７】
2008140104.tif 000007
【図１】
2008140104.tif 000008
【図２】
2008140104.tif 000009
【図３】
2008140104.tif 000010
【図４】
2008140104.tif 000011
【図５】
2008140104.tif 000012
【図６】
2008140104.tif 000013
【図９】
2008140104.tif 000014
【図１０】
2008140104.tif 000015
【図１３】
2008140104.tif 000016
【図１４】
2008140104.tif 000017
【図１５】
2008140104.tif 000018
【図１６】
2008140104.tif 000019