(57)【要約】【課題】メモリ上のデータのセキュリティを簡単に向上させる。【解決手段】スクランブル鍵バッファ６１の内部のレジスタの下位のｐビットには、LSBを１とする固定値が設定されている。スクランブル鍵バッファ６１は、乱数出力器から供給されたｎ−pビットの疑似乱数をレジスタの上位のｎ−ｐビットに設定し、下位の固定値と合わせてｎビットのスクランブル鍵を生成する。アドレスバススクランブル回路５２は、スクランブル鍵を用いて、CPUによりデータの書き込みまたは読み出しが指令された論理アドレスにスクランブルをかけ、実際にメモリにデータを書き込んだり読み込んだりする物理アドレスに変換する。本発明は、リーダライタに適用することができる。【選択図】図４
2008027327.tif 000002
【特許請求の範囲】
【請求項１】
下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成するスクランブル鍵生成手段と、
前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する物理アドレスを割り当てる割り当て手段と
を含むメモリアクセス制御装置。
【請求項２】
前記スクランブル鍵生成手段は、前記固定値を全て１からなるビット列とする
請求項１に記載のメモリアクセス制御装置。
【請求項３】
前記乱数または疑似乱数を生成する乱数生成手段を
さらに含む請求項１に記載のメモリアクセス制御装置。
【請求項４】
前記乱数生成手段は、Gold系列の疑似乱数を生成する
請求項３に記載のメモリアクセス制御装置。
【請求項５】
前記乱数生成手段は、生成した乱数または疑似乱数が所定の値と等しい場合、新たな乱数または疑似乱数を生成する
請求項３に記載のメモリアクセス制御装置。
【請求項６】
下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成し、
前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する物理アドレスを割り当てる
ステップを含むメモリアクセス制御方法。
【請求項７】
非接触ICカード機能を有する装置と通信を行う通信装置において、
下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成するスクランブル鍵生成手段と、
前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する、前記非接触ICカード機能を有する装置から読み出したデータを格納する物理アドレスを割り当てる割り当て手段と
を含む通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御装置および方法、並びに、通信装置に関し、特に、メモリ上のデータのセキュリティを簡単に向上させるようにしたメモリアクセス制御装置および方法、並びに、通信装置に関する。
【背景技術】
【０００２】
従来、CPU(Central Processing Unit)などのプロセッサによりアクセスが指示された論理アドレスにスクランブルをかけ、実際にメモリにアクセスする物理アドレスを割り当てることにより、メモリ上のデータの解析や改ざんを困難にすることが提案されている（例えば、特許文献１参照）。
【０００３】
【特許文献１】特表２００３−５００７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、データの盗聴や改ざんの手口がより巧妙になっている近年においては、特許文献１に記載されている手法に加えて、メモリ上のデータのセキュリティをさらに向上させることが望まれている。
【０００５】
本発明は、このような状況に鑑みてなされたものであり、メモリ上のデータのセキュリティを簡単に向上させるようにするものである。
【課題を解決するための手段】
【０００６】
本発明の第１の側面のメモリアクセス制御装置は、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成するスクランブル鍵生成手段と、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対して、実際にメモリにアクセスする物理アドレスを割り当てる割り当て手段とが設けられている。
【０００７】
前記スクランブル鍵生成手段には、前記固定値を全て１からなるビット列とさせることができる。
【０００８】
前記乱数または疑似乱数を生成する乱数生成手段をさらに設けることができる。
【０００９】
前記乱数生成手段には、Gold系列の疑似乱数を生成させることができる。
【００１０】
前記乱数生成手段には、生成した乱数または疑似乱数が所定の値と等しい場合、新たな乱数または疑似乱数を生成させることができる。
【００１１】
本発明の第１の側面のメモリアクセス制御方法は、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成し、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する物理アドレスを割り当てるステップを含む。
【００１２】
本発明の第２の側面の通信装置は、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成するスクランブル鍵生成手段と、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する、前記非接触ICカード機能を有する装置から読み出したデータを格納する物理アドレスを割り当てる割り当て手段とが設けられている。
【００１３】
本発明の第１の側面においては、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵が生成され、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する物理アドレスが割り当てられる。
【００１４】
本発明の第２の側面においては、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵が生成され、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する、前記非接触ICカード機能を有する装置から読み出したデータが格納される。
【発明の効果】
【００１５】
本発明の第１の側面または第２の側面によれば、メモリ上のデータの解析および改ざんを困難にすることができる。また、本発明の第１の側面または第２の側面によれば、メモリ上のデータのセキュリティを簡単に向上させることができる。
【発明を実施するための最良の形態】
【００１６】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１７】
本発明の第１の側面のメモリアクセス制御装置（例えば、図２のバススクランブル器４３）は、第１に、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成するスクランブル鍵生成手段例えば、図２のスクランブル鍵バッファ６１）と、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する物理アドレスを割り当てる割り当て手段（例えば、図２のメモリ３３）とを備える。
【００１８】
本発明の第１の側面のメモリアクセス制御装置は、第２に、前記スクランブル鍵としての乱数または疑似乱数を生成する乱数生成手段（例えば、図３の乱数生成器１０１）をさらに備える。
【００１９】
本発明の第１の側面のメモリアクセス制御方法は、下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成し（例えば、図６のステップＳ２または図９のステップＳ１０５）、前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する物理アドレスを割り当てる（例えば、図７のステップＳ３８またはＳ４１）ステップを含む。
【００２０】
本発明の第２の側面の通信装置（例えば、図１のリーダライタ１）は、非接触ICカード機能を有する装置（例えば、図１のICカード２）と通信を行う通信装置であって、  下位の所定の桁数のビットをLSB（Less Significant Bit）の値が１である固定値とし、残りの桁数のビットを乱数または疑似乱数とする２進数のスクランブル鍵を生成するスクランブル鍵生成手段（例えば、図２のスクランブル鍵バッファ６１）と、
前記スクランブル鍵を用いて、論理アドレスにスクランブルをかけることにより、前記論理アドレスに対する、前記非接触ICカード機能を有する装置から読み出したデータを格納する物理アドレスを割り当てる割り当て手段（例えば、図２のアドレスバススクランブル回路５２）とを備える。
【００２１】
以下、図を参照して、本発明の実施の形態について説明する。
【００２２】
図１は、本発明を適用したリーダライタの一実施の形態を示すブロック図である。本発明を適用したリーダライタ１は、アンテナ１１、RFドライブ基板１２、および、制御モジュール１３を含むように構成される。
【００２３】
RFドライブ基板１２は、アンテナ１１を介して、非接触式のICカード２との間で、単一の周波数の搬送波を使用した、電磁誘導による近接通信を行う。RFドライブ基板１２が使用する搬送波の周波数としては、例えば、ISM（Industrial Scientific Medical）バンドの13.56MHzなどを採用することができる。また、近接通信とは、通信する装置どうしの距離が、数10cm以内となって可能となる通信を意味し、通信する装置（の筐体）同士が接触して行う通信も含まれる。
【００２４】
制御モジュール１３は、ICカード２を利用したサービスを実現するための処理を実行し、適宜、サービスで使用されるデータを、アンテナ１１およびRFドライブ基板１２を介して、ICカード２に書き込んだり、ICカード２から読み出したりする。また、制御モジュール１３は、複数の種類のサービスの処理を並行して実行することが可能である。すなわち、例えば、電子マネーサービス、プリペイドカードサービス、各種の交通機関の乗車カードサービスなど、非接触式のICカードを利用した複数のサービスを、１台のリーダライタ１により提供することができる。
【００２５】
図２は、図１の制御モジュール１３の機能的構成を示すブロック図である。制御モジュール１３は、CPU３１、メモリアクセス制御部３２、メモリ３３、および、リセット回路３４を含むように構成される。また、メモリアクセス制御部３２は、スクランブル鍵変更指令器４１、乱数出力器４２、および、バススクランブル器４３を含むように構成される。さらに、バススクランブル器４３は、スクランブル鍵保持部５１、および、アドレスバススクランブル回路５２を含むように構成される。また、スクランブル鍵保持部５１は、スクランブル鍵バッファ６１、および、内部メモリ６２を含むように構成される。
【００２６】
CPU３１とアドレスバススクランブル回路５２とは、バス幅がｎビットのアドレスバス３５を介して相互に接続され、アドレスバススクランブル回路５２とメモリ３３とは、アドレスバス３５と同じｎビットのバス幅のアドレスバス３６を介して相互に接続されている。また、CPU３１とメモリ３３は、バス幅がmビットのデータバス３７を介して、相互に接続されている。
【００２７】
CPU３１は、所定のプログラムを実行することにより、ICカード２を利用したサービスを実現するための処理を実行する。また、CPU３１は、各サービスに対応したプログラムを並行して実行することができる。換言すれば、CPU３１は、複数のサービスの処理を並行して実行することができる。
【００２８】
CPU３１は、各サービスで使用するデータを、メモリ３３に書き込んだり、メモリ３３から読み出したりする。CPU３１は、メモリ３３にデータを書き込む場合、データの論理的な書き込み位置を表す論理アドレスを示す論理アドレス信号を、アドレスバス３５を介してアドレスバススクランブル回路５２に供給するとともに、書き込むデータを含み、データの書き込みの指令を示す書き込み信号を、データバス３７を介してメモリ３３に供給する。また、CPU３１は、メモリ３３からデータを読み出す場合、データの論理的な読み出し位置を表す論理アドレスを示す論理アドレス信号を、アドレスバス３５を介してアドレスバススクランブル回路５２に供給するとともに、データの読み出しの指令を示す読み出し信号を、データバス３７を介してメモリ３３に供給する。
【００２９】
メモリアクセス制御部３２は、CPU３１のメモリ３３へのアクセスを制御する。
【００３０】
メモリアクセス制御部３２に含まれる個々の構成要素のうち、スクランブル鍵変更指令器４１は、例えば、ボタン、スイッチなどにより構成される。スクランブル鍵保持部５１に保持されているスクランブル鍵を変更する場合、例えば、ユーザが、スクランブル鍵変更指令器４１を介して、スクランブル鍵の変更の指令を入力する。
【００３１】
乱数出力器４２は、スクランブル鍵変更指令器４１からスクランブル鍵の変更の指令を示す信号が供給された場合、ｎ−pビットのビット列からなる疑似乱数を生成し、生成した疑似乱数をスクランブル鍵としてスクランブル鍵バッファ６１に出力する。
【００３２】
バススクランブル器４３は、CPU３１から供給される論理アドレス信号により示される論理アドレスを、メモリ３３に実際にアクセスする物理アドレスに変換する処理を行う。
【００３３】
バススクランブル器４３に含まれる個々の構成要素のうち、スクランブル鍵保持部５１は、乱数出力器４２から供給された疑似乱数を用いて、スクランブル鍵を生成し、生成したスクランブル鍵を保持する。具体的には、スクランブル鍵保持部５１のスクランブル鍵バッファ６１は、乱数出力器４２から供給された疑似乱数を用いて、スクランブル鍵を生成し、生成したスクランブル鍵を保持するととともに、内部メモリ６２に供給し、記憶させる。内部メモリ６２は、フラッシュメモリなどの不揮発性メモリ、または、電池などによりバックアップされたRAM(Random Access Memory)などにより構成され、制御モジュール１３の電源がオフされた状態においても、スクランブル鍵を保持し続ける。また、スクランブル鍵バッファ６１は、制御モジュール１３の電源がオフされた状態からオンされた場合、内部メモリ６２に記憶されているスクランブル鍵を読み出し、保持する。さらに、スクランブル鍵バッファ６１は、制御モジュール１３の電源がオンされてから、内部メモリ６２からのスクランブル鍵の読み出しが完了するまでの間、リセット指令信号をリセット回路３４に供給する。
【００３４】
アドレスバススクランブル回路５２は、スクランブル鍵バッファ６１に保持されているスクランブル鍵を用いて、CPU３１から供給された論理アドレス信号により示される論理アドレスにスクランブルをかけることにより、論理アドレスを実際にメモリ３３にアクセスする物理アドレスに変換する。換言すれば、アドレススバスクランブル回路５２は、入力された論理アドレスにスクランブルをかけることにより、その論理アドレスに対して、物理アドレスを割り当てる。アドレスバススクランブル回路５２は、アドレスバス３６を介して、変換後の物理アドレスを示す物理アドレス信号をメモリ３３に供給する。
【００３５】
メモリ３３は、例えば、フラッシュメモリ、EEPROM（Electrically Erasable and Programmable Read Only Memory）、HDD（Hard Disk Drive）、MRAM（Magnetoresistive Random Access Memory，磁気抵抗メモリ）、FeRAM（Ferroelectric Random Access Memory，強誘電体メモリ）、または、OUM（Ovonic Unified Memory）などの不揮発性のメモリにより構成される。メモリ３３は、CPU３１から書き込み信号が供給された場合、アドレスバススクランブル回路５２から供給された物理アドレス信号により示されるメモリ３３上の物理アドレスに、書き込み信号に含まれるデータを書き込む。また、メモリ３３は、CPU３１から読み出し信号が供給された場合、アドレスバススクランブル回路５２から供給された物理アドレス信号により示されるメモリ３３上の物理アドレスからデータを読み出し、読み出したデータを、データバス３７を介して、CPU３１に供給する。
【００３６】
リセット回路３４は、スクランブル鍵バッファ６１からリセット指令信号が供給されている間、CPU３１にリセット信号を供給し、CPU３１の状態を初期化する。
【００３７】
図３は、乱数出力器４２の機能的構成を示すブロック図である。乱数出力器４２は、乱数生成器１０１、および、スイッチ１０２を含むように構成される。
【００３８】
乱数生成器１０１は、Ｌ１ビットのシフトレジスタを有するLFSR(Linear Feedback Shift Register，リニアフィードバックシフトレジスタ)型乱数発生器１１１、Ｌ２ビットのシフトレジスタを有するLFSR型乱数発生器１１２、および、EXOR回路１１３を含むように構成される。
【００３９】
LFSR型乱数発生器１１１，１１２は、シフトレジスタの所定のビットの値の排他的論理和をフィードバック値としてシフトレジスタに入力する周知のLFSRの原理により構成される。乱数生成器１０１は、LFSR型乱数発生器１１１，１１２により生成される２つの異なるM系列の疑似乱数の排他的論理和をEXOR回路１１３によりビット毎に取ることにより、Gold系列の疑似乱数を生成する。なお、乱数生成器１０１が備えるLFSR型乱数発生器１１１，１１２の個数は、２個に限定されるものではなく、３個以上とすることも可能である。
【００４０】
スイッチ１０２は、スクランブル鍵変更指令器４１からスクランブル鍵の変更の指令を示す信号が入力された場合、オンとなり、乱数生成器１０１により生成されたGold系列の疑似乱数を示すビット列が、スイッチ１０２を介してスクランブル鍵バッファ６１に出力される。
【００４１】
図４は、バススクランブル器４３の機能的構成の詳細を示すブロック図である。
【００４２】
スクランブル鍵バッファ６１は、シリアル入力およびパラレル入出力のｎビットのシフトレジスタなどにより構成される。図６に示されるように、スクランブル鍵バッファ６１の内部のレジスタのうち、ビットK1からKpまでの下位のpビットの値は固定値とされ、残りのビットKp+1からKnまでの上位のｎ−pビットに、乱数出力器４２からシリアル信号により供給された疑似乱数が設定される。すなわち、スクランブル鍵バッファ６１は、下位の所定のp桁のビットを固定値とし、残りのｎ−p桁のビットを疑似乱数とする２進数のスクランブル鍵を生成し、保持する。なお、pビットの固定値のLSB（Less Significant Bit）の値は必ず１に設定される。すなわち、スクランブル鍵のLSBには、必ず１が設定される。
【００４３】
アドレスバススクランブル回路５２は、アドレスバス３５を介してCPU３１から供給される論理アドレス信号により示されるビットA1乃至Anからなるnビットの論理アドレスと、スクランブル鍵バッファ６１に保持されているビットK1乃至Knからなるnビットのスクランブル鍵との排他的論理和を、EXOR回路１５１−１乃至１５１−ｎによりビット毎に取ることにより、論理アドレスをビットSA1乃至SAnからなるｎビットの物理アドレスに変換する。アドレスバススクランブル回路５２は、アドレスバス３６を介して、変換後の物理アドレスを示す物理アドレス信号をメモリ３３に供給する。
【００４４】
次に、図６および図７を参照して、リーダライタ１の処理を説明する。
【００４５】
まず、図６のフローチャートを参照して、リーダライタ１により実行されるスクランブル鍵生成処理について説明する。なお、この処理は、例えば、リーダライタ１の電源がオンになっている場合に、ユーザが、スクランブル鍵変更指令器４１を介して、スクランブル鍵の変更の指令を入力したとき開始される。
【００４６】
ステップＳ１において、乱数出力器４２は、疑似乱数を出力する。具体的には、スクランブル鍵変更指令器４１は、スクランブル鍵の変更の指令を示す信号をスイッチ１０２に供給し、スイッチ１０２をオンさせる。乱数生成器１０１は、リーダライタ１の電源がオンになっている間、常に疑似乱数を生成しており、スイッチ１０２がオンされることにより、スイッチ１０２を介して、乱数生成器１０１からスクランブル鍵バッファ６１への疑似乱数の出力が開始される。スイッチ１０２は、乱数生成器１０１から疑似乱数がｎ−pビット出力されたとき、オフとなる。
【００４７】
ステップＳ２において、バススクランブル器４３は、スクランブル鍵を設定し、スクランブル鍵生成処理は終了する。具体的には、スクランブル鍵バッファ６１は、乱数出力器４２から供給されたｎ−pビットのビット列からなる疑似乱数を、内部のレジスタの上位のｎ−pビットに設定する。これにより、下位のpビットの固定値と上位のｎ−pビットの疑似乱数からなるｎビットのスクランブル鍵が生成される。スクランブル鍵バッファ６１は、生成したスクランブル鍵を内部のレジスタに保持するとともに、内部メモリ６２に供給し、記憶させる。すなわち、スクランブル鍵が内部メモリ６２にバックアップされる。
【００４８】
これにより、簡単に、各制御モジュール１３に対して、それぞれ値が異なり、かつ、予測が困難なスクランブル鍵を設定することができる。なお、このスクランブル鍵設定処理は、例えば、リーダライタ１を工場から出荷する前に行われる。
【００４９】
次に、図７のフローチャートを参照して、リーダライタ１により実行されるメモリアクセス制御処理を説明する。なお、この処理は、例えば、リーダライタ１の電源がオンされたとき開始される。
【００５０】
ステップＳ３１において、スクランブル鍵バッファ６１は、リーダライタ１の電源がオンされ、制御モジュール１３の電源がオンされることにより、リセット回路３４へのリセット指令信号の供給を開始する。
【００５１】
ステップＳ３２において、リセット回路３４は、CPU３１へのリセット信号の供給を開始し、CPU３１をリセットする。これにより、CPU３１の状態が初期化される。
【００５２】
ステップＳ３３において、スクランブル鍵バッファ６１は、内部メモリ６２に保持されているスクランブル鍵を読み出す。スクランブル鍵バッファ６１は、読み出したスクランブル鍵を内部のレジスタに保持する。
【００５３】
ステップＳ３４において、スクランブル鍵バッファ６１は、リセット回路３４へのリセット指令信号の供給を停止する。これに伴い、リセット回路３４は、CPU３１へのリセット信号の供給を停止し、CPU３１は、プログラムの実行を開始する。
【００５４】
ステップＳ３５において、CPU３１は、データを書き込むかを判定する。CPU３１は、実行中のプログラムにおいて、次の処理がデータの書き込みを行う処理でない場合、データを書き込まないと判定し、処理はステップＳ３６に進む。
【００５５】
ステップＳ３６において、CPU３１は、データを読み出すかを判定する。CPU３１は、実行中のプログラムにおいて、次の処理がデータの読み出しを行う処理でない場合、データを読み出さないと判定し、処理はステップＳ３５に戻る。
【００５６】
その後、ステップＳ３５において、データを書き込むと判定されるか、ステップＳ３６においてデータを読み出すと判定されるまで、ステップＳ３５およびＳ３６の処理が繰り返し実行される。
【００５７】
ステップＳ３５において、CPU３１は、実行中のプログラムにおいて、次の処理がデータの書き込みを行う処理である場合、データを書き込むと判定し、処理はステップＳ３７に進む。
【００５８】
ステップＳ３７において、CPU３１は、データの書き込みを指令する。具体的には、CPU３１は、データの論理的な書き込み位置を表す論理アドレスを示す論理アドレス信号を、アドレスバス３５を介してアドレスバススクランブル回路５２に供給するとともに、書き込むデータを含み、データの書き込みの指令を示す書き込み信号を、データバス３７を介してメモリ３３に供給する。
【００５９】
ステップＳ３８において、アドレスバススクランブル回路５２は、論理アドレスを物理アドレスに変換する。具体的には、アドレスバススクランブル回路５２は、論理アドレス信号により示される論理アドレスとスクランブル鍵バッファ６１に保持されているスクランブル鍵との排他的論理和をビット毎に取り、論理アドレスにスクランブルをかけることにより、論理アドレスを物理アドレスに変換する。アドレスバススクランブル回路５２は、変換後の物理アドレスを示す物理アドレス信号を、アドレスバス３６を介してメモリ３３に供給する。
【００６０】
ステップＳ３９において、メモリ３３は、データを書き込む。具体的には、メモリ３３は、物理アドレス信号に示されるメモリ３３上の物理アドレスに、CPU３１から供給された書き込み信号に含まれるデータを書き込む。これにより、CPU３１から連続した論理アドレスへのデータの書き込みが指令されても、実際には、ランダムに配置されるようにメモリ３３にデータが書き込まれるため、メモリ３３に格納されているデータの内容を解析したり、改ざんしたりすることが困難となる。
【００６１】
また、もし、スクランブル鍵の下位ビットに０が連続している場合、０が連続しているビットに対応する論理アドレスの下位ビットが、そのまま変換されずに物理アドレスに割り当てられる。従って、メモリ３３上において、その下位ビットが変換されなかった範囲にわたって、論理アドレスと同じ並びでデータが配列されてしまう。例えば、スクランブル鍵の下位３ビットに０が連続した場合、論理アドレスの下位の３ビットがそのまま変換されずに物理アドレスに割り当てられ、メモリ３３上において、その下位ビットが変換されなかった８アドレスの範囲にわたって、論理アドレスと同じ並びでデータが配列されてしまう。これにより、データが解析される可能性が高くなる。一方、上述したように、スクランブル鍵バッファ６１に保持されているスクランブル鍵のLSBの値は１に固定されており、論理アドレスのLSBに必ずスクランブルが施される。従って、メモリ３３上において、論理アドレスと同じ並びでデータが配列されることが防止され、より確実にデータの解析を困難にすることができる。
【００６２】
なお、スクランブル鍵の固定値を全て１からなるビット列とすることにより、確実にデータ列を細かくスクランブルして配置することができ、データの解析をより困難にすることができる。
【００６３】
その後、処理はステップＳ３５に戻り、ステップＳ３５以降の処理が実行される。
【００６４】
ステップＳ３６において、CPU３１は、実行中のプログラムにおいて、次の処理がデータの読み出しを行う処理である場合、データを読み出すと判定し、処理はステップＳ４０に進む。
【００６５】
ステップＳ４０において、CPU３１は、データの読み出しを指令する。具体的には、CPU３１は、データの論理的な読み出し位置を表す論理アドレスを示す論理アドレス信号を、アドレスバス３５を介してアドレスバススクランブル回路５２に供給するとともに、データの読み出しの指令を示す読み出し信号を、データバス３７を介してメモリ３３に供給する。
【００６６】
ステップＳ４１において、上述したステップＳ３８の処理と同様に、論理アドレスが物理アドレスに変換され、変換後の物理アドレスを示す物理アドレス信号が、アドレスバス３６を介して、アドレスバススクランブル回路５２からメモリ３３に供給される。
【００６７】
ステップＳ４２において、メモリ３３は、データを読み出す。具体的には、メモリ３３は、物理アドレス信号により示される物理アドレスに記憶されているデータを読み出し、読み出したデータを、データバス３７を介して、CPU３１に供給する。
【００６８】
その後、処理はステップＳ３５に戻り、ステップＳ３５以降の処理が実行される。
【００６９】
以上のように、各制御モジュール１３に異なるスクランブル鍵を簡単に設定することができるため、たとえ、１台の制御モジュール１３に設定されているスクランブル鍵が解析されたとしても、そのスクランブル鍵を用いて、他の制御モジュール１３のメモリ３３に記憶されているデータの解析や改ざんをすることができない。従って、データの流出や改ざんの被害を最小限に抑えることができる。
【００７０】
また、疑似乱数の生成方法およびアドレスのスクランブル方法については、従来の技術をそのまま使用することができ、新たに複雑な回路を設ける必要がなく、スクランブル鍵の変更の指令を入力する以外にユーザの手間も増えないため、簡単にメモリ３３上のデータのセキュリティを向上させることができる。
【００７１】
また、上述したように、メモリ３３上において、論理アドレスと同じ並びでデータが配置されることが防止され、より確実にデータの解析を困難にすることができる。
【００７２】
次に、図８および図９を参照して、乱数出力器４２の第２の実施の形態について説明する。
【００７３】
図８は、乱数出力器４２の第２の実施の形態の機能的構成を示すブロック図である。図８の乱数出力器４２は、乱数生成器１０１、ビット列検査器２０１、スイッチ２０２、ｎ−pビットのシフトレジスタにより構成される乱数格納器２０３、および、スイッチ２０４を含むように構成される。なお、図中、図３と対応する部分については、同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので省略する。
【００７４】
ビット列検査器２０１は、スクランブル鍵変更指令器４１からスクランブル鍵の変更の指令を示す信号を取得する。ビット列検査器２０１は、スクランブル鍵変更指令器４１からスクランブル鍵の変更の指令を信号が供給された場合、スイッチ２０２をオンにする。これにより、乱数生成器１０１により生成されたGold系列の疑似乱数を示すビット列が、スイッチ２０２を介して、乱数生成器１０１から乱数格納器２０３に供給され、格納される。
【００７５】
また、ビット列検査器２０１は、乱数格納器２０３に格納された疑似乱数が、所定の禁止されている値と一致するかを検査する。乱数格納器２０３に格納された疑似乱数が、禁止されている値と一致する場合、ビット列検査器２０１は、スイッチ２０２をオンにし、所定のビット数の疑似乱数を、乱数生成器１０１から乱数格納器２０３に出力させ、乱数格納器２０３に格納されている疑似乱数の値を変更させる。ビット列検査器２０１は、乱数格納器２０３に格納されている疑似乱数が、禁止されている値と一致しない場合、スイッチ２０４をオンにする。これにより、乱数格納器２０３に格納されているｎ−pビットのビット列からなる疑似乱数が、スイッチ２０４を介して、スクランブル鍵バッファ６１に出力される。すなわち、ビット列検査器２０１は、乱数生成器１０１により生成された疑似乱数が所定の禁止された値と等しい場合、乱数生成器１０１に新たな乱数を生成させ、禁止された値と異なる乱数をスクランブル鍵バッファ６１に出力するように制御する。
【００７６】
次に、図９のフローチャートを参照して、図８の乱数出力器４２がリーダライタ１に設けられた場合に、図６のフローチャートの代わりにリーダライタ１により実行されるスクランブル鍵生成処理について説明する。なお、この処理は、例えば、リーダライタ１の電源がオンになっている場合に、ユーザが、スクランブル鍵変更指令器４１を介して、スクランブル鍵の変更の指令を入力したとき開始される。
【００７７】
ステップＳ１０１において、乱数出力器４２は、疑似乱数を生成する。具体的には、スクランブル鍵変更指令器４１は、スクランブル鍵の変更の指令示す信号をビット列検査器２０１に供給する。ビット列検査器２０１は、スイッチ２０２をオンにする。乱数生成器１０１は、リーダライタ１の電源がオンになっている間、常に疑似乱数を生成しており、スイッチ２０２がオンされることにより、スイッチ２０２を介して、乱数生成器１０１から乱数格納器２０３への疑似乱数の出力が開始される。ビット列検査器２０１は、乱数生成器１０１から疑似乱数がｎ−pビット出力されたとき、スイッチ２０２をオフにする。
【００７８】
ステップＳ１０２において、ビット列検査器２０１は、疑似乱数が禁止されている値であるかを判定する。例えば、ユーザは、111・・・111のように同じ値が連続するビット列、0101・・・0101、および、1010・・・101のように異なる値が１つずつ交互に繰り返されるビット列など、他の値と比べて容易に推測される可能性のある値を、スクランブル鍵としての使用を禁止する値として予めビット列検査器２０１に設定しておく。ビット列検査器２０１は、それらの禁止された値からスクランブル鍵の下位の固定値を除いた値と、乱数格納器２０３に格納されている疑似乱数が一致する場合、疑似乱数が禁止されている値であると判定し、処理はステップＳ１０３に進む。
【００７９】
ステップＳ１０３において、ビット列検査器２０１は、新たな疑似乱数を生成する。具体的には、ビット列検査器２０１は、スイッチ２０２をオンにし、所定のビット数の疑似乱数を、乱数生成器１０１から乱数格納器２０３に出力させる。乱数格納器２０３は、格納されているビット列を、新たに入力された疑似乱数のビット数だけ上位方向にシフトし、ビット列の末尾に入力された疑似乱数を付加する。すなわち、乱数生成器１０１により生成された新たな疑似乱数が、乱数格納器２０３に格納される。
【００８０】
その後、処理はステップＳ１０２に戻り、ステップＳ１０２において、疑似乱数が禁止されている値でないと判定されるまで、ステップＳ１０２およびＳ１０３の処理が繰り返し実行される。
【００８１】
ステップＳ１０２において、疑似乱数が禁止されている値でないと判定された場合、処理はステップＳ１０４に進む。
【００８２】
ステップＳ１０４において、乱数出力器４２は、疑似乱数を出力する。具体的には、ビット列検査器２０１は、スイッチ２０４をオンにする。これにより、乱数格納器２０３に格納されている疑似乱数が、スイッチ２０４を介して、スクランブル鍵バッファ６１に出力される。
【００８３】
ステップＳ１０５において、上述した図６のステップＳ２の処理と同様に、スクランブル鍵が設定され、スクランブル鍵生成処理は終了する。
【００８４】
このように、スクランブル鍵に推測が容易な値が設定されることが防止されるため、メモリ３３に記憶されているデータの解析および改ざんが困難となり、メモリ３３上のデータのセキュリティが向上する。また、例えば、メモリ３３を交換したり、初期化したタイミングで、スクランブル鍵を変更するようにすることにより、スクランブル鍵の解析をより困難にすることができる。
【００８５】
なお、以上の説明では、Gold系列の疑似乱数をスクランブル鍵に用いる例を示したが、スクランブル鍵に用いる乱数または疑似乱数は上述した例に限定されるものではなく、例えば、LFSRを１個だけ備えたM系列の疑似乱数を用いたり、熱雑音を利用した物理乱数を用いるようにしてもよい。
【００８６】
また、アドレスにスクランブルをかける方法も上述した例に限定されるものではなく、乱数または疑似乱数により設定されたスクランブル鍵を用いた他の方法を適用するようにしてもよい。
【００８７】
さらに、以上の説明では、リーダライタ１と通信する相手としてICカード２を例に挙げたが、もちろん、リーダライタ１は、非接触ICカード機能を有する装置、例えば、非接触ICカード機能を有する携帯電話機、携帯情報端末（Personal Digital Assistants）、時計、コンピュータなどと通信することが可能である。
【００８８】
また、図２のメモリアクセス制御部３２を、リーダライタ以外の、メモリのデータを読み書きする他の装置に適用することも可能である。
【００８９】
さらに、図８の乱数出力器４２においては、上述した、スクランブル鍵として推測が容易な値の出力を禁止する以外に、用途に応じて、出力を禁止する値を任意に設定することが可能である。
【００９０】
また、以上の説明では、図２のメモリ３３を不揮発性のメモリとする例を示したが、揮発性のメモリに対して、メモリアクセス制御部４２を用いることももちろん可能である。
【００９１】
さらに、スクランブル鍵の固定値のLSB以外の値をユーザが設定できるようにしてもよい。
【００９２】
また、スクランブル鍵の固定値以外の可変値を、ユーザが設定できるようにしてもよい。
【００９３】
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００９４】
【図１】本発明を適用したリーダライタの一実施の形態を示すブロック図である。
【図２】図１の制御モジュールの機能的構成を示すブロック図である。
【図３】図２の乱数出力器の機能的構成を示すブロック図である。
【図４】図２のバススクランブル器の機能的構成の詳細を示すブロック図である。
【図５】図２のスクランブル鍵バッファの内部のレジスタの値の配列を説明するための図である。
【図６】図１のリーダライタにより実行されるスクランブル鍵生成処理を説明するためのフローチャートである。
【図７】図１のリーダライタにより実行されるメモリアクセス制御処理を説明するためのフローチャートである。
【図８】図２の乱数出力器の第２の実施の形態の機能的構成を示すブロック図である。
【図９】図８の乱数出力器を備えた場合の図１のリーダライタにより実行されるスクランブル鍵生成処理を説明するためのフローチャートである。
【符号の説明】
【００９５】
１  リーダライタ，  ２  ICカード，  １３  制御モジュール，  ３１  CPU，  ３２  メモリアクセス制御部，  ３３  メモリ，  ４１  スクランブル鍵変更指令器，  ４２  乱数出力器，  ４３  バススクランブル器，  ５１  スクランブル鍵保持部，  ５２  アドレスバススクランブル回路，  ６１  スクランブル鍵バッファ，  ６２  内部メモリ，  １０１  乱数生成器，  １０２  スイッチ，  ２０１  ビット列検査器，  ２０２  スイッチ，  ２０３  乱数格納器，  ２０４  スイッチ
【図１】
2008027327.tif 000003
【図２】
2008027327.tif 000004
【図３】
2008027327.tif 000005
【図４】
2008027327.tif 000006
【図５】
2008027327.tif 000007
【図６】
2008027327.tif 000008
【図７】
2008027327.tif 000009
【図８】
2008027327.tif 000010
【図９】
2008027327.tif 000011