説明

データ処理装置、データ処理プログラム、データ処理プログラムが格納された記録媒体およびデータ処理方法

【課題】不正に乱数を改竄することが困難なデータ処理装置を提供する。
【解決手段】データ処理装置は、与えられた初期データが初期データ履歴22と等しいとの判断に応じて、初期データとは異なる値を内部状態25に書き込む乱数初期化部21と、乱数履歴31の統計量を検査するための乱数検査部27と、所定時間経過するまで内部状態25を繰り返し更新した後に、乱数生成部24に対し更新した内部状態をもとに演算した結果を出力するよう制御するための乱数制御部28と、乱数生成部24の動作回数が所定の値と一致していないとの判断に応じて、乱数生成部24に対し乱数の出力を中止するよう制御するためのデータ処理制御部30とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、乱数の改竄を防止する技術に関する。
【背景技術】
【0002】
近年の情報通信技術の発達により、インターネットや携帯電話などにおける通信、携帯型端末における音楽再生、IC(Integrated Circuit)カードによる電子マネーなど、様々な分野で暗号技術が用いられている。これらの暗号技術では、安全性の根幹をなす暗号鍵の生成に乱数が利用されている。また、機器の認証、さらには、パチンコ等の娯楽機器の確率制御にも乱数が用いられている。
【0003】
暗号鍵が乱数を用いて生成されている場合、乱数が改竄されるということは、暗号鍵が改竄されることと等価である。たとえば、著作権保護を目的とした暗号であれば、著作物の不正利用を防止するため、正規の利用者に対しても著作物を暗号化する鍵(以下、「コンテンツ鍵」と呼ぶ。)を秘匿しておく必要がある。この場合、コンテンツ鍵を機器とやり取りする際には別の暗号鍵でコンテンツ鍵が暗号化される。しかしながら、暗号鍵が改竄され、攻撃者に漏洩してしまうと、コンテンツ鍵も漏洩してしまい、暗号化した著作物が解読される可能性がある。また、通信の秘匿を目的とした暗号の場合、たとえば、攻撃者がコンピュータウイルス・ワームを用いるなどしてユーザが利用している通信プログラムの乱数生成部を改竄し、暗号鍵が攻撃者の意図したものに改竄されてしまうことがある。このような場合は、暗号通信を行なったとしても、通信を傍受している攻撃者に対して通信内容が漏洩してしまう可能性がある。
【0004】
機器の認証では、生成した乱数を相手に送り、送った乱数に対して相手が暗号化等の変換をした結果を受け取り、その結果が正しいか否かで、相手の認証を行なうことが一般的である。
【0005】
図10は、認証手順の一例を説明するための図である。
図10を参照して、機器の認証をする手順について説明する。機器Aと正規の機器Bは、秘密の関数fを共有している。まず、機器Aはある乱数rを生成し、機器Bに送る(ステップS100)。機器Bは、乱数rを受信すると(ステップS110)、機器Aと共有している秘密の関数fで乱数rを変換する(ステップS112)。次いで、乱数rの変換結果Rを機器Aに送信する(ステップS114)。一方、機器Aは、機器A自身でも乱数rを共有している関数fで変換する(ステップS102)。そして、受け取った変換結果Rと機器A自身が乱数rを変換した結果とを比較する(ステップS104)。この際、変換結果が一致していれば機器Bが正規の機器であると認証する。乱数rは認証のたびに変わるので、関数fを知らない不正な機器は正しい変換結果Rを機器Aに送信することができず、認証を通ることはできない。
【0006】
ここで、攻撃者によって機器Aで発生する乱数が改竄され、乱数rが常に同じ値にされてしまうと、認証の過程で送受信されるデータ(つまり、乱数rと変換結果R)は常に同じものになってしまう。この状態で、攻撃者が正規の機器Bから機器Aに送信される変換結果Rをあらかじめ傍受しておく。そして、不正な機器と機器Aとの認証過程で傍受しておいた変換結果Rを再送することによって、秘密の関数fを知らなくても不正な機器の認証を通過させてしまうことが可能になる。また、常に同じ値でなくても、変換結果Rとの関係が既知の乱数rになるように攻撃者が機器Aで発生する乱数を改竄したときも、同様に機器Aに対して不正な機器の認証を通過させてしまうことが可能になる。
【0007】
パチンコ等の娯楽機器では、乱数をもとに、決められた確率で当たりが発生するように機器を制御しているが、乱数を改竄することによって、不正に当たり確率を増減されてしまう可能性がある。また、発生させた乱数系列が既知であったり、過去の乱数系列から将来の乱数系列が予測可能であったりすれば、いつ当たりが出るかが分かってしまう可能性もある。
【0008】
このように、様々な分野で乱数が用いられているが、情報漏洩や不正を防止するためには、乱数は単に規則性がない数というだけではなく、予測困難で、かつ、攻撃者に乱数を改竄されたり、特定の値、系列になるように操作されないように、安全性を確保する必要がある。
【0009】
ここで、特許文献1には、不規則情報を生成し、それを鍵として暗号化を行なうことで予測困難な乱数を生成する技術について開示されている。
【0010】
また、特許文献2には、プログラムRAM(Random Access Memory)の書き込みを禁止し、内蔵ROM(Read Only Memory)が書き換えられていないかを走査することにより、プログラムが不正か否かを検出する技術が開示されている。
【特許文献1】特開2006−24140号公報
【特許文献2】特開平7−299203号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、特許文献1で開示されている技術では、どんなに予測困難な乱数を生成しても、攻撃者が乱数を生成する機器自体を改竄することにより、攻撃者にとって都合のよい乱数が生成されてしまうことがあった。
【0012】
また、特許文献2で開示されている技術では、ソフトウェアの場合、実行前にプログラムの改竄の有無をチェックしたとしても、実行中にプログラムやデータを改竄されると、攻撃者にとって都合のよい乱数が生成されてしまうことがあった。
【0013】
以上のように、攻撃者によって乱数生成手段自体が改竄されることにより、攻撃者に都合のよい乱数が生成されてしまい、安全にデータ処理を行なうことができなかった。
【0014】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、不正に乱数を改竄することが困難なデータ処理装置を提供することである。
【課題を解決するための手段】
【0015】
本発明の1つの局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記初期データを記憶するための初期データ記憶手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、前記乱数初期化手段は、前記初期データが前記初期データ記憶手段に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する。
【0016】
本発明の他の局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、前記乱数生成手段が出力した前記乱数を記憶するための乱数記憶手段と、前記乱数記憶手段に記憶された乱数履歴をもとに、前記乱数生成手段が出力した前記乱数の統計量を検査するための乱数検査手段と、前記乱数検査手段が前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える。
【0017】
本発明のさらに他の局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、前記乱数生成手段は、前記内部データをもとに演算した結果を新たな内部データとして更新し、前記乱数生成手段に対し、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するよう制御するための乱数制御手段をさらに備える。
【0018】
本発明のさらに他の局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、前記乱数生成手段の前記演算した回数を管理するための乱数生成回数管理手段と、前記回数が所定の値と一致していないとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える。
【0019】
本発明のさらに他の局面に従うと、演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記初期データを前記記憶部に記憶するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記擬似的な乱数を出力するステップは、前記初期データが前記記憶部に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する。
【0020】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【0021】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記初期データを記憶するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記擬似的な乱数を出力するステップは、前記初期データが記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する。
【0022】
本発明のさらに他の局面に従うと、演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記演算部は、前記出力した前記乱数を前記記憶部に記憶するステップと、前記演算部は、前記記憶部に記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、前記演算部は、前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【0023】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【0024】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記出力した前記乱数を記憶するステップと、前記記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【0025】
本発明のさらに他の局面に従うと、演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、前記演算部は、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える。
【0026】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【0027】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える。
【0028】
本発明のさらに他の局面に従うと、演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記演算部は、前記乱数を出力するステップで前記演算した回数を管理するステップと、前記演算部は、前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【0029】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【0030】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記乱数を出力するステップで前記演算した回数を管理するステップと、前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【発明の効果】
【0031】
本発明によれば、乱数を生成する際に外部からの改竄を困難とするようなデータ処理を行なう。これにより、安全にデータ処理を行なうことができる。
【発明を実施するための最良の形態】
【0032】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
【0033】
以下の説明で明らかになるように、本実施の形態に係るデータ処理装置によれば乱数を生成する際に外部からの改竄を困難とするようなデータ処理を行なう。これにより、安全にデータ処理を行なうことができる。
【0034】
本実施の形態に係るデータ処理装置における処理は、コンピュータ、ワークステーションなどのCPU(Central Processing Unit)上で実行されるソフトウェア(プログラムまたはデータ)によって実現される。なお、携帯電話などでデータ処理や通信制御などを行なうCPU上で実行されるソフトウェアにより実現されてもよいし、ICカードなどの専用のハードウェアとして実現されてもよい。
【0035】
(1.装置の構成)
図1は、本実施の形態に係るコンピュータ1のブロック構成図である。
【0036】
図1を参照して、コンピュータ1について説明する。コンピュータ1は、情報を表示するための液晶またはCRT(Cathode Ray Tube)などからなる表示装置10と、コンピュータ1に対する指示などの情報を外部から入力するために操作されるキー入力部4と、コンピュータ1自体を集中的に制御するためのCPU2と、ROMまたはRAMを含んで構成されるメモリ3と、固定ディスク5と、フレキシブルディスク(Flexible Disk、以下「FD」と呼ぶ。)7が着脱自在に装着されて、装着されたFD7をアクセスするFDドライブ6と、CD−ROM(Compact Disc Read Only Memory)9などが着脱自在に装着されて、装着されたCD−ROM9などにアクセスする光ディスクドライブ8と、通信インターフェイス(Interface、以下「I/F」と呼ぶ。)11とを備える。
【0037】
通信I/F11は、通信路12とコンピュータ1とを通信可能に接続する機能を有する。したがって、コンピュータ1は図示しない他のコンピュータと通信路12を介して相互にデータ通信できる。通信路12にはインターネットを含む各種ネットワークを適用できる。コンピュータ1では、CPU2によりデータ処理した結果は、表示装置10や通信I/F11から出力される。また、コンピュータ1には、カセット形式の磁気テープが着脱自在に装着されて磁気テープをアクセスする磁気テープ装置が設けられても良い。
【0038】
CD−ROM8は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、DVD−ROM(Digital Versatile Disc)やメモリーカードなどでもよく、その場合は、コンピュータ1には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。
【0039】
固定ディスク5内には、本発明に係るデータ処理プログラム等が格納される。なお、プログラムは、FD7、またはCD−ROM9等の記録媒体によって供給されてもよいし、他のコンピュータにより通信回線を経由して供給されてもよい。
【0040】
データ処理装置として機能するCPU2は、メモリ3をワーキングメモリとして、データ処理プログラムに則した処理を実行する。
【0041】
データ処理プログラムは、上述の通り、CPU2により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、CD−ROM9、FD7等の記憶媒体に格納されて流通し、光ディスクドライブ8またはFDドライブ6等により記憶媒体から読み取られて固定ディスク5に一旦格納される。または、コンピュータ1がネットワークに接続されている場合には、ネットワーク上のサーバから一旦固定ディスク5にコピーされる。そうしてさらに固定ディスク5からメモリ3中のRAMに読み出されてCPU2により実行される。なお、ネットワーク接続されている場合には、固定ディスク5に格納することなくRAMに直接ロードして実行するようにしてもよい。
【0042】
図1に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当たり本質的な部分は、FD7、CD−ROM9、固定ディスク5等の記憶媒体に記憶されたソフトウェアである。
【0043】
なお、一般的傾向として、コンピュータのオペレーティングシステムの一部として様々なプログラムモジュールを用意しておき、アプリケーションプログラムはこれらモジュールを所定の配列で必要なときに呼び出して処理を進める方式が一般的である。そうした場合、当該ソフトウェア自体にはそうしたモジュールは含まれず、当該コンピュータでオペレーティングシステムと協働してはじめて解析モデルの作成および電磁界解析が可能になる。しかし、一般的なプラットフォームを使用する限り、そうしたモジュールを含ませたソフトウェアを流通させる必要はなく、それらモジュールを含まないソフトウェア自体およびそれらソフトウェアを記録した記憶媒体(およびそれらソフトウェアがネットワーク上を流通する場合のデータ信号)が実施の形態を構成すると考えることができる。
【0044】
(2.機能的構成)
図2は、CPU2の機能的構成を示す機能ブロック図である。
【0045】
図2を参照して、データ処理装置として機能するためのCPU2の機能的構成について説明する。CPU2は、乱数初期化部21と、乱数生成部24と、乱数検査部27と、乱数制御部28と、データ処理部29と、データ処理制御部30とを備える。
【0046】
データ格納部20は、初期データ履歴22と、初期カウンタ変数を記憶するための初期化カウンタ23と、乱数生成部24の内部変数を記憶するための内部状態25と、乱数生成部24で計測したカウンタ変数を記憶するための乱数生成カウンタA26と、乱数制御部28で計測したカウンタ変数を記憶するための乱数生成カウンタB32と、生成した乱数を記録するための乱数履歴31とを格納する。なお、データ格納部20は、メモリ3や固定ディスク5に相当する。
【0047】
乱数初期化部21は、与えられる初期データをもとにして、乱数生成部24の内部状態25の内部変数を初期化し、初期データ履歴22に初期データを追加し、初期化カウンタ23の初期カウンタ変数を更新する。
【0048】
乱数生成部24は、内部状態25の内部変数を所定の演算により更新し、擬似的な乱数を生成して乱数履歴31に追加し、乱数生成カウンタA26を更新する。
【0049】
図3は、乱数生成処理を説明するための図である。
図3を参照して、乱数生成部24における乱数生成処理について具体的に説明する。ここで、ある時点(i−1)における内部状態25に記録される内部変数をyi−1、乱数生成部24によって生成される擬似的な乱数をx、更新後の内部状態25に記録される内部変数をyとする。
【0050】
図3に示すように、乱数生成部24は内部変数yi−1が入力されると、関数f,gを用いて次の式(1)および式(2)で表わされる演算を行なう。
【0051】
=f(yi−1) …式(1)
=g(yi−1) …式(2)
図4は、乱数生成部24での処理を繰り返し行なったときに出力される乱数と内部状態の遷移を示した模式図である。
【0052】
図4を参照して、乱数生成部24での処理を繰り返し行なったときに出力される乱数と内部状態の遷移について説明する。ここで、初期化処理後の内部状態25に記録される内部変数をyとする。
【0053】
図4に示すように、ある時点(i−1)における内部状態25に記録される内部変数yi−1から、乱数生成部24において実行される1回の乱数生成処理で1つの擬似的な乱数xが生成される。そして、内部状態25に新たに記録される値はyとなり、次の処理における内部変数となっている。また、x〜xは乱数履歴31に記録される値に対応している。
【0054】
乱数生成部24として、具体的には、合同法やLFSR(Linear Feedback Shift Resister:線形フィードバックシフトレジスタ)などを用いてもよいし、暗号化処理を組み合わせた乱数生成を用いてもよい。
【0055】
たとえば、合同法では、次の式(3)に従って乱数が生成される。ここで、a,b,mは定数、modは剰余演算を表わす。
【0056】
=y=ay−1+b mod m …式(3)
また、暗号化処理を組み合わせた乱数生成については、たとえば以下のような構成がある。
【0057】
図5は、組み合わされた暗号化処理の構成を示す図である。
図5を参照して、暗号化処理を組み合わせた乱数生成について説明する。ここで、Eは暗号化鍵Kに基づいて行なわれる暗号化処理、zi−1は時刻や装置の起動してからの経過時間などの処理する度に変化する値を表わす。
【0058】
図5に示すように、zi−1に対し、暗号化処理Eが行なわれる。そして、この結果と内部状態として入力されたyi−1との排他的論理和に対し暗号化処理Eが行なわれ、乱数xとして出力される。また、zi−1に対し暗号化処理Eを行なった結果と乱数xとの排他的論理和に対し、暗号化処理Eが行なわれ、内部状態としてyが出力される。
【0059】
以上で説明したように、乱数生成部24は、内部状態25に与えられる初期値に基づいて演算を繰り返すため、初期値ごとに同系列の乱数を出力する。つまり、乱数生成部24は、擬似的な乱数を生成する。
【0060】
図2に戻って、乱数検査部27は、生成した乱数が記録されている乱数履歴31に基づいて統計量が所定の範囲から逸脱していないかを検査する。なお、統計量の検査技術については米国情報処理設備調達基準FIPS(Federal Information Processing Standards)PUB−2で、0/1bitの割合、連続した4bitのbitパターンの分布、連の長さの割合、最長の連の長さが規定されているように、公知の技術である。
【0061】
乱数制御部28は、乱数生成部24と乱数検査部27の制御と乱数生成カウンタB32の更新を行なう。また、乱数生成カウンタA26のカウンタ変数値と乱数生成カウンタB32のカウンタ変数値とが一致してない場合、もしくは、乱数検査部27で検査した乱数が不合格であれば、データ処理制御部30にデータ処理の中止を通知する。
【0062】
データ処理部29では、暗号化、通信、認証、確率制御などのデータ処理を行なう。
データ処理制御部30では、乱数初期化部21、データ処理部29、乱数制御部28の制御を行なう。
【0063】
上述したように、乱数初期化部21、乱数生成部24、乱数検査部27、乱数制御部28、データ処理部29、データ処理制御部30等の機能は、CPU2がメモリ3または固定ディスク5に予め記憶されたプログラムを読出し実行することにより実現される。また、これらの機能を他のハードウェア等でそれぞれ構成して、組み合わせて実現してもよい。
【0064】
(3.本発明に係るデータ処理手順)
図6は、データ処理制御部30が行なう処理を示すフローチャートである。
【0065】
図6を参照して、データ処理制御部30が行なうデータ処理手順について説明する。なお、データ処理を行なうための準備として、各カウンタ変数は初期化されるものとする。また、上述したように以下で説明する処理はプログラムの関数として実装され、データ処理制御部30が関数呼び出しを行なうことで処理が実行される。
【0066】
まず、ステップS60にて、データ処理制御部30は、乱数初期化部21に対し乱数初期化処理を行なうよう指示する。なお、乱数初期化処理の内容については後述する。
【0067】
次いで、ステップS62にて、データ処理制御部30は、乱数制御部28に対し乱数出力処理を行なうよう指示する。なお、乱数出力処理の内容については後述する。
【0068】
そして、ステップS64にて、データ処理制御部30は、データ処理部29に対し暗号化、通信、認証、確率制御などのデータ処理を行なうよう指示する。
【0069】
さらに、ステップS66にて、データ処理制御部30は、データ処理を行なうデータの入力が終了したかどうかを判定する。データ入力が終了していないと判断すれば(ステップS66にてNO)、ステップS62の処理に戻る。一方、データ入力が終了していると判断すれば(ステップS66にてYES)、データ処理制御を終了する。
【0070】
また、図示はしていないが、ステップS62の乱数出力処理において、乱数制御部28によってデータ処理の中止が要求されたときもデータ処理制御部30はデータ処理を中止する。
【0071】
(3.1 乱数初期化処理)
図7は、乱数初期化処理について示すフローチャートである。
【0072】
図7を参照して、乱数初期化部21が行なう乱数初期化処理(図6のステップS60での処理)について詳しく説明する。
【0073】
まず、ステップS700にて、乱数初期化部21は、初期データの入力を受ける。初期データは、ユーザによって与えられてもよいし、メモリ3や固定ディスク5等の所定の領域に予め初期データとして記憶されているデータから読み込んでもよい。
【0074】
次いで、ステップS702にて、乱数初期化部21は、初期データ履歴22にステップS700で入力された初期データが存在するか(記録されているか)を判定する。記録されていないと判断すれば(ステップS702にてNO)、ステップS704にて、入力された初期データを初期データ履歴22に書き込む。一方、初期データ履歴22に記録されていると判断すれば(ステップS702にてYES)、ステップS706にて、初期データに初期化カウンタ23の値を加算する。
【0075】
続いて、ステップS708にて、乱数初期化部21は、乱数制御部28を介して乱数生成部24に対し内部状態25の初期化を行なうよう指示する。つまり、初期化カウンタ23のカウンタ変数を内部状態25の内部変数とする。
【0076】
そして、ステップS710にて、乱数初期化部21は、初期化カウンタ23のカウンタ変数値を1増やし、乱数初期化処理を終了する。
【0077】
上述したように乱数初期化処理では、初期データ履歴22を記録、参照し、同じ初期データに対しては初期化するたびに毎回増加する値を加算したものを初期データとして乱数生成部24の内部状態25を初期化する。これにより、毎回異なる値で乱数生成部24の内部状態25は初期化されるため、毎回異なる系列の乱数を発生させることができる。したがって、攻撃者が初期データを改竄し、同じ乱数系列を発生させることを防止することができる。また、ICカードのようなハードウェアで初期データが固定されている場合、攻撃者が不正にハードウェアにリセットをかけることで同じ乱数系列を発生させようとしても、カウンタ値を不揮発メモリに記憶するなどして、カウンタ値を初期化されないようにしておけば、毎回異なる値で乱数生成部24の内部状態25が初期化されるため、毎回異なる系列の乱数を発生させることができる。
【0078】
(3.2 乱数出力処理)
図8は、乱数出力処理について示すフローチャートである。
【0079】
図8を参照して、乱数制御部28が行なう乱数出力処理(図6のステップS62での処理)について詳しく説明する。
【0080】
まず、ステップS800にて、乱数制御部28は、乱数生成部24に対し、乱数生成処理を行なうよう指示する。なお、乱数生成処理については後述する。
【0081】
次いで、ステップS802にて、乱数制御部28は、乱数生成カウンタB32のカウンタ変数値を1増やす。
【0082】
続いて、ステップS804にて、乱数制御部28は、乱数出力処理を開始してから所定時間経過しているかどうか判定する。所定時間経過していないと判断すれば(ステップS804にて、NO)、ステップS800の処理に戻る。なお、ステップS62の乱数出力処理で出力される乱数は、ステップS800からステップS804で繰り返し行なわれる処理において生成された乱数のうち、最後の処理で生成された乱数のみである。
【0083】
そして、ステップS806にて、乱数制御部28は、乱数生成カウンタA26のカウンタ変数値と乱数生成カウンタB32のカウンタ変数値を比較する。カウンタ変数値が一致していないと判断すれば(ステップS806にてNO)、ステップS808にて、データ処理制御部30へのデータ処理中止要求を行なう。一方、カウンタ変数値が一致していると判断すれば(ステップS806にてYES)、ステップS810にて、乱数検査部27に対し乱数履歴31の統計量の検査を行なうよう指示し、検査結果が所定の範囲から逸脱しているかどうか判定する。乱数制御部28は、検査結果が所定の範囲から逸脱していると判断すれば(ステップS810にてNO)、ステップS808の処理に進む。一方、所定の範囲から逸脱していないと判断すれば(ステップS810にてYES)、乱数出力処理を終了する。
【0084】
上述したように乱数出力処理では、ステップS810において、乱数検査部27は、乱数履歴31を参照して過去に生成した乱数の統計量を検査する。これにより、攻撃者にとって都合のいい乱数を発生するように乱数生成部24が不正に改竄されていないかを検査することができる。したがって、攻撃者に処理手順を改竄されたときだけでなく、正規の手順で生成された乱数値のみを改竄されたときも検出することができるため、安全に処理が行なえなくなったデータ処理を停止することができる。
【0085】
さらに、乱数出力処理では、乱数制御部29は、所定時間だけ乱数生成を繰り返し、最後の処理で生成した乱数以外は出力しない。ここで、乱数制御部29を一定の時間だけ乱数を捨てるように設計したとしても、コンピュータ1のタイマーの精度、OS(Operating System)によるタスクの切り替えなど、様々な要因によって、実際に捨てられる乱数の数は一定にはならないことは一般的に知られている。このことから、たとえ同じ初期値で乱数生成部24の内部状態25を初期化したとしても、乱数制御部29では毎回異なる乱数が出力されることになる。このため、攻撃者が初期値が固定されるように処理手順やデータを改竄したり、意図的に乱数の初期化を繰り返し行なったりしたとしても、同じ乱数系列が生成されるのを防ぐことができる。
【0086】
(3.3 乱数生成処理)
図9は、乱数生成処理について示すフローチャートである。
【0087】
図9を参照して、乱数生成部24が行なう乱数生成処理(図8のステップS800での処理)について詳しく説明する。なお、以下で説明する処理は、上述したように乱数生成部24がプログラムの関数として実装され、乱数制御部28が関数呼び出しを行なうことで乱数が生成される。
【0088】
まず、ステップS90にて、乱数生成部24は、内部状態25の更新を行なう。内部状態25は、たとえば、前述したように関数演算を実行することで更新される。
【0089】
次いで、ステップS92にて、乱数生成部24は、乱数生成を行なう。たとえば、前述したように、内部状態25の内部変数を用いて関数演算を実行することで乱数生成を行なう。
【0090】
そして、ステップS94にて、乱数生成部24は、乱数履歴31に生成した乱数を書き込む。
【0091】
さらに、ステップS96にて、乱数生成部24は、乱数生成カウンタA26のカウンタ変数値を1増やし、乱数生成処理を終了する。
【0092】
上述したように乱数生成処理では、乱数生成カウンタA26のカウンタ変数値を更新する。
【0093】
一般的に、プログラムの内部を改竄して特定の値のみを制御するのは容易ではない。これに対し、関数呼び出しをスキップするのは、乱数を生成していると思われる箇所(関数)およびそれを呼び出している命令(たとえば、call命令など)が分かれば比較的容易にできる。
【0094】
たとえば、ステップS800の乱数生成処理(関数呼び出し)をスキップし、固定、もしくは攻撃者にとって都合のいい値が生成されるように乱数制御部28の一部が改竄されることが考えられる。ステップS800の乱数生成処理をスキップすると乱数生成カウンタA26のカウンタ変数値は更新されない。
【0095】
この場合、図8のフローチャートで示した乱数出力処理のステップS806において、乱数生成カウンタA26のカウンタ変数値と乱数生成カウンタB32のカウンタ変数値とを比較すると、これらのカウンタ変数値は一致しない。これにより、乱数生成処理がスキップされた(改竄された)ことが分かる。
【0096】
このように、乱数生成カウンタA26のカウンタ変数値と乱数生成カウンタB32のカウンタ変数値とが一致しているかどうかを判定することにより、攻撃者による改竄を検知することができ、安全に処理が行なえなくなったデータ処理を停止することができる。
【0097】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0098】
【図1】本実施の形態に係るコンピュータ1のブロック構成図である。
【図2】CPU2の機能的構成を示す機能ブロック図である。
【図3】乱数生成処理を説明するための図である。
【図4】乱数生成部24での処理を繰り返し行なったときに出力される乱数と内部状態の遷移を示した模式図である。
【図5】組み合わされた暗号化処理の構成を示す図である。
【図6】データ処理制御部30が行なう処理を示すフローチャートである。
【図7】乱数初期化処理について示すフローチャートである。
【図8】乱数出力処理について示すフローチャートである。
【図9】乱数生成処理について示すフローチャートである。
【図10】認証手順の一例を説明するための図である。
【符号の説明】
【0099】
1 コンピュータ、2 CPU、3 メモリ、4 キー入力部、5 固定ディスク、6 FDドライブ、7 フレキシブルディスク、8 光ディスクドライブ、9 CD−ROM、10 表示装置、11 通信インターフェイス、12 通信路、20 データ格納部、21 乱数初期化部、22 初期データ履歴、23 初期化カウンタ、24 乱数生成部、25 内部状態、26 乱数生成カウンタA、27 乱数検査部、28 乱数制御部、29 データ処理部、30 データ処理制御部、31 乱数履歴、32 乱数生成カウンタB。

【特許請求の範囲】
【請求項1】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記初期データを記憶するための初期データ記憶手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、
前記乱数初期化手段は、前記初期データが前記初期データ記憶手段に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する、データ処理装置。
【請求項2】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、
前記乱数生成手段が出力した前記乱数を記憶するための乱数記憶手段と、
前記乱数記憶手段に記憶された乱数履歴をもとに、前記乱数生成手段が出力した前記乱数の統計量を検査するための乱数検査手段と、
前記乱数検査手段が前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える、データ処理装置。
【請求項3】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、
前記乱数生成手段は、前記内部データをもとに演算した結果を新たな内部データとして更新し、
前記乱数生成手段に対し、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するよう制御するための乱数制御手段をさらに備える、データ処理装置。
【請求項4】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、
前記乱数生成手段の前記演算した回数を管理するための乱数生成回数管理手段と、
前記回数が所定の値と一致していないとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える、データ処理装置。
【請求項5】
演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記初期データを前記記憶部に記憶するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記擬似的な乱数を出力するステップは、前記初期データが前記記憶部に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する、データ処理プログラム。
【請求項6】
請求項5記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項7】
与えられた初期データを内部データとして設定するステップと、
前記初期データを記憶するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記擬似的な乱数を出力するステップは、前記初期データが記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する、データ処理方法。
【請求項8】
演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記演算部は、前記出力した前記乱数を前記記憶部に記憶するステップと、
前記演算部は、前記記憶部に記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、
前記演算部は、前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理プログラム。
【請求項9】
請求項8記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項10】
与えられた初期データを内部データとして設定するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記出力した前記乱数を記憶するステップと、
前記記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、
前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理方法。
【請求項11】
演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、
前記演算部は、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える、データ処理プログラム。
【請求項12】
請求項11記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項13】
与えられた初期データを内部データとして設定するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、
所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える、データ処理方法。
【請求項14】
演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記演算部は、前記乱数を出力するステップで前記演算した回数を管理するステップと、
前記演算部は、前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理プログラム。
【請求項15】
請求項14記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項16】
与えられた初期データを内部データとして設定するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記乱数を出力するステップで前記演算した回数を管理するステップと、
前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2008−122493(P2008−122493A)
【公開日】平成20年5月29日(2008.5.29)
【国際特許分類】
【出願番号】特願2006−303743(P2006−303743)
【出願日】平成18年11月9日(2006.11.9)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】