(57)【特許請求の範囲】
【請求項１】
ＤＭＡ転送を行うためのＤＭＡ転送回路であって、
第１の記憶装置における記憶領域の所定の位置を指定する値である第１のアドレスを保持する転送元アドレスレジスタと、
第２の記憶装置における記憶領域の所定の位置を指定する値である第２のアドレスを保持する転送先アドレスレジスタと、
データバッファに格納された第１のデータに対し所与の暗号化パラメータに基づく暗号処理を行い、第２のデータを生成する処理部と、
ＤＭＡ転送時に、前記データバッファを介して、前記第１のアドレスから前記第１のデータを読み出す制御及び前記第２のアドレスに前記第２のデータを格納するための転送制御を行う制御部と、を含み、
前記処理部は、
前記ＤＭＡ転送回路が暗号化モードに設定されている場合のＤＭＡ転送、又は指定された所定のチャネルにおけるＤＭＡ転送において暗号処理を行うことを特徴とするＤＭＡ転送回路。
【請求項２】
請求項１において、
前記処理部は、
前記所与の暗号化パラメータに基づく暗号処理または所与の復号化パラメータに基づく復号処理を行い、
前記暗号処理を行うときは、前記第２のアドレスに基づき前記所与の暗号化パラメータを生成し、
前記復号処理を行う時には、前記第１のアドレスに基づき前記所与の復号化パラメータを生成することを特徴するＤＭＡ転送回路。
【請求項３】
請求項１又は２において、
前記処理部は、
前記所与の暗号化パラメータ、又は前記所与の復号化パラメータと前記第１のデータとの排他的論理和をとる排他的論理和回路を含むことを特徴とするＤＭＡ転送回路。
【請求項４】
請求項１又は２において、
前記処理部は、
前記第１のアドレス若しくは前記第２のアドレスが設定される開始アドレスレジスタと、
前記開始アドレスレジスタの値に基づき暗号化又は複合化に用いる所与のパラメータを生成するパラメータ生成部と、
前記所与のパラメータと前記第１のデータとの排他的論理和をとる排他的論理和回路と、を含むことを特徴とするＤＭＡ転送回路。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記処理部の行う処理が、前記暗号処理であるか又は前記復号処理であるかを示す値が記憶される動作モードレジスタを含み、
前記処理部は、
前記動作モードレジスタの値に基づいて暗号処理又は復号処理を行うことを特徴とするＤＭＡ転送回路。
【請求項６】
請求項１乃至５のいずれかに記載のＤＭＡ転送回路を含むことを特徴とするＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ転送回路及びＤＭＡコントローラに関する。
【背景技術】
【０００２】
最近では機密保護のためデータを暗号化して記憶部に記憶させることが多い。記憶部に対してＤＭＡ転送を行う場合、暗号化処理を行ってから記憶部にＤＭＡ転送を行ったり、記憶部に転送する前にＤＭＡ転送を行ったりする。
【特許文献１】特開２００１−３１８７６８号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしそれでは、暗号化して転送する処理に暗号化−転送の２ステップが必要となる。また復号化時には逆に転送−復号化の２ステップが必要となり、ＤＭＡのチャネルを複数占領してしまうという問題点があった。
【０００４】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、暗号化処理とデータ転送を効率よく行うことができるＤＭＡ転送回路及びＤＭＡコントローラの提供を目的とする。
【課題を解決するための手段】
【０００５】
本発明のひとつは、ＤＭＡ転送を行うためのＤＭＡ転送回路であって、第１の記憶装置における記憶領域の所定の位置を指定する値である第１のアドレスを保持する転送元アドレスレジスタと、第２の記憶装置における記憶領域の所定の位置を指定する値である第２のアドレスを保持する転送先アドレスレジスタと、データバッファに格納された第１のデータに対し所与の暗号化パラメータに基づく暗号処理を行い、第２のデータを生成する処理部と、ＤＭＡ転送時に、前記データバッファを介して、前記第１のアドレスから前記第１のデータを読み出す制御及び前記第２のアドレスに前記第２のデータを格納するための転送制御を行う制御部と、を含み、前記処理部は、前記ＤＭＡ転送回路が暗号化モードに設定されている場合のＤＭＡ転送、又は指定された所定のチャネルにおけるＤＭＡ転送において暗号処理を行うことを特徴とする。
上述した本発明にかかるＤＭＡ転送回路おいて、前記処理部は、前記所与の暗号化パラメータに基づく暗号処理または所与の復号化パラメータに基づく復号処理を行い、前記暗号処理を行うときは、前記第２のアドレスに基づき前記所与の暗号化パラメータを生成し、前記復号処理を行う時には、前記第１のアドレスに基づき前記所与の復号化パラメータを生成することが好ましい。
上述した本発明にかかるＤＭＡ転送回路おいて、前記処理部は、前記所与の暗号化パラメータ、又は前記所与の復号化パラメータと前記第１のデータとの排他的論理和をとる排他的論理和回路を含むことが好ましい。
上述した本発明にかかるＤＭＡ転送回路おいて、前記処理部は、前記第１のアドレス若しくは前記第２のアドレスが設定される開始アドレスレジスタと、前記開始アドレスレジスタの値に基づき暗号化又は複合化に用いる所与のパラメータを生成するパラメータ生成部と、前記所与のパラメータと前記第１のデータとの排他的論理和をとる排他的論理和回路と、を含むことが好ましい。
上述した本発明にかかるＤＭＡ転送回路おいて、前記処理部の行う処理が、前記暗号処理であるか又は前記復号処理であるかを示す値が記憶される動作モードレジスタを含み、前記処理部は、前記動作モードレジスタの値に基づいて暗号処理又は復号処理を行うことが好ましい。
また、本発明にかかるひとつのＤＭＡコントローラは、上述した本発明にかかるＤＭＡ転送回路を含むことが好ましい。
（１）本発明は、
ＤＭＡ転送を行うためのＤＭＡ転送回路であって、
データバッファと、
転送先アドレスレジスタと、
転送元アドレスレジスタと、
転送元アドレスレジスタ値が示すアドレスから転送データを読み出して一旦データバッ
ファに保持し、データバッファから読み出したデータを転送先アドレスレジスタ値が示す
アドレスに書き込むための制御を行う制御部と、
所与の暗号化パラメータに基づき前記転送データの暗号化をおこなう暗号処理部とを含
み、
前記制御部は、
暗号化後のデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を
行うことを特徴とする。
【０００６】
転送元アドレスから読み出したデータを暗号化してからバッファに格納するように制御してもよいし、バッファに格納されているデータを暗号化して転送先アドレスに送信するようにしてもよい。
【０００７】
また第１のバッファと第２のバッファの２つのバッファを持たせ、第１のバッファのデータを暗号化して第２のバッファに書き込むようにしてもよい。
【０００８】
本発明によればＤＭＡ転送回路自体が内部に暗号化処理部を有するので、データのＤＭＡ転送を行う際に暗号化もあわせて行うことができるので、暗号処理とデータ転送を効率よく行うことができるＤＭＡ転送回路を提供することができる。
【０００９】
（２）本発明のＤＭＡ転送回路は、
転送元データアドレス値が示すアドレスから読みだした転送データを、転送元データアドレス値に関連して得られる復号化パラメータに基づき、転送元アドレスレジスタから読み出した転送データの復号化を行う復号処理部を含むことを特徴とする。
【００１０】
暗号化データを復号するための復号化パラメータは、暗号化方式と暗号化パラメータに応じて定まるものであり、例えば元データに対して暗号化パラメータで排他的論理和を取って暗号化データを作成する暗号化方式の場合、復号化パラメータは暗号化パラメータと同じ構成で実現できる。
【００１１】
従って暗号化データと用いた暗号化パラメータの対応付けができるようにしておくことが必要である。
【００１２】
例えば暗号化する際の転送先データ（復号化する場合には転送元データ）と使用した暗号化パラメータを内部テーブルとして持たせて、復号化する際に転送元データをキーとして内部テーブルから対応する暗号化パラメータを読み出して、復号化パラメータを特定するようにしても良い。
【００１３】
また例えば暗号化する際に転送先データ（復号化する場合には転送元データ）に基づき一義的に暗号化パラメータを生成するように構成すれば、復号化する際に転送元データに基づき暗号化パラメータを特定することができる。
【００１４】
また転送元アドレスから読み出したデータを復号化してからバッファに格納するように制御してもよいし、バッファに格納されているデータを復号化して転送先アドレスに送信するようにしてもよい。
【００１５】
また第１のバッファと第２のバッファの２つのバッファを持たせ、第１のバッファのデータを復号化して第２のバッファに書き込むようにしてもよい。
【００１６】
本発明によればＤＭＡ転送回路自体が内部に復号処理部を有するので、データのＤＭＡ転送を行う際に復号化もあわせて行うことができるので、復号処理とデータ転送を効率よく行うことができるＤＭＡ転送回路を提供することができる。
【００１７】
（３）本発明のＤＭＡ転送回路は、
前記暗号処理部は、
転送先アドレスに基づき一義的に暗号化パラメータを生成する回路を含み、
生成された暗号化パラメータに基づき転送データの暗号化を行うことを特徴とする。
【００１８】
（４）本発明のＤＭＡ転送回路は、
前記復号処理部は、
転送元データアドレスに基づき復号化パラメータを生成し、転送元アドレスレジスタから読み出した転送データの復号化を行うことを特徴とする。
【００１９】
（５）本発明のＤＭＡ転送回路は、
前記暗号処理部は、
転送先アドレスに基づき一義的に生成された暗号化パラメータと、転送データの排他的論理和をとる排他的論理和回路を含み、排他的論理和回路を用いて暗号化を行うことを特徴とする。
【００２０】
排他的論理和回路を用いて暗号を行うとは、排他的論理和回路の出力そのものを暗号化データとする場合も含む。
【００２１】
（６）本発明のＤＭＡ転送回路は、
前記復号処理部は、
転送元アドレスに基づき一義的に生成された復号化パラメータと、転送元アドレスレジスタから読み出した転送データの排他的論理和をとる排他的論理和回路を含み、排他的論理和回路を用いて復号化を行うことを特徴とする。
【００２２】
（７）本発明のＤＭＡ転送回路は、
所与のパラメータに基づき転送元アドレスレジスタ値が示すアドレスから読み出した転送データの暗号化と復号化をおこなうことが可能な暗号／復号処理部を含み、
前記暗号／復号処理部は、
バスを介して設定された転送元アドレス又は転送先アドレスのいずれかの値がセットされる開始アドレスレジスタと、
暗号化又は復号化に用いるパラメータを、開始アドレスレジスタの値に基づき一義的に生成するパラメータ生成回路と、
パラメータ生成回路によって生成されたパラメータと転送データの排他的論理和をとる排他的論理和回路を含み、
前記制御部は、
暗号化を行う際には前記開始アドレスレジスタに転送先アドレスの値がセットされるように制御し、
復号化を行う際には前記開始アドレスレジスタに転送元アドレスの値がセットされるように制御することを特徴とする。
【００２３】
本発明によれば暗号化／復号化回路は、暗号化または復号化を転送データと暗号化または復号化パラメータとの排他的論理和をとることにより実現しているので、暗号化と復号化の回路構成が同じとなり１つの回路で復号化の両方を実現することができる。
【００２４】
（８）本発明のＤＭＡ転送回路は、
暗号処理または復号処理を行うか否かを制御するための値が記憶される動作モードレジスタを含み、
前記制御部は、
動作モードレジスタの値が暗号処理または復号処理を行うことを示す値である場合に暗号処理または復号処理を行うように制御することを特徴とする。
【００２５】
（９）本発明は、
上記のいずれかに記載のＤＭＡ転送回路を含むことを特徴とするＤＭＡコントローラである。
【００２６】
（１０）本発明は、
上記のいずれかに記載のＤＭＡ転送回路を含む複数のＤＭＡ転送回路を含むＤＭＡコントローラであって、
各チャネル毎にＤＭＡ転送を行うためのＤＭＡ転送回路が割り当てられ、
暗号及び復号の少なくとも一方を行うためのチャネルに対しては、請求項１乃至９のいずれかに記載のＤＭＡ転送回路が割り当てられていることを特徴とする。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２８】
図１は、本実施の形態のＤＭＡコントローラ（ＤＭＡ転送回路）の構成について説明するための図である。なお、本実施形態のＤＭＡコントローラ１００は、図１の構成要素（各部）を全て含む必要はなく、その一部を省略した構成としてもよい。
【００２９】
本実施の形態のＤＭＡコントローラ１００は、データバッファ１２０、暗号キーレジスタ１５０、転送先アドレスレジスタ１６０、転送元アドレスレジスタ１７０、暗号化回路１３０、転送先アドレス計算回路１６２、転送元アドレス計算回路１７２、乱数発生器１４０、制御部１１０、出力データセレクタ１８０、出力アドレスセレクタ１９０を含む。
【００３０】
８０はデータバスであり、９０はアドレスバスである。
【００３１】
１は入力データ、２はDMA転送データ、３は乱数値、４は暗号キー値出力、５はアドレスバス９０への出力アドレス、６は転送先アドレス出力、７は暗号処理データ出力、８は転送先ネクストアドレス、９は入力アドレス、１０は転送元アドレス出力、１１はデータバッファ制御信号、１２は乱数発生器制御信号、１３は暗号化回路制御信号、１４は暗号キーレジスタ制御信号、１５は転送先アドレスレジスタ制御信号、１６は転送先アドレス計算回路制御信号、１７は転送元アドレスレジスタ制御信号、１８は転送元アドレス計算回路制御信号、１９はデータバス８０への出力データ、２０は制御部レジスタリードデータ、２１は転送元ネクストアドレスである。
【００３２】
暗号化回路１３０は、図示しない開始アドレスレジスタ（図４の１３２）を含む。ここでＤＭＡコントローラに転送の設定が行われる際には、例えばＣＰＵによって転送先アドレス、転送元アドレス、がデータバス８０を介して転送先アドレスレジスタ１６０，転送元アドレスレジスタ１７０に設定される。
【００３３】
暗号化を行う場合（例えば暗号化モードが設定されている場合や暗号化を行うチャネルに割り当てられている場合）にはデータバスを介して入力された開始アドレス（暗号化の場合には転送先アドレス、復号化の場合には転送元アドレス）が暗号化回路１３０の図示しない開始アドレスレジスタ（図４の１３２）に設定される。
【００３４】
データバッファ１２０は、データバス８０からの入力データ信号１及び制御部からのデータバッファ制御信号１１を受け取り、暗号化回路に対しDMA転送データ２を出力する。
【００３５】
乱数発生器１４０は制御部１１０から乱数発生器制御信号１２を受け取り、暗号化回路１３０に乱数値を出力する。乱数発生器１４０は、同じパラメータであれば同じ乱数値が発生するもの（パラメータから一義的に乱数値が導き出せるもの）を使用する。
【００３６】
暗号キーレジスタ１３１は例えば３２ビットのレジスタであり、制御部１１０からの暗号キーレジスタ制御信号１２と暗号化回路１３０から出力される暗号処理後の転送データ７を入力とし、暗号化回路１３０に暗号キー値４を出力する。
【００３７】
転送先アドレスレジスタ１６０は、例えば３２ビットのレジスタであり、制御部１１０からの転送先アドレスレジスタ制御信号１５とデータバスからの入力される転送先アドレス（ＤＭＡ設定のさいに入力データ１としてデータバスを介してうけとる）と転送先アドレス計算回路１６２が演算する転送先ネクストアドレス８を入力として、自身のレジスタに格納された転送先アドレス値を出力アドレスセレクタ１９０に出力する。
【００３８】
転送先アドレス計算回路１６２は制御部１１０からの転送先アドレス計算回路制御信号１６、転送先アドレスレジスタの出力値を受け取り、転送先ネクストアドレス８を演算して転送先アドレスレジスタ１６０に対し出力する。
【００３９】
転送元アドレスレジスタ１７０は、例えば３２ビットのレジスタであり、制御部１１０からの転送元アドレスレジスタ制御信号１７とデータバスからの入力される転送元アドレス（ＤＭＡ設定のさいに入力データ１としてデータバスを介してうけとる）と転送元アドレス計算回路１７２が演算する転送元ネクストアドレス２１を入力として、自身のレジスタに格納された転送元アドレス値を出力アドレスセレクタ１９０に出力する。
【００４０】
転送元アドレス計算回路１７２は制御部１１０からの転送元アドレス計算回路制御信号１８、転送元アドレスレジスタの出力値を受け取り、転送元ネクストアドレス２１を演算して転送元アドレスレジスタ１７０に対し出力する。
【００４１】
暗号化回路１３０は、データバッファから出力されるＤＭＡ転送データ２、乱数発生器１４０から出力される乱数値３、制御部１１０が出力する暗号化回路制御信号１３、暗号キーレジスタ１３１が出力する暗号キー値４、データバスから入力される転送元アドレスまたは転送先アドレス（ＤＭＡ設定のさいに入力データ１としてデータバスを介してうけとる）を入力し、暗号化された転送データ７を出力データセレクタ１８０及び暗号キーレジスタ１５０に出力する。
【００４２】
出力データセレクタ１８０は、暗号化回路の出力する暗号化された転送データ７及び制御部レジスタリードデータ２０を入力とし、いずれかを選択してデータバスに出力する。データを暗号化（または復号化）してＤＭＡ転送する場合には暗号化回路の出力する暗号化された転送データ７を選択してデータバス８０に出力し、データを暗号化（または復号化）せずにＤＭＡ転送する場合には制御部レジスタリードデータ２０をデータバス８０に出力する。
【００４３】
出力アドレスセレクタ１９０は、転送先アドレスレジスタ１６０の出力する転送先アドレス値６及び転送元アドレスレジスタ１７０の出力する転送元アドレス値１０を入力とし、いずれかを選択してアドレスバス９０に出力する。
【００４４】
制御部１１０は、データバス８０からの入力データ１、アドレスバス９０からの入力アドレス９を入力し、出力データセレクタ１８に対し制御部レジスタリードデータ２０、その他の各種制御信号１１，１２、１４、１５、１６、１７、１８を該当部署に対し出力する。
【００４５】
制御部１１０は、転送元アドレスレジスタ１６０値が示すアドレスから転送データを読み出して一旦データバッファ１２０に保持し、データバッファ１２０から読み出したデータを転送先アドレスレジスタ１７０値が示すアドレスに書き込むための制御を行う。転送データに対して暗号化を行う場合には、暗号化後のデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行う。
【００４６】
ＣＰＵがＤＭＡ設定（転送先アドレス、転送元アドレス、転送サイズ等）を行うと、ＤＭＡコントローラ１００はデータバスを介して入力データとして、転送先アドレス、転送元アドレスを受け取り、それぞれ転送先アドレスレジスタ１６０、転送元アドレスレジスタ１７０に設定されるとともに、暗号化を行う場合（例えば暗号化モードが設定されている場合や暗号化を行うチャネルに割り当てられている場合）にはデータバスを介して入力された転送先アドレスが、復号化の場合には転送元アドレスが暗号化回路１３０の図示しない開始アドレスレジスタ（図４の１３２）に設定される。
【００４７】
そしてＤＭＡコントローラ１００は、転送元データアドレスレジスタ１７０に格納された転送元データアドレス値６をアドレスバス９０に出力して転送元データアドレスからデータバス８０を介して入力データ１を読み出してデータバッファ１２０に格納する。
【００４８】
そしてデータバッファに格納されたＤＭＡ転送データ２を暗号化回路１３０で暗号化してデータバス８０に出力するとともに、転送先アドレスレジスタに格納された転送先アドレス値をアドレスバス９０に出力する。
【００４９】
乱数発生器１４０、暗号キーレジスタ１５０、暗号化回路１３０は、所与の暗号化パラメータに基づき前記転送データの暗号化をおこなう暗号処理部として機能する。
【００５０】
また乱数発生器１４０、暗号キーレジスタ１５０、暗号化回路１３０を、転送元データアドレス値が示すアドレスから読みだした転送データを、転送元データアドレス値に関連して得られる復号化パラメータに基づき、転送元アドレスレジスタから読み出した転送データの復号化を行う復号処理部として機能させるようにしてもよい。
【００５１】
図２は、比較例のＤＭＡコントローラの構成について説明するための図である。
【００５２】
比較例のＤＭＡコントローラ２００は、データバッファ２２０、転送先アドレスレジスタ２６０、転送元アドレスレジスタ２７０、転送先アドレス計算回路２６２、転送元アドレス計算回路２７２、制御部２１０、出力データセレクタ２８０、出力アドレスセレクタ２９０を含む。
【００５３】
８０’はデータバスであり、９０’はアドレスバスである。
【００５４】
３０１は入力データ、３０２はDMA転送データ、３０５はアドレスバス９０への出力アドレス、３０６は転送先アドレス出力、３０８は転送先ネクストアドレス、３０９は入力アドレス、３１０は転送元アドレス出力、３１１はデータバッファ制御信号、３１５は転送先アドレスレジスタ制御信号、３１６は転送先アドレス計算回路制御信号、３１７は転送元アドレスレジスタ制御信号、３１８は転送元アドレス計算回路制御信号、３１９はデータバス８０’への出力データ、３２０は制御部レジスタリードデータ、３２１は転送元ネクストアドレスである。
【００５５】
比較例のＤＭＡコントローラ２００は、転送元データアドレスレジスタ２７０に格納された転送元データアドレス値３をアドレスバス９０’に出力して転送元データアドレスからデータバス８０’を介して入力データ３０１を読み出してデータバッファ２２０に格納する。そしてデータバッファに格納されＤＭＡ転送データ３０２をデータバス８０’に出力するとともに、転送先アドレスレジスタに格納された転送先アドレス値をアドレスバス９０’に出力し、転送元アドレスのデータを転送先アドレスにＤＭＡ転送を行う。
【００５６】
図３は本実施の形態のＤＭＡコントローラを含む情報処理装置（ＩＣ）の一例である。
【００５７】
本実施の形態の情報処理装置（ＩＣ）４００は、ＣＰＵ４２０，ＤＭＡコントローラ４３０、周辺装置４４０、入出力制御部４７０、４８０、内部バス４１０を含む。周辺装置４４０は例えばＧＰＩＯ（General Purpos Input/Output）ＵＳＢＣ（USBコントローラー）、ＬＡＮＣ（ネットワークコントローラー）、ＨＤＣ（HDDコントローラー）、ＣＦＣ（CompactFlashコントローラー）等でもよい。  データ保存装置４６０は、情報処理装置（ＩＣ）４００の外部に置かれ入出力部４１０を介して情報処理装置（ＩＣ）４００と接続されている。
【００５８】
また周辺機器４４０は入出力装置４４０を介してＨＤ（ハードディスク）等の外部メモリに接続されているとする。
【００５９】
ここで例えばデータ保存装置４６０のデータを暗号化して外部メモリ４９０に書き込む場合には、以下のようにして実現することができる。
【００６０】
ＣＰＵ４２０は、ＤＭＡコントローラ４３０にたいし、暗号化モードの指定又は暗号化を行うチャネルの指定を行い、転送元アドレス（メモリ上のアドレス）、転送先のアドレス（ＨＤ４７７のアドレス）、転送サイズ等を指定する。するとＤＭＡＣ４３０は、転送元アドレスに基づき読み出すアドレスを生成し、内部バス（アドレスバス）４１０に出力して、データ保存装置４６０のデータ内部バス（データバス）４１０を介してＤＭＡコントローラ４３０の内部バッファ４３４に書き込み、暗号化処理部５３２は内部バッファ４３４のデータを暗号化する。そしてＤＭＡＣ４３０は、転送先アドレスに基づき書き込みアドレスを生成し、内部バス（アドレスバス）４１０に出力しするとともに、暗号化されたデータを内部バス（データバス）４１０に出力して、外部のメモリ４９０に書き込む。
【００６１】
図４は暗号化／復号化回路の構成の一例である。
【００６２】
暗号化回路（復号化回路）は、開始アドレスレジスタ１３２、セレクタ１３８、排他的論理和回路１３４−１〜１３４−４、１３６−１〜１３６−４を含む。
【００６３】
図４の暗号化／復号化回路１３０は、暗号化または復号化を転送データと暗号化または復号化パラメータとの排他的論理和をとることにより実現しているので、暗号化と復号化の回路構成が同じとなり１つの回路で暗号化と復号化の両方を実現することができる。
【００６４】
開始アドレスレジスタ１３２は、ＤＭＡの設定の時に書き込まれる転送元または転送先アドレスを格納するレジスタである。
【００６５】
暗号化を行う場合（例えば暗号化モードが設定されている場合や暗号化を行うチャネルに割り当てられている場合）にはデータバスを介して入力された転送先アドレスが設定され、復号化を行う場合（例えば復号化モードが設定されている場合や復号化を行うチャネルに割り当てられている場合）にはデータバスを介して入力された転送元アドレスが設定される。
【００６６】
セレクタは開始アドレスレジスタ値及び暗号キーレジスタ１５０（図１の１５０と同じ）の値（暗号処理後のデータ７）を入力し、図示しないセレクト信号に基づきいずれかを出力する。すなわち一連のデータの暗号化を行う際の最初の３２ビット分については、開始アドレスレジスタ値を出力し、それ以降は暗号処理後のデータ７を出力する。
【００６７】
排他的論理和回路１３４−１、１３４−２、１３４−３、１３４−４は、それぞれセレクタの出力（３１：２４）、（２３：１６）、（１５：８）、（７：０）と乱数値８ビット（図１の乱数発生器の出力値）とを入力して排他的論理和をとり、排他的論理和回路１３６−１、１３６−２、１３６−３、１３６−４に出力する。
【００６８】
排他的論理和回路１３６−１、１３６−２、１３６−３、１３６−４は、それぞれ排他的論理和回路１３４−１、１３４−２、１３４−３、１３４−４の出力値とバッファに格納されている転送データ値の出力（３１：２４）、（２３：１６）、（１５：８）、（７：０）とを入力して排他的論理和をとる。
【００６９】
乱数値は、最小幅を8ビットとする。図４には乱数値データ幅の記述がないが、３２ビットの場合は、対応するキーデータに対してビット毎に排他的論理和の演算を行い、８ビットの場合は各バイトの対応するビットに対して排他的論理和の演算を行う。
【００７０】
暗号キーレジスタ１５０、開始アドレスレジスタ１３２、セレクタ１３８、図１の乱数発生器１４０は、転送先アドレスに基づき一義的に暗号化パラメータを生成する回路として機能し、排他的論理和回路１３４−１、１３４−２、１３４−３、１３４−４の出力９０−1，９０−２，９０−３，９０−４が暗号化パラメータである。
【００７１】
暗号化パラメータ９０−1，９０−２，９０−３，９０−４は、転送先アドレスに基づき一義的に生成された暗号化パラメータであり、排他的論理和回路１３６−１、１３６−２、１３６−３、１３６−４は、転送先アドレスに基づき一義的に生成された暗号化パラメータ９０−1，９０−２，９０−３，９０−４と、転送データ２の排他的論理和をとる排他的論理和回路である。
【００７２】
また暗号キーレジスタ１５０、開始アドレスレジスタ１３２、セレクタ１３８、図１の乱数発生器１４０は、転送元アドレスに基づき一義的に復号化パラメータを生成する回路として機能し、排他的論理和回路１３４−１、１３４−２、１３４−３、１３４−４の出力９０−1，９０−２，９０−３，９０−４が復号化パラメータである。
【００７３】
復号化パラメータ９０−1，９０−２，９０−３，９０−４は、転送元アドレスに基づき一義的に生成された暗号化パラメータであり、排他的論理和回路１３６−１、１３６−２、１３６−３、１３６−４は、転送先アドレスに基づき一義的に生成された暗号化パラメータ９０−1，９０−２，９０−３，９０−４と、転送データ２の排他的論理和をとる排他的論理和回路である。
【００７４】
図４の暗号化／復号化回路１３０は所与のパラメータに基づき転送元アドレスレジスタ値が示すアドレスから読み出した転送データの暗号化と復号化をおこなうことが可能な暗号／復号処理部として機能する。
【００７５】
暗号化／復号化回路１３０は、バスを介して設定された転送元アドレス又は転送先アドレスのいずれかの値がセットされる開始アドレスレジスタ１３２と、暗号化又は復号化に用いるパラメータ９０−１，９０−２，９０−３、９０−４を、開始アドレスレジスタ１３２の値に基づき一義的に生成するパラメータ生成回路（１５０、１３２、１３８、１４０）と、パラメータ生成回路によって生成されたパラメータ９０−１，９０−２，９０−３、９０−４と転送データ２の排他的論理和をとる排他的論理和回路１３６−１、１３６−２、１３６−３、１３６−４を含み、前記制御部（図１の１１０）は、暗号化を行う際には前記開始アドレスレジスタ１３２に転送先アドレスの値がセットされるように制御し、復号化を行う際には前記開始アドレスレジスタ１３２に転送元アドレスの値がセットされるように制御する。
【００７６】
図５は本実施の形態の暗号化方式の一例について説明するための図である。
【００７７】
本実施の形態の暗号化方式として例えば内部同期式ストリーム暗号を使用することができる。これは同じ値で２回排他的論理和を行うと元値に戻るという事を利用したものである。
【００７８】
キーの初期値６１０は、ＤＭＡコントローラーに設定したアドレス（暗号化の場合は転送先アドレス、復号化の場合には転送元アドレス）と乱数から生成する。
【００７９】
その後は暗号処理住みのデータ６３０と乱数から生成する。
【００８０】
乱数の発生は、あるパラメーターから同じ値が発生するものとする。これをソフトで管理することで復号時に同じ乱数値を発生させ、復号可能となる。
【００８１】
内部同期に対して外部同期式があるが、これは暗号処理部の外部から乱数値を与えるもので、この外部同期式の場合も本発明の範囲内である。この場合にはDMAC外部、もしくはシステム外部から与えるようにしてもよい。
【００８２】
ストリーム転送とは、平文６２０や暗号文６３０の系列に依存した形で乱数列を生成させる形のものである。
【００８３】
本実施の形態では３２ビット単位で処理をするのでシフトレジスタではなく３２ビットの暗号キーレジスタ（図４の１３１参照）が次の３２ビットのデータに更新される形を取っている。
【００８４】
暗号化されたデータ自体が暗号キーレジスタに格納され、次のキーを生成する要素となる。
【００８５】
図６はＤＭＡ設定時のフローチャートである。
【００８６】
まず、ＣＰＵはＤＭＡコントローラを暗号処理モードに設定する（ステップＳ１０）。具体的には暗号処理を実施するかしないか、暗号/復号の区別を指示するパラメータ（CPON、POU）の設定を行う。
【００８７】
次に乱数コードの設定を行う（ステップＳ２０）。乱数コード（CRNC）を設定する。この乱数コード（CRNC）を変えることで同じアドレスでも異なる初期キーを生成することができる。
【００８８】
転送元アドレス（ＳＡＤＲ)の設定を行う（ステップＳ３０）。復号処理を行う場合、暗号／復号処理回路の開始アドレスレジスタに同時に書き込まれる。
【００８９】
次に転送先アドレス(TADR)の設定を行う（ステップＳ４０）。暗号処理を行う場合、暗号／復号化回路のレジスタに同時に書き込まれる。
【００９０】
転送データ数(TDNC)の設定を行う（ステップＳ５０）。
【００９１】
なおＤＭＡ設定のパラメーターは以下のとおりである。
CPON；暗号処理モード  １：暗号処理を行う、０：暗号処理を行わない。
POU ；暗号/復号切替え    CPON＝１  の時に意味を持つ。
１：暗号処理。キーの生成に転送先アドレスを使用する。
０：復号処理。キーの生成に転送元アドレスを使用する。
SADR；転送元アドレス。
TADR；転送先アドレス。
TDNC；データ転送数。
TIFN；終了通知モード
１：割込、０：割込みなし。
CRNC；乱数設定コード。このレジスタは制御部に持つ。
CPON；暗号処理モード１：暗号処理を行０：暗号処理を行わない。
POU ；暗号/復号切替え。  CPON＝１  の時に意味を持つ。
１：暗号処理。キーの生成に転送先アドレスを使用する。
【００９２】
図７は、ＤＭＡ転送時のフローチャートである。
【００９３】
本実施の形態ではＤＭＡコントローラーの設定を行い、起動をかけることで自動的に暗号/復号化処理が行われる。
【００９４】
まず図６に示したようなＤＭＡ設定処理を行う（ステップＳ１１０）。
【００９５】
次にＤＭＡ起動を行う（ステップＳ１２０）。
【００９６】
ＤＭＡ転送が終了したら処理を終了する（ステップＳ１３０）。
【００９７】
暗号、復号ともに同じフローとなる。暗号時は送信先アドレスが暗号化回路の入力に、復号時は送信元アドレスが暗号／復号化回路のキー作成の為の入力になる。
【００９８】
乱数コードは、送信先アドレスと対で管理テーブルによりソフトウエアが管理するようにしてもよい。
【００９９】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【図面の簡単な説明】
【０１００】
【図１】本実施の形態のＤＭＡコントローラ（ＤＭＡ転送回路）の構成図。
【図２】比較例のＤＭＡコントローラの構成図。
【図３】本実施の形態のＤＭＡコントローラを含むシステム（情報処理装置）の一例。
【図４】暗号化／復号化回路の構成の一例である。
【図５】本実施の形態の暗号化方式の一例について説明するための図。
【図６】ＤＭＡ設定時のフローチャートである。
【図７】ＤＭＡ転送時のフローチャートである。
【符号の説明】
【０１０１】
８０  データバス、９０  アドレスバス、１００  ＤＭＡコントローラ（ＤＭＡ転送回路）、１１０  制御部、１２０  データバッファ、１３０  暗号化回路、暗号化回路（復号化回路）は、１３２  開始アドレスレジスタ、１３８  セレクタ、１３４−１〜１３４−４  排他的論理和回路、１３６−１〜１３６−４  排他的論理和回路、１４０  乱数発生器、１５０  暗号キーレジスタ、１６０  転送先アドレスレジスタ、１６２  転送先アドレス計算回路、１７０  転送元アドレスレジスタ、１７２  転送元アドレス計算回路、１８０  出力データセレクタ、１９０  出力アドレスセレクタ
【図１】
0004671034.tif 000002
【図２】
0004671034.tif 000003
【図３】
0004671034.tif 000004
【図４】
0004671034.tif 000005
【図５】
0004671034.tif 000006
【図６】
0004671034.tif 000007
【図７】
0004671034.tif 000008