(57)【要約】【課題】半導体メモリに記憶保存されたデータの機密保護を実現する。【解決手段】情報処理装置１０は、半導体メモリ２０から読み出した暗号化元データと、内部に記憶する暗号生成データとを利用して、暗号鍵データ生成部１５により半導体メモリ２０が内部に記憶するキーデータを生成して一時記憶部１２に記憶する。情報処理装置１０が当該キーデータを利用して暗号化回路１６により暗号化したデータを送信し、これを受信した半導体メモリ２０が同様にキーデータを利用して復号化回路２３ａにより復号したコマンドを実行する。これにより所定の半導体メモリ２０および情報処理装置１０間でのみデータ通信を行うことができる。【選択図】図１
2006146608.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と情報処理装置に対して着脱自在に装着される半導体メモリとから構成されるメモリ情報保護システムであって、
前記半導体メモリは、
保護すべきプログラムを含むデータを記憶し、前記情報処理装置によってアクセスされるデータ記憶手段、
前記情報処理装置から命令コードならびにアドレスデータからなるコマンドが与えられ、かつ前記データ記憶手段から読み出されたデータを情報処理装置に与えるための第１の入出力端子部、
暗号化のための元になる暗号鍵元データを記憶する暗号鍵元データ記憶部、
前記情報処理装置に使用することが許容されたものであることを判断するために用いられる復号鍵となる復号鍵データを、情報処理装置からアクセスできない態様で記憶する復号鍵データ記憶手段、および
前記情報処理装置から与えられる暗号化コマンドを、前記復号鍵データを用いて復号する復号手段を含む、メモリ制御手段を備え、
前記情報処理装置は、
前記半導体メモリの第１の入出力端子部が接続され、命令コードならびにアドレスデータからなるコマンドを出力し、かつ半導体メモリから読み出されたデータが入力される第２の入出力端子部、
前記半導体メモリから読み出されたデータを処理し、かつ半導体メモリに与えるコマンドを発生する処理手段、
前記復号鍵データに関連する暗号鍵データを生成するための暗号生成データを記憶するための暗号生成データ記憶手段、
前記暗号鍵元データ記憶部から読み出された前記暗号鍵元データと前記暗号生成データとに基づいて前記暗号鍵データを生成する暗号鍵データ生成手段、
前記暗号鍵データ生成手段によって生成された暗号鍵データを一時記憶する一時記憶手段、および
前記処理手段によって発生されるコマンドを、前記暗号鍵データを用いて暗号化した暗号化コマンドを生成し、当該暗号化コマンドを前記第２の入出力端子部へ出力する暗号化手段を備え、
前記メモリ制御手段は、さらに前記復号手段によって復号されたコマンドを用いて前記データ記憶手段に記憶されているデータを読出し制御する、メモリ情報保護システム。
【請求項２】
前記暗号鍵データ生成手段は、前記暗号鍵元データを用いかつ前記暗号生成データに基づいて前記復号鍵データと所定の関係を有する暗号鍵データを生成する、請求項１に記載のメモリ情報保護システム。
【請求項３】
前記暗号鍵データ記憶手段は、前記暗号鍵元データよりも十倍以上長い暗号鍵データを記憶する、請求項１または請求項２に記載のメモリ情報保護システム。
【請求項４】
前記暗号鍵データ生成手段および前記暗号化手段は、前記処理手段によって兼用され、
前記処理手段は、前記暗号鍵元データと前記暗号生成データとを演算処理して前記暗号鍵データを求めて前記一時記憶手段に書込み、当該暗号鍵データを用いて前記コマンドを暗号化した暗号化コマンドを出力する、請求項１ないし請求項３のいずれかに記載のメモリ情報保護システム。
【請求項５】
前記暗号生成データ記憶手段は、前記情報処理装置の外部から前記第２の入出力端子部を介してアクセスできないメモリ空間として配置される、請求項１に記載のメモリ情報保護システム。
【請求項６】
前記復号鍵データ記憶手段は、前記暗号鍵元データ記憶部に記憶されている暗号鍵の元になる前記暗号鍵元データとペアとなる前記復号鍵データを記憶する、請求項１ないし請求項５のいずれかに記載のメモリ情報保護システム。
【請求項７】
前記暗号鍵元データ記憶部に記憶されている前記暗号鍵元データと前記復号鍵データ記憶手段に記憶されている前記復号鍵データとは、前記データ記憶手段に記憶されるプログラムの種類によって異なるペアの鍵データに選ばれる、請求項６に記載のメモリ情報保護システム。
【請求項８】
前記処理手段は、前記暗号化手段によって所望の量の暗号化コマンドが出力された後、前記一時記憶手段に記憶されている暗号鍵データを消去する、請求項１ないし請求項７のいずれかに記載のメモリ情報保護システム。
【請求項９】
ＣＰＵを含む情報処理装置と、情報処理装置に対して着脱自在に装着される半導体メモリとから構成される情報処理システムにおけるメモリ情報の保護方法であって、
前記半導体メモリは、
保護すべきプログラムを含むデータを記憶するデータ記憶手段、
命令ならびにアドレスデータからなるコマンドが前記情報処理装置から与えられ、かつ前記データ記憶手段から読み出されたデータを情報処理装置に与えるための第１の入出力端子部、
暗号化のための元になる暗号鍵元データを記憶する暗号鍵元データ記憶部、
前記情報処理装置に使用することが許容されたものであることを確認するために用いられる復号鍵データを、前記情報処理装置によってアクセスできない態様で記憶する復号鍵データ記憶手段、および
前記情報処理装置から与えられる暗号化コマンドを、前記復号鍵データを用いて復号する復号手段を含む、メモリ制御手段を備え、
前記情報処理装置は、
前記半導体メモリの第１の入出力端子部が接続され、命令ならびにアドレスデータからなるコマンドを出力しかつ半導体メモリから読み出されたデータが入力される第２の入出力端子部、
前記半導体メモリから読み出されたデータを処理し、かつ半導体メモリに与えるコマンドを発生する処理手段、
前記暗号鍵元データを用いて前記復号鍵データに関連する暗号鍵データを生成するための暗号鍵データ生成プログラムを記憶する暗号鍵生成プログラム記憶手段、および
前記暗号鍵データを一時記憶する一時記憶手段を備え、
さらに、前記ＣＰＵは、
前記暗号鍵元データを用いかつ前記暗号鍵生成プログラムに基づいて暗号鍵データを生成する第１のステップと、
前記第１のステップにおいて生成された暗号鍵データを、前記一時記憶手段に一時記憶させる第２のステップと、
前記処理手段によって発生されるコマンドを、前記暗号鍵データを用いて暗号化した暗号化コマンドを発生し、前記第２の入出力端子部へ出力する第３のステップを順次実行し、
前記メモリ制御手段は、
前記復号鍵データを用いて前記コマンドを復号する第４のステップと、
前記第４のステップにおいて復号した前記コマンドが読出コードであるとき、当該コマンドに含まれるアドレスデータを前記データ記憶手段に与えて、データ記憶手段のデータを読み出す第５のステップを順次実行する、メモリ情報の保護方法。
【請求項１０】
前記第１のステップは、前記暗号鍵元データを用いかつ前記暗号鍵データ生成プログラムに基づいて前記復号鍵データと同じ前記暗号鍵データを生成するステップを含み、
前記第３のステップは、前記メモリ制御手段が復号する復号鍵データと同じ前記暗号鍵データで暗号化するステップを含む、請求項９に記載のメモリ情報の保護方法。
【請求項１１】
暗号鍵データを用いて命令コードならびにアドレスデータからなる暗号化コマンドを発生するための情報処理装置に対して、着脱自在に装着される半導体メモリであって、
前記情報処理装置によってアクセス可能なメモリ空間に割り当てられ、保護すべきプログラムを含むデータを記憶するデータ記憶手段と、
前記情報処理装置によってアクセスできないメモリ空間に割り当てられ、前記情報処理装置から供給される暗号化コマンドの復号化に必要な復号鍵データを記憶する復号鍵データ記憶手段と、
前記情報処理装置によってアクセス可能な空間に割り当てられ、前記復号鍵データに関連しかつ情報処理装置が暗号鍵データを生成するために用いる暗号鍵元データを記憶する暗号鍵元データ記憶部と、
前記情報処理装置から供給される前記暗号化コマンドを、前記復号鍵データを用いて復号化する復号化手段と、
前記復号化手段によって復号されたコマンドに含まれる命令コードが読出命令コードであることを判断したときは、読出信号を前記データ記憶手段に与えるとともに、当該コマンドに含まれるアドレスデータを読出アドレスとして前記データ記憶手段に与えることにより、前記データ記憶手段の記憶データを読出制御する読出手段と、
を備えることを特徴とする半導体メモリ。
【請求項１２】
前記暗号鍵元データ記憶部に記憶される暗号鍵元データと前記復号鍵データ記憶手段に記憶される前記復号鍵データとは、前記データ記憶手段に記憶される前記プログラムの種類によって、異なるペアに選ばれることを特徴とする、請求項１１に記載の半導体メモリ。
【請求項１３】
前記復号鍵データ記憶手段に記憶される復号鍵データは、前記暗号鍵元データよりも十倍以上長いデータ長さに選ばれる、請求項１１または請求項１２に記載の半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリに記憶されるデータの機密を保護する技術に関する。
【背景技術】
【０００２】
半導体メモリを脱着自在に接続することによって、当該半導体メモリに記憶保存されたソフトウェアプログラムやデータ等を利用する情報処理装置が知られている。
【０００３】
このような半導体メモリでは、内部に記憶保存されたデータ等の機密保護のためのセキュリティ技術を有するものがある。例えば、特許文献１、２では、キーデータを利用してデータを暗号化する方法が示されている。また、特許文献３では、暗号化されたコマンドが入力された場合にのみデータを入出力可能とする方法が示されている。
【０００４】
【特許文献１】特開平９−１０６６９０号公報
【特許文献２】特開平７−２１９８５２号公報
【特許文献３】特開２００１−３５１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記特許文献１、２のように、キーデータを利用して排他的論理和等の論理演算を利用してデータの暗号化を行う場合でも、半導体メモリと情報処理装置との間で行われる通信内容を観測することが可能であるため、暗号化されたデータを解析されてしまうという問題があった。
【０００６】
また、上記特許文献３のように、コマンドを暗号化する場合、暗号方式を複雑にすることでセキュリティ強度を向上することは可能であるが、例えば半導体メモリ毎に異なる暗号を採用するような対応は困難であり、常に同一の暗号化手法により暗号化されたデータを供給することになる。さらに、上記特許文献１、２と同様に、情報処理装置と半導体メモリとの間でやり取りされるデータの閲覧が可能であることから、暗号されたデータを解析される可能性を回避することが困難であるという問題があった。
【０００７】
それゆえに、この発明の主たる目的は、半導体メモリに記憶されたデータの機密保護を高めて、記憶データの不正な読み出しを有効に防止し得る、メモリ情報保護システム，メモリ情報の保護方法、および半導体メモリを提供することである。
【０００８】
この発明の他の目的は、半導体メモリ側の構成を複雑にすることなく、半導体メモリの記憶データを外部から不正に読出すことを困難にし、半導体メモリのコストの大幅な上昇を伴うことなく、記憶データの保護を図った、メモリ情報保護システム，メモリ情報の保護方法、および半導体メモリを提供することである。
【０００９】
この発明のさらに他の目的は、半導体メモリのセキュリティシステムの解析を困難にして、記憶データの機密保護の強化を図った、メモリ情報保護システム，メモリ情報の保護方法、および半導体メモリを提供することである。
【課題を解決するための手段】
【００１０】
請求項１に係る発明は、情報処理装置（実施例との対応関係を示せば、図１の１０；以下、カッコ内の説明は同様）と情報処理装置に対して着脱自在に装着される半導体メモリ（２０）とから構成されるメモリ情報保護システム（１）であって、半導体メモリがデータ記憶手段（２１）と，第１の入出力端子部（２２）と，メモリ制御手段（２３）と，暗号鍵元データ記憶部（２４）と，復号鍵データ記憶手段（２５）とを備え、情報処理装置が第２の処理手段（ＣＰＵ１１）と，一時記憶手段（１２）と，入出力端子部（１３）と，暗号生成データ記憶手段（１４）と，暗号生成データ記憶手段（１５）と，暗号化手段（１６）とを備える。
【００１１】
半導体メモリに含まれるデータ記憶手段は、保護すべきプログラムを含むデータを記憶し、情報処理装置によってアクセスされる。第１の入出力端子部は、情報処理装置から命令コードならびにアドレスデータからなるコマンドが与えられ、かつデータ記憶手段から読み出されたデータを情報処理装置に与える。暗号鍵元データ記憶部は、暗号化のための元になる暗号鍵元データを記憶する。復号鍵データ記憶手段は、情報処理装置に使用することが許容されたものであることを判断するために用いられる復号鍵となる復号鍵データを、情報処理装置からアクセスできない態様で記憶する。メモリ制御手段は、情報処理装置から与えられる暗号化コマンドを、復号鍵データを用いて復号する復号手段を含む。
【００１２】
情報処理装置に含まれる第２の入出力端子部は、半導体メモリの第１の入出力端子部が接続され、命令コードならびにアドレスデータからなるコマンドを出力し、かつ半導体メモリから読み出されたデータが入力される。処理手段は、半導体メモリから読み出されたデータを処理し、かつ半導体メモリに与えるコマンドを発生する。暗号生成データ記憶手段は、復号鍵データに関連する暗号鍵データを生成するための暗号生成データを記憶する。暗号鍵データ生成手段は、暗号鍵元データ記憶部から読み出された暗号鍵元データと暗号生成データとに基づいて暗号鍵データを生成する。一時記憶手段は、暗号鍵データ生成手段によって生成された暗号鍵データを一時記憶する。暗号化手段は、処理手段によって発生されるコマンドを、暗号鍵データを用いて暗号化した暗号化コマンドを生成し、当該暗号化コマンドを第２の入出力端子部へ出力する。
【００１３】
メモリ制御手段は、復号手段によって復号されたコマンドを用いてデータ記憶手段に記憶されているデータを読出し制御する。
【００１４】
請求項２に係る発明は、請求項１のシステムにおいて、暗号鍵データ生成手段が、暗号鍵元データを用いかつ暗号生成データに基づいて復号鍵データと所定の関係を有する暗号鍵データを生成することを特徴とする。
【００１５】
請求項３に係る発明は、請求項１または請求項２のシステムにおいて、暗号鍵データ記憶手段が、暗号鍵元データよりも十倍以上長い暗号鍵データを記憶することを特徴とする。
【００１６】
請求項４に係る発明は、請求項１ないし請求項３のいずれかのシステムにおいて、暗号鍵データ生成手段および暗号化手段は処理手段によって兼用される。処理手段は、暗号鍵元データと暗号生成データとを演算処理して暗号鍵データを求めて一時記憶手段に書込み、当該暗号鍵データを用いてコマンドを暗号化した暗号化コマンドを出力することを特徴とする。
【００１７】
請求項５に係る発明は、請求項１のシステムにおいて、暗号生成データ記憶手段が、情報処理装置の外部から第２の入出力端子部を介してアクセスできないメモリ空間として配置されることを特徴とする。
【００１８】
請求項６に係る発明は、請求項１ないし請求項５のいずれかのシステムにおいて、復号鍵データ記憶手段は、暗号鍵元データ記憶部に記憶されている暗号鍵の元になる暗号鍵元データとペアとなる復号鍵データを記憶することを特徴とする。
【００１９】
請求項７に係る発明は、請求項１のシステムにおいて、暗号鍵元データ記憶部に記憶されている暗号鍵元データと復号鍵データ記憶手段に記憶されている復号鍵データとは、データ記憶手段に記憶されるプログラムの種類によって異なるペアの鍵データに選ばれることを特徴とする。
【００２０】
請求項８に係る発明は、請求項１ないし請求項７のいずれかのシステムにおいて、処理手段が、暗号化手段によって所望の量の暗号化コマンドが出力された後、一時記憶手段に記憶されている暗号鍵データを消去することを特徴とする。
【００２１】
請求項９に係る発明は、ＣＰＵを含む情報処理装置と、情報処理装置に対して着脱自在に装着される半導体メモリとから構成される情報処理システムにおけるメモリ情報の保護方法であって、半導体メモリがデータ記憶手段と，第１の入出力端子部と，暗号鍵元データ記憶部と，復号鍵データ記憶手段と，メモリ制御手段とを備え、ＣＰＵが第１のステップないし第４のステップを実行する。
【００２２】
半導体メモリに含まれるデータ記憶手段は、保護すべきプログラムを含むデータを記憶する。第１の入出力端子部は、命令ならびにアドレスデータからなるコマンドが情報処理装置から与えられ、かつ保護データ記憶手段から読み出されたデータを情報処理装置に与える。暗号鍵元データ記憶部は、暗号化のための元になる暗号鍵元データを記憶する。復号鍵データ記憶手段は、情報処理装置に使用することが許容されたものであることを確認するために用いられる復号鍵データを、情報処理装置によってアクセスできない態様で記憶する。メモリ制御手段は、情報処理装置から与えられる暗号化コマンドを、復号鍵データを用いて復号する復号手段を含む。
【００２３】
情報処理装置の含まれる第２の入出力端子部は、半導体メモリの第１の入出力端子部が接続され、命令ならびにアドレスデータからなるコマンドを出力しかつ半導体メモリから読み出されたデータが入力される。処理手段は、半導体メモリから読み出されたデータを処理し、かつ半導体メモリに与えるコマンドを発生する。暗号鍵生成プログラム記憶手段は、暗号鍵元データを用いて復号鍵データに関連する暗号鍵データを生成するための暗号鍵データ生成プログラムを記憶する。一時記憶手段は、暗号鍵データを一時記憶する。
【００２４】
ＣＰＵは、暗号鍵元データを用いかつ暗号鍵生成プログラムに基づいて暗号鍵データを生成する第１のステップ（暗号鍵データ生成ステップ）と、第１のステップにおいて生成された暗号鍵データを、一時記憶手段に一時記憶させる第２のステップ（書き込みステップ）と、処理手段によって発生されるコマンドを、暗号鍵データを用いて暗号化した暗号化コマンドを発生し、第２の入出力端子部へ出力する第３のステップ（暗号化ステップ）とを順次実行する。
【００２５】
メモリ制御手段は、復号鍵データを用いてコマンドを復号する第４のステップと、第４のステップにおいて復号したコマンドが読出コードであるとき、当該コマンドに含まれるアドレスデータをデータ記憶手段に与えて、データ記憶手段のデータを読み出す第５のステップを順次実行する。
【００２６】
請求項１０に係る発明は、請求項９の方法において、第１のステップが、暗号鍵元データを用いかつ暗号鍵データ生成プログラムに基づいて復号鍵データと同じ暗号鍵データを生成するステップを含み、第３のステップが、メモリ制御手段が復号する復号鍵データと同じ暗号鍵データで暗号化するステップを含むことを特徴とする。
【００２７】
請求項１１に係る発明は、暗号鍵データを用いて命令コードならびにアドレスデータからなる暗号化コマンドを発生するための情報処理装置に対して、着脱自在に装着される半導体メモリであって、データ記憶手段と，復号鍵データ記憶手段と，暗号鍵元データ記憶部と，復号化手段（２３ａ）と，読出手段（２３ｂ）とを備える。
【００２８】
データ記憶手段は、情報処理装置によってアクセス可能なメモリ空間に割り当てられ、保護すべきプログラムを含むデータを記憶する。復号鍵データ記憶手段は、情報処理装置によってアクセスできないメモリ空間に割り当てられ、情報処理装置から供給される暗号化コマンドの復号化に必要な復号鍵データを記憶する。暗号鍵元データ記憶部は、情報処理装置によってアクセス可能な空間に割り当てら、復号鍵データに関連しかつ情報処理装置が暗号鍵データを生成するために用いる暗号鍵元データを記憶する。復号化手段は、情報処理装置から供給される暗号化コマンドを、復号鍵データを用いて復号化する。読出手段は、復号化手段によって復号されたコマンドに含まれる命令コードが読出命令コードであることを判断したとき、読出信号をデータ記憶手段に与えるとともに、当該コマンドに含まれるアドレスデータを読出アドレスとしてデータ記憶手段に与えることにより、データ記憶手段の記憶データを読出制御する。
【００２９】
請求項１２に係る発明は、請求項１１の半導体メモリにおいて、暗号鍵元データ記憶部に記憶される暗号鍵元データと復号鍵データ記憶手段に記憶される復号鍵データとが、データ記憶手段に記憶されるプログラムの種類によって、異なるペアに選ばれることを特徴とする。
【００３０】
請求項１３に係る発明は、請求項１１の半導体メモリにおいて、復号鍵データ記憶手段に記憶される復号鍵データが、暗号鍵元データよりも十倍以上長いデータ長さに選ばれることを特徴とする。
【発明の効果】
【００３１】
請求項１、請求項９または請求項１１に記載の発明によれば、情報処理装置が、半導体メモリから読み出した情報に応じて生成した暗号鍵データを利用して、半導体メモリとの通信を行うため、常に同一の暗号鍵データを使用する場合や、暗号鍵データ情報そのものを情報処理装置と半導体メモリの間で送受信する場合に比べて、セキュリティシステムの解析を困難なものとし、データの不正な読み出しを有効に防止することができる、メモリ情報保護システム、メモリ情報の保護方法および半導体メモリが得られる。
【００３２】
請求項２または請求項１０に記載の発明によれば、暗号鍵元データに応じて、暗号鍵データを生成するため、例え暗号鍵元データを読み取られても、暗号鍵データを取得されることはない。
【００３３】
請求項３または請求項１３に記載の発明によれば、情報処理装置では半導体メモリからデータ容量の小さい暗号鍵元データのみを受信しながら、データ長の長い暗号鍵データを生成して利用することができるため、暗号鍵データの解析を困難なものとし、データの不正な読み出しを有効に防止することができる。
【００３４】
請求項４に記載の発明によれば、一の処理手段によって、暗号鍵データ生成手段および暗号化手段の動作を実現するため、それぞれが独立している場合に比べて、簡単な構成でメモリ情報保護システムを実現することができる。
【００３５】
請求項５に記載の発明によれば、暗号化および復号化に必要な情報を外部から読み出せないようにすることで、セキュリティシステムの解析を困難なものとすることができる。
【００３６】
請求項６、請求項７、または請求項１２に記載の発明によれば、半導体メモリごとに、異なる暗号鍵元データと復号鍵データとから成るペアを利用することで、全ての半導体メモリに同一の暗号鍵データを利用する場合に比べて、暗号鍵データの解析を困難なものとすることができる。
【００３７】
請求項８に記載の発明によれば、暗号鍵データを利用後に消去するため、暗号鍵データの解析を困難なものとすることができる。
【発明を実施するための最良の形態】
【００３８】
（メモリ情報保護システムの構成）
図１は、この発明の一実施形態に係るメモリ情報保護システムを示すブロック図である。図１において、メモリ情報保護システム１は、情報処理装置１０と半導体メモリ２０とから構成される。先ず、メモリ情報保護システム１の概要を説明すると、メモリ情報保護システム１は、半導体メモリ２０の記憶内容を、所定の情報処理装置１０以外の装置から不正に読み出されることを防止することを目的とする。そのため、情報処理装置１０は、半導体メモリ２０の記憶データを読み出す際に、半導体メモリ２０に供給すべき命令コードならびにアドレスデータからなるコマンドを、暗号鍵データによって暗号化した暗号化コマンドを発生し、当該暗号コマンドを半導体メモリ２０に与える。半導体メモリ２０は、情報処理装置１０から供給される暗号化コマンドを復号鍵データによって復号して元のコマンドを抽出し、復号後のコマンドが所定のコマンド（読出命令コードと読出アドレスからなる読出コマンド）である場合にのみ、読出信号と読出アドレスに従って、半導体メモリ２０内のコアメモリ（後述のデータ記憶部２１）に記憶されているデータを読み出す。
【００３９】
ここで、暗号化および復号化には所定の関係を有する鍵データ（例えば、共通の暗号鍵データと復号鍵データ）を用いる必要がある。しかし、半導体メモリ２０内に暗号鍵データを記憶しておき、その暗号鍵データを半導体メモリ２０から読み出して情報処理装置１０に与えるように構成すると、暗号鍵データが不正に読み出されて解析されてしまう。そこで、本発明のメモリ情報保護システム１では、半導体メモリ２０側に暗号鍵データを生成するための元（又は種）となる比較的短いデータ長の暗号鍵元データ（又は暗号鍵種データ）を記憶させておき、始めに暗号鍵元データを読み出し、情報処理装置１０において暗号鍵元データに基づいて比較的長いデータ長の暗号鍵データを生成する。そのため、暗号鍵元データと復号鍵データがペアとなるように選ばれる。このとき、情報処理装置１０によって生成される暗号鍵データが復号鍵データと所定の関係、例えば同一となるように選ばれる。
【００４０】
そして、半導体メモリ２０は、従来の汎用マスクＲＯＭに相等するメモリコア（図１のデータ記憶部２１）内に、機密保護されるべきデータとして、ソフトウェアプログラムやデータを記憶している。この半導体メモリ２０は、例えばカードやカートリッジのような態様で情報処理装置１０に脱着自在に装着される。この半導体メモリ２０に格納されたソフトウェアプログラムやデータを利用するための情報処理装置１０としては、パソコン、ＰＤＡ（Personal Digital Assistant）のような携帯情報端末装置や、画像処理装置が含まれる。その他にも、半導体メモリ２０内に格納されるプログラムがゲームプログラムの場合は、ビデオゲーム機や携帯ゲーム機等の各種ゲーム装置に適用される。次に、この発明の実施形態の詳細を説明する。
【００４１】
＜半導体メモリ＞
半導体メモリ２０は、データ記憶部（又はコアメモリ）２１と入出力端子２２の間にメモリ制御回路２３を設けるとともに、この実施形態固有の構成として、暗号鍵元データ記憶部２４と復号鍵データ記憶部２５から構成される。データ記憶部２１と入出力端子２２は、従来公知の汎用のメモリと同様である。データ記憶部２１は、マスクＲＯＭのような不揮発性メモリであって、機密保護又は不正読出からの保護の対象となるプログラムやデータ等を記憶している。このデータ記憶部２１は、マスクＲＯＭに限らず、フラッシュメモリ，ＥＰ−ＲＯＭ等でもよい。そして、データ記憶部２１は、情報処理装置１０からメモリ制御回路２３（すなわちコマンド判別・読出回路２３ｂ）を介してアクセス可能とされる。入出力端子２２は、後述の情報処理措置１０側の入出力端子１７と電気的に接続される端子であり、半導体メモリ２０と情報処理装置１０との間でのデータの授受を可能とする。この入出力端子２２は、コマンド入力端子とデータ出力端子を含むか、又はコマンド入力とデータ入力を共通の複数の端子（例えば８ビット）で時分割的に使用するようにしてもよい。
【００４２】
メモリ制御回路２３は、復号化回路（復号化手段）２３ａとコマンド判別・読出回路
２３ｂを含んで構成される。復号化回路２３ａは、情報処理装置１０から与えられる暗号化コマンドを、後述の復号鍵データ記憶部２５に記憶されている復号鍵データを用いて復号する。この復号化回路２３ａの具体的な回路構成としては、１つのデータ単位（例えば１バイト又は所定バイト）でビット演算する回路を用いて、暗号化とは逆の演算処理（復号処理）を行うものである。例えば、ビット演算を行う回路としては、論理演算回路（ＡＮＤ，ＯＲ，ＮＡＮＤ，イクスクルーシブＯＲ等）を用いて１つのデータ単位（例えば１バイト又は所定バイト）で複数ステップに渡って論理演算を行う回路がある。また、その他、コマンド復号回路として、ワンチップマイコンのような小規模のＣＰＵを用いて簡易な復号アルゴリズムの演算を行うものでもよい。復号化回路２３ａによって復号されたコマンドは、コマンド判別・読出回路２３ｂに入力されて実行される。
【００４３】
コマンド判別・読出回路２３ｂは、復号されたコマンドを判別して、当該コマンドの種類に応じた動作を行う機能を有する。具体的には、情報処理装置１０から供給されかつ復号化回路２３ａによって復号されたコマンドが暗号鍵元データの読出コマンドである場合は、暗号鍵元データ記憶部２４に読出信号と当該記憶部２４に割り当てられた読出アドレスを出力して、当該記憶部２４から暗号鍵元データを読み出させる。また、復号化回路２３ａから与えられたコマンドがデータ記憶部２１の読出コマンドの場合は、当該読出コマンドから読出命令コードと読出アドレスデータを抽出して、読出信号と読出アドレスデータをデータ記憶部２１に与えて、データ記憶部２１に記憶されているデータを読み出す。さらに、データ記憶部２１が書き込み読出し可能なメモリ（例えばフラッシュメモリ）であって、復号化回路２３ａから与えられたコマンドがデータ記憶部２１への書込コマンドの場合は、当該書込コマンドから書込命令コードと書込アドレスデータを抽出して、書込信号と書込アドレスデータをデータ記憶部２１に与えて、その後で情報処理装置１０から供給される書込データをデータ記憶部２１に書き込む。この場合は、コマンド判別・読出回路２３ｂは、コマンド判別・書込回路として働くことになる。
【００４４】
暗号鍵元データ記憶部２４は、情報処理装置１０によってコマンドを暗号化する場合の暗号鍵データを生成するための元（又は種）となる暗号鍵元データを記憶する記憶部であり、比較的短いデータ長さ（例えば数バイトから数十バイト）のデータを記憶する。この暗号鍵元データ記憶部２４には、半導体メモリ２０から見て外部機器である情報処理装置１０から直接アクセス可能なメモリ空間が割り当てられる。
【００４５】
復号鍵データ記憶部２５は、情報処理装置１０から半導体メモリ２０の記憶データを読み出す際に供給（又は入力）される暗号化コマンドを復号して、元のコマンドを得るための復号鍵データを記憶している。この復号鍵データ記憶部２５は、外部から直接アクセスすることができないメモリ空間に割り当てられ、復号化回路２３ａによってのみ読み出し可能に構成される。また、復号鍵データ記憶部２５に記憶される復号鍵データは、暗号鍵元データ記憶部２４に記憶されている暗号鍵元データとペアのデータであって、そのデータ長さが暗号鍵元データよりも十倍以上長く選ばれる。その理由は、暗号鍵元データとペアになるように定められた復号鍵データでなければ、情報処理装置１０から与えられる暗号化コマンドを復号できないようにして、データ記憶部２１の機密保護を確保するとともに、機密保護の強度を高めるためである。また、復号鍵データのデータ長さが暗号鍵元データのデータ長さよりも長く選ばれているのは、一般に鍵データ長さの長い方がセキュリティ強度を高くすることができるためである。一方、暗号鍵元データのデータ長さを長くして、そのまま暗号鍵データとして利用すると、半導体メモリ２０の外部から不正に暗号鍵データを取り出すことができ、セキュリティ強度の低下を招く。そのため、半導体メモリ２０の中に記憶している暗号鍵元データは暗号鍵データを生成するための元又は種となるデータ長さ（ワード長さ）の短いデータとし、たとえ暗号鍵元データを解析されても暗号鍵データを生成することを困難なものとしている。
【００４６】
上述の説明では、半導体メモリ２０に含まれる各回路部分は、１チップのメモリに集積化された場合を説明したが、この発明の技術思想はこのような実施形態に限定されるものではなく、データ記憶部２１を汎用のマスクＲＯＭ等で構成し、その他の回路部分を別の回路部品で構成しても良い。その場合でも、暗号化コマンドを用いているので、データ記憶部２１に記憶されているデータの機密保護が図れる。
【００４７】
半導体メモリ２０の製造段階において、暗号鍵元データ記憶部２４に格納する暗号鍵元データを変更することが可能である。そして、暗号鍵元データを変更すれば、これに対応する復号鍵データも変更されることとなる。そのため、例えば、データ記憶部２１に記憶されるプログラムやデータ等の種類ごとに、異なる暗号鍵元データと復号鍵データを用いれば、半導体メモリ２０と情報処理装置１０との間のデータのやりとりを観測して得たコマンドも、暗号鍵元データと復号鍵データのペアの鍵に関するデータが変化するので、第三者の解析を困難にし、半導体メモリ２０のセキュリティ強度を一層向上させることができる。
【００４８】
また、半導体メモリ２０は、本実施形態で説明する各種機能および動作の実現のために、従来製品と異なる複雑な構成や処理を必要としない。そのため、ＣＰＵを処理手段として利用する場合や、従来製品に比べて大幅なコストの上昇を伴うことがない。
【００４９】
＜情報処理装置＞
情報処理装置１０は、処理手段の一例のＣＰＵ１１を含む。ＣＰＵ１１には、一時記憶部１２及び入出力端子１３が接続されるとともに、この実施形態固有の回路部分として、暗号生成データ記憶部１４と暗号鍵データ生成部１５と暗号化回路１６とが接続される。一時記憶部１２は、データを書込み読出し可能なメモリ、例えばＲＡＭのような半導体メモリ又はハードディスク等が用いられる。この一時記憶部１２は、半導体メモリ２０から読み出された暗号鍵元データを記憶する記憶領域と、暗号鍵元データを用いて生成された暗号鍵データを記憶する記憶領域と、半導体メモリ２０のデータ記憶部２１から読み出されたデータ（例えばブロック単位のデータ）を記憶する読込データ記憶領域と、その他のワーキングデータの記憶領域とを含む。一時記憶部１２の各記憶領域は、情報処理装置１０の外部からデータ読出し可能なメモリ空間に割り当てられる。
【００５０】
入出力端子１３は、半導体メモリ２０の入出力端子２２と電気的に接続される接続端子又はコネクタであり、入出力端子２２の端子数と同じ端子数であって同じピン配置（又はピン間隔）に選ばれる。入出力端子１３には、ＣＰＵ１１のアドレスバスとデータバスが接続されるとともに、暗号化回路１６のコマンドバスが並列的に接続される。入出力端子１３は、好ましくは、アドレスバスとデータバス及び／又はコマンドバスを共用して端子数を少なくするために、所定ビット数の端子を用いてアドレスバス・データバスとコマンドバスを時分割的に使用しても良い。
【００５１】
暗号生成データ記憶部１４は、半導体メモリ２０の暗号鍵元データ記憶部２４から読み出された暗号鍵元データを用いて、暗号鍵データを生成するための暗号生成データを記憶している。暗号生成データ記憶部１４は、情報処理装置１０の外部からアクセスできないメモリ空間に割り当てられる。そして、暗号鍵データ生成部１５は、一時記憶部１２に記憶されている暗号鍵元データと暗号生成データ記憶部１４に記憶されている暗号生成データとを使って所定の演算処理を行うことにより、暗号鍵データを生成し、その暗号鍵データを一時記憶部１２の暗号鍵データ記憶領域へ書き込む。このようにして、暗号鍵元データよりも長いデータ長さの暗号鍵データが情報処理装置１０内で生成されて、一時記憶部１２に記憶されるので、半導体メモリ２０側に暗号鍵データを記憶させる場合に比べて、暗号鍵データの解析を困難にしている。ここで、暗号鍵データ生成部１５によって生成された暗号鍵データは、半導体メモリ２０側の復号鍵データと所定の関係を有するデータ（例えば同一のデータ）であり、一種の共通鍵となる。
【００５２】
ところで、前述のようにして生成された暗号鍵データは、ＣＰＵ１１が演算処理を実行してコマンドを発生し、半導体メモリ２０の記憶データを読み出す必要のある限り、一時記憶部１２の所定の記憶領域に記憶保持されるが、コマンドの出力を休止又は停止したとき等に、必要に応じて消去しても良い。暗号鍵データを適宜のタイミングで消去すれば、暗号鍵データを情報処理装置１０の外部から読み出される危険性を低減できる。例えば、データ記憶部２１からのデータの読み出しは、ある程度まとまった単数又は複数のブロック単位で読み出して、一時記憶部１２に格納させておき、そのブロックのデータを処理している間は半導体メモリ２０にアクセスしない場合であれば、その間に暗号鍵データを消去しておいても良い。そして、当該ブロックのプログラム処理が終了後、再び半導体メモリ２０のデータを読み出す場合は、先に読み出した暗号鍵元データを用いて再度暗号鍵データを生成すれば良い。このように、暗号鍵データが一時記憶部１２に記憶されている期間を短縮すれば、暗号鍵データを不正に読み出されることを防止できる。
【００５３】
暗号化回路１６は、一時記憶部１４から読み出された暗号鍵キーデータを利用して、ＣＰＵ１１から出力される半導体メモリ２０に供給するためのコマンドに所定の演算処理を施すことによって、暗号化コマンドを生成する。ここで、暗号化コマンドは、命令コードとアドレスデータとからなり、１つのコマンドが複数バイトで構成される。暗号化回路１６によって暗号化された暗号化コマンドは、入出力端子１３及び半導体メモリ２０側の入出力端子２２を介して復号化回路２３ａに供給される。すなわち、情報処理装置１０の暗号化回路１６と半導体メモリ２０側の復号化回路２３ａとは対応関係にあり、暗号化回路１６によって暗号化されたコマンドが、復号化回路２３ａによって同じ鍵データを用いて復号される。
【００５４】
言い換えれば、暗号鍵データ生成部１５が暗号鍵元データを用いて暗号生成データに第１段階の暗号化処理を行って暗号鍵データを作り、暗号化回路１６が暗号鍵データを用いてコマンドを暗号化する第２段階の暗号化処理を行っていると考えることもできる。
【００５５】
ところで、上述の実施態様では、暗号鍵データ生成部１５と暗号化回路１６をハードウェアウェアとしての回路で構成した場合を説明したが、暗号鍵データ生成部１５と暗号化回路１６の処理又は機能をプログラムによって実現し、そのプログラムをＣＰＵ１１に処理させることによって、ソフトウェア的に暗号鍵データの生成と、コマンドの暗号化を行わせても良い。
【００５６】
このように、情報処理装置１０が、暗号鍵データを固定的に持たず、半導体メモリ２０から読み出されたデータ長さの短い暗号鍵元データ（又は暗号鍵元データ）を用いて、暗号鍵データを生成しているため、外部から暗号鍵データを読み取ること、しいては解析が困難となり、結果として半導体メモリ２０の記憶データの機密保護を図ることができる。しかも、暗号鍵データの暗号生成に用いるデータは、外部からアクセスできない暗号生成データ記憶部１４に記憶されているので、たとえ暗号鍵元データを取得できても、暗号鍵データを生成することはできず、半導体メモリ２０の記憶データの機密性を確保できる。
【００５７】
＜メモリ情報保護システムの動作＞
図２および図３は、メモリ情報保護システム１の動作を説明するためのフローチャートである。図２および図３のフローチャートは、左側に情報処理装置１０の動作の流れ（ステップ１０１〜１１３）、右側に半導体メモリ２０の動作の流れ（ステップ２０１〜２１１）を示す。
【００５８】
但し、半導体メモリ２０は、ＣＰＵのような処理手段を含むものではなく、ハードウェアとしての回路による動作であるが、情報処理装置１０の動作の流れに対応させて便宜的にフローで示したものであることを指摘しておく。
【００５９】
次に、図１〜図３を参照して、メモリ情報保護システム１の具体的な動作示を説明する。
【００６０】
予め、半導体メモリ２０が情報処理装置１０に装着されて、それぞれの入出力端子１３と入出力端子２２が電気的に接続される。そして、情報処理装置１０の電源が投入されると、情報処理装置１０が起動するとともに、電源が半導体メモリ２０に供給されて、システムとしての動作が開始する。
【００６１】
まず、ステップ（図２では「Ｓ」と略記する）１０１において、ＣＰＵ１１が暗号鍵元データ記憶部２４の読出コマンド（読出命令コードと読出アドレスデータを含むコマンド）を発生して、半導体メモリ２０に与える。このときの読出コマンドは、暗号化されていないままである。これに応じて、コマンド判別・読出回路２３ｂは供給されたコマンドが暗号鍵元データ記憶部２４の読出コマンドであることを判別し、当該記憶部２４に対して読出信号と読出アドレスデータを与える（ステップ２０１）。暗号鍵元データ記憶部２４は、暗号鍵元データを読み出して、情報処理装置１０へ与える（ステップ２０２）。
【００６２】
ＣＰＵ１１は、ステップ１０２において暗号鍵元データの入力のあったことを判断すると、ステップ１０３において入力された暗号鍵元データを一時記憶部１２の暗号鍵元データ記憶領域に書き込み、一時記憶させる。ステップ１０４において、ＣＰＵ１１は暗号鍵元データと暗号生成データ記憶部１４に記憶されている暗号生成データとに基づいて、演算処理を行って、暗号鍵データを生成する。ステップ１０５において、生成された暗号鍵データが一時記憶部１２の暗号鍵データ記憶領域に書き込まれ、一時記憶される。
【００６３】
続いて、ステップ１０６において、ＣＰＵ１１は半導体メモリ２０へ供給すべきコマンドを発生する。ステップ１０７において、ＣＰＵ１１は一時記憶部１２に記憶されている暗号鍵データを用いて当該コマンド（元コマンドともいう）を暗号化する（又は暗号化回路１６が暗号鍵データを用いてコマンドを暗号化する）。ステップ１０８において、暗号化コマンドが出力されて、半導体メモリ２０に供給される。そして、ＣＰＵ１１は、ステップ１０９において、半導体メモリ２０からの読出データがあるまで待機する。
【００６４】
半導体メモリ２０は、暗号化コマンドの入力に応じて以下の動作を行う（但し、フローチャートに示す判断ステップの部分は、説明の便宜のために記載したもので、実際にはソフト処理ではなく、ハード的に処理するものである）。すなわち、暗号化コマンドの入力のあることに応じて（ステップ２０３）、復号化回路２３ａは復号鍵データを用いて暗号化コマンドを復号する（ステップ２０４）。コマンド判別・読出回路２３ｂは復号後のコマンドを判別する（ステップ２０５）。復号後のコマンドが読出コマンドであるとき（ステップ２０６）、コマンド判別・読出回路２３ｂは読出コマンドから読出命令コードと読出アドレスデータを抽出し、読出信号と読出アドレスデータをデータ記憶部２１に与える（ステップ２０７）。これに応じて、データ記憶部２１は、指定された読出アドレスに記憶しているデータを読み出す。ここで、データ記憶部２１の読出制御方法は、情報処理装置１０から１番地毎に読出コマンドを与える方法と、ブロック単位の読出コマンド（例えば、ブロック番号毎又はブロック番号Ｎ番〜Ｍ番等）を与える方法がある。この実施例では、ブロック単位の読出しを説明する。その場合は、読出コマンドに含まれる読出アドレスとして、ブロック番号（当該ブロックの先頭番地；上位ビットでブロックを指定）が与えられることになる。そのため、指定されたブロック番号に対応する記憶領域の各番地に記憶されているデータが、データ記憶部２１から順次読み出される。
【００６５】
一方、ＣＰＵ１１は、ステップ１０９において半導体メモリ２０の読出データのあることを判断し、ステップ１１０において当該読出データを一時記憶部１２に記憶させる。そして、ステップ１１１において、指定したデータ長さのデータ読み出しがあったか否かが判断され、指定したデータ長さのデータ読み出しが終了するまでステップ１０９から１１１の処理が繰り返される。その結果として、指定した全てのデータが読み出されて、一時記憶部１２に記憶される。その後、ステップ１１２において、半導体メモリ２０のデータ読出しが終了したか否か、言い換えれば必要なデータ量のメモリ読出しが終了したか否かが判断され、終了していなければステップ１０９へ戻り、終了すればステップ１１３へ進む。ステップ１１３において、一時記憶部１２に記憶されている暗号鍵データが消去される。その後、ＣＰＵ１１は、半導体メモリ２０から読み出したデータに基づいて、当該データの本来的な使用目的のための処理を行う。
【００６６】
なお、上述の半導体メモリ２０側の読出コマンドか否かの判別（ステップ２０６）において読出コマンドでなく、読出コマンド以外のコマンドであり、かつメモリ制御に関連する本来的なコマンドであれば（ステップ２０９）、本来的なコマンドに基づく処理又は動作が行われる（ステップ２１０）。一方、本来的なコマンドでもない場合（ステップ２０９）は、動作を停止する（ステップ２１１）。これによって、不正な読出し等のためのコマンドが与えられた場合は、動作を停止し、データ記憶部２１のデータ読み出しを禁止し、データの機密保護を図ることができる。
【００６７】
ところで、暗号鍵データを消去した後に、再度半導体メモリ２０の記憶データの読出しを再開する必要が生じた場合は、上述のステップ１０４へ戻って、暗号鍵データの生成処理を行い、それ以降の処理を繰り返すことになる。なお、暗号鍵データの不正読出しのリスクを考慮しないのであれば、上述のステップ１１３の処理を省略しても良い。
【図面の簡単な説明】
【００６８】
【図１】この発明の一の実施の形態に係るメモリ情報保護システムを示す図である。
【図２】この発明の一の実施の形態に係るメモリ情報保護システムの動作を示すフローチャートである。
【図３】この発明の一の実施の形態に係るメモリ情報保護システムの動作を示すフローチャートである。
【符号の説明】
【００６９】
１    メモリ情報保護システム
１０    情報処理装置
１１    ＣＰＵ
１２    一時記憶部
１３    入出力端子
１４    暗号生成データ記憶部
１５    暗号鍵データ生成部
１６    暗号化回路
２０    情報半導体メモリ
２１    データ記憶部
２２    入出力端子
２３    メモリ制御回路
２３ａ  復号回路
２３ｂ  コマンド判別・読出回路
２４    暗号鍵元データ記憶部
２５    復号鍵データ記憶部
【図１】
2006146608.tif 000003
【図２】
2006146608.tif 000004
【図３】
2006146608.tif 000005