説明

データ処理装置並びにデータ処理方法

【課題】 データ保持部に保持されているデータから乱数系列を生成するデータ処理装置において、前記データを攪拌するための専用回路を備えることなく、また、暗号処理を妨げずに、高速に前記データを攪拌すること。
【解決手段】 データ保持部に保持されているデータの攪拌を行う際に、所定暗号アルゴリズムを高速に実行する暗号処理回路が休止状態ならば、制御部は休止状態の暗号処理回路を選択し、そうでなければ制御部4はマイクロプロセッサ7を選択して前記データの攪拌を行わせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを装置内で攪拌し、出力するデータ処理装置に関する。
【背景技術】
【0002】
近年、共通鍵暗号や公開鍵暗号等を利用してデータ通信は行われているが、より安全なデータ通信を行うために、乱数生成技術は不可欠なものとなっている。この乱数の用途としては、暗号化に使用する鍵の生成や認証用メッセージの生成などがある。このような用途に乱数を使用する場合、外部からは推測することができない安全な乱数を生成することが重要である。
【0003】
乱数生成の方法は、自然界の物理現象に基づいて乱数を生成する物理乱数生成方式と、一定のアルゴリズムを用いて数学的な演算により乱数を生成する擬似乱数生成方式が存在する。物理乱数生成方式では熱雑音や発振回路などを利用して乱数を生成する。このようにして生成された乱数は、数学的に真性乱数に近い乱数となっている。しかし、この物理乱数生成には、特別な回路が必要である。一方、擬似乱数生成方式として、ハッシュ演算を用いて擬似乱数を生成する技術(特許文献1)が知られている。
【特許文献1】特開2004−109420号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来はデータをソフトウェア処理する機構とハードウェア処理する機構を備え、これらを効率良く用いる手法は確立していなかった。
【0005】
本発明はかかる事情に鑑みてなされたものであり、その主な目的は、ハードウェアとソフトウェアの攪拌処理手段を備えた装置において、これらの手段を効率良く用いてデータを攪拌し、出力する技術を提供することにある。
【0006】
また、できるだけ高速にデータを攪拌することを更なる目的とする。
【0007】
また、データを攪拌するための専用回路を備えることなく、他の処理回路を用いて攪拌することを更なる目的とする。
【課題を解決するための手段】
【0008】
上記の目的を達成するために、本発明によるデータ処理装置は、データを保持する保持手段と、前記保持手段に保持されたデータの攪拌処理を実行可能な攪拌処理手段と、前記保持手段に保持されたデータの攪拌処理を攪拌処理プログラムに基づいて実行可能な演算処理手段と、前記攪拌処理手段の動作状態に基づいて、前記攪拌処理手段と前記演算処理手段を制御する攪拌制御手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明のデータ処理装置によれば、ハードウェアとソフトウェアの攪拌処理手段を備えた装置において、これらの手段を効率良く用いてデータを攪拌し、出力することができる。
【発明を実施するための最良の形態】
【0010】
<実施形態1>
図1は実施形態1におけるデータ処理装置の構成図である。図1において、データ処理装置1は、乱数系列を生成する乱数生成回路2と、共通鍵暗号アルゴリズムを高速に実行する共通鍵暗号処理回路8と、前記共通鍵暗号処理回路8が実行する暗号アルゴリズムと同一の暗号アルゴリズムをプログラム実行するマイクロプロセッサ7と、前記共通鍵暗号処理回路8が休止状態であるか否かを前記乱数生成回路2と前記マイクロプロセッサ7に通知する動作状況通知信号9と、前記マイクロプロセッサ7から前記乱数生成回路2及び前記共通鍵暗号処理回路8に回路の使用要求を通知する回路使用要求信号10と、外部装置14とデータをやり取りするネットワークインターフェース13と、HDD(ハードディスクドライブ)12とデータをやり取りするHDDインターフェース11を備えている。
【0011】
なお、前記共通鍵暗号処理回路8の構成はこれに限らない。例えば、回路8として、公開鍵暗号アルゴリズムを実行する公開鍵暗号処理回路や、ハッシュ値を計算するMD(メッセージ・ダイジェスト)生成回路を適用してもよい。
【0012】
また、マイクロプロセッサ7は、プログラムを実行できる演算処理手段であれば良い。
【0013】
前記乱数生成回路2は、データ保持部3と、攪拌制御部4と、乱数系列生成部6を備える。データ保持部3は、乱数生成用のデータを一時保存する。攪拌制御部4は、前記共通鍵暗号処理回路8の動作状況を前記動作状況通知信号9から判断し、さらに前記データ保持部3に保持されたデータの攪拌の開始指示とその方法の選択を行い、さらに攪拌動作の中止の指示を行う。乱数系列生成部6は、前記データ保持部3に保持されているデータから乱数系列を生成して出力する。
【0014】
以下、データ処理装置1の動作を簡単に説明する。
【0015】
<暗号化機能>
データ処理装置1がネットワークインターフェース13を通じて外部装置14からデータを受信した時、共通鍵暗号処理回路8は、受信したデータを暗号化し、HDDインターフェースを通じてHDD12に暗号化したデータを保存する。このとき、乱数生成回路2が生成した乱数を暗号鍵として用いる。また、データ処理装置1が、HDDインターフェース11を通じてHDD12から暗号化されたデータを受信した時、共通鍵暗号処理回路8は、受信した暗号化されたデータを復号する。そして共通鍵暗号処理回路8は、ネットワークインターフェース13を通じて外部装置14に復号されたデータを送信する。
【0016】
<データ攪拌機能>
次に、データ保持部3を攪拌する方法について説明する。
【0017】
図2は本実施形態における攪拌制御部4の動作を示したフローチャートである。図2を用いて実施形態1における攪拌制御部4の攪拌動作を説明する。
【0018】
ステップS101において、攪拌制御部4は、データ保持部3に保持されたデータの攪拌を行う際に、動作状況通知信号9に基づいて共通鍵暗号処理回路8が休止状態であるか否かを検査する。共通鍵暗号処理回路8が休止状態でなかった場合、後述するステップS107に進む。S107おいて、攪拌制御部4はマイクロプロセッサ7を用いた攪拌方法を選択する。
【0019】
ステップS102において、ステップS101での検査の結果、共通鍵暗号処理回路8が休止状態であった場合、攪拌制御部4は共通鍵暗号処理回路8を用いた攪拌方法を選択する。
【0020】
ステップS103において、攪拌制御部4は共通鍵暗号処理回路8に対しデータ保持部3の攪拌の指示を行う。
【0021】
ステップS104において、攪拌制御部4は、共通鍵暗号処理回路8がデータ保持部3の攪拌を終了したか否かを検査する。このときに、共通鍵暗号処理回路8がデータ保持部3の攪拌を終了している場合は、攪拌制御部4は動作を終了する。
【0022】
ステップS105において、共通鍵暗号処理回路8がデータ保持部3の攪拌を終了していない場合に、攪拌制御部4はマイクロプロセッサ7から回路使用要求信号10があるか否かを検査する。このとき、回路使用要求信号10がない場合は、攪拌を継続しステップS104に戻る。
【0023】
回路使用要求信号とは、外部から回路の使用要求があったときに、マイクロプロセッサ7が、攪拌制御部4と使用する回路に、処理の要求をする信号である。実施形態1の場合、外部装置14からデータの暗号処置要求があったときに、マイクロプロセッサ7が共通鍵暗号処理回路8と攪拌制御部4に、回路の使用要求を指示する信号である。
【0024】
ステップ106において、ステップS105で回路使用要求信号10がある場合に、攪拌制御部4は共通鍵暗号処理回路8に対し攪拌中止の指示を行う。
【0025】
ステップS107において、攪拌制御部4は、マイクロプロセッサ7を用いてデータ保持部3を攪拌する方法を選択した後に、後述するステップS108においてマイクロプロセッサ7に対して攪拌の指示を行う。
【0026】
ステップS108において、攪拌制御部4は、マイクロプロセッサ7に対して攪拌の指示を行う。
【0027】
ステップS109において、マイクロプロセッサ7がデータ保持部3の攪拌を終了したか否かを検査する。攪拌が終了していない場合、攪拌を継続しステップS109に戻る。攪拌が終了した場合、攪拌制御部4は動作を終了する。
【0028】
以上のように、攪拌制御部4は、高速に処理を実行できる共通鍵暗号処理回路8が休止状態であるならば共通鍵暗号処理回路8を選択し、動作状態ならばマイクロプロセッサ7を用いたデータ保持部3の攪拌方法を選択する。このように共通鍵暗号処理回路8をできるだけ利用することで、マイクロプロセッサ7のみを使用する場合と比べてより高速に、またより少ない電力でデータ保持部3に保持されたデータを攪拌することができる。また、攪拌制御部4が選択した方法でデータを攪拌させている時に、攪拌制御部4が、マイクロプロセッサ7から、選択した回路の回路仕様要求信号10を受信すると、攪拌制御部4は攪拌中止の指示を行い、暗号処理を優先して行うようにする。このようにすることにより、暗号処理を妨げることなくデータ保持部3に保持されたデータを攪拌することができる。
【0029】
なお変形例として、共通鍵暗号処理回路8がMD生成回路でもよい。以下、MD生成回路である場合のデータ処理装置の動作を説明する。データ処理装置はネットワークインターフェース13を通じて外部装置14からデータを受信すると、MD生成回路でデータとそのハッシュ値を計算する。そして、HDDインターフェース11を通じてHDD12にデータのハッシュ値を保存する。または、ネットワークインターフェース13を通じて外部装置にデータのハッシュ値を送信する。このMD生成回路が休止状態の時に、攪拌制御部4は、データ保持部3に保持されたデータの攪拌をMD生成回路に指示する。
【0030】
また、攪拌制御部4は、高速に処理を実行できる共通鍵暗号処理回路8が休止状態であるならば共通鍵暗号処理回路8とマイクロプロセッサ7を両方選択し、両方並行してデータ保持部3の攪拌を制御してもよい。
【0031】
<実施形態2>
図3は実施形態2におけるデータ処理装置の構成図である。図3において、データ処理装置21は乱数系列を生成する乱数生成回路22と、共通鍵暗号アルゴリズムを高速に処理する共通鍵暗号処理回路28と、データのハッシュ値を高速に計算するMD生成回路30と、前記共通鍵暗号処理回路28及びMD生成回路30が実行するアルゴリズムと同一のアルゴリズムをプログラム実行するマイクロプロセッサ27と、前記共通鍵暗号処理回路28が休止状態であるか否かを前記乱数生成回路22と前記マイクロプロセッサ27に通知する第1動作状況通知信号29と、前記MD生成回路30が休止状態であるか否かを前記乱数生成回路22と前記マイクロプロセッサ27に通知する第2動作状況通知信号31と、前記マイクロプロセッサ27から前記乱数生成回路22、前記共通鍵暗号処理回路28及び前記MD生成回路30に回路の使用要求を通知する回路使用要求信号32と、外部装置36とデータをやり取りするネットワークインターフェース35と、HDD34とデータをやり取りするHDDインターフェース33を備えている。
【0032】
なお、前記共通鍵暗号処理回路28並びにMD生成回路30は、これに限ったことではなく、公開鍵暗号アルゴリズムを実行する公開鍵暗号処理回路でも良い。また公開鍵暗号処理回路と共通鍵暗号処理回路といったように、違う演算を行う回路を複数回路備えていても良く、また、備えている回路の数も2個に限ったことではない。また、同じ演算を行う回路を複数回路備えていても良く、また、備えている回路の数も2個に限ったことではない。
【0033】
また、マイクロプロセッサは、プログラムを実行できる演算処理手段であれば、これに限ったことではない。
【0034】
前記乱数生成回路22は、データ保持部23と、攪拌制御部24と、乱数系列生成部26を備える。データ保持部23は、乱数生成用のデータを保存する。攪拌制御部24は、前記共通鍵暗号処理回路28及び前記MD生成回路30の動作状況を前記第1動作状況通知信号29及び前記第2動作状況通知信号を通じて判断する。さらに攪拌制御部24は、前記データ保持部23に保持されたデータの攪拌動作の開始指示とその方法の選択を行い、さらに攪拌動作の中止の指示を行う。乱数系列生成部26は、前記データ保持部23に保持されたデータから乱数系列を生成して出力する。
【0035】
データ処理装置21が備える機能を簡単に説明する。
【0036】
<改ざん検証機能>
データ処理装置21がネットワークインターフェース35を通じて外部装置36からデータを受信した時、共通鍵暗号処理回路28は、受信したデータを暗号化する。また、MD生成回路30は、暗号化されたデータのハッシュ値を生成する。HDD34は、HDDインターフェース33を通じて暗号化されたデータと暗号化されたデータのハッシュ値を受信し、保存する。なお、この暗号化では、乱数生成回路22により生成された乱数が暗号鍵として用いられる。また、データ処理装置21は、HDDインターフェース33を通じて暗号化されたデータと暗号化されたデータのハッシュ値をHDD34から受信した時、MD生成回路30は、暗号化されたデータのハッシュ値を、再度計算する。そして、新たに求めたハッシュ値と保存していたハッシュ値とを比べ、値が等しかった場合には、共通鍵暗号処理回路28で暗号化されたデータを復号し、ネットワークインターフェース35を通じて外部装置36に復号したデータを送信する。
【0037】
<データ攪拌機能>
次に、データ保持部23に保持されたデータを攪拌する方法について説明する。
【0038】
図4は、本発明におけるデータ保持部23に保持されたデータを攪拌する際の攪拌制御部24の動作を示したフローチャートである。図4を用いて実施形態2におけるデータ保持部23に保持されたデータを攪拌する方法について説明する。
【0039】
ステップS201において、攪拌制御部24は、データの攪拌を行う際に、第1動作状況通知信号29及び第2動作状況通知信号31に基づいて共通鍵暗号処理回路28及びMD生成回路30が休止状態であるか否かを検査する。共通鍵暗号処理回路28及びMD生成回路30が両方とも休止状態でない場合、後述するステップS210に進む。S210において、攪拌制御部24はマイクロプロセッサを用いた攪拌を選択する。
【0040】
ステップS202において、ステップS201で共通鍵暗号処理回路28及びMD生成回路30のどちらか、もしくは両方が休止状態であった場合、攪拌制御部24は、使用可能回路が複数個あるか検査する。使用可能回路が複数個であった場合、後述するステップS203で優先度を検査する。使用可能回路が単数個であった場合、後述するS204で攪拌処理回路を用いた攪拌を選択する。
【0041】
ステップS203において、攪拌制御部24は、使用可能回路の優先度を検査する。そして優先度が高い回路を、後述するステップS204でデータ保持部23を攪拌する方法として選択する。例えば、MD生成回路30の方が共通鍵暗号処理回路28よりも優先度が高ければ、攪拌制御部24はデータ保持部23の攪拌方法としてMD生成回路30を選択する。
【0042】
ステップS204において、攪拌制御部24は、攪拌処理回路を用いた攪拌を選択する。
【0043】
ステップS205において、攪拌制御部24は、ステップS204で選択された回路に対してデータ保持部23に保持されたデータを攪拌する指示を行う。
【0044】
ステップS206において、攪拌制御部24は、選択された回路がデータ保持部23に保持されたデータの攪拌を終了したか否かを検査する。このとき、選択された回路がデータ保持部23の攪拌を終了している場合は、攪拌制御部24は動作を終了する。選択された回路がデータ保持部23の攪拌を終了していない場合は、後述するステップS207に進む。
【0045】
ステップS207において、攪拌制御部24は、マイクロプロセッサ27から攪拌処理回路の回路使用要求信号32があるか否かを検査する。このとき、回路使用要求信号32がない場合は、攪拌を継続しステップS206に戻る。一方、回路使用要求信号32がある場合は、後述するステップS208に進む。
【0046】
ステップS208において、攪拌制御部24は、選択された回路に対し攪拌中止の指示を行う。
【0047】
ステップS209において、攪拌制御部24は、第1動作状況通知信号または第2動作状況通知信号から、ステップS207で攪拌制御部24に対しマイクロプロセッサ27から回路使用要求信号32があった回路以外の回路が休止状態であるか否かを検査する。例えば、実施形態2において、攪拌方法としてMD生成回路30を選択していた時に、攪拌制御部24が回路使用要求信号32を受信した場合、攪拌制御部24は共通鍵暗号処理回路28が休止状態か否か第1動作状況通知信号を通じて検査する。
【0048】
ステップS209で休止状態の攪拌処理回路が見つかった場合にはステップS202に戻り、ステップS202以降の処理を行う。しかし、ステップS209において休止状態の回路が見つからなかった場合には、後述するS210に進む。
【0049】
ステップS210において、攪拌制御部24は、マイクロプロセッサ27を用いたデータ保持部23の攪拌方法を選択する。
【0050】
ステップS211において、攪拌制御部24は、マイクロプロセッサ27に対してデータ保持部23に保持されたデータを攪拌する指示を行う。
【0051】
ステップS212において、攪拌制御部24は、マイクロプロセッサ27がデータ保持部23の攪拌を終了したか否かを検査する。攪拌が終了していない場合は、攪拌制御部24は攪拌を継続する。攪拌が終了した場合は、攪拌制御部24は動作を終了する。
【0052】
以上のように、複数の攪拌処理回路が休止状態である場合に優先度が高い攪拌処理回路を選択してデータの攪拌を行うことにより、効率的にデータの攪拌を行うことができる。また、攪拌制御部24が選択した方法でデータを攪拌させている時に、マイクロプロセッサ27から回路使用要求信号32を受信すると、攪拌制御部24は、選択した回路に対して攪拌中止の指示を行い、要求された処理を優先して行う。これにより、要求された処理を妨げることなくデータを攪拌することができる。また、データの攪拌を中止した後に、攪拌制御部24はマイクロプロセッサ27から回路使用要求信号32を受信した回路以外の攪拌処理回路が休止状態かどうか否かを検査する。休止状態の攪拌処理回路が見つかった場合には、攪拌制御部24は見つかった攪拌処理回路を選択して攪拌の指示を行うので、高速にかつ効率的に攪拌を行うことができる。
【0053】
変形例として、休止状態の攪拌処理回路が複数あった場合に、攪拌制御手段は、休止状態の攪拌処理回路のうち2つ以上の回路に攪拌の指示を行うこともできる。2つ以上の攪拌処理回路にデータを並行処理させることにより、さらに効率的に攪拌を行うことができる。
【0054】
実施形態2では、攪拌制御部24はステップS201で第1動作状況通知信号及び第2動作状況通知信号を基づいて、共通鍵暗号処理回路28とMD生成回路30の両方の回路に対し休止状態であるか否かを検査する。そしてステップS203で優先度を検査し、ステップS204でデータ保持部23を攪拌する回路を選択している。しかし、このステップS201とステップS204の処理を同時に行うことも可能である。つまり、優先度の高い方の回路が休止状態か否かを検査し、休止状態であったならば回路の検査を終了し、攪拌制御部24は見つかった回路を用いたデータの攪拌方法を選択するという方法も可能である。
【0055】
<実施形態3>
図5は実施形態3におけるデータ処理装置の構成図である。図5において、データ処理装置41は乱数系列を生成する乱数生成回路42と、共通鍵暗号アルゴリズムを高速に処理する第1の共通鍵暗号処理回路48と、第1の共通鍵暗号処理回路48と同一処理を行う第2の共通鍵暗号処理回路50と、前記第1の共通鍵暗号処理回路48と前記第2の共通鍵暗号処理回路が実行するアルゴリズムと同一の共通鍵暗号アルゴリズムをプログラム実行するマイクロプロセッサ47と、前記第1の共通鍵暗号処理回路48が休止状態であるか否かを前記乱数生成回路42と前記マイクロプロセッサ47に通知する第1動作状況通知信号49と、前記第2の共通鍵暗号処理回路50が休止状態であるか否か前記乱数生成回路42と前記マイクロプロセッサ47に通知する第2動作状況通知信号51と、前記マイクロプロセッサ47から前記乱数生成回路42及び前記第1の共通鍵暗号処理回路48、前記第2の共通鍵暗号処理回路50に回路の使用要求を通知する回路使用要求信号52と、外部装置56とデータをやり取りするネットワークインターフェース55と、HDD54とデータをやり取りするHDDインターフェース53を備えている。
【0056】
なお、前記第1の共通鍵暗号処理回路48と前記第2の共通鍵暗号処理回路50の構成は、これに限らない。例えば、回路48、50として、MD生成回路等を複数回路備えていても良く、また備えている回路の数も2個に限ったことではない。
【0057】
また、マイクロプロセッサは、プログラムを実行できる演算処理手段であれば良い。
【0058】
前記乱数生成回路42は、データ保持部43と、攪拌制御部44と、乱数系列生成部46を備える。データ保持部43は、乱数生成用のデータを保存する。攪拌制御部44は、前記第1の共通鍵暗号処理回路48と前記第2の共通鍵暗号処理回路50の動作状況を前記第1動作状況通知信号49及び前記第2動作状況通知信号51を通じて判断する。さらに前記データ保持部43の攪拌動作の開始指示とその方法の選択を行い、攪拌動作の中止の指示を行う。乱数系列生成部46は、前記データ保持部43に保持されているデータから乱数系列を生成して出力する。
【0059】
ここで、データ処理装置41の動作の例を簡単に説明する。
【0060】
<暗号化機能>
データ処理装置41はネットワークインターフェース55を通じて外部装置56からデータを受信した時、第1の共通鍵暗号処理回路48または第2の共通鍵暗号処理回路50は、受信したデータを暗号化する。次にデータ処理装置41はHDDインターフェース53を通じてHDD54に暗号化したデータを保存する。このとき、乱数生成回路42が生成した乱数を暗号鍵として用いる。また、データ処理装置41はHDDインターフェース53を通じてHDD54から暗号化されたデータを受信した時、第1の共通鍵暗号処理回路48または第2の共通鍵暗号処理回路50は、暗号化されたデータを復号する。次にデータ処理装置41はネットワークインターフェース55を通じて外部装置56に復号したデータを送信する。
【0061】
<データ攪拌機能>
次に、データ保持部43を攪拌する方法について説明する。
【0062】
図6は、本発明における攪拌制御部44の動作を示したフローチャートである。図6を用いて実施形態3における攪拌制御部44の攪拌を説明する。
【0063】
ステップS401において、攪拌制御部44は休止状態の攪拌処理回路(第1の共通鍵暗号処理回路48と第2の共通鍵暗号処理回路50)が2個以上あるか否かを検査する。攪拌制御部44は第1動作状況通知信号49及び第2動作状況通知信号51に基づいて第1の共通鍵暗号処理回路48及び第2の共通鍵暗号処理回路50が休止状態であるか否かを検査する。休止状態の攪拌処理回路が1個以下の場合、後述するステップS408で攪拌制御部44はデータ保持部43を攪拌する方法としてマイクロプロセッサ47を選択する。また休止状態の攪拌処理回路が2個以上ある場合は、後述するS402に進む。
【0064】
ステップS402において、攪拌制御部44は、データ保持部43に保持されたデータを攪拌する回路を選択する。実施形態3の場合では、第1の共通鍵暗号処理回路48及び第2の共通鍵暗号処理回路50が共に休止状態であったとき、攪拌制御部44は第1の共通鍵暗号処理回路48をデータ保持部43に保持されたデータを攪拌する回路として選択する。
【0065】
ステップS403において、攪拌制御部44は、ステップS402で選択した攪拌処理回路対してデータを攪拌する指示を行う。
【0066】
ステップS404において、攪拌制御部44は、選択した攪拌処理回路がデータ保の攪拌を終了したか否かを検査する。このとき、選択した攪拌処理回路がデータの攪拌を終了している場合は、攪拌制御部44は動作を終了する。一方、選択した攪拌処理回路がデータの攪拌を終了していない場合は、後述するS405に進む。
【0067】
ステップS405において、攪拌制御部44はステップS402でデータ保持部43を攪拌する方法として選択した回路に対する回路使用要求信号52があるか否かを検査する。このとき、回路使用要求信号52がない場合は、攪拌を継続しS404に戻る。回路使用要求信号52がある場合は、後述するS406に進む。
【0068】
ステップS406において、攪拌制御部44は、選択した攪拌処理回路に対し攪拌中止の指示を行う。
【0069】
ステップS407において、攪拌制御部44は、ステップS405でマイクロプロセッサ47から回路使用要求信号52があった回路以外の攪拌処理回路が2個以上、休止状態であるか否かを検査する。例えば、攪拌手段が第1の共通鍵暗号処理回路48の時に、攪拌制御部44が回路使用要求信号52を受信した場合、第1の共通鍵暗号処理回路48以外の攪拌処理回路が2個以上、休止状態であるか否かを検査する。そして、休止状態の攪拌処理回路が2個以上見つかった場合にはステップS402に戻り、ステップS402以降の処理を行う。一方、ステップS407において休止状態の攪拌処理回路が2個以上見つからなかった場合は、後述するS408に進む。
【0070】
ステップS408において、攪拌制御部44は、マイクロプロセッサ47を用いたデータ保持部43の攪拌方法を選択する。
【0071】
ステップS409において、攪拌制御部44は、マイクロプロセッサ47に対して攪拌の指示を行う。
【0072】
ステップS410において、攪拌制御部44は、マイクロプロセッサ47がデータ保持部43に保持されたデータの攪拌を終了したか否かを検査し、攪拌が終了していない場合は、攪拌制御部44は攪拌を継続する。攪拌が終了した場合は、攪拌制御部44は動作を終了する。
【0073】
以上のように、複数の攪拌処理回路が休止状態である場合に優先度が高い攪拌処理回路を選択してデータ保持部43に保持されたデータの攪拌を行うことにより、より効率的に攪拌を行うことができる。また、ステップS401において、外部から要求された処理を行うために常に1つ以上の回路を休止状態にしているので、外部から要求された処理を妨げることなくデータ保持部43に保持されたデータの攪拌を行うことができる。
【0074】
また選択された回路がデータを攪拌している時に、攪拌制御部44は、ステップS402で選択した回路を用いた回路使用要求信号52を受信すると、選択された回路に攪拌中止の指示を行い、外部から要求された処理を優先して行う。これにより、外部から要求された処理を妨げることなくデータ保持部43に保持されたデータを攪拌することができる。
【0075】
また、データ保持部43の攪拌を中止した後に、攪拌制御部44はマイクロプロセッサ47から回路使用要求信号52を受信した回路以外の攪拌処理回路が使用可能か否かを検査する。そして使用可能な攪拌処理回路が見つかった場合には、攪拌制御部44は見つかった攪拌処理回路を選択してその選択した回路に攪拌の指示を行うので、高速にかつ効率的に攪拌を行うことができる。
【0076】
<実施形態4>
図7は実施形態4におけるデータ処理装置の構成図である。図7において、データ処理装置61は乱数系列を生成する乱数生成回路62と、共通鍵暗号アルゴリズムを高速に処理する第1の共通鍵暗号処理回路68と、第1の共通鍵暗号処理回路68と同一処理を行う第2の共通鍵暗号処理回路70と、データのハッシュ値を高速に計算する第1のMD生成回路72と、第1のMD生成回路72と同一処理を行う第2のMD生成回路74と、前記第1の共通鍵暗号処理回路68及び第1のMD生成回路74が実行するアルゴリズムと同一のアルゴリズムをプログラム実行するマイクロプロセッサ67と、前記第1の共通鍵暗号処理回路68が休止状態であるか否か前記乱数生成回路62と前記マイクロプロセッサ67に通知する第1動作状況通知信号69と、前記第2の共通鍵暗号処理回路70が休止状態であるか否か前記乱数生成回路62と前記マイクロプロセッサ67に通知する第2動作状況通知信号71と、前記第1のMD生成回路72が休止状態であるか否かを前記乱数生成回路62と前記マイクロプロセッサ67に通知する第3動作状況通知信号73と、前記第2のMD生成回路74が休止状態であるか否か前記乱数生成回路62と前記マイクロプロセッサ67に通知する第4動作状況通知信号75と、前記マイクロプロセッサ67から前記乱数生成回路62、前記第1の共通鍵暗号処理回路68、前記第2の共通鍵暗号処理回路70、前記第1のMD生成回路72及び前記第2のMD生成回路74に暗号処理要求を通知する回路使用要求信号76と、外部装置80とデータをやり取りするネットワークインターフェース79と、HDD78とデータをやり取りするHDDインターフェース77を備えている。
【0077】
複数の攪拌処理回路を前記第1の共通鍵暗号処理回路68、前記第2の共通鍵暗号処理回路70、前記第1のMD生成回路72及び前記第2のMD生成回路としているが、これに限らない。また、備えている回路の数及び種類も2個に限ったことではない。
【0078】
また、マイクロプロセッサは、プログラムを実行できる演算処理手段であれば良い。
【0079】
前記乱数生成回路62は、データ保持部63と、攪拌制御部64と、乱数系列生成部66を備える。データ保持部63は、乱数生成用のデータを一時的に保存する。攪拌制御部64は前記第1の共通鍵暗号処理回路68、前記第2の共通鍵暗号処理回路70、前記第1のMD生成回路72及び前記第2のMD生成回路74の動作状況を前記第1動作状況通知信号69及び前記第2動作状況通知信号71、前記第3動作状況通知信号73、前記第4動作状況通知信号75から判断する。そして前記データ保持部63に保持されたデータの攪拌動作の開始指示とその方法の選択を行い、さらに攪拌動作の中止の指示を行う。乱数系列生成部66は前記データ保持部63に保持されているデータから乱数系列を生成して出力する。
【0080】
ここで、データ処理装置61の動作の例を簡単に説明する。
【0081】
<暗号化/改ざん検証機能>
データ処理装置61はネットワークインターフェース79を通じて外部装置80からデータを受信した時、第1の共通鍵暗号処理回路68または第2の共通鍵暗号処理回路70で受信したデータを暗号化する。また、第1のMD生成回路72または第2のMD生成回路74は、暗号化したデータのハッシュ値を生成する。HDD78は、HDDインターフェース77を通じて暗号化されたデータと暗号化したデータのハッシュ値を受信し、保存する。なお、この暗号化では乱数生成回路62により生成された乱数が暗号鍵として用いられる。また、データ処理装置61は、HDDインターフェース77を通じて暗号化されたデータと暗号化されたデータのハッシュ値をHDD78から受信する。その時に、第1のMD生成回路72または第2のMD生成回路74は、受信した暗号化されたデータのハッシュ値を再度計算する。そして、新たに生成したハッシュ値と保存していたハッシュ値を比較する。比較する値が等しかった場合には第1の共通鍵暗号処理回路68または第2の共通鍵暗号処理回路70で暗号化されたデータを復号し、ネットワークインターフェース79を通じて外部装置80に復号したデータを送信する。
【0082】
<データ攪拌機能>
次に、データ保持部63に保持されたデータを攪拌する方法について説明する。
【0083】
図8は、本発明におけるデータ保持部63に保持されたデータを攪拌する際の攪拌制御部64の動作を示したフローチャートである。図8を用いて実施形態4におけるデータ保持部63に保持されたデータを攪拌する方法について説明する。
【0084】
ステップS601において、攪拌制御部64はデータ保持部63に保持されたデータの攪拌を行う際に、同一のアルゴリズムを実行する攪拌処理回路において、同一のアルゴリズムを実行する攪拌処理回路が2個以上休止状態であるか否か検査する。攪拌制御部64は、第1動作状況通知信号69及び第2動作状況通知信号71に基づいて、共通鍵暗号アルゴリズムを実行する第1の共通鍵暗号処理回路68及び第2の共通鍵暗号処理回路70が共に休止状態であるか否かを検査する。そして、攪拌制御部64は、第3動作状況通知信号73及び第4動作状況通知信号75に基づいて、第1のMD生成回路72、第2のMD生成回路74が共に休止状態であるか否かを検査する。全ての攪拌処理回路において、同一のアルゴリズムを実行する攪拌処理回路が2個以上休止状態でない場合は、後述するステップS612で攪拌制御部64はデータ保持部63に保持されたデータを攪拌する方法としてマイクロプロセッサ67を選択する。実施形態4では、第1の共通鍵暗号処理回路68及び第2の共通鍵暗号処理回路70が共に、もしくは一方が実行状態であり、かつ、第1のMD生成回路72及び第2のMD生成回路74が共に、もしくは一方が実行状態の場合がこれに該当する。
【0085】
また、同一のアルゴリズムを実行する攪拌処理回路が2個以上休止状態である場合は、後述するステップS602に進む。
【0086】
ステップS602において、攪拌制御部64は、同一のアルゴリズムを実行する回路で2個以上の攪拌処理回路が休止状態である回路が、複数種類あるか否かを検査する。実施形態4の場合では、共通鍵暗号処理回路とMD生成回路が共に2個以上休止状態であるか否か検査する。このステップS602における検査の結果、同一のアルゴリズムを実行する回路で2個以上の攪拌処理回路が休止状態である回路が複数種類ある場合には、後述するS603に進む。また、同一のアルゴリズムを実行する回路で2個以上の攪拌処理回路が休止状態である回路が1種類しかない場合は、その回路を選択する。実施形態4の場合では、第1の共通鍵暗号処理回路68及び第2の共通鍵暗号処理回路70はどちらか一方が実行状態であり、且つ第1のMD生成回路72及び第2のMD生成回路74が全て休止状態であるような場合、攪拌制御部64はMD生成回路を選択する。
【0087】
ステップS603において、攪拌制御部64は、使用可能である回路の優先度を検査し、優先度が最も高い回路を選択する。実施形態4では、第1の共通鍵暗号処理回路68及び第2の共通鍵暗号処理回路70と第1のMD生成回路72及び第2のMD生成回路74が全て休止状態である時に、MD生成回路の優先度が共通鍵暗号処理回路よりも高い場合には、MD生成回路を選択する。
【0088】
ステップS604において、攪拌制御部64は、選択した攪拌処理回路の中から、データ保持部63に保持されたデータを攪拌する暗号処理回路を選択する。
【0089】
ステップS605において、攪拌制御部64は、ステップS604で選択した攪拌処理回路に対してデータ保持部63に保持されたデータを攪拌する指示を行う。
【0090】
ステップS606において、攪拌制御部64は、選択した攪拌処理回路が攪拌を終了したか否かを検査する。このとき、選択した攪拌処理回路が攪拌を終了している場合は、攪拌制御部64は動作を終了する。しかし、選択した攪拌処理回路が攪拌を終了していない場合は、後述するS607に進む。
【0091】
ステップS607において、攪拌制御部64は、マイクロプロセッサ67から選択した回路に対する回路使用要求信号76があるか否かを検査する。このとき、回路使用要求信号76がない場合は、攪拌を継続しS606に戻る。回路使用要求信号76がある場合は、後述するS608に進む。
【0092】
ステップS608において、攪拌制御部64は、選択した攪拌処理回路に対し攪拌中止の指示を行う。
【0093】
ステップS609において、攪拌制御部64は、ステップ607で攪拌制御部64に対しマイクロプロセッサ67から使用要求があった攪拌処理回路以外の攪拌処理回路に対し、同一アルゴリズムを実行する攪拌処理回路が2個以上休止状態であるかを検査する。実施形態4の場合では、攪拌手段が第1のMD生成回路68の時に、攪拌制御部64が回路使用要求信号76を受信した場合、第1の共通鍵暗号処理回路68及び第2の共通鍵暗号処理回路70、第2のMD生成回路74が休止状態であるか否かを検査する。
【0094】
そして、その同一アルゴリズムを実行する攪拌処理回路が2個以上休止状態である場合にはステップS602に戻り、ステップS602以降の処理を行う。しかし、ステップS609で検査を行った結果、全ての攪拌処理回路において、各アルゴリズムを実行する攪拌処理回路が2個以上休止状態でない場合には、後述するS610に進む。
【0095】
ステップS610において、攪拌制御部64は、マイクロプロセッサ67を用いた攪拌方法を選択する。
【0096】
ステップS611において、攪拌制御部64は、マイクロプロセッサ67に対して攪拌の指示を行う。
【0097】
ステップS612において、攪拌制御部64は、マイクロプロセッサ67が攪拌を終了したか否かを検査し、攪拌が終了していない場合は、攪拌を継続する。攪拌が終了した場合は、攪拌制御部64は動作を終了する。
【0098】
以上のように、複数種類の回路が休止状態である場合に、優先度が高い攪拌処理回路を選択してデータ保持部63に保持されたデータの攪拌を行うことにより、より効率的に攪拌を行うことができる。また、ステップS601において、外部からの要求された処理を行うために、常に1つ以上の回路を休止状態にしているので、外部からの要求された処理を妨げることなくデータ保持部63に保持されたデータの攪拌を行うことができる。
【0099】
また、攪拌制御部64がステップS604で選択した攪拌方法を用いて攪拌している時に、攪拌制御部64は、ステップS604で選択した回路の回路使用要求信号76をマイクロプロセッサ67から受信すると、選択した回路に攪拌中止の指示を行う。これにより、要求された処理を妨げることなくデータ保持部63に保持されたデータを攪拌することができる。
【0100】
また、攪拌を中止した後に、攪拌制御部64はマイクロプロセッサ67から回路使用要求信号76を受信した回路以外の攪拌処理回路が使用可能か否かを検査する。そして使用可能な攪拌処理回路が見つかった場合には、攪拌制御部64は見つかった攪拌処理回路を選択して攪拌の指示を行うので、高速にかつ効率的に攪拌を行うことができる。
【図面の簡単な説明】
【0101】
【図1】実施形態1の構成図
【図2】実施形態1における攪拌制御部4の動作を示したフローチャート
【図3】実施形態2の構成図
【図4】実施形態2における攪拌制御部24の動作を示したフローチャート
【図5】実施形態3の構成図
【図6】実施形態3における攪拌制御部44の動作を示したフローチャート
【図7】実施形態4の構成図
【図8】実施形態4における攪拌制御部64の動作を示したフローチャート
【符号の説明】
【0102】
1 データ処理装置
2 乱数生成回路
3 データ保持部
4 攪拌制御部
6 乱数系列生成部
7 マイクロプロセッサ
8 共通鍵暗号処理回路
9 動作状況通知信号
10 回路使用要求信号
11 HDDインターフェース
12 HDD
13 ネットワークインターフェース
14 外部装置

【特許請求の範囲】
【請求項1】
データを保持する保持手段と、
前記保持手段に保持されたデータの攪拌処理を実行可能な攪拌処理手段と、
前記保持手段に保持されたデータの攪拌処理を攪拌処理プログラムに基づいて実行可能な演算処理手段と、
前記攪拌処理手段の動作状態に基づいて、前記攪拌処理手段と前記演算処理手段を制御する攪拌制御手段とを備えることを特徴とするデータ処理装置。
【請求項2】
前記攪拌処理手段は、データを暗号化する暗号処理手段が含まれることを特徴とする前記請求項1に記載のデータ処理装置。
【請求項3】
前記暗号処理手段は、共通鍵暗号アルゴリズムを実行する共通鍵暗号処理手段が含まれることを特徴とする前記請求項2記載のデータ処理装置。
【請求項4】
前記暗号処理手段は、公開鍵暗号アルゴリズムを実行する公開鍵暗号処理手段が含まれることを特徴とする前記請求項2記載のデータ処理装置。
【請求項5】
前記攪拌処理手段には、データをダイジェストデータに変更するダイジェストデータ生成手段が含まれることを特徴とする前記請求項1記載のデータ処理装置。
【請求項6】
前記演算処理手段は、前記攪拌処理手段が実行する処理と同一の処理をプログラムに基づいて実行することを特徴とする前記請求項1に記載のデータ処理装置。
【請求項7】
前記データ処理装置は、前記攪拌処理手段として複数の攪拌処理手段を備え、該複数の攪拌処理手段は、同一のアルゴリズムを実行することを特徴とする前記請求項1記載のデータ処理装置。
【請求項8】
前記データ処理装置は、前記攪拌処理手段として複数の攪拌処理手段を備え、該複数の攪拌処理手段の少なくとも一部は、他の攪拌処理手段が実行するアルゴリズムとは異なるアルゴリズムを実行することを特徴とする前記請求項1記載のデータ処理装置。
【請求項9】
前記攪拌制御手段は、前記攪拌処理手段を用いたデータの攪拌中に、攪拌中のデータとは別のデータの使用要求を検知した場合には、前記攪拌処理手段を用いた攪拌を中止することを特徴とする前記請求項1記載のデータ処理装置。
【請求項10】
前記攪拌制御手段は、前記攪拌処理手段を用いたデータの攪拌中に、攪拌中のデータとは別のデータの使用要求を検知した場合には、前記攪拌処理手段を用いた攪拌を中止した後に、攪拌処理手段の動作状態、及び予め定めた優先度に応じて攪拌手段を再制御することを特徴とする前記請求項9記載のデータ処理装置。
【請求項11】
前記データ処理装置は、前記攪拌処理手段として1つの攪拌処理手段を備え、前期攪拌制御手段は、前記攪拌処理手段を用いた攪拌中に、攪拌中のデータとは別のデータの使用要求を検知した場合は、前記攪拌処理手段を用いた攪拌を中止した後に、前記演算処理手段を用いてデータの攪拌処理を制御することを特徴とする前記請求項9記載のデータ処理装置。
【請求項12】
前記攪拌制御手段は、前記攪拌処理手段の少なくとも1つが休止状態である場合、前記演算処理手段よりも優先的に前記攪拌処理手段を用いてデータの攪拌処理を制御することを特徴とする請求項1に記載のデータ処理装置。
【請求項13】
前記攪拌制御手段は、休止状態である前記攪拌処理手段が複数個ある場合、該休止状態の攪拌処理手段のうち優先度の高い攪拌処理手段を用いてデータの攪拌処理を制御することを特徴とする前記請求項12記載のデータ処理装置。
【請求項14】
前記攪拌制御手段は、休止状態である前記攪拌処理手段が複数個ある場合、該休止状態の攪拌処理手段のうち2つ以上の攪拌処理手段を用いてデータの攪拌処理を制御することを特徴とする前記請求項1記載のデータ処理装置。
【請求項15】
前記データ処理装置は、前記攪拌処理手段として複数の攪拌処理手段を備え、前記攪拌制御手段は、前記攪拌処理手段の少なくとも1つを休止状態にするよう制御することを特徴とする前記請求項1記載のデータ処理装置。
【請求項16】
保持手段に保持されたデータの攪拌処理を実行可能な1つまたは複数の攪拌処理手段を備えたデータ処理装置において、
前記保持手段に保持されたデータの攪拌処理を攪拌処理プログラムに基づいて実行可能な演算処理工程と、
前記攪拌処理手段の動作状態に基づいて、前記演算処理工程を用いて前記データの攪拌処理を制御する攪拌制御工程とを備えることを特徴とするデータ処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2007−171811(P2007−171811A)
【公開日】平成19年7月5日(2007.7.5)
【国際特許分類】
【出願番号】特願2005−372432(P2005−372432)
【出願日】平成17年12月26日(2005.12.26)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】