JP3907976B2 - F関数内部にspn構造を用いた演算装置および演算方法 - Google Patents
F関数内部にspn構造を用いた演算装置および演算方法 Download PDFInfo
- Publication number
- JP3907976B2 JP3907976B2 JP2001207326A JP2001207326A JP3907976B2 JP 3907976 B2 JP3907976 B2 JP 3907976B2 JP 2001207326 A JP2001207326 A JP 2001207326A JP 2001207326 A JP2001207326 A JP 2001207326A JP 3907976 B2 JP3907976 B2 JP 3907976B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- elements
- value
- rows
- columns
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は共通鍵ブロック暗号化方式に係り、さらに詳しくはFeistel 構造と呼ばれる構造内のF関数の内部で用いられる複数のSボックスに対する入出力ビット数が、複数のSボックスの間で同一でない場合に、複数のSボックスの後に備えられる線形変換部として、データ拡散性のよい線形変換部を生成し、その線形変換部を用いて入力データに対する暗号化を行う暗号化装置、および暗号化方法に関する。
【0002】
【従来の技術】
高度情報化社会を迎え、情報セキュリティの確保は緊急の課題となっている。情報セキュリティの基本となるのはデータの暗号化である。高度情報化社会において高速、かつ安全な通信を実現するために、共通鍵ブロック暗号は不可欠の技術である。この共通鍵ブロック暗号のアルゴリズムとして、例えば応用分野に応じて様々な方式が提案されているが、その1つとしてFeistel 構造と呼ばれる単純な繰返し構造のアルゴリズムがある。
【0003】
図15はこのFeistel 構造が16段繰り返されたDES暗号方式の説明図である。同図において入力P、例えば64ビットは右側32ビットと左側32ビットとに分割され、右側32ビットはF関数51と呼ばれる非線形関数に入力され、その出力と左側32ビットとがXOR52によって排他的論理和がとられ、その結果は右側32ビットとして次の段に与えられ、次の段への左側32ビットとしては入力64ビットのうち右側32ビットがそのまま与えられる。
【0004】
図16は図15内のF関数51の構成例である。入力、例えば32ビットはビット拡張部E61によって48ビットに拡張され、XOR62によってその48ビットと鍵Ki 48ビットとの排他的論理和がとられ、その出力は6ビットずつに分割されてSボックスと呼ばれる非線形関数にそれぞれ入力される。各Sボックス63の出力は、例えば4ビットとされ、合計32ビットが線形関数P64に入力され、データの拡散が行われる。このような構造は一般にSPN(サブスティテューションパーミュテーションネットワーク)構造と呼ばれる。
【0005】
Sボックスは暗号装置の非線形の撹拌出力を得るため、またSボックスに続いて行われる線形関数Pは、Sボックスによる局所的な非線形出力をデータ全体に拡散させるために用いられるが、暗号装置に組み込まれる上で拡散性のよい線形変換とは何か、具体的にどう求めるか、という研究が従来より行われている。一般に、暗号に用いられる線形変換としては、一つのSボックスの出力が次のラウンドにおいて、出来る限り多くのSボックスの入力に関係することが望ましいが、現在ではより拡張された線形関数として、次のような性質を満たすものがよいとされている。すなわち、Sボックスの入出力ビット数sに対して、線形変換Pの入力Xおよび出力Yをsビット単位、t個のブロックX=(x1 ,・・・,xt ),Y=(y1 ,・・・,yt ),(各xi ,yj はsビット)に分割した場合、
Y=P(X)
の入出力間で成立する任意の線形関係式
f(x1 ,・・・,xt ,y1 ,・・・,yt )=0
には、入出力xi ,yj 合わせて2t個の変数のうち、t+1個以上の変数が含まれている(=係数が0ではない)というものである。
【0006】
このような性質を満たす線形変換PとしてMDS変換が知られている。この変換は線形変換Pにおけるデータの拡散性を定義する1つの概念としての分岐数を最大とする線形変換である。この分岐数は暗号に対する差分攻撃や、線形攻撃に対する強度を評価するパラメータであり、その詳細については次の文献で説明されている。
【0007】
文献) 共通鍵ブロック暗号の選択/設計/評価に関するドキュメント、通信・放送機構
図17はそのようなMDS変換を実現する線形関数Pの説明図である。同図においては、4つのSボックス71へのそれぞれの入力、および出力は8ビットであり、合計32ビットが入力xとして線形関数Pに与えられるものとする。線形関数Pへの入力x、および出力yを、それぞれSボックスに対応させて、8ビットずつに分割した変数xi (i=1〜4)、yj (j=1〜4)とする。
【0008】
ここでxi に入力差分Δxi が与えられた時、そのiの集合を次のように書き、これを入力アクティブSボックスと名付ける。
{i|Δxi ≠0}
例えばx1 ,x2 に入力差分が与えられた時、この集合は{1,2}となる。
【0009】
この入力アクティブSボックスに対応して、出力差分Δyj が生じるyj に対応して、次の集合を出力アクティブSボックスと名付ける。
{j|Δyj ≠0}
これら2つの集合の和集合
{i|Δxi ≠0}U{j|Δyj ≠0}
をアクティブSボックスと名付ける。
【0010】
そしてこの集合アクティブSボックスの要素の数actS(P)の最小値は、線形変換Pによって決定される。アクティブSボックスの要素の数の最小値
min (actS(P))
をアクティブSボックスの数と呼ぶことにする。このアクティブSボックスの数の最大値は、前述の線形関係式に含まれる変数の数(t+1)に一致するとされている。このアクティブSボックスの数の最大値が、例えば5となる線形変換Pが存在するとすれば、入力xi (i=1〜4)の1個が変化すると、出力yj (j=1〜4)の4個が変化することになり、また出力の1個は入力の5個から影響されることになる。
【0011】
図18はこのようなMDS変換に相当するMDS行列の説明図である。同図においてMDS行列は、それぞれ例えば0、または1の要素からなる8行、8列の部分的な行列aij(i=1〜4,j=1〜4)から構成されている。このaijの行数と列数は、図17で説明したSボックス71の入出力ビット数に対応する。
【0012】
このようなMDS行列が持つべき性質を説明する。図18の行列が、MDS行列として図17で説明した線形関数Pに望まれる高い拡散性を有するためには、部分的な行列aijを要素として考えた場合の4行、4列の全体から、行数と列数が等しい任意の小行列を選択した時に、その全ての小行列が正則であることが必要とされている。
【0013】
すなわち例えば1行と1列を指定した(1,1)小行列、2行と2列を指定した(2,2)小行列、3行と3列を指定した(3,3)小行列、および行列全体と一致する(4,4)小行列の全てが、逆行列を持ち、同じ配置の行列式が0でなく、ランク(階数)がフルであるという性質を持つものとされている。
【0014】
【発明が解決しようとする課題】
このように共通鍵ブロック暗号化方式におけるFeistel 構造内のF関数の中で、データの拡散に重要な役割を果たす線形変換PとしてのMDS行列の設計は、従来は複数のSボックスの入出力サイズが等しいことを前提として行われていたが、複数のSボックスの間で入出力サイズが異なる場合については、適切な線形変換Pが存在するか否か、存在するとすればその変換をどのように構成すればよいかについては、従来全く知られていないという問題点があった。
【0015】
本発明の課題は、上述の問題点に鑑み、複数のSボックスの間で入出力サイズが異なる場合に、データの拡散性に優れた線形変換が存在するか否かを判定し、そのような線形変換が存在する場合に、そのような線形変換に相当する擬似MDS行列を生成し、それを用いて入力データに対応する暗号文を生成する暗号文生成装置、および生成方法を提供することである。
【0016】
【課題を解決するための手段】
図1は本発明の演算装置の原理構成ブロック図である。同図は、Feistel 構造のF関数の内部に、複数のSボックスと線形変換部とを備える演算装置1の原理構成ブロック図である。
【0017】
図1においてビット数集合入力手段2は、演算装置1に与えられる入力データの全ビット数を非均等に分割したビット数の集合T={t1 ,t2 ,t3 ,・・・,tr }の入力を受け取るものである。
【0018】
また線形変換部存在可能性指示数値出力手段3は、分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応して、データ拡散性に優れた線形変換部の存在可能性を示す値、例えばアクティブSボックスの数の最大値AT を出力するものである。
【0019】
本発明の実施の形態においては、このAT の値が正である時、適切な線形変換部が存在すると判定する線形変換部存在判定手段4を更に備えることも、またそのような線形変換部として、ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成する擬似MDS行列生成手段5を更に備えることもできる。
【0020】
また発明の実施の形態においては、線形変換部存在可能性指示数値出力手段3が、前述のビット数集合の要素から任意のk個を選んで生成した集合の要素の和の最小値uk (k=1,2,・・・,r)を求める最小値決定手段と、同様にk個を選んで生成した集合の要素の和の最大値vk を求める最大値決定手段とを更に備え、数値kに対してuk ≧vk'(k′=0,1,・・・r,v0 =0)を満たすk′の最大値をkから減算した値をwk とし、wk の最大値を(r+1)の値から減算してAT の値を求めることもできる。
【0021】
更に本発明の実施の形態においては、擬似MDS行列生成手段5は、要素が0、または1のti 行、tj 列の部分行列Mijを要素としてr行、r列に並べた行列をM=(Mij)(i,j=1,2,・・・,r)とし、e−1から(AT −1)までの各正数に対して、c(e)=e+r−AT +1求め、集合Tの要素をe個任意に選んだ集合T1 と、要素をc(e)個任意に選んだ集合T2 を求め、その集合(T1 ,T2 )に対応する任意のあらゆるMの小行列、および集合(T2 ,T1 )に対応する任意のあらゆるMの小行列の階数の値がそれぞれ小行列の行数、または列数のいずれかに等しい行列Mを求めることもできる。
【0022】
この時、例えば集合(T1 ,T2 )に対応する小行列は、前述の部分行列Mijのうちで、集合T1 の各要素にそれぞれ対応する行と、集合T2 の各要素に対応する列によって指定される部分行列によって構成されることもできる。
【0023】
本発明の演算方法として、複数のSボックスと線形変換部とを備えるSPN構造をF関数の内部に用いる演算方法において、与えられる入力データのビット数を非均等に分割したビット数の集合Tの入力を受け取り、分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値、例ばアクティブSボックスの数の最大値AT を出力する方法が用いらる。
【0024】
この方法においては、発明の実施形態では、AT の値が正である時、適切な線形変換部が存在すると判定することもでき、またそのような線形変換部として、ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成することもできる。
【0025】
更に本発明においては、複数のSボックスと線形変換部とを備えるSPN構造を、F関数の内部に用いた演算を実行する計算機によって使用される記憶媒体として、与えられる入力データの全ビット数を非均等に分割したビット数集合Tの入力を受け取るステップと、分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値、例えばアクティブSボックスの数の最大値AT を出力するステップとを計算機に実行させるためのプログラムを格納した計算機読出し可能可搬型記憶媒体が用いられる。
【0026】
また更に本発明においては、複数のSボックスと線形変換部とを備えるSPN構造を、F関数の内部に用いた演算を実行する計算機によって使用されるプログラムとして、与えられる入力データの全ビット数を非均等に分割したビット数集合Tの入力を受け取る手順と、分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値、例えばアクティブSボックスの数の最大値AT を出力する手順とを計算機に実行させるためのプログラムが用いられる。
【0027】
以上説明したように、本発明によればFeistel 構造の内部のF関数を構成するSPN構造内で、複数のSボックスの入出力ビット数が非均等の場合に対して、データの拡散性に優れた線形変換部の生成が可能となる。
【0028】
【発明の実施の形態】
本発明においては、Feistel 構造の内部に備えられるF関数を構成するSPN構造内で、複数のSボックスの間で入出力ビット数が全て同じではない場合の暗号化アルゴリズム、およびそのアルゴリズムを用いた暗号化装置を本発明の実施形態として説明する。
【0029】
図2はそのような暗号化装置の構成ブロック図である。同図において暗号化装置は処理装置10、入力ファイル11、出力ファイル12、表示装置13、および入出力装置14によって構成されている。
【0030】
入力ファイル11には、例えば暗号化の対象としての平文、Feistel 構造内のF関数への入力データのビット数n、ビット数nが複数のSボックスに入力される場合の各Sボックスへの入力ビット数t1 ,t2 ,・・・tr を要素とする集合Tなどが格納されている。
【0031】
処理装置10の内部には、入力ファイル11に格納されている集合Tの内容を用いて、複数のSボックスに対するそれぞれの入出力ビット数が同じでない場合に、その複数のSボックスの出力に対応する適切な線形変換部の存在可能性を示す数値AT を計算するAT 計算部15、計算されたAT の値を用いてそのような線形変換部が存在するか否かを判定する線形変換部存在判定部16、そのような線形変換部が存在すると判定された時に、そのような変換部としての擬似MDS行列を計算する擬似MDS行列生成部17、生成された擬似MDS行列を用いて、入力ファイル11に格納されている平文に対する暗号文を生成する暗号文生成部18などを備えている。
【0032】
出力ファイル12には、AT 計算部15によって計算されたAT の値、擬似MDS行列、およびその擬似MDS行列を用いた暗号化アルゴリズムなどが格納される。
【0033】
図3は本実施形態において用いられるF関数の内部のSPN構造の例である。入力データ32ビットは、例えば6,5,5,5,5、および6ビットに分割され、非線形変換部としてのそれぞれのSボックス21に入力される。各Sボックスは入力ビット数と同じ出力ビット数を持ち、各Sボックスの出力は合成されて32ビットとして線形変換部P22に与えられ、その変換結果がF関数の出力となる。
【0034】
本実施形態においては、このように複数のSボックスへの入出力ビット数が同じでない場合に、そのビット分割の仕方によって適切な線形変換部Pが存在するか否か、また存在する場合にはその線形変換部をどのように求めるかが発明のポイントとなる。
【0035】
ここで入力データのビット数nを非均等に分割する理由について説明する。例えば従来技術で説明した図17では、入力32ビットを4つに分割した8ビットずつが、4つのSボックス71に入力されている。このようなSボックスは 一般的には演算の高速化のために計算機の一次キャッシュメモリにテーブルとして格納され、そのテーブルにアクセスすることによって演算が行われる。図17ではテーブルは4つであり、4回のテーブルアクセスが必要となる。
【0036】
これに対して本実施形態では、図3に示すように例えば、入力32ビットが6,5,5,5,5、および6ビットの6つに分割され、6個のSボックスにそれぞれ入力される。このようにビット数の少ない6個のSボックスに分割すると、それぞれのSボックスに対応するテーブルのサイズは小さくなり、一次キャッシュメモリ量の少ない計算機を使用しても、演算を実行することが可能となる。
【0037】
最近の計算機の一次キャッシュメモリ量の増大の傾向につれて、1つのテーブルサイズを大きくしてテーブルアクセスの回数を減らし、演算を高速化する可能性が開かれている。そこで本実施形態においては、計算機の一次キャッシュメモリ量に対応して、ビット数分割を変更できるようなビット数分割法を用いることにする。
【0038】
前述のように32ビットを8ビット×4に分割している場合には、テーブルの数を3つにするためには8,16,8ビットというような分割に変換するしか方法がなく、16ビット入力のSボックスに対しては216個の領域を持つテーブルが必要となってしまうことになる。それに対して図3の分割方法では、例えば2個ずつまとめて11,10,11ビットの3つに分割することもでき、211個の領域を持つテーブルを計算機の一次キャッシュメモリに格納することができれば、演算の高速化が可能となる。
【0039】
図4は本実施形態における暗号文生成処理の全体フローチャートである。同図において処理が開始されると、まずステップS1で図2で説明した線形変換部が存在するか否かを判定するための数値AT が求められる。この数値AT としては、前述のアクティブSボックスの要素の数の最小値の最大値が用いられる。以後このAT を“アクティブSボックス数の最大値”と呼ぶ。
【0040】
そしてステップS2で、求められたAT の値に応じて、適切な線形変換Pが存在するか否かが判定される。具体的にはAT の値が正の数である時にはそのような線形変換が存在すると判定され、0、または負の数である時にはそのような線形変換は存在しないと判定される。
【0041】
線形変換が存在すると判定されると、ステップS3でその線形変換を実現する行列、すなわち擬似MDS行列が生成され、ステップS4でその擬似MDS行列を用いた暗号化アルゴリズム、すなわちFeistel 構造が生成され、ステップS5でその暗号化アルゴリズムを用いて平文が暗号化されて、処理を終了する。
【0042】
ステップS2でAT の値が0、または負の数となり、適切な線形変換が存在しないと判定されると、ステップS6でエラーが発生したことを示すメッセージが出力されて、処理を終了する。
【0043】
図5は図4のステップS1、すなわちアクティブSボックス数の最大値AT の計算処理の詳細フローチャートである。同図において処理が開始されると、まずステップS10で集合Tの内容が入力され、ステップS11で集合Tを構成するr個の要素のうちからk個を選んで生成された集合の要素の和の最小値uk がk=0,1,2,・・・,rに対して求められる。
【0044】
続いてステップS12で、同様に集合Tの要素から任意のk個を選んで生成された集合の要素の和の最大値vk が求められる。
続いてステップS13でk(=1,2,・・・,r)とk′(=0,1,2,・・・,r)に対して次の不等式
uk ≧vk ′(ただしv0 =0)
を満たすk′の最大値をkから減算した値がwk (k=1,2,・・・,r)として求められる。
【0045】
最後にステップS14でwk の最大値がr+1から減算され、AT の値として求められ、処理を終了する。
図6は図4のステップS3の処理、すなわち擬似MDS行列生成処理の詳細フローチャートである。同図において処理が開始されると、まずステップS20で分割ビット数の集合Tの内容に応じて、ti 行、tj 列であり、要素が0、または1となっている行列Mij(i,j=1〜r)を作り、そのようなr×r個の行列Mijを要素としてr行、r列に並べた行列Mがランダムに新しく選択される。図3で説明したF関数の例ではこの行列Mは全体としては32行、32列の行列となる。ここでMijを行列Mの部分行列と呼ぶことにする。
【0046】
続いてステップS21でeの値が1に初期化され、ステップS22でeの値がアクティブSボックス数の最大値AT から1を引いた値を越えたか否かが判定され、越えていない場合にはステップS23で次式によってc(e)の値が求められる。
【0047】
c(e)=e+r−AT +1
ステップS24で集合Tからe個の要素を任意に選び、集合T1 が新しく求められ、ステップS25で新しい集合T1 が選択できたか否かが判定され、選択できた場合にはステップS26で同様に集合Tからc(e)個の要素が任意に新しく選ばれ、集合T2 が求められ、ステップS27でそのような新しい集合T2 が選択できたか否かが判定される。なおステップS24、およびS26で新しく選択された集合T1 、およびT2 を以下のように記述するものとする。
【0048】
T1 ={ti1,ti2,・・・,tie}
T2 ={tj1,tj2,・・・,tjc(e) }
ステップS27で新しく集合T2 が選択できたと判定されると、ステップS28で行列Mの小行列のうちで集合T1 ,T2 に対応する小行列のランク(階数)が求められる。このT1 ,T2 に対応する小行列の意味については後述する。そしてステップS29で求められたランクの値が 外1 または 外2 のどちら
【0049】
【外1】
【0050】
【外2】
【0051】
か、すなわち行数と列数のいずれかに等しいか否かが判定される。
等しい場合には、ステップS30で行列Mの小行列のうちで集合T2 ,T1 に対応する小行列のランクが求められ、ステップS31でそのランクの値が 外3
【0052】
【外3】
【0053】
または 外4 のいずれかに等しいか否かが判定される。
【0054】
【外4】
【0055】
ステップS31でランクの値が2つの総和(行数、列数)のいずれかに等しいと判定されると、ステップS26に戻りc(e)個の要素が新たに選択され、新しい集合T2 が求められ、ステップS27の判定以降の処理が繰り返される。
【0056】
そしてステップS27でc(e)個の集合T2 が新しく選択できなかったと判定されると、以前にステップS24で選択された集合、すなわちe個の要素からなる集合T1 に対応する処理が終了したことになるため、ステップS24でe個の要素からなる集合T1 として新しい集合が求められ、ステップS25以降の処理が繰り返される。
【0057】
ステップS25で新しい集合T1 が選択できなかったと判定されると、ステップS21で初期化されたe=1の値に対応する処理が終了したことになるので、ステップS32でeの値がインクリメントされ、ステップS22以降の処理が繰り返される。
【0058】
このような処理の間に、ステップS29でランクの値が2つの総和の値のいずれにも等しくないと判定された時、およびステップS31で同様にランクの値が2つの総和のいずれにも等しくないと判定された時には、ステップS20でランダムに選択された行列Mが擬似MDS行列としては不適当なものであるものとして、ステップS20で新しい行列Mをランダムに選択する処理以降の処理が繰り返され、ステップS22でeの値がAT −1の値を越えたと判定されると、行列Mの内容が擬似MDS行列として出力され、処理を終了する。
【0059】
図5、および図6で説明した処理について、具体例を用いて更に説明する。図3で説明した全部で32ビットの入力ビットに対する6個のSボックスに対応して、分割される入出力ビット数の集合は次式で与えられる。
【0060】
T={6,5,5,5,5,6}
このような集合Tに対応して前述の最小値uk 、および最大値vk (vk')は次のようになる。
【0061】
(u1 ,u2 ,u3 ,u4 ,u5 ,u6 )=(5,10,15,20,26,32)
(v0 ,v1 ,v2 ,v3 ,v4 ,v5 ,v6 )=(0,6,12,17,22,27,32)
その結果wk は次式となり、その最大値は1となる。
【0062】
(w1 ,w2 ,w3 ,w4 ,w5 ,w6 )=(1,1,1,1,1,0)
最終的にアクティブSボックス数の最大値AT は、このwk の最大値を用いて次式によって求められる。
【0063】
AT =(6+1)−1=6
このAT の値が6、すなわち正の数であることから、このように入出力ビット数が分割された6個のSボックスによる非線形変換に適切な線形変換が存在するということが判定される。前述のようにこの行列Mは全体として32行、32列であり、その要素が0、または1のうちからランダムに選択され、選択された行列が図6のフローチャートによって擬似MDS行列の性質を満たすか否かが判定される。
【0064】
従ってそのような行列Mを生成するためには、原理的には32行、32列の行列の全ての要素を0、または1とした場合について図6のフローチャートの処理を繰り返して、擬似MDS行列を求めればよいことになるが、その計算量は膨大となる。
【0065】
本実施形態では計算量を削減するための擬似MDS行列生成法を用いることにするが、その方法については後述することとし、その方法によって求められた行列Mの例を図7に示す。この例の行列が図6のフローチャートの処理において、最終的にステップS33で出力されるまでの過程の最初の部分について具体的に説明する。なお図7において、行列内の実線で区切られた部分は、図6のステップS20で説明した行列M内の部分行列Mijに相当する。
【0066】
図6に対応する処理の具体例を説明する前に、まず例えばステップS28で説明したT1 ,T2 に対応する小行列の意味について、図8を用いて説明する。図8において、例えば集合T1 ={t2 ,t3 ,t6 },T2 ={t2 ,t3 ,t5 ,t6 }とした場合には、T1 ,T2 に対応する小行列として図8(a)に示される行列が生成され、そのランクが求められる。すなわちそれぞれが行列であるMijを部分行列とする行列Mから計3行と4列とが指定されて小行列が構成される。この小行列はビット単位、すなわち0、または1の要素単位では16行、21列の行列となる。
【0067】
また図6のステップS30で説明したT2 ,T1 に対応する小行列としては行として集合T2 の要素であるt2 ,t3 ,t5 、およびt6 に相当する行と、集合T1 の要素としてのt2 ,t3 、およびt6 に対応する列が選択されて小行列が構成される。この小行列を図8(b)に示す。この行列は21行、16列の行列である。
【0068】
ここで本実施形態におけるMDS変換としての擬似MDS行列が持つべき性質について説明する。n=32ビットを6個に非均等に分割した集合の例としての前述のTに対して、アクティブSボックスの数の最大値はAT =6となる。これに対してビット数の分割を均等に行う場合にAT に相当する値は7であり、その差は1となる。
【0069】
前述のようにビット分割が均等な場合のMDS変換としてのMDS行列では、図8で説明したようなMij(全ての行数、および全ての列数は等しい)を要素とする行列から、任意の1行と1列を指定した(1,1)小行列、2行と2列を指定した(2,2)小行列、3行と3列を指定した(3,3)小行列、・・・を考え、そのような任意の小行列が全て正則であることがMDS行列の性質として成立する。
【0070】
これに対して擬似MDS行列では、前述の差が1であることから、ビット分割が均等な場合に選択される小行列の行、または列のいずれかに1を加えた行列が小行列として選択され、任意の小行列のランクがフル、すなわち小行列のランクがその行数、または列数に等しくなるという性質がある。
【0071】
すなわち任意の(1,2),(2,1),(2,3),(3,2),(3,4),(4,3),(4,5),(5,4),(5,6)、および(6,5)の10種類の小行列のランクが、それぞれの小行列の行数、または列数に等しい行列を、擬似MDS行列として図6のフローチャートにおいて選択すべきことになる。これが本実施形態における擬似MDS行列が持つべき性質であるが、その詳細な数学的説明(証明など)については省略する。
【0072】
ここで前述の例に戻り、図6のフローチャートに対応して、そのような性質を持つ行列Mの選択の過程の最初の部分の説明を続ける。まず図6のステップS21でeの値が1とされ、ステップS23でc(e)の値として2が求められる。そしてステップS24で集合T1 として1個だけの要素を持つ{t1 }={6}が選択されたとする。またステップS26でc(e)、すなわち2個の要素を持つ集合T2 として{t1 ,t2 }={6,5}が選択されたものとする。
【0073】
図9はこの場合にそのランクが計算されるべき、ステップS28におけるT1 ,T2 に対応する行列である。すなわち図8において行としては1行目、列としては1列目と2列目とが指定されることになり、小行列はM11とM12を成分とする行列であり、その実際の内容は図7から図9のようになる。この小行列のランクは6である。
【0074】
このランクの値、すなわち6はステップS29で 外5 または 外6 のい
【0075】
【外5】
【0076】
【外6】
【0077】
ずれかの値と等しいか否かが判定される。これらの2つの値は図9の小行列の行数と列数を示し、この場合は行数、すなわち 外7 がランクの値と等しくなり
【0078】
【外7】
【0079】
、この小行列はフルランクであることが判定される。
図10はステップS30でそのランクが計算されるべきT2 ,T1 に対応する小行列の例である。前述と同様に、ここでは図8のMijのうち、行としては1行目と2行目、例としては1列目が指定されることにより、M11とM21とによって図10に示す小行列が構成される。そのランクは6であり、ステップS31でステップS29におけると同様に2つの総和と比較され、 外8 の値と等しいこ
【0080】
【外8】
【0081】
とが判定されて、以後の処理が続けられる。
そして図6のフローチャートに従って、前述の10種類の小行列の任意のものについて、各小行列のランクがフルであることが図7の32行、32列の行列に対して確認され、最終的にステップS33でこの行列Mが擬似MDS行列として出力されることになる。
【0082】
次に図7に示した擬似MDS行列の生成法について説明する。この行列を生成するためには、原理的には前述のように32行×32列の行列の全ての要素を0、または1にランダムに変化させて、図6のフローチャートを満足する行列Mを探すことになるが、その計算量は膨大となる。
【0083】
そこでより能率的な方法として、本実施形態においてはまず全ビット数を30ビットとし、30ビットを6個に分割した集合T={5,5,5,5,5,5}に対するMDS行列を従来技術によって求め、求められた30行、30列の行列に対して図7に示すように最も上の行のM1j(j=1〜6)、最も下の行のM6j(j=1〜6)、最も左の列のMi1(i=1〜6)、および最も右の列のMi6(i=1〜6)に対応してそれぞれ1行、1列の要素を追加することで、擬似MSD行列を作成することにする。
【0084】
図11、図12はそのような30行、30列のMSD行列を構成するための5行、5列の部分行列32個を示している。この32個の部分行列はそれぞれ5行、5列の行列であり、各行列には0〜31の番号が付けられている。0番の行列は図11の左上の行列であり、5行、5列の行列の要素は全て0である。5行、5列の下の“0”はこの行列に対応する(同じ配置の)行列式の値を示している。0番目の行列に対しては、当然対応する行列式の値は0である。
【0085】
例えばその下の番号1の行列に対する行列式の値は1であり、以降図12の右下の31番までの全ての行列に対する行列式の値も1となっている。
従来技術の方法を用いることによって図11,図12に示した番号の5行、5列の部分行列を6行、6列に並べることによって、30ビットを6個に均等分割した場合に対応するMDS行列の例として図13の行列が得られる。行列内の数字は図11,図12で説明した各行列の番号を表わす。
【0086】
図13に示した行列は30行、30列の行列であり、最も上、下の部分行列に対して1行、最も左、右の部分行列に対して1列の要素をランダムに追加し、その行列に対して図6で示したフローチャートの処理を実行することによって、図7に示した擬似MDS行列を比較的容易に生成することができる。
【0087】
図14は本発明を実現するためのプログラムのコンピュータへのローディングの説明図である。本発明の実施形態としての暗号化装置、例えば図2に示したシステムなどは、当然一般的なコンピュータシステムとして構成することができる。
【0088】
図14はそのようなシステムの構成を示し、コンピュータ31は本体32と、メモリ33とによって構成されている。メモリ33はランダムアクセスメモリ(RAM)、ハードディスク、磁気ディスクなどの記憶装置であり、本発明の特許請求の範囲第10項のプログラムや、図4〜図6で説明したプログラムなどはメモリ33に格納され、そのプログラムが本体32によって実行されることにより、本発明の擬似MSD行列が求められ、入力データに対する暗号化が行われる。
【0089】
本発明を実現するためのプログラムは、プログラム提供者側からネットワーク34を介してコンピュータ31にロードされることも、また市販され、流通している可搬型記憶媒体35に格納され、そのプログラムがコンピュータ31にロードされることによって実現されることも可能である。可搬型記憶媒体35としてはフロッピーディスク、CD−ROM、光ディスク、光磁気ディスクなど、様々な形式の記憶媒体を使用することができる。前述のプログラムなどは、このような記憶媒体に格納され、コンピュータ31にロードされることによって、本実施形態における擬似MSD行列が生成され、その行列を用いて入力データに対する暗号文を生成することが可能となる。
【0090】
【発明の効果】
以上詳細に説明したように、本発明によれば、F関数の内部の複数のSボックスの入出力サイズが同一でない場合において、適切な線形変換としての擬似SMD行列の存在の有無を判定することができ、そのような行列が存在する場合にはその擬似MSD行列を生成し、その行列を使用した暗号化を行うことによって、拡散性能に優れた暗号を生成することができ、暗号化装置の性能向上に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明の原理構成ブロック図である。
【図2】本発明の実施形態としての暗号化装置のシステム構成を示すブロック図である。
【図3】本実施形態におけるF関数の構成例を示す図である。
【図4】暗号文生成の全体処理フローチャートである。
【図5】アクティブSボックスの数の最大値AT を求める処理の詳細フローチャートである。
【図6】擬似MDS行列を求める処理の詳細フローチャートである。
【図7】求められた擬似MDS行列の例を示す図である。
【図8】2つの集合に対応する小行列を説明する図である。
【図9】擬似MDS行列の小行列の例(その1)を示す図である。
【図10】擬似MDS行列の小行列の例(その2)を示す図である。
【図11】30行×30列のMDS行列を求めるための部分行列を示す図(その1)である。
【図12】30行×30列のMDS行列を求めるための部分行列を示す図(その2)である。
【図13】図11,図12の部分行列を用いたMDS行列の例を示す図である。
【図14】本発明におけるプログラムのコンピュータへのローディングを説明する図である。
【図15】DES暗号の基本構造を示す図である。
【図16】図15におけるF関数の構成例の説明図である。
【図17】F関数内の線形変換PとしてのMDS変換の説明図である。
【図18】MDS変換としてのMDS行列の説明図である。
【符号の説明】
1 演算装置
2 ビット数集合入力手段
3 線形変換部存在可能性指示数値出力手段
4 線形変換部存在判定手段
5 擬似MDS行列生成手段
10 処理装置
11 入力ファイル
12 出力ファイル
13 表示装置
14 入出力装置
15 AT 計算部
16 線形変換部存在判定部
17 擬似MDS行列生成部
18 暗号文生成部
Claims (5)
- 複数のSボックスと線形変換部とを備えるSPN構造をF関数の内部に用いた演算装置において、
該演算装置に与えられる入力データの全ビット数を非均等に分割したビット数の集合T={t1,t2,t3,・・・,tr}の入力を受け取るビット数集合入力手段と、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最小値u k (k=1,2,・・・,r)を求める最小値決定手段と、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最大値v k (k=1,2,・・・,r)を求める最大値決定手段と、
数値kに対してu k ≧v k' (k´=0,1,・・・,r,v 0 =0)を満たすk´の最大値をkから減算した値をw k (k=1,2,・・・,r)とし、w k の最大値を(r+1)の値から減算して前記A T の値を求めることにより、該分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値ATを出力する線形変換部存在可能性指示数値出力手段と、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定する線形変換部存在判定手段と、
前記線形変換部存在判定手段によって前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成する擬似MDS行列生成手段と、
を備え、
前記擬似MDS行列生成手段は、適切な線形変換部が存在する集合T={t 1 ,t 2 ,t 3 ,・・・,t r }について、前記集合Tに含まれる要素の最小値をtとした場合、前記tをr個並べた集合T´={t,t,t,・・・,t}を生成し、続いて前記集合T´に対するMDS行列を生成し、更に前記集合Tと前記集合T´との差分集合T´´={t 1 −t,t 2 −t,t 3 −t,・・・,t r −t}に関する行及び列に、ランダムな要素を付加した行列で表される線形変換部を候補とすることを特徴とするF関数内部にSPN構造を用いた演算装置。 - 前記集合(T1,T2)に対応する小行列は、前記行列M=(Mij)を構成する前記r行、r列の要素としての部分行列Mijのうちで、前記ti1,ti2,・・・,tieにそれぞれ対応する行と、tj1,tj2,・・・,tjc(e)にそれぞれ対応する列とによって指定される部分行列によって構成されることを特徴とする請求項1記載のF関数内部にSPN構造を用いた演算装置。
- 複数のSボックスと線形変換部とを備えるSPN構造をF関数内部に用いる演算方法において、
与えられる入力データの全ビット数を非均等に分割したビット数の集合T={t1,t2,t3,・・・,tr}の入力を受け取り、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最小値u k (k=1,2,・・・,r)を求め、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最大値v k (k=1,2,・・・,r)を求め、
数値kに対してu k ≧v k' (k´=0,1,・・・,r,v 0 =0)を満たすk´の最大値をkから減算した値をw k (k=1,2,・・・,r)とし、w k の最大値を(r+1)の値から減算して前記A T の値を求めることにより、該分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値ATを出力し、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定し、
前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成し、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定し、
前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成し、
適切な線形変換部が存在する集合T={t 1 ,t 2 ,t 3 ,・・・,t r }について、前記集合Tに含まれる要素の最小値をtとした場合、前記tをr個並べた集合T´={t,t,t,・・・,t}を生成し、続いて前記集合T´に対するMDS行列を生成し、更に前記集合Tと前記集合T´との差分集合T´´={t 1 −t,t 2 −t,t 3 −t,・・・,t r −t}に関する行及び列に、ランダムな要素を付加した行列で表される線形変換部を候補とすることを特徴とするF関数内部にSPN構造を用いた演算方法。 - 複数のSボックスと線形変換部とを備えるSPN構造を関数内部に用いた演算を実行する計算機によって使用される記憶媒体において、
与えられる入力データの全ビット数を非均等に分割したビット数の集合T={t1,t2,t3,・・・,tr}の入力を受け取るステップと、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最小値u k (k=1,2,・・・,r)を求めるステップと、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最大値v k (k=1,2,・・・,r)を求めるステップと、
数値kに対してu k ≧v k' (k´=0,1,・・・,r,v 0 =0)を満たすk´の最大値をkから減算した値をw k (k=1,2,・・・,r)とし、w k の最大値を(r+1)の値から減算して前記A T の値を求めることにより、該分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値ATを出力するステップと、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定するステップと、
前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合 T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成するステップと、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定するステップと、
前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成するステップと、
を計算機に実行させるためのプログラムを格納した計算機読出し可能可搬型記憶媒体であって、
前記擬似MDS行列を生成するステップは、適切な線形変換部が存在する集合T={t 1 ,t 2 ,t 3 ,・・・,t r }について、前記集合Tに含まれる要素の最小値をtとした場合、前記tをr個並べた集合T´={t,t,t,・・・,t}を生成し、続いて前記集合T´に対するMDS行列を生成し、更に前記集合Tと前記集合T´との差分集合T´´={t 1 −t,t 2 −t,t 3 −t,・・・,t r −t}に関する行及び列に、ランダムな要素を付加した行列で表される線形変換部を候補とすることを特徴とする計算機読出し可能可搬型記憶媒体。 - 複数のSボックスと線形変換部とを備えるSPN構造をF関数内部に用いた演算を実行する計算機によって使用されるプログラムにおいて、
与えられる入力データの全ビット数を非均等に分割したビット数の集合T={t1,t2,t3,・・・,tr}の入力を受け取る手順と、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最小値u k (k=1,2,・・・,r)を求める手順と、
前記集合Tの要素から任意のk個を選んで生成した集合の要素の和の最大値v k (k=1,2,・・・,r)を求める手順と、
数値kに対してu k ≧v k' (k´=0,1,・・・,r,v 0 =0)を満たすk´の最大値をkから減算した値をw k (k=1,2,・・・,r)とし、w k の最大値を(r+1)の値から減算して前記A T の値を求めることにより、該分割されたビット数をそれぞれ入・出力ビット数とする複数のSボックスに対応する適切な線形変換部の存在可能性を示す値ATを出力する手順と、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定する手順と、
前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を 生成する手順と、
前記A T の値が正であると判定した場合、前記適切な線形変換部が存在すると判定する手順と、
前記線形変換部が存在すると判定された場合、該線形変換部として、要素が0、または1のt i 行、t j 列の部分行列M ij を要素として、r行、r列に並べた行列をM=(M ij )(i=1,2,・・・,r,j=1,2,・・・,r)として、e=1から(A T −1)までの各正数に対してc(e)=e+r−A T +1を求め、前記集合Tの要素をe個任意に選んだ集合T 1 ={t i1 ,t i2 ,・・・t ie }と、要素をc(e)個任意に選んだ集合T 2 ={t j1 ,t j2 ,・・・,t jc(e) }を求め、該集合(T 1 ,T 2 )に対応する任意のあらゆるMの小行列、および集合(T 2 ,T 1 )に対応する任意のあらゆるMの小行列の階数の値が、それぞれ自小行列の行数、または列数のいずれかに等しい行列Mを求めることにより、前記ビット数分割が均等に行われた場合のMDS行列に対応する擬似MDS行列を生成する手順と、
を計算機に実行させるためのプログラムであって、
前記擬似MDS行列を生成する手順は、適切な線形変換部が存在する集合T={t 1 ,t 2 ,t 3 ,・・・,t r }について、前記集合Tに含まれる要素の最小値をtとした場合、前記tをr個並べた集合T´={t,t,t,・・・,t}を生成し、続いて前記集合T´に対するMDS行列を生成し、更に前記集合Tと前記集合T´との差分集合T´´={t 1 −t,t 2 −t,t 3 −t,・・・,t r −t}に関する行及び列に、ランダムな要素を付加した行列で表される線形変換部を候補とすることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001207326A JP3907976B2 (ja) | 2000-07-13 | 2001-07-09 | F関数内部にspn構造を用いた演算装置および演算方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000212813 | 2000-07-13 | ||
JP2000-212813 | 2000-07-13 | ||
JP2001207326A JP3907976B2 (ja) | 2000-07-13 | 2001-07-09 | F関数内部にspn構造を用いた演算装置および演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002091297A JP2002091297A (ja) | 2002-03-27 |
JP3907976B2 true JP3907976B2 (ja) | 2007-04-18 |
Family
ID=26595967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001207326A Expired - Fee Related JP3907976B2 (ja) | 2000-07-13 | 2001-07-09 | F関数内部にspn構造を用いた演算装置および演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3907976B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4622222B2 (ja) | 2003-09-30 | 2011-02-02 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4561252B2 (ja) | 2004-09-03 | 2010-10-13 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4622807B2 (ja) * | 2005-03-25 | 2011-02-02 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
CN101169776B (zh) * | 2006-10-27 | 2012-01-25 | 松下电器产业株式会社 | 提升中央处理单元运算效能的数据加密方法及加密装置 |
JP5578422B2 (ja) * | 2010-07-21 | 2014-08-27 | 日本電気株式会社 | 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム |
-
2001
- 2001-07-09 JP JP2001207326A patent/JP3907976B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002091297A (ja) | 2002-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100415410B1 (ko) | 암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법 | |
JP6934963B2 (ja) | データを暗号化する方法およびシステム | |
Dai et al. | Accelerating NTRU based homomorphic encryption using GPUs | |
CN106571905B (zh) | 一种数值型数据同态保序加密方法 | |
US20070140478A1 (en) | Encryption apparatus and encryption method | |
WO2016159357A1 (ja) | 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム | |
JP7031682B2 (ja) | 秘密計算装置、システム、方法、プログラム | |
CN110197076B (zh) | 一种sm4加密算法的软件优化实现方法 | |
JPWO2016148281A1 (ja) | 秘匿文字列計算システム及び方法と装置並びにプログラム | |
JP6844897B2 (ja) | ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム | |
Kunzweiler et al. | Secret keys in genus-2 SIDH | |
Wu et al. | Cryptanalysis and improvement of an image encryption algorithm based on chaotic and Latin square | |
WO2020152831A1 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
JP3907976B2 (ja) | F関数内部にspn構造を用いた演算装置および演算方法 | |
Rentería-Mejía et al. | Lattice-based cryptoprocessor for CCA-secure identity-based encryption | |
Zajac et al. | Cryptographic properties of small bijective S-boxes with respect to modular addition | |
Somasagar et al. | Clefia-a encryption algorithm using novel s-box architecture | |
JP5354914B2 (ja) | 暗号処理装置及び復号処理装置及びプログラム | |
JP2017223822A (ja) | 暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法 | |
JP3435473B2 (ja) | 暗号化・復号化方法及び装置 | |
JP5791562B2 (ja) | 圧縮関数演算装置、圧縮関数演算方法、およびプログラム | |
JP7261502B2 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
WO2022270080A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP6876423B2 (ja) | ストリーム暗号における内部状態の初期化装置、方法及びプログラム | |
Nagaraj et al. | An Approach to Security Using Rijndael Algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040423 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060928 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061010 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061211 |
|
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: 20070116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070117 |
|
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: 20110126 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110126 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120126 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130126 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130126 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140126 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |