JP2000214769A - デ―タ置換・分割方法および装置とデ―タ置換・分割プログラムを記録した記録媒体 - Google Patents

デ―タ置換・分割方法および装置とデ―タ置換・分割プログラムを記録した記録媒体

Info

Publication number
JP2000214769A
JP2000214769A JP11016238A JP1623899A JP2000214769A JP 2000214769 A JP2000214769 A JP 2000214769A JP 11016238 A JP11016238 A JP 11016238A JP 1623899 A JP1623899 A JP 1623899A JP 2000214769 A JP2000214769 A JP 2000214769A
Authority
JP
Japan
Prior art keywords
register
value
data
bits
substituted
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.)
Granted
Application number
JP11016238A
Other languages
English (en)
Other versions
JP4094758B2 (ja
Inventor
Hiroki Ueda
広樹 植田
Kazumaro Aoki
和麻呂 青木
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 JP01623899A priority Critical patent/JP4094758B2/ja
Priority to US09/487,597 priority patent/US6578061B1/en
Publication of JP2000214769A publication Critical patent/JP2000214769A/ja
Priority to US10/419,241 priority patent/US6850960B2/en
Priority to US10/419,244 priority patent/US6859818B2/en
Application granted granted Critical
Publication of JP4094758B2 publication Critical patent/JP4094758B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 本発明は、共通鍵暗号方式における処理を高
速に行い得るデータ置換・分割方法等を提供することを
目的とする。 【解決手段】 kを整数とし、4kビット長のレジスタを
具備し、16個のkビットデータを2集合に置換し分割す
るとき、Ti に{a4i+j}を代入する手段と、T0
(23k−2k )との論理積をT0 ′に、T2 と(24k
3k+2k −1)との論理積をT2 ′に、T0 ′と
2 ′との論理和をT4 に、T1 と(22k−1)との論
理積をT1 ′に、T3 と(24k−22k)との論理積をT
3 ′に、T1 ′とT3 ′との論理和をT5 に、T0
(24k−23k+2k −1)との論理積をT0″に、T2
と(23k−2k )との論理積をT2 ″に、T0 ″と
2 ″との論理和をT6 に、T1 と(24k−22k)との
論理積をT1 ″に、T3 と(22k−1)との論理積をT
3 ″に、T1 ″とT3 ″論理和をT7 にそれぞれ代入す
る手段とを備えて構成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、特に暗号技術の分
野で用いられるデータ置換処理および分割処理を効率的
に行なうデータ置換・分割方法および装置とデータ置換
・分割プログラムを記録した記録媒体に関するものであ
る。
【0002】
【従来の技術】従来、データを秘匿するためにデータの
暗号化が行われる。このデータの暗号化を行う暗号化技
術には、共通鍵暗号方式と公開鍵暗号方式がある。
【0003】公開鍵暗号方式ではデータを暗号化する鍵
と復号化する鍵が異なっており、通常は暗号化に用いる
鍵を一般に公開し、復号化に用いる鍵は利用者が秘密に
保持する。公開される暗号化に用いる鍵から復号化に用
いる鍵を求めることは、現在の数学的理論および計算機
の計算能力をもってしても現実的な時間には完了しない
ものと信じられている。
【0004】一方、共通鍵暗号方式では、データを暗号
化する鍵と復号化する鍵とは同一である。高速かつ安全
な共通鍵暗号を構成するために、暗号化対象のデータを
適当な長さのブロックに分割し、そのブロック毎に暗号
化する方法をブロック暗号と呼ぶ。ブロック暗号の多く
はFeistel network と呼ばれる構造をもつ。この構造で
は、2nビットの入力をnビットに分割し左右に振り分
け、右側のnビットデータに対して関数fを作用させ、
その出力を左側のnビットデータと排他的論理和を取
り、左右データを交換して同様の操作を繰り返すもので
ある。この構造については、「Bruce Schneier,Applied
Cryptography,2nd edition,John-Wiley and Sons,p.34
7,1996」に示されている。
【0005】また共通鍵暗号方式は、公開鍵暗号方式に
比べて計算に必要な処理量が少なく、単位時間当たりで
暗号処理できるデータ量は数十倍から数百倍多い。した
がって高速な暗号処理が必要な場面においては共通鍵暗
号方式がよく用いられる傾向にある。
【0006】共通鍵暗号方式には、上記に述べた高速性
のみならず、その安全性も必要とされる。近年いくつか
の共通鍵暗号アルゴリズムに対する解読法が提案されて
いる。そのため新しく開発される共通鍵アルゴリズムは
このような解読法に対して常に安全が確保されるように
しなければならない。これらの解読法については、「Br
uce Schneier,Applied Cryptography,2nd edition,John
-Wiley and Sons,pp.285-293,1996 」に示されている。
【0007】これらの解読法を適用しづらくさせるよう
な方法も研究されており、それらの方法を用いることに
より共通鍵暗号アルゴリズムの安全性を高めることが期
待できる。その方法の1つとして、基礎となる暗号アル
ゴリズムへの入力データと出力データとを攻撃者から守
るために、暗号鍵から得られるある種の値と入力データ
および出力データとの排他的論理和を計算する手法があ
る。この方法については「Bruce Schneier,Applied Cry
ptography,2nd edition,John-Wiley and Sons,pp.366-3
67,1996 」に示されている。なお、近年、提案される共
通鍵暗号アルゴリズムでは、この方法を用いて設計され
ているものが多い。
【0008】上記方法を用いて、暗号鍵から得られるあ
る種の値と排他的論理和を取った入力データは、基礎と
なる暗号アルゴリズムの入力データとなる。上記Feiste
l network を用いる場合、この入力データを左右へ分割
することが必要となる。最近設計される共通鍵暗号アル
ゴリズムには、ただ左右へ入力データを分割するだけで
なく、置換処理を行なった後に左右へ入力データを分割
することで安全性の向上を達成しようとしているものも
存在する。そのような例としてE2暗号がある(神田
他、「128ビットブロック暗号E2の提案」、信学技
報ISEC 98-12を参照のこと)。E2暗号ではBP関
数と呼ばれる置換処理を定義し、その後Feistel networ
k のために左右へ入力データを分割している。
【0009】
【発明が解決しようとする課題】しかしながら、このB
P関数を実装する場合、次のような問題点が指摘されて
いた。すなわち、BP関数ではバイト単位の置換処理が
必要であるが、最近のMPUで実装されているワード単
位のレジスタではマスク処理やシフト処理を伴うため処
理時間がかかる点、及び、メモリへ一度コピーしてから
置換処理を行なえたとしても、メモリアクセスにかかる
時間が大きくなり処理時間がかかる点である。これは、
上記に示したような共通鍵暗号方式への高速性を満足さ
せることを困難にするものである。
【0010】本発明は、このような背景のもとになされ
たものであり、ワード単位のレジスタを用いてE2暗号
のBP関数での置換およびFeistel network での左右へ
の分割を高速に処理する。E2暗号では、基礎となる暗
号処理部はバイト単位の処理が行なわれるため、例えば
右側にあるデータの並びは必ずしも仕様に沿う必要はな
い。すなわち、内部にある暗号処理部の実装部が、変更
されたバイト列に対応しておけばよい。
【0011】さらに、本発明では置換処理後に左右に分
割されるバイトの組を、仕様とは異なる列順ではあるが
正しく左右に組として分割する。近年のMPUでは内蔵
されるレジスタ2つを連結させて仮想的に1つのレジス
タとみなし、シフト処理を行ない上位側あるいは下位側
のデータをレジスタに格納する命令が実装される場合も
あり、このような装置が利用可能な場合はさらに効果的
である。
【0012】すなわち、本発明は共通鍵暗号方式におけ
る処理を高速に行い得るデータ置換・分割方法および装
置とデータ置換・分割プログラムを記録した記録媒体を
提供することを目的とする。
【0013】
【課題を解決するための手段】前述した目的を達成する
ために、本発明のうちで請求項1記載の発明は、kを整
数とし、4kビット長のレジスタを具備し、16個のk
ビットデータ{a4i+j}(0≦i≦3,0≦j≦3)を
集合{a4(i+j mod 4)+j}(0≦i≦1,0≦j≦3)
と集合{a4(i+j mod 4)+j}(2≦i≦3,0≦j≦
3)とに置換し分割するデータ置換・分割方法であっ
て、各0≦i≦3において、レジスタTi に{a4i+j
(0≦j≦3)を代入するステップと、レジスタT0
値と(23k−2k )との論理積を取ったデータをレジス
タT0 ′に代入し、レジスタT2 の値と(24k−23k
k −1)との論理積を取ったデータをレジスタT2
に代入し、レジスタT0 ′の値とレジスタT2 ′の値と
の論理和をレジスタT4 に代入するステップと、レジス
タT1 の値と(22k−1)との論理積を取ったデータを
レジスタT1 ′に代入し、レジスタT3 の値と(24k
2k)との論理積を取ったデータをレジスタT3 ′に代
入し、レジスタT1 ′の値とレジスタT3 ′との論理和
をレジスタT5 に代入するステップと、レジスタT0
値と(24k−23k+2k −1)との論理積を取ったデー
タをレジスタT0 ″に代入し、レジスタT2 の値と(2
3k−2k )との論理積を取ったデータをレジスタT2
に代入し、レジスタT0 ″の値とレジスタT2 ″との論
理和をレジスタT6 に代入するステップと、レジスタT
1 の値と(24k−22k)との論理積を取ったデータをレ
ジスタT1 ″に代入し、レジスタT3 の値と(22k
1)との論理積を取ったデータをレジスタT3 ″に代入
し、レジスタT1 ″の値とレジスタT3 ″との論理和を
レジスタT7 に代入するステップと、レジスタT4 ,レ
ジスタT5 とレジスタT6 ,レジスタT7 とを2つのグ
ループとして出力するステップとを有することを要旨と
する。
【0014】また、本発明の請求項2記載の発明は、k
を整数とし、4kビット長のレジスタを具備し、16個
のkビットデータ{a4i+j}(0≦i≦3,0≦j≦
3)を集合{a4(i+j mod 4)+j}(0≦i≦1,0≦j
≦3)と集合{a4(i+j mod 4) +j}(2≦i≦3,0≦
j≦3)とに置換し分割するデータ置換・分割方法であ
って、各0≦i≦3において、レジスタTi
{a4i+j}(0≦j≦3)を代入するステップと、レジ
スタT0 の値とレジスタT2 の値を各々一方の方向にk
ビットローテートするステップと、レジスタT0 とレジ
スタT2 を連結し8kビット長のレジスタとみなし、一
方に2kビットシフトした後の一方端から4kビットを
レジスタT4 とするステップと、レジスタT1 とレジス
タT3 を連結し8kビット長のレジスタとみなし、一方
に2kビットシフトした後の一方端から4kビットをレ
ジスタT5 とするステップと、レジスタT2 とレジスタ
0 を連結し8kビット長のレジスタとみなし、他方に
2kビットシフトした後の他方端から4kビットをレジ
スタT6 とするステップと、レジスタT3 とレジスタT
1 を連結し8kビット長のレジスタとみなし、他方に2
kビットシフトした後の他方端から4kビットをレジス
タT7 とするステップと、レジスタT4 ,レジスタT5
とレジスタT6 ,レジスタT7 とを2つのグループとし
て出力するステップとを有することを要旨とする。
【0015】また、本発明の請求項3記載の発明は、k
を整数とし、4kビット長のレジスタを具備し、16個
のkビットデータ{a4i+j}(0≦i≦3,0≦j≦
3)を集合{a4(i+j mod 4)+j}(0≦i≦1,0≦j
≦3)と集合{a4(i+j mod 4) +j}(2≦i≦3,0≦
j≦3)とに置換し分割するデータ置換・分割装置であ
って、各0≦i≦3において、レジスタTi
{a4i+j}(0≦j≦3)を代入する手段と、レジスタ
0 の値と(23k−2k )との論理積を取ったデータを
レジスタT0 ′に代入し、レジスタT2 の値と(24k
3k+2k −1)との論理積を取ったデータをレジスタ
2 ′に代入し、レジスタT0 ′の値とレジスタT2
との論理和をレジスタT4 に代入する手段と、レジスタ
1 の値と(22k−1)との論理積を取ったデータをレ
ジスタT1 ′に代入し、レジスタT3 の値と(24k−2
2k)との論理積を取ったデータをレジスタT3 ′に代入
し、レジスタT1 ′の値とレジスタT3 ′との論理和を
レジスタT5 に代入する手段と、レジスタT0 の値と
(24k−23k+2k −1)との論理積を取ったデータを
レジスタT0 ″に代入し、レジスタT2 の値と(23k
k )との論理積を取ったデータをレジスタT2 ″に代
入し、レジスタT0 ″の値とレジスタT2 ″との論理和
をレジスタT6 に代入する手段と、レジスタT1 の値と
(24k−22k)との論理積を取ったデータをレジスタT
1 ″に代入し、レジスタT3 の値と(22k−1)との論
理積を取ったデータをレジスタT3 ″に代入し、レジス
タT1 ″の値とレジスタT3 ″との論理和をレジスタT
7 に代入する手段と、レジスタT4 ,レジスタT5 とレ
ジスタT6 ,レジスタT7 とを2つのグループとして出
力する手段とを有することを有することを要旨とする。
【0016】また、本発明の請求項4記載の発明は、k
を整数とし、4kビット長のレジスタを具備し、16個
のkビットデータ{a4i+j}(0≦i≦3,0≦j≦
3)を集合{a4(i+j mod 4)+j}(0≦i≦1,0≦j
≦3)と集合{a4(i+j mod 4) +j}(2≦i≦3,0≦
j≦3)とに置換し分割するデータ置換・分割装置であ
って、各0≦i≦3において、レジスタTi
{a4i+j}(0≦j≦3)を代入する手段と、レジスタ
0 の値とレジスタT2 の値を各々一方の方向にkビッ
トローテートする手段と、レジスタT0 とレジスタT2
を連結し8kビット長のレジスタとみなし、一方に2k
ビットシフトした後の一方端から4kビットをレジスタ
4 とする手段と、レジスタT1 とレジスタT3 を連結
し8kビット長のレジスタとみなし、一方に2kビット
シフトした後の一方端から4kビットをレジスタT5
する手段と、レジスタT2 とレジスタT0 を連結し8k
ビット長のレジスタとみなし、他方に2kビットシフト
した後の他方端から4kビットをレジスタT6 とする手
段と、レジスタT3 とレジスタT1 を連結し8kビット
長のレジスタとみなし、他方に2kビットシフトした後
の他方端から4kビットをレジスタT7 とする手段と、
レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
7 とを2つのグループとして出力する手段とを有する
ことを要旨とする。
【0017】また、本発明の請求項5記載の発明は、前
記レジスタTi とレジスタTj とを連結し8kビット長
のレジスタとみなし、一方または他方に2kビットシフ
トした後の一方端または他方端から4kビットをレジス
タTk とする手段と、この手段のうちいくつかを、レジ
スタTi の値と(22k−1)との論理積を取ったデータ
をレジスタTi ′に代入し、レジスタTj の値と(24k
−22k)との論理積を取ったデータをレジスタTj ′に
代入し、レジスタTi ′の値とレジスタTj ′の値との
論理和をレジスタTk に代入する手段とを有することを
要旨とする。
【0018】また、本発明の請求項6記載の発明は、k
を整数とし、4kビット長のレジスタを具備し、16個
のkビットデータ{a4i+j}(0≦i≦3,0≦j≦
3)を集合{a4(i+j mod 4)+j}(0≦i≦1,0≦j
≦3)と集合{a4(i+j mod 4) +j}(2≦i≦3,0≦
j≦3)とに置換し分割するデータ置換・分割プログラ
ムを記録した記録媒体であって、各0≦i≦3におい
て、レジスタTi に{a4i +j}(0≦j≦3)を代入す
るステップと、レジスタT0 の値と(23k−2k )との
論理積を取ったデータをレジスタT0 ′に代入し、レジ
スタT2 の値と(24k−23k+2k −1)との論理積を
取ったデータをレジスタT2 ′に代入し、レジスタ
0 ′の値とレジスタT2 ′の値との論理和をレジスタ
4 に代入するステップと、レジスタT1 の値と(22k
−1)との論理積を取ったデータをレジスタT1 ′に代
入し、レジスタT3 の値と(24k−22k)との論理積を
取ったデータをレジスタT3 ′に代入し、レジスタ
1 ′の値とレジスタT3 ′との論理和をレジスタT5
に代入するステップと、レジスタT0 の値と(24k−2
3k+2k−1)との論理積を取ったデータをレジスタT
0 ″に代入し、レジスタT2 の値と(23k−2k )との
論理積を取ったデータをレジスタT2 ″に代入し、レジ
スタT0 ″の値とレジスタT2 ″との論理和をレジスタ
6 に代入するステップと、レジスタT1 の値と(24k
−22k)との論理積を取ったデータをレジスタT1″に
代入し、レジスタT3 の値と(22k−1)との論理積を
取ったデータをレジスタT3 ″に代入し、レジスタ
1 ″の値とレジスタT3 ″との論理和をレジスタT7
に代入するステップと、レジスタT4 ,レジスタT5
レジスタT6 ,レジスタT7 とを2つのグループとして
出力するステップとをコンピュータに実行させるプログ
ラムを記録したことを要旨とする。
【0019】また、本発明の請求項7記載の発明は、k
を整数とし、4kビット長のレジスタを具備し、16個
のkビットデータ{a4i+j}(0≦i≦3,0≦j≦
3)を集合{a4(i+j mod 4)+j}(0≦i≦1,0≦j
≦3)と集合{a4(i+j mod 4) +j}(2≦i≦3,0≦
j≦3)とに置換し分割するデータ置換・分割プログラ
ムを記録した記録媒体であって、各0≦i≦3におい
て、レジスタTi に{a4i +j}(0≦j≦3)を代入す
るステップと、レジスタT0 の値とレジスタT2 の値を
各々一方の方向にkビットローテートするステップと、
レジスタT0 とレジスタT2 を連結し8kビット長のレ
ジスタとみなし、一方に2kビットシフトした後の一方
端から4kビットをレジスタT4 とするステップと、レ
ジスタT1 とレジスタT3 を連結し8kビット長のレジ
スタとみなし、一方に2kビットシフトした後の一方端
から4kビットをレジスタT5 とするステップと、レジ
スタT2 とレジスタT0 を連結し8kビット長のレジス
タとみなし、他方に2kビットシフトした後の他方端か
ら4kビットをレジスタT6 とするステップと、レジス
タT3 とレジスタT1 を連結し8kビット長のレジスタ
とみなし、他方に2kビットシフトした後の他方端から
4kビットをレジスタT7 とするステップと、レジスタ
4 ,レジスタT5 とレジスタT6 ,レジスタT7 とを
2つのグループとして出力するステップとをコンピュー
タに実行させるプログラムを記録したことを要旨とす
る。
【0020】すなわち、本発明では、kを整数とし、4
kビット長のレジスタをレジスタTi と表し、16個の
kビットデータ{a4i+j}(0≦i≦3,0≦j≦3)
をBP関数への入力とし、各0≦i≦3においてレジス
タTi に{a4i+j}(0≦j≦3)を、
【数1】 のように代入する。
【0021】以後、この形式で代入されていることを Ti =[a4i+04i+14i+24i+3] のように記述する。
【0022】ここで集合[L]と集合[R]を、
【数2】 [L]={a4(i+j mod 4)+j|0≦i≦1,0≦j≦3} ={a0 ,a3 ,a4 ,a5 ,a9 ,a10,a14,a15} [R]={a4(i+j mod 4)+j|2≦i≦3,0≦j≦3} ={a1 ,a2 ,a6 ,a7 ,a8 ,a11,a12,a13} とそれぞれ定義しておく。
【0023】レジスタT0 とレジスタT2 のデータ並び
は、両端に集合[L]または集合[R]に属するデータ
が配置され、中央の2つに集合[R]または集合[L]
に属するデータが配置されている。
【0024】このままの配置では、シフト命令を用いて
のデータの分離は困難であるため、レジスタT1 または
レジスタT3 のように、一方、例えば右側または他方、
すなわち左側に集合[L]または集合[R]のデータを
まとめる。そのため、まずレジスタT0 とレジスタT2
を一方方向に、すなわち右周りにkビットローテートさ
せる。
【0025】結果として以下のようにデータが配置され
る。
【0026】 T0 =[a3 0 1 2 ] T1 =[a4 5 6 7 ] T2 =[a118 9 10] T3 =[a12131415] これによりレジスタTi (0≦i≦1)の上位2kビッ
トには集合[L]に属するデータが配置され、下位2k
ビットには集合[R]に属するデータが配置される。ま
た、レジスタTi (2≦i≦3)の上位2kビットには
集合[R]に属するデータが配置され、下位2kビット
には集合[L]に属するデータが配置される。
【0027】次に、レジスタT0 とレジスタT2 を連結
し8kビット長のレジスタとみなし、右に2kビットシ
フトした後の右から4kビットをレジスタT4 とし、レ
ジスタT1 とレジスタT3 を連結し8kビット長のレジ
スタとみなし、右に2kビットシフトした後の右から4
kビットをレジスタT5 とする。
【0028】すなわち、 T4 =[a1 2 118 ] T5 =[a6 7 1213] であって、これより、レジスタTi (4≦i≦5)は集
合[R]に属するデータを過不足なく保持している。
【0029】同様に、レジスタT2 とレジスタT0 を連
結し8kビット長のレジスタとみなし、左に2kビット
シフトした後の左から4kビットをレジスタT6 とし、
レジスタT3 とレジスタT1 を連結し8kビット長のレ
ジスタとみなし、左に2kビットシフトした後の左から
4kビットをレジスタT7 とする。
【0030】すなわち T6 =[a9 103 0 ] T7 =[a14154 5 ] であり、これより、レジスタTi (6≦i≦7)は集合
[L]に属するデータを過不足なく保持している。
【0031】
【発明の実施の形態】以下、図面を用いて本発明の実施
の形態について説明する。
【0032】図1は本発明の一実施の形態に係るデータ
置換・分割装置の構成を示すブロック図である。
【0033】図1に示すように、制御部1は本実施形態
の処理における各処理部および処理器等のコントロール
を行なうものである。データ記憶部11には予め入力デ
ータ{a4i+j}(0≦i≦3,0≦j≦3)を格納し、
処理終了時には出力データを格納する。算術演算部13
ではレジスタが具備され、ローテートやシフト処理が行
なえる。
【0034】図2および図3はE2暗号におけるBP関
数のデータの置換処理を図示したものである。図2で
は、出力データの先頭4バイトが置換処理によってどの
ように構成されているのかを示している。図3では、こ
の処理による集合[L]の要素を示している。
【0035】図4では、本実施形態を実行することによ
ってレジスタT6 およびレジスタT7 に格納されるデー
タの並びを示している。図3と比較することによりレジ
スタT6 およびレジスタT7 には集合[L]の要素がす
べて含まれており、BP関数およびFeistel network の
左右への振り分けが行なわれていることが判る。
【0036】ここで請求項2,5,7に記載のローテー
トおよびシフトを用いる手法を選択した場合には、レジ
スタT6 およびレジスタT7 内のデータ並びは右2バイ
トと左2バイトが入れ替わる形になる。すなわち、図4
で示されているレジスタT4のデータ列[a9 10
3 0 ]は[a3 0 9 10]となる。し
かしながら集合[L]の要素としては過不足なく、よっ
て目的は達成される。
【0037】上述したように、本実施形態により、E2
暗号の仕様において、BP関数の入出力を左からそれぞ
れ4バイトずつまとめてレジスタに代入するならば、入
力の1つのレジスタにある4バイトは、出力の4つのレ
ジスタに1バイトずつ代入されていることになる。これ
により、1つのレジスタに対して演算を行ない、その結
果を1つのレジスタに格納するような、MPUにある多
くの命令では、1つの演算命令に対して1バイトしか処
理できない。
【0038】従って、BP関数を実装するには16個の
命令が最低限必要となる。実際には、マスク処理や論理
和処理などで16以上の命令が必要である。
【0039】なお、レジスタの各バイトを直接入命令に
用いた場合には16命令で済む場合も考えられるが、一
部のMPUではその構造上ペナルティが発生し、通常の
16命令分以上の処理時間がかかることが判る。
【0040】さらに、入力データを一旦メモリに書き込
んだ後に、BP関数の置換を考慮してバイト単位にデー
タを読み込む方法もあるが、近年のMPUではメモリへ
のアクセスにはペナルティが発生する場合が多く、また
上記と同様に構造上のペナルティが発生する場合もあ
り、やはり16命令分以上の処理時間がかかることが判
る。
【0041】本実施形態により、E2暗号のBP部分は
ローテート命令2つと2つのレジスタを連結したものを
右または左にシフトし、右または左の該当データをレジ
スタに代入する命令4つで構成できる。後半の処理を行
なう命令は、例えばIntel 80386 以降のMPUでは標準
搭載されている命令であり、その実装には問題がない。
従って、既存方法より高速にBP関数を実行できる。
【0042】また、具体的にこの命令が実装されていな
いMPUではマスク命令2つと論理和命令1つで代用す
ることができる。すなわち、ローテート後のレジスタT
0 とレジスタT2 を連結し8kビット長のレジスタとみ
なし、右に2kビットシフトした後の右から4kビット
をレジスタT5 とする手段においては、レジスタT0
(22k−1)との論理積を取ったデータをレジスタ
0 ′に代入し、レジスタT2 と(24k−22k)との論
理積を取ったデータをレジスタT2 ′に代入し、レジス
タT0 ′とレジスタT2 ′との論理和をレジスタT4
代入すればよい。
【0043】すなわち、 T0 ′=[0 0 a1 2 ] T2 ′=[a118 0 0] T4 =[a118 1 2 ] となる。
【0044】この場合でも、ローテート命令2つを合わ
せて全体で14命令で記述できるため、既存方法より高
速にBP関数を実行できる。
【0045】なお、この場合のレジスタT4 は、前述の
レジスタT4 の保持する値と比較すると、上位2つの値
と下位2つの値が入れ違いとなっている点が異なる。し
かしレジスタT4 が保持する値はa1 ,a2 ,a8 ,a
11の4つであることに変わりはなく、従ってレジスタT
4 とレジスタT5 とで集合[R]の値を過不足なく保持
していることが保証される。
【0046】以上のように本実施形態は、暗号技術で用
いられるデータ置換処理および分割処理に関して、特に
E2暗号のBP関数部の高速な実装を満足することがで
きる。
【0047】また、このようなE2暗号のBP関数等に
おけるデータ置換・分割演算は上述したデータ置換・分
割プログラムにより実現され、該プログラムは記録媒体
に記録して提供される。このようなデータ置換・分割プ
ログラムが記録された記録媒体を利用して、そのデータ
置換・分割プログラムの流通性を高めることができる。
【0048】
【発明の効果】以上のように本発明は、共通鍵暗号方式
におけるデータ置換処理および分割処理に関し、処理を
高速に行い得る等の効果を奏する。
【図面の簡単な説明】
【図1】本発明に係るデータ置換・分割装置の一実施形
態の概略の構成を示すブロック図である。
【図2】E2暗号のBP関数部の置換処理を説明する図
である。
【図3】BP関数の出力データの一部を示した図であ
る。
【図4】レジスタT4 とレジスタT5 の出力データを示
した図である。
【符号の説明】
1 制御部 11 データ記憶部 13 算術演算部 13a レジスタ群

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 kを整数とし、4kビット長のレジスタ
    を具備し、16個のkビットデータ{a4i+j}(0≦i
    ≦3,0≦j≦3)を集合{a4(i+j mod 4) +j}(0≦
    i≦1,0≦j≦3)と集合{a4(i+j mod 4)+j}(2
    ≦i≦3,0≦j≦3)とに置換し分割するデータ置換
    ・分割方法であって、 各0≦i≦3において、レジスタTi に{a4i+j}(0
    ≦j≦3)を代入するステップと、 レジスタT0 の値と(23k−2k )との論理積を取った
    データをレジスタT0′に代入し、レジスタT2 の値と
    (24k−23k+2k −1)との論理積を取ったデータを
    レジスタT2 ′に代入し、レジスタT0 ′の値とレジス
    タT2 ′の値との論理和をレジスタT4 に代入するステ
    ップと、 レジスタT1 の値と(22k−1)との論理積を取ったデ
    ータをレジスタT1 ′に代入し、レジスタT3 の値と
    (24k−22k)との論理積を取ったデータをレジスタT
    3 ′に代入し、レジスタT1 ′の値とレジスタT3 ′と
    の論理和をレジスタT5 に代入するステップと、 レジスタT0 の値と(24k−23k+2k −1)との論理
    積を取ったデータをレジスタT0 ″に代入し、レジスタ
    2 の値と(23k−2k )との論理積を取ったデータを
    レジスタT2 ″に代入し、レジスタT0 ″の値とレジス
    タT2 ″との論理和をレジスタT6 に代入するステップ
    と、 レジスタT1 の値と(24k−22k)との論理積を取った
    データをレジスタT1″に代入し、レジスタT3 の値と
    (22k−1)との論理積を取ったデータをレジスタ
    3 ″に代入し、レジスタT1 ″の値とレジスタT3
    との論理和をレジスタT7 に代入するステップと、 レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
    7 とを2つのグループとして出力するステップとを有
    することを特徴とするデータ置換・分割方法。
  2. 【請求項2】 kを整数とし、4kビット長のレジスタ
    を具備し、16個のkビットデータ{a4i+j}(0≦i
    ≦3,0≦j≦3)を集合{a4(i+j mod 4) +j}(0≦
    i≦1,0≦j≦3)と集合{a4(i+j mod 4)+j}(2
    ≦i≦3,0≦j≦3)とに置換し分割するデータ置換
    ・分割方法であって、 各0≦i≦3において、レジスタTi に{a4i+j}(0
    ≦j≦3)を代入するステップと、 レジスタT0 の値とレジスタT2 の値を各々一方の方向
    にkビットローテートするステップと、 レジスタT0 とレジスタT2 を連結し8kビット長のレ
    ジスタとみなし、一方に2kビットシフトした後の一方
    端から4kビットをレジスタT4 とするステップと、 レジスタT1 とレジスタT3 を連結し8kビット長のレ
    ジスタとみなし、一方に2kビットシフトした後の一方
    端から4kビットをレジスタT5 とするステップと、 レジスタT2 とレジスタT0 を連結し8kビット長のレ
    ジスタとみなし、他方に2kビットシフトした後の他方
    端から4kビットをレジスタT6 とするステップと、 レジスタT3 とレジスタT1 を連結し8kビット長のレ
    ジスタとみなし、他方に2kビットシフトした後の他方
    端から4kビットをレジスタT7 とするステップと、 レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
    7 とを2つのグループとして出力するステップとを有
    することを特徴とするデータ置換・分割方法。
  3. 【請求項3】 kを整数とし、4kビット長のレジスタ
    を具備し、16個のkビットデータ{a4i+j}(0≦i
    ≦3,0≦j≦3)を集合{a4(i+j mod 4) +j}(0≦
    i≦1,0≦j≦3)と集合{a4(i+j mod 4)+j}(2
    ≦i≦3,0≦j≦3)とに置換し分割するデータ置換
    ・分割装置であって、 各0≦i≦3において、レジスタTi に{a4i+j}(0
    ≦j≦3)を代入する手段と、 レジスタT0 の値と(23k−2k )との論理積を取った
    データをレジスタT0′に代入し、レジスタT2 の値と
    (24k−23k+2k −1)との論理積を取ったデータを
    レジスタT2 ′に代入し、レジスタT0 ′の値とレジス
    タT2 ′との論理和をレジスタT4 に代入する手段と、 レジスタT1 の値と(22k−1)との論理積を取ったデ
    ータをレジスタT1 ′に代入し、レジスタT3 の値と
    (24k−22k)との論理積を取ったデータをレジスタT
    3 ′に代入し、レジスタT1 ′の値とレジスタT3 ′と
    の論理和をレジスタT5 に代入する手段と、 レジスタT0 の値と(24k−23k+2k −1)との論理
    積を取ったデータをレジスタT0 ″に代入し、レジスタ
    2 の値と(23k−2k )との論理積を取ったデータを
    レジスタT2 ″に代入し、レジスタT0 ″の値とレジス
    タT2 ″との論理和をレジスタT6 に代入する手段と、 レジスタT1 の値と(24k−22k)との論理積を取った
    データをレジスタT1″に代入し、レジスタT3 の値と
    (22k−1)との論理積を取ったデータをレジスタ
    3 ″に代入し、レジスタT1 ″の値とレジスタT3
    との論理和をレジスタT7 に代入する手段と、 レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
    7 とを2つのグループとして出力する手段とを有する
    ことを特徴とするデータ置換・分割装置。
  4. 【請求項4】 kを整数とし、4kビット長のレジスタ
    を具備し、16個のkビットデータ{a4i+j}(0≦i
    ≦3,0≦j≦3)を集合{a4(i+j mod 4) +j}(0≦
    i≦1,0≦j≦3)と集合{a4(i+j mod 4)+j}(2
    ≦i≦3,0≦j≦3)とに置換し分割するデータ置換
    ・分割装置であって、 各0≦i≦3において、レジスタTi に{a4i+j}(0
    ≦j≦3)を代入する手段と、 レジスタT0 の値とレジスタT2 の値を各々一方の方向
    にkビットローテートする手段と、 レジスタT0 とレジスタT2 を連結し8kビット長のレ
    ジスタとみなし、一方に2kビットシフトした後の一方
    端から4kビットをレジスタT4 とする手段と、 レジスタT1 とレジスタT3 を連結し8kビット長のレ
    ジスタとみなし、一方に2kビットシフトした後の一方
    端から4kビットをレジスタT5 とする手段と、 レジスタT2 とレジスタT0 を連結し8kビット長のレ
    ジスタとみなし、他方に2kビットシフトした後の他方
    端から4kビットをレジスタT6 とする手段と、 レジスタT3 とレジスタT1 を連結し8kビット長のレ
    ジスタとみなし、他方に2kビットシフトした後の他方
    端から4kビットをレジスタT7 とする手段と、 レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
    7 とを2つのグループとして出力する手段とを有する
    ことを特徴とするデータ置換・分割装置。
  5. 【請求項5】 前記レジスタTi とレジスタTj とを連
    結し8kビット長のレジスタとみなし、一方または他方
    に2kビットシフトした後の一方端または他方端から4
    kビットをレジスタTk とする手段と、 この手段のうちいくつかを、レジスタTi の値と(22k
    −1)との論理積を取ったデータをレジスタTi ′に代
    入し、レジスタTj の値と(24k−22k)との論理積を
    取ったデータをレジスタTj ′に代入し、レジスタ
    i ′の値とレジスタTj ′の値との論理和をレジスタ
    k に代入する手段とを有することを特徴とする請求項
    4記載のデータ置換・分割装置。
  6. 【請求項6】 kを整数とし、4kビット長のレジスタ
    を具備し、16個のkビットデータ{a4i+j}(0≦i
    ≦3,0≦j≦3)を集合{a4(i+j mod 4) +j}(0≦
    i≦1,0≦j≦3)と集合{a4(i+j mod 4)+j}(2
    ≦i≦3,0≦j≦3)とに置換し分割するデータ置換
    ・分割プログラムを記録した記録媒体であって、 各0≦i≦3において、レジスタTi に{a4i+j}(0
    ≦j≦3)を代入するステップと、 レジスタT0 の値と(23k−2k )との論理積を取った
    データをレジスタT0′に代入し、レジスタT2 の値と
    (24k−23k+2k −1)との論理積を取ったデータを
    レジスタT2 ′に代入し、レジスタT0 ′の値とレジス
    タT2 ′の値との論理和をレジスタT4 に代入するステ
    ップと、 レジスタT1 の値と(22k−1)との論理積を取ったデ
    ータをレジスタT1 ′に代入し、レジスタT3 の値と
    (24k−22k)との論理積を取ったデータをレジスタT
    3 ′に代入し、レジスタT1 ′の値とレジスタT3 ′と
    の論理和をレジスタT5 に代入するステップと、 レジスタT0 の値と(24k−23k+2k −1)との論理
    積を取ったデータをレジスタT0 ″に代入し、レジスタ
    2 の値と(23k−2k )との論理積を取ったデータを
    レジスタT2 ″に代入し、レジスタT0 ″の値とレジス
    タT2 ″との論理和をレジスタT6 に代入するステップ
    と、 レジスタT1 の値と(24k−22k)との論理積を取った
    データをレジスタT1″に代入し、レジスタT3 の値と
    (22k−1)との論理積を取ったデータをレジスタ
    3 ″に代入し、レジスタT1 ″の値とレジスタT3
    との論理和をレジスタT7 に代入するステップと、 レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
    7 とを2つのグループとして出力するステップとをコ
    ンピュータに実行させるプログラムを記録したコンピュ
    ータ読み取り可能な記録媒体。
  7. 【請求項7】 kを整数とし、4kビット長のレジスタ
    を具備し、16個のkビットデータ{a4i+j}(0≦i
    ≦3,0≦j≦3)を集合{a4(i+j mod 4) +j}(0≦
    i≦1,0≦j≦3)と集合{a4(i+j mod 4)+j}(2
    ≦i≦3,0≦j≦3)とに置換し分割するデータ置換
    ・分割プログラムを記録した記録媒体であって、 各0≦i≦3において、レジスタTi に{a4i+j}(0
    ≦j≦3)を代入するステップと、 レジスタT0 の値とレジスタT2 の値を各々一方の方向
    にkビットローテートするステップと、 レジスタT0 とレジスタT2 を連結し8kビット長のレ
    ジスタとみなし、一方に2kビットシフトした後の一方
    端から4kビットをレジスタT4 とするステップと、 レジスタT1 とレジスタT3 を連結し8kビット長のレ
    ジスタとみなし、一方に2kビットシフトした後の一方
    端から4kビットをレジスタT5 とするステップと、 レジスタT2 とレジスタT0 を連結し8kビット長のレ
    ジスタとみなし、他方に2kビットシフトした後の他方
    端から4kビットをレジスタT6 とするステップと、 レジスタT3 とレジスタT1 を連結し8kビット長のレ
    ジスタとみなし、他方に2kビットシフトした後の他方
    端から4kビットをレジスタT7 とするステップと、 レジスタT4 ,レジスタT5 とレジスタT6 ,レジスタ
    7 とを2つのグループとして出力するステップとをコ
    ンピュータに実行させるプログラムを記録したコンピュ
    ータ読み取り可能な記録媒体。
JP01623899A 1999-01-19 1999-01-25 デ―タ置換・分割方法および装置 Expired - Lifetime JP4094758B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP01623899A JP4094758B2 (ja) 1999-01-25 1999-01-25 デ―タ置換・分割方法および装置
US09/487,597 US6578061B1 (en) 1999-01-19 2000-01-19 Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
US10/419,241 US6850960B2 (en) 1999-01-19 2003-04-21 Inverse calculation apparatus and recording medium having stored thereon a program for executing inverse calculation
US10/419,244 US6859818B2 (en) 1999-01-19 2003-04-21 Method and apparatus for permuting input data and recording medium having stored thereon a program for executing permutation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01623899A JP4094758B2 (ja) 1999-01-25 1999-01-25 デ―タ置換・分割方法および装置

Publications (2)

Publication Number Publication Date
JP2000214769A true JP2000214769A (ja) 2000-08-04
JP4094758B2 JP4094758B2 (ja) 2008-06-04

Family

ID=11910989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01623899A Expired - Lifetime JP4094758B2 (ja) 1999-01-19 1999-01-25 デ―タ置換・分割方法および装置

Country Status (1)

Country Link
JP (1) JP4094758B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011052587A1 (ja) * 2009-10-27 2011-05-05 日本電気株式会社 ブロック暗号装置、ブロック暗号化方法およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011052587A1 (ja) * 2009-10-27 2011-05-05 日本電気株式会社 ブロック暗号装置、ブロック暗号化方法およびプログラム
JP5488608B2 (ja) * 2009-10-27 2014-05-14 日本電気株式会社 ブロック暗号装置、ブロック暗号化方法およびプログラム
US8891758B2 (en) 2009-10-27 2014-11-18 Nec Corporation Block encryption device and method and computer program

Also Published As

Publication number Publication date
JP4094758B2 (ja) 2008-06-04

Similar Documents

Publication Publication Date Title
US6578061B1 (en) Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
JP3746098B2 (ja) データの暗号化装置
JP3679936B2 (ja) 暗復号装置及び記憶媒体
CA2578316C (en) Table splitting for cryptographic processes
US7720225B2 (en) Table splitting for cryptographic processes
US20070064933A1 (en) Method of symmetric key data encryption
US8619985B2 (en) Table splitting for cryptographic processes
US7499542B2 (en) Device and method for encrypting and decrypting a block of data
JP2000305453A (ja) 暗号化装置,復号装置,および暗号化・復号装置
JP5652363B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
WO2021129470A1 (zh) 基于多项式完全同态的二进制数据加密系统及方法
JP4094758B2 (ja) デ―タ置換・分割方法および装置
EP1016240A1 (en) Improved block cipher method
CN113541942B (zh) 基于arx白盒分组密码的数字内容加解密方法
CN110034918A (zh) 一种sm4加速方法和装置
JP5435845B2 (ja) 信号処理装置
JP5113833B2 (ja) 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置
JP3039334B2 (ja) 暗号装置
JP4612501B2 (ja) ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム
JPS6281145A (ja) デ−タ暗号化方式
JP2934431B1 (ja) 暗号鍵スケジュール装置、およびそのプログラム記録媒体
JP3295887B2 (ja) 暗号/復号装置
JP3492988B2 (ja) データ変換装置及びそのプログラム記録媒体
JP4335374B2 (ja) データ変換装置及びデータ変換方法
JP3795315B2 (ja) 暗号化・復号化回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080130

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: 20080304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080306

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110314

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110314

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120314

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term