JP3505482B2 - 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 - Google Patents
暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体Info
- Publication number
- JP3505482B2 JP3505482B2 JP2000211686A JP2000211686A JP3505482B2 JP 3505482 B2 JP3505482 B2 JP 3505482B2 JP 2000211686 A JP2000211686 A JP 2000211686A JP 2000211686 A JP2000211686 A JP 2000211686A JP 3505482 B2 JP3505482 B2 JP 3505482B2
- Authority
- JP
- Japan
- Prior art keywords
- round
- function
- stage
- intermediate state
- key
- 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 - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Facsimile Transmission Control (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
とで複数の拡大鍵を逆の順番で用いる暗号化装置、復号
装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒
体に関する。
る情報や機密情報やプライバシーに係る情報等のセキュ
リティ・コントロールのために、暗号技術の重要性が非
常に高くなっている。実際に暗号技術は様々な分野にお
いて様々な形で利用されている。
ちの一つに、共通鍵暗号方式がある。共通鍵暗号方式
は、暗号化の際に用いられた鍵と同一の鍵(共通鍵、秘
密鍵)を用いて復号が行われる方式である。
そのうちの一つに、拡大鍵を用いる方式がある。この方
式では、共通鍵をもとに、それが持つビット数より多い
総ビット数の複数の拡大鍵を生成する。
てラウンド関数(段関数)を作用させ、その出力値をも
とに拡大鍵を生成とするとともに、さらに該出力値にラ
ウンド関数を作用させ、その出力値をもとに次の拡大鍵
を生成とするとともに、さらに該出力値にラウンド関数
を作用させ…、というように、次々とラウンド関数を作
用させて拡大鍵を逐次的に生成していくものがある。こ
のような方式をここではラウンド方式と呼ぶものとす
る。
通鍵暗号方式としては、例えば、共通鍵ブロック暗号方
式がある。なお、共通鍵ブロック暗号方式は、データ攪
拌部についても、処理単位となる所定ビット長のブロッ
ク・データに、ラウンド関数を次々と作用させて暗号化
または復号を行う構造を有するものであり、その代表的
な基本構造にSPN型とFeistel型等がある。
場合には、例えばブロック暗号のように、暗号化の際に
用いられた順番とは逆の順番で拡大鍵を用いることが要
求される。
明する。
部の構成例を示す。
鍵(1)を必要とする。そこで、共通鍵にラウンド関数
(1)を作用させ、その出力値を求め、これに拡大鍵変
換(1)を作用させて、拡大鍵(1)を得る。データ攪
拌部は、この拡大鍵(1)を用いて暗号化処理を行う。
鍵(2)を必要とする。そこで、ラウンド関数(1)の
出力値にラウンド関数(2)を作用させ、その出力値を
求め、これに拡大鍵変換(2)を作用させて、拡大鍵
(2)を得る。データ攪拌部は、この拡大鍵(2)を用
いて暗号化処理を行う。
大鍵の生成と、データ攪拌部による暗号化処理が行われ
る。
ち、拡大鍵(n)→拡大鍵(1)の順番に、拡大鍵を用
いる必要がある。ところが、図38と同様の構成の拡大
鍵生成部を有する従来の復号装置では、拡大鍵は、拡大
鍵(1)→拡大鍵(n)の順に生成されるので、例え
ば、データ攪拌部の処理に先立って、すべての拡大鍵を
生成し、メモリに記憶しておく必要があった。
貧弱なハードウェア環境しかない装置では、復号に必要
な拡大鍵をすべて格納するだけの記憶領域の余裕がない
という問題点がある。
に例示するような構成が考えられる。この従来の復号装
置の拡大鍵生成部の構成例では、一旦、暗号化時と同一
の拡大鍵生成処理を行って最終ラウンドでラウンド関数
を作用させて得られる出力値(1020)を求める。そ
の後、あらためて、該出力値(1020)に暗号化時と
は逆のラウンド方向に各ラウンド関数の逆関数を作用さ
せて、拡大鍵(n)→拡大鍵(1)の順に、すなわちO
n−the−flyに拡大鍵を生成していく。
大鍵生成処理を行う不要な時間のために、復号が開始さ
れるまでの遅延時間が発生するという問題点があった。
従来の技術では、拡大鍵を逆順に生成することはできな
いので、復号処理に先立って、全拡大鍵を生成し記憶し
ておく必要があるが、例えばICカードのように貧弱な
ハードウェア環境では、復号に必要な拡大鍵をすべて格
納するだけの記憶領域の余裕がないという問題点があっ
た。
って、この問題を回避するためには、一旦、暗号化時と
同一の拡大鍵生成処理を行って最終ラウンドでラウンド
関数を作用させて得られる出力値を求めた後に、あらた
めて該出力値に逆のラウンド方向に各ラウンド関数の逆
関数を作用させていくことが必要になるが、この場合
も、復号が開始されるまでの遅延時間が避けられないと
いう問題点があった。
ので、拡大鍵生成のための遅延時間の発生を回避しもし
くは小さくし、かつ、On−the−flyの鍵生成を
可能とした暗号化装置、復号装置及び拡大鍵生成装置、
拡大鍵生成方法並びに記録媒体を提供することを目的と
する。
ータ攪拌処理と復号時のデータ攪拌処理とで逆の順番で
複数の拡大鍵を使用する共通鍵暗号方式による暗号化装
置であって、複数段のラウンド関数について、初段で
は、共通鍵を入力として所定のラウンド関数を施して中
間状態を生成し、2段目以降では、前段にて生成された
中間状態を入力として所定のラウンド関数を施して新た
な中間状態を生成するラウンド処理手段と、前記ラウン
ド処理手段の全部又は一部の段にて生成された前記中間
状態の各々について、該中間状態の全ビット又はその一
部をそのまま又はこれに所定の変換処理を施した後に前
記拡大鍵として出力するための出力手段とを備え、前記
ラウンド処理手段は、複数のラウンド関数を従属接続し
たラウンド関数系列であって前記共通鍵をその初段へ入
力した場合にその最終段が該共通鍵と同一の値を生成す
るように設定されたラウンド関数系列における全段又は
そのうちの一部で初段から連続した複数段についてのラ
ウンド関数を、該ラウンド関数系列の段の順番に従って
施すものであり、前記ラウンド関数系列のうちの少なく
とも1対のラウンド関数について、一方のラウンド関数
を他方のラウンド関数の逆関数になるように設定したこ
とを特徴とする。ようにしてもよい。 好ましくは、前
記ラウンド関数系列は、初段からの段数と最終段からの
段数とが一致する2つのラウンド関数を互いに逆関数に
なるように設定したものであるようにしてもよい。 好
ましくは、前記ラウンド関数系列は、少なくとも第1の
特定の段と第2の特定の段との間の連続する複数段につ
いて、該第1の特定の段からの段数と該第2の特定の段
からの段数とが一致する2つのラウンド関数を互いに逆
関数になるように設定した部分系列を含むものであるよ
うにしてもよい。 好ましくは、前記ラウンド関数系列
は、少なくとも第1の特定の段から段数増加方向へ特定
段数隔てた段までの連続する範囲と第2の特定の段から
段数減少方向へ特定段数隔てた段までの連続する範囲に
ついて、該第1の特定の段からの段数と該第2の特定の
段からの段数とが一致する2つのラウンド関数を互いに
逆関数になるように設定した部分系列を含むものである
ようにしてもよい。 好ましくは、前記出力手段は、前
記拡大鍵の出力のために前記中間状態を用いる際に、該
中間状態については、その全ビットのうちから選択した
当該中間状態を一意に決定するには十分ではない部分の
みを用いるようにしてもよい。 好ましくは、前記ラウ
ンド処理手段により生成された中間状態の一部を、前記
出力手段へ接続するための接続手段を更に備えるように
してもよい。 好ましくは、前記接続手段は、前記ラウ
ンド関数系列に属するラウンド関数のうち、その初段若
しくは初段から段数増加方向へ所定段数隔てた段までの
連続する範囲、及び又は最終段若しくは最終段から段数
減少方向へ所定段数隔てた段までの連続する範囲に属す
るラウンド関数については、これに対応する中間状態を
前記出力手段へ接続しないようにしてもよい。 好まし
くは、前記接続手段は、前記ラウンド関数系列の初段か
らの段数と最終段からの段数とが一致する2つのラウン
ド関数からなる対のそれぞれにつき、当該対に係る2つ
のラウンド関数のうちのいずれか一方又は両方に対応す
る中間状態を前記出力手段へ接続しないようにしてもよ
い。 好ましくは、前記接続手段は、前記ラウンド関数
系列の初段若しくは初段から段数増加方向へ所定段数隔
てた段までの連続する範囲、及び又は最終段若しくは最
終段から段数減少方向へ所定段数隔てた段までの連続す
る範囲においては、初段からの段数と最終段からの段数
とが一致する2つのラウンド関数からなる対のそれぞれ
につき、当該対に係る2つのラウンド関数のうちのいず
れか一方又は両方に対応する中間状態を前記出力手段へ
接続しないようにしてもよい。 好ましくは、複数の前
記拡大鍵のうちの任意のものが常には一致しないように
してもよい。 好ましくは、複数の前記拡大鍵のうちの
任意のものが、それら拡大鍵の全ビットのうちの任意の
ビット群についても、常には一致しないようにしてもよ
い。 好ましくは、前記ラウンド処理手段及び前記出力
手段は、前記データ攪拌処理に必要な拡大鍵数を越える
数の拡大鍵を、該データ攪拌処理に提供可能であり、前
記提供可能な拡大鍵のうち実際に前記データ攪拌処理に
提供すべき拡大鍵を示す情報、又は前記データ攪拌処理
に提供すべき拡大鍵及びその提供する順番を示す情報を
拡張共通鍵とし、前記出力手段は、前記拡張共通鍵に従
って、前記拡大鍵を出力するようにしてもよい。 ま
た、本発明は、暗号化時のデータ攪拌処理と復号時のデ
ータ攪拌処理とで逆の順番で複数の拡大鍵を使用する共
通鍵暗号方式による復号装置であって、複数段のラウン
ド関数について、初段では、共通鍵を入力として所定の
ラウンド関数を施して中間状態を生成し、2段目以降で
は、前段にて生成された中間状態を入力として所定のラ
ウンド関数を施して新たな中間状態を生成するラウンド
処理手段と、前記ラウンド処理手段の全部又は一部の段
にて生成された前記中間状態の各々について、該中間状
態の全ビット又はその一部をそのまま又はこれに所定の
変換処理を施した後に前記拡大鍵として出力するための
出力手段とを備え、前記ラウンド処理手段は、複数のラ
ウンド関数を従属接続したラウンド関数系列であって前
記共通鍵をその初段へ入力した場合にその最終段が該共
通鍵と同一の値を生成するように設定されたラウンド関
数系列における全段又はそのうちの一部で初段から連続
した複数段についてのラウンド関数を、該ラウンド関数
系列の段の順番に従って施すものであり、前記ラウンド
関数系列のうちの少なくとも1対のラウンド関数につい
て、一方のラウンド関数を他方のラウンド関数の逆関数
になるように設定したことを特徴とする。 また、本発
明は、暗号化時のデータ攪拌処理と復号時のデータ攪拌
処理とで逆の順番で複数の拡大鍵を使用する共通鍵暗号
方式による暗号化装置又は復号装置に用いられる拡大鍵
生成装置であって、複数段のラウンド関数について、初
段では、共通鍵を入力として所定のラウンド関数を施し
て中間状態を生成し、2段目以降では、前段にて生成さ
れた中間状態を入力として所定のラウンド関数を施して
新たな中間状態を生成するラウンド処理手段と、前記ラ
ウンド処理手段の全部又は一部の段にて生成された前記
中間状態の各々について、該中間状態の全ビット又はそ
の一部をそのまま又はこれに所定の変換処理を施した後
に前記拡大鍵として出力するための出力手段とを備え、
前記ラウンド処理手段は、複数のラウンド関数を従属接
続したラウンド関数系列であって前記共通鍵をその初段
へ入力した場合にその最終段が該共通鍵と同一の値を生
成するように設定されたラウンド関数系列における全段
又はそのうちの一部で初段から連続した複数段について
のラウンド関数を、該ラウンド関数系列の段の順番に従
って施すものであり、前記ラウンド関数系列のうちの少
なくとも1対のラウンド関数について、一方のラウンド
関数を他方のラウンド関数の逆関数になるように設定し
たことを特徴とする。 また、本発明は、ラウンド処理
手段及び出力手段を備え、暗号化時のデータ攪拌処理と
復号時のデータ攪拌処理とで逆の順番で複数の拡大鍵を
使用する共通鍵暗号方式による暗号化装置のための拡大
鍵生成方法であって、前記ラウンド処理手段により、複
数段のラウンド関数について、初段では、共通鍵を入力
として所定のラウンド関数を施して中間状態を生成し、
2段目以降では、前段にて生成された中間状態を入力と
して所定のラウンド関数を施して新たな中間状態を生成
する第1のステップと、前記出力手段により、全部又は
一部の段にて生成された前記中間状態の各々について、
該中間状態の全ビット又はその一部をそのまま又はこれ
に所定の変換処理を施した後に前記拡大鍵として出力す
る第2のステップとを有し、前記第1のステップにおい
て前記ラウンド処理手段により前記中間状態を生成する
にあたっては、複数のラウンド関数を従属接続したラウ
ンド関数系列であって前記共通鍵をその初段へ入力した
場合にその最終段が該共通鍵と同一の値を生成するよう
に設定されたラウンド関数系列における全段又はそのう
ちの一部で初段から連続した複数段についてのラウンド
関数を、該ラウンド関数系列の段の順番に従って施すも
のであり、前記ラウンド関数系列は、そのうちの少なく
とも1対のラウンド関数について、一方のラウンド関数
を他方のラウンド関数の逆関数になるように設定された
ものであることを特徴とする。 また、本発明は、ラウ
ンド処理手段及び出力手段を備え、暗号化時のデータ攪
拌処理と復号時のデータ攪拌処理とで逆の順番で複数の
拡大鍵を使用する共通鍵暗号方式による復号装置のため
の拡大鍵生成方法であって、前記ラウンド処理手段によ
り、複数段のラウンド関数について、初段では、共通鍵
を入力として所定のラウンド関数を施して中間状態を生
成し、2段目以降では、前段にて生成された中間状態を
入力として所定のラウンド関数を施して新たな中間状態
を生成する第1のステップと、前記出力手段により、全
部又は一部の段にて生成された前記中間状態の各々につ
いて、該中間状態の全ビット又はその一部をそのまま又
はこれに所定の変換処理を施した後に前記拡大鍵として
第2のステップとを有し、前記第1のステップにおいて
前記ラウンド処理手段により前記中間状態を生成するに
あたっては、複数のラウンド関数を従属接続したラウン
ド関数系列であって前記共通鍵をその初段へ入力した場
合にその最終段が該共通鍵と同一の値を生成するように
設定されたラウンド関数系列における全段又はそのうち
の一部で初段から連続した複数段についてのラウンド関
数を、該ラウンド関数系列の段の順番に従って施すもの
であり、前記ラウンド関数系列は、そのうちの少なくと
も1対のラウンド関数について、一方のラウンド関数を
他方のラウンド関数の逆関数になるように設定されたも
のであることを特徴とする。 また、本発明は、ラウン
ド処理手段及び出力手段を備え、暗号化時のデータ攪拌
処理と復号時のデータ攪拌処理とで逆の順番で複数の拡
大鍵を使用する共通鍵暗号方式による暗号化装置として
コンピュータを機能させるためのプログラムを記録した
コンピュータ読取り可能な記録媒体において、前記プロ
グラムは、前記ラウンド処理手段により、複数段のラウ
ンド関数について、初段では、共通鍵を入力として所定
のラウンド関数を施して中間状態を生成し、2段目以降
では、前段にて生成された中間状態を入力として所定の
ラウンド関数を施して新たな中間状態を生成する第1の
ステップと、前記出力手段により、全部又は一部の段に
て生成された前記中間状態の各々について、該中間状態
の全ビット又はその一部をそのまま又はこれに所定の変
換処理を施した後に前記拡大鍵として出力するための第
2のステップとをコンピュータに実行させるとともに、
前記第1のステップにおいて前記ラウンド処理手段によ
り前記中間状態を生成するにあたっては、複数のラウン
ド関数を従属接続したラウンド関数系列であって前記共
通鍵をその初段へ入力した場合にその最終段が該共通鍵
と同一の値を生成するように設定されたラウンド関数系
列における全段又はそのうちの一部で初段から連続した
複数段についてのラウンド関数を、該ラウンド関数系列
の段の順番に従って施させるものであり、前記ラウンド
関数系列のうちの少なくとも1対のラウンド関数につい
て、一方のラウンド関数を他方のラウンド関数の逆関数
になるように設定されたものであることを特徴とする。
また、本発明は、ラウンド処理手段及び出力手段を備
え、暗号化時のデータ攪拌処理と復号時のデータ攪拌処
理とで逆の順番で複数の拡大鍵を使用する共通鍵暗号方
式による復号装置としてコンピュータを機能させるため
のプログラムを記録したコンピュータ読取り可能な記録
媒体において、前記プログラムは、前記ラウンド処理手
段により、複数段のラウンド関数について、初段では、
共通鍵を入力として所定のラウンド関数を施して中間状
態を生成し、2段目以降では、前段にて生成された中間
状態を入力として所定のラウンド関数を施して新たな中
間状態を生成する第1のステップと、前記出力手段によ
り、全部又は一部の段にて生成された前記中間状態の各
々について、該中間状態の全ビット又はその一部をその
まま又はこれに所定の変換処理を施した後に前記拡大鍵
として出力するための第2のステップとをコンピュータ
に実行させるとともに、前記第1のステップにおいて前
記ラウンド処理手段により前記中間状態を生成するにあ
たっては、複数のラウンド関数を従属接続したラウンド
関数系列であって前記共通鍵をその初段へ入力した場合
にその最終段が該共通鍵と同一の値を生成するように設
定されたラウンド関数系列における全段又はそのうちの
一部で初段から連続した複数段についてのラウンド関数
を、該ラウンド関数系列の段の順番に従って施させるも
のであり、前記ラウンド関数系列のうちの少なくとも1
対のラウンド関数について、一方のラウンド関数を他方
のラウンド関数の逆関数になるように設定されたもので
あることを特徴とする。
方法、復号装置、復号方法、拡大鍵生成装置又は拡大鍵
生成方法に係る発明としても成立する。また、それら発
明は、コンピュータに当該発明に相当する手順を実行さ
せるための(あるいはコンピュータを当該発明に相当す
る手段として機能させるための、あるいはコンピュータ
に当該発明に相当する機能を実現させるための)プログ
ラムを記録したコンピュータ読取り可能な記録媒体とし
ても成立する。
ンド関数の系列を、共通鍵を入力し、共通鍵と同じ値を
出力するように設定することによって、暗号化時と復号
時の両方において、従来のような不必要な遅延時間や記
憶容量の消費なく、共通鍵からOn−the−flyに
拡大鍵を生成することが可能になる。
実施の形態を説明する。
に拡大鍵を用いる共通鍵暗号方式のすべてに適用可能で
あるが、以下では、所定ビット長のブロック・データに
対して逐次的に各拡大鍵を用いたデータ攪拌処理を行っ
ていくような共通鍵ブロック暗号方式を例にとって説明
する。
て説明する。
に着目して説明するため)暗号対象となるデータを平文
として示してあるが、もちろん、暗号対象となるデータ
がすでに同一のまたは他の暗号方式によって暗号化され
たものであってもよい。
てもソフトウェアによっても実現可能であり、以下に示
す構成例は、暗号化装置(復号装置)の機能ブロック図
としても成立し、また暗号アルゴリズム(復号アルゴリ
ズム)の機能モジュール図もしくはフローチャート図と
しても成立する。
装置の構成例を示す。
データ攪拌部1と、拡大鍵生成部3を備えている。
31を備えている。
cにラウンド関数f1を作用させて中間状態kc1 =f
1(kc)を出力する。f2で示したラウンド処理部
は、前段のラウンド処理部の出力した中間状態kc1 に
ラウンド関数f2を作用させて中間状態kc2 =f2
(kc1 )=f2(f1(kc))を出力する。図示し
ないf3〜fn-1 に対応するラウンド処理部も同様であ
る。fnで示したラウンド処理部は、前段のラウンド処
理部の出力した中間状態kcn-1 にラウンド関数fnを
作用させて中間状態kcn =fn(kcn-1 )=fn
(fn-1 (…f2(f1(kc))…))を出力する。
ラウンド処理部にて前段のラウンド処理部の出力した中
間状態kcn にラウンド関数fn+1 を作用させ、これに
よって得られた出力値kcn =fn+1 (kcn-1 )=f
n+1 (fn(fn-1 (…f2(f1(kc))…)))
が、共通鍵kcに等しくなるようする。また、このラウ
ンド関数fn+1 の逆関数fn+1 -1が、復号装置における
拡大鍵生成部の初段のラウンド処理部のラウンド関数に
なる。なお、図1の構成例では、この暗号化装置におけ
る拡大鍵生成部にはラウンド関数fn+1 のラウンド処理
部を備えなくても構わない(備えても構わない)。
換部33を備えている。
たラウンド処理部の出力kc1 の全部または一部に拡大
鍵変換関数c1を作用させて、共通鍵k1を生成する。
c2で示した拡大鍵変換部は、f2で示したラウンド処
理部の出力kc2 の全部または一部に拡大鍵変換関数c
2を作用させて、共通鍵k2を生成する。図示しないc
3〜cn-1 に対応するラウンド処理部も同様である。c
nで示した拡大鍵変換部は、fnで示したラウンド処理
部の出力kcn の全部または一部に拡大鍵変換関数cn
を作用させて、共通鍵knを生成する。
れた複数の(例えばラウンド関数による)攪拌処理部1
1を備えるものとしている。
となるブロック・データを入力し、拡大鍵k1を用い
て、攪拌処理R1を行う。R2で示した攪拌処理部は、
R2で示した攪拌処理部から出力されたブロック・デー
タを入力し、拡大鍵k2を用いて、攪拌処理R2を行
う。図示しないR3〜Rn-1 に対応する攪拌処理部も同
様である。Rnで示した攪拌処理部は、Rn-1 で示した
攪拌処理部から出力されたブロック・データを入力し、
拡大鍵knを用いて、攪拌処理Rnを行う。Rnで示し
た攪拌処理部の出力が、求めるべき暗号文となる。
るものであっても、すべて同じものであっても、異なる
ものと同じものが混在するものであってもよい。複数の
ラウンド関数を異なるものにする場合に、関数を異なら
せる方法の他に、基本的には同じ関数であるが段に応じ
て異なる定数に依存するものにする方法などがある。ま
た、複数のラウンド関数は、すべて線形関数であっても
任意の関数であってもよいが、それらのうちの少なくと
も一つを非線形関数にするのが好ましい。また、2以上
のラウンド関数あるいは全てのラウンド関数を非線形関
数にしてもよい。また、ラウンド関数は、変換テーブル
を用いて実現する方法、行列演算やその他の演算で実現
する方法、実回路によって実現する方法など、種々の構
成方法がある。これらの点は、複数の拡大鍵変換関数に
ついても同様である。なお、拡大鍵生成部3として、入
力された中間状態またはその一部を、そのまま拡大鍵と
して出力する構成にする(あるいは、中間状態をデータ
攪拌部1(または後述するスイッチング回路15)に直
結する)ことも可能である。
通鍵kcのデータ長とは、同じであってもよいし、異な
るものであってもよい。また、拡大鍵のデータ長と、ブ
ロック・データのデータ長とは、同じであってもよい
し、異なるものであってもよい。また、中間状態のデー
タ長と、拡大鍵のデータ長とは、同じであってもよい
し、異なるものであってもよい。
置の構成例を示す。
ータ攪拌部2と、拡大鍵生成部4を備えている。図2の
復号装置は、図1の暗号化装置の逆変換を行う機能を有
するものである。
42を備えており、図1の暗号化装置の拡大鍵生成部2
の複数のラウンド関数の各々の逆関数を、逆の順番で作
用させるものである。
鍵kc=fn+1 (kcn)=fn+1(fn(fn-1 (…
f2(f1(kc))…)))にラウンド関数fn+1 -1
を作用させて、中間状態kcn=fn+1 -1(kc)=f
n+1 -1(fn+1 (fn(fn-1 (…f2(f1(k
c))…))))=fn(fn-1 (…f2(f1(k
c))…))を出力する。fn-1で示したラウンド処理
部は、前段のラウンド処理部の出力した中間状態kcn
にラウンド関数fn+1 -1を作用させて、kcn-1 =fn-
1 (…f2(f1(kc))…)を出力する。図示しな
いfn-1 〜f3に対応するラウンド処理部も同様であ
る。f2-1で示したラウンド処理部は、前段のラウンド
処理部の出力した中間状態kc2=f2(f1(k
c))にラウンド関数f2-1を作用させて、kc1=f
1(kc)を出力する。
ウンド処理部にて前段のラウンド処理部の出力した中間
状態kc2にラウンド関数f1-1を作用させ、これによ
って得られた出力値は共通鍵kcに等しくなる。また、
このラウンド関数f1-1の逆関数f1が、暗号化装置に
おける拡大鍵生成部の初段のラウンド処理部のラウンド
関数になる。なお、図2の構成例では、この復号装置に
は拡大鍵生成部ではラウンド関数f1-1のラウンド処理
部を備えなくても構わない(備えても構わない)。
換部44を備えている。この部分は、図1の暗号化装置
の対応する部分と同じ処理内容となる。
れた複数の(例えばラウンド関数による)攪拌処理部2
2を備えるものとしている。Rn-1で示した攪拌処理部
は、復号の対象となるブロック・データを入力し、拡大
鍵knを用いて、暗号化装置の攪拌処理Rnの逆変換と
なる攪拌処理Rn-1を行う。同様に、他の攪拌処理部も
順次、前段の攪拌処理部から出力されるブロック・デー
タを入力し、拡大鍵Kn-1 、…、またはk2を用いて、
攪拌処理Rn-1 -1、…、またはR2-1を行う。R1-1で
示した攪拌処理部は、R2-1で示した攪拌処理部から出
力されたブロック・データを入力し、拡大鍵k1を用い
て、暗号化装置の攪拌処理R1の逆変換となる攪拌処理
R1-1を行う。R1-1で示した攪拌処理部の出力によっ
て、求めるべき復号結果となるブロック・データが与え
られる。
時とは逆の順番での拡大鍵の生成に入り、拡大鍵を次々
と生成していくことができる。
系列(ただし、最終段は備えないこともある)と、その
逆関数となる復号時のラウンド関数の系列(ただし、最
終段は備えないこともある)とについて、暗号化時の最
終段の出力に相当する値がもとの共通鍵に一致するよう
にラウンド関数の系列を設定することによって、暗号化
時と復号時の両方において、従来のような不必要な遅延
時間や記憶容量の消費なく、共通鍵からOn−the−
flyに拡大鍵を生成することが可能になる。
の拡大鍵生成部の複数のラウンド処理部によるラウンド
関数の系列について説明する。なお、暗号化装置におけ
るラウンド関数の系列と、復号装置におけるラウンド関
数の系列とは、逆関数の関係になるので、一方が決まれ
ば、他方も決まることになる。ここでは、暗号化装置の
方を例にとって説明する。
1 について、そのラウンド関数の系列の内容、あるいは
各々の順番のラウンド関数の内容は、当該ラウンド関数
の系列が全体として共通鍵を入力し共通鍵と同じ値を出
力する条件を満たす範囲内において適宜設定可能であ
り、様々なバリエーションがある。以下、ラウンド関数
の系列のバリエーションのいくつかを例示列挙的に説明
する。
ド・トリップ構成について説明する。
r段とする(なお、前述したように、2r段目のラウン
ド関数は、備えられないことがある)。
は、0≦i≦rを満たすすべてのiについて、第(r+
i)段目の段関数を、第(r−i+1)段目の段関数の
逆関数になっている、という関係を満たすように構成す
る方法である。
わち、 f1、f2、f3、f4、f5、f6、f7、f8 とし、f1〜f4を任意のラウンド関数として、f5=
f4-1、f6=f3-1、f7=f2-1、f8=f1-1と
すると、 f1、f2、f3、f4、f4-1、f3-1、f2-1、f
1-1 という順番の系列となる。すなわち、共通鍵を入力とし
て、f1,f2,f3,f4、f4-1、f3-1、f
2-1、f1-1を次々と作用させることによって、最終段
の出力が共通鍵と一致するようになる。
成と呼ぶものとする。また、この様子を図3に概念的に
示す。
暗号化装置におけるラウンド関数の系列と、復号装置に
おけるラウンド関数の系列とが同一になる。
のラウンド関数を、 f1,f2,f3,f4、f4-1、f3-1、f2-1、f
1-1 とすると、復号装置における8段のラウンド関数は、こ
の逆関数となるので、 (f1-1)-1、(f2-1)-1、(f3-1)-1、(f
4-1)-1、(f4)-1、(f3)-1、(f2)-1、(f
1)-1 であり、したがって、 f1,f2,f3,f4、f4-1、f3-1、f2-1、f
1-1 となり、両者が一致することがわかる。
ンド関数(上記の例では、f1-1)を備えなくてもよい
し、復号装置においても最終段のラウンド関数(上記の
例では、f1)を備えなくてもよいが、いずれも最終段
のラウンド関数を備えれば、構成が同一となるので、暗
号化機能と復号機能の両方の機能を兼ね備えさせる装置
においては、暗号化時と復号時とで1つの拡大鍵生成部
を兼用することによって、装置規模を削減することも可
能である。
系列の前半の各ラウンド関数は、すべて異なるものであ
っても、すべて同じものであっても、異なるものと同じ
ものが混在するものであってもよい。
ウンド関数がすべて同じものである場合、段数を8段と
すると、暗号側と復号側のいずれにおいても、 f1、f1、f1、f1、f1-1、f1-1、f1-1、f
1-1 という系列になる。
した場合、ラウンド関数の系列において逆関数の関係に
ある対応部分の中間状態が同一になる。したがって、同
一の中間状態に同一の拡大鍵変換関数を作用させると、
同一の拡大鍵が生成される。そこで、これを避けるため
に、ラウンド関数の系列において逆関数の関係にある対
応部分についての2つの拡大鍵変換部の拡大鍵変換関数
として相異なるものを用いるようにしてもよい。
1-1 とし、f1の出力を用いる拡大鍵変換関数をc1、…、
f2-1の出力を用いる拡大鍵変換関数をc7とすると、
拡大鍵変換関数c1と拡大鍵変換関数c7とを異ならせ
るようにしてもよい。c2とc6、c3とc5について
も同様である。
説明する。
数の系列の後半を、その前半の逆関数としたが、ラウン
ド関数の系列の中の部分系列として、ラウンド・トリッ
プ構成に相当する部分を全く持たない構成も可能であ
る。
とする。また、この様子を図4に概念的に示す。
ンド関数の系列の段数を偶数段としたが、ループ構成で
は、ラウンド関数の系列の段数は、偶数段であっても奇
数段であってもよい。
場合に、共通鍵を入力として、f1、f2、f3、f
4、f5、f6、f7、f8を次々と作用させることに
よって、最終段の出力が共通鍵と一致するようにする。
この場合、その逆関数は、 f8-1、f7-1、f6-1、f5-1、f4-1、f3-1、f
2-1、f1-1 であり、共通鍵を入力すると、最終段の出力が共通鍵と
一致することになる。
の各ラウンド関数がすべて同じものである場合、段数を
8段とすると、暗号側では、 f1、f1、f1、f1、f1、f1、f1、f1 という系列になり、復号側では、 f1-1、f1-1、f1-1、f1-1、f1-1、f1-1、f
1-1、f1-1 という系列になる。
フト演算、行列演算、ガロア体演算など、種々のものが
ある。
ラウンド関数の系列としては、その部分系列として、ラ
ウンド・トリップ構成に相当する部分と、ループ構成に
相当する部分とを複合的に備えるような構成も可能であ
る。
の表記方法で示し、ループ構成部分を図3の表記方法で
示すものとして、図5〜図9にいくつかのバリエーショ
ンを例示する。
の途中にラウンド・トリップ構成部分を含むような入れ
子構造になっているものである。図5の場合のラウンド
関数の系列を例示すると、 a1→a2→a3→b1→b2→b2-1→b1-1→a4
→a5→a6→a6-1→a5-1→a4-1→a3-1→c1
→c2→c2-1→d1→d1-1→c1-1→a2 -1→a1
-1 となる。この例の場合、a1→a2→a3→a4→a5
→a6→a6-1→a5-1→a4 -1→a3-1→a2-1→a
1-1というラウンド・トリップ構成の中に、b1→b2
→b2-1→b1-1というラウンド・トリップ構成と、c
1→c2→c2-1→c1 -1というラウンド・トリップ構
成が入っており、さらに、c1→c2→c2-1→c1-1
というラウンド・トリップ構成の中に、d1→d1-1と
いうラウンド・トリップ構成が入っている。
プ構成部分を含むような入れ子構造になっているもので
ある。図6の場合のラウンド関数の系列を例示すると、 s1→s2→s3→s4→t1→t2→t3→s5→s
6→s7→s8 となる。この例の場合、s1→s2→s3→s4→s5
→s6→s7→s8というループ構成の中に、t1→t
2→t3というループ構成が入っている。
ンド・トリップ構成部分を含むような構造になっている
ものである。図7の場合のラウンド関数の系列を例示す
ると、 s1→s2→s3→s4→s5→a1→a2→a3→a
3-1→a2-1→a1-1→s6→s7→s8→s9 となる。この例の場合、s1→s2→s3→s4→s5
→s6→s7→s8→s9というループ構成の中に、a
1→a2→a3→a3-1→a2-1→a1-1というラウン
ド・トリップ構成が入っている。
の途中にループ構成部分を含むような構造になっている
ものである。図8の場合のラウンド関数の系列を例示す
ると、 a1→a2→a3→a4→a5→a6→s1→s2→s
3→s4→a6-1→a5-1→a4-1a3-1→a2-1→a
1-1 となる。この例の場合、a1→a2→a3→a4→a5
→a6→a6-1→a5-1→a4 -1a3-1→a2-1→a1
-1というラウンド・トリップ構成の中に、s1→s2→
s3→s4というループ構成が入っている。
成部分と、2つのループ部分を持つものである。
リップ構成部分とループ構成部分の組み合わせ方、ある
いは階層構造の取り方など、種々のバリエーションが可
能である。
部で必要とする数の分だけ拡大鍵を生成することを想定
したものであったが、データ攪拌部で必要とする数を越
える数の分の拡大鍵を生成可能とするラウンド関数の段
数を備え、生成可能な拡大鍵の一部をデータ攪拌部で使
用する構成も可能である。
装置に対応する構成例を、図10/図11にそれぞれ示
す。
に説明する。もちろん、ラウンド関数の系列は、上記し
たラウンド・トリップ構成等を採用したものであってよ
い。
攪拌処理Rjとの接続関係を示す部分であり、そのいく
つかの具体例を図12〜図15に例示している。なお、
本実施形態では、図10の5の接続関係と図11の6の
接続関係は同一になる。
入力としての共通鍵と、最終段のラウンド関数からの出
力されることになる共通鍵の双方または一方をも、中間
状態として拡大鍵生成に利用してもよい。なお、後者を
用いる場合に、実際に最終段のラウンド関数の出力を用
いるようにしてもよいし、共通鍵を記憶しておいてこれ
を用いるようにしてもよい。
が、攪拌処理で必要な拡大鍵の数より多くなるように構
成し、拡大鍵kiと攪拌処理Rjとを適宜対応付ける。
なお、同一の拡大鍵を複数の攪拌処理に使用可能とする
方法と、1つの拡大鍵を攪拌処理について排他的に使用
可能とする方法とがある。
成しないようにして構わない。この場合には、対応する
拡大鍵変換部を備えなくて構わない。
データ攪拌に使用する構成は、攻撃に対する安全性の面
で効果的である。
する。
であり、(拡大鍵変換部を備えたとして)生成可能な拡
大鍵の個数がm(m>n)である場合に、基本的には、
拡大鍵の重複使用を許さない構成では、m個の拡大鍵の
うちからn個の拡大鍵を任意に選択したすべての組み合
わせが可能である。なお、ここでは、生成される順番に
拡大鍵を使用するものとする。
基本的には、nm通りの組み合わせが可能である。
ランダムに選択する方法の他に、所定の基準に従って選
択する方法がある。
は、従来の暗号方式に対して、初段(あるいは最初から
の連続する数段)あるいは最終段(あるいは最終段まで
の連続する数段)の拡大鍵のうち一部のビットに対し
て、全数探索が行われる。この場合、初段と最終段の拡
大鍵が同一である場合には、探索の空間が小さくなって
しまい、解読される可能性が高くなる。
る拡大鍵(以下、初段の拡大鍵と呼ぶ)と最終段の拡大
鍵変換部により得られる拡大鍵(以下、最終段の拡大鍵
と呼ぶ)については、高々一方のみをデータ攪拌に使用
するようにしてもよい(いずれか一方のみをデータ攪拌
に使用する方法と、いずれもデータ攪拌に使用しない方
法とがある)。
の拡大鍵と最終段までの連続する数段分の拡大鍵の範囲
において、初段または最終段からの段数を同じくする2
つの段の拡大鍵の組について、いずれの組においても、
高々一方のみをデータ攪拌に使用するようにしてもよ
い。この場合に、使用するものあるいは使用しないもの
についての選択方法には種々のバリエーションが考えら
れる。例えば、いずれの組においても、いずれか一方を
使用するものとする場合に、各組ごとに、使用する方
(または使用しない方)を、ランダムに選択してもよい
し、例えば前半と後半とから交互になるように選択する
など一定の基準に従って選択するようにしてもよい。ま
た、例えば、各組ごとに、段の順番が前側のものを使用
するか、段の順番が後ろ側のものを使用するか、いずれ
も使用しないかを、ランダムに選択してもよいし、一定
の基準に従って選択するようにしてもよい。例えば、図
12に示すように、拡大鍵が15段分生成可能であり、
攪拌処理が9段ある場合に、初段の拡大鍵k1と最終段
の拡大鍵k15のうちではk15を使用し、その1つ内
側の段のk2とk14のうちからはk2を使用し、同様
に、k3とk13のうちからはk13を使用し、k4と
k12のうちからはk4を使用し、k5とk11のうち
からはk11を使用し、k6とk10のうちからはk6
を使用するようにしてもよい。なお、この場合において
も、生成される順番に拡大鍵を使用するようにしてい
る。
と最終段までの連続する数段分の拡大鍵の範囲について
は使用しないようにしてもよい。図13に、このときの
様子を示す。
続する数段分の拡大鍵と最終段までの連続する数段分の
拡大鍵の範囲については使用せず、その内側の連続する
数段分の拡大鍵の範囲については前述と同様に対応する
1組のうちの一方のみを使用するようにしてもよい。図
14に、このときの様子を示す。
エーションがある。
な順番で、データ攪拌に使用するものとして説明した
が、メモリ等のハードウェアまたは計算時間にある程度
の余裕があれば、その余裕に応じて、拡大鍵が生成され
る順番と、拡大鍵をデータ攪拌に使用する順番とを入れ
替えるようにしてもよい。この順番の入れ替えは、図1
や図2の構成においても同様である。この順番の入れ替
えも、攻撃に対する安全性の面で効果的である。
大鍵をデータ攪拌に使用する順番とを入れ替えた例を示
す。
ば、先に生成された拡大鍵を、後に生成された拡大鍵よ
りも後で使用するために、一旦、メモリに格納しておく
ようにすればよい。1つの拡大鍵の順番を入れ替えるだ
けならば、1つの拡大鍵を一時保存するのに必要なメモ
リ容量が増加するだけである。
にラウンド関数の逆関数を作用させて必要な中間状態を
復元させればよい。例えば、初段のラウンド関数f1に
よる中間状態kc1 から得られる拡大鍵k1を、2段目
のラウンド関数f2による中間状態kc2 から得られる
拡大鍵k2を使用した後に使用する場合、一旦、中間状
態kc2を求めた後に、kc2に2段目のラウンド関数f
2の逆関数f2-1を作用させて中間状態kc1 を求め
(これによって拡大鍵k1が得られる)、さらに中間状
態kc1 に2段目のラウンド関数f2を作用させて中間
状態kc2 を求め、これに3段目のラウンド関数f3を
作用させる…、というようにすることによって、使用順
に拡大鍵を生成することができる。なお、ラウンド関数
系列がラウンド・トリップ構成を有する場合には、ラウ
ンド関数f2の逆関数f2-1も同時に備えているので、
これを上記の処理に利用するようにしてもよい。
れ替えは、固定的なものであったが、これを可変とする
ようにしてもよい。
復号装置に対応する構成例を、図16/図17にそれぞ
れ示す。図中の7と8はデコーダであり、15と16は
スイッチング回路である。
鍵kiを対応付ける接続パターン(図12等参照)を複
数種類用意しておき、各パターンをコード化し、これを
拡張共通鍵kc’として、本来の共通鍵kcに付加す
る。
ーダ7に与えられ、デコーダ7は、拡張共通鍵kc’を
解読し、該拡張共通鍵kc’が示す接続パターン(例え
ば、図12等のパターン)を実現するようにスイッチン
グ回路15に対するスイッチング制御を行う。これらの
動作は、復号時も同様である。
ようにしたが、その代わりに、使用しない拡大鍵の段数
を示す情報など、他の形態の情報を用いることも可能で
ある。
面で効果的である。
示すように、初段および最終段に擬アダマール変換のよ
うな補助関数を挿入するようにしてもよい。この場合
に、初段の補助関数と最終段の補助関数に同一の拡大鍵
(例えば、初段の拡大鍵)を用いるようにしてもよい。
なお、擬アダマール変換は、例えば、ブロック・データ
の左半分と右半分の算術加算を取ったものを新たな左半
分とし、この新たな左半分と右半分の算術加算を取った
ものを新たな右半分とするような処理が、これに該当す
る。
生成部の複数の拡大鍵変換部のバリエーションについて
説明する。
を示す。図19において、101は8ビットのS−bo
xであり、103はMDS(Maximum Dist
ance Separable;最大距離分離)行列に
基づく32ビットの攪拌部である。この例は、中間状態
の全部または一部として32×kビットのデータを入力
し、32×kビットの拡大鍵を出力するもので、4並列
のS−box101に攪拌部103を接続したものを1
単位として、これをk個分並列に設けたものである。
は、種々の構成が可能である。
(一般には最終段)の拡大鍵(の一部)が知られるおそ
れは完全には否定できない。かりに、ある段の拡大鍵が
知られてしまった場合、拡大鍵変換部の逆変換を行うこ
とで、その段の(ラウンド関数についての)中間状態を
知られてしまい、その結果として、他の段の中間状態す
べてが知られるところとなり、結局、すべての拡大鍵が
知られるところとなるおそれがある。そこで、一部(例
えば最終段を含む1段または数段)の拡大鍵変換部にお
いては、逆変換が容易でない関数(例えば、べき乗関
数)や、逆が一意に定まらない関数(例えば、多対一関
数)を用いるようにしてもよい。これによって、他の段
の拡大鍵を容易には知られないようにすることが可能に
なり、安全性を維持することができる。もちろん、全部
の拡大鍵変換部について、逆変換が容易でない関数や、
逆が一意に定まらない関数を用いるようにしてもよい。
間状態の全データを与えてもよいが、その代わりに、対
応する段の中間状態の一部のみを渡す構成にして、中間
状態の全データを知られないようにし、これによって安
全性を維持することもできる。
な攻撃では、ハードウェアで構成された暗号化装置に対
して、電力、電磁波等、ICカード等の装置から漏洩す
る情報をもとに鍵の推測を行う。特に、データ攪拌処理
におけるある回路において、同一の構成を有する複数の
回路部分があり、それらの回路への入力ビット列とその
回路で使用される鍵ビット列(拡大鍵自体または拡大鍵
の一部のデータ)が同一であったならば、サイドチャネ
ル情報(例えば、消費電流の変化)の同一性から、それ
ら回路について、入力されたビット列が同一であったこ
とが推測されてしまう。したがって、拡大鍵生成におい
ては、ICカード等で問題となるサイドチャネル解析が
容易となるような鍵を生成しないものが望まれる。
の入出力の一部が直接観測あるいは推定が可能な相異な
る処理要素(回路部分)において、同一の拡大鍵が使わ
れないような拡大鍵生成方法が有効である。
に、拡大鍵変換部、または拡大鍵変換部およびラウンド
処理部、またはラウンド処理部を設計し、偶然一致する
ことは許すようにしてもい。
に、拡大鍵変換部、または拡大鍵変換部およびラウンド
処理部、またはラウンド処理部を設計するとともに、共
通鍵の生成時に、全拡大鍵が異なるかどうかをチェック
し、全拡大鍵が異なると判定された場合にのみ、その共
通鍵を使用するようにしてもよい。
レベルが考えられる。例えば、2つの拡大鍵の全ビット
が同一のときに、一致したと判断するようにしてもよ
い。また、2つの拡大鍵の特定のバイト位置のデータが
同一のときには、一致したと判断するようにしてもよ
い。また、2つの拡大鍵の全ビット、または2つの拡大
鍵の特定のバイト位置のデータの間に、一定の関係があ
るときには、一致したと判断するようにしてもよい。こ
れらの他にも、種々の一致判定方法が可能である。
生成部の複数のラウンド処理部のバリエーションについ
て説明する。
例を示す。図20の例では、3段分示してあるが、各段
の構成が所定段数従属接続されることになる。また、図
20では、共通鍵が128ビットであり、各段の拡大鍵
は64ビットである場合を例示している。図中、105
は非線形写像Fであり、107の記号は排他的論理和を
示している。
いし、段ごとに異なっていてもよい。また、後者の場
合、基本的には、同じ構成を有するが、段に応じて異な
る定数に依存するものであってもよい。
暗号化側(または復号側)に用いることも可能である。
強力な解読法を用いても、最終段の拡大鍵のうち高々数
ビットを特定するのが限界であるから、ラウンド関数の
系列は、図20に示したような単純なFeistel構
造でも安全性に大きな問題は無いと考えられるが、も
し、より強力な解読法の出現に備えてより安全な構造を
望むならば、例えば図21に示すようなラウンド関数の
系列を用いてもよい。
段の構成が所定段数従属接続されることになる。また、
図21では、共通鍵が128ビットであり、各段の拡大
鍵は64ビットである場合を例示している。図中、10
9と111と113はそれぞれ非線形関数fとgとhを
示しており、115の記号は排他的論理和を示してい
る。非線形関数fとgとhは、すべて同一であっても、
すべて異なっても、それらのうち一部のもの同士のみ同
一でもよい。
を示す。図22において、119は8ビットのS−bo
xであり、121はMDS行列に基づく32ビットの攪
拌部である。
る128ビットから中間状態を一意に決定することがよ
り困難になっている。
図21と図23のいずれを暗号化側(または復号側)に
用いることも可能である。
一具体例を示す。
ット)のブロック暗号であり、共通鍵は256ビット
(128ビット)であり、1段の256ビット(128
ビット)である場合を例にとっている。また、ラウンド
関数の系列は、ラウンド・トリップ構成を有する場合を
例にとっている。また、通常のSPN構造のS−box
の部分に小型のSPN構造を再帰的に埋め込んだ入れ子
型SPN構造である場合を例にとっている。
ンド関数(DU)201とラウンド関数(DD)203
の繰り返し構造の後、ラウンド関数(DU)201とラ
ウンド関数(DD(woMDSH))205と、ラウン
ド関数(EXOR)207が接続されている。
とユニット211の対が1段分のラウンド関数に相当す
る。ただし、図24の例では、ユニット209とユニッ
ト209の間およびユニット211とユニット211の
間が図1の中間状態ではなく、中間状態はユニット20
9やユニット211の内部に現れる構造になっている。
場合における、図24のユニット201の構成例を示
す。図25において、215は鍵加算のための8ビット
の排他的論理和であり、217は8ビットのS−box
であり、219はMDS行列に基づく32ビットの攪拌
部である。213のユニットが4並列に設けられる。な
お、64ビットのブロック暗号の場合には、213のユ
ニットが2並列に設けられる。
場合における、図24のユニット202の構成例を示
す。図26において、221は鍵加算のための8ビット
の排他的論理和であり、223は16並列の8ビットの
S−boxであり、225はMDS行列に基づく128
ビットの攪拌部である。なお、64ビットのブロック暗
号の場合には、223のS−boxが8並列に設けられ
る。
場合における、図24のユニット205の構成例を示
す。図27において、227は鍵加算のための8ビット
の排他的論理和であり、229は16並列の8ビットの
S−boxである。なお、64ビットのブロック暗号の
場合には、229のS−boxが8並列に設けられる。
ク暗号の場合、ユニット205から出力される128ビ
ットのブロック・データに128ビットの拡大鍵を加算
するための排他的論理和である。また、ユニット207
は、64ビットのブロック暗号の場合、ユニット205
から出力される64ビットのブロック・データに64ビ
ットの拡大鍵を加算するための排他的論理和である。
トの場合における図24の拡大鍵生成部の構成例を示
す。図28では、初段部分と折り返し部分のみについて
示している。図中、231は非線形関数Fであり、23
3は排他的論理和であり、235は段に依って異なる定
数との排他的論理和である。237、239、241、
243のユニットについては後述する。
トの場合における図24の拡大鍵生成部の構成例を示
す。図29では、初段部分と折り返し部分のみについて
示している。図中、251は非線形関数Fであり、25
3は排他的論理和であり、255は段に依って異なる定
数との排他的論理和である。257、259、261、
263のユニットについては後述する。
成例を示す。図中、2311は排他的論理和であり、2
313はS−boxであり。2315、2317につい
ては後述する。
237、図29のP16と示されたユニット257、図
30のP16と示されたユニット2315、図30のP
8と示されたユニット2317について説明する。図3
1に、これらに共通する一般的な構成例を示す。図中、
265は排他的論理和であり、あるiビットと他のiビ
ットとの排他的論理和を取る操作が4回行われる。この
構成をPiで表現したものが、各図のP8、P16、P
32である。すなわち、図28のユニット237は図3
1の構成でi=32としたものであり、図29のユニッ
ト257は図31の構成でi=16としたものであり、
図30のユニット2315は図31の構成でi=16と
したものであり、図30のユニット2317は図31の
構成でi=8としたものである。
i-1の構成例を示す。図中、267は排他的論理和であ
る。図28のユニット243は図31の構成でi=32
としたものであり、図29のユニット263は図31の
構成でi=16としたものである。
暗号の場合であったが、64ビットのブロック暗号の場
合、すなわち図29の非線形関数251の場合には、図
30において、P8をP4にし、P16をP8にすれば
よい。
ット239/259、図29/図30のBと示されたユ
ニット241/261について説明する。図33に、5
と示されたユニットおよびBと示されたユニットの構成
例を示す。両者の違いは、図33のユニット269にお
ける関数の内容である。
元5、またはBを乗じるものである。
の8ビットに分け、8ビット・データの同じ位置(例え
ば図33では最上位ビットの最下位ビットを例にとって
示している)の1ビットを集めて、これを1組4ビット
のデータとし、8組の4ビット・データの各々を、GF
(24 )の元とみなす。そして、各々の4ビット・デー
タに対し各々のユニット269によって(ガロア体上の
乗算に従って)5またはBを乗じた後に、各々のビット
をそれぞれ対応するもとの位置に戻す。
出して処理を行うものとして説明したが、異なる位置の
ビットを(排他的に)取り出して処理を行うことも可能
である。
演算によっても、実回路によってもよい。
の構成例、すなわちGF(24 )上の乗算の結線表現
(結線パターン)を、元5について(a)に、元Bにつ
いて(b)にそれぞれ示す。なお、前述したように、結
合部分271では、排他的論理和がなされる。すなわ
ち、この場合、図28/図29の5と示されたユニット
239/259については、図33および図34(a)
によって構成可能であり、図29/図30のBと示され
たユニット241/261については、図33および図
34(b)によって構成可能である。
せる対象が既知あるいは比較的容易に推測可能な部分で
使用される拡大鍵、例えばデータ攪拌部の最初の排他的
論理和演算や、出力と鍵の推測からデータの推定が可能
となる最後の鍵加算の前の排他的論理和演算部への拡大
鍵において、異なる位置の演算要素単位(この例の場
合、8ビット単位)で拡大鍵が常に一致することや常に
一定の関係を持つことを防ぐようにすると好ましい。一
構成例としては、上記のデータ攪拌部の最初の排他的論
理和演算で使用される拡大鍵と、最後の鍵加算の前の排
他的論理和演算部への拡大鍵に要素単位(この例の場
合、8ビット単位)で常に成り立つ一致が発生しないよ
うに、拡大鍵を生成する(もしくは共通鍵を選択す
る)。これにより、サイドチャネル解析を容易ならしめ
る拡大鍵の一致や一定の関係の成立を妨ぐことができ
る。
は、データ攪拌部については図24のデータ攪拌部の逆
関数になる。また、拡大鍵生成部については、暗号側と
復号側ともに最終段のラウンド関数を備えた場合には、
図24の拡大鍵生成部と同様の構成になる。もちろん、
暗号側も復号側もそれぞれ最終段のラウンド関数を備え
なくてもよい。
てきた以上のような実施形態において、128ビット等
の特定のビット長を例にとったが、もちろん、どのよう
なビット長のブロックデータでも適用可能である。ま
た、データ攪拌部は、どのような構成であっても適用可
能である。
成、ソフトウェア構成について説明する。
ードウェアとしても、ソフトウェアとしても、実現可能
である。
合に、暗号化装置や復号装置を実現するプログラムであ
って、コンピュータに所定の手段を実行させるための
(あるいはコンピュータを所定の手段として機能させる
ための、あるいはコンピュータに所定の機能を実現させ
るための)プログラムを記録したコンピュータ読取り可
能な記録媒体としても実施することもできる。
半導体装置として形成することができる。
装置を構成する場合、あるいは暗号化プログラムや復号
プログラムを作成する場合に、ブロックもしくはモジュ
ールをすべて個別に作成することも可能であるが、同一
構成を有するブロックもしくはモジュールについては1
または適当数のみ用意しておいて、それをアルゴリズム
の各部分で共有する(使い回す)ことも可能である。
ロセッサを利用し、並列処理を行って、処理を高速化す
ることも可能である。
ない装置として構成することも、復号機能を持ち、暗号
化機能を持たない装置として構成することも、暗号化機
能と復号機能の両方を持つ装置として構成することも、
可能である。同様に、暗号化機能を持ち、復号機能を持
たないプログラムとして構成することも、復号機能を持
ち、暗号化機能を持たないプログラムとして構成するこ
とも、暗号化機能と復号機能の両方を持つプログラムと
して構成することも、可能である。
いて説明する。
ようなシステムにも適用可能である。
301と、受信側装置303との間で、所定の方法もし
くは手続により、鍵を安全に共有しておき、送信側装置
301は送信データをブロック長ごとに本実施形態の暗
号方式で暗号化し、所定のプロトコルに従って、通信ネ
ットワーク302を介して、暗号文を受信側装置303
へ送信し、暗号文を受信した受信側装置303では、受
信した暗号文をブロック長ごとに本実施形態の暗号方式
で復号し、もとの平文を得ることができる。なお、各々
の装置が、暗号化機能と復号機能を両方持っていれば、
双方向に暗号通信を行うことができる。
機311では、所定の方法で鍵を生成し、保存したいデ
ータをブロック長ごとに本実施形態の暗号方式で暗号化
し、所定のネットワーク(例えば、LAN、インターネ
ット等)314を介して、暗号化データとして、データ
・サーバ313に保存しておく。計算機311では、こ
のデータを読みたいときは、データ・サーバ313から
所望の暗号化データを読み込み、これをブロック長ごと
に本実施形態の暗号方式で復号し、もとの平文を得るこ
とができる。また、他の計算機312が、この鍵を知っ
ていれば、同様に復号してもとの平文を得ることができ
るが、鍵の分からない他の計算機は、該暗号データを復
号することはできず、情報のセキュリティ・コントロー
ルが可能になる。
テンツ提供側では、暗号化装置321により、あるコン
テンツを、ある鍵で、ブロック長ごとに本実施形態の暗
号方式で暗号化し、これを暗号化コンテンツとして、記
録媒体322に記録し、これを頒布等する。記録媒体3
22を取得したユーザ側では、所定の方法で該ある鍵を
入手することにより、復号装置323により、該コンテ
ンツを、ブロック長ごとに本実施形態の暗号方式で復号
し、コンテンツの閲覧もしくは再生等を行うことができ
る。
適用可能である。
一例であって、それ以外の構成を排除する趣旨のもので
はなく、例示した構成の一部を他のもので置き換えた
り、例示した構成の一部を省いたり、例示した構成に別
の機能を付加したり、それらを組み合わせたりすること
などによって得られる別の構成も可能である。また、例
示した構成と論理的に等価な別の構成、例示した構成と
論理的に等価な部分を含む別の構成、例示した構成の要
部と論理的に等価な別の構成なども可能である。また、
例示した構成と同一もしくは類似の目的を達成する別の
構成、例示した構成と同一もしくは類似の効果を奏する
別の構成なども可能である。また、各種構成部分につい
ての各種バリエーションは、適宜組み合わせて実施する
ことが可能である。また、本実施形態は、暗号化装置と
しての発明、復号化装置としての発明、システム全体と
しての発明、個別装置内部の構成部分についての発明、
またはそれらに対応する方法の発明等、種々の観点、段
階、概念またはカテゴリに係る発明を包含・内在するも
のである。従って、この発明の実施の形態に開示した内
容からは、例示した構成に限定されることなく発明を抽
出することができるものである。
るものではなく、その技術的範囲において種々変形して
実施することができる。
ウンド関数の系列を、共通鍵を入力し、共通鍵と同じ値
を出力するように設定することによって、暗号化時と復
号時の両方において、従来のような不必要な遅延時間や
記憶容量の消費なく、共通鍵からOn−the−fly
に拡大鍵を生成することが可能になる。
を示す図
めの図
めの図
めの図
めの図
めの図
めの図
めの図
示す図
す図
成例を示す図
例を示す図
成例を示す図
す図
示す図
例を示す図
トの構成例を示す図
ンド処理部の構成例を示す図
成例を示す図
図
図
H)の構成例を示す図
するための図
トを説明するための図
トを説明するための図
ニットを説明するための図
ニットを説明するための図
一例を示す図
他の例を示す図
さらに他の例を示す図
の図
の図
Claims (18)
- 【請求項1】暗号化時のデータ攪拌処理と復号時のデー
タ攪拌処理とで逆の順番で複数の拡大鍵を使用する共通
鍵暗号方式による暗号化装置であって、 複数段のラウンド関数について、初段では、共通鍵を入
力として所定のラウンド関数を施して中間状態を生成
し、2段目以降では、前段にて生成された中間状態を入
力として所定のラウンド関数を施して新たな中間状態を
生成するラウンド処理手段と、 前記ラウンド処理手段の全部又は一部の段にて生成され
た前記中間状態の各々について、該中間状態の全ビット
又はその一部をそのまま又はこれに所定の変換処理を施
した後に前記拡大鍵として出力するための出力手段とを
備え、 前記ラウンド処理手段は、複数のラウンド関数を従属接
続したラウンド関数系列であって前記共通鍵をその初段
へ入力した場合にその最終段が該共通鍵と同一の値を生
成するように設定されたラウンド関数系列における全段
又はそのうちの一部で初段から連続した複数段について
のラウンド関数を、該ラウンド関数系列の段の順番に従
って施すものであり、 前記ラウンド関数系列のうちの少なくとも1対のラウン
ド関数について、一方のラウンド関数を他方のラウンド
関数の逆関数になるように設定したことを特徴とする暗
号化装置。 - 【請求項2】前記ラウンド関数系列は、初段からの段数
と最終段からの段数とが一致する2つのラウンド関数を
互いに逆関数になるように設定したものであることを特
徴とする請求項1に記載の暗号化装置。 - 【請求項3】前記ラウンド関数系列は、少なくとも第1
の特定の段と第2の特定の段との間の連続する複数段に
ついて、該第1の特定の段からの段数と該第2の特定の
段からの段数とが一致する2つのラウンド関数を互いに
逆関数になるように設定した部分系列を含むものである
ことを特徴とする請求項1に記載の暗号化装置。 - 【請求項4】前記ラウンド関数系列は、少なくとも第1
の特定の段から段数増加方向へ特定段数隔てた段までの
連続する範囲と第2の特定の段から段数減少方向へ特定
段数隔てた段までの連続する範囲について、該第1の特
定の段からの段数と該第2の特定の段からの段数とが一
致する2つのラウンド関数を互いに逆関数になるように
設定した部分系列を含むものであることを特徴とする請
求項1に記載の暗号化装置。 - 【請求項5】前記出力手段は、前記拡大鍵の出力のため
に前記中間状態を用いる際に、該中間状態については、
その全ビットのうちから選択した当該中間状態を一意に
決定するには十分ではない部分のみを用いることを特徴
とする請求項1ないし4のいずれか1項に記載の暗号化
装置。 - 【請求項6】前記ラウンド処理手段により生成された中
間状態の一部を、前記出力手段へ接続するための接続手
段を更に備えたことを特徴とする請求項1ないし5のい
ずれか1項に記載の暗号化装置。 - 【請求項7】前記接続手段は、前記ラウンド関数系列に
属するラウンド関数のうち、その初段若しくは初段から
段数増加方向へ所定段数隔てた段までの連続する範囲、
及び又は最終段若しくは最終段から段数減少方向へ所定
段数隔てた段までの連続する範囲に属するラウンド関数
については、これに対応する中間状態を前記出力手段へ
接続しないことを特徴とする請求項6に記載の暗号化装
置。 - 【請求項8】前記接続手段は、前記ラウンド関数系列の
初段からの段数と最終段からの段数とが一致する2つの
ラウンド関数からなる対のそれぞれにつき、当該対に係
る2つのラウンド関数のうちのいずれか一方又は両方に
対応する中間状態を前記出力手段へ接続しないことを特
徴とする請求項6に記載の暗号化装置。 - 【請求項9】前記接続手段は、前記ラウンド関数系列の
初段若しくは初段から段数増加方向へ所定段数隔てた段
までの連続する範囲、及び又は最終段若しくは最終段か
ら段数減少方向へ所定段数隔てた段までの連続する範囲
においては、初段からの段数と最終段からの段数とが一
致する2つのラウンド関数からなる対のそれぞれにつ
き、当該対に係る2つのラウンド関数のうちのいずれか
一方又は両方に対応する中間状態を前記出力手段へ接続
しないことを特徴とする請求項6に記載の暗号化装置。 - 【請求項10】複数の前記拡大鍵のうちの任意のものが
常には一致しないようにしたことを特徴とする請求項1
ないし9のいずれか1項に記載の暗号化装置。 - 【請求項11】複数の前記拡大鍵のうちの任意のもの
が、それら拡大鍵の全ビットのうちの任意のビット群に
ついても、常には一致しないようにしたことを特徴とす
る請求項10に記載の暗号化装置。 - 【請求項12】前記ラウンド処理手段及び前記出力手段
は、前記データ攪拌処理に必要な拡大鍵数を越える数の
拡大鍵を、該データ攪拌処理に提供可能であり、 前記提供可能な拡大鍵のうち実際に前記データ攪拌処理
に提供すべき拡大鍵を示す情報、又は前記データ攪拌処
理に提供すべき拡大鍵及びその提供する順番を示す情報
を拡張共通鍵とし、 前記出力手段は、前記拡張共通鍵に従って、前記拡大鍵
を出力することを特徴とする請求項1ないし11のいず
れか1項に記載の暗号化装置。 - 【請求項13】暗号化時のデータ攪拌処理と復号時のデ
ータ攪拌処理とで逆の順番で複数の拡大鍵を使用する共
通鍵暗号方式による復号装置であって、 複数段のラウンド関数について、初段では、共通鍵を入
力として所定のラウンド関数を施して中間状態を生成
し、2段目以降では、前段にて生成された中間状態を入
力として所定のラウンド関数を施して新たな中間状態を
生成するラウンド処理手段と、 前記ラウンド処理手段の全部又は一部の段にて生成され
た前記中間状態の各々について、該中間状態の全ビット
又はその一部をそのまま又はこれに所定の変換処理を施
した後に前記拡大鍵として出力するための出力手段とを
備え、 前記ラウンド処理手段は、複数のラウンド関数を従属接
続したラウンド関数系列であって前記共通鍵をその初段
へ入力した場合にその最終段が該共通鍵と同一の値を生
成するように設定されたラウンド関数系列における全段
又はそのうちの一部で初段から連続した複数段について
のラウンド関数を、該ラウンド関数系列の段の順番に従
って施すものであり、 前記ラウンド関数系列のうちの少なくとも1対のラウン
ド関数について、一方のラウンド関数を他方のラウンド
関数の逆関数になるように設定したことを特徴とする復
号装置。 - 【請求項14】暗号化時のデータ攪拌処理と復号時のデ
ータ攪拌処理とで逆の順番で複数の拡大鍵を使用する共
通鍵暗号方式による暗号化装置又は復号装置に用いられ
る拡大鍵生成装置であって、 複数段のラウンド関数について、初段では、共通鍵を入
力として所定のラウンド関数を施して中間状態を生成
し、2段目以降では、前段にて生成された中間状態を入
力として所定のラウンド関数を施して新たな中間状態を
生成するラウンド処理手段と、 前記ラウンド処理手段の全部又は一部の段にて生成され
た前記中間状態の各々について、該中間状態の全ビット
又はその一部をそのまま又はこれに所定の変換処理を施
した後に前記拡大鍵として出力するための出力手段とを
備え、 前記ラウンド処理手段は、複数のラウンド関数を従属接
続したラウンド関数系列であって前記共通鍵をその初段
へ入力した場合にその最終段が該共通鍵と同一の値を生
成するように設定されたラウンド関数系列における全段
又はそのうちの一部で初段から連続した複数段について
のラウンド関数を、該ラウンド関数系列の段の順番に従
って施すものであり、 前記ラウンド関数系列のうちの少なくとも1対のラウン
ド関数について、一方のラウンド関数を他方のラウンド
関数の逆関数になるように設定したことを特徴とする拡
大鍵生成装置。 - 【請求項15】ラウンド処理手段及び出力手段を備え、
暗号化時のデータ攪拌処理と復号時のデータ攪拌処理と
で逆の順番で複数の拡大鍵を使用する共通鍵暗号方式に
よる暗号化装置のための拡大鍵生成方法であって、前記ラウンド処理手段により、 複数段のラウンド関数に
ついて、初段では、共通鍵を入力として所定のラウンド
関数を施して中間状態を生成し、2段目以降では、前段
にて生成された中間状態を入力として所定のラウンド関
数を施して新たな中間状態を生成する第1のステップ
と、前記出力手段により、 全部又は一部の段にて生成された
前記中間状態の各々について、該中間状態の全ビット又
はその一部をそのまま又はこれに所定の変換処理を施し
た後に前記拡大鍵として出力する第2のステップとを有
し、 前記第1のステップにおいて前記ラウンド処理手段によ
り前記中間状態を生成するにあたっては、複数のラウン
ド関数を従属接続したラウンド関数系列であって前記共
通鍵をその初段へ入力した場合にその最終段が該共通鍵
と同一の値を生成するように設定されたラウンド関数系
列における全段又はそのうちの一部で初段から連続した
複数段についてのラウンド関数を、該ラウンド関数系列
の段の順番に従って施すものであり、 前記ラウンド関数系列は、そのうちの少なくとも1対の
ラウンド関数について、一方のラウンド関数を他方のラ
ウンド関数の逆関数になるように設定されたものである
ことを特徴とする拡大鍵生成方法。 - 【請求項16】ラウンド処理手段及び出力手段を備え、
暗号化時のデータ攪拌処理と復号時のデータ攪拌処理と
で逆の順番で複数の拡大鍵を使用する共通鍵暗号方式に
よる復号装置のための拡大鍵生成方法であって、前記ラウンド処理手段により、 複数段のラウンド関数に
ついて、初段では、共通鍵を入力として所定のラウンド
関数を施して中間状態を生成し、2段目以降では、前段
にて生成された中間状態を入力として所定のラウンド関
数を施して新たな中間状態を生成する第1のステップ
と、前記出力手段により、 全部又は一部の段にて生成された
前記中間状態の各々について、該中間状態の全ビット又
はその一部をそのまま又はこれに所定の変換処理を施し
た後に前記拡大鍵として第2のステップとを有し、 前記第1のステップにおいて前記ラウンド処理手段によ
り前記中間状態を生成するにあたっては、複数のラウン
ド関数を従属接続したラウンド関数系列であって前記共
通鍵をその初段へ入力した場合にその最終段が該共通鍵
と同一の値を生成するように設定されたラウンド関数系
列における全段又はそのうちの一部で初段から連続した
複数段についてのラウンド関数を、該ラウンド関数系列
の段の順番に従って施すものであり、 前記ラウンド関数系列は、そのうちの少なくとも1対の
ラウンド関数について、一方のラウンド関数を他方のラ
ウンド関数の逆関数になるように設定されたものである
ことを特徴とする拡大鍵生成方法。 - 【請求項17】ラウンド処理手段及び出力手段を備え、
暗号化時のデータ攪拌処理と復号時のデータ攪拌処理と
で逆の順番で複数の拡大鍵を使用する共通鍵暗号方式に
よる暗号化装置としてコ ンピュータを機能させるための
プログラムを記録したコンピュータ読取り可能な記録媒
体において、前記プログラムは、 前記ラウンド処理手段により、 複数段のラウンド関数に
ついて、初段では、共通鍵を入力として所定のラウンド
関数を施して中間状態を生成し、2段目以降では、前段
にて生成された中間状態を入力として所定のラウンド関
数を施して新たな中間状態を生成する第1のステップ
と、前記出力手段により、 全部又は一部の段にて生成された
前記中間状態の各々について、該中間状態の全ビット又
はその一部をそのまま又はこれに所定の変換処理を施し
た後に前記拡大鍵として出力するための第2のステップ
とをコンピュータに実行させるとともに、 前記第1のステップにおいて前記ラウンド処理手段によ
り前記中間状態を生成するにあたっては、複数のラウン
ド関数を従属接続したラウンド関数系列であって前記共
通鍵をその初段へ入力した場合にその最終段が該共通鍵
と同一の値を生成するように設定されたラウンド関数系
列における全段又はそのうちの一部で初段から連続した
複数段についてのラウンド関数を、該ラウンド関数系列
の段の順番に従って施させるものであり、 前記ラウンド関数系列のうちの少なくとも1対のラウン
ド関数について、一方のラウンド関数を他方のラウンド
関数の逆関数になるように設定されたものであることを
特徴とするプログラムを記録したコンピュータ読取り可
能な記録媒体。 - 【請求項18】ラウンド処理手段及び出力手段を備え、
暗号化時のデータ攪拌処理と復号時のデータ攪拌処理と
で逆の順番で複数の拡大鍵を使用する共通鍵暗号方式に
よる復号装置としてコンピュータを機能させるためのプ
ログラムを記録したコンピュータ読取り可能な記録媒体
において、前記プログラムは、 前記ラウンド処理手段により、 複数段のラウンド関数に
ついて、初段では、共通鍵を入力として所定のラウンド
関数を施して中間状態を生成し、2段目以降では、前段
にて生成された中間状態を入力として所定のラウンド関
数を施して新たな中間状態を生成する第1のステップ
と、前記出力手段により、 全部又は一部の段にて生成された
前記中間状態の各々について、該中間状態の全ビット又
はその一部をそのまま又はこれに所定の変換処理を施し
た後に前記拡大鍵として出力するための第2のステップ
とをコンピュータに実行させるとともに、 前記第1のステップにおいて前記ラウンド処理手段によ
り前記中間状態を生成するにあたっては、複数のラウン
ド関数を従属接続したラウンド関数系列であって前記共
通鍵をその初段へ入力した場合にその最終段が該共通鍵
と同一の値を生成するように設定されたラウンド関数系
列における全段又はそのうちの一部で初段から連続した
複数段についてのラウンド関数を、該ラウンド関数系列
の段の順番に従って施させるものであり、 前記ラウンド関数系列のうちの少なくとも1対のラウン
ド関数について、一方のラウンド関数を他方のラウンド
関数の逆関数になるように設定されたものであることを
特徴とするプログラムを記録したコンピュータ読取り可
能な記録媒体。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000211686A JP3505482B2 (ja) | 2000-07-12 | 2000-07-12 | 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 |
KR10-2001-0041607A KR100435052B1 (ko) | 2000-07-12 | 2001-07-11 | 암호화장치 |
DE60125651T DE60125651D1 (de) | 2000-07-12 | 2001-07-11 | Verschlüsselungsvorrichtung, Entschlüsselungsvorrichtung, Vorrichtung zur Erzeugung eines erweiterten Schlüssels und zugehöriges Verfahren und Aufzeichnungsmedium |
EP01305982A EP1172965B1 (en) | 2000-07-12 | 2001-07-11 | Encryption apparatus, decryption apparatus, expanded key generating apparatus and method therefor, and recording medium |
CNB011431539A CN1203431C (zh) | 2000-07-12 | 2001-07-12 | 公用密钥加密装置 |
US09/902,696 US7194090B2 (en) | 2000-07-12 | 2001-07-12 | Encryption apparatus, decryption apparatus, expanded key generating apparatus and method therefor, and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000211686A JP3505482B2 (ja) | 2000-07-12 | 2000-07-12 | 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002023622A JP2002023622A (ja) | 2002-01-23 |
JP3505482B2 true JP3505482B2 (ja) | 2004-03-08 |
JP2002023622A5 JP2002023622A5 (ja) | 2004-09-24 |
Family
ID=18707748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000211686A Expired - Lifetime JP3505482B2 (ja) | 2000-07-12 | 2000-07-12 | 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7194090B2 (ja) |
EP (1) | EP1172965B1 (ja) |
JP (1) | JP3505482B2 (ja) |
KR (1) | KR100435052B1 (ja) |
CN (1) | CN1203431C (ja) |
DE (1) | DE60125651D1 (ja) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7305085B2 (en) * | 2000-06-30 | 2007-12-04 | Kabushiki Kaisha Toshiba | Encryption apparatus and method, and decryption apparatus and method based on block encryption |
US7269615B2 (en) | 2001-12-18 | 2007-09-11 | Analog Devices, Inc. | Reconfigurable input Galois field linear transformer system |
US7283628B2 (en) * | 2001-11-30 | 2007-10-16 | Analog Devices, Inc. | Programmable data encryption engine |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
US7076059B1 (en) * | 2002-01-17 | 2006-07-11 | Cavium Networks | Method and apparatus to implement the data encryption standard algorithm |
JP4515716B2 (ja) * | 2002-04-03 | 2010-08-04 | パナソニック株式会社 | 拡大鍵生成装置、暗号化装置および暗号化システム |
DE60301750T2 (de) * | 2002-04-03 | 2006-07-06 | Matsushita Electric Industrial Co., Ltd., Kadoma | Vorrichtung zur Erzeugung eines erweiterten Schlüssels, Verschlüsselungsvorrichtung und Verschlüsselungssystem |
US20040136537A1 (en) * | 2002-07-19 | 2004-07-15 | Hammersmith Wolfgang S. | Cryptographic key distribution using key unfolding |
JP2004054834A (ja) * | 2002-07-24 | 2004-02-19 | Matsushita Electric Ind Co Ltd | プログラム開発方法、プログラム開発支援装置およびプログラム実装方法 |
KR100940202B1 (ko) * | 2002-08-29 | 2010-02-10 | 삼성전자주식회사 | 일방향 함수를 사용하여 계층적으로 암호화하는 장치 및방법 |
JP4099039B2 (ja) * | 2002-11-15 | 2008-06-11 | 松下電器産業株式会社 | プログラム更新方法 |
US7702904B2 (en) | 2002-11-15 | 2010-04-20 | Nec Corporation | Key management system and multicast delivery system using the same |
JP2004212828A (ja) * | 2003-01-08 | 2004-07-29 | Sony Corp | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
US7227955B2 (en) * | 2003-02-07 | 2007-06-05 | Magiq Technologies, Inc. | Single-photon watch dog detector for folded quantum key distribution system |
US7529368B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US7542566B2 (en) | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7519833B2 (en) * | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US7392400B2 (en) * | 2003-04-18 | 2008-06-24 | Via Technologies, Inc. | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
US7900055B2 (en) | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US8060755B2 (en) * | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US7529367B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
US7532722B2 (en) * | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7536560B2 (en) * | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7844053B2 (en) * | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7539876B2 (en) * | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7502943B2 (en) * | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US10572824B2 (en) | 2003-05-23 | 2020-02-25 | Ip Reservoir, Llc | System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines |
JP2006526227A (ja) | 2003-05-23 | 2006-11-16 | ワシントン ユニヴァーシティー | Fpgaデバイスを使用するインテリジェントデータ記憶および処理 |
WO2004112308A1 (en) * | 2003-06-12 | 2004-12-23 | Philips Intellectual Property & Standards Gmbh | Processor for encrypting and/or decrypting data and method of encrypting and/or decrypting data using such a processor |
JP4622222B2 (ja) | 2003-09-30 | 2011-02-02 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
KR100800468B1 (ko) * | 2004-01-29 | 2008-02-01 | 삼성전자주식회사 | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 |
JP2005340892A (ja) * | 2004-05-24 | 2005-12-08 | Matsushita Electric Ind Co Ltd | 暗号回路 |
JP4561252B2 (ja) * | 2004-09-03 | 2010-10-13 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
US7873166B2 (en) * | 2005-09-13 | 2011-01-18 | Avaya Inc. | Method for undetectably impeding key strength of encryption usage for products exported outside the U.S |
US8379841B2 (en) | 2006-03-23 | 2013-02-19 | Exegy Incorporated | Method and system for high throughput blockwise independent encryption/decryption |
US20080037775A1 (en) * | 2006-03-31 | 2008-02-14 | Avaya Technology Llc | Verifiable generation of weak symmetric keys for strong algorithms |
JP4961909B2 (ja) * | 2006-09-01 | 2012-06-27 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
WO2008031205A1 (en) * | 2006-09-13 | 2008-03-20 | Elliptic Semiconductor Inc. | Multiple sequential security key encryption - decryption |
JP4939305B2 (ja) * | 2007-05-25 | 2012-05-23 | ルネサスエレクトロニクス株式会社 | 暗号/復号装置 |
KR101437962B1 (ko) * | 2007-06-26 | 2014-09-15 | 삼성전자주식회사 | 데이터 처리 장치 및 데이터 처리 방법 |
EP2186250B1 (en) * | 2007-08-31 | 2019-03-27 | IP Reservoir, LLC | Method and apparatus for hardware-accelerated encryption/decryption |
KR101131167B1 (ko) | 2008-02-20 | 2012-04-12 | 연세대학교 산학협력단 | 스트림 암호를 위한 키수열 발생 방법 및 장치. 블록 암호를 위한 S-box 및 상기 S-box에서의 치환 방법 |
JP5163178B2 (ja) * | 2008-02-25 | 2013-03-13 | 沖電気工業株式会社 | 暗号化鍵生成装置及び方法 |
CN101714904B (zh) * | 2008-10-08 | 2012-05-09 | 中兴通讯股份有限公司 | 密钥管理系统和方法 |
US20100246828A1 (en) * | 2009-03-30 | 2010-09-30 | David Johnston | Method and system of parallelized data decryption and key generation |
MY145989A (en) * | 2009-06-29 | 2012-06-04 | Mimos Berhad | A polymorphic cipher |
CN103188219A (zh) * | 2011-12-28 | 2013-07-03 | 北大方正集团有限公司 | 一种数字版权管理方法、设备及系统 |
EP2677327A1 (en) * | 2012-06-21 | 2013-12-25 | Gemalto SA | Method for producing an electronic device with a disabled sensitive mode, and method for transforming such an electronic device to re-activate its sensitive mode |
JP2015191107A (ja) * | 2014-03-28 | 2015-11-02 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにプログラム |
JP6877889B2 (ja) * | 2016-04-08 | 2021-05-26 | ソニーグループ株式会社 | 暗号化装置、暗号化方法、復号化装置、及び復号化方法 |
WO2018119035A1 (en) | 2016-12-22 | 2018-06-28 | Ip Reservoir, Llc | Pipelines for hardware-accelerated machine learning |
JP7296609B2 (ja) * | 2017-11-14 | 2023-06-23 | 地方独立行政法人東京都立産業技術研究センター | デジタル処理装置、デジタル処理装置の製造方法及びプログラム |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3114991B2 (ja) * | 1990-11-30 | 2000-12-04 | 株式会社東芝 | データ通信システム |
US5432848A (en) * | 1994-04-15 | 1995-07-11 | International Business Machines Corporation | DES encryption and decryption unit with error checking |
US5724428A (en) * | 1995-11-01 | 1998-03-03 | Rsa Data Security, Inc. | Block encryption algorithm with data-dependent rotations |
CA2164768C (en) * | 1995-12-08 | 2001-01-23 | Carlisle Michael Adams | Constructing symmetric ciphers using the cast design procedure |
KR0153758B1 (ko) * | 1995-12-26 | 1998-11-16 | 양승택 | 입출력 변화 공격과 선형 공격에 안전한 대치회로 생성기 및 생성방법 |
CA2173688C (en) * | 1996-04-09 | 2000-01-18 | Hideo Shimizu | Encryption apparatus and method capable of controlling encryption process in accordance with an internal state |
US5745577A (en) * | 1996-07-25 | 1998-04-28 | Northern Telecom Limited | Symmetric cryptographic system for data encryption |
US5933501A (en) * | 1996-08-01 | 1999-08-03 | Harris Corporation | `Virtual` encryption scheme combining different encryption operators into compound-encryption mechanism |
KR19980027399A (ko) * | 1996-10-16 | 1998-07-15 | 구자홍 | 셀룰라 오토마타를 이용한 블록 암호화 방법 및 장치 |
JP3782210B2 (ja) * | 1997-06-30 | 2006-06-07 | 日本電信電話株式会社 | 暗号装置 |
EP1016240A1 (en) * | 1997-09-17 | 2000-07-05 | Frank C. Luyster | Improved block cipher method |
US6243470B1 (en) * | 1998-02-04 | 2001-06-05 | International Business Machines Corporation | Method and apparatus for advanced symmetric key block cipher with variable length key and block |
US6185679B1 (en) * | 1998-02-23 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks |
US6189095B1 (en) * | 1998-06-05 | 2001-02-13 | International Business Machines Corporation | Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks |
JP2000066586A (ja) * | 1998-08-24 | 2000-03-03 | Toshiba Corp | データ処理装置及び通信システム並びに記録媒体 |
JP4763866B2 (ja) | 1998-10-15 | 2011-08-31 | インターシア ソフトウェア エルエルシー | 2重再暗号化によりデジタルデータを保護する方法及び装置 |
-
2000
- 2000-07-12 JP JP2000211686A patent/JP3505482B2/ja not_active Expired - Lifetime
-
2001
- 2001-07-11 EP EP01305982A patent/EP1172965B1/en not_active Expired - Lifetime
- 2001-07-11 DE DE60125651T patent/DE60125651D1/de not_active Expired - Lifetime
- 2001-07-11 KR KR10-2001-0041607A patent/KR100435052B1/ko not_active IP Right Cessation
- 2001-07-12 US US09/902,696 patent/US7194090B2/en not_active Expired - Fee Related
- 2001-07-12 CN CNB011431539A patent/CN1203431C/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
128ビットブロック暗号Camellia,電子情報通信学会研究報告,2000年 5月18日,Vol.100, No.76,p.47−75 |
Key Schedules of Iterative Block Ciphers,Lecture Notes in Computer Science,Vol.1438,p.80−89 |
ブロック暗号Hierocryptの仕様と評価,電子情報通信学会研究報告,2000年 5月18日,Vol.100, No.76,p.77−104 |
入れ子型SPN構造について,電子情報通信学会研究報告,2000年 3月17日,Vol.99, No.702,p.99−104 |
Also Published As
Publication number | Publication date |
---|---|
CN1349182A (zh) | 2002-05-15 |
KR20020006475A (ko) | 2002-01-19 |
US7194090B2 (en) | 2007-03-20 |
US20020021802A1 (en) | 2002-02-21 |
EP1172965A2 (en) | 2002-01-16 |
EP1172965A3 (en) | 2003-06-18 |
DE60125651D1 (de) | 2007-02-15 |
KR100435052B1 (ko) | 2004-06-09 |
JP2002023622A (ja) | 2002-01-23 |
EP1172965B1 (en) | 2007-01-03 |
CN1203431C (zh) | 2005-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3505482B2 (ja) | 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体 | |
US5745577A (en) | Symmetric cryptographic system for data encryption | |
Brown et al. | Improving resistance to differential cryptanalysis and the redesign of LOKI | |
EP0839418B1 (en) | Cryptographic method and apparatus for non-linearly merging a data block and a key | |
US8290148B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
US20080080709A1 (en) | Method for encrypting information and device for realization of the method | |
Rahim et al. | Cryptography technique with modular multiplication block cipher and playfair cipher | |
JPH0863097A (ja) | データを暗号化するための対称暗号化方法およびシステム | |
US20080304664A1 (en) | System and a method for securing information | |
Alabdulrazzaq et al. | Performance Analysis and Evaluation of Cryptographic Algorithms: DES, 3DES, Blowfish, Twofish, and Threefish | |
Mahendran et al. | Generation of key matrix for hill cipher encryption using classical cipher | |
JP2000066587A (ja) | データ処理装置及び通信システム並びに記録媒体 | |
Al-Omari | Lightweight Dynamic Crypto Algorithm for Next Internet Generation. | |
JP5617845B2 (ja) | 暗号化装置、暗号化方法及びプログラム | |
JP6052166B2 (ja) | 暗号化方法、暗号化装置および暗号化プログラム | |
Bhowmik et al. | A symmetric key based secret data sharing scheme | |
JPH09269727A (ja) | 暗号化方法および暗号化装置 | |
Kothandan | Modified Blowfish Algorithm to Enhance its Performance and Security | |
Lee et al. | A weak key class of XTEA for a related-key rectangle attack | |
Bajaj et al. | Enhancement of RC5 for image encryption | |
KR100200531B1 (ko) | 암호화 방법 및 시스템 | |
Chandu et al. | Implementation of AES Algorithm using Dynamic S-box on FPGA | |
Morin | A critique of BEAR and LION | |
KR100380638B1 (ko) | 병렬 Feistel 구조를 가진 데이터 암호 표준화시스템 | |
El-Nahas | Hyperchaotic Chen System Based Audio Signal Encryption |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20031125 |
|
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: 20031209 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20031215 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3505482 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071219 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081219 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091219 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091219 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101219 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111219 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121219 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121219 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131219 Year of fee payment: 10 |
|
EXPY | Cancellation because of completion of term |