JP4515716B2 - 拡大鍵生成装置、暗号化装置および暗号化システム - Google Patents
拡大鍵生成装置、暗号化装置および暗号化システム Download PDFInfo
- Publication number
- JP4515716B2 JP4515716B2 JP2003067218A JP2003067218A JP4515716B2 JP 4515716 B2 JP4515716 B2 JP 4515716B2 JP 2003067218 A JP2003067218 A JP 2003067218A JP 2003067218 A JP2003067218 A JP 2003067218A JP 4515716 B2 JP4515716 B2 JP 4515716B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- key
- unit
- expanded
- conversion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、暗号化システムに関し、特に、暗号時と復号時とでの処理時間の差が少なく、かつ、ランダム性の高い拡大鍵を生成可能な暗号化システムに関する。
【0002】
【従来の技術】
近年、デジタル通信が急速に普及してきたが、健全な産業の発展やプライバシーを保護する等の観点から、通信におけるデータの機密性を確保するためのデータ暗号方式が要求されている。また、暗号方式の実現においては、安全性のみならず暗号処理の高速性や実装の簡便性も要求される。このような暗号方式の一般的構成では、暗号化の対象となるデータは、固定サイズのブロックに分割され、各ブロックが所定の暗号鍵に基づいてデータ撹乱処理されて、暗号文が生成される。
【0003】
(第1の従来例)
このような暗号方式の1つに米国の次世代標準暗号であるAES(Advanced Encryption Standard)として制定されたRijndael暗号がある。図16は、Rijndael暗号方式を用いた暗号化装置の内部構成を示す図である。暗号化装置1300は、128ビットの暗号鍵EKから各128ビットの拡大鍵SK0〜SK10を生成し出力する拡大鍵生成部6と、拡大鍵生成部6に接続され、拡大鍵生成部6より拡大鍵SK0〜SK10を受け、拡大鍵SK0〜SK10を用いて128ビットデータの平文PTに対して所定のデータ変換処理を繰り返し行うことによりデータ撹乱を行い、128ビットの暗号文CTを作成するデータ撹乱部5とを含む。
【0004】
拡大鍵生成部6は、暗号鍵EKを受け、暗号鍵EKを4つの32ビットのデータブロックD0,D1,D2およびD3に分割して出力するデータ分割部600と、データ分割部600に接続され、データ分割部600よりデータブロックD0〜D3を受け、それらに後述する所定の演算を施し、拡大鍵SK1と4つの32ビットのデータブロックとを生成し、出力する鍵変換部60と、各々、前段の鍵変換部に接続され、前段の鍵変換部より4つの32ビットのデータブロックを受け、それらに後述する所定の演算を施し、拡大鍵と4つの32ビットのデータブロックとを生成し、出力する鍵変換部61〜69とを含む。
【0005】
鍵変換部61〜69から出力される拡大鍵を、それぞれ拡大鍵SK2〜SK10と定義する。また、鍵変換部69は、4つのデータブロックを出力するが、それらは、他の処理には利用されない。さらに、拡大鍵生成部6は、暗号鍵EKを拡大鍵SK0として出力する。
【0006】
データ撹乱部5は、拡大鍵生成部6に接続され、拡大鍵SK0を受け、平文PTと拡大鍵SK0との間でビットごとの排他的論理和演算を実行し、出力する鍵加算部500と、鍵加算部500および鍵変換部60に接続され、鍵加算部500より出力されたデータを拡大鍵SK1に基づいて変換するデータ変換部50と、鍵変換部61〜68にそれぞれ接続され、前段のデータ変換部より出力されたデータを拡大鍵SK2〜SK9に基づいてそれぞれ変換するデータ変換部51〜58と、データ変換部58および鍵変換部69に接続され、データ変換部58より出力されたデータを拡大鍵SK10に基づいて変換し、暗号文CTを出力する最終データ変換部59とを含む。
【0007】
図17は、鍵変換部60〜69の各々の内部構成を示す図である。鍵変換部60〜69の各々は、各32ビットの第1〜第4入力データX0〜X3に基づいて、後述する鍵変換処理を実行し、第1〜第4出力データY0〜Y3および128ビットの拡大鍵SKを出力する。
【0008】
鍵変換部60〜69の各々は、第4入力データX3を受け、当該入力データX3を上位ビット方向(左方向)に8ビットだけ巡回ビットシフトし、結果を出力するデータ回転部601と、データ回転部601に接続され、データ回転部601より演算結果を受け、当該演算結果に所定の置換処理を施し、結果を出力するデータ置換部602と、データ置換部602に接続され、データ置換部602より置換結果を受け、当該置換結果とあらかじめ定められた32ビットの定数Rconとの間でビットごとの排他的論理和演算を実行し、データTを出力する排他的論理和演算部603とを含む。
【0009】
鍵変換部60〜69の各々は、排他的論理和演算部603に接続され、第1入力データX0と排他的論理和演算部603より出力されるデータTとを受け、第1入力データX0とデータTとの間でビットごとの排他的論理和演算を実行し、第1出力データY0を出力する排他的論理和演算部604と、排他的論理和演算部604に接続され、第2入力データX1と排他的論理和演算部604での演算結果とを受け、第2入力データX1と当該演算結果との間でビットごとの排他的論理和演算を実行し、第2出力データY1を出力する排他的論理和演算部605とをさらに含む。
【0010】
鍵変換部60〜69の各々は、排他的論理和演算部605に接続され、第3入力データX2と排他的論理和演算部605での演算結果とを受け、第3入力データX2と当該演算結果との間でビットごとの排他的論理和演算を実行し、第3出力データY2を出力する排他的論理和演算部606と、排他的論理和演算部606に接続され、第4入力データX3と排他的論理和演算部606での演算結果とを受け、第4入力データX3と当該演算結果との間でビットごとの排他的論理和演算を実行し、第4出力データY3を出力する排他的論理和演算部607と、排他的論理和演算部604〜607に接続され、第1〜第4出力データY0〜Y3を連結して拡大鍵SKを出力するデータ連結部608とをさらに含む。各部で実行される処理の詳細については、以下に示す暗号化処理の説明中で行なう。
【0011】
以下、暗号化装置1300により実行されるRijndael暗号方式の暗号化処理について簡単に説明する。図16に示されるように、拡大鍵生成部6は、暗号鍵EKをそのまま拡大鍵SK0としてデータ撹乱部5内部の鍵加算部500に出力する。鍵加算部500は、平文PTと拡大鍵SK0との間でビット毎の排他的論理和演算を実行し、その結果をデータ変換部50に出力する。データ分割部600は、暗号鍵EKを上位ビットから32ビットずつ4つのデータブロックD0,D1,D2およびD3に分割して、鍵変換部60に出力する。
【0012】
データ変換部50に入力されたデータは、データ変換部50からデータ変換部58の順で、各データ変換部において順次データ変換処理され、最終的に最終データ変換部59で処理された結果が暗号文CTとして出力される。
【0013】
データ変換部50〜58は、拡大鍵SK1〜SK9に基づいて、データ変換処理をそれぞれ行なう。また、最終データ変換部59は、拡大鍵SK10に基づいて、データ変換処理を行なう。拡大鍵SK1〜SK10は、拡大鍵生成部6内部の鍵変換部60〜69において生成され、データ撹乱部5のデータ変換部50〜58および最終データ変換部59にそれぞれ供給される。即ち、データ撹乱部5は、以下に示す1段の処理群を10段実行し、暗号文CTを生成する。
【0014】
鍵変換部60〜69の各々は、第1〜第4入力データX0〜X3(各32ビット)を受け、鍵変換処理を実行し、拡大鍵SK(128ビット)及び、第1〜第4出力データY0〜Y3を出力する。データ回転部601、データ置換部602および排他的論理和演算部603は、第4入力データX3に対して、次式(1)で表される演算を実行することにより、データTを計算する。
T=Rcon(+)Perm(ROTL8(X3)) …(1)
【0015】
ここで、ROTL8(X)は、データXを上位ビット方向(左方向)に8ビットだけ巡回ビットシフトした結果を表す。Perm(X)は、データXに対して所定の置換処理を施した結果を表す。演算子「(+)」はビット毎の排他的論理和演算を表す。定数Rconは、鍵変換部60〜69のそれぞれで異なる32ビットの固定値データである。
【0016】
排他的論理和演算部604〜607は、このようにして求められたデータTを用い、次式(2)〜(5)で表される演算を実行することにより、第1〜第4出力データY0〜Y3をそれぞれ求める。
Y0=T(+)X0 …(2)
Y1=Y0(+)X1 …(3)
Y2=Y1(+)X2 …(4)
Y3=Y2(+)X3 …(5)
【0017】
データ連結部608は、次式(6)で表される関係を有する拡大鍵SKを求める。演算子「‖」は、データの連結を表す。すなわち、次式(6)は、各32ビットの第1〜第4出力データY0〜Y3を連結することにより、128ビットの拡大鍵SKが得られることを示している。
【0018】
SK=Y0‖Y1‖Y2‖Y3 …(6)
鍵変換部60〜69の各々は、上述の処理の結果得られる拡大鍵SKおよび第1〜第4出力データY0〜Y3を出力する。
【0019】
図18は、Rijndael暗号方式を用いた復号装置の内部構成を示す図である。復号装置1400は、128ビットの暗号鍵EKから、暗号化時とは逆の順序で各128ビットの拡大鍵SK10〜SK0を生成する拡大鍵逆生成部8と、拡大鍵逆生成部8に接続され、拡大鍵逆生成部8より拡大鍵SK10〜SK0を受け、拡大鍵SK10〜SK0を用いて128ビットの暗号文CTに対し、所定の逆データ撹乱処理を実行し、復号文DTを出力する逆データ撹乱部7とを含む。
【0020】
拡大鍵逆生成部8は、暗号鍵EKを受け、上位から32ビットずつ、4つのデータブロックに分割するデータ分割部800と、データ分割部800に接続され、4つのブロックを受け、それらに所定の演算を施し、4つの32ビットのデータブロックを出力する鍵変換部80と、各々、前段の鍵変換部に接続され、前段の鍵変換部より4つの32ビットのデータブロックを受け、それらに所定の演算を施し、後段の鍵変換部に4つの32ビットのデータブロックを生成し、出力する鍵変換部81〜88と、鍵変換部88に接続され、鍵変換部88より4つの32ビットのデータブロックを受け、それらに所定の演算を施し、拡大鍵SK10と4つの32ビットのデータブロックとを生成し、出力する鍵変換部89とを含む。
【0021】
鍵変換部80〜89で実行される所定の演算は、鍵変換部60〜69で実行される所定の演算とそれぞれ同様であるため、鍵変換部80〜89の各々は、図17に示される鍵変換部と同様の構成を有する。このため、その詳細な説明はここでは繰返さない。
【0022】
ただし、鍵変換部80〜88は、鍵変換部60〜68とは異なり、拡大鍵SK1〜SK9を出力しない。このため、鍵変換部80〜88の各々の構成は、図17に示す鍵変換部の構成からデータ連結部608を除いた構成であってもよい。
【0023】
拡大鍵逆生成部8は、鍵変換部89に接続され、鍵変換部89より出力される4つの32ビットのデータブロックを受け、それらに後述する逆鍵変換処理を施し、拡大鍵SK9と4つの32ビットのデータブロックとを生成し、出力する逆鍵変換部90と、各々、前段の逆鍵変換部に接続され、前段の逆鍵変換部より4つの32ビットのデータブロックを受け、それらに後述する逆鍵変換処理を施し、拡大鍵と4つの32ビットのデータブロックとを生成し、出力する逆鍵変換部91〜99とをさらに含む。
【0024】
逆鍵変換部90〜99より出力される拡大鍵は、それぞれ拡大鍵SK9〜SK0である。逆鍵変換部99は、4つのデータブロックを出力するが、それらは、他の処理には利用されない。
【0025】
逆データ撹乱部7は、鍵変換部89に接続され、鍵変換部89より拡大鍵SK10を受け、暗号文CTと拡大鍵SK10とを用い、最終データ変換部59で実行される変換処理の逆変換処理を実行し、処理結果を出力する最終逆データ変換部70と、最終逆データ変換部70および逆鍵変換部90に接続され、最終逆データ変換部70および逆鍵変換部90から処理結果および拡大鍵SK9をそれぞれ受け、データ変換部58で実行される変換処理の逆変換処理を実行し、処理結果を出力する逆データ変換部71とを含む。
【0026】
逆データ撹乱部7は、各々前段の逆データ変換部に接続されるとともに、逆鍵変換部91〜98にそれぞれ接続され、逆鍵変換部91〜98より拡大鍵SK8〜SK1をそれぞれ受け、データ変換部57〜50で実行される変換処理の逆変換処理をそれぞれ実行し、処理結果を出力する逆データ変換部72〜79と、逆データ変換部79および逆鍵変換部99に接続され、逆データ変換部79および逆鍵変換部99から処理結果および拡大鍵SK0をそれぞれ受け、鍵加算部500で実行される変換処理の逆変換処理を実行し、復号文DTを出力する鍵加算部700とをさらに含む。
【0027】
図19は、逆鍵変換部90〜99の各々の内部構成を示す図である。逆鍵変換部90〜99の各々は、各32ビットの第1〜第4入力データY0〜Y3に基づいて、鍵変換部60〜69および80〜89の各々で実行される鍵変換処理の逆変換に相当する逆鍵変換処理を実行し、第1〜第4出力データZ0〜Z3および128ビットの拡大鍵SKを出力する。
【0028】
逆鍵変換部90〜99の各々は、第3入力データY2と第4入力データY3との間でビットごとの排他的論理和演算を実行し、第4出力データZ3を出力する排他的論理和演算部901と、第2入力データY1と第3入力データY2との間でビットごとの排他的論理和演算を実行し、第3出力データZ2を出力する排他的論理和演算部902と、第1入力データY0と第2入力データY1との間でビットごとの排他的論理和演算を実行し、第2出力データZ1を出力する排他的論理和演算部903とを含む。
【0029】
逆鍵変換部90〜99の各々は、排他的論理和演算部901に接続され、排他的論理和演算部901の出力を受け、当該出力を上位ビット方向(左方向)に8ビットだけ巡回ビットシフトし、結果を出力するデータ回転部905と、データ回転部905に接続され、データ回転部905より演算結果を受け、当該演算結果に所定の置換処理を施し、結果を出力するデータ置換部906とをさらに含む。
【0030】
逆鍵変換部90〜99の各々は、データ置換部906に接続され、データ置換部906より置換結果を受け、当該置換結果と逆鍵変換部90〜99の各々であらかじめ定められた32ビットの定数Rconとの間でビットごとの排他的論理和演算を実行し、データTを出力する排他的論理和演算部907と、排他的論理和演算部907に接続され、排他的論理和演算部907よりデータTを受け、第1入力データY0とデータTとの間でビットごとの排他的論理和演算を実行し、第1出力データZ0を出力する排他的論理和演算部904と、排他的論理和演算部904〜901に接続され、第1〜第4出力データZ0〜Z3を連結して拡大鍵SKを出力するデータ連結部908とをさらに含む。各部で実行される処理の詳細については、以下に示す復号処理の説明中で行なう。
【0031】
以下、復号装置1400により実行されるRijndael暗号方式の復号処理について簡単に説明する。図18に示されるように、データ分割部800は、128ビットの暗号鍵EKを上位ビットから32ビットずつ4つのデータブロックに分割する。これら4つのデータブロックに基づいて、鍵変換部80〜89において鍵変換処理が順次実行される。上述したように、鍵変換部80〜89で実行される鍵変換処理は、図16に示す鍵変換部60〜69実行される鍵変換処理と同様である。ただし、鍵変換部80〜88でそれぞれ生成される拡大鍵SK1〜SK9は、その後の処理には利用されない。
【0032】
鍵変換部89は、生成された拡大鍵SKを拡大鍵SK10として最終逆データ変換部70に出力する。その後、逆鍵変換部90〜99は、拡大鍵SK9〜SK0をそれぞれ順次生成する。鍵変換部89および逆鍵変換部90〜99で実行される処理と並行して、最終逆データ変換部70、逆データ変換部71〜79および鍵加算部700は、拡大鍵SK10〜SK0にそれぞれ基づいて、所定の処理を実行する。鍵加算部700は最終的に復号文DTを生成し、出力する。
【0033】
次に、逆データ撹乱部7で実行される処理についてより詳細に説明する。逆データ撹乱部7で実行される処理は、図16に示す暗号化装置1300のデータ撹乱部5で実行される処理の逆変換に相当する。即ち、はじめに、最終逆データ変換部70が、拡大鍵SK10を用いて最終データ変換部59で実行される処理の逆変換処理を実行する。その後、逆データ変換部71〜79は、拡大鍵SK9〜SK1をそれぞれ用いて、データ変換部58〜50で実行される処理の逆変換処理をそれぞれ実行する。最後に、鍵加算部700は、拡大鍵SK0を用いて、鍵加算部500で実行される処理の逆変換処理を実行し、復号文DTを生成し、出力する。このように、復号時には、暗号化時とは逆の順序で拡大鍵を生成する必要がある。
【0034】
図19に示される逆鍵変換部90〜99の各々で実行される逆鍵変換処理について説明する。
排他的論理和演算部901〜903は、次式(7)〜(9)で表される演算をそれぞれ実行することにより、第2〜第4出力データZ1〜Z3をそれぞれ求める。
Z1=Y0(+)Y1 …(7)
Z2=Y1(+)Y2 …(8)
Z3=Y2(+)Y3 …(9)
【0035】
データ回転部905、データ置換部906および排他的論理和演算部907は、第4出力データZ3に対して次式(10)で表される演算を実行することにより、データTを計算する。
T=Rcon(+)Perm(ROTL8(Z3)) …(10)
【0036】
排他的論理和演算部904は、データTと第1入力データY0とのビットごとの排他的論理和である第1出力データZ0を次式(11)に従い求める。
Z0=T(+)Y0 …(11)
【0037】
データ連結部908は、次式(12)に従い、第1〜第4出力データZ0〜Z3を結合し、128ビットの拡大鍵SKを生成する。
SK=Z0‖Z1‖Z2‖Z3 …(12)
【0038】
逆鍵変換部90〜99の各々は、上述の処理の結果得られる拡大鍵SKおよび第1〜第4出力データZ0〜Z3を出力する。
【0039】
図17に示されるように、本方式によれば、暗号化時に、データ置換部602が非線形処理を実行する。非線形処理されたデータの影響は、排他的論理和演算部604〜607を介して、拡大鍵SKおよびすべての出力データにおよぶ。このため、本方式は簡易な鍵変換処理でありながら、ランダム性の高い拡大鍵生成を実現することができる。
【0040】
(第2の従来例)
第2の従来例として米国標準暗号であるDES(Data Encryption Standard)がある。図20はDES方式による暗号化装置で用いられる鍵変換部10の構成を示す図である。鍵変換部10は、巡回シフト部101および102と、巡回シフト部101および102に接続されたデータ連結部103と、データ連結部103に接続されたデータ縮約部104とを含む。
【0041】
次に、鍵変換部10の動作について簡単に説明する。巡回シフト部101は、28ビットの第1入力データに対して所定ビット数の巡回ビットシフト処理を実行し第1巡回シフトデータを生成する。巡回シフト部102は、28ビットの第2入力データに対して所定ビット数の巡回ビットシフト処理を実行し第2巡回シフトデータを生成する。第1巡回シフトデータおよび第2巡回シフトデータは、それぞれ第1出力データおよび第2出力データとして鍵変換部10から出力される。一方、データ連結部103は、第1巡回シフトデータと第2巡回シフトデータとを連結して56ビットデータとし、当該データをデータ縮約部104に出力する。データ縮約部104は、入力されたデータからあらかじめ定められたビット位置の48ビット分のデータを抽出し、拡大鍵を出力する。
【0042】
DES方式による暗号化装置によれば、拡大鍵の生成は、基本的にデータシフト処理およびデータ抽出処理により実現されているため、暗号化時と復号時とで、拡大鍵を生成する際に、同じ拡大鍵生成処理を適用可能である。このため、第1の従来例のように、暗号化時と復号時とで、拡大鍵の生成に必要な処理量が異なるということがない。
【0043】
しかしながら、これらの従来例では、以下のような問題点がある。第1の従来例の暗号方式においては、暗号化時と比べて、復号時の拡大鍵生成処理に時間がかかるという問題がある。その理由について以下に説明する。図16に示されるように、暗号化装置1300のデータ撹乱部5において、最初に処理を実行する鍵加算部500には、暗号鍵EKがそのまま使用される。このため、データ撹乱部5と拡大鍵生成部6は、並行してそれぞれの処理を実行することが可能である。
【0044】
一方、図18に示されるように、復号装置1400の逆データ撹乱部7において、最初に処理を実行する最終逆データ変換部70は、拡大鍵逆生成部8より供給される拡大鍵SK10を使用しなければならない。拡大鍵SK10を求めるためには、鍵変換部80〜89において鍵変換処理を実行する必要がある。すなわち、最終逆データ変換部70は、10回の鍵変換処理が実行された後でなければ処理を開始することができない。このため、復号処理は、これらの鍵変換処理の待ち時間だけ、暗号化処理と比べて時間がかかることになる。
【0045】
このように、暗号化処理と復号処理との間で処理時間の極端に処理時間の差が生じる場合には、次のような問題が生じる。例えば、送信機と受信機との間でリアルタイムにデータをやり取りするような通信システムについて考える。このような通信システムに第1の従来例で説明した暗号化装置1300および復号装置1400を用いた場合には、送信機がリアルタイムでデータを暗号化して送信できたとしても、受信機は復号に時間がかかるためリアルタイムで暗号文を復号することができない。このため、受信機には受信した暗号化データを一時的に蓄積するためのバッファが必要となり、受信機のコストアップにつながってしまうという問題がある。
【0046】
また、図21のように、高速道路の料金所に取り付けられるETC(Electronic Toll Collection)システム1800では、自動車1801に取り付けられた車載器1802と料金所アンテナ1804との間でのデータ通信を行ない、相互認証を行なう。自動車1801は、通常、ETCシステム1800のゲートを停止することなく通過するため、ETCシステム1800では、高速の応答速度が要求される。このため、ETCシステム1800に従来の暗号化装置1300および復号装置1400を用いる場合には、高速なハードウェアが必要になるという問題がある。
【0047】
一方、第2の従来例では、第1の従来例のような「復号時の拡大鍵生成に要する時間が暗号化時に比べて大きい」という問題は解消される。しかし、拡大鍵のランダム性が不十分であるという問題がある。
【0048】
第2の従来例では、巡回ビットシフトされたデータを連結したものから所定位置のビットを抜き出したデータを拡大鍵としている。即ち、拡大鍵を生成する処理に、データ融合処理や置換処理などが使用されていないため、拡大鍵に十分なランダム性がない。これにより、第2の従来例の拡大鍵生成処理では、弱鍵と呼ばれる安全性の低い鍵が存在するという問題がある(DES方式による弱鍵については、たとえば、非特許文献1参照。)。
【0049】
【非特許文献1】
Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone, "Handbook of Applied Cryptography", CRC Press, 1997, pp.256-pp.259
【0050】
そこで、本発明は、このような状況に鑑みてなされたものであり、暗号化時と復号時とで処理時間の差を少なくすることができる暗号化システムを提供することを目的とする。
【0051】
また、ランダム性が高く、安全性の高い拡大鍵を生成可能な暗号化システムを提供することも目的とする。
【0052】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る拡大鍵生成装置は、暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成装置であって、前記暗号鍵データを複数の部分鍵データに分割するデータ分割手段と、前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換手段とを備え、前記複数の鍵変換手段の各々は、前記複数の部分鍵データまたは前段の鍵変換手段からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値が相互に干渉しない固定的な変換処理を実行し、後段の鍵変換手段への複数の出力データを算出する出力算出部と、前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを有することを特徴とする。
【0053】
このように、出力算出部と拡大鍵算出部とを分離可能とし、出力算出部での処理が入力データに対し各ビットの値が相互に干渉しない固定的な変換処理とすることにより、所定段数の出力算出部の処理と等価な処理部を生成することができる。従って、復号時には、一端、上記した等価な処理部でデータを生成した後、鍵変換手段で実行される処理の逆変換処理を順次実行することにより、暗号文データの復号に利用される拡大鍵データを順次生成することが可能となる。よって、復号時には所定段数の出力算出部の処理を実行する必要がなくなり、暗号化時と復号時とで処理時間の差を少なくすることができる。
【0054】
また、拡大鍵算出部は、複数の部分データを融合して拡大鍵データを算出していることより、ランダム性が高く、安全性の高い拡大鍵を提供することができる。
【0055】
例えば、前記出力算出部は、前記複数の入力データのうちの少なくとも1つに対し、所定のビット数だけ巡回シフト操作を実行し、前記所定のビット数は、前記巡回シフト操作が施される前記入力データのビット数の約数ではない。
【0056】
このように巡回シフト操作のビット数を巡回シフト操作が施される入力データの約数ではなくすることにより、入力データに複数回の巡回シフト操作を施したとしても、元の入力データと同一の入力データは生成されにくくなる。このため、ランダム性が高く、安全性の高い拡大鍵を提供することができる。
【0057】
また、前記拡大鍵算出部は、前記複数の入力データの融合における途中過程および前記複数の入力データのうちの少なくとも1つのデータに対し、所定の置換テーブルに基づいた置換処理を実行する。
【0058】
置換処理のような非線形な処理を挿入することにより、ランダム性が高く、安全性の高い拡大鍵を提供することができる。
本発明は、このような拡大鍵生成装置として実現することができるだけでなく、このような拡大鍵生成装置を備える暗号化装置として実現したり、このような拡大鍵生成装置を用いて暗号化された暗号文データを復号する復号装置として実現することもできる。また、暗号化装置と復号装置とからなる暗号化システムとして実現することもできるし、拡大鍵生成方法や、コンピュータを拡大鍵生成装置として機能させるためのプログラムとしても実現することができる。このようなプログラムは、CD−ROM(Compact Disk-Read Only Memory)などの記録媒体やインターネット等の伝送媒体を介して広く流通させることができるのは言うまでもない。
【0059】
【発明の実施の形態】
以下、本発明に係る暗号化システムの実施の形態について図面を用いて詳細に説明する。暗号化システムは、後述する暗号化装置と復号装置とから構成される。
【0060】
図1は、本発明の実施の形態に係る暗号化装置の構成の一例を示すブロック図である。
データ暗号化装置1100は、128ビットの暗号鍵EKを元に、各64ビットの8個の拡大鍵SK0〜SK7を生成する拡大鍵生成部2と、拡大鍵生成部2に接続され、拡大鍵生成部2より拡大鍵SK0〜SK7を受け、拡大鍵SK0〜SK7を用いて平文PTに対して所定のデータ変換処理を繰り返し実行することによりデータ撹乱を行ない、64ビットの暗号文CTを生成するデータ撹乱部1とを含む。
【0061】
データ撹乱部1は、8個のデータ変換部11〜18を縦列に連結したものから構成される。拡大鍵生成部2は、データ分割部20と、7個の鍵変換部21〜27と、1個の最終鍵変換部28とを縦列に連結したものから構成される。
【0062】
図2は、データ変換部11〜18の内部構成を示すブロック図である。データ変換部11〜18の各々は、鍵変換部21〜27および最終鍵変換部28のいずれかに接続され、そのいずれかより拡大鍵SK(SK0〜SK7のいずれか)を受け、拡大鍵SKと入力データXとの間でビットごとの排他的論理和演算を実行し、データAを出力する排他的論理和演算部111と、排他的論理和演算部111に接続され、排他的論理和演算部111よりデータAを受け、データAを4つのデータブロックB0〜B3に分割するデータ分割部112とを含む。
【0063】
データ変換部11〜18の各々は、データ分割部112に接続され、データ分割部112よりデータブロックB0〜B3を受け、データブロックB0〜B3を後述する方法によりデータブロックC0〜C3にそれぞれ置換するデータ置換部113〜116と、データ置換部113〜116に接続され、データ置換部113〜116よりデータブロックC0〜C3を受け、データブロックC0〜C3を後述する方法により連結し、データYを出力するデータ連結部117とをさらに含む。
【0064】
図3は、鍵変換部21〜27の内部構成を示すブロック図である。鍵変換部21〜27の各々は、データ分割部20または前段の鍵変換部より各32ビットの第1〜第4入力データX0〜X3を受け、第1〜第4入力データX0〜X3より64ビットの拡大鍵SKを算出する拡大鍵算出部210と、第1〜第4入力データX0〜X3より次段の鍵変換部または最終鍵変換部28への入力となる第1〜第4出力データY0〜Y3を算出する出力算出部230とを含む。
【0065】
拡大鍵算出部210は、第2入力データX1と第4入力データX3との間でビットごとの排他的論理和演算を実行し、32ビットのデータAを算出する排他的論理和演算部211と、排他的論理和演算部211に接続され、排他的論理和演算部211よりデータAを受け、データAを後述する方法によりデータBに置換するデータ置換部212と、データ置換部212に接続され、データ置換部212よりデータBを受け、データBと第3入力データX2との間でビットごとの排他的論理和演算を実行し、データCを算出する排他的論理和演算部213とを含む。
【0066】
拡大鍵算出部210は、排他的論理和演算部213に接続され、排他的論理和演算部213よりデータCを受け、データCと第2入力データX1との間でビットごとの排他的論理和演算を実行し、データDを算出する排他的論理和演算部214と、排他的論理和演算部214に接続され、排他的論理和演算部214よりデータDを受け、データDと第1入力データX0との間でビットごとの排他的論理和演算を実行し、データEを算出する排他的論理和演算部215と、排他的論理和演算部213および215に接続され、排他的論理和演算部213および215よりデータCおよびデータEをそれぞれ受け、データCおよびデータEを連結して64ビットの拡大鍵SKとして出力するデータ連結部216とをさらに含む。
【0067】
出力算出部230は、第1入力データX0を下位ビット方向(右方向)に1ビットだけ巡回ビットシフトし、第4出力データY3として出力するデータ回転部217と、第2入力データX1を下位ビット方向(右方向)に5ビットだけ巡回ビットシフトし、第1出力データY0として出力するデータ回転部218と、第3入力データX2を下位ビット方向(右方向)に9ビットだけ巡回ビットシフトし、第2出力データY1として出力するデータ回転部219と、第4入力データX3を下位ビット方向(右方向)に13ビットだけ巡回ビットシフトし、第3出力データY2として出力するデータ回転部220とを含む。
【0068】
図4は、最終鍵変換部28の内部構成を示すブロック図である。最終鍵変換部28は、図3に示される鍵変換部の構成から出力算出部230を取り除いた構成になっている。最終鍵変換部28は、拡大鍵算出部280を含む。
【0069】
拡大鍵算出部280は、排他的論理和演算部281と、排他的論理和演算部281に接続されたデータ置換部282と、データ置換部282に接続された排他的論理和演算部283と、排他的論理和演算部283に接続された排他的論理和演算部284と、排他的論理和演算部284に接続された排他的論理和演算部285と、排他的論理和演算部283および285に接続されたデータ連結部286とを含む。
【0070】
排他的論理和演算部281,283〜285、データ置換部282およびデータ連結部286の構成は、図3に示される拡大鍵算出部210の排他的論理和演算部211,213〜215、データ置換部212およびデータ連結部216の構成とそれぞれ同様である。このため、その詳細な説明はここでは繰返さない。
【0071】
以下、図1〜図5を用いて、暗号化装置1100の動作について説明する。
図1に示される暗号化装置1100の全体的な処理の流れについて説明する。
拡大鍵生成部2内部のデータ分割部20は、128ビットの暗号鍵EKを上位から32ビットずつの4つのデータブロックに分割し、鍵変換部21に出力する。鍵変換部21は、入力された4つのブロックに対して後述する鍵変換処理を実行し、64ビットの拡大鍵SK0及び4つの32ビットのデータブロックを算出する。鍵変換部21は、拡大鍵SK0をデータ変換部11に出力し、算出された4つのデータブロックを次段の鍵変換部22に出力する。
【0072】
データ変換部11は、入力された拡大鍵SK0を元に、64ビットの平文PTに対して後述するデータ変換処理を施し、64ビットのデータを算出する。データ変換部11は、算出されたデータを次段のデータ変換部12に出力する。
【0073】
鍵変換部22は、前段の鍵変換部21から入力された4つの32ビットのデータブロックに対して鍵変換部21と同様の鍵変換処理を実行し、拡大鍵SK1および4つの32ビットのデータブロックを算出する。鍵変換部22は、拡大鍵SK1をデータ変換部12に出力し、算出された4つのデータブロックを次段の鍵変換部23に出力する。
【0074】
データ変換部12は、入力された拡大鍵SK1を元に、前段のデータ変換部11から入力されたデータに対してデータ変換部11と同様のデータ変換処理を実行し、64ビットのデータを算出する。データ変換部12は、算出されたデータを次段のデータ変換部13へ出力する。
【0075】
以下、同様の処理が鍵変換部23〜27およびデータ変換部13〜17において実行される。最終鍵変換部28は、鍵変換部27より入力された4つのデータブロックに対して後述する最終鍵変換処理を施し、拡大鍵SK7を求め、データ変換部18に出力する。
【0076】
データ変換部18は、拡大鍵SK7を元にデータ変換部17からの入力データに対してデータ変換部11と同様のデータ変換処理を実行し、64ビットの暗号文CTを算出し、出力する。
【0077】
図2に示されるデータ変換部11〜18の各々で実行されるデータ変換処理について説明する。データ変換部11〜18の各々は、64ビットの入力データXに対して64ビットの拡大鍵SKに基づくデータ変換処理を施して、64ビットの出力データYを出力する。入力データXは、平文PTまたは前段のデータ変換部より出力されるデータのいずれかである。拡大鍵SKは、鍵変換部21〜28よりそれぞれ出力されるSK0〜SK7のいずれかである。
【0078】
排他的論理和演算部111は、次式(13)で示される入力データXと拡大鍵SKとのビットごとの排他的論理和演算を実行し、64ビットのデータAを求める。
A=X(+)SK …(13)
【0079】
データ分割部112は、排他的論理和演算部111よりデータAを受け、データAを4つの上位ビットから16ビットずつ4つのデータブロックB0,B1,B2およびB3に分割する。即ち、データAとデータブロックB0〜B3との間には、次式(14)に示される関係が成立する。
A=B0‖B1‖B2‖B3 …(14)
【0080】
データ分割部112は、4つのデータブロックB0〜B3をデータ置換部113〜116にそれぞれ出力する。
【0081】
データ置換部113は、データ分割部112より入力された16ビットデータB0を元に、次式(15)に従い16ビットのデータC0を求める。
C0=Sbox[B0h]‖Sbox[B0l] …(15)
【0082】
ここで、Sboxは置換テーブルを表している。置換テーブルSboxは、図5に示すような256個の要素を有する配列から構成され、各要素は8ビットのデータからなる。B0hはデータB0の上位8ビット、B0lはデータB0の下位8ビットのデータを表す。
【0083】
すなわち、Sbox[B0h]は、置換テーブルSboxのB0h番目の要素を表しており、Sbox[B0l]は、置換テーブルSboxのB0l番目の要素を表している。データC0は、これら2つの要素を連結して作成されたデータである。
【0084】
ここで用いられる置換テーブルSboxは、「盛合志帆,青木和麻呂,神田雅透,高嶋洋一,松本勉著『既知のブロック暗号攻撃に対する安全性を考慮したS−boxの構成法』(電子情報通信学会技術研究報告,ISEC98−13)」(訳語:Shiho Moriai, Kazumaro Aoki, Masayuki Kanda, Youichi Takashima, Kazuo Ohta ``S-box design considering the security against known attacks on block ciphers'', Technical Report of IEICE, Vol.98 No.48, ISEC98-13, (in Japanese), (July, 1998).)に記載されたものを用いる。ただし、置換テーブルSboxは、これ以外のものであってもよく、これに限定されるものではない。
【0085】
データ置換部114〜116は、データ分割部112よりデータブロックB1〜B3をそれぞれ受け、データブロックC1〜C3をそれぞれ求め、出力する。データ置換部114〜116の各々で実行される処理は、データ置換部113で実行される処理と同様であるため、その詳細な説明はここでは繰返さない。
【0086】
データ連結部117は、データ置換部113〜116よりデータブロックC0〜C3をそれぞれ受け、次式(16)に従い、データブロックC0〜C3を連結し、64ビットのデータYを求め、出力する。
Y=C0‖C1‖C2‖C3 …(16)
【0087】
図3に示される鍵変換部21〜27の各々で実行される鍵変換処理について説明する。鍵変換部21〜27の各々は、第1〜第4入力データX0〜X3に対して、後述する拡大鍵算出処理と出力算出処理とを実行し、拡大鍵SKと第1〜第4出力データY0〜Y3とを算出し、出力する。第1〜第4入力データX0〜X3は、データ分割部20または前段の鍵変換部より出力される4つの32ビットのデータブロックである。拡大鍵SKは、データ変換部11〜17にそれぞれ入力されるSK0〜SK6のいずれかである。
【0088】
拡大鍵算出部210において実行される拡大鍵算出処理に説明する。
排他的論理和演算部211は、次式(17)に従い、第2入力データX1と第4入力データX3との間でビットごとの排他的論理和演算を実行し、32ビットのデータAを求める。
A=X1(+)X3 …(17)
【0089】
データ置換部212は、排他的論理和演算部211よりデータAを受け、データ変換部11〜18で用いた置換テーブルと同一の置換テーブルSboxを用いて、次式(18)で示される32ビットデータBを求める。
B=Sbox[A0]‖Sbox[A1]‖Sbox[A2]‖Sbox[A3] …(18)
【0090】
但し、データAを上位から8ビットずつに分割したデータの値をそれぞれA0,A1,A2,A3とする。
【0091】
排他的論理和演算部213は、データ置換部212よりデータBを受け、次式(19)に従い、データBと第3入力データX2との間でビットごとの排他的論理和演算を実行し、32ビットのデータCを求める。
C=B(+)X2 …(19)
【0092】
排他的論理和演算部214は、排他的論理和演算部213よりデータCを受け、次式(20)に従い、データCと第2入力データX1との間でビットごとの排他的論理和演算を実行し、32ビットのデータDを求める。
D=C(+)X1 …(20)
【0093】
排他的論理和演算部215は、排他的論理和演算部214よりデータDを受け、次式(21)に従い、データDと第1入力データX0との間でビットごとの排他的論理和演算を実行し、32ビットのデータEを求める。
E=D(+)X0 …(21)
【0094】
データ連結部216は、排他的論理和演算部213および215よりデータCおよびEをそれぞれ受け、次式(22)に従い、データCおよびEを連結し、64ビットの拡大鍵SKとして出力する。
SK=C‖E …(22)
【0095】
次に、出力算出部230において第1〜第4出力データY0〜Y3を算出する処理(出力算出処理)について説明する。
【0096】
データ回転部217〜220は、次式(23)〜(26)にそれぞれ従い、第4出力データY3、第1出力データY0、第2出力データY1および第3出力データY2をそれぞれ算出する。
Y3=ROTR1(X0) …(23)
Y0=ROTR5(X1) …(24)
Y1=ROTR9(X2) …(25)
Y2=ROTR13(X3) …(26)
【0097】
ここで、ROTR1(X)、ROTR5(X)、ROTR9(X)およびROTR13(X)は、データXを下位ビット方向(右方向)にそれぞれ1ビット、5ビット、9ビットおよび13ビットずつ巡回ビットシフトした結果を表す。
【0098】
図4に示される最終鍵変換部28で実行される最終鍵変換処理について説明する。最終鍵変換部28の拡大鍵算出部280は、図3に示される拡大鍵算出部210と同様の動作をして拡大鍵SK7を算出する。このため、その詳細な説明はここでは繰返さない。
【0099】
図6は、本発明の実施の形態に係る復号装置の構成の一例を示すブロック図である。
データ復号装置1200は、128ビットの暗号鍵EKを元に、暗号化時とは逆の順番で、各64ビットの8個の拡大鍵SK7〜SK0を生成する拡大鍵逆生成部4と、拡大鍵逆生成部4に接続され、拡大鍵逆生成部4より拡大鍵SK7〜SK0を受け、拡大鍵SK7〜SK0を用いて暗号文CTに対して後述する逆データ変換処理を繰り返し実行することにより復号文DTを生成する逆データ撹乱部3とを含む。
【0100】
逆データ撹乱部3は、8個の逆データ変換部31〜38を縦列に連結したものから構成される。拡大鍵逆生成部4は、鍵補正部40と7個の逆鍵変換部41〜47と1個の最終鍵変換部48とを縦列に連結したものから構成される。
【0101】
図7は、逆データ変換部31〜38の内部構成を示すブロック図である。逆データ変換部31〜38の各々は、64ビットの入力データY(暗号文CTまたは前段の逆データ変換部の出力データ)を受け、データYを4つのデータブロックA0〜A3に分割するデータ分割部311と、データ分割部311に接続され、データ分割部311よりデータブロックA0〜A3を受け、データブロックA0〜A3を後述する方法によりデータブロックB0〜B3にそれぞれ置換する逆データ置換部312〜315とを含む。
【0102】
逆データ変換部31〜38の各々は、逆データ置換部312〜315に接続され、逆データ置換部312〜315よりデータブロックB0〜B3を受け、データブロックB0〜B3を連結して出力するデータ連結部316と、データ連結部316に接続され、データ連結部316より出力される連結結果を受け、当該連結結果と拡大鍵SKとの間でビットごとの排他的論理和演算を実行し、データZを出力する排他的論理和演算部317とをさらに含む。
【0103】
図8は、鍵補正部40の内部構成を示すブロック図である。鍵補正部40は、各32ビットの第1〜第4入力データI0〜I3を受け、後述する処理を実行し、第1〜第4出力データJ0〜J3を算出する。鍵補正部40は、第1入力データI0を下位ビット方向(右方向)に51ビットだけ巡回ビットシフトし、第2出力データJ1として出力するデータ回転部401と、第2入力データI1を下位ビット方向(右方向)に47ビットだけ巡回ビットシフトし、第3出力データJ2として出力するデータ回転部402と、第3入力データI2を下位ビット方向(右方向)に43ビットだけ巡回ビットシフトし、第4出力データJ3として出力するデータ回転部403と、第4入力データI3を下位ビット方向(右方向)に55ビットだけ巡回ビットシフトし、第1出力データJ0として出力するデータ回転部404とを含む。
【0104】
図9は、逆鍵変換部41〜47の内部構成を示すブロック図である。逆鍵変換部41〜47の各々は、鍵補正部40または前段の逆鍵変換部より各32ビットの第1〜第4入力データY0〜Y3を受け、第1〜第4入力データY0〜Y3より64ビットの拡大鍵SKを算出する拡大鍵算出部410と、第1〜第4入力データY0〜Y3より次段の逆鍵変換部または最終鍵変換部48への入力となる第1〜第4出力データZ0〜Z3を算出する出力逆算出部430とを含む。
【0105】
拡大鍵算出部410は、第2入力データY1と第4入力データY3との間でビットごとの排他的論理和演算を実行し、32ビットのデータAを算出する排他的論理和演算部411と、排他的論理和演算部411に接続され、排他的論理和演算部411よりデータAを受け、データAを後述する方法によりデータBに置換するデータ置換部412と、データ置換部412に接続され、データ置換部412よりデータBを受け、データBと第3入力データY2との間でビットごとの排他的論理和演算を実行し、データCを算出する排他的論理和演算部413とを含む。
【0106】
拡大鍵算出部410は、排他的論理和演算部413に接続され、排他的論理和演算部413よりデータCを受け、データCと第2入力データY1との間でビットごとの排他的論理和演算を実行し、データDを算出する排他的論理和演算部414と、排他的論理和演算部414に接続され、排他的論理和演算部414よりデータDを受け、データDと第1入力データY0との間でビットごとの排他的論理和演算を実行し、データEを算出する排他的論理和演算部415と、排他的論理和演算部413および415に接続され、排他的論理和演算部413および415よりデータCおよびデータEをそれぞれ受け、データCおよびデータEを連結して64ビットの拡大鍵SKとして出力するデータ連結部416とをさらに含む。
【0107】
出力逆算出部430は、第1入力データY0を上位ビット方向(左方向)に5ビットだけ巡回ビットシフトし、第2出力データZ1として出力するデータ回転部417と、第2入力データY1を上位ビット方向(左方向)に9ビットだけ巡回ビットシフトし、第3出力データZ2として出力するデータ回転部418と、第3入力データY2を上位ビット方向(左方向)に13ビットだけ巡回ビットシフトし、第4出力データZ3として出力するデータ回転部419と、第4入力データY3を上位ビット方向(左方向)に1ビットだけ巡回ビットシフトし、第1出力データZ0として出力するデータ回転部420とを含む。
【0108】
図6に示す最終鍵変換部48は、図4に示される最終鍵変換部28と同様の構成を有する。このため、その詳細な説明はここでは繰返さない。
以下、図6〜図12を用いて、復号装置1200の動作について説明する。
【0109】
図6に示される復号装置1200の全体的な処理の流れについて説明する。
拡大鍵逆生成部4内部の鍵補正部40は、128ビットの暗号鍵EKを内部で4つの32ビットのデータブロックに分割した後、後述する鍵補正処理を実行し、4つの32ビットのデータブロックを算出する。鍵補正部40は、算出された4つのデータブロックを逆鍵変換部41に出力する。
【0110】
逆鍵変換部41は、入力された4つのデータブロックを元に後述する逆鍵変換処理を実行し、64ビットの拡大鍵SK7と、4つの32ビットのデータブロックとを算出する。逆鍵変換部41は、拡大鍵SK7を逆データ変換部31に出力し、4つのデータブロックを次段の逆鍵変換部42に出力する。
【0111】
逆データ変換部31は、入力された拡大鍵SK7を元に64ビットの暗号文CTに対して後述する逆データ変換処理を実行し、64ビットのデータを算出して次段の逆データ変換部32に出力する。
【0112】
逆鍵変換部42は、前段の逆鍵変換部41から入力された4つのデータブロックを元に、逆鍵変換部41と同様の処理を実行して拡大鍵SK6と、4つのデータブロックとを算出する。逆鍵変換部42は、拡大鍵SK6を逆データ変換部32に出力し、算出された4つのデータブロックを逆鍵変換部43に出力する。
【0113】
逆データ変換部32は、拡大鍵SK6を元に前段の逆データ変換部31から入力されたデータに対して、逆データ変換部31と同様の逆データ変換処理を施し、64ビットのデータを算出し、次段の逆データ変換部33に出力する。
【0114】
以下、同様の操作が逆鍵変換部43〜47および逆データ変換部33〜37において実行される。最終鍵変換部48は、逆鍵変換部47より入力された4つのデータブロックに対して、図4に示される最終鍵変換部28で用いた最終鍵変換処理と同様の処理を施し、拡大鍵SK0を求め、逆データ変換部38に出力する。
【0115】
逆データ変換部38は、拡大鍵SK0を元に逆データ変換部37からの入力データに対して逆データ変換部31と同様の逆データ変換処理を施し、64ビットの復号文DTを算出し、出力する。
【0116】
図7に示される逆データ変換部31〜38の各々で実行される逆データ変換処理について説明する。
データ分割部311は、64ビットのデータY(暗号文CTまたは前段の逆データ変換部より出力されるデータZ)を上位から16ビットずつ4つのデータブロックA0,A1,A2,A3に分割する。即ち、データYとデータブロックA0〜A3との間には、次式(27)に示される関係が成立する。
Y=A0‖A1‖A2‖A3 …(27)
【0117】
データ分割部311は、データブロックA0〜A3を逆データ置換部312〜315にそれぞれ出力する。
【0118】
逆データ置換部312は、データ分割部311より入力された16ビットデータA0を元に、次式(28)に従い16ビットのデータブロックB0を求める。
B0=InvSbox[A0h]‖InvSbox[A0l]…(28)
【0119】
ここで、InvSboxは上述した置換テーブルSboxの逆置換を実行する逆置換テーブルを表している。逆置換テーブルは、図10に示すような256個の要素を有する配列から構成され、各要素は8ビットのデータからなる。A0hはデータブロックA0の上位8ビット、A0lはデータブロックA0の下位8ビットのデータを表す。
【0120】
すなわち、InvSbox[A0h]は、逆置換テーブルInvSboxのA0h番目の要素を表しており、InvSbox[A0l]は、逆置換テーブルInvSboxのA0l番目の要素を表している。データブロックB0は、これら2つの要素を連結して作成されたデータである。
【0121】
ここで用いられる逆置換テーブルInvSboxは、暗号化時に、図2に示すデータ置換部113〜116で用いられる置換テーブルSboxを元にして作成されたものである。
【0122】
すなわち、置換テーブルSboxと逆置換テーブルInvSboxとの間には次式(29)に示される関係が成立する。
InvSbox[Sbox[i]]=i (i=0〜255) …(29)
【0123】
図11は、置換テーブルSboxと逆置換テーブルInvSboxとの関係を説明するための具体例を示す図である。例えば、Sbox[79]の値が2進数表現で「00110100」であったとする。「00110100」を10進数表現すると「52」になる。また、10進数「79」を2進数表現すると「01001111」となる。したがって、InvSbox[52]の値は2進数表現で「01001111」となる。
【0124】
逆データ置換部313〜315は、データ分割部311よりデータブロックA1〜A3をそれぞれ受け、データブロックB1〜B3をそれぞれ求め、出力する。逆データ置換部313〜315の各々で実行される処理は、逆データ置換部312で実行される処理と同様であるため、その詳細な説明はここでは繰返さない。
【0125】
データ連結部316は、逆データ置換部312〜315よりデータブロックB0〜B3を受け、次式(30)に従い、データブロックB0〜B3を連結し、64ビットのデータZを求め、出力する。
Z=B0‖B1‖B2‖B3 …(30)
【0126】
図8に示される鍵補正部40で実行される鍵補正処理について説明する。鍵補正部40は、128ビットの暗号鍵EKを入力として処理を実行するが、暗号鍵EKの上位ビットから32ビットずつを第1〜第4入力データI0〜I3とする。
【0127】
データ回転部401〜404は、次式(31)〜(34)にそれぞれ従い、第2出力データJ1、第3出力データJ2、第4出力データJ3および第1出力データJ0をそれぞれ算出する。
J1=ROTR51(I0) …(31)
J2=ROTR47(I1) …(32)
J3=ROTR43(I2) …(33)
J0=ROTR55(I3) …(34)
【0128】
ここで、ROTR51(I),ROTR47(I),ROTR43(I),ROTR55(I)は、データIを下位ビット方向(右方向)にそれぞれ51ビット,47ビット,43ビットおよび55ビットずつ巡回ビットシフトした結果を表す。
【0129】
最終的に、鍵補正部40は、第1〜第4出力データJ0〜J3を出力する。
次に、鍵補正部40のデータ回転部401におけるシフト量の意味について説明する。鍵変換部21に入力された第1〜第4入力データX0〜X3は、図3の出力算出部230においてデータ回転処理され、表1に示されるように第1〜第4出力データY0〜Y3としてROTR5(X1)、ROTR9(X2)、ROTR13(X3)およびROTR1(X0)がそれぞれ得られる。
【0130】
鍵変換部21で得られた第1〜第4出力データY0〜Y3を、鍵変換部22の第1〜第4入力データX0〜X3とすると、同様のデータ回転処理が行なわれ、表1に示されるように、鍵変換部22の第1〜第4出力データY0〜Y3としてROTR14(X2)、ROTR22(X3)、ROTR14(X0)およびROTR6(X1)がそれぞれ得られる。
【0131】
同様の処理を鍵変換部23〜27についても実行すると、表1に示されるような結果が得られる。したがって、鍵補正部40を図8に示すような構成にすることにより、鍵変換部21〜27までの処理を実行したのと等価な結果が得られる。
【0132】
【表1】
【0133】
なお、図8は、鍵変換部が7段の場合の鍵補正部40の例を示したが、鍵変換部の段数に関わらず、鍵補正部を作成することは可能である。たとえば、鍵変換部が6段の場合には、鍵補正部40の代わりに、図12に示すような鍵補正部160を用いることができる。鍵補正部160は、表1を元にして作られたものである。なお、鍵補正部160のデータ回転部1601〜1604は、入力データを下位ビット方向(右方向)にそれぞれ42ビット、34ビット、42ビットおよび50ビットずつ巡回ビットシフトする処理を実行する。しかし、32ビットの巡回ビットシフトは0ビットの巡回ビットシフト(すなわち、何も処理をしないこと)と等価である。このため、データ回転部1601〜1604における巡回ビットシフト数をそれぞれ10ビット、2ビット、10ビットおよび18ビットとし、巡回ビットシフト数を削減することも可能である。
【0134】
また、図8に示される鍵補正部40のデータ回転部401〜404における巡回ビットシフト数も同様に、それぞれ19ビット、15ビット、11ビットおよび23ビットとそれぞれ削減することも可能である。
【0135】
図9に示される逆鍵変換部41〜47で実行される逆鍵変換処理について説明する。逆鍵変換部41〜47の各々は、第1〜第4入力データY0〜Y3に対して、後述する拡大鍵算出処理とデータ変換処理とを実行し、拡大鍵SKと第1〜第4出力データZ0〜Z3とを算出し、出力する。第1〜第4入力データY0〜Y3は、鍵補正部40または前段の逆鍵変換部より出力される4つの32ビットのデータブロックである。拡大鍵SKは、逆データ変換部31〜37にそれぞれ入力されるSK7〜SK1のいずれかである。
【0136】
拡大鍵算出部410で実行される拡大鍵算出処理について説明する。
排他的論理和演算部411は、次式(35)に従い、第2入力データY1と第4入力データY3との間でビットごとの排他的論理和演算を実行し、32ビットのデータAを求める。
A=Y1(+)Y3 …(35)
【0137】
データ置換部412は、排他的論理和演算部411よりデータAを受け、暗号化時にデータ変換部11〜18で用いた置換テーブルと同一の置換テーブルSboxを用いて、次式(36)で示される関係を有する32ビットデータBを求める。
B=Sbox[A0]‖Sbox[A1]‖Sbox[A2]‖Sbox[A3] …(36)
【0138】
但し、データAを上位から8ビットずつに分割したデータをそれぞれA0,A1,A2,A3とする。
【0139】
排他的論理和演算部413は、データ置換部412よりデータBを受け、次式(37)に従い、データBと第3入力データY2との間でビットごとの排他的論理和演算を実行し、32ビットデータCを求める。
C=B(+)Y2 …(37)
【0140】
排他的論理和演算部414は、排他的論理和演算部413よりデータCを受け、次式(38)に従い、データCと第2入力データY1との間でビットごとの排他的論理和演算を実行し、32ビットデータDを求める。
D=C(+)Y1 …(38)
【0141】
排他的論理和演算部415は、排他的論理和演算部414よりデータDを受け、次式(39)に従い、データDと第1入力データY0との間でビットごとの排他的論理和演算を実行し、32ビットデータEを求める。
E=D(+)Y0 …(39)
【0142】
データ連結部416は、排他的論理和演算部413および415よりデータCおよびEをそれぞれ受け、次式(40)に従い、データCおよびEを連結し、64ビットの拡大鍵SKとして出力する。
SK=C‖E …(40)
【0143】
次に、出力逆算出部430において第1〜第4出力データZ0〜Z3を算出する処理(データ変換処理)について説明する。
【0144】
データ回転部417〜420は、次式(41)〜(44)にそれぞれ従い、第2出力データZ1、第3出力データZ2、第4出力データZ3および第1出力データZ0をそれぞれ算出する。
Z1=ROTL5(Y0) …(41)
Z2=ROTL9(Y1) …(42)
Z3=ROTL13(Y2) …(43)
Z0=ROTL1(Y3) …(44)
【0145】
ここで、ROTL5(Y),ROTL9(Y),ROTL13(Y),ROTL1(Y)は、データYを上位ビット方向(左方向)にそれぞれ5ビット、9ビット、13ビットおよび1ビットずつ巡回ビットシフトした結果を表す。
【0146】
以下、上述した本実施の形態における暗号化システムの効果について、従来の技術と対比しながら説明する。
図17に示されるように、第1の従来例では、復号装置1400において、最終逆データ変換部70で用いられる拡大鍵SK10を求めるために、9回分の鍵変換部の処理をオーバーヘッドとして実行する必要があった。これによって、第1の従来例の復号処理は暗号化処理と比べて大幅に処理時間がかかるという問題点がある。
【0147】
しかし、図6に示されるように、本実施の形態に係る復号装置1200においては、上記オーバーヘッドに相当する処理は、鍵補正部40における処理だけである。これは、図3に示す鍵変換部の出力算出部230における処理を7回繰り返し実行することに相当するが、データ回転処理の場合、rビット(rは整数)のデータ回転処理を7回繰り返す処理は、(7×r)ビットのデータ回転処理を1回行うことと等価である。これにより、出力算出部230の処理を7回繰り返すことは、鍵補正部40に示すように、データ回転処理を4回実行することと等価である。このとき、両者のオーバーヘッドの処理量を比較すると以下のようになる。
【0148】
第1の従来例では、1回の鍵変換部の処理に、5回の排他的論理和演算と、1回の置換処理と、1回のデータ回転処理とが必要である。このため、これを9回行なうと、45回の排他的論理和演算と、9回の置換処理と、9回のデータ回転処理とがオーバーヘッドとして必要である。一方、本実施の形態に係る復号装置1200においては、オーバーヘッドとして必要な処理は、4回のデータ回転処理のみである。
【0149】
即ち、第1の従来例と比べて本発明の方が上記オーバーヘッドははるかに少ないことがわかる。これは、図3に示される鍵変換部において、拡大鍵を算出する拡大鍵算出部210と、次段の鍵変換部への入力となる出力算出部230とを分離し、出力算出部230をデータ回転処理のみにより構成したことによる。
【0150】
また、データ回転処理を、ハードウェアで実装する場合には信号線の配線パターンをアレンジすることで実現できるためにデータ遅延は生じない。このため、図6に示す復号装置1200をハードウェアで実現する場合、実質的にはオーバーヘッドはゼロとみなすことができる。また、復号装置1200をソフトウェアで実現する場合でも、巡回ビットシフト操作は大抵のプロセッサでは高速処理可能であるため、オーバーヘッドは無視できるくらい小さなものになるといえる。
【0151】
次に、システムにおいて生成される拡大鍵のランダム性について検討する。暗号化時において、図3に示される鍵変換部21〜27内部のデータ置換部212の出力は、排他的論理和演算部213〜215によるデータ融合処理によって拡大鍵の全てに影響を与えるようになっている。すなわち、データ置換部212の置換テーブルを用いた非線形な処理の影響は、排他的論理和演算部213〜215によるデータ融合処理によって拡大鍵の全範囲に及ぶようになっている。このことは、第1の従来例の鍵変換部60〜69と同等の効果を奏している。また、排他的論理和部演算部211および213〜215で実行されるデータ融合処理には、第1〜第4入力データX0〜X3のすべてが入力データとして使用されている。このため、暗号鍵EKの値が1ビットでも変化すると、それによって生成される拡大鍵SK0〜SK7は全て変化することがいえる。以上のことから、生成される拡大鍵には十分なランダム性が得られているといえる。
【0152】
さらに、出力算出部230内部のデータ回転部217〜220では、データ回転数として1,5,9および13ビットがそれぞれ用いられている。これらのビット数は、データ回転部217の各々に入力されるビット数(32ビット)の約数ではない。これに対して、第2の従来例では、図17に示されるようにビット回転部601においてビット数8という32の約数がデータ回転のビット数として用いられている。この違いにより、本実施の形態におけるデータ回転部では、以下に説明するような効果がある。例えば、16進数表記で、33333333の32ビットデータの場合、8ビットのデータ回転を行った結果も、33333333となりデータ回転によるデータの変化はない。11111111や55555555といったデータに対しても同様である。しかし、本実施の形態のように32の約数ではないビット数によるデータ回転では、上記のようなことが起こるのは、16進数表記でFFFFFFFF及び00000000のデータの場合のみであり、それ以外の入力データに対しては、出力データは入力データと異なる値になる。即ち、本実施の形態のデータ回転部の方が高いデータ撹乱性能を実現していることになる。本実施の形態では鍵変換部21〜27内部の出力算出部230に、入力データのビット数の約数ではない回転数を有するデータ回転部を用いることによって、出力算出部230においても、高いデータ撹乱性能を実現している。
【0153】
なお、出力算出部230では、全ての32ビットデータブロックに対してデータ回転処理を行っているが、これは、この構成に限られるものではなく、4つのデータブロックのうち少なくとも1つに対してデータ回転処理を行えばよい。また、データ回転数も本実施の形態に示す数値に限られるものではなく、データブロックサイズの約数でなければ、その他の回転数であってもよい。
【0154】
さらにまた、出力算出部230は、データ回転処理でなくても、第1〜第4入力データX0〜X3に対して、各ビットの値が相互に干渉しないような固定的な変換処理を実行してもよい。例えば、データ回転部217の代わりに図13に示すようなビット入れ替え部1500を用いてもよい。ビット入れ替え部1500は、32ビットの第1入力データX0を受け、各ビットの値が相互に干渉しないようにビット位置を入れ替え、第4出力データY3として出力するものである。
【0155】
このような変換であっても、各ビットの値が相互に干渉しないため、図8に示すような鍵補正部を作成することは可能である。
また、データ回転部217の代わりに図14(a)に示すような特定のビット値のみを反転させる、ビット反転部1520を用いてもよい。なお、図14(a)に示すビット反転部1520は、図14(b)に示す排他的論理和演算部1540と等価である。
【0156】
このような変換であっても、ビット入れ替え部1500と同様に、各ビットの値が相互に干渉しないため、図8に示すような鍵補正部を作成することは可能である。
【0157】
また、本実施の形態では、データ変換部として図2に示すような構成のものを用いているが、この構成に限られるものではない。
さらに、本実施の形態では、平文および暗号文のサイズを64ビット、暗号鍵のサイズを128ビット、拡大鍵のサイズを64ビットとそれぞれしているが、このデータサイズに限られるものではない。また、図1に示すデータ撹乱部1におけるデータ変換処理の段数を8段としているが、この段数に限られるものでもない。
【0158】
さらにまた、図3に示される鍵変換部の排他的論理和演算部211は、4つの32ビットのデータのうち2つのデータに対して排他的論理和演算を行っているが、この構成に限られるものではない。排他的論理和演算部211は、第1〜第4入力データX0〜X3を連結した128ビットのデータから得られる少なくとも2つの任意の部分データに対して排他的論理和演算を行う構成であれば、どのような構成であってもよい。
【0159】
さらに、排他的論理和演算部213は、データ置換部212によって置換変換されたデータBと第1〜第4入力データX0〜X3のうちのいずれかのデータとの間で排他的論理和演算を行っているが、この構成に限られるものではない。排他的論理和演算部213は、データBと第1〜第4入力データX0〜X3を連結した128ビットのデータから得られる少なくとも1つの任意の部分データとの間で排他的論理和演算を実行するような構成であってもよい。
【0160】
さらにまた、排他的論理和演算部211,213〜215は、データ融合方法として排他的論理和演算を用いているが、これは加算、減算、乗算のような2つ以上の入力データから1つの出力データを算出するような処理であれば何でも良い。
【0161】
図15は、本実施の形態に係る暗号化システムを応用したDVDプレーヤーの外観図である。DVDプレーヤー1700は、挿入されたDVD1702のコンテンツの内容の認証を行なう際に、図6に示される復号装置1200を有することが可能であるが、この際の認証処理を高速に実行することが可能となるため、DVD1702を挿入してから実際にDVD1702のコンテンツが再生されるまでの時間を早くすることができる。
【0162】
【発明の効果】
以上の説明から明らかなように、本発明に係る暗号化システムによると、第1の従来例のように拡大鍵生成処理と次段の拡大鍵生成処理の入力を求める処理とを一部分に同一の処理回路を用いて実行するのではなく、拡大鍵算出部と出力算出部とに分離し、実行する。
【0163】
拡大鍵算出部は、複数のデータを融合して、拡大鍵を算出する。出力算出部は、n回(nは自然数)繰り返した処理が等価な簡易処理に変換できるようなデータ回転処理を用いる。これにより、第1の従来例のように暗号時と比べて復号時のオーバーヘッド処理が極端に大きくなることがない。よって、暗号化処理時間と復号処理時間とがほとんど変わらないようにすることができる。
【0164】
また第2の従来例のように、拡大鍵算出部は、単純なビット入れ替え処理ではなく、置換テーブルによる非線形な置換処理とデータ融合処理とを組み合わせた複雑な処理を用いている。このため、置換テーブルを用いた非線形処理の影響がすべての拡大鍵におよび、かつ、暗号鍵が変化すると、その変化が生成されるすべての拡大鍵におよぶという特徴を有する。このため、ランダム性の高い拡大鍵生成処理を実現することができる。
【0165】
以上のように、本発明に係る暗号化システムによれば、第1の従来例と第2の従来例との課題を同時に解決することができる。
以上のように本発明に係る暗号化システムにより、高速かつ安全性の高い暗号処理、認証処理などが可能になる。このため、実行速度と安全性との両面で厳しい仕様が求められるシステムなどに使用されることにより、その実用的価値は極めて高い。
【図面の簡単な説明】
【図1】 本発明の実施の形態に係る暗号化装置1100の構成の一例を示すブロック図である。
【図2】 本発明の実施の形態に係るデータ変換部11〜18の構成の一例を示すブロック図である。
【図3】 本発明の実施の形態に係る鍵変換部21〜27の構成の一例を示すブロック図である。
【図4】 本発明の実施の形態に係る最終鍵変換部28の構成の一例を示すブロック図である。
【図5】 置換テーブルSboxを説明するための図である。
【図6】 本発明の実施の形態に係る復号装置1200の構成の一例を示すブロック図である。
【図7】 本発明の実施の形態に係る逆データ変換部31〜38の構成の一例を示すブロック図である。
【図8】 本発明の実施の形態に係る鍵補正部40の構成の一例を示すブロック図である。
【図9】 本発明の実施の形態に係る逆鍵変換部41〜47の構成の一例を示すブロック図である。
【図10】 逆置換テーブルInvSboxを説明するための図である。
【図11】 置換テーブルSboxと逆置換テーブルInvSboxとの関係を説明するための具体例を示す図である。
【図12】 鍵補正部160の構成の一例を示すブロック図である。
【図13】 ビット入れ替え部1500を説明するための図である。
【図14】 ビット反転部1520とそれと等価な排他的論理和演算部1540とを説明するための図である。
【図15】 本実施の形態に係る暗号化システムを応用したDVD(Digital Versatile Disk)プレーヤーの外観図である。
【図16】 第1の従来例に係る暗号化装置1300の構成を示すブロック図である。
【図17】 第1の従来例に係る鍵変換部60〜69の構成を示すブロック図である。
【図18】 第1の従来例に係る復号装置1400の構成を示すブロック図である。
【図19】 第1の従来例に係る逆鍵変換部90〜99の構成を示すブロック図である。
【図20】 第2の従来例に係る鍵変換部10の構成を示すブロック図である。
【図21】 ETCシステムを説明するための図である。
【符号の説明】
1,5 データ撹乱部
2,6 拡大鍵生成部
3,7 逆データ撹乱部
4,8 拡大鍵逆生成部
10,21〜27,60〜69,80〜89 鍵変換部
11〜18,50〜58 データ変換部
20,112,311,600,800 データ分割部
28,48 最終鍵変換部
31〜38,71〜79 逆データ変換部
40 鍵補正部
41〜47,90〜99 逆鍵変換部
59 最終データ変換部
70 最終逆データ変換部
101〜102 巡回シフト部
103,117,216,286,316,416,608,908 データ連結部
104 データ縮約部
111,211,213〜215,281,283〜285,317,411,413〜415,603〜607,901〜904,907,1540 排他的論理和演算部
113〜116,212,282,412,602,906 データ置換部
210,280,410 拡大鍵算出部
217〜220,401〜404,417〜420,601,905,1601〜1604 データ回転部
230 出力算出部
312〜315 逆データ置換部
430 出力逆算出部
500,700 鍵加算部
1100,1300 暗号化装置
1200,1400 復号装置
1500 ビット入れ替え部
1520 ビット反転部
1700 DVDプレーヤー1700
1702 DVD
1800 ETCシステム
1801 自動車
1802 車載器
1804 料金所アンテナ
Claims (22)
- 暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成装置であって、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割手段と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換手段とを備え、
前記複数の鍵変換手段の各々は、
前記複数の部分鍵データまたは前段の鍵変換手段からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値に対して、変換後のデータを構成する各ビットの値が、前記複数の入力データのいずれか1つのビットの値に依存して決定される変換処理であって、かつ依存する前記複数の入力データのビットが、前記変換後のデータを構成するビット間で重複しない変換処理を実行することにより、後段の鍵変換手段への複数の出力データを算出する出力算出部と、
前記複数の入力データのうちの1の入力データと他の入力データとの間の排他的論理和演算を含む融合処理を行うことにより、前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを有する
ことを特徴とする拡大鍵生成装置。 - 前記出力算出部は、前記複数の入力データのうちの少なくとも1つに対し、ビット位置をあらかじめ定められた規則に従い変更する
ことを特徴とする請求項1に記載の拡大鍵生成装置。 - 前記出力算出部において実行される前記変換処理は、前記入力データのあらかじめ定められたビット位置の値の反転処理である
ことを特徴とする請求項1に記載の拡大鍵生成装置。 - 前記出力算出部は、前記複数の入力データのうちの少なくとも1つに対し、所定のビット数だけ巡回シフト操作を実行する
ことを特徴とする請求項1に記載の拡大鍵生成装置。 - 前記所定のビット数は、前記巡回シフト操作が施される前記入力データのビット数の約数ではない
ことを特徴とする請求項4に記載の拡大鍵生成装置。 - 前記出力算出部は、前記巡回シフト操作を実行した後に、前記複数の入力データの位置をあらかじめ定められた規則に従って入れ替え、前記複数の出力データを算出する
ことを特徴とする請求項4に記載の拡大鍵生成装置。 - 前記拡大鍵算出部は、前記複数の入力データの融合における途中過程および前記複数の入力データのうちの少なくとも1つのデータに対し、所定の置換テーブルに基づいた置換処理を実行する
ことを特徴とする請求項4に記載の拡大鍵生成装置。 - 前記拡大鍵算出部は、前記複数の入力データの融合における途中過程および前記複数の入力データのうちの少なくとも1つのデータに対し、所定の置換テーブルに基づいた置換処理を実行する
ことを特徴とする請求項1に記載の拡大鍵生成装置。 - 前記拡大鍵算出部は、
前記複数の入力データの中から少なくとも2つの入力データに対して、当該2つの入力データの間の排他的論理和演算を行ない、演算結果である第1の融合データを生成する第1の融合部と、
前記第1の融合データに対し、前記所定の置換テーブルに基づいた置換処理を実行し、置換データを出力するデータ置換部と、
前記置換データと、前記複数の入力データの中から得られる少なくとも1つの入力データとの間の排他的論理和演算を行ない、演算結果である第2の融合データを生成する第2の融合部と、
少なくとも前記第2の融合データを含むデータを入力とし、前記拡大鍵データを作成する拡大鍵作成部とを含む
ことを特徴とする請求項8に記載の拡大鍵生成装置。 - 前記拡大鍵算出部は、前記複数の入力データの融合の途中結果と最終結果とを連結して前記拡大鍵データを作成する
ことを特徴とする請求項8に記載の拡大鍵生成装置。 - 暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項1に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。 - 暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項4に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。 - 暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項5に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。 - 暗号鍵データを用いて平文データを暗号化する暗号化装置であって、
請求項8に記載の拡大鍵生成装置と、
前記平文データを前記拡大鍵生成装置より生成される複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備える
ことを特徴とする暗号化装置。 - 暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項1に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項1に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を1段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項1に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。 - 暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項4に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項4に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を1段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項4に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。 - 暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項5に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成部手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項5に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を1段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項5に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。 - 暗号鍵データを用いて暗号文データを復号する復号装置であって、
前記暗号鍵データを受け、複数の拡大鍵データを請求項8に記載の拡大鍵生成装置とは逆の順序で生成する拡大鍵逆生成手段と、
前記複数の拡大鍵データに基づいて、前記暗号文データを復号する逆データ撹乱手段とを備え、
前記拡大鍵逆生成手段は、
前記請求項8に記載の拡大鍵生成装置のうちの所定段数の鍵変換部の処理を1段の処理で実行する鍵補正部と、
一列に接続された複数の逆鍵変換部とを有し、
前記複数の逆鍵変換部は、各々、前記鍵補正部からの出力データまたは前段の逆鍵変換部からの出力データを入力データとして受け、前記入力データより前記拡大鍵データと後段の逆鍵変換部への出力データを作成し、作成される拡大鍵データは前記請求項8に記載の拡大鍵生成装置での作成順序とは逆である
ことを特徴とする復号装置。 - 暗号鍵データを用いて平文データを暗号化し、暗号文データを生成する暗号化装置と、
前記暗号鍵データを用いて前記暗号文データを復号する復号装置とを備え、
前記暗号化装置は、
前記暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成手段と、
前記複数の拡大鍵データに基づいて、前記平文データを暗号化するデータ撹乱手段とを有し、
前記拡大鍵生成手段は、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割部と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換部とを含み、
前記複数の鍵変換部の各々は、
前記複数の部分鍵データまたは前段の鍵変換部からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値に対して、変換後のデータを構成する各ビットの値が、前記複数の入力データのいずれか1つのビットの値に依存して決定される変換処理であって、かつ依存する前記複数の入力データのビットが、前記変換後のデータを構成するビット間で重複しない変換処理を実行することにより、後段の鍵変換部への複数の出力データを算出する出力算出部と、
前記複数の入力データのうちの1の入力データと他の入力データとの間の排他的論理和演算を含む融合処理を行うことにより、前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを含む
ことを特徴とする暗号化システム。 - データ分割手段と、鍵変換手段とを備える拡大鍵生成装置によって、暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成方法であって、
データ分割手段が、暗号鍵データを複数の部分鍵データに分割するステップと、
鍵変換手段が、前記複数の部分鍵データを入力とし、複数の拡大鍵データを出力する一連の複数の鍵変換ステップとを含み、
前記複数の鍵変換ステップの各々は、
鍵変換手段が、前記複数の部分鍵データまたは前段の鍵変換ステップで出力される複数の出力データを複数の入力データとし、前記複数の入力データの各々について、各ビットの値に対して、変換後のデータを構成する各ビットの値が、前記複数の入力データのいずれか1つのビットの値に依存して決定される変換処理であって、かつ依存する前記複数の入力データのビットが、前記変換後のデータを構成するビット間で重複しない変換処理を実行することにより、後段の鍵変換ステップで用いられる複数の出力データを算出するステップと、
鍵変換手段が、前記複数の入力データのうちの1の入力データと他の入力データとの間の排他的論理和演算を含む融合処理を行うことにより、前記複数の入力データを融合して、前記拡大鍵データを算出するステップとを含む
ことを特徴とする拡大鍵生成方法。 - コンピュータを、平文データに対して暗号鍵データを用いて暗号化処理を行なう暗号化装置として機能させるためのプログラムであって、
前記暗号化装置は、
前記暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成手段と、
前記平文データを前記複数の拡大鍵データに基づいて暗号化し、暗号文データを生成する手段とを備え、
前記拡大鍵生成手段は、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割部と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換部とを有し、
前記複数の鍵変換部の各々は、
前記複数の部分鍵データまたは前段の鍵変換部からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値に対して、変換後のデータを構成する各ビットの値が、前記複数の入力データのいずれか1つのビットの値に依存して決定される変換処理であって、かつ依存する前記複数の入力データのビットが、前記変換後のデータを構成するビット間で重複しない変換処理を実行することにより、後段の鍵変換部への複数の出力データを算出する出力算出部と、
前記複数の入力データのうちの1の入力データと他の入力データとの間の排他的論理和演算を含む融合処理を行うことにより、前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを含む
ことを特徴とするプログラム。 - コンピュータを、暗号鍵データを入力とし、複数の拡大鍵データを出力する拡大鍵生成装置として機能させるためのプログラムであって、
前記拡大鍵生成装置は、
前記暗号鍵データを複数の部分鍵データに分割するデータ分割手段と、
前記複数の部分鍵データを入力とし、前記複数の拡大鍵データを出力する一列に接続された複数の鍵変換手段とを備え、
前記複数の鍵変換手段の各々は、
前記複数の部分鍵データまたは前段の鍵変換手段からの複数の出力データを複数の入力データとして受け、前記複数の入力データの各々について、各ビットの値に対して、変換後のデータを構成する各ビットの値が、前記複数の入力データのいずれか1つのビットの値に依存して決定される変換処理であって、かつ依存する前記複数の入力データのビットが、前記変換後のデータを構成するビット間で重複しない変換処理を実行することにより、後段の鍵変換手段への複数の出力データを算出する出力算出部と、
前記複数の入力データのうちの1の入力データと他の入力データとの間の排他的論理和演算を含む融合処理を行うことにより、前記複数の入力データを融合して、前記拡大鍵データを算出する拡大鍵算出部とを有する
ことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003067218A JP4515716B2 (ja) | 2002-04-03 | 2003-03-12 | 拡大鍵生成装置、暗号化装置および暗号化システム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002101074 | 2002-04-03 | ||
JP2003067218A JP4515716B2 (ja) | 2002-04-03 | 2003-03-12 | 拡大鍵生成装置、暗号化装置および暗号化システム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004004603A JP2004004603A (ja) | 2004-01-08 |
JP2004004603A5 JP2004004603A5 (ja) | 2006-03-02 |
JP4515716B2 true JP4515716B2 (ja) | 2010-08-04 |
Family
ID=30446595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003067218A Expired - Fee Related JP4515716B2 (ja) | 2002-04-03 | 2003-03-12 | 拡大鍵生成装置、暗号化装置および暗号化システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4515716B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005124681A1 (en) * | 2004-06-14 | 2005-12-29 | The University Of North Carolina At Greensboro | Systems and methods for digital content security |
WO2009087972A1 (ja) * | 2008-01-09 | 2009-07-16 | Nec Corporation | データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム |
JP4764932B2 (ja) | 2009-02-03 | 2011-09-07 | 株式会社日立製作所 | 再生信号の評価方法および光ディスク装置 |
JP4764939B2 (ja) * | 2009-04-14 | 2011-09-07 | 株式会社日立製作所 | 記録条件の調整方法及び光ディスク装置 |
JP4812881B2 (ja) * | 2010-01-20 | 2011-11-09 | 日立コンシューマエレクトロニクス株式会社 | 記録条件の調整方法及び光ディスク装置 |
JP4877406B2 (ja) * | 2010-06-03 | 2012-02-15 | 株式会社日立製作所 | 再生信号の評価方法および光ディスク装置 |
KR101312374B1 (ko) * | 2011-07-25 | 2013-09-27 | 소프트포럼 주식회사 | 데이터 크기 조정 장치 및 방법 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05501925A (ja) * | 1989-08-17 | 1993-04-08 | クリプテック・インク | 暗号化システム |
JP2000056679A (ja) * | 1998-08-11 | 2000-02-25 | Fujitsu Ltd | Desの鍵スケジュール装置 |
JP2000066586A (ja) * | 1998-08-24 | 2000-03-03 | Toshiba Corp | データ処理装置及び通信システム並びに記録媒体 |
JP2001142395A (ja) * | 1999-08-31 | 2001-05-25 | Matsushita Electric Ind Co Ltd | 拡大鍵生成装置、暗復号装置、拡大鍵生成方法、及び記憶媒体 |
JP2002023622A (ja) * | 2000-07-12 | 2002-01-23 | Toshiba Corp | 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 |
JP2002091296A (ja) * | 2000-07-13 | 2002-03-27 | Fujitsu Ltd | 拡大鍵生成装置、拡大鍵生成プログラムおよび記録媒体 |
JP2002366029A (ja) * | 2001-06-13 | 2002-12-20 | Fujitsu Ltd | Dpaに対して安全な暗号化 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06102820A (ja) * | 1992-09-22 | 1994-04-15 | Sony Corp | 暗号装置 |
JPH06102821A (ja) * | 1992-09-22 | 1994-04-15 | Sony Corp | 暗号装置 |
JPH0927803A (ja) * | 1995-07-11 | 1997-01-28 | Nippon Telegr & Teleph Corp <Ntt> | 暗号化/復号化装置 |
JP3782210B2 (ja) * | 1997-06-30 | 2006-06-07 | 日本電信電話株式会社 | 暗号装置 |
JP2934431B1 (ja) * | 1998-05-28 | 1999-08-16 | 日本電信電話株式会社 | 暗号鍵スケジュール装置、およびそのプログラム記録媒体 |
-
2003
- 2003-03-12 JP JP2003067218A patent/JP4515716B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05501925A (ja) * | 1989-08-17 | 1993-04-08 | クリプテック・インク | 暗号化システム |
JP2000056679A (ja) * | 1998-08-11 | 2000-02-25 | Fujitsu Ltd | Desの鍵スケジュール装置 |
JP2000066586A (ja) * | 1998-08-24 | 2000-03-03 | Toshiba Corp | データ処理装置及び通信システム並びに記録媒体 |
JP2001142395A (ja) * | 1999-08-31 | 2001-05-25 | Matsushita Electric Ind Co Ltd | 拡大鍵生成装置、暗復号装置、拡大鍵生成方法、及び記憶媒体 |
JP2002023622A (ja) * | 2000-07-12 | 2002-01-23 | Toshiba Corp | 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 |
JP2002091296A (ja) * | 2000-07-13 | 2002-03-27 | Fujitsu Ltd | 拡大鍵生成装置、拡大鍵生成プログラムおよび記録媒体 |
JP2002366029A (ja) * | 2001-06-13 | 2002-12-20 | Fujitsu Ltd | Dpaに対して安全な暗号化 |
Also Published As
Publication number | Publication date |
---|---|
JP2004004603A (ja) | 2004-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2449672C (en) | Block encryption device using auxiliary conversion | |
JP2760799B2 (ja) | 暗号方式 | |
US8165288B2 (en) | Cryptographic processing apparatus and cryptographic processing method, and computer program | |
US8396210B2 (en) | Cryptographic processing apparatus and cryptographic processing method, and computer program | |
EP2058781B1 (en) | Encryption device, encryption method, and computer program | |
JPWO2009087972A1 (ja) | データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム | |
JP2011512562A (ja) | アクセス及び通信に関するデータのランダム暗号化及び復号化方法 | |
EP1351430B1 (en) | Expansion key generating device, encryption device and encryption system | |
JP4515716B2 (ja) | 拡大鍵生成装置、暗号化装置および暗号化システム | |
JP5182295B2 (ja) | 暗号化装置及び暗号処理方法 | |
JPH0697930A (ja) | ブロック暗号処理装置 | |
RU2141729C1 (ru) | Способ криптографического преобразования блоков двоичных данных | |
JP3782210B2 (ja) | 暗号装置 | |
RU2738321C1 (ru) | Способ криптографического преобразования и устройство для его осуществления | |
JPH1124558A (ja) | 暗号装置 | |
JP5338327B2 (ja) | 暗号処理装置 | |
KR100494560B1 (ko) | Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법 | |
JPH10153954A (ja) | 暗号装置 | |
JPH09251267A (ja) | 暗号化装置及び暗号化方法 | |
JP2870532B2 (ja) | 暗号変換装置 | |
JPH0744375A (ja) | 暗号化データ処理装置 | |
JPH10153955A (ja) | 暗号装置 | |
JPH10153953A (ja) | 暗号装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060112 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060112 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090707 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090828 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100413 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100513 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4515716 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130521 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130521 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |