説明

DMA転送回路及びDMAコントローラ

【課題】暗号化処理とデータ転送を効率よく行うことができるDMA転送回路及びDMAコントローラの提供。
【解決手段】本DMA転送回路130は、データバッファ120と、転送先アドレスレジスタ160と、転送元アドレスレジスタ170と、転送元アドレスレジスタ値が示すアドレスから転送データを読み出して一旦データバッファ120に保持し、データバッファ120から読み出したデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行う制御部110と、所与の暗号化パラメータに基づき前記転送データの暗号化をおこなう暗号処理部140、150、130とを含み、前記制御部110は、暗号化後のデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、DMA転送回路及びDMAコントローラに関する。
【背景技術】
【0002】
最近では機密保護のためデータを暗号化して記憶部に記憶させることが多い。記憶部に対してDMA転送を行う場合、暗号化処理を行ってから記憶部にDMA転送を行ったり、記憶部に転送する前にDMA転送を行ったりする。
【特許文献1】特開2001−318768号
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしそれでは、暗号化して転送する処理に暗号化−転送の2ステップが必要となる。また復号化時には逆に転送−復号化の2ステップが必要となり、DMAのチャネルを複数占領してしまうという問題点があった。
【0004】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、暗号化処理とデータ転送を効率よく行うことができるDMA転送回路及びDMAコントローラの提供を目的とする。
【課題を解決するための手段】
【0005】
(1)本発明は、
DMA転送を行うためのDMA転送回路であって、
データバッファと、
転送先アドレスレジスタと、
転送元アドレスレジスタと、
転送元アドレスレジスタ値が示すアドレスから転送データを読み出して一旦データバッファに保持し、データバッファから読み出したデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行う制御部と、
所与の暗号化パラメータに基づき前記転送データの暗号化をおこなう暗号処理部とを含み、
前記制御部は、
暗号化後のデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行うことを特徴とする。
【0006】
転送元アドレスから読み出したデータを暗号化してからバッファに格納するように制御してもよいし、バッファに格納されているデータを暗号化して転送先アドレスに送信するようにしてもよい。
【0007】
また第1のバッファと第2のバッファの2つのバッファを持たせ、第1のバッファのデータを暗号化して第2のバッファに書き込むようにしてもよい。
【0008】
本発明によればDMA転送回路自体が内部に暗号化処理部を有するので、データのDMA転送を行う際に暗号化もあわせて行うことができるので、暗号処理とデータ転送を効率よく行うことができるDMA転送回路を提供することができる。
【0009】
(2)本発明のDMA転送回路は、
転送元データアドレス値が示すアドレスから読みだした転送データを、転送元データアドレス値に関連して得られる復号化パラメータに基づき、転送元アドレスレジスタから読み出した転送データの復号化を行う復号処理部を含むことを特徴とする。
【0010】
暗号化データを復号するための復号化パラメータは、暗号化方式と暗号化パラメータに応じて定まるものであり、例えば元データに対して暗号化パラメータで排他的論理和を取って暗号化データを作成する暗号化方式の場合、復号化パラメータは暗号化パラメータと同じ構成で実現できる。
【0011】
従って暗号化データと用いた暗号化パラメータの対応付けができるようにしておくことが必要である。
【0012】
例えば暗号化する際の転送先データ(復号化する場合には転送元データ)と使用した暗号化パラメータを内部テーブルとして持たせて、復号化する際に転送元データをキーとして内部テーブルから対応する暗号化パラメータを読み出して、復号化パラメータを特定するようにしても良い。
【0013】
また例えば暗号化する際に転送先データ(復号化する場合には転送元データ)に基づき一義的に暗号化パラメータを生成するように構成すれば、復号化する際に転送元データに基づき暗号化パラメータを特定することができる。
【0014】
また転送元アドレスから読み出したデータを復号化してからバッファに格納するように制御してもよいし、バッファに格納されているデータを復号化して転送先アドレスに送信するようにしてもよい。
【0015】
また第1のバッファと第2のバッファの2つのバッファを持たせ、第1のバッファのデータを復号化して第2のバッファに書き込むようにしてもよい。
【0016】
本発明によればDMA転送回路自体が内部に復号処理部を有するので、データのDMA転送を行う際に復号化もあわせて行うことができるので、復号処理とデータ転送を効率よく行うことができるDMA転送回路を提供することができる。
【0017】
(3)本発明のDMA転送回路は、
前記暗号処理部は、
転送先アドレスに基づき一義的に暗号化パラメータを生成する回路を含み、
生成された暗号化パラメータに基づき転送データの暗号化を行うことを特徴とする。
【0018】
(4)本発明のDMA転送回路は、
前記復号処理部は、
転送元データアドレスに基づき復号化パラメータを生成し、転送元アドレスレジスタから読み出した転送データの復号化を行うことを特徴とする。
【0019】
(5)本発明のDMA転送回路は、
前記暗号処理部は、
転送先アドレスに基づき一義的に生成された暗号化パラメータと、転送データの排他的論理和をとる排他的論理和回路を含み、排他的論理和回路を用いて暗号化を行うことを特徴とする。
【0020】
排他的論理和回路を用いて暗号を行うとは、排他的論理和回路の出力そのものを暗号化データとする場合も含む。
【0021】
(6)本発明のDMA転送回路は、
前記復号処理部は、
転送元アドレスに基づき一義的に生成された復号化パラメータと、転送元アドレスレジスタから読み出した転送データの排他的論理和をとる排他的論理和回路を含み、排他的論理和回路を用いて復号化を行うことを特徴とする。
【0022】
(7)本発明のDMA転送回路は、
所与のパラメータに基づき転送元アドレスレジスタ値が示すアドレスから読み出した転送データの暗号化と復号化をおこなうことが可能な暗号/復号処理部を含み、
前記暗号/復号処理部は、
バスを介して設定された転送元アドレス又は転送先アドレスのいずれかの値がセットされる開始アドレスレジスタと、
暗号化又は復号化に用いるパラメータを、開始アドレスレジスタの値に基づき一義的に生成するパラメータ生成回路と、
パラメータ生成回路によって生成されたパラメータと転送データの排他的論理和をとる排他的論理和回路を含み、
前記制御部は、
暗号化を行う際には前記開始アドレスレジスタに転送先アドレスの値がセットされるように制御し、
復号化を行う際には前記開始アドレスレジスタに転送元アドレスの値がセットされるように制御することを特徴とする。
【0023】
本発明によれば暗号化/復号化回路は、暗号化または復号化を転送データと暗号化または復号化パラメータとの排他的論理和をとることにより実現しているので、暗号化と復号化の回路構成が同じとなり1つの回路で復号化の両方を実現することができる。
【0024】
(8)本発明のDMA転送回路は、
暗号処理または復号処理を行うか否かを制御するための値が記憶される動作モードレジスタを含み、
前記制御部は、
動作モードレジスタの値が暗号処理または復号処理を行うことを示す値である場合に暗号処理または復号処理を行うように制御することを特徴とする。
【0025】
(9)本発明は、
上記のいずれかに記載のDMA転送回路を含むことを特徴とするDMAコントローラである。
【0026】
(10)本発明は、
上記のいずれかに記載のDMA転送回路を含む複数のDMA転送回路を含むDMAコントローラであって、
各チャネル毎にDMA転送を行うためのDMA転送回路が割り当てられ、
暗号及び復号の少なくとも一方を行うためのチャネルに対しては、請求項1乃至9のいずれかに記載のDMA転送回路が割り当てられていることを特徴とする。
【発明を実施するための最良の形態】
【0027】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【0028】
図1は、本実施の形態のDMAコントローラ(DMA転送回路)の構成について説明するための図である。なお、本実施形態のDMAコントローラ100は、図1の構成要素(各部)を全て含む必要はなく、その一部を省略した構成としてもよい。
【0029】
本実施の形態のDMAコントローラ100は、データバッファ120、暗号キーレジスタ150、転送先アドレスレジスタ160、転送元アドレスレジスタ170、暗号化回路130、転送先アドレス計算回路162、転送元アドレス計算回路172、乱数発生器140、制御部110、出力データセレクタ180、出力アドレスセレクタ190を含む。
【0030】
80はデータバスであり、90はアドレスバスである。
【0031】
1は入力データ、2はDMA転送データ、3は乱数値、4は暗号キー値出力、5はアドレスバス90への出力アドレス、6は転送先アドレス出力、7は暗号処理データ出力、8は転送先ネクストアドレス、9は入力アドレス、10は転送元アドレス出力、11はデータバッファ制御信号、12は乱数発生器制御信号、13は暗号化回路制御信号、14は暗号キーレジスタ制御信号、15は転送先アドレスレジスタ制御信号、16は転送先アドレス計算回路制御信号、17は転送元アドレスレジスタ制御信号、18は転送元アドレス計算回路制御信号、19はデータバス80への出力データ、20は制御部レジスタリードデータ、21は転送元ネクストアドレスである。
【0032】
暗号化回路130は、図示しない開始アドレスレジスタ(図4の132)を含む。ここでDMAコントローラに転送の設定が行われる際には、例えばCPUによって転送先アドレス、転送元アドレス、がデータバス80を介して転送先アドレスレジスタ160,転送元アドレスレジスタ170に設定される。
【0033】
暗号化を行う場合(例えば暗号化モードが設定されている場合や暗号化を行うチャネルに割り当てられている場合)にはデータバスを介して入力された開始アドレス(暗号化の場合には転送先アドレス、復号化の場合には転送元アドレス)が暗号化回路130の図示しない開始アドレスレジスタ(図4の132)に設定される。
【0034】
データバッファ120は、データバス80からの入力データ信号1及び制御部からのデータバッファ制御信号11を受け取り、暗号化回路に対しDMA転送データ2を出力する。
【0035】
乱数発生器140は制御部110から乱数発生器制御信号12を受け取り、暗号化回路130に乱数値を出力する。乱数発生器140は、同じパラメータであれば同じ乱数値が発生するもの(パラメータから一義的に乱数値が導き出せるもの)を使用する。
【0036】
暗号キーレジスタ131は例えば32ビットのレジスタであり、制御部110からの暗号キーレジスタ制御信号12と暗号化回路130から出力される暗号処理後の転送データ7を入力とし、暗号化回路130に暗号キー値4を出力する。
【0037】
転送先アドレスレジスタ160は、例えば32ビットのレジスタであり、制御部110からの転送先アドレスレジスタ制御信号15とデータバスからの入力される転送先アドレス(DMA設定のさいに入力データ1としてデータバスを介してうけとる)と転送先アドレス計算回路162が演算する転送先ネクストアドレス8を入力として、自身のレジスタに格納された転送先アドレス値を出力アドレスセレクタ190に出力する。
【0038】
転送先アドレス計算回路162は制御部110からの転送先アドレス計算回路制御信号16、転送先アドレスレジスタの出力値を受け取り、転送先ネクストアドレス8を演算して転送先アドレスレジスタ160に対し出力する。
【0039】
転送元アドレスレジスタ170は、例えば32ビットのレジスタであり、制御部110からの転送元アドレスレジスタ制御信号17とデータバスからの入力される転送元アドレス(DMA設定のさいに入力データ1としてデータバスを介してうけとる)と転送元アドレス計算回路172が演算する転送元ネクストアドレス21を入力として、自身のレジスタに格納された転送元アドレス値を出力アドレスセレクタ190に出力する。
【0040】
転送元アドレス計算回路172は制御部110からの転送元アドレス計算回路制御信号18、転送元アドレスレジスタの出力値を受け取り、転送元ネクストアドレス21を演算して転送元アドレスレジスタ170に対し出力する。
【0041】
暗号化回路130は、データバッファから出力されるDMA転送データ2、乱数発生器140から出力される乱数値3、制御部110が出力する暗号化回路制御信号13、暗号キーレジスタ131が出力する暗号キー値4、データバスから入力される転送元アドレスまたは転送先アドレス(DMA設定のさいに入力データ1としてデータバスを介してうけとる)を入力し、暗号化された転送データ7を出力データセレクタ180及び暗号キーレジスタ150に出力する。
【0042】
出力データセレクタ180は、暗号化回路の出力する暗号化された転送データ7及び制御部レジスタリードデータ20を入力とし、いずれかを選択してデータバスに出力する。データを暗号化(または復号化)してDMA転送する場合には暗号化回路の出力する暗号化された転送データ7を選択してデータバス80に出力し、データを暗号化(または復号化)せずにDMA転送する場合には制御部レジスタリードデータ20をデータバス80に出力する。
【0043】
出力アドレスセレクタ190は、転送先アドレスレジスタ160の出力する転送先アドレス値6及び転送元アドレスレジスタ170の出力する転送元アドレス値10を入力とし、いずれかを選択してアドレスバス90に出力する。
【0044】
制御部110は、データバス80からの入力データ1、アドレスバス90からの入力アドレス9を入力し、出力データセレクタ18に対し制御部レジスタリードデータ20、その他の各種制御信号11,12、14、15、16、17、18を該当部署に対し出力する。
【0045】
制御部110は、転送元アドレスレジスタ160値が示すアドレスから転送データを読み出して一旦データバッファ120に保持し、データバッファ120から読み出したデータを転送先アドレスレジスタ170値が示すアドレスに書き込むための制御を行う。転送データに対して暗号化を行う場合には、暗号化後のデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行う。
【0046】
CPUがDMA設定(転送先アドレス、転送元アドレス、転送サイズ等)を行うと、DMAコントローラ100はデータバスを介して入力データとして、転送先アドレス、転送元アドレスを受け取り、それぞれ転送先アドレスレジスタ160、転送元アドレスレジスタ170に設定されるとともに、暗号化を行う場合(例えば暗号化モードが設定されている場合や暗号化を行うチャネルに割り当てられている場合)にはデータバスを介して入力された転送先アドレスが、復号化の場合には転送元アドレスが暗号化回路130の図示しない開始アドレスレジスタ(図4の132)に設定される。
【0047】
そしてDMAコントローラ100は、転送元データアドレスレジスタ170に格納された転送元データアドレス値6をアドレスバス90に出力して転送元データアドレスからデータバス80を介して入力データ1を読み出してデータバッファ120に格納する。
【0048】
そしてデータバッファに格納されたDMA転送データ2を暗号化回路130で暗号化してデータバス80に出力するとともに、転送先アドレスレジスタに格納された転送先アドレス値をアドレスバス90に出力する。
【0049】
乱数発生器140、暗号キーレジスタ150、暗号化回路130は、所与の暗号化パラメータに基づき前記転送データの暗号化をおこなう暗号処理部として機能する。
【0050】
また乱数発生器140、暗号キーレジスタ150、暗号化回路130を、転送元データアドレス値が示すアドレスから読みだした転送データを、転送元データアドレス値に関連して得られる復号化パラメータに基づき、転送元アドレスレジスタから読み出した転送データの復号化を行う復号処理部として機能させるようにしてもよい。
【0051】
図2は、比較例のDMAコントローラの構成について説明するための図である。
【0052】
比較例のDMAコントローラ200は、データバッファ220、転送先アドレスレジスタ260、転送元アドレスレジスタ270、転送先アドレス計算回路262、転送元アドレス計算回路272、制御部210、出力データセレクタ280、出力アドレスセレクタ290を含む。
【0053】
80’はデータバスであり、90’はアドレスバスである。
【0054】
301は入力データ、302はDMA転送データ、305はアドレスバス90への出力アドレス、306は転送先アドレス出力、308は転送先ネクストアドレス、309は入力アドレス、310は転送元アドレス出力、311はデータバッファ制御信号、315は転送先アドレスレジスタ制御信号、316は転送先アドレス計算回路制御信号、317は転送元アドレスレジスタ制御信号、318は転送元アドレス計算回路制御信号、319はデータバス80’への出力データ、320は制御部レジスタリードデータ、321は転送元ネクストアドレスである。
【0055】
比較例のDMAコントローラ200は、転送元データアドレスレジスタ270に格納された転送元データアドレス値3をアドレスバス90’に出力して転送元データアドレスからデータバス80’を介して入力データ301を読み出してデータバッファ220に格納する。そしてデータバッファに格納されDMA転送データ302をデータバス80’に出力するとともに、転送先アドレスレジスタに格納された転送先アドレス値をアドレスバス90’に出力し、転送元アドレスのデータを転送先アドレスにDMA転送を行う。
【0056】
図3は本実施の形態のDMAコントローラを含む情報処理装置(IC)の一例である。
【0057】
本実施の形態の情報処理装置(IC)400は、CPU420,DMAコントローラ430、周辺装置440、入出力制御部470、480、内部バス410を含む。周辺装置440は例えばGPIO(General Purpos Input/Output)USBC(USBコントローラー)、LANC(ネットワークコントローラー)、HDC(HDDコントローラー)、CFC(CompactFlashコントローラー)等でもよい。 データ保存装置460は、情報処理装置(IC)400の外部に置かれ入出力部410を介して情報処理装置(IC)400と接続されている。
【0058】
また周辺機器440は入出力装置440を介してHD(ハードディスク)等の外部メモリに接続されているとする。
【0059】
ここで例えばデータ保存装置460のデータを暗号化して外部メモリ490に書き込む場合には、以下のようにして実現することができる。
【0060】
CPU420は、DMAコントローラ430にたいし、暗号化モードの指定又は暗号化を行うチャネルの指定を行い、転送元アドレス(メモリ上のアドレス)、転送先のアドレス(HD477のアドレス)、転送サイズ等を指定する。するとDMAC430は、転送元アドレスに基づき読み出すアドレスを生成し、内部バス(アドレスバス)410に出力して、データ保存装置460のデータ内部バス(データバス)410を介してDMAコントローラ430の内部バッファ434に書き込み、暗号化処理部532は内部バッファ434のデータを暗号化する。そしてDMAC430は、転送先アドレスに基づき書き込みアドレスを生成し、内部バス(アドレスバス)410に出力しするとともに、暗号化されたデータを内部バス(データバス)410に出力して、外部のメモリ490に書き込む。
【0061】
図4は暗号化/復号化回路の構成の一例である。
【0062】
暗号化回路(復号化回路)は、開始アドレスレジスタ132、セレクタ138、排他的論理和回路134−1〜134−4、136−1〜136−4を含む。
【0063】
図4の暗号化/復号化回路130は、暗号化または復号化を転送データと暗号化または復号化パラメータとの排他的論理和をとることにより実現しているので、暗号化と復号化の回路構成が同じとなり1つの回路で暗号化と復号化の両方を実現することができる。
【0064】
開始アドレスレジスタ132は、DMAの設定の時に書き込まれる転送元または転送先アドレスを格納するレジスタである。
【0065】
暗号化を行う場合(例えば暗号化モードが設定されている場合や暗号化を行うチャネルに割り当てられている場合)にはデータバスを介して入力された転送先アドレスが設定され、復号化を行う場合(例えば復号化モードが設定されている場合や復号化を行うチャネルに割り当てられている場合)にはデータバスを介して入力された転送元アドレスが設定される。
【0066】
セレクタは開始アドレスレジスタ値及び暗号キーレジスタ150(図1の150と同じ)の値(暗号処理後のデータ7)を入力し、図示しないセレクト信号に基づきいずれかを出力する。すなわち一連のデータの暗号化を行う際の最初の32ビット分については、開始アドレスレジスタ値を出力し、それ以降は暗号処理後のデータ7を出力する。
【0067】
排他的論理和回路134−1、134−2、134−3、134−4は、それぞれセレクタの出力(31:24)、(23:16)、(15:8)、(7:0)と乱数値8ビット(図1の乱数発生器の出力値)とを入力して排他的論理和をとり、排他的論理和回路136−1、136−2、136−3、136−4に出力する。
【0068】
排他的論理和回路136−1、136−2、136−3、136−4は、それぞれ排他的論理和回路134−1、134−2、134−3、134−4の出力値とバッファに格納されている転送データ値の出力(31:24)、(23:16)、(15:8)、(7:0)とを入力して排他的論理和をとる。
【0069】
乱数値は、最小幅を8ビットとする。図4には乱数値データ幅の記述がないが、32ビットの場合は、対応するキーデータに対してビット毎に排他的論理和の演算を行い、8ビットの場合は各バイトの対応するビットに対して排他的論理和の演算を行う。
【0070】
暗号キーレジスタ150、開始アドレスレジスタ132、セレクタ138、図1の乱数発生器140は、転送先アドレスに基づき一義的に暗号化パラメータを生成する回路として機能し、排他的論理和回路134−1、134−2、134−3、134−4の出力90−1,90−2,90−3,90−4が暗号化パラメータである。
【0071】
暗号化パラメータ90−1,90−2,90−3,90−4は、転送先アドレスに基づき一義的に生成された暗号化パラメータであり、排他的論理和回路136−1、136−2、136−3、136−4は、転送先アドレスに基づき一義的に生成された暗号化パラメータ90−1,90−2,90−3,90−4と、転送データ2の排他的論理和をとる排他的論理和回路である。
【0072】
また暗号キーレジスタ150、開始アドレスレジスタ132、セレクタ138、図1の乱数発生器140は、転送元アドレスに基づき一義的に復号化パラメータを生成する回路として機能し、排他的論理和回路134−1、134−2、134−3、134−4の出力90−1,90−2,90−3,90−4が復号化パラメータである。
【0073】
復号化パラメータ90−1,90−2,90−3,90−4は、転送元アドレスに基づき一義的に生成された暗号化パラメータであり、排他的論理和回路136−1、136−2、136−3、136−4は、転送先アドレスに基づき一義的に生成された暗号化パラメータ90−1,90−2,90−3,90−4と、転送データ2の排他的論理和をとる排他的論理和回路である。
【0074】
図4の暗号化/復号化回路130は所与のパラメータに基づき転送元アドレスレジスタ値が示すアドレスから読み出した転送データの暗号化と復号化をおこなうことが可能な暗号/復号処理部として機能する。
【0075】
暗号化/復号化回路130は、バスを介して設定された転送元アドレス又は転送先アドレスのいずれかの値がセットされる開始アドレスレジスタ132と、暗号化又は復号化に用いるパラメータ90−1,90−2,90−3、90−4を、開始アドレスレジスタ132の値に基づき一義的に生成するパラメータ生成回路(150、132、138、140)と、パラメータ生成回路によって生成されたパラメータ90−1,90−2,90−3、90−4と転送データ2の排他的論理和をとる排他的論理和回路136−1、136−2、136−3、136−4を含み、前記制御部(図1の110)は、暗号化を行う際には前記開始アドレスレジスタ132に転送先アドレスの値がセットされるように制御し、復号化を行う際には前記開始アドレスレジスタ132に転送元アドレスの値がセットされるように制御する。
【0076】
図5は本実施の形態の暗号化方式の一例について説明するための図である。
【0077】
本実施の形態の暗号化方式として例えば内部同期式ストリーム暗号を使用することができる。これは同じ値で2回排他的論理和を行うと元値に戻るという事を利用したものである。
【0078】
キーの初期値610は、DMAコントローラーに設定したアドレス(暗号化の場合は転送先アドレス、復号化の場合には転送元アドレス)と乱数から生成する。
【0079】
その後は暗号処理住みのデータ630と乱数から生成する。
【0080】
乱数の発生は、あるパラメーターから同じ値が発生するものとする。これをソフトで管理することで復号時に同じ乱数値を発生させ、復号可能となる。
【0081】
内部同期に対して外部同期式があるが、これは暗号処理部の外部から乱数値を与えるもので、この外部同期式の場合も本発明の範囲内である。この場合にはDMAC外部、もしくはシステム外部から与えるようにしてもよい。
【0082】
ストリーム転送とは、平文620や暗号文630の系列に依存した形で乱数列を生成させる形のものである。
【0083】
本実施の形態では32ビット単位で処理をするのでシフトレジスタではなく32ビットの暗号キーレジスタ(図4の131参照)が次の32ビットのデータに更新される形を取っている。
【0084】
暗号化されたデータ自体が暗号キーレジスタに格納され、次のキーを生成する要素となる。
【0085】
図6はDMA設定時のフローチャートである。
【0086】
まず、CPUはDMAコントローラを暗号処理モードに設定する(ステップS10)。具体的には暗号処理を実施するかしないか、暗号/復号の区別を指示するパラメータ(CPON、POU)の設定を行う。
【0087】
次に乱数コードの設定を行う(ステップS20)。乱数コード(CRNC)を設定する。この乱数コード(CRNC)を変えることで同じアドレスでも異なる初期キーを生成することができる。
【0088】
転送元アドレス(SADR)の設定を行う(ステップS30)。復号処理を行う場合、暗号/復号処理回路の開始アドレスレジスタに同時に書き込まれる。
【0089】
次に転送先アドレス(TADR)の設定を行う(ステップS40)。暗号処理を行う場合、暗号/復号化回路のレジスタに同時に書き込まれる。
【0090】
転送データ数(TDNC)の設定を行う(ステップS50)。
【0091】
なおDMA設定のパラメーターは以下のとおりである。
CPON;暗号処理モード 1:暗号処理を行う、0:暗号処理を行わない。
POU ;暗号/復号切替え CPON=1 の時に意味を持つ。
1:暗号処理。キーの生成に転送先アドレスを使用する。
0:復号処理。キーの生成に転送元アドレスを使用する。
SADR;転送元アドレス。
TADR;転送先アドレス。
TDNC;データ転送数。
TIFN;終了通知モード
1:割込、0:割込みなし。
CRNC;乱数設定コード。このレジスタは制御部に持つ。
CPON;暗号処理モード1:暗号処理を行0:暗号処理を行わない。
POU ;暗号/復号切替え。 CPON=1 の時に意味を持つ。
1:暗号処理。キーの生成に転送先アドレスを使用する。
【0092】
図7は、DMA転送時のフローチャートである。
【0093】
本実施の形態ではDMAコントローラーの設定を行い、起動をかけることで自動的に暗号/復号化処理が行われる。
【0094】
まず図6に示したようなDMA設定処理を行う(ステップS110)。
【0095】
次にDMA起動を行う(ステップS120)。
【0096】
DMA転送が終了したら処理を終了する(ステップS130)。
【0097】
暗号、復号ともに同じフローとなる。暗号時は送信先アドレスが暗号化回路の入力に、復号時は送信元アドレスが暗号/復号化回路のキー作成の為の入力になる。
【0098】
乱数コードは、送信先アドレスと対で管理テーブルによりソフトウエアが管理するようにしてもよい。
【0099】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【図面の簡単な説明】
【0100】
【図1】本実施の形態のDMAコントローラ(DMA転送回路)の構成図。
【図2】比較例のDMAコントローラの構成図。
【図3】本実施の形態のDMAコントローラを含むシステム(情報処理装置)の一例。
【図4】暗号化/復号化回路の構成の一例である。
【図5】本実施の形態の暗号化方式の一例について説明するための図。
【図6】DMA設定時のフローチャートである。
【図7】DMA転送時のフローチャートである。
【符号の説明】
【0101】
80 データバス、90 アドレスバス、100 DMAコントローラ(DMA転送回路)、110 制御部、120 データバッファ、130 暗号化回路、暗号化回路(復号化回路)は、132 開始アドレスレジスタ、138 セレクタ、134−1〜134−4 排他的論理和回路、136−1〜136−4 排他的論理和回路、140 乱数発生器、150 暗号キーレジスタ、160 転送先アドレスレジスタ、162 転送先アドレス計算回路、170 転送元アドレスレジスタ、172 転送元アドレス計算回路、180 出力データセレクタ、190 出力アドレスセレクタ

【特許請求の範囲】
【請求項1】
DMA転送を行うためのDMA転送回路であって、
データバッファと、
転送先アドレスレジスタと、
転送元アドレスレジスタと、
転送元アドレスレジスタ値が示すアドレスから転送データを読み出して一旦データバッファに保持し、データバッファから読み出したデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行う制御部と、
所与の暗号化パラメータに基づき前記転送データの暗号化をおこなう暗号処理部とを含み、
前記制御部は、
暗号化後のデータを転送先アドレスレジスタ値が示すアドレスに書き込むための制御を行うことを特徴とするDMA転送回路。
【請求項2】
請求項1において、
転送元データアドレス値が示すアドレスから読みだした転送データを、転送元データアドレス値に関連して得られる復号化パラメータに基づき、転送元アドレスレジスタから読み出した転送データの復号化を行う復号処理部を含むことを特徴とするDMA転送回路。
【請求項3】
請求項1乃至2のいずれかにおいて、
前記暗号処理部は、
転送先アドレスに基づき一義的に暗号化パラメータを生成する回路を含み、
生成された暗号化パラメータに基づき転送データの暗号化を行うことを特徴とするDMA転送回路。
【請求項4】
請求項2に従属する請求項3において、
前記復号処理部は、
転送元データアドレスに基づき復号化パラメータを生成し、転送元アドレスレジスタから読み出した転送データの復号化を行うことを特徴とするDMA転送回路。
【請求項5】
請求項3乃至4のいずれかにおいて、
前記暗号処理部は、
転送先アドレスに基づき一義的に生成された暗号化パラメータと、転送データの排他的論理和をとる排他的論理和回路を含み、排他的論理和回路を用いて暗号化を行うことを特徴とするDMA転送回路。
【請求項6】
請求項5において、
前記復号処理部は、
転送元アドレスに基づき一義的に生成された復号化パラメータと、転送元アドレスレジスタから読み出した転送データの排他的論理和をとる排他的論理和回路を含み、排他的論理和回路を用いて復号化を行うことを特徴とするDMA転送回路。
【請求項7】
請求項1乃至6のいずれかにおいて、
所与のパラメータに基づき転送元アドレスレジスタ値が示すアドレスから読み出した転送データの暗号化と復号化をおこなうことが可能な暗号/復号処理部を含み、
前記暗号/復号処理部は、
バスを介して設定された転送元アドレス又は転送先アドレスのいずれかの値がセットされる開始アドレスレジスタと、
暗号化又は復号化に用いるパラメータを、開始アドレスレジスタの値に基づき一義的に生成するパラメータ生成回路と、
パラメータ生成回路によって生成されたパラメータと転送データの排他的論理和をとる排他的論理和回路を含み、
前記制御部は、
暗号化を行う際には前記開始アドレスレジスタに転送先アドレスの値がセットされるように制御し、
復号化を行う際には前記開始アドレスレジスタに転送元アドレスの値がセットされるように制御することを特徴とするDMA転送回路。
【請求項8】
請求項1乃至7のいずれかにおいて、
暗号処理または復号処理を行うか否かを制御するための値が記憶される動作モードレジスタを含み、
前記制御部は、
動作モードレジスタの値が暗号処理または復号処理を行うことを示す値である場合に暗号処理または復号処理を行うように制御することを特徴とするDMA転送回路。
【請求項9】
請求項1乃至8のいずれかに記載のDMA転送回路を含むことを特徴とするDMAコントローラ。
【請求項10】
請求項1乃至9のいずれかに記載のDMA転送回路を含む複数のDMA転送回路を含むDMAコントローラであって、
各チャネル毎にDMA転送を行うためのDMA転送回路が割り当てられ、
暗号及び復号の少なくとも一方を行うためのチャネルに対しては、請求項1乃至9のいずれかに記載のDMA転送回路が割り当てられていることを特徴とするDMAコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−102468(P2007−102468A)
【公開日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願番号】特願2005−291249(P2005−291249)
【出願日】平成17年10月4日(2005.10.4)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.COMPACTFLASH
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】