(57)【要約】【課題】ＡＥＳ暗号方式を用いて、複数のストリームに対して同時にかつ高速に、暗号または復号の処理を行う暗復号処理装置を提供する。【解決手段】演算データを保持する演算データ保持部５０１と、暗号時は共通鍵に復号時は拡大鍵の最後にフラグを付与した構造をした鍵データを保持する鍵データ保持部５０２と、データの入力を制御する入力制御部６００とを演算チャネル数だけ持ち、さらに演算を行うチャネルを選択する入力チャネル選択部５１１と、鍵データのフラグ判定処理を行うフラグ判定部５２１と、ＡＥＳ演算を行う演算部５３１と、鍵データのフラグ付与処理を行うフラグ付与部５５１と、演算部５３１に演算指令を出す演算制御部６１１と、出力データを出力するチャネルを選択する出力チャネル選択部５４１と、選択チャネルの指示を出すチャネル制御部６０１とを備える。【選択図】図１
2006171598.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個（Ｎは２以上の任意の整数）のストリームに対して、時分割に暗号または復号の処理を行う暗復号処理装置であって、
Ｎ個のストリームに対応したｃｈ０〜ｃｈＮ−１のＮ個のチャネルを持ち、
一演算単位ずつ入力される前記ストリームのデータである演算データを保持する演算データ保持部と、
前記ストリームの暗号または復号を行うために設定される鍵データを保持する鍵データ保持部と、
前記演算データ保持部と鍵データ保持部へのデータ入力を各チャネル毎に制御するための入力制御部と、
前記演算データ保持部に保持された演算データと前記鍵データ保持部に保持された鍵データの中から、暗復号処理を行うストリームに対応したチャネルのデータを選択する入力チャネル選択部と、
前記入力チャネル選択部で選択された鍵データに含まれるフラグ情報の判定を行うフラグ判定部と、
前記入力チャネル選択部で選択された演算データと、前記フラグ判定部で判定を行った結果を用いて、暗号または復号の処理を行う演算部と、
前記演算部から出力された出力鍵データに、前記フラグ判定部で判定を行った結果を用いてフラグの付与を行うフラグ付与部と、
前記演算部で演算終了時に出力される出力データと、前記フラグ付与部から出力されるフラグが付与された出力鍵データを、前記入力チャネル選択部で選択したチャネルと同じチャネルを選択して出力を行う出力チャネル選択部と、
前記入力チャネル選択部と出力チャネル選択部に選択チャネルの指示を送るチャネル制御部とを、
備えたことを特徴とする暗復号処理装置。
【請求項２】
前記入力制御部は、更に、
前記演算データ保持部に演算データが保持され、前記鍵データ保持部に鍵データが設定されている演算可能な状態であるか識別する演算状態識別手段と、
前記演算データ保持部に演算データを入力可能な状態であるか判断する演算データ入力判断手段とを備えたことを特徴とする請求項１に記載の暗復号処理装置。
【請求項３】
前記チャネル制御部は、更に、
各チャネルの優先順位を決定するチャネル優先順位決定手段と、
前記演算部での演算処理が１回終了するごとに、前記チャネル優先順位決定手段を用いて次に演算を行うチャネルを選択するチャネル選択手段とを備えたことを特徴とする請求項１又は請求項２に記載の暗復号処理装置。
【請求項４】
共通鍵から作成される拡大鍵の後ろからＮｋ個（Ｎｋは共通鍵と同じビット数）を復号鍵と定義するとき、
前記鍵データ保持部に保持する鍵データは、
暗号を行うときは共通鍵に、暗号処理を示すフラグを付与したものとし、
復号を行うときは復号鍵に、
復号処理を示すフラグを付与したものとすることを特徴とする請求項１〜請求項３のいずれか１項に記載の暗復号処理装置。
【請求項５】
前記鍵データから、
フラグと共通鍵または復号鍵とを分割する鍵データ分割手段と、
前記鍵データ分割手段により分割されたフラグより暗号または復号のどちらを行うか判定するフラグ判定手段とを、
さらに備えたことを特徴とする請求項４に記載の暗復号処理装置。
【請求項６】
前記演算部は、
前記フラグ判定手段で判定した情報をもとに、
前記鍵データ分割手段により分割された共通鍵または復号鍵を用いて暗号または復号の演算を行い、
共通鍵を使い暗号を行ったときには復号鍵を、
復号鍵を使い復号を行ったときには暗号鍵を
演算結果とともに出力することを特徴とする請求項５に記載の暗復号処理装置。
【請求項７】
前記ストリームの暗復号方式は、
鍵長が１２８ビット又は１９２ビット又は２５６ビットのＡＥＳ暗号であることを特徴とする請求項５に記載の暗復号処理装置。
【請求項８】
Ｎ個（Ｎは２以上の任意の整数）のストリームに対して、時分割に暗号または復号の処理を行う暗復号処理方法であって、
Ｎ個のストリームに対応したｃｈ０〜ｃｈＮ−１のＮ個のチャネルを持ち、
一演算単位ずつ入力される前記ストリームのデータである演算データを保持する演算データ保持ステップと、
前記ストリームの暗号または復号を行うために設定される鍵データを保持する鍵データ保持ステップと、
前記演算データ保持ステップで保持された演算データと前記鍵データ保持ステップで保持された鍵データの中から、暗復号処理を行うストリームに対応したチャネルのデータを選択する入力チャネル選択ステップと、
前記入力チャネル選択ステップで選択された鍵データに含まれるフラグ情報の判定を行うフラグ判定ステップと、
前記入力チャネル選択ステップで選択された演算データと、前記フラグ判定ステップで判定を行った結果を用いて、暗号または復号の処理を行う演算ステップと、
前記演算ステップで作成された出力鍵データに、前記フラグ判定ステップで判定を行った結果を用いてフラグの付与を行うフラグ付与ステップと、
前記演算ステップで演算終了時に作成される出力データと、前記フラグ付与ステップから作成されるフラグが付与された出力鍵データを、前記入力チャネル選択ステップで選択したチャネルと同じチャネルを選択して出力を行う出力チャネル選択ステップ
とからなる暗復号処理方法。
【請求項９】
Ｎ個（Ｎは２以上の任意の整数）のストリームに対して、時分割に暗号または復号の処理をコンピュータに実行させるためのプログラムであって、
Ｎ個のストリームに対応したｃｈ０〜ｃｈＮ−１のＮ個のチャネルを持ち、
一演算単位ずつ入力される前記ストリームのデータである演算データを保持する演算データ保持手順と、
前記ストリームの暗号または復号を行うために設定される鍵データを保持する鍵データ保持手順と、
前記演算データ保持手順で保持された演算データと前記鍵データ保持手順で保持された鍵データの中から、暗復号処理を行うストリームに対応したチャネルのデータを選択する入力チャネル選択手順と、
前記入力チャネル選択手順で選択された鍵データに含まれるフラグ情報の判定を行うフラグ判定手順と、
前記入力チャネル選択手順で選択された演算データと、前記フラグ判定手順で判定を行った結果を用いて、暗号または復号の処理を行う演算手順と、
前記演算手順で作成された出力鍵データに、前記フラグ判定手順で判定を行った結果を用いてフラグの付与を行うフラグ付与手順と、
前記演算手順で演算終了時に作成される出力データと、前記フラグ付与手順から作成されるフラグが付与された出力鍵データを、前記入力チャネル選択手順で選択したチャネルと同じチャネルを選択して出力を行う出力チャネル選択手順と、
を有する暗復号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現在の米国標準であるＤＥＳにかわり、次世代の共通鍵暗号として選定されたＡＥＳ暗号方式を用いて、複数のストリームに対して時分割で暗号または復号の処理を行う暗復号処理装置に関する。
【背景技術】
【０００２】
近年、ＴＶ放送のデジタル化や、ＣＤやＤＶＤ等の蓄積メディアやネットワークを用いたコンテンツの提供などが急速に普及してきたが、提供されるコンテンツの著作権保護の観点から、データの機密性を確保するためのデータ暗号方式が要求されている。
【０００３】
また、暗号方式の実現においては、安全性のみならず暗号処理の高速性や実装の簡便性も要求される。
【０００４】
このような暗号方式の一般的構成では、暗号化の対象となるデータは、固定サイズのブロックに分割され、各ブロックが所定の暗号鍵に基づいてデータ撹乱処理されて、暗号文が生成される。
【０００５】
このような暗号方式の１つに米国の次世代標準暗号として制定されたあるＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号がある。
【０００６】
ＡＥＳは一演算単位が１２８ビットのブロック暗号であり、図９にその暗号化アルゴリズムを示す。
【０００７】
図９のように、ＡＥＳの暗号化アルゴリズムはラウンド演算００１やＥＸＯＲ００２を繰り返し行う０００の部分と、拡大鍵スケジュール１００を行う部分から構成される。
【０００８】
Ｎｒ回行うラウンド演算００１では、データのランダム化処理がなされ、ラウンド演算００１の前後にＮｒ＋１回行うＥＸＯＲ００２では、拡大鍵スケジュール１００で作成された拡大鍵とのＥＸＯＲ処理がなされる。
【０００９】
拡大鍵スケジュール１００では、共通鍵をもとにＷ（０）〜Ｗ（４×Ｎｒ＋３）の拡大鍵を作成する。
【００１０】
拡大鍵はそれぞれ３２ビットずつで、Ｗ（０）〜Ｗ（Ｎｋ−１）は共通鍵を３２ビットずつ区切ったものとし、Ｗ（Ｎｋ）以降は順番に演算して求めていく。
【００１１】
例えばＷ（ｘ＋Ｎｋ）を求めるときには、Ｗ（ｘ＋Ｎｋ−１）とＷ（ｘ）を用いて演算を行う（図１１を参照）。
【００１２】
また、拡大鍵は逆方向に演算をすることもできて、例えばＷ（ｘ−Ｎｋ）は、Ｗ（ｘ）とＷ（ｘ−１）を用いて演算を行うことで求められる（図１２を参照）。
【００１３】
図１０にＮｒとＮｋの値を示す。
【００１４】
例えばＷ（ｘ＋１）〜Ｗ（ｘ＋Ｎｋ）の連続したＮｋ個の拡大鍵が分かれば、Ｗ（ｘ＋Ｎｋ＋１）以降は、Ｗ（ｘ＋１）とＷ（ｘ＋Ｎｋ）からＷ（ｘ＋Ｎｋ＋１）を求め、Ｗ（ｘ＋２）とＷ（ｘ＋Ｎｋ＋１）からＷ（ｘ＋Ｎｋ＋２）を求め、という具合に順番に求めることができる。
【００１５】
一方、Ｗ（ｘ）より前は、Ｗ（ｘ＋Ｎｋ−１）とＷ（ｘ＋Ｎｋ）からＷ（ｘ）を求め、Ｗ（ｘ＋Ｎｋ−２）とＷ（ｘ＋Ｎｋ−１）からＷ（ｘ−１）を求め、という具合に求めることができる。
【００１６】
以上のことから、連続したＮｋ個の拡大鍵があれば、それらの拡大鍵から全ての拡大鍵を求めることができる。
【００１７】
図１２のように、拡大鍵の後ろからＮｋ個を合わせたものを復号鍵と呼ぶことにする。
【００１８】
復号鍵のビット数は共通鍵と必ず同じである。
【００１９】
図１３はＡＥＳの暗復号を行う暗号回路の一例を示すブロック図である（例えば、特許文献１参照）。
【００２０】
図１３において、暗号回路はラウンド演算やＥＸＯＲを行う２００のブロックと、拡大鍵スケジュールを行う３００のブロックと制御部４００から構成される。
【００２１】
２００のブロックでは以下の処理が行われる。
【００２２】
はじめに、演算データをセレクタ部２０１で選択して、ＥＸＯＲ部２０２で拡大鍵との１回目のＥＸＯＲを行い中間値保持部２０３に保持する。
【００２３】
次に、中間値保持部２０３に保持された値をラウンド演算部２０５でラウンド演算して、セレクタ部２０１で選択して、ＥＸＯＲ部２０２で拡大鍵とのＥＸＯＲを行い、再び中間値保持部２０３に保持するという処理をＮｒ回繰り返す。
【００２４】
最後に、中間値保持部２０３に保持している演算結果を出力データとして出力する。
【００２５】
前記の２００のブロックの処理と平行して、３００のブロックで拡大鍵スケジュールをおこなう。
【００２６】
拡大鍵は鍵長が２５６ビットのときは６０個、１２８ビットのときでも４８個必要となり、これを全て保持すると回路規模が大きくなってしまう。
【００２７】
そこで、一度に保持する拡大鍵はＮｋ個だけにして、ＥＸＯＲ部２０２に必要となる拡大鍵を順番に演算していく。
【００２８】
暗号時には、３００のブロックでは以下の処理が行われる。
【００２９】
はじめに、共通鍵をセレクタ部３０１で選択して、拡大鍵保持部３０３に保持する。
【００３０】
次に、２００のブロックで必要となる拡大鍵を作成するために、必要に応じて、拡大鍵保持部３０３に保持された値を拡大鍵演算部３０５で演算して、セレクタ部３０１で選択して、再び拡大鍵保持部３０３に保持する。
【００３１】
復号時には、基本的には暗号時と同様の処理を行うが、最初に共通鍵から復号鍵を演算する必要がある。
【００３２】
それは、暗号時には最初にＷ（０）〜Ｗ（３）を、次にＷ（４）〜Ｗ（７）を、という順番で拡大鍵を使用するのに対して、復号時には最初にＷ（４×Ｎｒ）〜Ｗ（４×Ｎｒ＋３）を、次にＷ（４×Ｎｒ−４）〜Ｗ（４×Ｎｒ−１）を、という暗号とは逆の順番で拡大鍵を使用するためである。
【００３３】
復号時には、はじめに、共通鍵をセレクタ部３０１で選択して、拡大鍵保持部３０３に保持する。
【００３４】
次に、拡大鍵保持部３０３に保持された値を拡大鍵演算部３０５で演算して、セレクタ部３０１で選択して、再び拡大鍵保持部３０３に保持するという処理を繰り返し、最後まで拡大鍵を演算し復号鍵を求める。
【００３５】
演算で求められた復号鍵は、復号鍵保持部３０４に保持して、次の演算からは最初に復号鍵保持部３０４に保持した値を拡大鍵保持部３０３にロードする。これによって、演算の最初に、共通鍵から復号鍵を演算する処理は省くことが出来る。
【００３６】
復号鍵を拡大鍵保持部３０３に保持した後は、暗号時と同様に、必要に応じて、拡大鍵保持部３０３に保持された値を拡大鍵演算部３０５で演算して、セレクタ部３０１で選択して、再び拡大鍵保持部３０３に保持するという処理を行う。ただし、拡大鍵演算部３０５での演算は暗号時とは逆向きになる。
【００３７】
制御部４００では、暗号モード指示信号をもとに暗号または復号のいずれかの判断を行い、また演算指令信号を受け演算を開始して２００と３００のブロックに制御信号を送る。
【００３８】
特許文献１では、回路規模を小さくするために、ラウンド演算部２０５と拡大鍵演算部３０５は３２ビットずつ演算をしていたり、また、ラウンド演算部２０５の演算は２サイクルに分けて行っていたりしている。
【００３９】
特許文献１では、１２８ビットの演算にかかるサイクル数は図１４のようになっている。
【特許文献１】特開２００３−１５５２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００４０】
しかしながら、従来は複数のストリームに対して、時分割にＡＥＳ暗復号処理を行うような装置はなかった。
【００４１】
時分割に暗復号を行わなくても、図１３の暗号回路をストリームの数だけ置くことで、複数のストリームの暗復号を行うことができるが、それでは回路規模が大きくなりすぎてしまう。
【００４２】
回路規模を抑えるためには、ひとつの暗号回路を使用して時分割に複数のストリームに対して暗復号を行う必要があり、そのために暗復号を行うストリームをスムーズに切り替えるしくみが必要となる。
【００４３】
また、図１３の暗号回路では、復号時には共通鍵が変わるたびに復号鍵の演算を行わなければならない。そのため、演算するストリームを時分割で頻繁に切り替える場合は、頻繁に復号鍵の演算を行わなければならなくなるため、演算性能が大きく低下してしまうという課題がある（暗号のみを行う場合は除く）。
【課題を解決するための手段】
【００４４】
前記課題を解決するため、本発明の暗復号処理装置は、Ｎ個のストリームに対して、時分割に暗号または復号の処理を行うために、Ｎ個のストリームに対応したｃｈ０〜ｃｈＮ−１のＮ個のチャネルを持ち、一演算単位ずつ入力される前記ストリームのデータである演算データを保持する演算データ保持部と、前記ストリームの暗号または復号を行うために設定される鍵データを保持する鍵データ保持部と、前記演算データ保持部と鍵データ保持部へのデータ入力を各チャネル毎に制御するための入力制御部と、前記演算データ保持部に保持された演算データと前記鍵データ保持部に保持された鍵データの中から、暗復号処理を行うストリームに対応したチャネルのデータを選択する入力チャネル選択部と、前記入力チャネル選択部で選択された鍵データに含まれるフラグ情報の判定を行うフラグ判定部と、前記入力チャネル選択部で選択された演算データと、前記フラグ判定部で判定を行った結果を用いて、暗号または復号の処理を行う演算部と、前記演算部から出力された出力鍵データに、前記フラグ判定部で判定を行った結果を用いてフラグの付与を行うフラグ付与部と、前記演算部で演算終了時に出力される出力データと、前記フラグ付与部から出力されるフラグが付与された出力鍵データを、前記入力チャネル選択部で選択したチャネルと同じチャネルを選択して出力を行う出力チャネル選択部と、前記入力チャネル選択部と出力チャネル選択部に選択チャネルの指示を送るチャネル制御部とを、備える。
【００４５】
前記鍵データ保持部に保持する鍵データは、暗号を行うときは共通鍵に、暗号処理を示すフラグを付与したものとし、復号を行うときは復号鍵（共通鍵から作成される拡大鍵の後ろからＮｋ個を復号鍵と定義する。Ｎｋの値は共通鍵と復号鍵のビット数が同じになるように決める）に、復号処理を示すためのフラグを付与したものとする。
【００４６】
前記演算部では、鍵データ内のフラグを判定した結果と、フラグを除いたデータ、すなわち暗号のときは共通鍵を、復号のときは復号鍵を使って暗号または復号を行う。
【発明の効果】
【００４７】
以上のように本発明によれば、１つの暗号回路を使い複数のストリームに対して時分割で暗号または復号の処理を行うことができる。
【００４８】
また、復号時には復号鍵が暗号回路に与えられるので、復号鍵演算のために演算性能が低下することはなく、図１３のように復号鍵保持部３０４を持って暗号回路内で復号鍵を保持する必要もないため、そのぶんだけ回路規模を小さくすることができる。
【発明を実施するための最良の形態】
【００４９】
（実施の形態１）
図１は、本発明の実施の形態１における暗復号処理装置のブロック図である。
【００５０】
また、図２は図１に示す暗復号処理装置を使った構成例である。
【００５１】
まず、図２を参照して暗復号処理装置をどのように使うのか説明する。
【００５２】
図２では、暗復号処理を行うストリームは、通信制御装置３０を通ってネットワーク経由で与えられたり、ＨＤＤ５０から与えられたりする。
【００５３】
これらのストリームは一度バッファ１０に置かれ、１２８ビットずつ順番に暗復号処理装置０２に入力される。
【００５４】
暗復号処理装置０２で暗号または復号の処理を行ったデータは、再度バッファ１０に置かれる。
【００５５】
バッファ１０に置かれた暗復号処理済みのストリームデータは、デコーダ６０を通してＴＶ７０へ出力されたり、ＨＤＤ５０に出力されたり、通信制御装置３０を通ってネットワーク上に送信されたりする。
【００５６】
プロセッサ２０は、内部バス０１上で転送されるデータの制御や、暗復号処理装置０２の制御（鍵の設定などの処理）を行う。
【００５７】
図２の構成では、例えばネットワーク経由で送信されたコンテンツと、ＨＤＤに蓄積されたコンテンツ（ともにＡＥＳ暗号で暗号されている）の同時再生を行うときに、暗復号処理装置０２で２つのストリームに対して時分割に復号を行う。
【００５８】
次に、図１を参照して暗復号処理装置０２の詳細を説明する。
【００５９】
暗復号処理装置０２は、入力制御部６００、チャネル制御部６０１、演算制御部６１１、入力チャネル選択部５１１、フラグ判定部５２１、演算部５３１、フラグ付与部５５１、出力チャネル選択部５４１の８つから構成される。
【００６０】
暗復号処理装置０２では、暗復号に用いる鍵は図３のように、暗号時には共通鍵に、復号時には復号鍵に、暗復号どちらを行うか示すフラグを付与したものを用いる。
【００６１】
そこで、下記のような鍵の運用を行う。
【００６２】
背景技術の項で説明したように、暗号処理中に全ての拡大鍵は１度は求められる。
【００６３】
そのため、共通鍵を用いて暗号処理を行う途中で復号鍵を、復号鍵を用いて復号処理を行う途中で共通鍵を求めることができる。
【００６４】
これを利用して、暗号文にはその暗号処理を行うときに求められた復号鍵に復号を示すフラグを付与した鍵を持たせ、逆に暗号されていない平文には共通鍵に暗号を示すフラグを付与した鍵を持たせるという運用を行う。
【００６５】
入力制御部６００は、演算データを保持する演算データ保持部５０１と、鍵データを保持する鍵データ保持部５０２を持ち、同じものがＮ個存在する（Ｎは、暗復号処理装置０２が時分割に暗復号処理を行えるストリーム数の上限で、２以上の整数）。
【００６６】
図１では、ｃｈ０の入力制御部を６００ａ、ｃｈ１の入力制御部を６００ｂとしているが、これらは同じものである。
【００６７】
ここで、演算データとはストリームを暗復号単位である１２８ビットずつ分割したデータのことで、暗復号処理を行うたびに順次設定される。
【００６８】
また、鍵データとは図３のように、暗号時には共通鍵に、復号時には復号鍵に、暗復号どちらを行うか示すフラグを付与したものである。
【００６９】
この鍵データは暗復号処理を行う前に一度だけ設定し（図２の例ならプロセッサが設定）、以後ストリームの暗復号が終わるまで鍵データ保持部５０２に保持し続ける。
【００７０】
入力制御部６００は、チャネル制御部６０１と信号のやりとりを行う。
【００７１】
入力制御部６００から出力する信号は演算要求信号で、この信号は演算データと鍵データの両方が設定されていて演算の準備が出来ているときに出力する。
【００７２】
チャネル制御部６０１から出力する信号はデータ使用信号で、この信号は演算データが使用されたとき（演算部５３１に演算データが入力されたとき）、演算データを使用したチャネルの入力制御部６００に出力される。
【００７３】
チャネル制御部６０１は、暗復号処理を行うチャネルを制御する。
【００７４】
そのために、入力チャネル選択部５１１と出力チャネル選択部５４１に演算チャネルを選択するための選択信号を出力する。
【００７５】
また、演算可能なチャネルがあるときは演算制御部６１１に演算要求信号を出力し、演算制御部６１１からは演算部５３１で演算が開始したときと終了したときにそれぞれ演算開始信号と演算終了信号を受け取る。
【００７６】
入力チャネル選択部５１１は、入力制御部６００から出力される各チャネルの演算データと鍵データの中から、選択信号を用いて特定のチャネルの演算データと鍵データを選択して、演算データは演算部５３１に、鍵データはフラグ判定部５２１に出力する。
【００７７】
フラグ判定部５２１は、鍵データ内のフラグの値から暗号を行うのか復号を行うのかを判断し、演算部５３１に暗号か復号かを指示するための暗号モード指示信号を出力する。
【００７８】
また、フラグを除いた鍵データを演算部５３１に出力する。
【００７９】
演算制御部６１１は、チャネル制御部６０１から演算要求信号を受けて、演算部５３１に演算指令信号を出して演算の指示を行う。
【００８０】
演算部５３１は、暗復号処理を実行し、その結果を出力データとして出力チャネル選択部５４１に出力する。
【００８１】
図４は演算部５３１を示すブロック図である。
【００８２】
図１３とほぼ同じ構成をしているが、大きな違いは図１３の復号鍵保持部３０４がないことと、３００のブロックに入力される鍵データが復号時は復号鍵であることである。
【００８３】
図４では、暗号回路はラウンド演算やＥＸＯＲを行う２００のブロックと、拡大鍵スケジュールを行う３００のブロックと制御部５００から構成される。
【００８４】
２００のブロックでは以下の処理が行われる。
【００８５】
はじめに、演算データをセレクタ部２０１で選択して、ＥＸＯＲ部２０２で拡大鍵との１回目のＥＸＯＲを行い中間値保持部２０３に保持する。
【００８６】
次に、中間値保持部２０３に保持された値をラウンド演算部２０５でラウンド演算して、セレクタ部２０１で選択して、ＥＸＯＲ部２０２で拡大鍵とのＥＸＯＲを行い、再び中間値保持部２０３に保持するという処理をＮｒ回繰り返す。
【００８７】
最後に、中間値保持部２０３に保持している演算結果を出力データとして出力する。
【００８８】
３００のブロックでは以下の処理が行われる。
【００８９】
はじめに、鍵データをセレクタ部３０１で選択して、拡大鍵保持部３０３に保持する。
【００９０】
次に、２００のブロックで必要となる拡大鍵を作成するために、必要に応じて、拡大鍵保持部３０３に保持された値を拡大鍵演算部３０５で演算して、セレクタ部３０１で選択して、再び拡大鍵保持部３０３に保持する。
【００９１】
制御部５００では、暗号モード指示信号をもとに暗号または復号のいずれかの判断を行い、また演算指令信号を受け演算を開始して２００と３００のブロックに制御信号を送る。
【００９２】
２００と３００のブロックでは、暗号時も復号時も同様の処理が行われるが、ラウンド演算部２０５と拡大鍵演算部３０５での演算は逆向きになる。
【００９３】
暗号時は、拡大鍵保持部３０３に最初は共通鍵が保持され、順番に拡大鍵演算を実行し、最後には復号鍵が保持される。
【００９４】
復号時は、逆に最後には共通鍵が保持される。
【００９５】
このデータを出力鍵データとして出力データとともに出力する。
【００９６】
フラグ付与部５５１は、演算部５３１から出力鍵データを受け取り、これにフラグを付与する。
【００９７】
このとき、暗復号モード指示信号が暗号の場合は、出力鍵データとして復号鍵を受け取るので復号を示すフラグを、暗復号モード指示信号が復号の場合は、暗号を示すフラグを付与する。
【００９８】
フラグを付与した出力鍵データは出力チャネル選択部５４１に出力される。
【００９９】
出力チャネル選択部５４１は、選択信号を用いて出力データと出力鍵データを特定のチャネルから出力する。
【０１００】
本発明の実施の形態１では、ストリームの暗復号処理は以下のような流れで行われる。
【０１０１】
最初に、暗復号処理を行うチャネルの入力制御部６００に鍵を設定する。
【０１０２】
次に、処理をするストリームの演算データを先頭から１２８ビットずつ、暗復号処理を行うチャネルの入力制御部６００に入力する。
【０１０３】
入力制御部６００に入力した演算データが、演算部５３１で暗復号処理に使用されると、チャネル制御部６０１からデータ使用信号が送られてくるので、その信号を受けたら再び１２８ビットの演算データを入力制御部６００に入力する。
【０１０４】
この処理は演算するデータがなくなるまで繰り返す。
【０１０５】
入力制御部６００に入力された演算データと鍵データは、入力チャネル選択部５１１で選択され、それぞれ演算部５３１とフラグ判定部５２１に送られる。
【０１０６】
フラグ判定部５２１では、鍵データ内のフラグから暗号モード指示信号を生成し演算部５３１に送る。
【０１０７】
また、フラグを除いた鍵データも演算部５３１に送る。
【０１０８】
演算部５３１では、演算制御部６１１から演算指令信号を受けると、送られてきた演算データと暗号モード指示信号と鍵データ（フラグを除く）を使い演算を実行して、その結果を出力データとして出力チャネル選択部５４１に送る。
【０１０９】
また、演算部５３１は出力データとともに出力鍵データも出力する。
【０１１０】
出力鍵データはフラグ付与部５５１でフラグを付与され、出力チャネル選択部５４１に送られる。
【０１１１】
出力チャネル選択部５４１では、チャネル制御部６０１から送られる選択信号をもとに、入力チャネル選択部５１１で選択したチャネルから出力データと出力鍵データを出力する。
【０１１２】
なお、出力鍵データは毎回同じデータになるので、暗復号処理の最初や最後などに１回受け取ればよい。
【０１１３】
本発明の実施の形態１では暗復号処理は、入力制御部６００とチャネル制御部６０１と演算制御部６１１で制御される。図５〜７に、それぞれの制御部のフローチャートを示す。
【０１１４】
図５は入力制御部６００で行われる処理のフローチャートを示したものである。
【０１１５】
入力制御部６００はチャネルごとにあって、それぞれが独立に以下の処理を行う。
【０１１６】
まず、ステップＳ１００に示すように、プロセッサなどにより鍵データ保持部５０２に鍵が設定されるのを待つ。
【０１１７】
次に、ステップＳ１１０に示すように、演算データ保持部５０１に演算データが入力されるのを待つ。
【０１１８】
演算データが入力されたら、ステップＳ１２０とステップＳ１３０に示す処理を行う。
【０１１９】
すなわち、次の演算データの入力の禁止処理を行い、チャネル制御部６０１に演算要求信号を送る。
【０１２０】
そして、ステップＳ１４０に示すように、チャネル制御部６０１からデータ使用信号が送られてくるのを待つ。
【０１２１】
データ使用信号が送られてきたら、ステップＳ１５０に示すように、演算データの入力禁止の解除を行い、ステップＳ１６０に示すように、暗復号処理を行う演算データが残っていなければ処理を終了し、残っていればステップＳ１１０に戻り前記の処理を繰り返す。
【０１２２】
図６はチャネル制御部６０１で行われる処理のフローチャートを示したものである。
【０１２３】
まず、ステップＳ２００に示すように、いずれかのチャネルの入力制御部６００から演算要求信号が出されるのを待つ。
【０１２４】
次に、ステップＳ２１０に示すように、演算要求信号が出されているチャネルが複数であるか判定して、複数ならば、ステップＳ２２０の優先度判定処理で、演算要求信号が出されているチャネルの中で最も優先度が高いチャネルを判定する。
【０１２５】
優先度の決め方は、例えばより早く演算要求信号が送られてきたチャネルほど高くするといった方法で行う。
【０１２６】
次に、ステップＳ２３０に示すように、演算要求信号が出されているチャネル（複数あるときにはステップＳ２２０で判定されたチャネル）を選択するように、入力チャネル選択部５１１と出力チャネル選択部５４１に選択信号を出す。
【０１２７】
次に、演算要求信号を演算制御部６１１に出すステップＳ２４０の処理を行い、ステップＳ２５０に示すように、演算制御部６１１から演算開始信号が送られてくるのを待つ。
【０１２８】
次に、ステップＳ２３０で選択したチャネルの入力制御部６００に、データ使用信号を出すステップＳ２６０の処理を行い、演算制御部６１１から演算終了信号が送られてくるのを待つ。
【０１２９】
演算終了信号が送られてきたら、ステップＳ２００に戻り前記の処理を繰り返す。
【０１３０】
図７は演算制御部６１１で行われる処理のフローチャートを示したものである。
【０１３１】
まず、ステップＳ３００に示すように、チャネル制御部６０１から演算要求信号が出されるのを待つ。
【０１３２】
次に、ステップＳ３１０とステップＳ３２０に示す処理を行う。
【０１３３】
すなわち、演算部５３１に演算指令信号を送り、チャネル制御部６０１に演算開始信号を送る。
【０１３４】
次に、ステップＳ３３０に示すように、演算部５３１の演算サイクルだけ待ち、ステップＳ３４０のチャネル制御部６０１に演算終了信号を送る処理をする。
【０１３５】
そして、ステップ３００に戻り前記の処理を繰り返す。
【０１３６】
図８は上述した各制御部における制御の一例を示したものである。
【０１３７】
図８では、ｃｈ０とｃｈ１の２つのチャネルで暗復号処理を行っており、９００のタイミングでｃｈ０に、９０１のタイミングでｃｈ１に、演算データが入力されている。
【０１３８】
図８に示されている制御の流れを以下に示す。
【０１３９】
まず、９００でｃｈ０に演算データが入力される。
【０１４０】
９００での演算データ入力を受けて、ｃｈ０の入力制御部６００ａは、チャネル制御部６０１に演算要求信号を送る（図５のステップＳ１３０）。
【０１４１】
９１０で演算要求信号を受けたチャネル制御部６０１は、演算制御部６１１に演算要求信号を送る（図６のステップＳ２４０）。
【０１４２】
９２０で演算要求信号を受けた演算制御部６１１は、演算部５３１に演算指令信号を、チャネル制御部６０１に演算開始信号を送り、演算部５３１の演算サイクルが終わるまで待つ（図７のステップＳ３１０、３２０）。
【０１４３】
９３０で演算指令信号を受けた演算部５３１は、ｃｈ０の演算を開始する。
【０１４４】
また、９４０で演算開始信号を受けたチャネル制御部６０１は、ｃｈ０の入力制御部６００ａにデータ使用信号を送る（図６のステップＳ２６０）。
【０１４５】
９５０でデータ使用信号を受けたｃｈ０の入力制御部６００ａは、再び演算データ入力待ちの状態に戻る（図５のステップＳ１１０）。
【０１４６】
９６０で演算サイクル待ちの処理が終わった演算制御部６１１は、チャネル制御部６０１に演算終了信号を送る（図７のステップＳ３４０）。
【０１４７】
９７０で演算が終了した演算部５３１は、出力データを出力する。
【０１４８】
以上で、９００でｃｈ０に入力されたデータに対する処理は終了する。
【０１４９】
図８では、９０１でｃｈ１へも演算データが入力される。
【０１５０】
９０１での演算データ入力を受けて、ｃｈ１の入力制御部６００ｂは、チャネル制御部６０１に演算要求信号を送る（図５のステップＳ１３０）。
【０１５１】
９８０で演算要求信号を受けたチャネル制御部６０１は、演算制御部６１１から演算終了信号が送られているのを待っている状態なので、９９０で演算終了信号を受けるまで待ってから、演算制御部６１１に演算要求信号を送る（図６のステップＳ２４０）。
【０１５２】
それ以降はｃｈ０と同様にｃｈ１の演算に対する制御を行う。
【０１５３】
以上のように、実施の形態１における暗復号処理装置は、入力制御部６００とチャネル制御部６０１と演算制御部６１１を用いて、複数チャネルのストリームの暗号または復号を時分割で行う。
【０１５４】
また、暗号文には復号鍵＋復号を示すフラグを、暗号されていない平文には共通鍵＋暗号を示すフラグを持たせるような鍵の運用を行い、鍵のフラグを値から暗号モードを判定するフラグ判定部５２１と、暗号時には共通鍵を復号時には復号鍵を鍵に用いる演算部５３１を持つことにより、暗号または復号を行うチャネルが頻繁に変わる場合も性能を低下させずに処理を行うことが可能となる。
【産業上の利用可能性】
【０１５５】
本発明の暗復号処理装置によれば、複数ストリームに対し、同時にかつ高速に暗号または復号を行うことができる。
【０１５６】
ＡＥＳ暗号方式は、今後普及が見込まれている暗号方式であり、ＡＥＳで暗復号されたデータの再生や録画、ＨＤＤや光ディスクやその他のスマートメディアとの転送、ネットワーク経由の受送信などの処理を同時に行うときに本発明は有用である。
【図面の簡単な説明】
【０１５７】
【図１】本発明の実施の形態１における暗復号処理装置のブロック図
【図２】本発明の実施の形態１における暗復号処理装置を用いた構成図の一例を示す図
【図３】本発明の実施の形態１における鍵データの構造を示す図
【図４】本発明の実施の形態１における演算部のブロック図
【図５】本発明の実施の形態１における入力制御部のフローチャート
【図６】本発明の実施の形態１におけるチャネル制御部のフローチャート
【図７】本発明の実施の形態１における演算制御部のフローチャート
【図８】本発明の実施の形態１における各制御部の制御の一例を示す図
【図９】ＡＥＳ暗号方式のアルゴリズムを示す図
【図１０】ＡＥＳ暗号方式におけるＮｒとＮｋの値を示す図
【図１１】拡大鍵の求める方法を示す図
【図１２】拡大鍵を逆順で求める方法を示す図
【図１３】従来のＡＥＳ暗号回路を示す図
【図１４】特許文献１の演算サイクルを示す図
【符号の説明】
【０１５８】
２０１    セレクタ部
２０２    ＥＸＯＲ部
２０３    中間値保持部
２０５    ラウンド演算部
３０１    セレクタ部
３０３    拡大鍵保持部
３０４    復号鍵保持部
３０５    拡大鍵演算部
４００    制御部
５０１ａ    演算データ保持部（ｃｈ０）
５０２ａ    鍵データ保持部（ｃｈ０）
５１１    入力チャネル選択部
５２１    フラグ判定部
５３１    演算部
５４１    出力チャネル選択部
５５１    フラグ付与部
６００ａ    入力制御部（ｃｈ０）
６００ｂ    入力制御部（ｃｈ１）
６００ｃ    入力制御部（ｃｈ２）
６０１    チャネル制御部
６１１    演算制御部
【図１】
2006171598.tif 000003
【図２】
2006171598.tif 000004
【図３】
2006171598.tif 000005
【図４】
2006171598.tif 000006
【図５】
2006171598.tif 000007
【図６】
2006171598.tif 000008
【図７】
2006171598.tif 000009
【図８】
2006171598.tif 000010
【図９】
2006171598.tif 000011
【図１０】
2006171598.tif 000012
【図１１】
2006171598.tif 000013
【図１２】
2006171598.tif 000014
【図１３】
2006171598.tif 000015
【図１４】
2006171598.tif 000016