(57)【要約】【課題】不正に乱数を改竄することが困難なデータ処理装置を提供する。【解決手段】データ処理装置は、与えられた初期データが初期データ履歴２２と等しいとの判断に応じて、初期データとは異なる値を内部状態２５に書き込む乱数初期化部２１と、乱数履歴３１の統計量を検査するための乱数検査部２７と、所定時間経過するまで内部状態２５を繰り返し更新した後に、乱数生成部２４に対し更新した内部状態をもとに演算した結果を出力するよう制御するための乱数制御部２８と、乱数生成部２４の動作回数が所定の値と一致していないとの判断に応じて、乱数生成部２４に対し乱数の出力を中止するよう制御するためのデータ処理制御部３０とを備える。【選択図】図２
2008122493.tif 000002
【特許請求の範囲】
【請求項１】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記初期データを記憶するための初期データ記憶手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、
前記乱数初期化手段は、前記初期データが前記初期データ記憶手段に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する、データ処理装置。
【請求項２】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、
前記乱数生成手段が出力した前記乱数を記憶するための乱数記憶手段と、
前記乱数記憶手段に記憶された乱数履歴をもとに、前記乱数生成手段が出力した前記乱数の統計量を検査するための乱数検査手段と、
前記乱数検査手段が前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える、データ処理装置。
【請求項３】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、
前記乱数生成手段は、前記内部データをもとに演算した結果を新たな内部データとして更新し、
前記乱数生成手段に対し、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するよう制御するための乱数制御手段をさらに備える、データ処理装置。
【請求項４】
与えられた初期データを内部データとして設定するための乱数初期化手段と、
前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、
前記乱数生成手段の前記演算した回数を管理するための乱数生成回数管理手段と、
前記回数が所定の値と一致していないとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える、データ処理装置。
【請求項５】
演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記初期データを前記記憶部に記憶するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記擬似的な乱数を出力するステップは、前記初期データが前記記憶部に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する、データ処理プログラム。
【請求項６】
請求項５記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項７】
与えられた初期データを内部データとして設定するステップと、
前記初期データを記憶するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記擬似的な乱数を出力するステップは、前記初期データが記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する、データ処理方法。
【請求項８】
演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記演算部は、前記出力した前記乱数を前記記憶部に記憶するステップと、
前記演算部は、前記記憶部に記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、
前記演算部は、前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理プログラム。
【請求項９】
請求項８記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１０】
与えられた初期データを内部データとして設定するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記出力した前記乱数を記憶するステップと、
前記記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、
前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理方法。
【請求項１１】
演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、
前記演算部は、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える、データ処理プログラム。
【請求項１２】
請求項１１記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１３】
与えられた初期データを内部データとして設定するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、
前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、
所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える、データ処理方法。
【請求項１４】
演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、
前記演算部は、与えられた初期データを内部データとして設定するステップと、
前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記演算部は、前記乱数を出力するステップで前記演算した回数を管理するステップと、
前記演算部は、前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理プログラム。
【請求項１５】
請求項１４記載のデータ処理プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１６】
与えられた初期データを内部データとして設定するステップと、
前記内部データをもとに演算した擬似的な乱数を出力するステップと、
前記乱数を出力するステップで前記演算した回数を管理するステップと、
前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数の改竄を防止する技術に関する。
【背景技術】
【０００２】
近年の情報通信技術の発達により、インターネットや携帯電話などにおける通信、携帯型端末における音楽再生、ＩＣ（Integrated Circuit）カードによる電子マネーなど、様々な分野で暗号技術が用いられている。これらの暗号技術では、安全性の根幹をなす暗号鍵の生成に乱数が利用されている。また、機器の認証、さらには、パチンコ等の娯楽機器の確率制御にも乱数が用いられている。
【０００３】
暗号鍵が乱数を用いて生成されている場合、乱数が改竄されるということは、暗号鍵が改竄されることと等価である。たとえば、著作権保護を目的とした暗号であれば、著作物の不正利用を防止するため、正規の利用者に対しても著作物を暗号化する鍵（以下、「コンテンツ鍵」と呼ぶ。）を秘匿しておく必要がある。この場合、コンテンツ鍵を機器とやり取りする際には別の暗号鍵でコンテンツ鍵が暗号化される。しかしながら、暗号鍵が改竄され、攻撃者に漏洩してしまうと、コンテンツ鍵も漏洩してしまい、暗号化した著作物が解読される可能性がある。また、通信の秘匿を目的とした暗号の場合、たとえば、攻撃者がコンピュータウイルス・ワームを用いるなどしてユーザが利用している通信プログラムの乱数生成部を改竄し、暗号鍵が攻撃者の意図したものに改竄されてしまうことがある。このような場合は、暗号通信を行なったとしても、通信を傍受している攻撃者に対して通信内容が漏洩してしまう可能性がある。
【０００４】
機器の認証では、生成した乱数を相手に送り、送った乱数に対して相手が暗号化等の変換をした結果を受け取り、その結果が正しいか否かで、相手の認証を行なうことが一般的である。
【０００５】
図１０は、認証手順の一例を説明するための図である。
図１０を参照して、機器の認証をする手順について説明する。機器Ａと正規の機器Ｂは、秘密の関数ｆを共有している。まず、機器Ａはある乱数ｒを生成し、機器Ｂに送る（ステップＳ１００）。機器Ｂは、乱数ｒを受信すると（ステップＳ１１０）、機器Ａと共有している秘密の関数ｆで乱数ｒを変換する（ステップＳ１１２）。次いで、乱数ｒの変換結果Ｒを機器Ａに送信する（ステップＳ１１４）。一方、機器Ａは、機器Ａ自身でも乱数ｒを共有している関数ｆで変換する（ステップＳ１０２）。そして、受け取った変換結果Ｒと機器Ａ自身が乱数ｒを変換した結果とを比較する（ステップＳ１０４）。この際、変換結果が一致していれば機器Ｂが正規の機器であると認証する。乱数ｒは認証のたびに変わるので、関数ｆを知らない不正な機器は正しい変換結果Ｒを機器Ａに送信することができず、認証を通ることはできない。
【０００６】
ここで、攻撃者によって機器Ａで発生する乱数が改竄され、乱数ｒが常に同じ値にされてしまうと、認証の過程で送受信されるデータ（つまり、乱数ｒと変換結果Ｒ）は常に同じものになってしまう。この状態で、攻撃者が正規の機器Ｂから機器Ａに送信される変換結果Ｒをあらかじめ傍受しておく。そして、不正な機器と機器Ａとの認証過程で傍受しておいた変換結果Ｒを再送することによって、秘密の関数ｆを知らなくても不正な機器の認証を通過させてしまうことが可能になる。また、常に同じ値でなくても、変換結果Ｒとの関係が既知の乱数ｒになるように攻撃者が機器Ａで発生する乱数を改竄したときも、同様に機器Ａに対して不正な機器の認証を通過させてしまうことが可能になる。
【０００７】
パチンコ等の娯楽機器では、乱数をもとに、決められた確率で当たりが発生するように機器を制御しているが、乱数を改竄することによって、不正に当たり確率を増減されてしまう可能性がある。また、発生させた乱数系列が既知であったり、過去の乱数系列から将来の乱数系列が予測可能であったりすれば、いつ当たりが出るかが分かってしまう可能性もある。
【０００８】
このように、様々な分野で乱数が用いられているが、情報漏洩や不正を防止するためには、乱数は単に規則性がない数というだけではなく、予測困難で、かつ、攻撃者に乱数を改竄されたり、特定の値、系列になるように操作されないように、安全性を確保する必要がある。
【０００９】
ここで、特許文献１には、不規則情報を生成し、それを鍵として暗号化を行なうことで予測困難な乱数を生成する技術について開示されている。
【００１０】
また、特許文献２には、プログラムＲＡＭ（Random Access Memory）の書き込みを禁止し、内蔵ＲＯＭ（Read Only Memory）が書き換えられていないかを走査することにより、プログラムが不正か否かを検出する技術が開示されている。
【特許文献１】特開２００６−２４１４０号公報
【特許文献２】特開平７−２９９２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１で開示されている技術では、どんなに予測困難な乱数を生成しても、攻撃者が乱数を生成する機器自体を改竄することにより、攻撃者にとって都合のよい乱数が生成されてしまうことがあった。
【００１２】
また、特許文献２で開示されている技術では、ソフトウェアの場合、実行前にプログラムの改竄の有無をチェックしたとしても、実行中にプログラムやデータを改竄されると、攻撃者にとって都合のよい乱数が生成されてしまうことがあった。
【００１３】
以上のように、攻撃者によって乱数生成手段自体が改竄されることにより、攻撃者に都合のよい乱数が生成されてしまい、安全にデータ処理を行なうことができなかった。
【００１４】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、不正に乱数を改竄することが困難なデータ処理装置を提供することである。
【課題を解決するための手段】
【００１５】
本発明の１つの局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記初期データを記憶するための初期データ記憶手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、前記乱数初期化手段は、前記初期データが前記初期データ記憶手段に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する。
【００１６】
本発明の他の局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、前記乱数生成手段が出力した前記乱数を記憶するための乱数記憶手段と、前記乱数記憶手段に記憶された乱数履歴をもとに、前記乱数生成手段が出力した前記乱数の統計量を検査するための乱数検査手段と、前記乱数検査手段が前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える。
【００１７】
本発明のさらに他の局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段とを備え、前記乱数生成手段は、前記内部データをもとに演算した結果を新たな内部データとして更新し、前記乱数生成手段に対し、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するよう制御するための乱数制御手段をさらに備える。
【００１８】
本発明のさらに他の局面に従うと、データ処理装置であって、与えられた初期データを内部データとして設定するための乱数初期化手段と、前記内部データをもとに演算した擬似的な乱数を出力するための乱数生成手段と、前記乱数生成手段の前記演算した回数を管理するための乱数生成回数管理手段と、前記回数が所定の値と一致していないとの判断に応じて、前記乱数生成手段に対し前記乱数の出力を中止するよう制御するためのデータ処理制御手段とを備える。
【００１９】
本発明のさらに他の局面に従うと、演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記初期データを前記記憶部に記憶するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記擬似的な乱数を出力するステップは、前記初期データが前記記憶部に記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する。
【００２０】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００２１】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記初期データを記憶するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記擬似的な乱数を出力するステップは、前記初期データが記憶された初期データ履歴と等しいとの判断に応じて、前記初期データとは異なる値を前記内部データとして設定する。
【００２２】
本発明のさらに他の局面に従うと、演算部と記憶部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記演算部は、前記出力した前記乱数を前記記憶部に記憶するステップと、前記演算部は、前記記憶部に記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、前記演算部は、前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【００２３】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００２４】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記出力した前記乱数を記憶するステップと、前記記憶された乱数履歴をもとに、前記乱数を出力するステップで出力した前記乱数の統計量を検査するステップと、前記統計量を検査した結果が所定の範囲を逸脱しているとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【００２５】
本発明のさらに他の局面に従うと、演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、前記演算部は、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える。
【００２６】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００２７】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップとを備え、前記乱数を出力するステップは、前記内部データをもとに演算した結果を新たな内部データとして更新し、所定時間経過するまで前記内部データを繰り返し更新した後に、前記更新した内部データをもとに演算した前記乱数を出力するステップをさらに備える。
【００２８】
本発明のさらに他の局面に従うと、演算部を有するコンピュータにデータ処理を実行させるためのプログラムであって、前記演算部は、与えられた初期データを内部データとして設定するステップと、前記演算部は、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記演算部は、前記乱数を出力するステップで前記演算した回数を管理するステップと、前記演算部は、前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【００２９】
本発明のさらに他の局面に従うと、上記データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００３０】
本発明のさらに他の局面に従うと、データ処理方法であって、与えられた初期データを内部データとして設定するステップと、前記内部データをもとに演算した擬似的な乱数を出力するステップと、前記乱数を出力するステップで前記演算した回数を管理するステップと、前記回数が所定の値と一致していないとの判断に応じて、前記乱数を出力するステップを中止するステップとを備える。
【発明の効果】
【００３１】
本発明によれば、乱数を生成する際に外部からの改竄を困難とするようなデータ処理を行なう。これにより、安全にデータ処理を行なうことができる。
【発明を実施するための最良の形態】
【００３２】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
【００３３】
以下の説明で明らかになるように、本実施の形態に係るデータ処理装置によれば乱数を生成する際に外部からの改竄を困難とするようなデータ処理を行なう。これにより、安全にデータ処理を行なうことができる。
【００３４】
本実施の形態に係るデータ処理装置における処理は、コンピュータ、ワークステーションなどのＣＰＵ（Central Processing Unit）上で実行されるソフトウェア（プログラムまたはデータ）によって実現される。なお、携帯電話などでデータ処理や通信制御などを行なうＣＰＵ上で実行されるソフトウェアにより実現されてもよいし、ＩＣカードなどの専用のハードウェアとして実現されてもよい。
【００３５】
（１．装置の構成）
図１は、本実施の形態に係るコンピュータ１のブロック構成図である。
【００３６】
図１を参照して、コンピュータ１について説明する。コンピュータ１は、情報を表示するための液晶またはＣＲＴ（Cathode Ray Tube）などからなる表示装置１０と、コンピュータ１に対する指示などの情報を外部から入力するために操作されるキー入力部４と、コンピュータ１自体を集中的に制御するためのＣＰＵ２と、ＲＯＭまたはＲＡＭを含んで構成されるメモリ３と、固定ディスク５と、フレキシブルディスク（Flexible Disk、以下「ＦＤ」と呼ぶ。）７が着脱自在に装着されて、装着されたＦＤ７をアクセスするＦＤドライブ６と、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）９などが着脱自在に装着されて、装着されたＣＤ−ＲＯＭ９などにアクセスする光ディスクドライブ８と、通信インターフェイス（Interface、以下「Ｉ／Ｆ」と呼ぶ。）１１とを備える。
【００３７】
通信Ｉ／Ｆ１１は、通信路１２とコンピュータ１とを通信可能に接続する機能を有する。したがって、コンピュータ１は図示しない他のコンピュータと通信路１２を介して相互にデータ通信できる。通信路１２にはインターネットを含む各種ネットワークを適用できる。コンピュータ１では、ＣＰＵ２によりデータ処理した結果は、表示装置１０や通信Ｉ／Ｆ１１から出力される。また、コンピュータ１には、カセット形式の磁気テープが着脱自在に装着されて磁気テープをアクセスする磁気テープ装置が設けられても良い。
【００３８】
ＣＤ−ＲＯＭ８は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、ＤＶＤ−ＲＯＭ（Digital Versatile Disc）やメモリーカードなどでもよく、その場合は、コンピュータ１には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。
【００３９】
固定ディスク５内には、本発明に係るデータ処理プログラム等が格納される。なお、プログラムは、ＦＤ７、またはＣＤ−ＲＯＭ９等の記録媒体によって供給されてもよいし、他のコンピュータにより通信回線を経由して供給されてもよい。
【００４０】
データ処理装置として機能するＣＰＵ２は、メモリ３をワーキングメモリとして、データ処理プログラムに則した処理を実行する。
【００４１】
データ処理プログラムは、上述の通り、ＣＰＵ２により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、ＣＤ−ＲＯＭ９、ＦＤ７等の記憶媒体に格納されて流通し、光ディスクドライブ８またはＦＤドライブ６等により記憶媒体から読み取られて固定ディスク５に一旦格納される。または、コンピュータ１がネットワークに接続されている場合には、ネットワーク上のサーバから一旦固定ディスク５にコピーされる。そうしてさらに固定ディスク５からメモリ３中のＲＡＭに読み出されてＣＰＵ２により実行される。なお、ネットワーク接続されている場合には、固定ディスク５に格納することなくＲＡＭに直接ロードして実行するようにしてもよい。
【００４２】
図１に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当たり本質的な部分は、ＦＤ７、ＣＤ−ＲＯＭ９、固定ディスク５等の記憶媒体に記憶されたソフトウェアである。
【００４３】
なお、一般的傾向として、コンピュータのオペレーティングシステムの一部として様々なプログラムモジュールを用意しておき、アプリケーションプログラムはこれらモジュールを所定の配列で必要なときに呼び出して処理を進める方式が一般的である。そうした場合、当該ソフトウェア自体にはそうしたモジュールは含まれず、当該コンピュータでオペレーティングシステムと協働してはじめて解析モデルの作成および電磁界解析が可能になる。しかし、一般的なプラットフォームを使用する限り、そうしたモジュールを含ませたソフトウェアを流通させる必要はなく、それらモジュールを含まないソフトウェア自体およびそれらソフトウェアを記録した記憶媒体（およびそれらソフトウェアがネットワーク上を流通する場合のデータ信号）が実施の形態を構成すると考えることができる。
【００４４】
（２．機能的構成）
図２は、ＣＰＵ２の機能的構成を示す機能ブロック図である。
【００４５】
図２を参照して、データ処理装置として機能するためのＣＰＵ２の機能的構成について説明する。ＣＰＵ２は、乱数初期化部２１と、乱数生成部２４と、乱数検査部２７と、乱数制御部２８と、データ処理部２９と、データ処理制御部３０とを備える。
【００４６】
データ格納部２０は、初期データ履歴２２と、初期カウンタ変数を記憶するための初期化カウンタ２３と、乱数生成部２４の内部変数を記憶するための内部状態２５と、乱数生成部２４で計測したカウンタ変数を記憶するための乱数生成カウンタＡ２６と、乱数制御部２８で計測したカウンタ変数を記憶するための乱数生成カウンタＢ３２と、生成した乱数を記録するための乱数履歴３１とを格納する。なお、データ格納部２０は、メモリ３や固定ディスク５に相当する。
【００４７】
乱数初期化部２１は、与えられる初期データをもとにして、乱数生成部２４の内部状態２５の内部変数を初期化し、初期データ履歴２２に初期データを追加し、初期化カウンタ２３の初期カウンタ変数を更新する。
【００４８】
乱数生成部２４は、内部状態２５の内部変数を所定の演算により更新し、擬似的な乱数を生成して乱数履歴３１に追加し、乱数生成カウンタＡ２６を更新する。
【００４９】
図３は、乱数生成処理を説明するための図である。
図３を参照して、乱数生成部２４における乱数生成処理について具体的に説明する。ここで、ある時点（ｉ−１）における内部状態２５に記録される内部変数をｙｉ−１、乱数生成部２４によって生成される擬似的な乱数をｘｉ、更新後の内部状態２５に記録される内部変数をｙｉとする。
【００５０】
図３に示すように、乱数生成部２４は内部変数ｙｉ−１が入力されると、関数ｆ，ｇを用いて次の式（１）および式（２）で表わされる演算を行なう。
【００５１】
ｘｉ＝ｆ（ｙｉ−１）  …式（１）
ｙｉ＝ｇ（ｙｉ−１）  …式（２）
図４は、乱数生成部２４での処理を繰り返し行なったときに出力される乱数と内部状態の遷移を示した模式図である。
【００５２】
図４を参照して、乱数生成部２４での処理を繰り返し行なったときに出力される乱数と内部状態の遷移について説明する。ここで、初期化処理後の内部状態２５に記録される内部変数をｙ０とする。
【００５３】
図４に示すように、ある時点（ｉ−１）における内部状態２５に記録される内部変数ｙｉ−１から、乱数生成部２４において実行される１回の乱数生成処理で１つの擬似的な乱数ｘｉが生成される。そして、内部状態２５に新たに記録される値はｙｉとなり、次の処理における内部変数となっている。また、ｘ１〜ｘｎは乱数履歴３１に記録される値に対応している。
【００５４】
乱数生成部２４として、具体的には、合同法やＬＦＳＲ（Linear Feedback Shift Resister：線形フィードバックシフトレジスタ）などを用いてもよいし、暗号化処理を組み合わせた乱数生成を用いてもよい。
【００５５】
たとえば、合同法では、次の式（３）に従って乱数が生成される。ここで、ａ，ｂ，ｍは定数、ｍｏｄは剰余演算を表わす。
【００５６】
ｘｉ＝ｙｉ＝ａｙｉ−１＋ｂ  ｍｏｄ  ｍ  …式（３）
また、暗号化処理を組み合わせた乱数生成については、たとえば以下のような構成がある。
【００５７】
図５は、組み合わされた暗号化処理の構成を示す図である。
図５を参照して、暗号化処理を組み合わせた乱数生成について説明する。ここで、Ｅは暗号化鍵Ｋに基づいて行なわれる暗号化処理、ｚｉ−１は時刻や装置の起動してからの経過時間などの処理する度に変化する値を表わす。
【００５８】
図５に示すように、ｚｉ−１に対し、暗号化処理Ｅが行なわれる。そして、この結果と内部状態として入力されたｙｉ−１との排他的論理和に対し暗号化処理Ｅが行なわれ、乱数ｘｉとして出力される。また、ｚｉ−１に対し暗号化処理Ｅを行なった結果と乱数ｘｉとの排他的論理和に対し、暗号化処理Ｅが行なわれ、内部状態としてｙｉが出力される。
【００５９】
以上で説明したように、乱数生成部２４は、内部状態２５に与えられる初期値に基づいて演算を繰り返すため、初期値ごとに同系列の乱数を出力する。つまり、乱数生成部２４は、擬似的な乱数を生成する。
【００６０】
図２に戻って、乱数検査部２７は、生成した乱数が記録されている乱数履歴３１に基づいて統計量が所定の範囲から逸脱していないかを検査する。なお、統計量の検査技術については米国情報処理設備調達基準ＦＩＰＳ（Federal Information Processing Standards）ＰＵＢ−２で、０／１ｂｉｔの割合、連続した４ｂｉｔのｂｉｔパターンの分布、連の長さの割合、最長の連の長さが規定されているように、公知の技術である。
【００６１】
乱数制御部２８は、乱数生成部２４と乱数検査部２７の制御と乱数生成カウンタＢ３２の更新を行なう。また、乱数生成カウンタＡ２６のカウンタ変数値と乱数生成カウンタＢ３２のカウンタ変数値とが一致してない場合、もしくは、乱数検査部２７で検査した乱数が不合格であれば、データ処理制御部３０にデータ処理の中止を通知する。
【００６２】
データ処理部２９では、暗号化、通信、認証、確率制御などのデータ処理を行なう。
データ処理制御部３０では、乱数初期化部２１、データ処理部２９、乱数制御部２８の制御を行なう。
【００６３】
上述したように、乱数初期化部２１、乱数生成部２４、乱数検査部２７、乱数制御部２８、データ処理部２９、データ処理制御部３０等の機能は、ＣＰＵ２がメモリ３または固定ディスク５に予め記憶されたプログラムを読出し実行することにより実現される。また、これらの機能を他のハードウェア等でそれぞれ構成して、組み合わせて実現してもよい。
【００６４】
（３．本発明に係るデータ処理手順）
図６は、データ処理制御部３０が行なう処理を示すフローチャートである。
【００６５】
図６を参照して、データ処理制御部３０が行なうデータ処理手順について説明する。なお、データ処理を行なうための準備として、各カウンタ変数は初期化されるものとする。また、上述したように以下で説明する処理はプログラムの関数として実装され、データ処理制御部３０が関数呼び出しを行なうことで処理が実行される。
【００６６】
まず、ステップＳ６０にて、データ処理制御部３０は、乱数初期化部２１に対し乱数初期化処理を行なうよう指示する。なお、乱数初期化処理の内容については後述する。
【００６７】
次いで、ステップＳ６２にて、データ処理制御部３０は、乱数制御部２８に対し乱数出力処理を行なうよう指示する。なお、乱数出力処理の内容については後述する。
【００６８】
そして、ステップＳ６４にて、データ処理制御部３０は、データ処理部２９に対し暗号化、通信、認証、確率制御などのデータ処理を行なうよう指示する。
【００６９】
さらに、ステップＳ６６にて、データ処理制御部３０は、データ処理を行なうデータの入力が終了したかどうかを判定する。データ入力が終了していないと判断すれば（ステップＳ６６にてＮＯ）、ステップＳ６２の処理に戻る。一方、データ入力が終了していると判断すれば（ステップＳ６６にてＹＥＳ）、データ処理制御を終了する。
【００７０】
また、図示はしていないが、ステップＳ６２の乱数出力処理において、乱数制御部２８によってデータ処理の中止が要求されたときもデータ処理制御部３０はデータ処理を中止する。
【００７１】
（３．１  乱数初期化処理）
図７は、乱数初期化処理について示すフローチャートである。
【００７２】
図７を参照して、乱数初期化部２１が行なう乱数初期化処理（図６のステップＳ６０での処理）について詳しく説明する。
【００７３】
まず、ステップＳ７００にて、乱数初期化部２１は、初期データの入力を受ける。初期データは、ユーザによって与えられてもよいし、メモリ３や固定ディスク５等の所定の領域に予め初期データとして記憶されているデータから読み込んでもよい。
【００７４】
次いで、ステップＳ７０２にて、乱数初期化部２１は、初期データ履歴２２にステップＳ７００で入力された初期データが存在するか（記録されているか）を判定する。記録されていないと判断すれば（ステップＳ７０２にてＮＯ）、ステップＳ７０４にて、入力された初期データを初期データ履歴２２に書き込む。一方、初期データ履歴２２に記録されていると判断すれば（ステップＳ７０２にてＹＥＳ）、ステップＳ７０６にて、初期データに初期化カウンタ２３の値を加算する。
【００７５】
続いて、ステップＳ７０８にて、乱数初期化部２１は、乱数制御部２８を介して乱数生成部２４に対し内部状態２５の初期化を行なうよう指示する。つまり、初期化カウンタ２３のカウンタ変数を内部状態２５の内部変数とする。
【００７６】
そして、ステップＳ７１０にて、乱数初期化部２１は、初期化カウンタ２３のカウンタ変数値を１増やし、乱数初期化処理を終了する。
【００７７】
上述したように乱数初期化処理では、初期データ履歴２２を記録、参照し、同じ初期データに対しては初期化するたびに毎回増加する値を加算したものを初期データとして乱数生成部２４の内部状態２５を初期化する。これにより、毎回異なる値で乱数生成部２４の内部状態２５は初期化されるため、毎回異なる系列の乱数を発生させることができる。したがって、攻撃者が初期データを改竄し、同じ乱数系列を発生させることを防止することができる。また、ＩＣカードのようなハードウェアで初期データが固定されている場合、攻撃者が不正にハードウェアにリセットをかけることで同じ乱数系列を発生させようとしても、カウンタ値を不揮発メモリに記憶するなどして、カウンタ値を初期化されないようにしておけば、毎回異なる値で乱数生成部２４の内部状態２５が初期化されるため、毎回異なる系列の乱数を発生させることができる。
【００７８】
（３．２  乱数出力処理）
図８は、乱数出力処理について示すフローチャートである。
【００７９】
図８を参照して、乱数制御部２８が行なう乱数出力処理（図６のステップＳ６２での処理）について詳しく説明する。
【００８０】
まず、ステップＳ８００にて、乱数制御部２８は、乱数生成部２４に対し、乱数生成処理を行なうよう指示する。なお、乱数生成処理については後述する。
【００８１】
次いで、ステップＳ８０２にて、乱数制御部２８は、乱数生成カウンタＢ３２のカウンタ変数値を１増やす。
【００８２】
続いて、ステップＳ８０４にて、乱数制御部２８は、乱数出力処理を開始してから所定時間経過しているかどうか判定する。所定時間経過していないと判断すれば（ステップＳ８０４にて、ＮＯ）、ステップＳ８００の処理に戻る。なお、ステップＳ６２の乱数出力処理で出力される乱数は、ステップＳ８００からステップＳ８０４で繰り返し行なわれる処理において生成された乱数のうち、最後の処理で生成された乱数のみである。
【００８３】
そして、ステップＳ８０６にて、乱数制御部２８は、乱数生成カウンタＡ２６のカウンタ変数値と乱数生成カウンタＢ３２のカウンタ変数値を比較する。カウンタ変数値が一致していないと判断すれば（ステップＳ８０６にてＮＯ）、ステップＳ８０８にて、データ処理制御部３０へのデータ処理中止要求を行なう。一方、カウンタ変数値が一致していると判断すれば（ステップＳ８０６にてＹＥＳ）、ステップＳ８１０にて、乱数検査部２７に対し乱数履歴３１の統計量の検査を行なうよう指示し、検査結果が所定の範囲から逸脱しているかどうか判定する。乱数制御部２８は、検査結果が所定の範囲から逸脱していると判断すれば（ステップＳ８１０にてＮＯ）、ステップＳ８０８の処理に進む。一方、所定の範囲から逸脱していないと判断すれば（ステップＳ８１０にてＹＥＳ）、乱数出力処理を終了する。
【００８４】
上述したように乱数出力処理では、ステップＳ８１０において、乱数検査部２７は、乱数履歴３１を参照して過去に生成した乱数の統計量を検査する。これにより、攻撃者にとって都合のいい乱数を発生するように乱数生成部２４が不正に改竄されていないかを検査することができる。したがって、攻撃者に処理手順を改竄されたときだけでなく、正規の手順で生成された乱数値のみを改竄されたときも検出することができるため、安全に処理が行なえなくなったデータ処理を停止することができる。
【００８５】
さらに、乱数出力処理では、乱数制御部２９は、所定時間だけ乱数生成を繰り返し、最後の処理で生成した乱数以外は出力しない。ここで、乱数制御部２９を一定の時間だけ乱数を捨てるように設計したとしても、コンピュータ１のタイマーの精度、ＯＳ（Operating System）によるタスクの切り替えなど、様々な要因によって、実際に捨てられる乱数の数は一定にはならないことは一般的に知られている。このことから、たとえ同じ初期値で乱数生成部２４の内部状態２５を初期化したとしても、乱数制御部２９では毎回異なる乱数が出力されることになる。このため、攻撃者が初期値が固定されるように処理手順やデータを改竄したり、意図的に乱数の初期化を繰り返し行なったりしたとしても、同じ乱数系列が生成されるのを防ぐことができる。
【００８６】
（３．３  乱数生成処理）
図９は、乱数生成処理について示すフローチャートである。
【００８７】
図９を参照して、乱数生成部２４が行なう乱数生成処理（図８のステップＳ８００での処理）について詳しく説明する。なお、以下で説明する処理は、上述したように乱数生成部２４がプログラムの関数として実装され、乱数制御部２８が関数呼び出しを行なうことで乱数が生成される。
【００８８】
まず、ステップＳ９０にて、乱数生成部２４は、内部状態２５の更新を行なう。内部状態２５は、たとえば、前述したように関数演算を実行することで更新される。
【００８９】
次いで、ステップＳ９２にて、乱数生成部２４は、乱数生成を行なう。たとえば、前述したように、内部状態２５の内部変数を用いて関数演算を実行することで乱数生成を行なう。
【００９０】
そして、ステップＳ９４にて、乱数生成部２４は、乱数履歴３１に生成した乱数を書き込む。
【００９１】
さらに、ステップＳ９６にて、乱数生成部２４は、乱数生成カウンタＡ２６のカウンタ変数値を１増やし、乱数生成処理を終了する。
【００９２】
上述したように乱数生成処理では、乱数生成カウンタＡ２６のカウンタ変数値を更新する。
【００９３】
一般的に、プログラムの内部を改竄して特定の値のみを制御するのは容易ではない。これに対し、関数呼び出しをスキップするのは、乱数を生成していると思われる箇所（関数）およびそれを呼び出している命令（たとえば、ｃａｌｌ命令など）が分かれば比較的容易にできる。
【００９４】
たとえば、ステップＳ８００の乱数生成処理（関数呼び出し）をスキップし、固定、もしくは攻撃者にとって都合のいい値が生成されるように乱数制御部２８の一部が改竄されることが考えられる。ステップＳ８００の乱数生成処理をスキップすると乱数生成カウンタＡ２６のカウンタ変数値は更新されない。
【００９５】
この場合、図８のフローチャートで示した乱数出力処理のステップＳ８０６において、乱数生成カウンタＡ２６のカウンタ変数値と乱数生成カウンタＢ３２のカウンタ変数値とを比較すると、これらのカウンタ変数値は一致しない。これにより、乱数生成処理がスキップされた（改竄された）ことが分かる。
【００９６】
このように、乱数生成カウンタＡ２６のカウンタ変数値と乱数生成カウンタＢ３２のカウンタ変数値とが一致しているかどうかを判定することにより、攻撃者による改竄を検知することができ、安全に処理が行なえなくなったデータ処理を停止することができる。
【００９７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００９８】
【図１】本実施の形態に係るコンピュータ１のブロック構成図である。
【図２】ＣＰＵ２の機能的構成を示す機能ブロック図である。
【図３】乱数生成処理を説明するための図である。
【図４】乱数生成部２４での処理を繰り返し行なったときに出力される乱数と内部状態の遷移を示した模式図である。
【図５】組み合わされた暗号化処理の構成を示す図である。
【図６】データ処理制御部３０が行なう処理を示すフローチャートである。
【図７】乱数初期化処理について示すフローチャートである。
【図８】乱数出力処理について示すフローチャートである。
【図９】乱数生成処理について示すフローチャートである。
【図１０】認証手順の一例を説明するための図である。
【符号の説明】
【００９９】
１  コンピュータ、２  ＣＰＵ、３  メモリ、４  キー入力部、５  固定ディスク、６  ＦＤドライブ、７  フレキシブルディスク、８  光ディスクドライブ、９  ＣＤ−ＲＯＭ、１０  表示装置、１１  通信インターフェイス、１２  通信路、２０  データ格納部、２１  乱数初期化部、２２  初期データ履歴、２３  初期化カウンタ、２４  乱数生成部、２５  内部状態、２６  乱数生成カウンタＡ、２７  乱数検査部、２８  乱数制御部、２９  データ処理部、３０  データ処理制御部、３１  乱数履歴、３２  乱数生成カウンタＢ。
【図１】
2008122493.tif 000003
【図２】
2008122493.tif 000004
【図３】
2008122493.tif 000005
【図４】
2008122493.tif 000006
【図５】
2008122493.tif 000007
【図６】
2008122493.tif 000008
【図７】
2008122493.tif 000009
【図８】
2008122493.tif 000010
【図９】
2008122493.tif 000011
【図１０】
2008122493.tif 000012