(57)【特許請求の範囲】
【請求項１】
平文データの入力に対し、第１、第２、第３の鍵を用いて暗号文データを出力する暗号変換装置であって、
前記第３の鍵に基づくシフト数選択順序を決定するためのデータを用いて所定のシフト数の循環シフトを複数回行う循環シフト処理手段を含み、
入力された平文をデータ１とデータ２に分割し、前記データ１をデータL[1]とし、前記データ２をデータR[1]とする手段を含み、
データL[N]とデータR[N]を入力とし、データL[N+1]とデータR[N+1]を出力とする暗号変換処理手段であって、
前記データL[N]に対して前記第１、第２の鍵を用いた変換処理と、前記循環シフト処理手段を用いた循環シフト処理と、
をそれぞれ１回以上行ってデータＸを生成し、
前記データR[N]と前記データＸとを演算して得られる値を前記データL[N+1]とし、
前記データL[N]を前記データR[N+1]とする暗号変換処理手段を少なくとも１段以上含み、
最終段の２つの出力データを結合したものを暗号文とする手段を含み、
前記循環シフト処理手段は、左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段と、前記固定循環シフト処理手段を選択する循環シフト処理選択手段とからなり、
前記第３の鍵に基づく前記シフト数選択順序を決定するためのデータを用いて、
前記循環シフト処理選択手段により前記固定循環シフト処理手段の選択順序を決定して所定のシフト数の循環シフトを複数回行う、
ことを特徴とする暗号変換装置。
【請求項２】
前記シフト数選択順序を決定するためのデータを、少なくとも２つの前記各暗号変換処理手段で異ならせることを特徴とする請求項１に記載の暗号変換装置。
【請求項３】
前記シフト数選択順序を決定するためのデータに基づいて、前記循環シフト処理選択手段により、少なくとも２個以上の異なるシフト数の固定循環シフト処理手段の選択順序を決定し、
更に、各段ごとに前記シフト数選択順序を決定するためのデータを異ならせることで、
前記暗号変換処理手段によるブロック暗号の暗号変換を各段ごとに異なった変換にすることを特徴とする請求項１に記載の暗号変換装置。
【請求項４】
前記固定循環シフト処理手段は、ワイヤードロジック回路で構成されることを特徴とする請求項１に記載の暗号変換装置。
【請求項５】
前記循環シフト処理選択手段は、マルチプレクサで構成されることを特徴とする請求項１に記載の暗号変換装置。
【請求項６】
暗号文データの入力に対し、第１、第２、第３の鍵を用いて平文データを出力する復号変換装置であって、
前記第３の鍵に基づくシフト数選択順序を決定するためのデータを用いて所定のシフト数の循環シフトを複数回行う循環シフト処理手段を含み、
入力された暗号文をデータ１とデータ２に分割し、
前記データ１をデータL[1]とし、前記データ２をデータR[1]とする手段を含み、
データL[N]とデータR[N]を入力とし、データL[N+1]とデータR[N+1]を出力とする復号変換処理手段であって、
前記データR[N]に対して前記第１、第２の鍵を用いた変換処理と、前記循環シフト処理手段を用いた循環シフト処理と、
をそれぞれ１回以上行ってデータＸを生成し、
前記データL[N]と前記データＸとを演算して得られる値を前記データR[N+1]とし、
前記データR[N]を前記データL[N+1]とする復号変換処理手段を少なくとも１段以上含み、
最終段の２つの出力データを結合したものを平文とする手段を含み、
前記循環シフト処理手段は、左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段と、
前記固定循環シフト処理手段を選択する循環シフト処理選択手段とからなり、
前記第３の鍵に基づく前記シフト数選択順序を決定するためのデータを用いて、
前記循環シフト処理選択手段により前記固定循環シフト処理手段の選択順序を決定して所定のシフト数の循環シフトを複数回行う、
ことを特徴とする復号変換装置。
【請求項７】
前記第３の鍵に基づく前記シフト数選択順序を決定するためのデータを、少なくとも２つの前記各復号変換処理手段で異ならせることを特徴とする請求項６に記載の復号変換装置。
【請求項８】
前記シフト数選択順序を決定するためのデータに基づいて、前記循環シフト処理選択手段により、少なくとも２個以上の異なるシフト数の固定循環シフト処理手段の選択順序を決定し、
更に、各段ごとに前記シフト数選択順序を決定するためのデータを異ならせることで、
前記復号変換処理手段によるブロック暗号の復号変換を各段ごとに異なった変換にすることを特徴とする請求項６に記載の復号変換装置。
【請求項９】
前記固定循環シフト処理手段は、ワイヤードロジック回路で構成されることを特徴とする請求項６に記載の復号変換装置。
【請求項１０】
前記循環シフト処理選択手段は、マルチプレクサで構成されることを特徴とする請求項６に記載の復号変換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ、情報家電機器等の間で伝送されるデジタルデータの暗号・復号技術に関するものである。
【０００２】
【従来の技術】
今後発展すると予想されるデジタル情報家電機器においては、デジタルデータの不正な複写を防ぐための暗号化技術が必須になる。
【０００３】
従来の暗号化技術としては、データ依存循環シフト演算を用いたアルゴリズムであるRC5暗号( R. L. Rivest, "The RC5 encryption algorithm", FAST SOFTWARE ENCRYPTION, 2nd International Workshop, Springer-Verlag, 1995. )がある。RC5は処理データ長wビット、秘密鍵長ｂバイト、及び処理ラウンド数rが可変の暗号アルゴリズムである。以下、RC5のアルゴリズムについて説明する。
【０００４】
暗号化処理を行っていないデータ（以下平文と呼ぶ）に対して、処理データ長wビットの上位w/2ビットをL[0]、下位w/2ビットをR[0]とすると、平文(L[0],R[0])に対して以下の式で定義された暗号文(L[2r+1],R[2r+1])を得る。
L[1] = L[0] + S[0]
R[1] = R[0] + S[0]
L[N+1] = R[N]   (1≦N≦2r)
R[N+1] = ((L[N] EOR R[N]) <<< R[N]) + S[N+1] (1≦N≦2r)
この関数の繰り返し部分(1≦N≦2r)のNについてを図示すると図23のようになる。ここで定義されている演算表記 A + B はAとBの加算結果を２のw乗で割った余りを表しており、演算 EOR はビット毎の排他的論理和である。また演算表記 x <<< yは、xをyの下位log(w)ビットだけ左に循環シフトする演算を表している。RC5は図23に示した演算を２回繰り返したものを１段と呼び、これをr回繰り返して生成したものを暗号文とする方式である。
【０００５】
【発明が解決しようとする課題】
RC5は秘密鍵長が利用者に合わせて可変であることと、循環シフトを動的に変化させる構造であることが大きな特徴となっている。しかし、循環シフトを動的に変化させる手段として変換データに依存したアルゴリズム構造となっており、暗号解読法の一つである選択平文攻撃に対して弱いという欠点がある( Lar R. Knudsen, Willi Meier, "Improved Differential Cryptanalysis on RC5", Advances in Cryptology -CRYPTO'96, Springer-Verlag, 1996. に詳しい )。
【０００６】
本発明の目的は、以上述べた課題を達成するための暗号方式および装置を提案することにある。すなわち、
（１）変換データに依存せずに鍵から循環シフトを動的に制御でき、
（２）簡単な構成で高度なランダム性を有する暗号変換が可能である暗号方式および装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本発明の暗号方式および装置は、鍵と一定長の平文データを入力し、一定長の暗号文データを出力するブロック暗号であって、
（１）データを左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段、
（２）前記固定循環シフト処理手段を選択する循環シフト処理選択手段、
（３）シフト数選択順序を決定するためのデータに基づき前記循環シフト処理選択手段の選択順序を決定する循環シフト順序決定手段を有している。
【０００８】
より具体的に本発明の暗号方式および暗号変換装置の構成を述べると、以下のようになる。
【０００９】
少なくとも１個の鍵と平文データを入力し、暗号文データを出力する暗号変換装置であって、
シフト数選択順序を決定するためのデータに基づきシフト数を決定する循環シフト処理手段を含み、
入力された平文をデータ１とデータ２に分割し、前記データ１をデータL[1]とし、前記データ２をデータR[1]とする手段を含み、
データL[N]とデータR[N]を入力とし、データL[N+1]とデータR[N+1]を出力とする暗号変換処理手段であって、前記データL[N]に対して前記鍵を用いた変換処理と、前記循環シフト処理手段を用いた循環シフト処理と、をそれぞれ１回以上行ってデータＸを生成し、前記データR[N]と前記データＸとを演算して得られる値を前記データL[N+1]とし、前記データL[N]を前記データR[N+1]とする暗号変換処理手段を少なくとも１段以上含み、
最終段の２つの出力データを結合したものを暗号文とする手段を含むように構成されている。
【００１０】
ここで、前記循環シフト処理手段は、
左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段と、
前記固定循環シフト処理手段を選択する循環シフト処理選択手段と、
前記シフト数選択順序を決定するためのデータから前記循環シフト処理選択手段の選択順序を決定する循環シフト順序決定手段と、を含むように構成されている。
【００１１】
ここで、前記シフト数選択順序を決定するためのデータは、前記鍵に基づいて生成してもよい。
【００１２】
また本発明の復号変換装置については、
少なくとも１個の鍵と暗号文データを入力し、平文データを出力する復号変換装置であって、
シフト数選択順序を決定するためのデータに基づきシフト数を決定する循環シフト処理手段を含み、
入力された暗号文をデータ１とデータ２に分割し、前記データ１をデータL[1]とし、前記データ２をデータR[1]とする手段を含み、
データL[N]とデータR[N]を入力とし、データL[N+1]とデータR[N+1]を出力とする復号変換処理手段であって、前記データR[N]に対して前記鍵を用いた変換処理と、前記循環シフト処理手段を用いた循環シフト処理と、をそれぞれ１回以上行ってデータＸを生成し、前記データL[N]と前記データＸとを演算して得られる値を前記データR[N+1]とし、前記データR[N]を前記データL[N+1]とする復号変換処理手段を少なくとも１段以上含み、
最終段の２つの出力データを結合したものを平文とする手段を含むように構成されている。
【００１３】
ここで、前記循環シフト処理手段は、
左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段と、
前記固定循環シフト処理手段を選択する循環シフト処理選択手段と、
前記シフト数選択順序を決定するためのデータから前記循環シフト処理選択手段の選択順序を決定する循環シフト順序決定手段と、を含むように構成されている。
【００１４】
ここで、前記シフト数選択順序を決定するためのデータは、前記鍵に基づいて生成してもよい。
また、上記構成を他の表現にて、以下に記載する。
平文データの入力に対し、第１、第２、第３の鍵を用いて暗号文データを出力する暗号変換装置であって、前記第３の鍵に基づくシフト数選択順序を決定するためのデータを用いて所定のシフト数の循環シフトを複数回行う循環シフト処理手段を含み、入力された平文をデータ１とデータ２に分割し、前記データ１をデータL[1]とし、前記データ２をデータR[1]とする手段を含み、データL[N]とデータR[N]を入力とし、データL[N+1]とデータR[N+1]を出力とする暗号変換処理手段であって、前記データL[N]に対して前記第１、第２の鍵を用いた変換処理と、前記循環シフト処理手段を用いた循環シフト処理と、をそれぞれ１回以上行ってデータＸを生成し、前記データR[N]と前記データＸとを演算して得られる値を前記データL[N+1]とし、前記データL[N]を前記データR[N+1]とする暗号変換処理手段を少なくとも１段以上含み、最終段の２つの出力データを結合したものを暗号文とする手段を含み、前記循環シフト処理手段は、左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段と、前記固定循環シフト処理手段を選択する循環シフト処理選択手段とからなり、前記第３の鍵に基づく前記シフト数選択順序を決定するためのデータを用いて、前記循環シフト処理選択手段により前記固定循環シフト処理手段の選択順序を決定して所定のシフト数の循環シフトを複数回行うようにする暗号変換装置を構成するものである。
また、暗号文データの入力に対し、第１、第２、第３の鍵を用いて平文データを出力する復号変換装置であって、前記第３の鍵に基づくシフト数選択順序を決定するためのデータを用いて所定のシフト数の循環シフトを複数回行う循環シフト処理手段を含み、入力された暗号文をデータ１とデータ２に分割し、前記データ１をデータL[1]とし、前記データ２をデータR[1]とする手段を含み、データL[N]とデータR[N]を入力とし、データL[N+1]とデータR[N+1]を出力とする復号変換処理手段であって、前記データR[N]に対して前記第１、第２の鍵を用いた変換処理と、前記循環シフト処理手段を用いた循環シフト処理と、をそれぞれ１回以上行ってデータＸを生成し、前記データL[N]と前記データＸとを演算して得られる値を前記データR[N+1]とし、前記データR[N]を前記データL[N+1]とする復号変換処理手段を少なくとも１段以上含み、最終段の２つの出力データを結合したものを平文とする手段を含み、前記循環シフト処理手段は、左あるいは右に固定ビットだけ循環シフトする２個以上の異なる固定循環シフト処理手段と、前記固定循環シフト処理手段を選択する循環シフト処理選択手段とからなり、前記第３の鍵に基づく前記シフト数選択順序を決定するためのデータを用いて、前記循環シフト処理選択手段により前記固定循環シフト処理手段の選択順序を決定して所定のシフト数の循環シフトを複数回行うようにする復号変換装置を構成するものである。
【００１５】
以上のような構成とすることにより、本発明では、変換データに依存せずに循環シフトを動的に制御でき、簡単な構成で高度なランダム性を有する暗号変換及び復号変換が可能となる。
【００１６】
【発明の実施の形態】
本発明を用いた暗号・復号技術を以下実施例を用いて詳細に説明する。
【００１７】
図１は本実施例の暗号変換装置の概要図である。64ビットの平文C101とワーク鍵KA102(32ビット)とワーク鍵KB103(32ビット)と、ワーク鍵KG104(30ビット)が、暗号器106に入力され、暗号変換された後、64ビットの暗号文M105が出力される。ワーク鍵KG104は暗号器のアルゴリズムを決定するのでアルゴリズム鍵とも呼ぶ。
【００１８】
図２は、図１の暗号器106の詳細構成を示す図である。入力された平文C101は上位32ビットL[1]と下位32ビットR[1]に分離された後、変換部第１段201から変換部第10段203までの暗号変換を繰り返し行い、最後に上位32ビットのL[11]と下位32ビットのR[11]を結合することで64ビットの暗号文M105が出力される。変換部第N段202における変換処理は、ワーク鍵KA102とワーク鍵KB103、およびワーク鍵KG104のKG{3N-1} ,KG{3N-2} ,KG{3N-3} の３ビット値を入力として循環シフト数生成部第N段205（ここでＮは自然数）から出力される制御信号G1, G2, G3によって定められる。ここで、KG{ｘ}はKGの第xビットを表わす。
【００１９】
図３は、図２の変換部第N段202の変換処理の一例を示している。また、図４は図３の動作の説明図であり、制御信号G1, G2, G3と循環シフト数Sとの関係を示している。本例における暗号化は、データ自身を循環シフトする転置処理と、他のデータとの論理演算および算術演算をとる換字処理で実現されている。以下、図３の処理内容を順を追って説明する。
【００２０】
（１）L[N]とKAの排他的論理和をとり、X1とする。これは図３の処理番号301に対応する。
X1 = L[N] EOR KA
ここで、演算表記 A EOR B はAとBの排他的論理和演算を表し、以下、前記演算表記を同様の意味で用いるものとする。
【００２１】
（２）循環シフト数生成部第N段205の２ビット出力値G1から図４にしたがって循環シフト数Sを定め、X1をSビット左循環シフトしたものと、X1と１との加算をとり、X2とする。これは図３の処理番号302に対応する。
X2  = （X1 <<< S） + X1 + 1
ここで、演算表記 A <<< B はAを左方向にBビット循環シフトすることを表しており、以下同様の意味で用いる。また、演算表記A + Bは AとBの加算結果を２の３２乗で割った余りを表しており、以下同様の意味で用いるものとし、これを単に加算と呼ぶことにする。
【００２２】
（３）循環シフト数生成部第N段205の２ビット出力値G2から図４にしたがって循環シフト数Sを定め、X2をＳビット左循環シフトしたものと、X2 との加算をとり、X3とする。これは図３の処理番号303に対応する。
X3  = （X2 <<< S） + X2
（４）X3とKBの加算をとり、X4とする。これは図３の処理番号304に対応する
X4  =  X3  + KB
（５）循環シフト数生成部第N段205の２ビット出力値G3から図４にしたがって循環シフト数Sを定め、X4をＳビット左循環シフトしたものと、X4との加算をとり、X5とする。これは図３の処理番号305に対応する。
X5 = （X4 <<< S） + X4
（６）X5とR[N]の加算をとったものを、変換部第N段202の上位32ビット出力L[N+1]とする。これは図３の処理番号306に対応する。
【００２３】
L[N+1]  =  X5  +  R[N]
（７）変換部N段の上位32ビット入力L[N]を変換部第N段202の下位32ビット出力R[N+1]とする。これは図３の処理番号307に対応する。
R[N+1]  =  L[N]
以上の暗号変換処理（１）から（５）までをまとめてF(L[N], K, G)と書くと、変換部第N段202の処理は以下のように記述できる。
L[N+1] = R[N] + F(L[N], K, G)
R[N+1] = L[N]
以上、本発明による暗号変換処理についてについて詳細に述べた。
【００２４】
次に、より具体的な回路構成について述べる。
図５は、本実施例の変換部第N段202をハードウェアに実装したときの回路図である。この回路は、レジスタ601, 603, 611、加算器605、排他的論理和回路612、２入力マルチプレクサ602, 607、３入力マルチプレクサ604, 606、および左２ビット循環シフト器608、左８ビット循環シフト器609、左14ビット巡回シフト器610から成る。データ幅はすべて32ビットである。
【００２５】
図３で示した変換処理は、処理番号301から306に相当するように、マルチプレクサ602, 604, 606, 607を制御することで、６サイクルで完了する。循環シフト器のスイッチングを行うマルチプレクサ606は、循環シフト数生成部第N段205から順次出力されるG1, G2, G3によって制御される。
【００２６】
図６は、２ビット循環シフト器608および８ビット循環シフト器609を示したものであり、いずれも簡単なワイヤードロジックで実現可能である。
【００２７】
図７は、循環シフト器をスイッチングするマルチプレクサ606の制御の説明図である。マルチプレクサは、左２ビット循環シフト器608、左８ビット循環シフト器609、左14ビット循環シフト器610のそれぞれの32ビット出力を入力データとし、２ビット制御入力G1, G2, G3が順次入力されることで、３つの入力データから一つを選択し、出力値とする。制御入力G1, G2, G3と出力値の関係は図４に従う。マルチプレクサ606の制御入力G1, G2, G3は、図７の循環シフト数生成回路701で計算される（これは図２の循環シフト数生成部に対応する）。
【００２８】
循環シフト数生成回路701は順序回路として実現され、この順序回路は３つの内部状態Q0, Q1, Q2 をもち、同期信号に伴って、入力P0が0ならば、
Q0  →  Q1
Q1  →  Q2
Q2  →  Q0
入力P0が1ならば、
Q0  →  Q2
Q1  →  Q0
Q2  →  Q1
と状態が遷移していく、３進加算／減算カウンタで表せる。この順序回路の出力値は図７の循環シフト数生成回路701の状態図に示す。
【００２９】
ワーク鍵KGからの３ビットのデータは、入力P0 および初期値P1, P2に用いられる。ここで、
P0 ＝ KG{3N-1}
P1 ＝ KG{3N-2}
P2 ＝ KG{3N-3}
である。
【００３０】
図８は初期値P1, P2と内部状態の関係を示しており、内部状態の初期値はLOAD信号がHighのとき図８のように定められる。なお循環シフト数生成回路205は簡単な回路で構成でき、図９に詳細な回路図を示す。これは、当該技術者なら簡単に理解できる３進カウンタの構成である。
【００３１】
以上述べたように図３の実施例では、２ビット、８ビット、14ビットの左循環シフトを用いた転置変換処理を換字変換処理と組み合わせることで、暗号変換を行っており、各段における循環シフトのビット数は、図２に示すように、アルゴリズム鍵KGから定まるG1, G2, G3の値から図４のように決定される。各段のG1, G2, G3はすべて異なる値を取るので、各段の循環シフト演算の順序は3!=6通り考えられる。本実施例では10段の変換部を持つので、循環シフト演算の順序が30ビットのワーク鍵KGによって、６の１０乗通りの中から一意的に定められことになり、高度なランダム性を有する暗号変換といえる。
【００３２】
次に、図３に示す暗号変換の一例について、データ拡散の効果を検証する。図10および図11は本実施例における循環シフトによるデータ拡散の効果を示すためにワーク鍵KA, ワーク鍵KBを、
KA = KB = 0
初期データを、
L[1] = R[1] = 0
循環シフトの順序を、
0003906574.tif 000002
としたときの変換処理過程を示している。
【００３３】
第１段目の変換4001(図10)および5001(図11)の、
X2 = (X1 <<< S) + X1 + 1
によって生じた第１ビットの１は循環シフトによって、第２段目の変換4002(図10)および5002(図11)までで中位のビットまで影響を与えていき、第３段目の変換4003(図10)および5003(図11)ですべてのビットが拡散される様子が分かる。また、図10(case 1)と図11(case 2)を比較すると、まったく異なった値に変換されており、循環シフトの順序を変えることがデータ拡散に効果があることが分かる。
【００３４】
次に、本発明による暗号変換処理によって暗号化されたデータを復号化する復号変換処理について述べる。
【００３５】
図12に本発明を用いた復号変換装置を示す。64ビットの暗号文105とワーク鍵KA102(32ビット)とワーク鍵KB103(32ビット)と、ワーク鍵KG104(30ビット)が、復号器401に入力され、復号変換された後、64ビットの平文101が出力される。この復号器401は暗号文をもとの平文に戻す機能を持ち、暗号変換処理の変換部第N段の処理が、
L[N+1] = R[N] + F(L[N], K, G)
R[N+1] = L[N]
で記述されるため、第N段目の復号変換処理は、
R[N] = L[N+1] - F(R[N+1], K, G)
L[N] = R[N+1]
となる。
【００３６】
ここで、演算表記A - B はAとBの減算結果を２の３２乗で割った余りを表しており、以下同様の意味で用いるものとし、これを単に減算と呼ぶことにする。したがって、復号器401は図３の加算回路306を減算回路に変更し、入力として（R[N+1], L[N+1])、出力として（R[N], L[N])としたものを復号変換部第N段の処理とし、これを10段繰り返すことで実現される。以上復号変換処理について説明した。
【００３７】
次に本発明の他の実施例について述べる。
【００３８】
図３の前記実施例において、循環シフト変換部は、ワーク鍵KG（シフト数選択順序を決定するためのデータ）によって左２ビット、左８ビット、左14ビットの３種類を選択する例を示したが、左または右にシフトするビット数、および循環シフト処理部の種類数を変化させてもよい。ワーク鍵KGは予め設定され変化しないものでもよいし、ある期間毎に変更されるものでもよい。変化しない場合はワイヤードロジック等で固定しておいても良い。たとえば、循環シフト変換部に左２ビット、左９ビット、左19ビットの３種類を選んでもよい。特に左または右にシフトするビット数は図７に示したワイヤードロジックを変更すればよいので、回路規模を変化されることなく実行できる。
【００３９】
また、図３では、ワーク鍵KA ,ワーク鍵KBおよびワーク鍵KGは独立の鍵として説明したが、一個のデータ鍵KDから生成する構成としてもよい。図13にこの一例を示す。この例では40ビットの基本鍵KD501から鍵生成部502でKA, KB, KGを以下の方法にしたがって生成している。
KA : KDの上位32ビットと下位32ビットとの加算をとったものとする。
KB : KDの上位32ビットとする。
KG : KAの下位30ビットとする。
【００４０】
次に本発明の構成をソフトウェアで実現する例について図14を用いて説明する。
【００４１】
この例では、以下の９個のデータを用いる。
L   (32ビット）: 暗号変換するデータ
R   (32ビット）: 暗号変換するデータ
KA  (32ビット）: ワーク鍵１KAのデータ
KB  (32ビット）: ワーク鍵１KBのデータ
KG  (32ビット) :  ワーク鍵２KGのデータ
Q   (8ビット)  : 循環シフト生成部の内部状態値
N   (8ビット)  : カウンタ値
X   (32ビット) : 作業用のデータ
S   (32ビット) : 作業用のデータ。
【００４２】
以下、図14の処理内容を順を追って説明する。
（１）64ビットの平文Cを上位と下位32ビットデータに分離し、それぞれL, Rに代入する。これは図14の処理番号1001に対応する。
（２）カウンタ値Nを1にセットする。これは図14の処理番号1002に対応する。
（３）循環シフト生成部の内部変数初期化ファンクションINIT(KG, N)の戻り値をQに代入する。これは図14の処理番号1003に対応する。ここで、循環シフト生成部の内部状態初期化ファンクションINIT(KG, N)は図15に示す処理番号1101に従い、KG{3N-3}, KG{3N-2}の値から戻り値が決定される。
（４）LとKAの排他的論理和をXに代入する。これは図14の処理番号1004に対応する。
（５）循環シフトおよび加算ファンクションの戻り値S = FUNC(X, KG, N, Q)と1との加算の結果をXに代入する。これは図14の処理番号1005に対応する。
（６）循環シフトおよび加算ファンクションの戻り値S = FUNC(X, KG, N, Q)をXに代入する。これは図14の処理番号1006に対応する。
（７）XとKBの加算の結果をXに代入する。これは図14の処理番号1007に対応する。
（８）循環シフトおよび加算ファンクションの戻り値S = FUNC(X, KG, N, Q)をXに代入する。これは図14の処理番号1008に対応する。
（９）XとRの加算の結果をXに代入する。これは図14の処理番号1009に対応する。
（10）Lの値をRに代入する。これは図14の処理番号1010に対応する。
（11）Xの値をLに代入する。これは図14の処理番号1011に対応する。
（12）Nが10以下か調べる。これは図14の処理番号1012に対応する。
（13）Nが10以下ならば、Nの値を1増やして（３）に戻る。これは図14の処理番号1013に対応する。
（14）Nが10以下でなければ、LとRを結合したものを暗号文Mとする。これは図14の処理番号1014に対応する。
【００４３】
なお、循環シフトおよび加算ファンクションFUNC(X, KG, N, Q)は図16に示すフローチャートに従う。以下処理内容を説明する。
【００４４】
（１）Qの値から２ビット、８ビット、14ビットのいずれかの左循環シフトをXに対して行い、その結果をSに保存する。これは図16の処理番号1201に対応する。
（２）SとXの加算の結果をSに再び保存する。これは図16の処理番号1202に対応する。
（３）KG{3N-1}の値が0ならはQに１を加えた結果を３で割った余りとし、KG{3N-1}の値が1ならはQから１を引いた結果を３で割った余りとしてQを更新する。これは図16の処理番号1203に対応する。
（４）Sの値を戻り値とする。これは図16の処理番号1204に対応する。
【００４５】
ソフトウェアによる復号処理については、図14の加算処理1009を減算処理とすることで実現できることはこれまでの説明から明らかである。以上、ソフトウェア処理で暗号処理および復号処理を実現する実施例について説明したが、このように簡単なソフトウェア構造で高度な暗号処理が実現できるため、情報家電機器に容易に実装可能である。
【００４６】
次に本発明を用いた相手認証の実施例について図17を用いて説明する。図17において、外部バス1303で接続された機器A 1301と機器B 1302が相互に相手を認証する手順を以下に説明する。ここで機器A 1301, 機器B 1302は情報家電機器、パーソナルコンピュータなどを想定している。また、暗号化装置1304, 1306および復号化装置1305, 1307は図１および図12で説明した暗号装置および復号装置である。
【００４７】
（１）機器B 1302は乱数RBを生成し、RB||Text1を機器Aに送信する(1309)。ここで、Text1は補助情報であり、X||YはXとYを結合することを表す。
【００４８】
（２）機器A 1301は、
TokenAB = Text3||eKAB(RA||RB||IB||Text2)
を生成し機器B 1302に送信する(1308)。ここでRAは機器A 1301が生成した乱数、IBは機器B 1302の識別子、Text2, Text3は補助情報で、eKAB(X)は機器A 1301と機器B 1302の共通鍵KABでXを暗号化することを表す。
【００４９】
（３）機器B 1302はTokenABを受け取り、暗号化部分を復号することによって、識別子IBおよび（１）で機器Aに送ったRBが正しいことを確認する。
【００５０】
（４）機器B 1302は、
TokenBA = Text5||eKAB(RB||RA||Text4)
を生成し機器B 1301に送信する(1310)。ここでText4, Text5は補助情報である。
【００５１】
（５）機器A 1301はTokenBAを受け取り、暗号化部分を復号することによって、（１）で機器B 1302から受け取ったRBおよび（２）で機器B 1302に送ったRAがTokenBA内に含まれていることを確認する。
【００５２】
以上、（１）から（５）で述べたように、本発明の暗号装置および復号装置は、機器間の相手認証も実現できるという利点がある。ここでText2あるいはText4にワーク鍵あるいはデータ鍵を格納してもよく、これによって、機器Aと機器Bとの間でデータ鍵あるいはワーク鍵を安全に共有することができる。
【００５３】
次に、本発明を用いたＤＶＤ−Ｖｉｄｅｏなどのパッケージコンテンツを流通させるシステムの実施例を図18に示す。
【００５４】
コンテンツプロバイダー1401は、著作権管理機関1418に著作権情報を登録し、コンテンツID情報IDA 1402を得る。IDAはデジタルデータにID情報などを隠しもたせる技術である電子透かしを用いてコンテンツデータ1403に埋め込まれ、パッケージコンテンツ1404となる。ここで、図19はパッケージコンテンツ1404内のコンテンツデータを表しており、コンテンツ情報IDA 1402が電子透かしとして含まれている。
【００５５】
情報家電B 1405がパッケージコンテンツ1404内のコンテンツデータをパーソナルコンピュータC 1411に転送する場合、情報家電B 1405は著作権管理機関1418から発行されたユーザID情報IDB 1407を電子透かしとしてコンテンツデータ内に埋め込み、本発明を用いた暗号装置1406で鍵データK 1408により暗号化し、外部バス上に暗号データを流す。図20は経路1409を流れるコンテンツデータを表しており、コンテンツ情報IDA 1402およびユーザID情報IDB 1407が電子透かしとして含まれている。
【００５６】
受信側であるパーソナルコンピュータC 1411は、暗号データを、本発明を用いた復号装置1412で鍵データK 1415により復号化する。以上の処理において、ユーザ情報や鍵データの管理にICカード1410および1417を用いてもよい。
【００５７】
パーソナルコンピュータC 1411がネットワーク上にコンテンツデータを流通させる場合、パーソナルコンピュータC 1411は著作権管理機関1418から発行されたユーザID情報IDC 1414を電子透かしとしてコンテンツデータ内に埋め込み、本発明を用いた暗号装置1413で、データを鍵データK 1415により暗号化する。図21は経路1416を流れるコンテンツデータを表しており、コンテンツ情報IDA 1402、ユーザID情報IDB 1407およびユーザID情報IDC 1414が電子透かしとして含まれている。以上の処理において、ユーザ情報や鍵データの管理にICカード1417を用いてもよい。
【００５８】
著作権管理機関1418は、検査装置1419を用いて、ネットワーク上を流れるデータを監視し、暗号化されていないデータを検出した場合、データ内のコンテンツID情報を著作権情報管理データベース1420と照合し、不正コピーと判断すれば、不正コピーの発生場所をユーザID情報から追跡し、ペナルティを課す。
【００５９】
また、本発明を用いたデジタル衛星放送などのデジタルコンテンツの流通システムの実施例を図22に示す。コンテンツプロバイダー1401は、著作権管理機関1418に著作権情報を登録し、コンテンツID情報IDA 1402を得る。IDAを電子透かしとして埋め込んだコンテンツデータは、放送センタ1801に送られ、既存の暗号装置1802で暗号化され、デジタル衛星放送受信機などの情報家電に向けて放送される。情報家電は既存の復号化装置1803で放送データを復号化する。情報家電には、既存の復号装置1803に加えて本発明を用いた暗号装置1406を備えており、その後のコンテンツデータの流通過程は図18における例と同様に行うことができる。
【００６０】
このように、デジタル衛星放送などの既存の暗号システムと本発明の暗号システムを組み合わせて、デジタルコンテンツの流通システムを構築することも可能であり、パッケージメディア、放送メディア、通信メディアと幅広く本発明の適用が可能である。
【００６１】
【発明の効果】
本発明によれば、簡単な構成でより高度なランダム性を有する暗号方式が提供できる。
【図面の簡単な説明】
【図１】本発明を用いた暗号変換装置の一実施例である。
【図２】図１における暗号器の詳細構成図である。
【図３】図２における変換部第N段における変換処理の一例を示す図である。
【図４】図３における制御信号G1,G2,G3と循環シフト数Sの関係図である。
【図５】図３における暗号変換を実現する回路図である。
【図６】図５における循環シフト器の配線図である。
【図７】図５における循環シフト器をスイッチングするマルチプレクサの制御の説明図である。
【図８】図７における循環シフト数生成回路の初期値と内部状態の関係である。
【図９】図７における循環シフト数生成回路の詳細図である。
【図１０】本発明の暗号変換における循環シフトのデータ拡散への効果 (case 1)を示す図である。
【図１１】本発明の暗号変換における循環シフトのデータ拡散への効果 (case 2)である。
【図１２】本発明を用いた復号変換装置の一実施例である。
【図１３】本発明で用いる複数のワーク鍵を一つのデータ鍵から生成する一例である。
【図１４】本発明の構成をソフトウェアで実現するフローの一例である。
【図１５】図14の変換処理で用いる循環シフト生成部の内部変数初期化ファンクションのフロー図である。
【図１６】図14の変換処理で用いる循環シフトおよび加算ファンクションのフロー図である。
【図１７】本発明を用いた機器間の相手認証の一実施例である。
【図１８】本発明を用いたパッケージコンテンツの流通システムに関する一実施例である。
【図１９】電子透かしを含むコンテンツデータ（その１）である。
【図２０】電子透かしを含むコンテンツデータ（その２）である。
【図２１】電子透かしを含むコンテンツデータ（その３）である。
【図２２】本発明を用いた放送コンテンツの流通システムに関する一実施例である。
【図２３】  RC5の暗号アルゴリズムの概要図である。
【符号の説明】
101…平文、102…ワーク鍵KA、103…ワーク鍵KB、104…ワーク鍵KG、105…暗号文、106…暗号器、202…変換部第N段、205…循環シフト数生成部第N段、401…復号器。
【図１】
0003906574.tif 000003
【図２】
0003906574.tif 000004
【図３】
0003906574.tif 000005
【図４】
0003906574.tif 000006
【図５】
0003906574.tif 000007
【図６】
0003906574.tif 000008
【図７】
0003906574.tif 000009
【図８】
0003906574.tif 000010
【図９】
0003906574.tif 000011
【図１０】
0003906574.tif 000012
【図１１】
0003906574.tif 000013
【図１２】
0003906574.tif 000014
【図１３】
0003906574.tif 000015
【図１４】
0003906574.tif 000016
【図１５】
0003906574.tif 000017
【図１６】
0003906574.tif 000018
【図１７】
0003906574.tif 000019
【図１８】
0003906574.tif 000020
【図１９】
0003906574.tif 000021
【図２０】
0003906574.tif 000022
【図２１】
0003906574.tif 000023
【図２２】
0003906574.tif 000024
【図２３】
0003906574.tif 000025