(57)【要約】【課題】  データ保持部に保持されているデータから乱数系列を生成するデータ処理装置において、前記データを攪拌するための専用回路を備えることなく、また、暗号処理を妨げずに、高速に前記データを攪拌すること。【解決手段】  データ保持部に保持されているデータの攪拌を行う際に、所定暗号アルゴリズムを高速に実行する暗号処理回路が休止状態ならば、制御部は休止状態の暗号処理回路を選択し、そうでなければ制御部４はマイクロプロセッサ７を選択して前記データの攪拌を行わせる。【選択図】  図１
2007171811.tif 000002
【特許請求の範囲】
【請求項１】
データを保持する保持手段と、
前記保持手段に保持されたデータの攪拌処理を実行可能な攪拌処理手段と、
前記保持手段に保持されたデータの攪拌処理を攪拌処理プログラムに基づいて実行可能な演算処理手段と、
前記攪拌処理手段の動作状態に基づいて、前記攪拌処理手段と前記演算処理手段を制御する攪拌制御手段とを備えることを特徴とするデータ処理装置。
【請求項２】
前記攪拌処理手段は、データを暗号化する暗号処理手段が含まれることを特徴とする前記請求項１に記載のデータ処理装置。
【請求項３】
前記暗号処理手段は、共通鍵暗号アルゴリズムを実行する共通鍵暗号処理手段が含まれることを特徴とする前記請求項２記載のデータ処理装置。
【請求項４】
前記暗号処理手段は、公開鍵暗号アルゴリズムを実行する公開鍵暗号処理手段が含まれることを特徴とする前記請求項２記載のデータ処理装置。
【請求項５】
前記攪拌処理手段には、データをダイジェストデータに変更するダイジェストデータ生成手段が含まれることを特徴とする前記請求項１記載のデータ処理装置。
【請求項６】
前記演算処理手段は、前記攪拌処理手段が実行する処理と同一の処理をプログラムに基づいて実行することを特徴とする前記請求項１に記載のデータ処理装置。
【請求項７】
前記データ処理装置は、前記攪拌処理手段として複数の攪拌処理手段を備え、該複数の攪拌処理手段は、同一のアルゴリズムを実行することを特徴とする前記請求項１記載のデータ処理装置。
【請求項８】
前記データ処理装置は、前記攪拌処理手段として複数の攪拌処理手段を備え、該複数の攪拌処理手段の少なくとも一部は、他の攪拌処理手段が実行するアルゴリズムとは異なるアルゴリズムを実行することを特徴とする前記請求項１記載のデータ処理装置。
【請求項９】
前記攪拌制御手段は、前記攪拌処理手段を用いたデータの攪拌中に、攪拌中のデータとは別のデータの使用要求を検知した場合には、前記攪拌処理手段を用いた攪拌を中止することを特徴とする前記請求項１記載のデータ処理装置。
【請求項１０】
前記攪拌制御手段は、前記攪拌処理手段を用いたデータの攪拌中に、攪拌中のデータとは別のデータの使用要求を検知した場合には、前記攪拌処理手段を用いた攪拌を中止した後に、攪拌処理手段の動作状態、及び予め定めた優先度に応じて攪拌手段を再制御することを特徴とする前記請求項９記載のデータ処理装置。
【請求項１１】
前記データ処理装置は、前記攪拌処理手段として１つの攪拌処理手段を備え、前期攪拌制御手段は、前記攪拌処理手段を用いた攪拌中に、攪拌中のデータとは別のデータの使用要求を検知した場合は、前記攪拌処理手段を用いた攪拌を中止した後に、前記演算処理手段を用いてデータの攪拌処理を制御することを特徴とする前記請求項９記載のデータ処理装置。
【請求項１２】
前記攪拌制御手段は、前記攪拌処理手段の少なくとも１つが休止状態である場合、前記演算処理手段よりも優先的に前記攪拌処理手段を用いてデータの攪拌処理を制御することを特徴とする請求項１に記載のデータ処理装置。
【請求項１３】
前記攪拌制御手段は、休止状態である前記攪拌処理手段が複数個ある場合、該休止状態の攪拌処理手段のうち優先度の高い攪拌処理手段を用いてデータの攪拌処理を制御することを特徴とする前記請求項１２記載のデータ処理装置。
【請求項１４】
前記攪拌制御手段は、休止状態である前記攪拌処理手段が複数個ある場合、該休止状態の攪拌処理手段のうち２つ以上の攪拌処理手段を用いてデータの攪拌処理を制御することを特徴とする前記請求項１記載のデータ処理装置。
【請求項１５】
前記データ処理装置は、前記攪拌処理手段として複数の攪拌処理手段を備え、前記攪拌制御手段は、前記攪拌処理手段の少なくとも１つを休止状態にするよう制御することを特徴とする前記請求項１記載のデータ処理装置。
【請求項１６】
保持手段に保持されたデータの攪拌処理を実行可能な１つまたは複数の攪拌処理手段を備えたデータ処理装置において、
前記保持手段に保持されたデータの攪拌処理を攪拌処理プログラムに基づいて実行可能な演算処理工程と、
前記攪拌処理手段の動作状態に基づいて、前記演算処理工程を用いて前記データの攪拌処理を制御する攪拌制御工程とを備えることを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを装置内で攪拌し、出力するデータ処理装置に関する。
【背景技術】
【０００２】
近年、共通鍵暗号や公開鍵暗号等を利用してデータ通信は行われているが、より安全なデータ通信を行うために、乱数生成技術は不可欠なものとなっている。この乱数の用途としては、暗号化に使用する鍵の生成や認証用メッセージの生成などがある。このような用途に乱数を使用する場合、外部からは推測することができない安全な乱数を生成することが重要である。
【０００３】
乱数生成の方法は、自然界の物理現象に基づいて乱数を生成する物理乱数生成方式と、一定のアルゴリズムを用いて数学的な演算により乱数を生成する擬似乱数生成方式が存在する。物理乱数生成方式では熱雑音や発振回路などを利用して乱数を生成する。このようにして生成された乱数は、数学的に真性乱数に近い乱数となっている。しかし、この物理乱数生成には、特別な回路が必要である。一方、擬似乱数生成方式として、ハッシュ演算を用いて擬似乱数を生成する技術（特許文献１）が知られている。
【特許文献１】特開２００４−１０９４２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来はデータをソフトウェア処理する機構とハードウェア処理する機構を備え、これらを効率良く用いる手法は確立していなかった。
【０００５】
本発明はかかる事情に鑑みてなされたものであり、その主な目的は、ハードウェアとソフトウェアの攪拌処理手段を備えた装置において、これらの手段を効率良く用いてデータを攪拌し、出力する技術を提供することにある。
【０００６】
また、できるだけ高速にデータを攪拌することを更なる目的とする。
【０００７】
また、データを攪拌するための専用回路を備えることなく、他の処理回路を用いて攪拌することを更なる目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明によるデータ処理装置は、データを保持する保持手段と、前記保持手段に保持されたデータの攪拌処理を実行可能な攪拌処理手段と、前記保持手段に保持されたデータの攪拌処理を攪拌処理プログラムに基づいて実行可能な演算処理手段と、前記攪拌処理手段の動作状態に基づいて、前記攪拌処理手段と前記演算処理手段を制御する攪拌制御手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明のデータ処理装置によれば、ハードウェアとソフトウェアの攪拌処理手段を備えた装置において、これらの手段を効率良く用いてデータを攪拌し、出力することができる。
【発明を実施するための最良の形態】
【００１０】
＜実施形態１＞
図１は実施形態１におけるデータ処理装置の構成図である。図１において、データ処理装置１は、乱数系列を生成する乱数生成回路２と、共通鍵暗号アルゴリズムを高速に実行する共通鍵暗号処理回路８と、前記共通鍵暗号処理回路８が実行する暗号アルゴリズムと同一の暗号アルゴリズムをプログラム実行するマイクロプロセッサ７と、前記共通鍵暗号処理回路８が休止状態であるか否かを前記乱数生成回路２と前記マイクロプロセッサ７に通知する動作状況通知信号９と、前記マイクロプロセッサ７から前記乱数生成回路２及び前記共通鍵暗号処理回路８に回路の使用要求を通知する回路使用要求信号１０と、外部装置１４とデータをやり取りするネットワークインターフェース１３と、ＨＤＤ（ハードディスクドライブ）１２とデータをやり取りするＨＤＤインターフェース１１を備えている。
【００１１】
なお、前記共通鍵暗号処理回路８の構成はこれに限らない。例えば、回路８として、公開鍵暗号アルゴリズムを実行する公開鍵暗号処理回路や、ハッシュ値を計算するＭＤ（メッセージ・ダイジェスト）生成回路を適用してもよい。
【００１２】
また、マイクロプロセッサ７は、プログラムを実行できる演算処理手段であれば良い。
【００１３】
前記乱数生成回路２は、データ保持部３と、攪拌制御部４と、乱数系列生成部６を備える。データ保持部３は、乱数生成用のデータを一時保存する。攪拌制御部４は、前記共通鍵暗号処理回路８の動作状況を前記動作状況通知信号９から判断し、さらに前記データ保持部３に保持されたデータの攪拌の開始指示とその方法の選択を行い、さらに攪拌動作の中止の指示を行う。乱数系列生成部６は、前記データ保持部３に保持されているデータから乱数系列を生成して出力する。
【００１４】
以下、データ処理装置１の動作を簡単に説明する。
【００１５】
＜暗号化機能＞
データ処理装置１がネットワークインターフェース１３を通じて外部装置１４からデータを受信した時、共通鍵暗号処理回路８は、受信したデータを暗号化し、ＨＤＤインターフェースを通じてＨＤＤ１２に暗号化したデータを保存する。このとき、乱数生成回路２が生成した乱数を暗号鍵として用いる。また、データ処理装置１が、ＨＤＤインターフェース１１を通じてＨＤＤ１２から暗号化されたデータを受信した時、共通鍵暗号処理回路８は、受信した暗号化されたデータを復号する。そして共通鍵暗号処理回路８は、ネットワークインターフェース１３を通じて外部装置１４に復号されたデータを送信する。
【００１６】
＜データ攪拌機能＞
次に、データ保持部３を攪拌する方法について説明する。
【００１７】
図２は本実施形態における攪拌制御部４の動作を示したフローチャートである。図２を用いて実施形態１における攪拌制御部４の攪拌動作を説明する。
【００１８】
ステップＳ１０１において、攪拌制御部４は、データ保持部３に保持されたデータの攪拌を行う際に、動作状況通知信号９に基づいて共通鍵暗号処理回路８が休止状態であるか否かを検査する。共通鍵暗号処理回路８が休止状態でなかった場合、後述するステップＳ１０７に進む。Ｓ１０７おいて、攪拌制御部４はマイクロプロセッサ７を用いた攪拌方法を選択する。
【００１９】
ステップＳ１０２において、ステップＳ１０１での検査の結果、共通鍵暗号処理回路８が休止状態であった場合、攪拌制御部４は共通鍵暗号処理回路８を用いた攪拌方法を選択する。
【００２０】
ステップＳ１０３において、攪拌制御部４は共通鍵暗号処理回路８に対しデータ保持部３の攪拌の指示を行う。
【００２１】
ステップＳ１０４において、攪拌制御部４は、共通鍵暗号処理回路８がデータ保持部３の攪拌を終了したか否かを検査する。このときに、共通鍵暗号処理回路８がデータ保持部３の攪拌を終了している場合は、攪拌制御部４は動作を終了する。
【００２２】
ステップＳ１０５において、共通鍵暗号処理回路８がデータ保持部３の攪拌を終了していない場合に、攪拌制御部４はマイクロプロセッサ７から回路使用要求信号１０があるか否かを検査する。このとき、回路使用要求信号１０がない場合は、攪拌を継続しステップＳ１０４に戻る。
【００２３】
回路使用要求信号とは、外部から回路の使用要求があったときに、マイクロプロセッサ７が、攪拌制御部４と使用する回路に、処理の要求をする信号である。実施形態１の場合、外部装置１４からデータの暗号処置要求があったときに、マイクロプロセッサ７が共通鍵暗号処理回路８と攪拌制御部４に、回路の使用要求を指示する信号である。
【００２４】
ステップ１０６において、ステップＳ１０５で回路使用要求信号１０がある場合に、攪拌制御部４は共通鍵暗号処理回路８に対し攪拌中止の指示を行う。
【００２５】
ステップＳ１０７において、攪拌制御部４は、マイクロプロセッサ７を用いてデータ保持部３を攪拌する方法を選択した後に、後述するステップＳ１０８においてマイクロプロセッサ７に対して攪拌の指示を行う。
【００２６】
ステップＳ１０８において、攪拌制御部４は、マイクロプロセッサ７に対して攪拌の指示を行う。
【００２７】
ステップＳ１０９において、マイクロプロセッサ７がデータ保持部３の攪拌を終了したか否かを検査する。攪拌が終了していない場合、攪拌を継続しステップＳ１０９に戻る。攪拌が終了した場合、攪拌制御部４は動作を終了する。
【００２８】
以上のように、攪拌制御部４は、高速に処理を実行できる共通鍵暗号処理回路８が休止状態であるならば共通鍵暗号処理回路８を選択し、動作状態ならばマイクロプロセッサ７を用いたデータ保持部３の攪拌方法を選択する。このように共通鍵暗号処理回路８をできるだけ利用することで、マイクロプロセッサ７のみを使用する場合と比べてより高速に、またより少ない電力でデータ保持部３に保持されたデータを攪拌することができる。また、攪拌制御部４が選択した方法でデータを攪拌させている時に、攪拌制御部４が、マイクロプロセッサ７から、選択した回路の回路仕様要求信号１０を受信すると、攪拌制御部４は攪拌中止の指示を行い、暗号処理を優先して行うようにする。このようにすることにより、暗号処理を妨げることなくデータ保持部３に保持されたデータを攪拌することができる。
【００２９】
なお変形例として、共通鍵暗号処理回路８がＭＤ生成回路でもよい。以下、ＭＤ生成回路である場合のデータ処理装置の動作を説明する。データ処理装置はネットワークインターフェース１３を通じて外部装置１４からデータを受信すると、ＭＤ生成回路でデータとそのハッシュ値を計算する。そして、ＨＤＤインターフェース１１を通じてＨＤＤ１２にデータのハッシュ値を保存する。または、ネットワークインターフェース１３を通じて外部装置にデータのハッシュ値を送信する。このＭＤ生成回路が休止状態の時に、攪拌制御部４は、データ保持部３に保持されたデータの攪拌をＭＤ生成回路に指示する。
【００３０】
また、攪拌制御部４は、高速に処理を実行できる共通鍵暗号処理回路８が休止状態であるならば共通鍵暗号処理回路８とマイクロプロセッサ７を両方選択し、両方並行してデータ保持部３の攪拌を制御してもよい。
【００３１】
＜実施形態２＞
図３は実施形態２におけるデータ処理装置の構成図である。図３において、データ処理装置２１は乱数系列を生成する乱数生成回路２２と、共通鍵暗号アルゴリズムを高速に処理する共通鍵暗号処理回路２８と、データのハッシュ値を高速に計算するＭＤ生成回路３０と、前記共通鍵暗号処理回路２８及びＭＤ生成回路３０が実行するアルゴリズムと同一のアルゴリズムをプログラム実行するマイクロプロセッサ２７と、前記共通鍵暗号処理回路２８が休止状態であるか否かを前記乱数生成回路２２と前記マイクロプロセッサ２７に通知する第１動作状況通知信号２９と、前記ＭＤ生成回路３０が休止状態であるか否かを前記乱数生成回路２２と前記マイクロプロセッサ２７に通知する第２動作状況通知信号３１と、前記マイクロプロセッサ２７から前記乱数生成回路２２、前記共通鍵暗号処理回路２８及び前記ＭＤ生成回路３０に回路の使用要求を通知する回路使用要求信号３２と、外部装置３６とデータをやり取りするネットワークインターフェース３５と、ＨＤＤ３４とデータをやり取りするＨＤＤインターフェース３３を備えている。
【００３２】
なお、前記共通鍵暗号処理回路２８並びにＭＤ生成回路３０は、これに限ったことではなく、公開鍵暗号アルゴリズムを実行する公開鍵暗号処理回路でも良い。また公開鍵暗号処理回路と共通鍵暗号処理回路といったように、違う演算を行う回路を複数回路備えていても良く、また、備えている回路の数も２個に限ったことではない。また、同じ演算を行う回路を複数回路備えていても良く、また、備えている回路の数も２個に限ったことではない。
【００３３】
また、マイクロプロセッサは、プログラムを実行できる演算処理手段であれば、これに限ったことではない。
【００３４】
前記乱数生成回路２２は、データ保持部２３と、攪拌制御部２４と、乱数系列生成部２６を備える。データ保持部２３は、乱数生成用のデータを保存する。攪拌制御部２４は、前記共通鍵暗号処理回路２８及び前記ＭＤ生成回路３０の動作状況を前記第１動作状況通知信号２９及び前記第２動作状況通知信号を通じて判断する。さらに攪拌制御部２４は、前記データ保持部２３に保持されたデータの攪拌動作の開始指示とその方法の選択を行い、さらに攪拌動作の中止の指示を行う。乱数系列生成部２６は、前記データ保持部２３に保持されたデータから乱数系列を生成して出力する。
【００３５】
データ処理装置２１が備える機能を簡単に説明する。
【００３６】
＜改ざん検証機能＞
データ処理装置２１がネットワークインターフェース３５を通じて外部装置３６からデータを受信した時、共通鍵暗号処理回路２８は、受信したデータを暗号化する。また、ＭＤ生成回路３０は、暗号化されたデータのハッシュ値を生成する。ＨＤＤ３４は、ＨＤＤインターフェース３３を通じて暗号化されたデータと暗号化されたデータのハッシュ値を受信し、保存する。なお、この暗号化では、乱数生成回路２２により生成された乱数が暗号鍵として用いられる。また、データ処理装置２１は、ＨＤＤインターフェース３３を通じて暗号化されたデータと暗号化されたデータのハッシュ値をＨＤＤ３４から受信した時、ＭＤ生成回路３０は、暗号化されたデータのハッシュ値を、再度計算する。そして、新たに求めたハッシュ値と保存していたハッシュ値とを比べ、値が等しかった場合には、共通鍵暗号処理回路２８で暗号化されたデータを復号し、ネットワークインターフェース３５を通じて外部装置３６に復号したデータを送信する。
【００３７】
＜データ攪拌機能＞
次に、データ保持部２３に保持されたデータを攪拌する方法について説明する。
【００３８】
図４は、本発明におけるデータ保持部２３に保持されたデータを攪拌する際の攪拌制御部２４の動作を示したフローチャートである。図４を用いて実施形態２におけるデータ保持部２３に保持されたデータを攪拌する方法について説明する。
【００３９】
ステップＳ２０１において、攪拌制御部２４は、データの攪拌を行う際に、第１動作状況通知信号２９及び第２動作状況通知信号３１に基づいて共通鍵暗号処理回路２８及びＭＤ生成回路３０が休止状態であるか否かを検査する。共通鍵暗号処理回路２８及びＭＤ生成回路３０が両方とも休止状態でない場合、後述するステップＳ２１０に進む。Ｓ２１０において、攪拌制御部２４はマイクロプロセッサを用いた攪拌を選択する。
【００４０】
ステップＳ２０２において、ステップＳ２０１で共通鍵暗号処理回路２８及びＭＤ生成回路３０のどちらか、もしくは両方が休止状態であった場合、攪拌制御部２４は、使用可能回路が複数個あるか検査する。使用可能回路が複数個であった場合、後述するステップＳ２０３で優先度を検査する。使用可能回路が単数個であった場合、後述するＳ２０４で攪拌処理回路を用いた攪拌を選択する。
【００４１】
ステップＳ２０３において、攪拌制御部２４は、使用可能回路の優先度を検査する。そして優先度が高い回路を、後述するステップＳ２０４でデータ保持部２３を攪拌する方法として選択する。例えば、ＭＤ生成回路３０の方が共通鍵暗号処理回路２８よりも優先度が高ければ、攪拌制御部２４はデータ保持部２３の攪拌方法としてＭＤ生成回路３０を選択する。
【００４２】
ステップＳ２０４において、攪拌制御部２４は、攪拌処理回路を用いた攪拌を選択する。
【００４３】
ステップＳ２０５において、攪拌制御部２４は、ステップＳ２０４で選択された回路に対してデータ保持部２３に保持されたデータを攪拌する指示を行う。
【００４４】
ステップＳ２０６において、攪拌制御部２４は、選択された回路がデータ保持部２３に保持されたデータの攪拌を終了したか否かを検査する。このとき、選択された回路がデータ保持部２３の攪拌を終了している場合は、攪拌制御部２４は動作を終了する。選択された回路がデータ保持部２３の攪拌を終了していない場合は、後述するステップＳ２０７に進む。
【００４５】
ステップＳ２０７において、攪拌制御部２４は、マイクロプロセッサ２７から攪拌処理回路の回路使用要求信号３２があるか否かを検査する。このとき、回路使用要求信号３２がない場合は、攪拌を継続しステップＳ２０６に戻る。一方、回路使用要求信号３２がある場合は、後述するステップＳ２０８に進む。
【００４６】
ステップＳ２０８において、攪拌制御部２４は、選択された回路に対し攪拌中止の指示を行う。
【００４７】
ステップＳ２０９において、攪拌制御部２４は、第１動作状況通知信号または第２動作状況通知信号から、ステップＳ２０７で攪拌制御部２４に対しマイクロプロセッサ２７から回路使用要求信号３２があった回路以外の回路が休止状態であるか否かを検査する。例えば、実施形態２において、攪拌方法としてＭＤ生成回路３０を選択していた時に、攪拌制御部２４が回路使用要求信号３２を受信した場合、攪拌制御部２４は共通鍵暗号処理回路２８が休止状態か否か第１動作状況通知信号を通じて検査する。
【００４８】
ステップＳ２０９で休止状態の攪拌処理回路が見つかった場合にはステップＳ２０２に戻り、ステップＳ２０２以降の処理を行う。しかし、ステップＳ２０９において休止状態の回路が見つからなかった場合には、後述するＳ２１０に進む。
【００４９】
ステップＳ２１０において、攪拌制御部２４は、マイクロプロセッサ２７を用いたデータ保持部２３の攪拌方法を選択する。
【００５０】
ステップＳ２１１において、攪拌制御部２４は、マイクロプロセッサ２７に対してデータ保持部２３に保持されたデータを攪拌する指示を行う。
【００５１】
ステップＳ２１２において、攪拌制御部２４は、マイクロプロセッサ２７がデータ保持部２３の攪拌を終了したか否かを検査する。攪拌が終了していない場合は、攪拌制御部２４は攪拌を継続する。攪拌が終了した場合は、攪拌制御部２４は動作を終了する。
【００５２】
以上のように、複数の攪拌処理回路が休止状態である場合に優先度が高い攪拌処理回路を選択してデータの攪拌を行うことにより、効率的にデータの攪拌を行うことができる。また、攪拌制御部２４が選択した方法でデータを攪拌させている時に、マイクロプロセッサ２７から回路使用要求信号３２を受信すると、攪拌制御部２４は、選択した回路に対して攪拌中止の指示を行い、要求された処理を優先して行う。これにより、要求された処理を妨げることなくデータを攪拌することができる。また、データの攪拌を中止した後に、攪拌制御部２４はマイクロプロセッサ２７から回路使用要求信号３２を受信した回路以外の攪拌処理回路が休止状態かどうか否かを検査する。休止状態の攪拌処理回路が見つかった場合には、攪拌制御部２４は見つかった攪拌処理回路を選択して攪拌の指示を行うので、高速にかつ効率的に攪拌を行うことができる。
【００５３】
変形例として、休止状態の攪拌処理回路が複数あった場合に、攪拌制御手段は、休止状態の攪拌処理回路のうち２つ以上の回路に攪拌の指示を行うこともできる。２つ以上の攪拌処理回路にデータを並行処理させることにより、さらに効率的に攪拌を行うことができる。
【００５４】
実施形態２では、攪拌制御部２４はステップＳ２０１で第１動作状況通知信号及び第２動作状況通知信号を基づいて、共通鍵暗号処理回路２８とＭＤ生成回路３０の両方の回路に対し休止状態であるか否かを検査する。そしてステップＳ２０３で優先度を検査し、ステップＳ２０４でデータ保持部２３を攪拌する回路を選択している。しかし、このステップＳ２０１とステップＳ２０４の処理を同時に行うことも可能である。つまり、優先度の高い方の回路が休止状態か否かを検査し、休止状態であったならば回路の検査を終了し、攪拌制御部２４は見つかった回路を用いたデータの攪拌方法を選択するという方法も可能である。
【００５５】
＜実施形態３＞
図５は実施形態３におけるデータ処理装置の構成図である。図５において、データ処理装置４１は乱数系列を生成する乱数生成回路４２と、共通鍵暗号アルゴリズムを高速に処理する第１の共通鍵暗号処理回路４８と、第１の共通鍵暗号処理回路４８と同一処理を行う第２の共通鍵暗号処理回路５０と、前記第１の共通鍵暗号処理回路４８と前記第２の共通鍵暗号処理回路が実行するアルゴリズムと同一の共通鍵暗号アルゴリズムをプログラム実行するマイクロプロセッサ４７と、前記第１の共通鍵暗号処理回路４８が休止状態であるか否かを前記乱数生成回路４２と前記マイクロプロセッサ４７に通知する第１動作状況通知信号４９と、前記第２の共通鍵暗号処理回路５０が休止状態であるか否か前記乱数生成回路４２と前記マイクロプロセッサ４７に通知する第２動作状況通知信号５１と、前記マイクロプロセッサ４７から前記乱数生成回路４２及び前記第１の共通鍵暗号処理回路４８、前記第２の共通鍵暗号処理回路５０に回路の使用要求を通知する回路使用要求信号５２と、外部装置５６とデータをやり取りするネットワークインターフェース５５と、ＨＤＤ５４とデータをやり取りするＨＤＤインターフェース５３を備えている。
【００５６】
なお、前記第１の共通鍵暗号処理回路４８と前記第２の共通鍵暗号処理回路５０の構成は、これに限らない。例えば、回路４８、５０として、ＭＤ生成回路等を複数回路備えていても良く、また備えている回路の数も２個に限ったことではない。
【００５７】
また、マイクロプロセッサは、プログラムを実行できる演算処理手段であれば良い。
【００５８】
前記乱数生成回路４２は、データ保持部４３と、攪拌制御部４４と、乱数系列生成部４６を備える。データ保持部４３は、乱数生成用のデータを保存する。攪拌制御部４４は、前記第１の共通鍵暗号処理回路４８と前記第２の共通鍵暗号処理回路５０の動作状況を前記第１動作状況通知信号４９及び前記第２動作状況通知信号５１を通じて判断する。さらに前記データ保持部４３の攪拌動作の開始指示とその方法の選択を行い、攪拌動作の中止の指示を行う。乱数系列生成部４６は、前記データ保持部４３に保持されているデータから乱数系列を生成して出力する。
【００５９】
ここで、データ処理装置４１の動作の例を簡単に説明する。
【００６０】
＜暗号化機能＞
データ処理装置４１はネットワークインターフェース５５を通じて外部装置５６からデータを受信した時、第１の共通鍵暗号処理回路４８または第２の共通鍵暗号処理回路５０は、受信したデータを暗号化する。次にデータ処理装置４１はＨＤＤインターフェース５３を通じてＨＤＤ５４に暗号化したデータを保存する。このとき、乱数生成回路４２が生成した乱数を暗号鍵として用いる。また、データ処理装置４１はＨＤＤインターフェース５３を通じてＨＤＤ５４から暗号化されたデータを受信した時、第１の共通鍵暗号処理回路４８または第２の共通鍵暗号処理回路５０は、暗号化されたデータを復号する。次にデータ処理装置４１はネットワークインターフェース５５を通じて外部装置５６に復号したデータを送信する。
【００６１】
＜データ攪拌機能＞
次に、データ保持部４３を攪拌する方法について説明する。
【００６２】
図６は、本発明における攪拌制御部４４の動作を示したフローチャートである。図６を用いて実施形態３における攪拌制御部４４の攪拌を説明する。
【００６３】
ステップＳ４０１において、攪拌制御部４４は休止状態の攪拌処理回路（第１の共通鍵暗号処理回路４８と第２の共通鍵暗号処理回路５０）が２個以上あるか否かを検査する。攪拌制御部４４は第１動作状況通知信号４９及び第２動作状況通知信号５１に基づいて第１の共通鍵暗号処理回路４８及び第２の共通鍵暗号処理回路５０が休止状態であるか否かを検査する。休止状態の攪拌処理回路が１個以下の場合、後述するステップＳ４０８で攪拌制御部４４はデータ保持部４３を攪拌する方法としてマイクロプロセッサ４７を選択する。また休止状態の攪拌処理回路が２個以上ある場合は、後述するＳ４０２に進む。
【００６４】
ステップＳ４０２において、攪拌制御部４４は、データ保持部４３に保持されたデータを攪拌する回路を選択する。実施形態３の場合では、第１の共通鍵暗号処理回路４８及び第２の共通鍵暗号処理回路５０が共に休止状態であったとき、攪拌制御部４４は第１の共通鍵暗号処理回路４８をデータ保持部４３に保持されたデータを攪拌する回路として選択する。
【００６５】
ステップＳ４０３において、攪拌制御部４４は、ステップＳ４０２で選択した攪拌処理回路対してデータを攪拌する指示を行う。
【００６６】
ステップＳ４０４において、攪拌制御部４４は、選択した攪拌処理回路がデータ保の攪拌を終了したか否かを検査する。このとき、選択した攪拌処理回路がデータの攪拌を終了している場合は、攪拌制御部４４は動作を終了する。一方、選択した攪拌処理回路がデータの攪拌を終了していない場合は、後述するＳ４０５に進む。
【００６７】
ステップＳ４０５において、攪拌制御部４４はステップＳ４０２でデータ保持部４３を攪拌する方法として選択した回路に対する回路使用要求信号５２があるか否かを検査する。このとき、回路使用要求信号５２がない場合は、攪拌を継続しＳ４０４に戻る。回路使用要求信号５２がある場合は、後述するＳ４０６に進む。
【００６８】
ステップＳ４０６において、攪拌制御部４４は、選択した攪拌処理回路に対し攪拌中止の指示を行う。
【００６９】
ステップＳ４０７において、攪拌制御部４４は、ステップＳ４０５でマイクロプロセッサ４７から回路使用要求信号５２があった回路以外の攪拌処理回路が２個以上、休止状態であるか否かを検査する。例えば、攪拌手段が第１の共通鍵暗号処理回路４８の時に、攪拌制御部４４が回路使用要求信号５２を受信した場合、第１の共通鍵暗号処理回路４８以外の攪拌処理回路が２個以上、休止状態であるか否かを検査する。そして、休止状態の攪拌処理回路が２個以上見つかった場合にはステップＳ４０２に戻り、ステップＳ４０２以降の処理を行う。一方、ステップＳ４０７において休止状態の攪拌処理回路が２個以上見つからなかった場合は、後述するＳ４０８に進む。
【００７０】
ステップＳ４０８において、攪拌制御部４４は、マイクロプロセッサ４７を用いたデータ保持部４３の攪拌方法を選択する。
【００７１】
ステップＳ４０９において、攪拌制御部４４は、マイクロプロセッサ４７に対して攪拌の指示を行う。
【００７２】
ステップＳ４１０において、攪拌制御部４４は、マイクロプロセッサ４７がデータ保持部４３に保持されたデータの攪拌を終了したか否かを検査し、攪拌が終了していない場合は、攪拌制御部４４は攪拌を継続する。攪拌が終了した場合は、攪拌制御部４４は動作を終了する。
【００７３】
以上のように、複数の攪拌処理回路が休止状態である場合に優先度が高い攪拌処理回路を選択してデータ保持部４３に保持されたデータの攪拌を行うことにより、より効率的に攪拌を行うことができる。また、ステップＳ４０１において、外部から要求された処理を行うために常に１つ以上の回路を休止状態にしているので、外部から要求された処理を妨げることなくデータ保持部４３に保持されたデータの攪拌を行うことができる。
【００７４】
また選択された回路がデータを攪拌している時に、攪拌制御部４４は、ステップＳ４０２で選択した回路を用いた回路使用要求信号５２を受信すると、選択された回路に攪拌中止の指示を行い、外部から要求された処理を優先して行う。これにより、外部から要求された処理を妨げることなくデータ保持部４３に保持されたデータを攪拌することができる。
【００７５】
また、データ保持部４３の攪拌を中止した後に、攪拌制御部４４はマイクロプロセッサ４７から回路使用要求信号５２を受信した回路以外の攪拌処理回路が使用可能か否かを検査する。そして使用可能な攪拌処理回路が見つかった場合には、攪拌制御部４４は見つかった攪拌処理回路を選択してその選択した回路に攪拌の指示を行うので、高速にかつ効率的に攪拌を行うことができる。
【００７６】
＜実施形態４＞
図７は実施形態４におけるデータ処理装置の構成図である。図７において、データ処理装置６１は乱数系列を生成する乱数生成回路６２と、共通鍵暗号アルゴリズムを高速に処理する第１の共通鍵暗号処理回路６８と、第１の共通鍵暗号処理回路６８と同一処理を行う第２の共通鍵暗号処理回路７０と、データのハッシュ値を高速に計算する第１のＭＤ生成回路７２と、第１のＭＤ生成回路７２と同一処理を行う第２のＭＤ生成回路７４と、前記第１の共通鍵暗号処理回路６８及び第１のＭＤ生成回路７４が実行するアルゴリズムと同一のアルゴリズムをプログラム実行するマイクロプロセッサ６７と、前記第１の共通鍵暗号処理回路６８が休止状態であるか否か前記乱数生成回路６２と前記マイクロプロセッサ６７に通知する第１動作状況通知信号６９と、前記第２の共通鍵暗号処理回路７０が休止状態であるか否か前記乱数生成回路６２と前記マイクロプロセッサ６７に通知する第２動作状況通知信号７１と、前記第１のＭＤ生成回路７２が休止状態であるか否かを前記乱数生成回路６２と前記マイクロプロセッサ６７に通知する第３動作状況通知信号７３と、前記第２のＭＤ生成回路７４が休止状態であるか否か前記乱数生成回路６２と前記マイクロプロセッサ６７に通知する第４動作状況通知信号７５と、前記マイクロプロセッサ６７から前記乱数生成回路６２、前記第１の共通鍵暗号処理回路６８、前記第２の共通鍵暗号処理回路７０、前記第１のＭＤ生成回路７２及び前記第２のＭＤ生成回路７４に暗号処理要求を通知する回路使用要求信号７６と、外部装置８０とデータをやり取りするネットワークインターフェース７９と、ＨＤＤ７８とデータをやり取りするＨＤＤインターフェース７７を備えている。
【００７７】
複数の攪拌処理回路を前記第１の共通鍵暗号処理回路６８、前記第２の共通鍵暗号処理回路７０、前記第１のＭＤ生成回路７２及び前記第２のＭＤ生成回路としているが、これに限らない。また、備えている回路の数及び種類も２個に限ったことではない。
【００７８】
また、マイクロプロセッサは、プログラムを実行できる演算処理手段であれば良い。
【００７９】
前記乱数生成回路６２は、データ保持部６３と、攪拌制御部６４と、乱数系列生成部６６を備える。データ保持部６３は、乱数生成用のデータを一時的に保存する。攪拌制御部６４は前記第１の共通鍵暗号処理回路６８、前記第２の共通鍵暗号処理回路７０、前記第１のＭＤ生成回路７２及び前記第２のＭＤ生成回路７４の動作状況を前記第１動作状況通知信号６９及び前記第２動作状況通知信号７１、前記第３動作状況通知信号７３、前記第４動作状況通知信号７５から判断する。そして前記データ保持部６３に保持されたデータの攪拌動作の開始指示とその方法の選択を行い、さらに攪拌動作の中止の指示を行う。乱数系列生成部６６は前記データ保持部６３に保持されているデータから乱数系列を生成して出力する。
【００８０】
ここで、データ処理装置６１の動作の例を簡単に説明する。
【００８１】
＜暗号化／改ざん検証機能＞
データ処理装置６１はネットワークインターフェース７９を通じて外部装置８０からデータを受信した時、第１の共通鍵暗号処理回路６８または第２の共通鍵暗号処理回路７０で受信したデータを暗号化する。また、第１のＭＤ生成回路７２または第２のＭＤ生成回路７４は、暗号化したデータのハッシュ値を生成する。ＨＤＤ７８は、ＨＤＤインターフェース７７を通じて暗号化されたデータと暗号化したデータのハッシュ値を受信し、保存する。なお、この暗号化では乱数生成回路６２により生成された乱数が暗号鍵として用いられる。また、データ処理装置６１は、ＨＤＤインターフェース７７を通じて暗号化されたデータと暗号化されたデータのハッシュ値をＨＤＤ７８から受信する。その時に、第１のＭＤ生成回路７２または第２のＭＤ生成回路７４は、受信した暗号化されたデータのハッシュ値を再度計算する。そして、新たに生成したハッシュ値と保存していたハッシュ値を比較する。比較する値が等しかった場合には第１の共通鍵暗号処理回路６８または第２の共通鍵暗号処理回路７０で暗号化されたデータを復号し、ネットワークインターフェース７９を通じて外部装置８０に復号したデータを送信する。
【００８２】
＜データ攪拌機能＞
次に、データ保持部６３に保持されたデータを攪拌する方法について説明する。
【００８３】
図８は、本発明におけるデータ保持部６３に保持されたデータを攪拌する際の攪拌制御部６４の動作を示したフローチャートである。図８を用いて実施形態４におけるデータ保持部６３に保持されたデータを攪拌する方法について説明する。
【００８４】
ステップＳ６０１において、攪拌制御部６４はデータ保持部６３に保持されたデータの攪拌を行う際に、同一のアルゴリズムを実行する攪拌処理回路において、同一のアルゴリズムを実行する攪拌処理回路が２個以上休止状態であるか否か検査する。攪拌制御部６４は、第１動作状況通知信号６９及び第２動作状況通知信号７１に基づいて、共通鍵暗号アルゴリズムを実行する第１の共通鍵暗号処理回路６８及び第２の共通鍵暗号処理回路７０が共に休止状態であるか否かを検査する。そして、攪拌制御部６４は、第３動作状況通知信号７３及び第４動作状況通知信号７５に基づいて、第１のＭＤ生成回路７２、第２のＭＤ生成回路７４が共に休止状態であるか否かを検査する。全ての攪拌処理回路において、同一のアルゴリズムを実行する攪拌処理回路が２個以上休止状態でない場合は、後述するステップＳ６１２で攪拌制御部６４はデータ保持部６３に保持されたデータを攪拌する方法としてマイクロプロセッサ６７を選択する。実施形態４では、第１の共通鍵暗号処理回路６８及び第２の共通鍵暗号処理回路７０が共に、もしくは一方が実行状態であり、かつ、第１のＭＤ生成回路７２及び第２のＭＤ生成回路７４が共に、もしくは一方が実行状態の場合がこれに該当する。
【００８５】
また、同一のアルゴリズムを実行する攪拌処理回路が２個以上休止状態である場合は、後述するステップＳ６０２に進む。
【００８６】
ステップＳ６０２において、攪拌制御部６４は、同一のアルゴリズムを実行する回路で２個以上の攪拌処理回路が休止状態である回路が、複数種類あるか否かを検査する。実施形態４の場合では、共通鍵暗号処理回路とＭＤ生成回路が共に２個以上休止状態であるか否か検査する。このステップＳ６０２における検査の結果、同一のアルゴリズムを実行する回路で２個以上の攪拌処理回路が休止状態である回路が複数種類ある場合には、後述するＳ６０３に進む。また、同一のアルゴリズムを実行する回路で２個以上の攪拌処理回路が休止状態である回路が１種類しかない場合は、その回路を選択する。実施形態４の場合では、第１の共通鍵暗号処理回路６８及び第２の共通鍵暗号処理回路７０はどちらか一方が実行状態であり、且つ第１のＭＤ生成回路７２及び第２のＭＤ生成回路７４が全て休止状態であるような場合、攪拌制御部６４はＭＤ生成回路を選択する。
【００８７】
ステップＳ６０３において、攪拌制御部６４は、使用可能である回路の優先度を検査し、優先度が最も高い回路を選択する。実施形態４では、第１の共通鍵暗号処理回路６８及び第２の共通鍵暗号処理回路７０と第１のＭＤ生成回路７２及び第２のＭＤ生成回路７４が全て休止状態である時に、ＭＤ生成回路の優先度が共通鍵暗号処理回路よりも高い場合には、ＭＤ生成回路を選択する。
【００８８】
ステップＳ６０４において、攪拌制御部６４は、選択した攪拌処理回路の中から、データ保持部６３に保持されたデータを攪拌する暗号処理回路を選択する。
【００８９】
ステップＳ６０５において、攪拌制御部６４は、ステップＳ６０４で選択した攪拌処理回路に対してデータ保持部６３に保持されたデータを攪拌する指示を行う。
【００９０】
ステップＳ６０６において、攪拌制御部６４は、選択した攪拌処理回路が攪拌を終了したか否かを検査する。このとき、選択した攪拌処理回路が攪拌を終了している場合は、攪拌制御部６４は動作を終了する。しかし、選択した攪拌処理回路が攪拌を終了していない場合は、後述するＳ６０７に進む。
【００９１】
ステップＳ６０７において、攪拌制御部６４は、マイクロプロセッサ６７から選択した回路に対する回路使用要求信号７６があるか否かを検査する。このとき、回路使用要求信号７６がない場合は、攪拌を継続しＳ６０６に戻る。回路使用要求信号７６がある場合は、後述するＳ６０８に進む。
【００９２】
ステップＳ６０８において、攪拌制御部６４は、選択した攪拌処理回路に対し攪拌中止の指示を行う。
【００９３】
ステップＳ６０９において、攪拌制御部６４は、ステップ６０７で攪拌制御部６４に対しマイクロプロセッサ６７から使用要求があった攪拌処理回路以外の攪拌処理回路に対し、同一アルゴリズムを実行する攪拌処理回路が２個以上休止状態であるかを検査する。実施形態４の場合では、攪拌手段が第１のＭＤ生成回路６８の時に、攪拌制御部６４が回路使用要求信号７６を受信した場合、第１の共通鍵暗号処理回路６８及び第２の共通鍵暗号処理回路７０、第２のＭＤ生成回路７４が休止状態であるか否かを検査する。
【００９４】
そして、その同一アルゴリズムを実行する攪拌処理回路が２個以上休止状態である場合にはステップＳ６０２に戻り、ステップＳ６０２以降の処理を行う。しかし、ステップＳ６０９で検査を行った結果、全ての攪拌処理回路において、各アルゴリズムを実行する攪拌処理回路が２個以上休止状態でない場合には、後述するＳ６１０に進む。
【００９５】
ステップＳ６１０において、攪拌制御部６４は、マイクロプロセッサ６７を用いた攪拌方法を選択する。
【００９６】
ステップＳ６１１において、攪拌制御部６４は、マイクロプロセッサ６７に対して攪拌の指示を行う。
【００９７】
ステップＳ６１２において、攪拌制御部６４は、マイクロプロセッサ６７が攪拌を終了したか否かを検査し、攪拌が終了していない場合は、攪拌を継続する。攪拌が終了した場合は、攪拌制御部６４は動作を終了する。
【００９８】
以上のように、複数種類の回路が休止状態である場合に、優先度が高い攪拌処理回路を選択してデータ保持部６３に保持されたデータの攪拌を行うことにより、より効率的に攪拌を行うことができる。また、ステップＳ６０１において、外部からの要求された処理を行うために、常に１つ以上の回路を休止状態にしているので、外部からの要求された処理を妨げることなくデータ保持部６３に保持されたデータの攪拌を行うことができる。
【００９９】
また、攪拌制御部６４がステップＳ６０４で選択した攪拌方法を用いて攪拌している時に、攪拌制御部６４は、ステップＳ６０４で選択した回路の回路使用要求信号７６をマイクロプロセッサ６７から受信すると、選択した回路に攪拌中止の指示を行う。これにより、要求された処理を妨げることなくデータ保持部６３に保持されたデータを攪拌することができる。
【０１００】
また、攪拌を中止した後に、攪拌制御部６４はマイクロプロセッサ６７から回路使用要求信号７６を受信した回路以外の攪拌処理回路が使用可能か否かを検査する。そして使用可能な攪拌処理回路が見つかった場合には、攪拌制御部６４は見つかった攪拌処理回路を選択して攪拌の指示を行うので、高速にかつ効率的に攪拌を行うことができる。
【図面の簡単な説明】
【０１０１】
【図１】実施形態１の構成図
【図２】実施形態１における攪拌制御部４の動作を示したフローチャート
【図３】実施形態２の構成図
【図４】実施形態２における攪拌制御部２４の動作を示したフローチャート
【図５】実施形態３の構成図
【図６】実施形態３における攪拌制御部４４の動作を示したフローチャート
【図７】実施形態４の構成図
【図８】実施形態４における攪拌制御部６４の動作を示したフローチャート
【符号の説明】
【０１０２】
１  データ処理装置
２  乱数生成回路
３  データ保持部
４  攪拌制御部
６  乱数系列生成部
７  マイクロプロセッサ
８  共通鍵暗号処理回路
９  動作状況通知信号
１０  回路使用要求信号
１１  ＨＤＤインターフェース
１２  ＨＤＤ
１３  ネットワークインターフェース
１４  外部装置
【図１】
2007171811.tif 000003
【図２】
2007171811.tif 000004
【図３】
2007171811.tif 000005
【図４】
2007171811.tif 000006
【図５】
2007171811.tif 000007
【図６】
2007171811.tif 000008
【図７】
2007171811.tif 000009
【図８】
2007171811.tif 000010