JPH0651698A - データ攪拌装置およびデータ攪拌方法 - Google Patents

データ攪拌装置およびデータ攪拌方法

Info

Publication number
JPH0651698A
JPH0651698A JP5004341A JP434193A JPH0651698A JP H0651698 A JPH0651698 A JP H0651698A JP 5004341 A JP5004341 A JP 5004341A JP 434193 A JP434193 A JP 434193A JP H0651698 A JPH0651698 A JP H0651698A
Authority
JP
Japan
Prior art keywords
data
input
bit
key
agitation
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.)
Pending
Application number
JP5004341A
Other languages
English (en)
Inventor
Shoji Miyaguchi
庄司 宮口
Hikari Morita
光 森田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP5004341A priority Critical patent/JPH0651698A/ja
Publication of JPH0651698A publication Critical patent/JPH0651698A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 DES型暗号において差分攻撃を排除する。 【構成】 48ビットのサブ鍵は32ビットと16ビッ
トに分割され、その16ビットは4ビットづつに分割さ
れてデータ回転関数手段2−1〜2−4にパラメータと
して与えられる。その4ビットはパラメータとして、3
2ビットデータR i-1 をデータ回転関数手段2−1〜2
−4でそれぞれ一斉にその各パラメータだけ左回転され
る。回転関数手段2−1,2−3の各出力はG関数手段
3−1,3−2で前記36ビットデータで混ぜ合わされ
て攪拌され、データ回転関数手段2−3,2−4の出力
はG関数手段3−3,3−4でそれぞれデータ攪拌さ
れ、G関数手段3−1〜3−4の各出力は排他的論理和
手段4でビット対応ごとに排他的論理和演算されて、拡
散データとして出力される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、暗号化、復号化に用
いられ、入力データを鍵データで攪拌するデータ攪拌装
置及びデータ攪拌方法に関する。
【0002】
【従来の技術】
(DES型暗号)最初にこの発明と関係するDES型暗
号について説明する。DES型暗号装置は図14に示す
ように鍵処理部50と、暗号化処理部51とよりなり、
暗号化処理部51は左レジスタ52,54,56,5
8,60、右レジスタは53,55,57,59,6
1、DES型暗号のデータ攪拌装置63−1,63−
2,63−3、ビット対応の排他的論理和回路64−
1,64−2,64−3を備える。L,Rはそれぞれレ
ジスタ内の処理されるデータブロックの左32ビット,
右32ビットをそれぞれ示し、L,Rの右下の添字は処
理の段階を表す。最初に、鍵処理部50の動作について
説明する。
【0003】鍵処理部50が暗号化を行うときには64
ビットの鍵データブロックKを入力し、鍵処理部50の
中で鍵Kを攪拌し、端子66−1〜66−3にそれぞ
れ、サブ鍵K1 〜K16をこの順序に出力し、復号化を行
うときには端子66−1〜66−3からそれぞれ、サブ
鍵の順序を暗号化の場合と逆に、すなわち、K16〜K1
をこの順序に出力する。
【0004】次に、暗号化処理部51の動作について説
明する。先ず、64ビットの平文データブロックPを左
右32ビットずつのL0 ,R0に分け、それぞれ左レジ
スタ52と右レジスタ53に格納する。そして、右半分
のデータブロックR0 にサブ鍵K1 を用いてデータ攪拌
装置63−1でデータ攪拌を施こし、このデータブロッ
クと左半分L0 のデータブロックとを、排他的論理和回
路64−1で排他的論理和をとり、その結果を新しく右
半分のデータブロックR1 とし、右レジスタ55に格納
する。また、最初の右半分のデータブロックR0 を新し
く左半分のデータブロックL1 として左レジスタ54に
格納する。このような処理を16回繰り返し行い、左デ
ータブロックL16を左レジスタ58に格納し、右データ
ブロックR16を右レジスタ59に格納する。最後に、左
半分と右半分のデータブロックを入れ換えて、すなわ
ち、左レジスタ60に右データブロックR16を格納し、
右レジスタ61に左データブロックL16を格納し、両デ
ータブロックR16とL16を並べて得られる64ビットの
データブロックを暗号文データブロックCとして出力す
る。
【0005】以上は、暗号化処理部51を用いて、平文
Pを暗号化し、暗号文Cを得る処理の説明であった。こ
の暗号化処理において、入力を暗号文Cとし、サブ鍵の
順序を逆に、すなわち、端子66−1からサブ鍵K16
出力し、端子66−2からサブ鍵K15を出力し、以下同
じようにして端子66−3からサブ鍵K1 を出力する
と、レジスタ52〜61、データ攪拌装置の63−1〜
63−3と、排他的論理和回路64−1〜64−3等、
これら全てを処理する方法は、暗号化処理と同じにした
まま復号化処理が行える。すなわち、暗号文Cを入力し
て、平文Pが復元して出力する。
【0006】以上に述べた暗号化処理と復号化処理を数
式を用いて補足説明する。最初に、暗号化処理を説明す
る。入力した64ビット長の平文Pは32ビットずつ2
等分して左データブロックをL0 ,右データブロックを
0 とする。L0 はレジスタ52に、またR0 はレジス
タ53にそれぞれ記憶する。次に、データ攪拌装置63
−1と排他的論理和回路64−1を経て、レジスタ55
に右データブロックR1 が記憶され、レジスタ54に左
データブロックL1 が記憶される。L1 とR1 は、次式
で与えられる。 L1 =R01 =L0 (+) F(R0 ,K1 ) ここで、(+) は排他的論理和を示し、Fはデータ攪拌装
置の機能を関数として表したものである。
【0007】以下、同じようにして、Li とRi が次の
通り求められる。 Li =Ri-1i =Li-1 (+) F(Ri-1 ,Ki ) ただし、i=1,2,…16である。レジスタ58に左
データブロックL16が、レジスタ59に右データブロッ
クR 16が、それぞれ記憶される。
【0008】次に、L16とR16を交換し、レジスタ60
に左データブロックR16が、レジスタ61に右データブ
ロックL16がそれぞれ記憶される。R16とL16を結合し
て得られる64ビットデータブロックを、暗号文Cとす
る。すなわち、 C=R16‖L16 次に、復号化処理を説明する。
【0009】入力した64ビット長の暗号文C=R16
16は,32ビットずつ2等分し、左データブロックを
16、右データブロックをL16とする。R16はレジスタ
52に、またL16はレジスタ53にそれぞれ記憶する。
次に、データ攪拌装置63−1と排他的論理和回路64
−1を経て、レジスタ55に右データブロックL15が記
憶され、レジスタ54に左データブロックR15が記憶さ
れる。R15とL15は、次式で与えられる。 R15=L1615=R16(+) F(L16,K16) 以下、同じようにして、Ri とLi が次の通り求められ
る。 Ri-1 =Lii-1 =Ri (+) F(Li ,Ki ) ただし,i=16,15,…1である。
【0010】レジスタ58に左データブロックR0 が、
レジスタ59に右データブロックL 0 が、それぞれ記憶
される。次に、R0 とL0 を交換し、レジスタ60に左
データブロックL0 が、レジスタ61に右データブロッ
クR0 がそれぞれ記憶される。L0 とR0 を結合して得
られる64ビットデータブロックを、平文Pとする。す
なわち、 P=L0 ‖R0 (転置と換字)DES型暗号において、暗号化や復号化
の処理の為に使われる転置(パーミュテーション)と換
字(サブステチューション)について、説明しておく。
転置と換字とも、データブロックAを入力し、データブ
ロックBを出力する。なお、データブロックA,B,の
内部のビットは、Ai,Bi,とビット番号を付与して
表す。ただし、ビット番号はブロックの左から右側へ
1,2,…,と昇順に付与する。
【0011】転置は、入力ブロックAの個々の1ビット
が、出力ブロックBの個々の1ビットとして出力され
る。すなわち、Bj=Aiである。転置は、結線論理と
も言う。転置は、入力ブロックAのビット長と、出力ブ
ロックBのビット長とが同じものと、異なるものとがあ
る。出力ブロックBのビット長が長いものは、入力のい
くつかのビットが分岐して、複数の出力ビットとして出
力される。このような転置は拡大転置という。拡大転置
は、暗号DESのデータ攪拌装置の要素として使われ
る。
【0012】換字は入力ブロックAを、他のブロックB
に置き換える機能を持つ。換字は、例えば読みとり専用
メモリ(ROM)により、次のように実現される。すな
わち、入力ブロック内部のビット系列を2進の非負値整
数で表し、これをメモリに付与された番地とみなし、こ
の番地に、出力ブロックBの値とするビットデータを書
き込んでおく。換字の出力の各1ビットは、入力の複数
のビットの影響を受けてその値が定まる。 (データ攪拌装置)DES暗号で使われているデータ攪
拌装置のブロック図を図15に示す。データ攪拌装置6
3は拡大転置部70,排他的論理和回路71,換字処理
部72,転置処理部73が縦続的に設けられ、右データ
i-1 が入力データ線74に、サブ鍵Ki が入力データ
線75にそれぞれ入力されて拡大転置部70,排他的論
理和回路75に供給される。データ攪拌装置63の出力
は出力データ線76に出力され、48ビットデータを伝
えるデータ線77と78で拡大転置部70,排他的論理
和回路71、換字処理部72が順次接続され、32ビッ
トデータを伝えるデータ線79で換字処理部72が転置
処理部73に接続される。
【0013】データ攪拌装置63はデータ線74から3
2ビットの右データRi-1 を入力し、データ線75から
48ビットのサブ鍵Ki を入力し,右データRi-1 は拡
大転置部70で48ビットに拡大されてデータ線77に
出力され、データ線75と77上の48ビットデータ
は、排他的論理和回路71でビット対応の排他的論理和
演算が施され、その48ビットの出力はデータ線78を
経由して、換字処理部72に入力され、その換字の処理
結果の32ビットデータがデータ線79に出力され、次
に転置処理73で転置が施こされ、その処理結果の32
ビットデータがデータ線76上にデータ攪拌装置63の
出力データとして出力される。
【0014】以上述べたデータ攪拌装置63の動作を要
約すると、データ攪拌装置63は右データRi-1 とサブ
鍵Kiとを入力し、データ攪拌装置63の内部で、右デ
ータRi-1 とサブ鍵Kiとは排他的論理和で結合し、ま
た、転置と換字を用いてデータ攪拌し、その処理結果を
出力する。 (ブロックの差分)次に、この発明の対象とする課題で
ある差分暗号攻撃について説明する。まず差分の意味を
説明する。
【0015】2つのデータブロックxとx* があり、こ
れら2つのブロックの1ビット毎の排他的論理和演算の
結果、得られるブロック、即ちx′=x(+) x* をブロ
ックxとx* の差分、または差分ブロックという。(+)
は排他的論理和を表す。 (差分の通過)ある関数y=g(x)において、適当に
選んだ2対の入力ブロック、x1 とx1 * ,x2 とx2
* に対して、それぞれの出力ブロックy1 とy1 * ,y
2 とy2 * が得られ、但しyj =g(xj ),y* j
g(x* j ),j=1,2、これらの差分の間に、x′
=x1 (+) x1 * =x2 (+) x2 * 、かつ,y1 (+)y
1 * =y2 (+) y2 * が成立するとき、差分x′は関数
gを通過するという。
【0016】更に、多数のデータブロックx1
1 * ,x2 ,x2 * について、確率pでこの関係が成
り立つとき、すなわち、x′=x1 (+) x1 * =x
2 (+) x2 * かつ、y1 (+) y1 * =y2 (+) y2 *
確率pで成り立つとき、差分x′は確率pで関数gを通
過するという。この確率pを差分x′が関数gを通過す
る確率という。 (データ攪拌装置への差分の通過の例)DES型暗号の
データ攪拌装置への差分x′の通過する例は無数あり、
例を次に示す。ここで、x′=x(+) x* はデータ攪拌
装置への32ビットの入力の差分を、y′=y(+) y*
はデータ攪拌装置から出力される32ビットの差分を、
確率pは差分x′がデータ攪拌装置を通過する確率をそ
れぞれ表す。x′とy′は16進数で表す。 x′=x(+) x* =04000000,y′=y(+) y* =4080
0000,確率p=1/4 x′=x(+) x* =00000400,y′=y(+) y* =0020
0008,確率p=1/4 x′=x(+) x* =00540000,y′=y(+) y* =0400
0000,確率p=160/4096 (DES型暗号への差分暗号攻撃法)差分暗号攻撃法
は、暗号に多数の平文PとP* を入力し、暗号化の結果
得られる多数の暗号文CとC* を用いて、暗号化に用い
た鍵を算出する暗号攻撃方法である。ここで、平文の差
分は、X′=P(+) P* 、暗号文の差分は、C′=C
(+) C* とする。次に、この発明の説明のために必要と
なる、差分暗号攻撃法の主要部分を数値例を含めて説明
する。 (差分攻撃のステップ1) データ攪拌装置63の内部
のデータの流れを詳細に解析し、差分通過確率pi が大
きな差分入力X′i-1 =(Li-1 ‖Ri-1 )′を見出
す。特に、差分出力X′i =(Li ‖Ri )′が、次段
の差分入力となる差分系列X′i (i=0,1,2, ……,16
)を見出す。
【0017】差分の例を次に示す。ここで、差分は64
ビットとし、16進数により表示した。第1段の処理で
は、(L0 ‖R0 )′= 4080 0400 0400 0010,p1
-2となり、第2段の処理では、(L1 ‖R1 )′= 0
200 0008 0000 0100,p2 =2-2となり、第3段の処理
では(L2 ‖R2 )′=0000 0400 0600 0008,p3 =2
-2となり、以下同様に繰り返して、第16段の処理で
は、(L16‖R16)′=0002 0010 0000 0000,p16
-2となる。ただし、この例では、pi =2-2である。 (差分攻撃のステップ2) 暗号化のための処理が第1
段から第16段まで16回連続して繰り返されるとき、
最終差分出力X16′が出力される確率は、全ての差分の
通過確率pi の積p,p=p1 ・p2 ・…p16
(2-216=2-32 により求められる。 (差分攻撃のステップ3) 多数の平文の対XとX*
ただし、X0 ′=X(+)X* 、を平文として入力し、予
定の最終差分出力X16′を探す。平均して1/p=232
の平文の対XとX* を入力すると、差分出力X16′が求
められる。このとき全ての差分Xi ′も同時に求められ
る。 (差分攻撃のステップ4) 差分系列Xi ′を用いて、
各段階に入力している個別のサブ鍵(Ki )を算出す
る。なお、サブ鍵の求め方は個々の暗号によって異なる
ものであり、またこの発明の説明に直接関係しないので
説明しない。 (差分攻撃の対策)DESやFEALなどの暗号は、暗
号文の生成手順を秘密にしない手順公開暗号である。従
って、暗号を攻撃しようとする者は、手順公開暗号の内
容、特にデータ攪拌装置について、その内部の構造を詳
細に解析し、差分通過確率pi が大きな差分入力
i-1 ′を見出せる機会を持つ。この理由から、差分攻
撃が完全に避けられる暗号、特に暗号のデータ攪拌装置
の開発が必要である。 (ある論文との関係)次の論文速報誌に、差分攻撃の対
策に関する論文が掲載されており、この発明との関係を
説明する。 Information Processing Letters 41 (1992), Vol 41,
No.2, pp.77-80, 14 Febuary 1992,On immunity agains
t Biham and Shamir's“differential cryptanalysis” (Biham-Shamirの差分暗号攻撃に対する免疫)この論文
は、手順公開型の秘密鍵暗号の要素として換字に注目
し、この換字をSボックスとよび(s-boxes:上記論文の
第1章の末尾から2行目)、差分攻撃を避けるために、
Sボックスをどのよう作ればよいかを論じている。すな
わち、Sボックスは、屈曲関数(bent function )とよ
ぶ特別な関数を用いて作るべきと結論づけている(この
論文の定理3と定理4に記載される)。この論文は、こ
の発明の対象とするデータ攪拌装置およびデータ攪拌方
法について開示していない。
【0018】以上を要約すると、この論文はそのタイト
ルからみるとこの発明と関係があるようにみえるが、実
際はなんの関係もない。この発明は差分攻撃を排除する
ことができるデータ攪拌装置および、データ攪拌方法を
提供することを目的とする。
【0019】
【課題を解決するための手段】
(1)この発明のデータ攪拌装置は、データ回転関数手
段と、データ回転関数手段に直列に接続されたデータ攪
拌手段とを具備し、データ攪拌手段は、複数のビットか
らなるデータと、複数のビットからなる鍵とを入力し、
データ回転関数手段は、鍵の一部をパラメータとして、
これに入力されたデータを一方向に回転して出力し、デ
ータ攪拌手段は、これに入力されたデータと鍵とを混ぜ
合わせてデータ攪拌して出力し、この直列接続の出力を
データ攪拌装置の出力とする。
【0020】(2)並列に並べたデータ回転関数手段
と、データ攪拌手段と、排他的論理和手段とを具備し、
データ回転関数手段とデータ攪拌手段は共にデータUを
入力し、データ回転関数手段は、鍵の一部をパラメータ
として、データUを一方向に回転してデータVを出力
し、データ攪拌手段はデータUと鍵とを混ぜ合わせてデ
ータ攪拌して出力データWを出力し、排他的論理和手段
はデータVとデータWとを結合して得られたデータをデ
ータ攪拌装置の出力とする。
【0021】(3)前記(2)においてデータ回転関数
手段と直列に第2データ攪拌手段が挿入され、その第2
データ攪拌手段はこれに入力されたデータと鍵の一部と
を混ぜ合わせてデータを攪拌する。 (4)この発明のデータ攪拌装置は、並列に並べた複数
のデータ回転関数手段と、それぞれのデータ回転関数手
段の出力側に接続された複数のデータ攪拌手段と、排他
的論理和手段とを具備し、データ攪拌装置に、複数のビ
ットからなるデータUと、複数のビットからなるサブ鍵
とが入力され、各データ回転関数手段は、それぞれサブ
鍵の互いに異なる一部をパラメータとして、データUを
一方向に回転してそれぞれデータV1 ,V2 ,…を出力
する。各データ攪拌手段はデータV1 ,V2 ,…と、サ
ブ鍵の一部とを混ぜ合わせてデータ攪拌し、それぞれデ
ータW1 ,W2 ,…を出力し、排他的論理和手段はこれ
らデータW1 ,W2 ,…を排他的論理和演算で結合し、
結合して得られるデータをデータ攪拌装置の出力とす
る。データ攪拌手段はサブ鍵と混ぜ合せることなくデー
タ攪拌してもよく、データV1 ,V2 ,…の少なくとも
1つだけをサブ鍵の一部と混ぜ合せてもよい。
【0022】(5)前記データ攪拌装置は更にANDま
たはOR論理演算素子を具備し、これにより、入力デー
タUとサブ鍵の他の一部とをANDまたはOR演算し、
その結果のデータを上記排他的論理和演算手段でその他
の入力との排他的論理和演算をする。 (6)前記(4)のデータ攪拌装置は更に転置処理手段
とANDまたはOR論理演算素子とを具備し、入力デー
タUはまず転置処理手段で転置処理が施され、その結果
のデータUXが各データ回転関数手段に供給され、また
ANDまたはOR論理演算素子で入力データUとサブ鍵
の他の一部とのANDまたはOR演算がされ、その結果
のデータと、各データ攪拌手段からの出力データW1
2 ,…と共に排他的論理和演算され、得られるデータ
が、データ攪拌装置の出力とされる。
【0023】(7)前記(6)のデータ攪拌装置におい
て、転置処理手段の代りに換字処理手段が置き換えられ
てデータ攪拌される。 (8)前記(4)のデータ攪拌装置で、データ回転関数
手段と、データ攪拌手段との接続順序が交換される。 (9)以上のいずれでも排他的論理和演算手段の代りに
モジューロ加算手段が用いられる。
【0024】以上の処理において、データ回転関数手段
を通過する差分が通過する確率は、パラメータを必要と
する値に設定することにより希望する値以下に制御で
き、更に、複数のデータ攪拌手段によりデータ攪拌を行
うことができる。 (データ回転関数手段)次に、この発明で最も重要な要
素であるデータ回転関数手段について、更に詳しく説明
する。
【0025】データ回転関数手段は複数ビットからなる
データブロックを、パラメータλの指定するビット数だ
け一方向、例えば左回転する‘左回転レジスタ’として
実現出来る。データ回転関数手段の機能を関数として表
し、データ回転関数と呼ぶ。データ回転関数はパラメー
タλを持ち、入力ブロックxを出力ブロックyに変換す
る。数式的には、y=RT(x,λ)として表す。ここ
で、x,yは32ビットブロック、パラメータλはmビ
ット長ブロック、0≦λ<2m なる整数でxの左回転数
を表す。例えば、λ=5のとき、ブロックxは左に5ビ
ット回転する。パラメータλの取り得る数2m をデータ
回転関数の複雑度という。m=5の場合、複雑度は25
である。
【0026】データ回転関数y=RT(x,λ)を通過
できる差分x′、ただしx′=x1(+) x1 * =x2 (+)
2 * は、パラメータλを変えれば、このデータ回転
関数を通過出来なくなる。すなわち、パラメータλを変
えると、x′とは異なる他の差分が出力される。このデ
ータ回転関数の機能を数式を用いて説明する。データ回
転関数RTについて、次の関係が成り立つことは明らか
である。
【0027】RT(x,λ)(+) RT(x* ,λ)=R
T(x(+) x* ,λ) xをx1 ,x2 とし、λ=a,bとすれば、次の関係が
成り立つ。 RT(x1 ,a)(+) RT(x1 * ,a)=RT(x1
(+) x1 * ,a)=y1 (+) y1 * RT(x2 ,b)(+) RT(x2 * ,b)=RT(x2
(+) x2 * ,b)=y2 (+) y2 * 従って、x1 (+) x1 * =x2 (+) x2 * のとき次の関
係が成り立つ。 a=bであれば、y1 (+) y1 * =y2 (+) y2 * a≠bであれば、y1 (+) y1 * ≠y2 (+) y2 * 上の関係式は、データ回転関数y=RT(x,λ)を通
過できる差分x′、ただしx′=x1 (+) x1 * =x2
(+) x2 * 、は、パラメータλを変えれば、通過出来な
いことを意味している。
【0028】パラメータλの取り得る数は2m 通りある
ので、別の表現をすれば、差分x′=x1 (+) x1 *
2 (+) x2 * は、データ回転関数y=RT(x,λ)
を、確率2-mで通過すると言い換えることができる。 (データ攪拌関数手段内部の並列処理)次に、差分の通
過確率が2-mであるデータ回転関数y=RT(x,λ)
を用いて、任意の関数y=g(x)を次のように変え
る。
【0029】y=g(RT(x,λ)) 差分x′はデータ回転関数を確率2-mで通過する。デー
タ回転関数の出力の差分x2 ′は任意の関数g(x)
を、確率をpで通過する。ただし、0≦p≦1(通過で
きないときは、p=0)。すると、最初にデータ回転関
数に入力した差分x′が、関数y=g(x)を通過でき
る確率は、2つの確率の積で与えられるから、2-m・p
となる。ここで、2-m・p≦2-mなる関係から次の結
論、すなわち、「関数y=g(RT(x,λ))が、任
意の差分x′の通過を許す確率は、高々2-mである」。
【0030】次にデータ回転関数をS個並べた次の関数
を考える。 y=g1 (RT(x,λ1 ))(+) g2 (RT(x,λ
2 ))(+) …(+) gS (RT(x,λS )) ただし、λ=λ1 ‖λ2 ‖…‖λS ,S:並列数 λj はmビット長であり、λは、m×Sビット長であ
る。
【0031】個々の関数、gi (RT(x,λi ))
が、任意の差分x′の通過を許す確率は、上述した理由
から高々2-mである。任意の差分x′が上記の関数を通
過する確率は、個々の関数の差分通過確率の積で与えら
れるから、(2-mS =2-mSで与えられる。以上をま
とめると、データ回転関数をS個並らべた上記の関数
は、次の性質を持つ。「上記の関数が、任意の差分x′
の通過を許す確率は高々2-mS である」。
【0032】
【作用】上記のように請求項1〜8の発明によれば、デ
ータ回転関数手段と接続されたデータ攪拌手段とを具備
し、データ回転関数手段を通過する差分が通過する確率
は、2-mと極めて小さくすることができる。ただし、m
はデータ回転関数手段の個々のパラメータのビット長で
ある。例えば、m=4で差分通過確率p=2-m=1/1
6であり、従来の技術において説明した差分通過確率p
=1/4と較べて、はるかに小さい。すなわち、mを必
要とする値に設定して、差分が通過する確率を希望する
値以下に制御できる。データ攪拌手段は、データ回転関
数手段から出力されるデータと鍵の一部とを混ぜ合わせ
てデータ攪拌するので、暗号文の生成過程におけるデー
タの不規則化のため役立つ。また請求項9以下の発明の
データ攪拌装置は、S個を並べた複数のデータ回転関数
手段と、データ回転関数手段と縦続接続された複数のG
関数手段とを具備し、データ回転関数手段を通過する差
分が通過する確率は、2-mS と極めて小さくできる。た
だし、mはデータ回転関数手段の個々のパラメータのビ
ット長Sは、データ回転関数手段の並列接続数である。
例えば、m=5、S=2で、差分通過確率p=2-mS
-8=1/256であり、従来の技術において説明した差
分通過確率p=1/4と較べて、はるかに小さい。ま
た、差分通過確率pを一層小さくしたい場合、例えば、
m=5、S=3とすれば、差分通過確率p=2-mS =2
-15 =1/32768 と出来る。すなわち、mとSの値を必
要とする値に設定して、差分が通過する確率を希望する
値以下に設定できる。複数のデータ攪拌手段は、データ
回転関数手段から出力されるデータとサブ鍵の一部とを
混ぜ合わせてデータ攪拌するので、暗号文の生成過程に
おけるデータの不規則化のため役立つ。
【0033】
【実施例】
実施例1 図は、この発明に基づく実施例1を説明するためのブロ
ック図である。この発明に基づくデータ攪拌装置1はデ
ータ回転関数手段2の出力側は32ビットのデータ線9
Aを通じてデータ攪拌手段としてのG関数手段3Aに接
続される。鍵入力データ線5から16ビットの鍵が入力
され、以降この鍵はデータ攪拌装置1の内部ではパラメ
ータとして使われる。右データ入力データ線6から32
ビットのデータが入力される。データ線5上の16ビッ
トの鍵は、抽出手段11で、5ビットのデータ線13A
に分岐抽出され、またデータ線5Aの16ビットのデー
タとされる。データ線5Aはデータ攪拌手段3Aに16
ビットのデータ(鍵)を供給し、データ線13Aは、そ
の5ビットデータ(鍵の一部)を、データ回転関数手段
2に供給する。データ回転関数手段2は、32ビットの
データと5ビットのパラメータ(鍵の一部)とを入力
し、そのパラメータの指定した0から31のいずれかの
ビット数だけ、32ビットの入力データを左回転し、そ
の結果の32ビット値を出力する。前記パラメータは、
5ビット値を2進数表示したもので、0から31までを
表現できる。データ回転関数手段2の機能を数式で表す
と、y=RT(x,λ)であり、xは32ビット入力デ
ータ、λは5ビットのパラメータで、0≦λ≦31,y
は32ビットの出力データであり、xはλビットだけ左
回転し、その結果がyとして出力される。このデータ攪
拌装置1は、1つのデータ回転関数により、任意の差分
x′が通過する確率は2-5である。
【0034】データ攪拌手段としてのG関数手段3Aは
データ線9Aから32ビットのデータを入力し、更に、
データ線5Aから16ビットのデータ(鍵)を入力し、
入力した両データを混ぜ合わせてデータ攪拌し、その結
果の32ビットデータを、データ線7からデータ攪拌装
置1の出力として出力する。次に、G関数手段3Aの例
を図2に示す。このG関数手段3Aは動的換子手段であ
って、図2で、データ攪拌手段3Aの入力データ線9A
から入力した32ビットの入力データは、分割手段33
で4分割され、8ビットのブロックデータR0,R1,
R2,R3に分けられる。データ線5Aから入力した1
6ビットのデータ(鍵)は、8ビットのブロックデータ
P0とP1とに分けられる。ブロックデータR0,R
1,R2,R3とP0,P1は、それぞれ分割手段33
と結合手段34との間で次に示す一連の処理を受ける。
以下の記法で、矢印の記号←は、その右の演算結果を左
のデータとすることを示す。また、EOR回路35,3
6,37,38は、それぞれ2つの8ビットブロックを
入力し、ビット対応の排他的論理和演算し、その結果得
られる8ビットブロックを出力する。8ビットのデータ
R0,R1,R2,R3,P0,P1は、共に2進整数
で表現でき、0から255の正整数値を表す。演算(x
+y)mod 256 や(x+y+1)mod 256 は法256の
加算を表す。また、cir(x)は、8ビットデータxを左
に2ビット回転して得られる8ビットデータを表す。
【0035】 第1ステップ EOR回路35で R1←R1(+) P
0,EOR回路36で R2←R2(+) P1, 第2ステップ XOR回路37で R1←R1(+) R
0,XOR回路38で R2←R2(+) R3, 第3ステップ 回路39で R1←(R1+R2+1)
mod 256 R1← cir(R1) 第4ステップ 回路40で R2←(R2+R1)mod
256 R2← cir(R2) 第5ステップ 回路41で R0←(R0+R1)mod
256 R0← cir(R0) 第6ステップ 回路42で R3←(R3+R2+1)
mod 256 R3← cir(R3) 以上述べた一連のステップにより得られた、8ビットブ
ロックのR0,R1,R2,R3は、結合手段34で、
それらを連結して得られる32ビットデータR0‖R1
‖R2‖R3となり(‖は連結を表す),32ビットの
出力データ線7から出力される。以上述べた一連のステ
ップにより、入力データ線9Aから入力した32ビット
のデータは、4つのブロックR0,R1,R2,R3に
分割された後、データ線5Aから入力するブロックP
0,P1をパラメータとして、データ攪拌され、データ
線32から出力する。
【0036】要約するとデータ攪拌装置1は、鍵入力デ
ータ線5から16ビットのデータ(鍵)を入力し、右デ
ータ入力データ線9Aから32ビットのデータを入力
し、データ攪拌装置1の中でデータ拡散の処理を行い、
その結果得られる32ビットデータを出力データ線7か
ら出力する。このデータ攪拌装置1はデータ回転関数手
段2により、任意の差分x′が通過する確率は2-6であ
る。以上述べた一連の処理により、実施例1で述べたデ
ータ攪拌装置1は小さな差分通過確率でデータ攪拌を行
える。 実施例2 図3は、この発明に基づく実施例2を説明するためのブ
ロック図であり、この実施例2は実施例1において、デ
ータ回転関数手段2とデータ攪拌手段としてのG関数手
段3Aとの結合順序が逆になっている点が異なり、実施
例1と対応する部分は同一符号を付けてある。
【0037】鍵入力データ線5から16ビットのデータ
(鍵)が入力され、以降、鍵はデータ攪拌装置内部では
パラメータとして使われ、右データ入力データ線6から
32ビットのデータが入力される。データ線5上の16
ビットのデータは抽出手段11で、5ビットがデータ線
13Aに分岐抽出され、また16ビットがデータ線5A
へ出される。
【0038】データ線5Aはデータ攪拌手段3Aに16
ビットのデータを供給し、データ線13Aはその5ビッ
トデータをデータ回転関数手段2に供給する。データ攪
拌手段3Aは、データ線6から32ビットのデータを入
力し、更に、データ線5Aから16ビットのデータを入
力し、入力した両データを混ぜ合わせてデータ攪拌し、
その結果の32ビットデータをデータ線10Bへ出力す
る。
【0039】データ回転関数手段2は、データ線10B
からの32ビットのデータとデータ線13Aからの5ビ
ットのパラメータとを入力し、パラメータの指定した0
から31のいずれかのビット数だけ、32ビットの入力
データを左回転し、その結果の32ビットを出力する。
このように動作するので、実施例1の説明における同様
の原理により、このデータ攪拌装置は1つのデータ回転
関数により、任意の差分x′が通過する確率は2-5であ
る。
【0040】要約するとこのデータ攪拌装置1は、鍵入
力データ線5から16ビットのデータを入力し、右デー
タ入力データ線6から32ビットのデータを入力し、デ
ータ攪拌装置1の中でデータ拡散の処理を行い、その結
果得られる32ビットデータを出力データ線7から出力
する。このデータ攪拌装置1は、データ回転関数手段2
により、任意の差分x′が通過する確率は2-5である。
以上述べた一連の処理により、実施例2で述べたデータ
攪拌装置1は小さな差分通過確率でデータ攪拌を行え
る。
【0041】実施例3 図4はこの発明に基づく実施例3を説明するためのブロ
ック図であり、実施例3は実施例1とは、データ回転関
数手段2とデータ攪拌手段としてのG関数手段3Aとが
その入力側が並列に接続されている点が異なり、32ビ
ットのデータ線6はデータ回転関数手段2とデータ攪拌
手段3Aとの各入力側に接続され、それぞれに32ビッ
トデータを供給しており、データ回転関数手段2から出
力される32ビットのデータ線41およびデータ攪拌手
段3Aから出力される32ビットのデータ線42は排他
的論理和回路43に接続される。
【0042】鍵入力データ線5から16ビットのデータ
が入力され、以降、鍵はデータ攪拌装置内部ではパラメ
ータとして使われ、右データ入力データ線6から32ビ
ットのデータが入力され、データ線5上の16ビットの
データは抽出手段11で、5ビットのデータ線13Aに
分岐抽出され、また、データ線5Aにそのまゝ出力さ
れ、データ線5Aはデータ攪拌手段3Aに16ビットの
データを供給し、データ線13Aはその5ビットデータ
を、データ回転関数手段2に供給する。
【0043】データ攪拌手段3Aはデータ線6から32
ビットのデータを入力し、更に、データ線5Aから16
ビットのデータを入力し、入力した両データを混ぜ合わ
せてデータ攪拌し、その結果の32ビットデータをデー
タ線42から出力する。データ回転関数手段2は32ビ
ットのデータと5ビットのパラメータとを入力し、その
パラメータの指定した0から31のいずれかのビット数
だけ、32ビットの入力データを左回転し、その結果の
32ビット値を、データ線41に出力する。このように
動作するので、実施例1の説明におけると同様の原理に
より、このデータ攪拌装置1は1つのデータ回転関数に
より、任意の差分x′が通過する確率は2-5である。
【0044】排他的論理和手段43はデータ線41とデ
ータ線42とから各32ビットデータブロックを入力
し、1ビットごとの排他的論理和演算し、その結果の3
2ビットデータを出力データ線7から出力する。要約す
るとこのデータ攪拌装置1は、鍵入力データ線5から1
6ビットのデータを入力し、右データ入力データ線6か
ら32ビットのデータを入力し、データ攪拌装置1の中
でデータ拡散の処理を行い、その結果得られる32ビッ
トデータを、出力データ線7から出力する。このデータ
攪拌装置1はデータ回転関数手段2により、任意の差分
x′が通過する確率は2-5である。以上述べた一連の処
理により、実施例3で述べたデータ攪拌装置1は小さな
差分通過確率で、データ攪拌を行える。
【0045】実施例4 図5は、この発明に基づく実施例4を説明するためのブ
ロック図であり、実施例4は実施例3とは、データ攪拌
手段として動的転置手段50がデータ回転関数手段2
に、直列に挿入接続されている点が異なり、32ビット
のデータ線6はデータ回転関数手段2とデータ攪拌手段
としてのG関数手段3Aとの各入力側に接続され、それ
ぞれに32ビットデータを供給しており、データ回転関
数手段2からデータ攪拌手段50へ32ビットデータ線
40により接続され、データ回転関数手段2から32ビ
ットのデータ線41に出力され、G関数手段3Aから出
力される32ビットのデータ線である。
【0046】図6にデータ攪拌手段50の一例を示し、
データ攪拌手段50は、動的転置手段で構成した場合で
ある。入力データ線51から入力された32ビットの入
力データは、分割手段54で2分割され、16ビットの
ブロックデータU0,U1とに分けられる。16ビット
のブロックデータU0,U1および、入力データ線52
から入力された16ビットデータ(鍵の一部、Vで表
す)は、分割手段54と結合手段55との間で、次に示
す一連の処理を受ける。以下の記法で矢印の記号←は、
その右の演算結果を左のデータとすることを示す。
【0047】回路56は左7ビットの回転回路であり、
16ビットデータxを入力して左に7ビット回転して得
られる16ビットデータR7(x)を出力する。EOR
回路57,58は、それぞれ2つの16ビットブロック
を入力し、ビット対応の排他的論理和演算し、その結果
得られる16ビットブロックを出力する。AND回路5
9,60は、それぞれ2つの16ビットブロックを入力
してビット対応に論理積をとってその結果得られる16
ビットブロックを出力する。16ビットのデータU0,
U1,Vは、共に2進整数で表現でき、0から65535 の
正整数値を表す。回路61は、入力した16ビット(x
で表す)の全ビットの否定論理の演算結果(〜xで表
す)を出力する。Wは説明のための暫定的な16ビット
データを表す。
【0048】 第1ステップ 回路56で U0←R7(U0), 第2ステップ 回路59で W←U0&V,ただし、&
はAND論理、 第3ステップ 回路57で U1←U1(+) W, 第4ステップ 回路60と61で W←U1&(〜V) 第5ステップ 回路58で U0←U0(+) W, 以上述べた一連のステップにより得られた、16ビット
ブロックのU0とU1は、結合手段55で、それらが連
結され32ビットデータU0‖U1となり(‖は連結を
表す),32ビットの出力データ線53から出力され
る。以上述べた一連のステップにより、入力データ線5
1から入力されたデータは出力データ線53から出力す
るまでにデータ攪拌される。このデータ攪拌は鍵Vのビ
ットの状態により、データU0の対応ビットが回路59
を通じてデータU1となって結合手段55へ供給され、
また同様にデータU1の対応ビットが回路60を通じて
データU0となって結合手段55へ供給され、動的な転
置が行われる。
【0049】図5においてEOR回路43はデータ線4
1と42とから、2つの32ビットデータを入力し、1
ビットごとの排他的論理和演算をし、その結果の32ビ
ットブロックデータを、データ線7へ出力する。鍵入力
データ線5から16ビットのデータが入力され、以降、
この鍵はデータ攪拌装置内部ではパラメータとして使わ
れ、右データ入力データ線6から32ビットのデータが
入力される。
【0050】データ線5上の16ビットのデータは抽出
手段11で、5ビットがデータ線13Aに分岐抽出さ
れ、また16ビットのそのまゝがデータ線5Aへ供給さ
れる。データ線5Aはデータ攪拌手段3Aに16ビット
のデータを供給し、データ線13Aはその5ビットデー
タをデータ回転関数手段2に供給する。データ攪拌手段
3Aはデータ線6から32ビットのデータを入力し、更
に、データ線5Aから16ビットのデータを入力し、入
力した両データを混ぜ合わせてデータ攪拌し、その結果
の32ビットデータをデータ線42から出力する。
【0051】データ回転関数手段2は32ビットのデー
タと5ビットのパラメータとを入力し、パラメータの指
定した0から31のいずれかのビット数だけ、32ビッ
トの入力データを左回転し、その結果の32ビットを、
データ線40に出力する。データ攪拌手段50は5ビッ
トのデータと32ビットのデータとを入力し、その内部
をデータを攪拌しデータ線41へ出力する。
【0052】このように動作するので、実施例1の説明
におけると同様の原理により、このデータ攪拌装置1
は、1つのデータ回転関数により、任意の差分x′が通
過する確率は2-5である。排他的論理和手段43はデー
タ線41とデータ線42とからの各32ビットデータブ
ロックを入力し、1ビットごとの排他的論理和演算し、
その結果の32ビットデータを出力データ線7から出力
する。
【0053】要約するとこのデータ攪拌装置1は、鍵入
力テータ線5から16ビットのデータを入力し、右デー
タ入力データ線6から、32ビットのデータを入力し、
データ攪拌装置1の中でデータ拡散の処理を行い、その
結果得られる32ビットデータを出力データ線7から出
力する。このデータ攪拌装置1はデータ回転関数手段2
により、任意の差分x′が通過する確率は2-5である。
以上述べた一連の処理により、実施例4で述べたデータ
攪拌装置1は、小さな差分通過確率でデータ攪拌を行え
る。 実施例5 図7は、この発明に基づく実施例5を説明するためのブ
ロック図であり、実施例5は、実施例4において、デー
タ回転関数手段2とデータ攪拌手段50との接続される
順序が逆に接続されている点が異なる。データ攪拌手段
3Aの動作は実施例3と同様である。データ回転関数手
段2は32ビットのデータと5ビットのパラメータとを
入力し、パラメータの指定した0から31のいずれかの
ビット数だけ、32ビットの入力データを左回転し、そ
の結果の32ビット値をデータ線41に出力する。
【0054】このように動作するので、実施例1の説明
におけると同様の原理により、このデータ攪拌装置1
は、1つのデータ回転関数により、任意の差分x′が通
過する確率は2-5である。排他的論理和手段43はデー
タ線41とデータ線42とから32ビットデータブロッ
クを入力し、1ビットごとの排他的論理和演算し、その
結果の32ビットデータを出力データ線7から出力す
る。
【0055】要約するとデータ攪拌装置1は、鍵入力デ
ータ線5から16ビットのデータを入力し、右データ入
力データ線6から32ビットのデータを入力し、データ
攪拌装置1の中でデータ拡散の処理を行い、その結果得
られる32ビットデータを、出力データ線7から出力す
る。このデータ攪拌装置1は、データ回転関数手段2に
より、任意の差分x′が通過する確率は2-5である。以
上述べた一連の処理により、実施例5で述べたデータ攪
拌装置は小さな差分通過確率でデータ攪拌を行える。 実施例6 図8は、この発明に基づく実施例6を説明するためのブ
ロック図である。この発明に基づくデータ攪拌装置1は
データ回転関数手段2−1〜2−4の出力側にそれぞれ
データ攪拌手段としてのG関数手段3−1〜3−4が接
続され、G関数手段3−1〜3−4の各出力が排他的論
理和手段4に供給される。鍵入力データ線5から48ビ
ットの鍵を表すデータが入力し、以降、鍵はデータ攪拌
装置内部ではパラメータとして使われ、右データ入力デ
ータ線6から32ビットのデータが入力する。
【0056】鍵入力データ線5上の48ビットのデータ
は、分岐手段11で32ビットのデータ線12と、16
ビットのデータ線13とに分岐され、データ線12はG
関数手段3−1と、3−2とに同一の32ビットのデー
タを供給し、データ線13は更に4ビットずつ4つに分
かれ、それぞれの4ビット線がデータ回転関数手段の2
−1,2−2,2−3,2ー4にそれぞれ4ビットずつ
供給する。
【0057】データ回転関数手段2−1,2−2,2−
3,2−4は、32ビットのデータと4ビットのパラメ
ータとを入力し、パラメータの指定した0から15のい
ずれかのビット数だけ、32ビットの入力データを左回
転し、その結果の32ビット値をそれぞれデータ線9−
1,9−2,9−3,9−4に出力する。パラメータ値
は、4ビット値を2進数表示したもので,0から15ま
でを表現できる。データ回転関数手段の機能を数式で表
すと、y=RT(x,λ)であり、xは32ビット入力
データ、λは4ビットのパラメータで、0≦λ≦15、
yは32ビットの出力データであり、xはλビットだけ
左回転し、その結果がyとして出力される。このデータ
攪拌装置は、4つのデータ回転関数を用いた4並列接続
により差分x′が通過する確率は、(2-44 =2-16
である。
【0058】G関数手段3−1,3−2は、それぞれデ
ータ線9−1,9−2から32ビットのデータを入力
し、更に、データ線12から32ビットのデータを入力
し、入力したデータを混ぜ合わせてデータ攪拌し、その
結果の32ビットデータを、それぞれデータ線10−
1,10−2から出力する。次に、G関数手段3−1と
3−2を図9を用いて詳細に説明する。図9は、G関数
手段3−1と3−2のブロック図であり、32ビットの
入力データ線9Aのデータと、32ビットのパラメータ
入力データ線12Aのパラメータとが32ビット長の排
他的論理和手段20で排他的論理和演算され、その排他
的論理和演算の結果の32ビット長のデータは分割手段
21で16ビットずつ2分割され、その一方の16ビッ
トはデータ線25へ供給され、他方の16ビットはデー
タ線26へ供給される。16ビット加算器22は16ビ
ットの2つのデータを、データ線の25と26とから入
力し、法216の加算を行い、16ビットデータ線27へ
出力する。次に、16ビット加算器23は16ビットの
2つのデータを、データ線の27と26とから入力し、
法216の加算を行い、16ビットデータ線28へ出力す
る。結合手段24は、16ビット長データ線27と28
上の各16ビットデータをこの順序に結合して32ビッ
トデータを得、32ビットデータ線10Aから出力す
る。G関数手段3−1と3−2は、以上説明したように
作られているから、入力した32ビットデータとパラメ
ータとを混ぜ合わせてデータ攪拌し、その結果の32ビ
ットデータをデータ線10Aから出力する。
【0059】G関数手段3−3は、データ線9−3から
32ビットのデータを入力し、入力したデータを8ビッ
ト左回転し、その結果の32ビットデータを、データ線
10−3から出力する。G関数手段3−4は、データ線
9−4から32ビットのデータを入力し、入力したデー
タを16ビット左回転し、その結果の32ビットデータ
を、データ線10−4から出力する。
【0060】排他的論理和手段4は、4つのデータ線1
0ー1,10ー2,10ー3,10ー4の各データを入
力し、これらを排他的論理和演算し、その結果をデータ
線7に出力する。要約するとデータ攪拌装置1は、鍵入
力データ線5から48ビットのデータを入力し、右デー
タ入力データ線6から32ビットのデータを入力し、デ
ータ攪拌装置1の中でデータ攪拌の処理を行い、その結
果得られる32ビットデータを出力データ線7から出力
する。
【0061】このデータ攪拌関数装置1は、4つのデー
タ回転関数を用いた4並列接続により、差分x′が通過
する確率は高々(2-44 =2-16 である。以上述べた
一連の処理により、実施例6で述べたデータ攪拌装置1
は、小さな差分通過確率で、データ攪拌を行える。 実施例7 図10は、この発明に基づく実施例7を説明するための
ブロック図であり、図8と対応する部分に同一符号を付
けてある。この実施例7のデータ攪拌装置1Aは、デー
タ線5Aから72ビットの鍵を入力し、以降、鍵はデー
タ攪拌装置内部ではパラメータとして使われ、右データ
入力データ線6から32ビットのデータを入力する。
【0062】データ線5A上の72ビットのデータは、
分岐手段11Aで32ビットのデータ線12Aと、8ビ
ットのデータ線13Aと、32ビットのデータ線14と
に分岐し、データ線12AはG関数手段3−1と3−2
に、同一の32ビットのデータを供給し、データ線13
Aは、更に4ビットずつ2つに分かれ、それぞれの4ビ
ットが、データ回転関数手段2−1,2−2に4ビット
ずつデータを供給し、データ線14上の32ビットデー
タは、AND論理演算素子15に供給する。
【0063】データ回転関数手段2−1,2−2は、3
2ビットのデータと4ビットのパラメータとを入力し、
パラメータの指定した0から15のいずれかのビット数
だけ32ビットの入力データを左回転し、その結果をデ
ータ線9−1,9−2にそれぞれ出力する。G関数手段
3−1と3−2は、データ線12Aと、データ線9−
1,9−2とから各32ビットのデータをそれぞれ入力
し、それらを混ぜ合わせてデータ攪拌し、その結果の3
2ビットデータを、データ線10−1,10−2とにそ
れぞれ出力し、AND論理演算素子15は、データ線1
2Aとデータ線16とからそれぞれ32ビット長のデー
タを入力し、ビット対応のAND演算し、その結果をデ
ータ線17から出力する。
【0064】排他的論理和手段4Aは、3つのデータ線
10ー1,10ー2,17の各データを入力し、これら
を排他的論理和演算し、その結果をデータ線7に出力す
る。実施例7は、実施例1において、更に、AND論理
演算素子15を追加しても、データ攪拌関数装置が実現
できることを表す。AND論理演算素子15を追加する
ことにより、このデータ攪拌関数装置におけるデータ攪
拌が一層複雑になる。この複雑性のため、このデータ攪
拌関数装置を組み込む暗号が、予期できない暗号攻撃に
一層強くなると期待できる。
【0065】要約すると、データ攪拌装置1Aは、鍵入
力データ線5Aから、72ビットのデータを入力し、右
データ入力データ線6から32ビットのデータを入力
し、データ攪拌装置の中でデータ攪拌の処理を行い、そ
の結果得られる32ビットデータを出力データ線7から
出力する。このデータ攪拌関数装置は、2つのデータ回
転関数を用いた2並列接続により、差分x′が通過する
確率は高々(2-42 =2-8である。
【0066】以上述べた一連の処理により、実施例7で
述べたデータ攪拌装置は、小さな差分通過確率でデータ
攪拌を行う。 実施例8 図11にこの発明に基づく実施例8を示し、図8,図1
0と対応する部分に同一符号を付けてある。この実施例
8のデータ攪拌装置1Bは、データ線5Aから72ビッ
トの鍵を入力し、以降、鍵はデータ攪拌装置内部ではパ
ラメータとして使われ、右データ入力データ線6から3
2ビットのデータを入力する。
【0067】データ線5A上の72ビットのデータは、
分岐手段11Aで、32ビットのデータ線12Aと、8
ビットのデータ線13Aと、32ビットのデータ線14
とに分岐し、データ線12Aは、G関数手段3−1と3
−2に、同一の32ビットのデータを供給し、データ線
13Aは、更に4ビットずつ2つに分かれ、それぞれの
4ビットが、データ回転関数手段の2−1,2−2とに
4ビットずつデータを供給し、データ線14上の32ビ
ットデータは、OR論理演算素子20に供給する。
【0068】転置処理手段19は、入力データ線6から
32ビットデータを入力し、32ビットデータを出力す
る。入力ブロックをA、出力ブロックをBで表し、それ
らのビット番号を、Ai,Bjで表したとき、1≦i≦
16のときBi =Ai 、17≦i≦24のときBi+8
i 、25≦i≦32のときBi =Ai-8 である。デー
タ回転関数手段2−1,2−2は、32ビットのデータ
と4ビットのパラメータとを入力し、パラメータの指定
した0から15のいずれかのビット数だけ32ビットの
入力データを左回転し、その結果をデータ線9−1,9
−2にそれぞれ出力する。
【0069】G関数手段3−1と3−2は、データ線1
2Aと9−1,9−2とから各32ビットのデータを入
力し、それらを混ぜ合わせてデータ攪拌し、その結果の
32ビットデータをデータ線10−1,10−2とにそ
れぞれ出力し、OR論理演算素子20は、データ線12
Aとデータ線16とからそれぞれ32ビット長のデータ
を入力し、ビット対応でOR演算し、その結果をデータ
線17から出力する。
【0070】モジューロ加算器18は、3つのデータ線
10ー1,10ー2,17を入力し、これらを法232
加算し、その結果をデータ線7に出力する。実施例8
は、実施例7の排他的論理和手段4Aを、モジューロ加
算器18で置き換え可能であり、また、AND論理演算
素子15を、OR論理演算素子20と置き換え可能であ
り、また、データ回転関数手段2−1と2−2との入力
部分に転置処理手段19を挿入しても、データ攪拌装置
が実現できることを表す。
【0071】要約すると、データ攪拌装置1Bは鍵入力
データ線5Aから72ビットのデータを入力し、右デー
タ入力データ線6から、32ビットのデータを入力し、
データ攪拌装置の中でデータ攪拌の処理を行い、その結
果得られる32ビットデータを出力データ線7から出力
する。このデータ攪拌関数装置は、2つのデータ回転関
数を用いた2並列接続により、差分x′が通過する確率
は高々(2-42 =2-8である。
【0072】以上述べた一連の処理により、実施例3で
述べたデータ攪拌装置は、小さな差分通過確率でデータ
攪拌を行える。 実施例9 図12にこの発明に基づく実施例4を示す。この実施例
9は、前記実施例8において転置処理手段19に代わっ
て、換字処理手段30を用いるものである。換字処理手
段30は、図9のG関数手段を一定の条件をつけて用い
るものである。ここで一定の条件とは、図9に示すG関
数手段において、32ビットの信号線12Aからは32
ビットのゼロを入力したものを用いる。この場合、信号
線12Aは無視できるので図9で示したG関数手段は、
信号線9Aから32ビットのデータを入力し、信号線1
0Aから32ビットのデータを出力する換字処理を行
う。この条件で用いるG関数手段を換字処理手段と呼
ぶ。換字処理手段は32ビットの入力データを一定の規
則で変換し、32ビットデータを出力する。
【0073】換字処理手段30を除き、他の番号で示す
ものは全て実施例8と同じである。実施例9のデータ攪
拌装置は、実施例8で述べた一連の処理と類似した様態
であり、実施例9で述べたデータ攪拌装置は、小さな差
分通過確率で、データ攪拌を行える。 実施例10 図13にこの発明に基づく実施例10を示す。実施例1
0は、前記実施例6において、データ回転関数手段2ー
1と、G関数手段3−1との接続順序を交換し、以下同
様に、データ回転関数手段2ー2と、G関数手段3−2
との接続順序を交換し、データ回転関数手段2ー3と、
G関数手段3−3との接続順序を交換し、データ回転関
数手段2ー4と、G関数手段3−4との接続順序を交換
したものである。すなわち、図13に示すように右デー
タ入力データ線6は4つのG関数手段3ー1,3ー2,
3ー3,3ー4にそれぞれ接続し、これらG関数手段の
出力データ線はデータ回転関数手段2−1,2−2,2
ー3,2ー4にそれぞれ接続し、これらデータ回転関数
手段の出力データ線は、排他的論理和手段4に接続され
る。ただし、データ線12はG関数手段3−1と3ー2
とに接続し、データ線13は更に4ビットずつ分かれて
4つのデータ回転手段に接続することは実施例6と同じ
である。実施例10は、データ回転関数手段とG関数手
段の動作する順序は実施例6と逆であるが、他の様態は
実施例6と同様である。
【0074】実施例10のデータ攪拌装置は、データ回
転関数手段とG関数手段の接続の順序を実施例6と交換
しても小さな差分通過確率でデータ攪拌を行う。図8,
図10,図11,図12,図13の実施例において、デ
ータ攪拌手段(G関数手段)はそのすべてについて鍵と
の混ぜ合わせをやってもよいし、また鍵との混ぜ合わせ
をすることなくデータ攪拌を行ってもよく、少なくとも
1つだけ鍵との混ぜ合わせをやってもよい。更に鍵との
混ぜ合わせを行う場合に、その鍵データ、つまりデータ
線12,12Aのデータとデータ線13,13Aのデー
タとはその一部が同一でもよい。図4,図5,図7,図
8,図10,図13の排他的論理和手段43,4,4A
の代りにモジューロ加算器を用いてもよい。図10にお
いてAND論理演算素子の代りにOR論理演算素子を用
いてもよい。図11,図12においてOR論理演算素子
の代りにAND論理演算素子を用いてもよい。上述にお
いてデータ長、鍵長の各値は上記例に限られず、その値
を増加または減少してもよい。上述において、データ攪
拌手段3A,50,3−1,3−2,3−3,3−4と
してはそれぞれ図2,図6,図9に示したいずれのも
の、その他のものを使用してもよい。ただし図4,図
5,図7においてはデータ攪拌手段3A,50として共
にG関数手段、または一方がG関数手段、他方が動的転
置手段が好ましく、特にデータ攪拌手段3AがG関数手
段、データ攪拌手段50が動的転置手段であるとよい。
この発明のデータ攪拌装置は図14中のデータ攪拌装置
63−1〜63−3に適用できる他に、一般にデータの
攪拌に適用できる。
【0075】
【発明の効果】以上述べたように請求項1乃至8の発明
によれば、データ回転関数手段と、データ回転関数手段
に、直列または並列に接続する、データ攪拌手段とを具
備し、パラメータのmの値を必要とする値に設定して、
差分が通過する確率を希望する値以下、例えば確率p=
1/16に設定できる。更に、データ攪拌手段は、デー
タ回転関数手段から出力されるデータまたはこれに入力
されるデータと鍵の一部とを混ぜ合わせてデータ攪拌で
きる。暗号文の生成のためのデータ不規則化のため、デ
ータ攪拌が使える。
【0076】また請求項9以下の発明によれば、並列に
並べた複数のデータ回転関数手段と、データ回転関数手
段に縦続接続する複数のデータ攪拌手段とを具備し、パ
ラメータのmと並列数Sの値を必要とする値に設定し
て、差分が通過する確率を希望する値以下、例えば、確
率p=1/32768 に設定できる。更に、複数のG関数手
段(データ攪拌手段)は、データ回転関数手段から出力
されるデータまたはこれに入力されるデータと鍵の一部
とを混ぜ合わせてデータ攪拌できる。暗号文の生成のた
めのデータ不規則化のため、データ攪拌が使える。
【0077】更に、この発明のデータ攪拌装置は、デー
タ回転関数手段とG関数手段とを並列に並べるため、L
SI(高集積回路)で実装したときに、直列に並べるの
と比較して高速に実現できる。すなわち、並列数をS、
データ回転関数手段とG関数手段との処理時間をTとし
たとき、並列処理では全体の処理時間は概略値Tであ
り、直列処理では、S×Tの時間を要す。
【0078】以上を要約すると、この発明で説明したデ
ータ攪拌関数装置は、差分攻撃を排除する暗号用のデー
タ攪拌装置として極めて有効に機能する。
【図面の簡単な説明】
【図1】この発明の実施例1を示すブロック図。
【図2】実施例1で用いるデータ攪拌手段としてのG関
数手段3Aの一例を示すブロック図。
【図3】この発明の実施例2を示すブロック図。
【図4】この発明の実施例3を示すブロック図。
【図5】この発明の実施例4を示すブロック図。
【図6】図5中のデータ攪拌手段としての動的転置手段
50の一例を示すブロック図。
【図7】この発明の実施例5を示すブロック図。
【図8】この発明の実施例6を示すブロック図。
【図9】図8中のデータ攪拌手段としてのG関数手段3
−1,3−2の例を示すブロック図。
【図10】この発明の実施例7を示すブロック図。
【図11】この発明の実施例8を示すブロック図。
【図12】この発明の実施例9を示すブロック図。
【図13】この発明の実施例10を示すブロック図。
【図14】DES型暗号装置を示すブロック図。
【図15】DES型暗号のデータ攪拌装置を示すブロッ
ク図。

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 データ回転関数手段と、そのデータ回転
    関数手段に縦続的に接続されたデータ攪拌手段とを具備
    し、 上記データ回転関数手段は、入力された複数ビットから
    なる鍵の一部をパラメータとして、これに入力されたデ
    ータを一方向に回転して出力し、 上記データ攪拌手段は、これに入力された複数ビットの
    データと、上記鍵とを混ぜ合わせてデータ攪拌して出力
    することを特徴とするデータ攪拌装置。
  2. 【請求項2】 入力された複数ビットのデータと、入力
    された複数ビットの鍵とを混ぜ合わせてデータ攪拌して
    出力するデータ攪拌手段と、 上記鍵の一部をパラメータとして上記データを一方向に
    回転して出力するデータ回転関数手段と、 上記データ回転関数手段の出力を上記データ攪拌手段の
    出力との排他的論理和をとって出力する排他的論理和手
    段とを具備するデータ攪拌装置。
  3. 【請求項3】 上記データ回転関数手段と直列に挿入さ
    れ、上記鍵の一部とこれに入力されたデータとを混ぜ合
    わせてデータ攪拌して出力する第2データ攪拌手段を含
    むことを特徴とする請求項2記載のデータ攪拌装置。
  4. 【請求項4】 複数ビットの入力データを、複数ビット
    の鍵の一部をパラメータとして一方向に回転する第1ス
    テップと、 その第1ステップにより回転されたデータと、上記入力
    データとを混ぜ合わせてデータ攪拌して出力する第2ス
    テップと、 を有するデータ攪拌方法。
  5. 【請求項5】 複数ビットの入力データと複数ビットの
    鍵とを混ぜ合わせてデータ攪拌する第1ステップと、 その第1ステップでデータ攪拌されたデータを、上記鍵
    の一部をパラメータとして一方向に回転する第2ステッ
    プと、 を有するデータ攪拌方法。
  6. 【請求項6】 複数ビットの入力データと複数ビットの
    鍵とを混ぜ合わせてデータ攪拌する第1ステップと、 上記入力データを、上記鍵の一部をパラメータとして一
    方向に回転する第2ステップと、 上記第1ステップよりの攪拌されたデータと、上記第2
    ステップよりの回転されたデータとの排他的論理和をと
    る第3ステップと、 を有するデータ攪拌方法。
  7. 【請求項7】 上記第2ステップで回転されたデータを
    上記鍵の一部と混ぜ合わせてデータ攪拌させた後、上記
    第1ステップにより攪拌されたデータとの排他的論理和
    をとることを特徴とする請求項6記載のデータ攪拌方
    法。
  8. 【請求項8】 上記入力データと上記鍵の一部とを混ぜ
    合わせてデータ攪拌した後、上記第2ステップに移るこ
    とを特徴とする請求項6記載のデータ攪拌方法。
  9. 【請求項9】 複数ビットの同一データが入力され、複
    数ビットの鍵が複数に分岐された各1つがそれぞれ供給
    され、それぞれ分岐供給された鍵をパラメータとして上
    記入力データを一方向に回転する複数のデータ回転関数
    手段と、 これらデータ回転関数手段のそれぞれと縦続的に接続さ
    れ、入力されたデータをそれぞれ攪拌する複数のデータ
    攪拌手段と、 上記各データ回転関数手段及びデータ攪拌手段の縦続接
    続の各出力が入力されて排他的論理和演算を行って攪拌
    出力をする排他的論理和演算手段と、 を具備するデータ攪拌装置。
  10. 【請求項10】 上記鍵の他の部分と、上記入力データ
    との論理積をとるAND演算手段を含み、そのAND演
    算手段の演算結果は上記排他的論理和演算手段に入力さ
    れてその入力と排他的論理和演算されることを特徴とす
    る請求項9記載のデータ攪拌装置。
  11. 【請求項11】 上記鍵の他の部分と上記入力データと
    の論理和をとるOR演算手段を含み、そのOR演算手段
    の演算結果は上記排他的論理和演算手段に入力されてそ
    の入力と排他的論理和演算されることを特徴とする請求
    項9記載のデータ攪拌装置。
  12. 【請求項12】 上記複数のデータ攪拌手段の少なくと
    も1つはその入力データと上記鍵の一部とを混ぜ合せて
    データ攪拌をする手段であることを特徴とする請求項
    9,10,11のいずれかに記載のデータ攪拌装置。
  13. 【請求項13】 上記各データ回転関数手段とデータ攪
    拌手段の縦続接続の入力側に共通に設けられ、その入力
    データを転置処理する転置処理手段を含むことを特徴と
    する請求項10または11記載のデータ攪拌装置。
  14. 【請求項14】 上記複数のデータ攪拌手段の少なくと
    も1つはその入力データと上記鍵の一部とを混ぜ合せて
    データ攪拌をする手段であることを特徴とする請求項1
    3記載のデータ攪拌装置。
  15. 【請求項15】 上記各データ回転関数手段とデータ攪
    拌手段の縦続接続の入力側に共通に設けられ、その入力
    データを他のデータに置き換える換字処理手段を含むこ
    とを特徴とする請求項10または11記載のデータ攪拌
    装置。
  16. 【請求項16】 上記複数のデータ攪拌手段の少なくと
    も1つはその入力データと上記鍵の一部とを混ぜ合せて
    データ攪拌をする手段であることを特徴とする請求項1
    1記載のデータ攪拌装置。
  17. 【請求項17】 上記排他的論理和手段に代え、その入
    力モジューロ加算すモジューロ加算手段が設けられるこ
    とを特徴とする請求項2,3,9乃至16のいずれかに
    記載のデータ攪拌装置。
  18. 【請求項18】 複数ビットの入力データUをそれぞれ
    複数ビットの鍵の互いに異なる一部をパラメータとして
    一方向に回転してそれぞれデータV1 ,V2,…とする
    第1ステップと、 これらデータV1 ,V2 ,…をそれぞれデータ攪拌して
    データW1 ,W2 ,…とする第2ステップと、 上記データW1 ,W2 ,…を排他的論理和演算またはモ
    ジューロ演算して出力する第3ステップと、 を有するデータ攪拌方法。
  19. 【請求項19】 上記入力データUと上記鍵の一部とを
    ANDまたはOR演算する第4ステップを含み、 その演算結果を上記第3ステップで上記データW1 ,W
    2 ,…とを排他的論理和演算またはモジューロ演算する
    ことを特徴とする請求項18に記載のデータ攪拌方法。
  20. 【請求項20】 複数ビットの入力データUを転置処理
    または換字処理して上記第1ステップの入力データとす
    る第5ステップを含むことを特徴とする請求項19記載
    のデータ攪拌方法。
  21. 【請求項21】 上記第2ステップにおいてデータ
    1 ,V2 ,…の少なくとも1つは上記鍵の一部と混ぜ
    合せてデータ攪拌することを特徴とする請求項18乃至
    20のいずれかに記載のデータ攪拌方法。
  22. 【請求項22】 上記第1ステップと上記第2ステップ
    との順番を入れかえたことを特徴とする請求項18乃至
    21のいずれかに記載のデータ攪拌方法。
JP5004341A 1992-06-03 1993-01-13 データ攪拌装置およびデータ攪拌方法 Pending JPH0651698A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5004341A JPH0651698A (ja) 1992-06-03 1993-01-13 データ攪拌装置およびデータ攪拌方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP4-142753 1992-06-03
JP14275392 1992-06-03
JP5004341A JPH0651698A (ja) 1992-06-03 1993-01-13 データ攪拌装置およびデータ攪拌方法

Publications (1)

Publication Number Publication Date
JPH0651698A true JPH0651698A (ja) 1994-02-25

Family

ID=26338089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5004341A Pending JPH0651698A (ja) 1992-06-03 1993-01-13 データ攪拌装置およびデータ攪拌方法

Country Status (1)

Country Link
JP (1) JPH0651698A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007041620A (ja) * 2000-03-09 2007-02-15 Mitsubishi Electric Corp データ変換装置及びデータ変換方法及びデータ変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2010072664A (ja) * 1999-02-04 2010-04-02 Cp8 Technologies 物理的解析によってコンピュータシステムを攻撃から保護する秘密鍵暗号化方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010072664A (ja) * 1999-02-04 2010-04-02 Cp8 Technologies 物理的解析によってコンピュータシステムを攻撃から保護する秘密鍵暗号化方法
JP2007041620A (ja) * 2000-03-09 2007-02-15 Mitsubishi Electric Corp データ変換装置及びデータ変換方法及びデータ変換方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP4598744B2 (ja) * 2000-03-09 2010-12-15 三菱電機株式会社 データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体

Similar Documents

Publication Publication Date Title
US5745577A (en) Symmetric cryptographic system for data encryption
EP0839418B1 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
US5222139A (en) Cryptographic method and apparatus
US6314186B1 (en) Block cipher algorithm having a robust security against differential cryptanalysis, linear cryptanalysis and higher-order differential cryptanalysis
KR100435052B1 (ko) 암호화장치
US6304657B1 (en) Data encryption apparatus using odd number of shift-rotations and method
US6189095B1 (en) Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks
Karthigaikumar et al. Simulation of image encryption using AES algorithm
Biham et al. Initial observations on skipjack: Cryptanalysis of skipjack-3xor
Paar et al. The data encryption standard (DES) and alternatives
JPWO2006019152A1 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法
Michener THE “GENERALIZED ROTOR” CRYPTOGRAPHIC OPERATOR AND SOME OF ITS APPLICATIONS
JPH0651698A (ja) データ攪拌装置およびデータ攪拌方法
Rahim et al. Data Security with International Data Encryption Algorithm
JPH09269727A (ja) 暗号化方法および暗号化装置
Arun et al. AES based Text to Pixel Encryption using Color Code Conversion by Modulo Arithmetic
CN116866038B (zh) 动态掩码加密方法及动态掩码加密装置
JPH10303881A (ja) 暗号化復号化装置および方法
JPH10153954A (ja) 暗号装置
Ramesh et al. A novel block-cipher mechanism for information security in cloud system
JP3371981B2 (ja) ブロック暗号作成装置
Salman New method for encryption using mixing advanced encryption standard and blowfish algorithms
Hattab et al. Developing the Complexity and Security of the Twofish Algorithm Through a New Key Scheduling Design
JPH11212451A (ja) 暗号処理装置
Sharp Cryptography