(57)【要約】【課題】ＡＥＳブロック暗号回路の処理速度を高速化する。【解決手段】複数のセルがマトリックス状に配列されたデータテーブル１１を設ける。ラウンドデータの１ブロックが１６ビットごとに複数のデータに区切られ、データテーブル１１の各セルに８ビットずつのデータに分けられて書き込まれる。８ビットのデータは、データテーブル１１における配置がＳｈｉｆｔＲｏｗ処理の結果と同等になるように、所定の順序でセルに書き込まれる。データテーブル１１のうち、書き込みの完成した列について、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理が順次実行される。データテーブル１１のすべての列について、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理が実行されたとき、その実行結果と、キーデータとのイクスクルーシブオア処理が実行されて平文データの暗号文データが出力される。【選択図】        図１
2004184566.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器が、１ブロックのラウンドデータを所定のビット数ごとに複数のデータに区切って所定の順序でＡＥＳブロック暗号回路に供給し、
このＡＥＳブロック暗号回路は、供給された上記複数のデータをデータテーブルの各セルに８ビットずつのデータに分けて書き込むとともに、
この書き込み時、上記データテーブルにおける上記８ビットずつのデータの配置が、ＳｈｉｆｔＲｏｗ処理の結果と同等となるように、上記８ビットずつのデータを上記セルに書き込み、
上記データテーブルのうち、上記書き込みの完成した列について、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を順次実行し、
上記データテーブルのすべての列について、上記ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を実行したとき、そのＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理の実行結果と、キーデータとのイクスクルーシブオア処理を実行し、
このイクスクルーシブオア処理の処理結果を上記ホスト機器にラウンド処理の処理結果として返送する
ようにしたＡＥＳブロック暗号方法。
【請求項２】
１回のラウンド処理が、
ホスト機器が、１ブロックのラウンドデータを所定のビット数ごとに複数のデータに区切って所定の順序でＡＥＳブロック暗号回路に供給し、
このＡＥＳブロック暗号回路は、供給された上記複数のデータをデータテーブルの各セルに８ビットずつのデータに分けて書き込むとともに、
この書き込み時、上記データテーブルにおける上記８ビットずつのデータの配置が、ＳｈｉｆｔＲｏｗ処理の結果と同等となるように、上記８ビットずつのデータを上記セルに書き込み、
上記データテーブルのうち、上記書き込みの完成した列について、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を順次実行し、
上記データテーブルのすべての列について、上記ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を実行したとき、そのＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理の実行結果と、キーデータとのイクスクルーシブオア処理を実行し、
このイクスクルーシブオア処理の処理結果を上記ホスト機器にラウンド処理の処理結果のラウンドデータとして返送する
ようにした処理であって、
上記ラウンドデータを新たな入力データとして上記ラウンド処理を所定の回数繰り返すことにより暗号文データを得る
ようにしたＡＥＳブロック暗号方法。
【請求項３】
複数のセルがマトリックス状に配列されたデータテーブルと、
第１〜第４の演算テーブルと、
この第１〜第４の演算テーブルの出力が供給されるイクスクルーシブオア回路と、
このイクスクルーシブオア回路の出力を保持するラッチ回路と、
このラッチ回路の出力と、ラウンドキーデータとのイクスクルーシブオアをとる別のイクスクルーシブオア回路と
を有し、
ホスト機器からラウンドデータの１ブロックが所定のビット数ごとに複数のデータに区切られるとともに、この複数のデータが所定の順序で送信されてきたとき、
この送信されてきたデータを、上記データテーブルの各セルに８ビットずつのデータに分けて書き込むとともに、
上記データテーブルにおける上記８ビットずつのデータの配置がＳｈｉｆｔＲｏｗ処理の結果と同等となるように、上記８ビットずつのデータを所定の順序で上記セルに書き込み、
上記データテーブルのうち、上記書き込みの完成した列について、上記第１〜第４の演算テーブルおよび上記イクスクルーシブオア回路によりＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を順次実行して上記ラッチ回路に保持し、
上記データテーブルのすべての列について、上記ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を実行したとき、上記ラッチ回路の保持しているデータと、キーデータとのイクスクルーシブオア処理を、上記別のイクスクルーシブオア回路により実行し、
この別のイクスクルーシブオア回路の出力を上記ホスト機器にラウンド処理の処理結果として返送する
ようにしたＡＥＳブロック暗号回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＡＥＳブロック暗号方法およびその暗号回路に関する。
【０００２】
【従来の技術】
平文データを暗号文データに暗号化する方法の１つとして、ＡＥＳブロック暗号化法がある。このＡＥＳブロック暗号化法は、平文データの１２８ビット、１９２ビットあるいは２５６ビットを１ブロックとし、その１ブロックごとに「ラウンド処理」と呼ばれる処理を所定の回数だけ実行して暗号化を行うものである（例えば、非特許文献１参照）。
【０００３】
図６は、そのＡＥＳブロック暗号化の処理手順のアウトラインを示し、この図６における第２行目以降の各行の処理が、それぞれ上記の「ラウンド処理」である。そして、ＡＥＳブロック暗号化を行う場合には、まず、図６の第１行目に示すように、もとの１ブロックの平文データが、ラウンドキーデータとイクスクルーシブオア処理されて第１番目のラウンドデータが作成される。
【０００４】
続いて、図６の第２行目に示すように、第１行目の処理で作成された第１番目のラウンドデータに対して、後述するＳｕｂＢｙｔｅｓ処理、ＳｈｉｆｔＲｏｗ処理、ＭｉｘＣｏｌｕｍｎ処理と呼ばれる処理が順に実行され、その処理結果が、別のラウンドキーデータとイクスクルーシブオア処理されて第２番目のラウンドデータが作成される。この第１番目のラウンドデータから第２番目のラウンドデータを作成するまでの処理が、第１番目のラウンド処理である。
【０００５】
そして、以後、この第１番目のラウンド処理と同様のラウンド処理が繰り返され、全部でＲ回のラウンド処理が実行されたとき、その処理結果が暗号文データとして取り出される。
【０００６】
なお、最後のラウンド処理のときには、ＭｉｘＣｏｌｕｍｎ処理は実行されない。また、ラウンド処理の回数Ｒは、１ブロックの長さと、ラウンドキーデータの長さとから決まり、１０回、１２回あるいは１４回のどれかとされる。さらに、ラウンドキーデータの長さは１２８ビット、１９２ビットあるいは２５６ビットのどれかとされる。
【０００７】
図７は、ラウンド処理の具体的な処理内容を示す。なお、この例においては、平文データの１ブロックが１２８ビットであり、したがって、ラウンドデータの１ブロックも１２８ビットの場合である。
【０００８】
まず、図７Ａに示すように、第ｒ番目（１≦ｒ≦Ｒ−１）のラウンドデータは、８ビットごとに１６個のデータＡ〜Ｐに区切られる。そして、図７Ｂに示すように、そのラウンドデータは、８ビットのデータごとに４行４列のデータテーブルの各セルに振り分けられる。このとき、ラウンドデータは、まず、データＡ〜Ｄが第１列の第１行〜第４行のセルに順に振り分けられ、次にデータＥ〜Ｈが第２列の第１行〜第４行のセルに順に振り分けられ、・・・というように、列順に、かつ、各列においては、行順に振り分けられる。
【０００９】
続いて、その振り分けられたデータＡ〜Ｐに対してＳｕｂＢｙｔｅｓ処理が行われ、図７Ｃに示すように、データＡ〜ＰはデータＳ００〜Ｓ３３とされる。このＳｕｂＢｙｔｅｓ処理は、データＡ〜Ｐのそれぞれに対して、非線形のビット転置を行うものであり、そのビット転置は、データＡ〜Ｐを２進数の多項式とし、図８Ａに示す式に対して逆元を計算し、さらに、所定の行列でアフィン変換を行うものである。ただし、実際には、このＳｕｂＢｙｔｅｓ処理は、Ｓテーブルと呼ばれるテーブルを使用して実現される。
【００１０】
次に、図７Ｄに示すように、データＳ００〜Ｓ３３に対してＳｈｉｆｔＲｏｗ処理が行われる。このＳｈｉｆｔＲｏｗ処理は、第１行のデータＳ００〜Ｓ０３はそのままとし、第２行のデータＳ１０〜Ｓ１３を左方向に１列分回転させ、第３行のデータＳ２０〜Ｓ２３を左方向に２列分回転させ、第４行のデータＳ３０〜Ｓ３３を左方向に３列分回転させるものである。
【００１１】
そして、ＳｈｉｆｔＲｏｗ処理の行われたデータＳ００〜Ｓ３２に対してＭｉｘＣｏｌｕｍｎ処理が行われ、図７Ｅに示すように、データＳ００〜データＳ３２はデータＤ００〜Ｄ３３とされる。このＭｉｘＣｏｌｕｍｎ処理は、図７Ｄのデータテーブルの各列ごとに、図８Ｂに示す演算を実行してデータＳ００〜データＳ３２からデータＤ００〜Ｄ３３を得るものである。
【００１２】
さらに、図７Ｆに示すように、４行４列のラウンドキーデータＫ００〜Ｋ３３が用意される。このラウンドキーデータＫ００〜Ｋ３３は、暗号化用のキーデータから生成されるものであり、データＫ００〜Ｋ３３のそれぞれも８ビットであるが、暗号化用のキーデータそのものは、１２８ビット、１９２ビットあるいは２５６ビットのいずれかである。また、ラウンドキーデータＫ００〜Ｋ３３は、ラウンドデータごとに変更される。
【００１３】
そして、このラウンドキーデータＫ００〜Ｋ３３と、データＤ００〜Ｄ３３とのイクスクルーシブオアが演算され、図７Ｇに示すように、その演算結果のデータＥ００〜Ｅ３３が取り出される。このデータＥ００〜Ｅ３３が、第ｒ番目のラウンドデータＡ〜Ｐをラウンド処理した結果の出力データであり、第（ｒ＋１）番目のラウンド処理の入力データとなる。
【００１４】
以上がラウンド処理の処理内容であるが、ＡＥＳブロック暗号回路をハードウェアにより構成する場合、ＭｉｘＣｏｌｕｍｎ処理の実行部をハードウェアにより構成すると、そのロジックのリソースが極端に大きくなってしまう。そこで、ＡＥＳブロック暗号回路をハードウェア化する場合、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を１つの演算テーブルにより実行するようにしたものがある。
【００１５】
図９は、そのＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を１つの演算テーブルにより実現する場合のラウンド処理の処理手順および処理内容を示す。
【００１６】
まず、図９Ａに示すように、第ｒ番目のラウンドデータは、８ビットごとに１６個のデータＡ〜Ｐに区切られる。そして、図９Ｂに示すように、そのラウンドデータは、８ビットのデータごとに４行４列のデータテーブルの各セルに振り分けられる。このとき、ラウンドデータは、まず、データＡ〜Ｄが第１列の第１行〜第４行のセルに順に振り分けられ、次にデータＥ〜Ｈが第２列の第１行〜第４行のセルに順に振り分けられ、・・・というように、列順に、かつ、各列においては、行順に振り分けられる。
【００１７】
次に、図９Ｃに示すように、データＡ〜Ｐに対してＳｈｉｆｔＲｏｗ処理が行われる。このＳｈｉｆｔＲｏｗ処理は、第１行のデータＡ〜Ｍはそのままとし、第２行のデータＢ〜Ｎを左方向に１列分回転させ、第３行のデータＣ〜Ｏを左方向に２列分回転させ、第４行のデータＤ〜Ｐを左方向に３列分回転させるものである。
【００１８】
続いて、そのＳｈｉｆｔＲｏｗ処理の行われたデータＡ〜Ｌに対して、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理が実行される。このＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理は、所定の演算テーブルを用いたテーブル変換およびイクスクルーシブオア処理により以下のように実行される。
【００１９】
すなわち、まず、図９Ｃのデータテーブルの第１列について、第１の演算テーブルを用いてテーブル変換を行うことにより、図９Ｄに示すように、
・データＡから８ビット×４個のデータａ０、ａ１、ａ２、ａ３を得る。
・データＦから８ビット×４個のデータｆ０、ｆ１、ｆ２、ｆ３を得る。
・データＫから８ビット×４個のデータｋ０、ｋ１、ｋ２、ｋ３を得る。
・データＰから８ビット×４個のデータｐ０、ｐ１、ｐ２、ｐ３を得る。
【００２０】
次に、図９Ｄの第１列のデータａ０〜ｐ３について、イクスクルーシブオア処理を行い、図９Ｅに示すように、
・ａ＝ａ０＾ｆ０＾ｋ０＾ｐ０を得る。
・ｆ＝ａ１＾ｆ１＾ｋ１＾ｐ１を得る。
・ｋ＝ａ２＾ｆ２＾ｋ２＾ｐ２を得る。
・ｐ＝ａ３＾ｆ３＾ｋ３＾ｐ３を得る。
ただし、＾は、イクスクルーシブオアを示す。
【００２１】
同様にして、図９Ｃの第２列のデータＥ、Ｊ、Ｏ、Ｄに対して、第２の演算テーブルを用いて図９Ｄに示すようなテーブル変換を行うとともに、イクスクルーシブオア処理を行って図９Ｅに示すようにデータｅ、ｊ、ｏ、ｄを得る。また、同様にして、図９Ｃの第３列および第４列のデータを、第３および第４の演算テーブルを用いてデータｉ、ｎ、ｃ、ｈおよびｍ、ｂ、ｇ、ｌを得る。
【００２２】
さらに、図９Ｆに示すように、４行４列のラウンドキーデータＫ００〜Ｋ３３が用意される。このラウンドキーデータＫ００〜Ｋ３３は、暗号化用のキーデータから生成されるものであり、データＫ００〜Ｋ３３のそれぞれも８ビットであるが、暗号化用のキーデータそのものは、１２８ビット、１９２ビットあるいは２５６ビットのいずれかである。また、ラウンドキーデータＫ００〜Ｋ３３は、ラウンドごとに変更される。
【００２３】
そして、このラウンドキーデータＫ００〜Ｋ３３と、図９Ｅに示すデータａ〜ｌとのイクスクルーシブオアが演算され、図９Ｇに示すように、その演算結果としてデータＥ００〜Ｅ３３が取り出される。このデータＥ００〜Ｅ３３が、第ｒ番目のラウンドデータＡ〜Ｐをラウンド処理した結果のデータであり、第（ｒ＋１）番目のラウンド処理の入力データとなる。
【００２４】
以上がラウンド処理の具体的な内容であり、このラウンド処理が図６により説明したように繰り返されて平文データが暗号分データに暗号化されるものである。
【００２５】
【非特許文献１】
「ＡＥＳ  Ｈｏｍｅ  Ｐａｇｅ」、［ｏｎｌｉｎｅ］、［２００２年１１月１２日検索］、インターネット〔ＵＲＬ：ｈｔｔｐ：／／ｃｓｒｃ．ｎｉｓｔ．ｇｏｖ／ｅｎｃｒｙｐｔｉｏｎ／ａｅｓ／〕
【００２６】
【発明が解決しようとする課題】
ところで、図９に示すような手順でラウンド処理を行う場合、各ラウンドにおけるデータと時間の流れとの関係は図１０に示すようになる。なお、図１０においては、簡単のため、各回路における処理の時間遅れは無視する。
【００２７】
すなわち、ホストコンピュータとＡＥＳブロック暗号回路とを接続するデータバスのバス幅を１６ビットとすれば、ホストコンピュータがＡＥＳブロック暗号回路に第ｒ番目のラウンドデータを転送するとき、図１０Ａに示すように、まず、データＡ、Ｂを転送し、次に、データＣ、Ｄを転送し、・・・というように、ラウンドデータを２つずつ（１６ビットずつ）転送することができる。
【００２８】
そして、最後のデータＯ、Ｐの転送が終了したとき、図９Ｂの状態となるので、図１０Ｂに示すように、まず、ＳｈｉｆｔＲｏｗ処理を実行して図９Ｃの状態を得る。次に、そのＳｈｉｆｔＲｏｗ処理を終えたら、図１０Ｃに示すように、図９Ｃの第１列についてテーブル変換（図９Ｄ）およびイクスクルーシブオア処理（図９Ｅ）を実行して図９Ｅの第１列のデータａ〜ｐを得る。
【００２９】
この場合、演算テーブルは、単にデータ変換をしているだけなので、図１０Ｂ、Ｃに示すように、ＳｈｉｆｔＲｏｗ処理を終えると、ただちにデータａ０〜ａ３、ｆ０〜ｆ３、ｋ０〜ｋ３、ｐ０〜ｐ３が得られる。また、これらデータ（ａ０〜ａ３）〜（ｐ０〜ｐ３）のイクスクルーシブオア処理した結果がデータａ〜ｐであるから、このデータａ〜ｐもＳｈｉｆｔＲｏｗ処理を終えると、ただちに得られる。そして、このデータａ〜ｐをいったんラッチ回路にラッチすることにより、図１０Ｄに示すように、そのイクスクルーシブオア処理のデータａ〜ｐを連続して得る。
【００３０】
続いて、図１０Ｃに示すように、図９Ｃの第２列についてテーブル変換（図９ＣおよびＤ）およびイクスクルーシブオア処理（図９ＤおよびＥ）を実行して図９Ｅの第２列のデータｅ〜ｄを得る。なお、このとき、例えば図９Ｅの第２列のイクスクルーシブオア処理の結果をラッチすることにより、図１０Ｄに示すように、その第２列のイクスクルーシブオア処理の結果を連続して得る。
【００３１】
さらに、図９Ｃの第３列および第４列についてテーブル変換およびイクスクルーシブオア処理を、列ごとに順に実行するとともに、ラッチを行うことにより、図１０Ｄに示すように、第３列および第４列のイクスクルーシブオア処理の結果を連続して得る。
【００３２】
そして、最後に、図１０Ｅに示すように、各列のデータと、ラウンドキーデータＫ００〜Ｋ３３とのイクスクルーシブオアをとってラウンド処理結果のデータＥ００〜Ｅ３３を得る（図９Ｇの状態）。なお、図１０Ｄに示すイクスクルーシブオア処理の結果がラッチされているので、データＥ００〜Ｅ３３は連続して得られる。また、図１０Ｅにおいて、破線部分はデータに意味のないことを示す。
【００３３】
こうして作成されたデータＥ００〜Ｅ３３は、２つずつ（１６ビットずつ）ホストコンピュータに返送して１ラウンド分の処理を終了し、以後、以上の処理をラウンドごと繰り返す。
【００３４】
したがって、図１０Ａ〜Ｅの処理の場合には、すべての処理が順番に実行されていくので、ホストコンピュータが第ｒ番目のラウンドデータＡ〜Ｐを転送してからラウンド処理結果のデータＥ００〜Ｅ３３が得られるようになるまでに時間がかかってしまう。
【００３５】
この発明は、このような問題点を解決し、第ｒ番目のラウンドデータを転送してからラウンド処理結果のデータが得られるようなるまでの時間を短縮し、ホストコンピュータから見たＡＥＳブロック暗号化回路のラウンド処理を高速化しようとするものである。
【００３６】
【課題を解決するための手段】
この発明においては、例えば、
ホスト機器が、１ブロックのラウンドデータを所定のビット数ごとに複数のデータに区切って所定の順序でＡＥＳブロック暗号回路に供給し、
このＡＥＳブロック暗号回路は、供給された上記複数のデータをデータテーブルの各セルに８ビットずつのデータに分けて書き込むとともに、
この書き込み時、上記データテーブルにおける上記８ビットずつのデータの配置が、ＳｈｉｆｔＲｏｗ処理の結果と同等となるように、上記８ビットずつのデータを上記セルに書き込み、
上記データテーブルのうち、上記書き込みの完成した列について、ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を順次実行し、
上記データテーブルのすべての列について、上記ＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理を実行したとき、そのＳｕｂＢｙｔｅｓ処理およびＭｉｘＣｏｌｕｍｎ処理の実行結果と、キーデータとのイクスクルーシブオア処理を実行し、
このイクスクルーシブオア処理の処理結果を上記ホスト機器にラウンド処理の処理結果として返送する
ようにしたＡＥＳブロック暗号方法
とするものである。
したがって、ラウンドデータの受信と、Ｂｙｔｅｓｕｂ処理およびＭｉｘＣｏｌｕｍｎ処理とが平行して実行され、暗号回路の全体としての処理速度が高速になる。
【００３７】
【発明の実施の形態】
▲１▼  ＡＥＳブロック暗号回路の構成および処理方法（１６ビット転送の場合）
図１において、符号１０は、この発明によるＡＥＳブロック暗号回路の一例を示し、符号２０は、ＡＥＳブロック暗号回路１０を使用するホストコンピュータを示す。そして、ホストコンピュータ２０のメモリ２３には、ＡＥＳブロック暗号回路１０により暗号化される平文データが用意される。また、この例においては、ホストコンピュータ２０の外部バス２９のバス幅が１６ビットの場合である。
【００３８】
そして、ＡＥＳブロック暗号回路１０は、メモリ１１、第１〜第４の演算テーブル１２１〜１２４、イクスクルーシブオア回路１３Ａ〜１３Ｐ、ラッチ回路１４Ａ〜１４Ｐ、イクスクルーシブオア回路１５、およびキーデータテーブル１６などを有する。
【００３９】
この場合、メモリ１１は、ホストコンピュータ２０から送られてきた１ブロックのラウンドデータを一時的に保持するためのものであり、ホストコンピュータ２０が外部バス２９を通じてメモリ１１に接続される。なお、説明を簡単にするため、メモリ１１は、図３に示すように、４行４列のデータテーブルを構成しているものとする。
【００４０】
さらに、演算テーブル１２１〜１２４は、図９ＣにおけるデータＡ〜Ｐを、図９Ｄにおけるデータ（ａ０〜ａ３）〜（ｐ０〜ｐ３）に変換するためのものである。このため、演算テーブル１２１〜１２４のそれぞれは、入力が８ビットで出力が８ビット×４組とされるとともに、図９ＣおよびＤの第１行〜第４行に対応する内容とされ、メモリ１１からデータＡ〜Ｐが供給される。
【００４１】
また、イクスクルーシブオア回路１３Ａ〜１３Ｐは、図９Ｄにおけるデータ（ａ０〜ａ３）〜（ｐ０〜ｐ３）を図９Ｅにおけるデータａ〜ｐに変換するためのものであり、演算テーブル１２１〜１２４により形成されたデータ（ａ０〜ａ３）〜（ｐ０〜ｐ３）（図９Ｄ）が供給される。
【００４２】
さらに、ラッチ回路１４Ａ〜１４Ｐは、イクスクルーシブオア回路１３Ａ〜１３Ｐにより形成されたａ〜ｐを、次のラウンド処理まで保持するためのものである。このため、ラッチ回路１４Ａ〜１４Ｐには、イクスクルーシブオア回路１３Ａ〜１３Ｐの出力が供給される。
【００４３】
また、イクスクルーシブオア回路１５は、図９Ｅにおけるデータａ〜ｐを、図９Ｆに示すラウンドキーデータＫ００〜Ｋ３３により出力データＥ００〜Ｅ３３に変換するためのものである。このため、ラウンドキーデータＫ００〜Ｋ３３がキーデータテーブル１６に用意され、これらラウンドキーデータＫ００〜Ｋ３３がイクスクルーシブオア回路１５に供給されるとともに、ラッチ回路１４Ａ〜１４Ｐからのデータａ〜ｐがイクスクルーシブオア回路１５に供給される。そして、イクスクルーシブオア回路１５の出力は出力用のレジスタ（ラッチ）１７に供給される。
【００４４】
さらに、ＡＥＳブロック暗号回路１０は制御回路１８を有する。この制御回路１８は、ホストコンピュータ２０からの指示にしたがって、上述した各回路１１、１２１〜１２４、１３Ａ〜１３Ｐ、１４Ａ〜１４Ｐ、１５〜１７の動作を制御することにより、ホストコンピュータ２０から供給される１ブロックのデータを、１ラウンドごとにラウンド処理するためのものである。
【００４５】
このような構成において、以下のようにしてラウンド処理が実行される。なお、以下においては、１ブロックは１２８ビットであり、図９Ａに示すように、その１２８ビットを８ビットごとに区切ったとき、その８ビットごとのデータを順にデータＡ〜Ｐとする。そして、このデータＡ〜Ｐが第ｒ番目のラウンドデータとして、ホストコンピュータ２０のメモリ２３に用意されているものとする。さらに、各回路における処理の時間遅れは、簡単のため、無視する。
【００４６】
すると、今の場合、バス２９のバス幅が１６ビットなので、ホストコンピュータ２０は、メモリ２３のラウンドデータを２つずつ（１６ビットずつ）ＡＥＳブロック暗号回路１０に送信することができることになるが、ホストコンピュータ２０は、そのラウンドデータＡ〜Ｐを、メモリ２３から読み出してＡＥＳブロック暗号回路１０に送信するとき、図２Ａに示すように、
期間Ｔ１には、データＡ、Ｂを読み出し、暗号回路１０に送信する。
期間Ｔ２には、データＥ、Ｆを読み出し、          〃          。
期間Ｔ３には、データＫ、Ｌを読み出し、          〃          。
・・・・・
期間Ｔ８には、データＧ、Ｈを読み出し、          〃          。
の順番で、その処理を行う。
【００４７】
つまり、コンピュータ２０は、メモリ２３のデータＡ〜Ｐを読み出してＡＥＳブロック暗号回路１０に出力するとき、データテーブル（メモリ）１１の第１列〜第４列が列ごとに最短の時間で完成する順序でデータＡ〜Ｐを読み出してＡＥＳブロック暗号回路１０に転送する。
【００４８】
一方、ＡＥＳブロック暗号回路１０はラウンドデータが送信されてくると、制御回路１８が、その送信されてきたラウンドデータを順にメモリ１１に書き込むが、この場合、期間Ｔ１に第１番目のデータＡ、Ｂを受信したときには、図３Ａに示すように、データＡをデータテーブル１１の第１列第１行に書き込み、データＢを第４列第２行に書き込む。次に、期間Ｔ２に第２番目のデータＥ、Ｆを受信したときには、図３Ｂに示すように、データＥをデータテーブル１１の第２列第１行に書き込み、データＦを第１列第２行に書き込む。
【００４９】
また、期間Ｔ３に第３番目のデータＫ、Ｌを受信したときには、図３Ｃに示すように、データＫをデータテーブル１１の第１列第３行に書き込み、データＬを第４列第４行に書き込む。さらに、期間Ｔ４に第４番目のデータＯ、Ｐを受信したときには、図３Ｄに示すように、データＯをデータテーブル１１の第２列第３行に書き込み、データＰを第１列第４行に書き込む。
【００５０】
したがって、期間Ｔ４に、図３Ｄに示すようにデータテーブル１１の第１列が完成することになるが、この完成した第１列は、図９Ｃに示すＳｈｉｆｔＲｏｗ処理の結果と等しい。また、このとき、データテーブル１１へのデータＡ〜Ｐの書き込みは、受信したデータＡ〜Ｐを加工する必要がないので、受信と同時に行うことができる。したがって、期間Ｔ４の開始時点からデータＡ、Ｆ、Ｋ、Ｐを同時に得ることができる
そこで、データテーブル１１のデータＡが第１の演算テーブル１２１に供給されて８ビット×４個のデータａ０〜ａ３に変換され、データＦが第２の演算テーブル１２２に供給されて８ビット×４個のデータｆ０〜ｆ３に変換される。また、データＫが第３の演算テーブル１２３に供給されてデータｋ０〜ｋ３に変換されるとともに、データＰが第４の演算テーブル１２４に供給されてデータｐ０〜ｐ３に変換される。
【００５１】
この場合、演算テーブル１２１〜１２４は、単にデータ変換をしているだけなので、図２Ａ、Ｂに示すように、期間Ｔ４に、データ（ａ０〜ａ３）〜（ｐ０〜ｐ３）を得ることができる。そして、これらデータ（ａ０〜ａ３）〜（ｐ０〜ｐ３）が、イクスクルーシブオア回路１３Ａ〜１３Ｐにそれぞれ供給されて図９Ｅのデータａ、ｆ、ｋ、ｐとされ、このデータａ〜ｐがラッチ回路１４Ａ〜１４Ｐにラッチされる。したがって、図２Ｃに示すように、期間Ｔ４からイクスクルーシブオア処理されたデータａ〜ｐを連続して得ることができる。
【００５２】
そして、以後、メモリ２３のデータは、図２Ａに示すように、データテーブル１１の第２列〜第４列が順番に完成するような順序で読み出されてＡＥＳブロック暗号回路１０に転送されてくるので、データテーブル１１の第２列〜第４列が、期間Ｔ６、Ｔ８、Ｔ９にそれぞれ完成していく。
【００５３】
したがって、図２Ｂに示すように、期間Ｔ６に、演算テーブル１２１〜１２４によりデータＥ、Ｊ、Ｏ、Ｄがデータｅ０〜ｅ３、ｊ０〜ｊ３、ｏ０〜ｏ３、ｄ０〜ｄ３に変換され、さらに、イクスクルーシブオア回路１４Ｅ〜１４Ｐによりデータｅ、ｊ、ｏ、ｄとされてからラッチ回路１３Ｅ〜１３Ｄにラッチされる。したがって、図２Ｃに示すように、期間Ｔ６からデータｅ〜ｄを連続して得ることができる。さらに、同様にして期間Ｔ８からデータｉ〜ｈを連続して得ることができ、期間Ｔ９からデータｍ〜ｌを連続して得ることができる。
【００５４】
こうして、期間Ｔ９に、図９Ｅにおけるデータａ〜ｌはすべて揃うとともに、以後も連続して得られことになる。そこで、この期間Ｔ９に、図９Ｅのデータａ〜ｐがイクスクルーシブオア回路１５に供給されるとともに、キーデータテーブル１６からラウンドキーデータＫ００〜Ｋ３３がイクスクルーシブオア回路１５に供給され、図２Ｄに示すように、期間Ｔ９から第ｒ番目のラウンド処理結果のデータＥ００〜Ｅ３３が取り出される。そして、このデータＥ００〜Ｅ３３が、続く期間Ｔ１０にホストコンピュータ２０に返送される（図２において、破線部分はデータに意味のないことを示す）。
【００５５】
そして、以上の処理が１ラウンドごとに繰り返されて平文データの１ブロックが暗号文データに暗号化される。
【００５６】
こうして、ラウンド処理されたラウンドデータを得ることができるが、この場合、特に上述のＡＥＳブロック暗号回路１０によれば、ホストコンピュータ２０から見てラウンド処理に必要な時間を短縮することができる。
【００５７】
すなわち、図１０のラウンド処理の場合には、第ｒ番目のラウンドの最後のデータＯ、Ｐが供給されてからラウンド処理結果のデータＥ００〜Ｅ３３を出力するようになるまでに、１回のＳｈｉｆｔＲｏｗ処理の時間と、４回のテーブル変換およびイクスクルーシブオア処理の時間とが必要となる。しかし、図１および図２のラウンド処理方法の場合には、図２からも明かなように、最後のデータＯ、Ｐが供給されて１回のイクスクルーシブオア処理が終了すると、直ちにラウンド処理結果のデータＥ００〜Ｅ３３を出力することができ、ホストコンピュータ２０からみたラウンド処理時間を短縮することができる。
【００５８】
しかも、そのためには、メモリ２３からラウンドデータを読み出すときの１６ビットデータの順序を変更するだけでよく、特別なハードウェアを必要としない。むしろ、ＡＥＳブロック暗号回路１０におけるＳｈｉｆｔＲｏｗ処理が不要となり、そのためのハードウェアが不要となる。
【００５９】
▲２▼  ＡＥＳブロック暗号回路１０の暗号化処理（８ビット転送の場合）
これは、ホストコンピュータ２０とＡＥＳブロック暗号回路１０とを接続するバス２９のバス幅が８ビットの場合である。なお、他の構成については、▲１▼において説明したとおりである。
【００６０】
そして、ホストコンピュータ２０において、ラウンドデータは、８ビットずつメモリ２３から読み出されてＡＥＳブロック暗号回路１０に転送されるが、この場合、図４Ａに示すように、期間Ｔ１〜Ｔ１６に、データテーブル１１の第１列〜第４列が列ごとに最短の時間で完成する順序で読み出されてＡＥＳブロック暗号回路１０に転送される。
【００６１】
また、ＡＥＳブロック暗号回路１０においては、期間Ｔ１〜Ｔ１６に図４Ａに示す順序でデータＡ〜Ｌが転送されてくるとき、そのデータＡ〜Ｌは、データテーブル１１に、第１列から第４列へと列順に、かつ、それぞれの列においては、第１行から第４行へと行順に書き込まれていく。
【００６２】
そして、期間Ｔ４になると、第１列のデータＡ〜Ｐが完成するので、第１〜第４の演算テーブル１２１〜１２４によりデータＡ〜Ｐがデータ（ａ０〜ａ３）〜（ｐ０〜ｐ３）に変換されるとともに、イクスクルーシブオア回路１３Ａ〜１３Ｐによりデータａ〜ｐとされ、このデータａ〜ｐがラッチ回路１４Ａ〜１４Ｐにラッチされる。したがって、図４Ｃに示すように、期間Ｔ４から、ラッチ回路１４Ａ〜１４Ｐからデータａ〜ｐを連続して得られるようになる。
【００６３】
以下、残るデータも、テーブル変換、イクスクルーシブオア処理およびラッチ処理が同様に実行され、図４Ｃに示すように、期間Ｔ１６になると、すべてのデータａ〜ｌを得ることができる。そこで、これらのデータａ〜ｌとラウンドキーデータＫ００〜Ｋ３３とが、イクスクルーシブオア回路１５によりイクスクルーシブオア処理され、図４Ｄに示すように、期間Ｔ１６から第ｒ番目のラウンド処理結果のデータＥ００〜Ｅ３３が取り出される。そして、このデータＥ００〜Ｅ３３が、続く期間Ｔ１７にホストコンピュータ２０に返送される。
【００６４】
そして、以上の処理が１ラウンドごとに繰り返されて平文データの１ブロックが暗号文データに暗号化される。
【００６５】
こうして、ラウンド処理されたラウンドデータを得ることができるが、この場合も、最後のデータＬが供給されると、直ちにラウンド処理結果のデータＥ００〜Ｅ３３を出力することができ、ホストコンピュータ２０からみたラウンド処理時間を短縮することができる。
【００６６】
▲３▼  記録再生装置
図５は、この発明をＣＤ−Ｒ／ＲＷ記録再生装置に適用した場合の一形態を示す。
【００６７】
すなわち、符号３１はオーディオ信号の信号源、例えばマイクロフォン、符号３２はオーディオ信号の出力先、例えばスピーカ３２を示し、これらはオーディオインターフェイス回路３３を通じて後述するマイクロコンピュータ４０のシステムバス４９に接続される。さらに、このシステムバス４９には、ディスクインターフェイス回路３４を通じてディスクドライブ装置３５が接続され、このドライブ装置３５に、ＣＤ−ＲあるいはＣＤ−ＲＷなどのディスク３６がセットされる。
【００６８】
そして、マイクロコンピュータ４０は、図１におけるコンピュータ２０に対応するとともに、この記録再生装置全体の動作を制御するシステムコントロール回路を構成するものである。そして、このマイクロコンピュータ４０は、ＣＰＵ４１、各種のプログラムおよびデータの書き込まれたＲＯＭ４２、ワークエリア用のＲＡＭ４３を有し、これらがシステムバス４９に接続される。
【００６９】
さらに、▲１▼および▲２▼において説明したＡＥＳブロック暗号回路１０がシステムバス４９に接続されるとともに、このＡＥＳブロック暗号回路１０と相補のＡＥＳブロック復号処理を実行するＡＥＳブロック復号回路４７がバス４９に接続される。なお、ＲＡＭ４３は、その一部のアドレスエリアがメモリ２３として使用される。
【００７０】
また、ユーザインターフェイスとして、各種の操作キー４４およびディスプレイ、例えばＬＣＤ４５もシステムバス４９に接続される。さらに、システムバス４９には、外部インターフェイスとしてＵＳＢインターフェイス回路４６が接続され、このＵＳＢインターフェイス回路４６に、外部機器として例えばパーソナルコンピュータ５０が接続される。
【００７１】
そして、記録時および再生時には、暗号化処理あるいは復号化処理の必要・不必要に対応して以下のような処理が実行される。
【００７２】
▲３▼−１  通常の記録
暗号化を必要としない記録時には、マイクロフォン３１からのオーディオ信号がインターフェイス回路３３に供給されてデジタルオーディオデータにＡ／Ｄ変換され、このデジタルオーディオデータが、システムバス４９を通じてディスクインターフェイス回路３４に供給されてエラー訂正用のエンコード処理および記録用のＥＦＭ変調処理が行われる。そして、このエンコード処理および変調処理の行われた信号が、ディスクドライブ装置３５に供給され、ディスク３６に記録される。
【００７３】
▲３▼−２  通常の再生
ドライブ装置３５によりディスク３６から信号が再生され、この再生信号がディスクインターフェイス回路３４に供給されて記録時とは相補の処理、すなわち、ＥＦＭ復調処理およびエラー訂正用のデコード処理が行われ、もとのデジタルオーディオデータが取り出される。そして、このデジタルオーディオデータが、システムバス４９を通じてインターフェイス回路３３に供給されてアナログのオーディオ信号にＤ／Ａ変換され、このオーディオ信号がスピーカ３２に供給される。
【００７４】
なお、デジタルオーディオデータ以外のデジタルデータをディスク３６に対して記録あるいは再生する場合には、そのためのエンコード処理やデコード処理などが必要となるが、それらの処理もディスクインターフェイス回路３４において実行される。
【００７５】
▲３▼−３  オーディオ信号の暗号化および記録
オーディオ信号を暗号化してディスク３６に記録する場合には、マイクロフォン３１からのオーディオ信号がインターフェイス回路３３に供給されてデジタルオーディオデータにＡ／Ｄ変換され、このデジタルオーディオデータがＲＡＭ４３にいったんバッファリングされてからＡＥＳブロック暗号回路１０に供給され、暗号文データに暗号化される。
【００７６】
そして、この暗号文データが、ディスクインターフェイス回路３４に供給されてエラー訂正用のエンコード処理および記録用のＥＦＭ変調処理が行われ、その後、ディスクドライブ装置３５に供給され、ディスク３６に記録される。
【００７７】
▲３▼−４  オーディオ信号の再生および復号化
ディスク３６に記録されているオーディオ信号を復号化して再生する場合には、ドライブ装置３５によりディスク３６から信号が再生され、この再生信号がディスクインターフェイス回路３４に供給されてもとの暗号データがデコードされて取り出される。そして、この暗号データが、ＲＡＭ４３にいったんバッファリングされてからＡＥＳブロック復号回路４７に供給され、もとのデジタルオーディオデータにブロック復号化される。
【００７８】
そして、この復号化されたデジタルオーディオデータがインターフェイス回路３３に供給されてもとのアナログのオーディオ信号にＤ／Ａ変換され、このオーディオ信号がスピーカ３２に供給される。
【００７９】
▲３▼−５  オーディオ信号の再暗号化
これは、ディスク３６に暗号化されて記録されているオーディオ信号を再暗号化（もとの暗号文データを平文データに復号化し、その平文データを別のキーデータにより再び暗号文データに暗号化すること）し、その再暗号化したデジタルオーディオデータを例えばパーソナルコンピュータ５０に出力する場合である。
【００８０】
すなわち、ディスク３６の再生が開始されると、▲３▼−４と同様、ディスク３６からの再生信号が、ディスクインターフェイス回路３４によりもとの暗号文データにデコードされ、さらにＡＥＳブロック復号回路４７により平文データに復号化されてＲＡＭ４３に順次書き込まれていく。そして、この平文データがＡＥＳブロック暗号回路１０により暗号文データに再暗号化され、この再暗号文データがＵＳＢインターフェイス回路４６を通じてパーソナルコンピュータ５０が供給される。そして、以後、このような処理が、ディスク３６から１セクタ分の暗号文データが再生されるごとに繰り返される。
【００８１】
こうして、ディスク３６に暗号化されて記録されているオーディオ信号は再暗号化されてパーソナルコンピュータ５０に出力されるが、この場合、ＡＥＳブロック暗号回路１０の暗号化処理を高速に実行できるので、上記のようにディスク３６を再生しながらリアルタイムで処理を実行することができる。
【００８２】
▲４▼  その他
上述において、ＡＥＳブロック暗号回路１０は、外部バス２９のバス幅が、１６ビットあるいは８ビットのどちらであるかを、ホストコンピュータ２０からの情報により判別し、あるいはＡＥＳブロック暗号回路１０に用意した切り換え端子に外部からあらかじめ設定されているレベルにより判別し、その判別結果にしたがって、▲１▼あるいは▲２▼を選択し、暗号化処理を実行することもできる。
【００８３】
また、上述においては、平文データの１ブロックが１２８ビットの場合であるが、１ブロックが１９２ビットあるいは２５６ビットの場合には、データテーブル１１を４行６列あるいは４行８列とし、４行４列の場合と同様、平文データを８ビットずつ、列ごとに最短の時間で完成する順序でデータテーブル１１に書き込めばよい。
【００８４】
〔この明細書で使用している略語の一覧〕
Ａ／Ｄ    ：Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ
ＡＥＳ    ：Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ
ＣＤ      ：Ｃｏｍｐａｃｔ  Ｄｉｓｃ
ＣＤ−Ｒ  ：ＣＤ  Ｒｅｃｏｒｄａｂｌｅ
ＣＤ−ＲＷ：ＣＤ  ＲｅＷｒｉｔａｂｌｅ
ＣＰＵ    ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ
Ｄ／Ａ    ：Ｄｉｇｉｔａｌ  ｔｏ  Ａｎａｌｏｇ
ＥＦＭ    ：Ｅｉｇｈｔ  ｔｏ  Ｆｏｕｒｔｅｅｎ  Ｍｏｄｕｌａｔｉｏｎ
ＬＣＤ    ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ
ＲＡＭ    ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ
ＲＯＭ    ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ
ＵＲＬ    ：Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ
ＵＳＢ    ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ
【００８５】
【発明の効果】
この発明によれば、ラウンド処理にかかる時間を短縮することができ、したがって、平文データを暗号文データに暗号化する短縮することができる。しかも、そのためには、メモリから平文データを読み出すときのデータの順序を変更するだけでよく、特別なハードウェアを必要としない。むしろ、暗号回路におけるＳｈｉｆｔＲｏｗ処理が不要となり、そのためのハードウェアが不要となる。
【図面の簡単な説明】
【図１】この発明の一形態を示す系統図である。
【図２】この発明の一形態を示すタイミング図である。
【図３】この発明を説明するための図である。
【図４】この発明の他の形態を示すタイミング図である。
【図５】この発明の一形態を示す系統図である。
【図６】ＡＥＳブロック暗号化処理を説明するための図である。
【図７】ラウンド処理を説明するための図である。
【図８】ラウンド処理で使用される数式を示す図である。
【図９】ラウンド処理を説明するための図である。
【図１０】ラウンド処理を説明するためのタイミング図である。
【符号の説明】
１０…ＡＥＳブロック暗号回路、１１…メモリ（データテーブル）、１３Ａ〜１３Ｐ…イクスクルーシブオア回路、１４Ａ〜１４Ｐ…ラッチ回路、１５…イクスクルーシブオア回路、１６…キーデータテーブル、１８…制御回路、２０…ホストコンピュータ、２３…メモリ、１２１〜１２４…演算テーブル
【図１】
2004184566.tif 000003
【図２】
2004184566.tif 000004
【図３】
2004184566.tif 000005
【図４】
2004184566.tif 000006
【図５】
2004184566.tif 000007
【図６】
2004184566.tif 000008
【図７】
2004184566.tif 000009
【図８】
2004184566.tif 000010
【図９】
2004184566.tif 000011
【図１０】
2004184566.tif 000012