JP3499810B2 - 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体 - Google Patents

暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体

Info

Publication number
JP3499810B2
JP3499810B2 JP2000210484A JP2000210484A JP3499810B2 JP 3499810 B2 JP3499810 B2 JP 3499810B2 JP 2000210484 A JP2000210484 A JP 2000210484A JP 2000210484 A JP2000210484 A JP 2000210484A JP 3499810 B2 JP3499810 B2 JP 3499810B2
Authority
JP
Japan
Prior art keywords
data
width
linear
processing
processing means
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
Application number
JP2000210484A
Other languages
English (en)
Other versions
JP2001324924A5 (ja
JP2001324924A (ja
Inventor
建司 大熊
博文 村谷
文彦 佐野
信一 川村
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.)
Toshiba Corp
Original Assignee
Toshiba 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
Priority to JP2000210484A priority Critical patent/JP3499810B2/ja
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to DE60119410T priority patent/DE60119410T2/de
Priority to US09/799,028 priority patent/US7227948B2/en
Priority to EP01302065A priority patent/EP1133100B1/en
Priority to CNB011109408A priority patent/CN1322697C/zh
Priority to KR10-2001-0011395A priority patent/KR100415410B1/ko
Publication of JP2001324924A publication Critical patent/JP2001324924A/ja
Application granted granted Critical
Publication of JP3499810B2 publication Critical patent/JP3499810B2/ja
Publication of JP2001324924A5 publication Critical patent/JP2001324924A5/ja
Priority to US11/261,562 priority patent/US7209556B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ブロック暗号方式
による暗号化装置、暗号化方法及び暗号化装置としてコ
ンピュータを機能させるためのプログラムを記録したコ
ンピュータ読取り可能な記録媒体並びにブロック暗号方
式による復号装置、復号方法及び復号装置としてコンピ
ュータを機能させるためのプログラムを記録したコンピ
ュータ読取り可能な記録媒体に関する。
【0002】
【従来の技術】共通鍵ブロック暗号の代表的な基本構造
にSPN型とFeistel型があり、各々について差
分/線形解読法に対する強度評価と耐性を高める設計法
が研究されている(文献[1]V.Rijmen, J.Daemen, B.Pr
eneel, A.Bosselaers, E.DcWin,“The Cipher SHARK,”
Fast Software Encryption, LNCS 1039,1996.、文献
[2]青木和麻呂,太田和夫,“最大平均差分確率および最
大平均線形確率のより厳密な評価,”SCIS 96-4A,1996.
文献[3]松井充,“フ゛ロック暗号MISTY,”ISEC 96-11,199
6.、)。SPN構造では、活性S−box数の保証が出
来るので、設定した強度を達成するための段数決定がし
やすい(文献[1] )。しかし、ブロック・サイズが大
きくなりS−boxの並列度が上がると、拡散層の処理
が複雑になり、速度が低下する傾向がある。
【0003】この点を改善したのが、SQUARE/R
ijndael型の暗号である(文献[4]J.Daemen, L.
R.Knudsen, V.Rijmen,“The Block Cipher Square,” F
astSoftware Encryption, LNCS 1267,1997. 、文献[5]
J.Daemen, V.Rijmen,“AES Proposal: Rijndael,”htt
p://www.east.kuleuven.ac.be/rijmen/rijdael/rijnd
aeldocV2.zip )。この型の暗号では、16個の並列S
−boxを4×4の行列状に並べて線形拡散を同一列内
に制限することで処理を軽減している。また、線形拡散
にバイト位置の並べ替えを組み合わせることで、ある段
の1バイトの影響は2段後に全バイトに広がり、4段で
活性S−box数は25以上を達成している。
【0004】しかしながら、同一列内のバイトが次の段
で混合しないという性質があるため、SQUARE攻撃
という専用の攻撃法が存在する(文献[1]、文献
[5])。これは、拡散層が1種類という制約下で、強度
と効率の両立を目指した結果と考えることが出来る。
【0005】
【発明が解決しようとする課題】SPN型構造は、活性
S−box数の下限の見積もりが容易で、差分/線形解
読法に対する強度を保証した設計が可能である。しかし
ながら、平文/暗号文のブロック・サイズの増加に従
い、S−boxの並列度が高くなると、拡散層の結合部
の計算コストも高くなるという欠点があった。また、拡
散層の設計によってデータ攪拌が均一でなくなる可能性
があった。
【0006】 本発明は、上記事情を考慮してなされた
もので、計算コストを抑えたまま高く均一な拡散を可能
とする暗号化装置、暗号化方法及び暗号化装置としてコ
ンピュータを機能させるためのプログラムを記録したコ
ンピュータ読取り可能な記録媒体並びに復号装置、復号
方法及び復号装置としてコンピュータを機能させるため
のプログラムを記録したコンピュータ読取り可能な記録
媒体を提供することを目的とする。
【0007】
【課題を解決するための手段】本発明は、ブロック暗号
方式による暗号化装置において、初段では暗号化対象と
する平文データとして第1のデータ幅のデータを、2段
目以降の各段では前段での処理が施された第1のデータ
幅のデータを入力する複数段の第1の段関数処理手段で
あって、該第1のデータ幅のデータが複数に分割された
第2のデータ幅の各データに対してそれぞれ非線形変換
処理を施す複数の第1の処理手段と、これら複数の第1
の処理手段からの第2のデータ幅の各データからなる第
1のデータ幅のデータに対して線形拡散処理を施す第2
の処理手段とからなる複数段の第1の段関数処理手段
と、前記複数段の第1の段関数処理手段のうちの最後の
段の第1の段関数処理手段での処理が施された第1のデ
ータ幅のデータを入力する第2の段関数処理手段であっ
て、該第1のデータ幅のデータが複数に分割された第2
のデータ幅の各データに対してそれぞれ非線形変換処理
を施す複数の第3の処理手段と、これら複数の第3の処
理手段からの第2のデータ幅の各データからなる第1の
データ幅のデータに基づいて前記平文データに対する暗
号化データを出力する手段とからなる第2の段関数処理
手段とを備え、前記第1の処理手段及び前記第3の処理
手段は、それぞれ、前記第2のデータ幅のデータがさら
に複数に分割された第3のデータ幅の各データに対して
それぞれ非線形変換処理を施す複数の非線形変換処理手
段と、これら複数の非線形変換処理手段からの第3のデ
ータ幅の各データからなる第2のデータ幅のデータに対
して線形拡散処理を施す線形拡散処理手段と、この線形
拡散処理手段からの第2のデータ幅のデータがさらに複
数に分割された第3のデータ幅の各データに対してそれ
ぞれ非線形変換処理を施す複数の非線形変換処理手段と
からなるものであることを特徴とする。 好ましくは、
前記第2の処理手段は予め選択された最大距離分離行列
を用いて第1のデータ幅を持つ入力データから第1のデ
ータ幅を持つ出力データを求めるものであるようにして
もよい。 好ましくは、前記最大距離分離行列として全
行列要素について下位所定ビットのみ非零であるものを
選択するようにしてもよい。 好ましくは、前記最大距
離分離行列として同一行に属する全行列要素が相異なる
値を持つものを選択するようにしてもよい。 好ましく
は、前記第2の処理手段は、前記第1のデータ幅から所
定数個おきに1ビットを取りだして連結したデータを入
力として最大距離分離行列を用いて出力を求める処理
を、該1ビットを取り出す位置を変えたものについてそ
れぞれ行うものであるようにしてもよい。 好ましく
は、前記線形拡散処理手段は予め選択された最大距離分
離行列を用いて第2のデータ幅を持つ入力データから第
2のデータ幅を持つ出力データを求めるものであるよう
にしてもよい。 また、本発明は、複数段の第1の段関
数処理手段及び第2の段関数処理手段からなるブロック
暗号方式による暗号化装置における暗号化方法であっ
て、暗号化対象とする平文データとして第1のデータ幅
のデータを入力装置から入力するステップと、初段の前
記第1の段関数処理手段により、第1のデータ幅の平文
データが複数に分割された第2のデータ幅の各データに
対してそれぞれ非線形変換処理を施し、これら非線形変
換処理を施された第2のデータ幅の各データからなる第
1のデータ幅のデータに対して線形拡散処理を施すステ
ップと、2段目以降の各段の前記第1の段関数処理手段
のそれぞれにより、順次、前段の前記第1の段関数処理
手段での処理が施された第1のデータ幅のデータを入力
し、該第1のデータ幅のデータが複数に分割された第2
のデータ幅の各データに対してそれぞれ非線形変換処理
を施し、これら非線形変換処理を施された第2のデータ
幅の各データからなる第1のデータ幅のデータに対して
線形拡散処理を施すステップと、前記第2の段関数処理
手段により、前記複数段の第1の段関数処理手段のうち
の最後の段の第1の段関数処理手段での処理が施された
第1のデータ幅のデータを入力し、該第1のデータ幅の
データが複数に分割された第2のデータ幅の各データに
対してそれぞれ非線形変換処理を施し、これら非線形変
換処理を施された第2のデータ幅の各データからなる第
1のデータ幅のデータに基づいて前記平文データに対す
る暗号化データを出力するステップとを有し、各段の前
記第1の段関数処理手段及び前記第2の段関数処理手段
により、それぞれ、前記第2のデータ幅の各データに対
してそれぞれ非線形変換処理を施すにあたっては、前記
第2のデータ幅のデータがさらに複数に分割された第3
のデータ幅の各データに対してそれぞれ非線形変換処理
を施し、これら非線形変換処理を施された第3のデータ
幅の各データからなる第2のデータ幅のデータに対して
線形拡散処理を施し、この線形拡散処理を施された第2
のデータ幅のデータがさらに複数に分割された第3のデ
ータ幅の各データに対してそれぞれ非線形変換処理を施
すことを特徴とする。また、本発明は、複数段の第1の
段関数処理手段及び第2の段関数処理手段からなるブロ
ック暗号方式による暗号化装置としてコンピュータを機
能させるためのプログラムを記録したコンピュータ読取
り可能な記録媒体において、前記プログラムは、暗号化
対象とする平文データとして第1のデータ幅のデータを
入力装置から入力するステップと、初段の前記第1の段
関数処理手段により、第1のデータ幅の前記平文データ
が複数に分割された第2のデータ幅の各データに対して
それぞれ非線形変換処理を施し、これら非線形変換処理
を施された第2のデータ幅の各データからなる第1のデ
ータ幅のデータに対して線形拡散処理を施すステップ
と、2段目以降の各段の前記第1の段関数処理手段のそ
れぞれにより、順次、前段の前記第1の段関数処理手段
での処理が施された第1のデータ幅のデータを入力し、
該第1のデータ幅のデータが複数に分割された第2のデ
ータ幅の各データに対してそれぞれ非線形変換処理を施
し、これら非線形変換処理を施された第2のデータ幅の
各データからなる第1のデータ幅のデータに対して線形
拡散処理を施すステップと、前記第2の段関数処理手段
により、前記複数段の第1の段関数処理手段のうちの最
後の段の第1の段関数処理手段での処理が施された第1
のデータ幅のデータを入力し、該第1のデータ幅のデー
タが複数に分割された第2のデータ幅の各データに対し
てそれぞれ非線形変換処理を施し、これら非線形変換処
理を施された第2のデータ幅の各データからなる第1の
データ幅のデータに基づいて前記平文データに対する暗
号化データを出力装置から出力するステップとをコンピ
ュータに実行させるとともに、各段の前記第1の段関数
処理手段及び前記第2の段関数処理手段により、それぞ
れ、前記第2のデータ幅の各データに対してそれぞれ非
線形変換処理を施すにあたっては、前記第2のデータ幅
のデータがさらに複数に分割された第3のデータ幅の各
データに対してそれぞれ非線形変換処理を施し、これら
非線形変換処理を施された第3のデータ幅の各データか
らなる第2のデータ幅のデータに対して線形拡散処理を
施し、この線形拡散処理を施された第2のデータ幅のデ
ータがさらに複数に分割された第3のデータ幅の各デー
タに対してそれぞれ非線形変換処理を施させるものであ
ることを特徴とする。 また、本発明は、ブロック暗号
方式による復号装置において、復号対象とする暗号化デ
ータとして第1のデータ幅のデータを入力する第1の段
関数処理手段であって、該暗号化データに基づいて得ら
れる第1のデータ幅のデータが複数に分割された第2の
データ幅の各データに対してそれぞれ非線形変換処理を
施す複数の第1の処理手段からなる第1の段関数処理手
段と、初段では前記第1の段関数処理手段からの第1の
データ幅のデータを、2段目以降の各段では前段での処
理が施された第1のデータ幅のデータを入力する複数段
の第2の段関数処理手段であって、該第1のデータ幅に
対して線形拡散処理を施す第2の処理手段と、該第2の
処理手段からの第1のデータ幅のデータが複数に分割さ
れた第2のデータ幅の各データに対してそれぞれ非線形
変換処理を施し、最後の段以外の各段では、これら非線
形変換処理を施された第2のデータ幅の各データからな
る第1のデータ幅のデータを次段へ出力し、最後の段で
は、これら非線形変換処理を施された第2のデータ幅の
各データからなる第1のデータ幅のデータを前記暗号化
データに対する平文データとして出力する複数の第3の
処理手段とからなる複数段の第2の段関数処理手段とを
備え、前記第1の処理手段及び前記第3の処理手段は、
それぞれ、前記第2のデータ幅のデータがさらに複数に
分割された第3のデータ幅の各データに対してそれぞれ
非線形変換処理を施す複数の非線形変換処理手段と、こ
れら複数の非線形変換処理手段からの第3のデータ幅の
各データからなる第2のデータ幅のデータに対して線形
拡散処理を施す線形拡散処理手段と、この線形拡散処理
手段からの第2のデータ幅のデータがさらに複数に分割
された第3のデータ幅の各データに対してそれぞれ非線
形変換処理を施す複数の非線形変換処理手段とからなる
ものであることを特徴とする。 また、本発明は、第1
の段関数処理手段及び複数段の第2の段関数処理手段か
らなるブロック暗号方式による復号装置における復号方
法であって、復号対象とする暗号化データとして第1の
データ幅のデータを入力装置から入力するステップと、
前記第1の段関数処理手段により、第1のデータ幅の暗
号化データが複数に分割された第2のデータ幅の各デー
タに対してそれぞれ非線形変換処理を施すステップと、
初段の前記第2の段関数処理手段により、前記第1の段
関数処理手段からの第1のデータ幅のデータを入力し、
該第1のデータ幅に対して線形拡散処理を施し、この線
形拡散処理を施された第1のデータ幅のデータが複数に
分割された第2のデータ幅の各データに対してそれぞれ
非線形変換処理を施すステップと、初段及び最後の段以
外の各段の前記第2の段関数処理手段のそれぞれによ
り、順次、前段の前記第2の段関数処理手段での処理が
施された第1のデータ幅のデータを入力し、該第1のデ
ータ幅に対して線形拡散処理を施し、この線形拡散処理
を施された第1のデータ幅のデータが複数に分割された
第2のデータ幅の各データに対してそれぞれ非線形変換
処理を施すステップと、最後の段の前記第2の段関数処
理手段により、前段の前記第2の段関数処理手段での処
理が施された第1のデータ幅のデータを入力し、該第1
のデータ幅に対して線形拡散処理を施し、この線形拡散
処理を施された第1のデータ幅のデータが複数に分割さ
れた第2のデータ幅の各データに対してそれぞれ非線形
変換処理を施し、これら非線形変換処理を施された第2
のデータ幅の各データからなる第1のデータ幅のデータ
を前記暗号化データに対する平文データとして出力する
ステップとを有し、前記第1の段関数処理手段及び各段
の前記第2の段関数処理手段により、それぞれ、前記第
2のデータ幅の各データに対してそれぞれ非線形変換処
理を施すにあたっては、前記第2のデータ幅のデータが
さらに複数に分割された第3のデータ幅の各データに対
してそれぞれ非線形変換処理を施し、これら非線形変換
処理を施された第3のデータ幅の各データからなる第2
のデータ幅のデータに対して線形拡散処理を施し、この
線形拡散処理を施された第2のデータ幅のデータがさら
に複数に分割された第3のデータ幅の各データに対して
それぞれ非線形変換処理を施すことを特徴とする。 ま
た、本発明は、第1の段関数処理手段及び複数段の第2
の段関数処理手段からなるブロック暗号方式による復号
装置としてコンピュータを機能させるためのプログラム
を記録したコンピュータ読取り可能な記録媒体におい
て、前記プログラムは、復号対象とする暗号化データと
して第1のデータ幅のデータを入力装置から入力するス
テップと、前記第1の段関数処理手段により、第1のデ
ータ幅の前記暗号化データが複数に分割された第2のデ
ータ幅の各データに対してそれぞれ非線形変換処理を施
すステップと、初段の前記第2の段関数処理手段によ
り、前記第1の段関数処理手段からの第1のデータ幅の
データを入力し、該第1のデータ幅に対して線形拡散処
理を施し、この線形拡散処理を施された第1のデータ幅
のデータが複数に分割された第2のデータ幅の各データ
に対してそれぞれ非線形変換処理を施すステップと、初
段及び最後の段以外の各段の前記第2の段関数処理手段
のそれぞれにより、順次、前段の前記第2の段関数処理
手段での処理が施された第1のデータ幅のデータを入力
し、該第1のデータ幅に対して線形拡散処理を施し、こ
の線形拡散処理を施された第1のデータ幅のデータが複
数に分割された第2のデータ幅の各データに対してそれ
ぞれ非線形変換処理を施すステップと、最後の段の前記
第2の段関数処理手段により、前段の前記第2の段関数
処理手段での処理が施された第1のデータ幅のデータを
入力し、該第1のデータ幅に対して線形拡散処理を施
し、この線形拡散処理を施された第1のデータ幅のデー
タが複数に分割された第2のデータ幅の各データに対し
てそれぞれ非線形変換処理を施し、これら非線形変換処
理を施された第2のデータ幅の各データからなる第1の
データ幅のデータを前記暗号化データに対する平文デー
タとして出力装置から出力するステップとをコンピュー
タに実行させるとともに、前記第1の段関数処理手段及
び各段の前記第2の段関数処理手段により、それぞれ、
前記第2のデータ幅の各データに対してそれぞれ非線形
変換処理を施すにあたっては、前記第2のデータ幅のデ
ータがさらに複数に分割された第3のデータ幅の各デー
タに対してそれぞれ非線形変換処理を施し、これら非線
形変換処理を施された第3のデータ幅の各データからな
る第2のデータ幅のデータに対して線形拡散処理を施
し、この線形拡散処理を施された第2のデータ幅のデー
タがさらに複数に分割された第3のデータ幅の各データ
に対してそれぞれ非線形変換処理を施させるものである
ことを特徴とする。 また、本発明は、共通鍵ブロック
暗号方式による暗号化装置において、初段では入力され
た128ビットの平文ブロックデータを、2段目以降の
各段では前段での処理が施された128ビットのブロッ
クデータを入力とし、該ブロックデータを4分割した4
組の32ビット・データに対してそれぞれ局所的な線形
拡散処理と非線形変換処理と局所的な線形拡散処理とを
順次施して出力する4つの第1の非線形変換処理部と、
これら4つの第1の非線形変換処理部からそれぞれ出力
された4組の32ビット・データを連結した128ビッ
トのブロックデータに対して最大距離分離行列を用いて
線形拡散処理を施し次段へ出力する第1の拡散処理部と
を、1段分の段構成として、該段構成を所定段数分接続
し、最後の前記第1の拡散処理部の後段に、この第1の
拡散処理部から出力される128ビットのブロックデー
タを入力とする前記4つの第1の非線形変換処理部を接
続し、この4つの第1の非線形変換処理部の後段に、こ
れら4つの第1の非線形変換処理部からそれぞれ出力さ
れた4組の32ビット・データを連結した128ビット
のブロックデータに対して128ビットの鍵データを加
算して128ビットの暗号化されたブロックデータとし
て出力する第1の鍵加算部を接続して構成されるととも
に、前記第1の非線形変換処理部の各々は、与えられた
1組の前記32ビット・データをさらに4分割した4組
の8ビット・データに対してそれぞれ8ビットの鍵デー
タを加算する4つの第2の鍵加算部と、各第2の鍵加算
部の出力に対してそれぞれ8ビットの入出力変換表を用
いて非線形変換を行う4つの第2の非線形変換処理部
と、これら4つの第2の非線形変換処理部からそれぞれ
出力された4組の8ビット・データを連結した32ビッ
ト・データに対して最大距離分離行列を用いて線形拡散
処理を施す第2の拡散処理部と、この第2の拡散処理部
の後段にさらに接続された4組の前記第2の鍵加算部お
よび第2の非線形変換処理部とからなるものであること
を特徴とする。 また、本発明は、共通鍵ブロック暗号
方式による暗号化装置において、初段では入力された6
4ビットの平文ブロックデータを、2段目以降の各段で
は前段での処理が施された64ビットのブロックデータ
を入力とし、該ブロックデータを2分割した2組の32
ビット・データに対してそれぞれ局所的な線形拡散処理
と非線形変換処理と局所的な線形拡散処理とを順次施し
て出力する2つの第1の非線形変換処理部と、これら2
つの第1の非線形変換処理部からそれぞれ出力された2
組の32ビット・データを連結した64ビットのブロッ
クデータに対して最大距離分離行列を用いて線形拡散処
理を施し次段へ出力する第1の拡散処理部とを、1段分
の段構成として、該段構成を所定段数分接続し、最後の
前記第1の拡散処理部の後段に、この第1の拡散処理部
から出力される64ビットのブロックデータを入力とす
る前記2つの第1の非線形変換処理部を接続し、この2
つの第1の非線形変換処理部の後段に、これら2つの第
1の非線形変換処理部からそれぞれ出力された2組の3
2ビット・データを連結した64ビットのブロックデー
タに対して64ビットの鍵データを加算して64ビット
の暗号化されたブロックデータとして出力する第1の鍵
加算部を接続して構成されるとともに、前記第1の非線
形変換処理部の各々は、与えられた1組の前記32ビッ
ト・データをさらに4分割した4組の8ビット・データ
に対してそれぞれ8ビットの鍵データを加算する4つの
第2の鍵加算部と、各第2の鍵加算部の出力に対してそ
れぞれ8ビットの入出力変換表を用いて非線形変換を行
う4つの第2の非線形変換処理部と、これら4つの第2
の非線形変換処理部からそれぞれ出力された4組の8ビ
ット・データを連結した32ビット・データに対して最
大距離分離行列を用いて線形拡散処理を施す第2の拡散
処理部と、この第2の拡散処理部の後段にさらに接続さ
れた4組の前記第2の鍵加算部および第2の非線形変換
処理部とからなるものであることを特徴とする。
【0008】
【0009】
【0010】
【0011】
【0012】
【0013】
【0014】
【0015】
【0016】
【0017】
【0018】
【0019】
【0020】
【0021】なお、装置に係る本発明は方法に係る発明
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。暗号化装置に係る従属項は、暗号化方
法、復号装置、復号方法に係る従属項としても成立す
る。
【0022】また、装置または方法に係る本発明は、コ
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
【0023】本発明では、局所的なデータ拡散を行う小
型の拡散層とブロック幅に及ぶ拡散を行う大型の拡散層
を交互に重ねて運用する。本発明によれば、複数種類の
異なる拡散(例えば、大小2段階の拡散)によって、計
算コストを抑えたまま高く均一な拡散を実現した。ま
た、階層的にブランチ数が保証でき(ブランチ数の階層
性)、活性S−box数の下限を容易に保証できる。ま
た、強度評価がしやすいという特性がある。
【0024】SQUARE暗号やRijndael暗号
では、小型の拡散とバイト単位の並べ方によって同等の
効果を実現している。しかし、それらの暗号では拡散層
が1種類であるため、SQUARE攻撃と呼ばれる解読
法が存在する。本発明では、大小2種類の拡散層の組み
合わせ方によって、SQUARE攻撃に対する耐性の向
上が可能である。
【0025】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。
【0026】本実施形態では、局所的な拡散(小拡散)
と、ブロック幅に渡る拡散(大拡散)との組み合わせに
よる、入れ子型(再帰的)SPN構造の暗号方式につい
て説明する。
【0027】以下では、暗号化を中心に説明し、その後
で復号について説明する。なお、復号アルゴリズムは、
暗号アルゴリズムの逆変換であり、鍵は暗号化と復号で
共通の、秘密の鍵である。
【0028】また、本暗号方式は、ハードウェアによっ
てもソフトウェアによっても実現可能であり、以下に示
す構成例は、暗号化装置(復号装置)の機能ブロック図
としても成立し、また暗号アルゴリズム(復号アルゴリ
ズム)の機能モジュール図としても成立する。
【0029】図1に、入れ子型(再帰的)SPN構造の
暗号方式(暗号化装置(もしくは復号装置)または暗号
アルゴリズム(もしくは復号アルゴリズム)、暗号処理
装置)の基本的な構成例を示す。
【0030】図1に示されるように、入れ子型SPN構
造では、各段において複数並列に並んだ非線形変換モジ
ュール(後述の例では拡大S−box)2の各々により
局所的な小拡散を行い、次いで拡散モジュール(後述の
例では大MDS)3によりブロック幅に渡る大拡散を行
い、また非線形変換モジュール2により局所的な小拡散
を行い、ということを所定段数繰り返す。さらに、非線
形変換モジュール2は、非線形変換モジュール(後述の
例ではS−box)4と拡散モジュール(後述の例では
小MDS)5とを交互に配列して構成される。
【0031】すなわち、本実施形態の入れ子型SPN構
造は、通常のSPN構造のS−boxの部分に小型のS
PN構造(後述の例では2段のSPN構造)を再帰的に
埋め込んだものである。
【0032】このような入れ子型SPN構造によれば、
ブランチ数が階層的に保証でき(ブランチ数の階層
性)、活性S−box数の下限を容易に保証できる、と
いう優れた特質が得られる。また、入れ子型SPN構造
には、この他に、単純明快な構造のため、強度評価がし
やすいという特性がある。
【0033】なお、図1では、局所的な小拡散を4並列
で表しているが、これに限定されるものではなく、それ
以外の並列数も可能である。また、図1では、全ブロッ
ク長を均等に分割した複数の小拡散を並列されている
が、これに限定されるものではなく、異なるビット長の
小拡散を複数組み合わせることも可能である。また、こ
の場合に、全ての小拡散のビット長を異なるようにして
もよいし、一部の小拡散のビット長は同じであってもよ
い。また、図1では、1種類の局所的な小拡散を用いて
いるが、2種類以上の局所的な小拡散を用いることも可
能である(例えば、図1において、ブロック幅に渡る拡
散モジュール3を、1つおきに、2つの非線形変換モジ
ュール2に渡る拡散モジュールに替えた構成)。また、
同一構成の繰り返し構造にする方法の他に、一部のみ構
成を替えることも可能である。また、例えば、全ての非
線形変換モジュール2の構成を同一構成にすることも、
非線形変換モジュール2について、異なる構成を混在さ
せることも可能である。この点は、拡散モジュール3、
非線形変換モジュール4、拡散モジュール5のそれぞれ
についても同様である。また、例えば、最初の入力段
と、最後の出力段だけ、他の中間段とは異なる内部構成
にしてもよい。また、図1では、2階層の入れ子構造で
あるが、3階層以上の入れ子構造も可能である(3階層
の場合、例えば、非線形変換モジュール4をさらにSP
N構造にする)。また、例えば、非線形変換モジュール
2によって階層構造を異ならせることも可能である。こ
の他にも、種々のバリエーションが考えられる。
【0034】以下では、8ビットS−boxを利用した
AES相当の128ビット・ブロック暗号の具体例を用
いつつ本実施形態について説明する。
【0035】ここで、ブロック暗号の強度評価に関して
説明する。
【0036】与えられた関数fの暗号強度を見積もる重
要な指標として最大差分確率/最大線形確率がある。
【0037】[最大差分確率、最大線形確率の定義]関
数f(x)に対し、最大差分確率dpと最大線形確率
lpはそれぞれ次式で表される。
【0038】
【数1】
【0039】ここで、Δxはxの入力差分、Γxはxの
マスク値を表す。
【0040】一般には、最大差分確率dpや最大線形
確率lpを求めることが困難な場合が多い。ここで、
その近似値として最大差分特性確率DPおよび最大線
形特性確率LPで安全性を評価する。
【0041】本実施形態では、入れ子型SPN構造を暗
号化関数として用いる。ここでは、その基本構造である
SPS構造の特性について述べる。ここで、SPSと
は、S−box層と拡散層PをS−P−Sのように3層
重ねた構造を指す。
【0042】[ブランチ数]SPS構造において入力x
に対する拡散層の出力がθ(x)のとき、差分解読に対
するブランチ数Bは次式で定義する(文献[1]、文献
[6]清水秀夫,金子敏信,“共通鍵暗号のdiffusion層に
ついて,”SCIS 99-72,1999.)。
【0043】
【数2】
【0044】ここで、w()はS−boxのビット幅を
符号長としたハミング距離である。非零の入出力差分に
接続するS−boxを活性S−boxと呼ぶ。
【0045】この拡散層の入出力にS−boxを接続し
た構造をSPS構造と呼ぶ。S−boxが全単射のと
き、SPS構造への入力ビットに非零の差分を持つもの
が1個でもあれば、ブランチ数の定義により、活性S−
boxはブランチ数以上(すなわちB以上)になる。ま
た、S−boxの最大差分確率をps とすると、SPS
構造の最大差分特性確率は、上界値ps を越えない。
【0046】[MDS(Maximum Distan
ce Separable)行列]SPS構造のS層と
してM並列のS−boxを用いた場合、それらを結合す
る拡散層のブランチ数は(M+1)以下であり、ブラン
チ数が(M+1)を満たす線形変換をMDS(Maxi
mum Distance Separable;最大
距離分離)行列と呼ぶ。
【0047】拡散層がMDS行列であるとき、SPS構
造の最大差分特性確率は上界値ps M+1 を越えない
[1]。同様に、S−boxの最大線形確率をqs とす
ると、SPS構造の最大線形特性確率はq M+1 を越
えない。
【0048】[入れ子型SPS構造のブランチ数]2段
SPN構造をそれより大きなSPN構造のS−boxと
して利用するとき、拡大S−box(小構造)と呼ぶこ
とにする。ここで、S−boxはM1 並列であり、拡大
S−box内の拡散層のブランチ数をB1 とする。拡大
S−boxに対するM2 並列の2段SPN構造(大構
造)を考え、その拡散層のブランチ数をB2 とする。こ
のとき、大構造中の活性S−box数は下界値B1 ・
2 を下回らない。この性質がブランチ数の階層性であ
る。
【0049】また、大小2種類の拡散層の両方がMDS
行列であるとき、活性S−box数は(M1 +1)(M
2 +1)を下回らない。これにより、入れ子型SPN構
造のDP、LPの上限を抑えることが可能になる。
【0050】図2に、M1 =M2 =4の場合の例を示
す。15が後述する大MDS行列による拡散部を示し、
11〜14がその入力側の拡大S−boxを示し、16
〜19がその出力側の拡大S−boxを示し、各々の拡
大S−box内において、20が後述する小MDSによ
る拡散部を示し、図中で最も小さく示した矩形(21,
22)が入力側および出力側のS−boxを示す。
【0051】図2において、S−boxのうちハッチン
グしたものは活性を表し(図中の21参照)、白抜きで
示したものは差分零を表す(図中の22参照)。また、
太線で示した拡大S−box(11,13,16,1
7,19)は活性を表し、その他の拡大S−box(1
2,14,18)は差分零を表す。4段で活性S−bo
xが25個以上であることが分かる。
【0052】このように、本例の暗号では、2段で5×
5=25個以上の活性S−box数を保証できる。S−
boxの最大差分確率は、 ps =6/256、 2段での差分特性確率は、 ps 25=2-135.4<<2-128、 となり、差分解読法が有効でないことが分かる。
【0053】同様に、線形特性確率についても、 qs =22/256、 qs 25=2-88.5 <<2-64 、 となり、線形解読法が有効でないことが分かる。
【0054】なお、従来のSQUARE/Rijnda
el型暗号に適用されるSQUARE攻撃は、段内の1
バイトに対して、他の入力を固定したまま、28 通りの
すべてのパターンを入力したとき、2段通過後の出力バ
イトの各々に対して28 通りのすべてのパターンが出現
する特性を利用するものであるが、本例の暗号では、例
えば後述する大MDSの取り方によってS−box間の
攪拌性を向上させることで、その単純な適用を困難にし
ている。
【0055】以下では、入れ子型暗号方式の具体例を用
いながら本実施形態についてより詳しく説明する。
【0056】本実施形態の具体例の構成について説明す
る。
【0057】図3に、本実施形態の入れ子型暗号方式の
データ攪拌部の階層構造の例を示す。
【0058】ブロック長は、128ビットを例にとる
(もちろん、他のブロック長でも本発明は実施可能であ
る)。鍵長は、256ビットを例にとる(もちろん、他
の鍵長でも本発明は実施可能である)。なお、本実施形
態で、ブロック長を128ビットとしたときに、鍵長を
128ビットや192ビットとした場合について後述す
る。
【0059】複数並列された拡大S−boxと大MDS
との対(ただし、後述するように最終段は大MDSを含
まない)を1段と数えるものとした場合に、段数をR段
として表し、具体例を用いる場合にはR=8を用いる。
なお、基本的には段数は何段でも実施可能であるが、実
際の段数は、例えば安全性や計算機資源等を想定して適
宜設定することができ、好ましくは6段以上、より好ま
しくは8段以上とすると、より効果的である。
【0060】なお、本例の暗号では、段関数がS−bo
x層を2層含んでいるので、1段が通常の2段に相当す
る。段構造内の大MDSについては、異なるガロア体に
基づくいくつかの実装を示す(強度優先や速度優先の例
を挙げる)。
【0061】図4に、本実施形態に係る暗号化装置の構
成例を示す。
【0062】101が各段であり、104は大MDS拡
散層、102は拡大S−box層、103は各々の拡大
S−boxである。105は、排他的論理和部である。
121〜124は、詳しくは後述する鍵スケジュール部
の構成部分である。Pは入力となる128ビットの平文
データ、Cは出力となる128ビットの暗号文データで
ある。
【0063】段関数は、以下に述べるように、2段SP
N構造からなる32ビット処理サブ・ブロック(拡大S
−box)103を4個並列に並べ、MDS拡散層10
4で繋いだ構造である。全体の基本構造は、この段関数
の繰り返しにする。
【0064】なお、図4の例では、暗号化と復号の処理
を対称的にするため、最終段は拡大S−box層102
とその後の鍵加算105だけで構成することにしてい
る。
【0065】段関数1段に2段SPN構造が埋め込ま
れ、最後に鍵加算が行われるので、拡大鍵のビット長
は、2×128×R+128=128(2R+1)とな
る。R=8の場合には、128×17ビットとなる。
【0066】次に、S−boxについて説明する。
【0067】本例の暗号では、入出力表で定義する8ビ
ットS−boxを利用する。
【0068】図5に、8ビットS−boxの入出力表の
一例を示す。図5において、配列要素は16進数で表現
してある。
【0069】図5の表は、最左上の値(72)がs
[0]に対応し、その1つ右の値(AA)がs[1]に
対応し、その行の右端の値(9F)がs[15]に対応
し、次の行に移って、その左端の値(69)がs[1
6]に対応し、その1つ右の値(6A)がs[17]に
対応し、以下同様の要領である。そして、最下右の値
(57)がs[255]に対応する。
【0070】図5に例示したS−boxの特性は、次の
通りである。 ・最大差分確率:6/256(理論的最小値は4/25
6) ・最大線形確率:22/256(理論的最小値は16/
256) ・代数次数:7次(全単射関数の最大値) なお、S−boxには、入出力表を用いる代わりに、演
算処理を用いても良い。
【0071】次に、各々の拡大S−box(または小構
造とも呼ぶ)の部分について説明する。
【0072】図6に、拡大S−box103の内部構成
例を示す。この例では、4並列の8ビットS−box1
12(図5参照)を2組用意し、拡散層113を挟んだ
2段SPN構造になっている。この構造は、SPS構造
と呼ぶべきものでもあるが、2段目の拡散層が省略され
た特殊な2段SPN構造とみなす。S−box112の
入力直前では、必ず鍵加算111を行う。拡大S−bo
x内の拡散層113には、MDS行列を使用し、これを
小MDSと呼び、MDSと表記する。小MDSのブラ
ンチ数は5である。
【0073】図7に、本例の暗号で利用するMDS
列の一例を示す。図7において、行列要素は16進数で
表現してある。ここで、S−box入出力と行列要素
は、乗算の際、ガロア体GF(28 )の元とみなす。こ
の例の場合の原始多項式は、x 8 +x6 +x5 +x+1
である。
【0074】次に、本例の暗号の段関数である大構造に
ついて説明する。
【0075】図8に、1段の部分の構成例を示す。本例
の暗号の段関数である大構造は、4並列の32ビット拡
大S−box103(図6参照)をMDS行列の拡散層
104で結合して構成する。この段関数である大構造に
おける拡散層104にも、MDS行列を使用し、これを
大MDSと呼び、MDSと表記する。ただし、ここで
のMDS行列とは、拡大S−boxに着目したブランチ
数が5であることを意味する。
【0076】大MDSの最も単純な構成は、拡大S−b
oxの32ビット幅の出力をGF(232)の元として実
現する方法である。この方法は高い強度が実現しやすい
が、一般的な実行は困難もしくは高速化はしにくい。そ
こで、この場合には、大MDS行列に制約を課すのが好
ましい。
【0077】また、4並列のMDSを構成するには、4
ビット幅で十分であり、GF(24)上の演算を利用し
て実現できる。さらに、MDSを巡回的なものにするこ
とで、効率的な計算が可能になる。
【0078】また、実際には、これ以外のGF(28
やGF(216)を利用する中間の型も可能である。
【0079】GF(232)を利用した大MDSについて
説明する。
【0080】この場合、拡大S−boxの入出力をGF
(232)の元とみなして、大構造MDSを設計する。こ
れは、SPN構造での自然な設計法である。しかし、3
2ビット幅では乗算表による実装は現実的ではない。計
算による場合も一般のMDS行列では計算量が掛かり高
速化が困難である。計算量が増加する原因は、ガロア体
上の乗算における桁上がり時の処理が重いためである。
計算量を抑えるためには、大MDS行列を、ビット表現
で32ビット中の下位5ビットにのみ1が現れる(下位
5ビット以外は0のものに限定した)要素で構成する方
法がある。このような条件を満たす行列を使用すること
で、桁上がり処理を上位4ビットを入力とする表引きで
処理可能となる。
【0081】図9に、大MDS行列の一例を示す。この
例の場合の原始多項式は、x32+x 28+x27+x+1で
ある。
【0082】GF(24 )を利用した大MDSについて
説明する。
【0083】図10に、この場合のMDS行列の一例を
示す。この例の場合の原始多項式は、x4 +x+1とす
る。
【0084】ここでは、1つの拡大S−box103に
おいて4つのS−boxの各々の出力すなわち8ビット
・データの同じ位置(例えば図10では最上位ビットを
例にとって示している)の1ビットを集めて、これを1
組4ビットのデータとし、4つの拡大S−box103
からの4組の4ビット・データを、GF(24 )の元と
みなす。
【0085】そして、8ビット・データの同じ位置につ
いて、2段の4並列拡大S−box層の間の拡散層10
4に4行4列のMDS行列(例えば図10では最上位ビ
ットの場合、104−1)を用いる。
【0086】出力となった4組の4ビット・データは、
それぞれ対応するもとの8ビット・データの同じ位置に
結線される。
【0087】S−boxのビット幅に対応して、8個の
MDS行列(104−1〜104−8)を用意して、大
MDSとする。
【0088】これらの4行4列のMDS行列は、それぞ
れ、ブランチ数5を保証する。各MDS行列は、S−b
ox中の異なるビット位置に接続するので、全体として
もブランチ数5を保証する。
【0089】各拡大S−boxの同じ位置のS−box
出力を単位とした表引きによって(なお、演算によって
もよい)、8個のMDS行列を同時に処理する効率的な
実行が可能である。
【0090】さらに、MDS行列が巡回的な場合、32
ビットごとの排他的論理和と8ビット単位のビット回転
を組み合わせた効率的な処理が可能となる。
【0091】なお、上記と同様の考え方により、8ビッ
ト・データのうちの同じ位置の2ビットごとに処理を行
うこととして、各要素が8ビットの4行4列のMDS行
列(GF(28 ))を、4個用意して、大MDSとする
ことも可能である。また、8ビット・データのうちの同
じ位置の4ビットごとに処理を行うこととして、各要素
が16ビットの4行4列のMDS行列(GF(216))
を、2個用意して、大MDSとすることも可能である。
【0092】なお、上記では、同じ位置のビットを取り
出して処理を行うものとして説明したが、異なる位置の
ビットを(排他的に)取り出して処理を行うことも可能
である。
【0093】なお、図4では、拡大S−boxを4並列
で表しているが、これに限定されるものではなく、それ
以外の並列数も可能である。また、拡大S−boxの内
部構成を、全て同一とせずに、異なるものを混在させる
ことも可能である。また、全ての大MDS行列を同一に
せずに、異なるものを混在させることも可能である。こ
の点は、小MDS行列、S−boxの入出力表について
も同様である。また、例えば、最初の入力段と、最後の
出力段だけ、他の中間段とは異なる内部構成にしてもよ
い。この他にも、種々のバリエーションが考えられる。
【0094】次に、鍵スケジュール部(鍵生成部)につ
いて説明する。
【0095】図11に、鍵スケジュール部の構成例を示
す。121は、データ攪拌部の段関数の1段分に対応す
る部分であり、131は線形拡散層(本例では、大MD
Sによる拡散層とする)であり、132は非線形変換層
(本例では、4並列のSP層(S−box層・拡散層)
133とする)であり、134は排他的論理和部であ
り、135は剰余加算部である。図11では省略してい
るが、121の部分の構成が必要に応じて繰り返される
ことになる。なお、128ビットの鍵を出力する構成単
位を鍵スケジュール部の1つの段とすると、鍵スケジュ
ール部の段数は(2R+1)段となる(R=8の場合、
17段である)。
【0096】図11の例では、256ビットの変形Fe
istel型繰り返し処理の各段の出力左半分128ビ
ットを取り出し、段数依存定数Ci を剰余加算して拡大
鍵とする。
【0097】なお、鍵長を256ビットとする場合に
は、例えば、上位128ビットを初段の線形拡散層13
1に与え、下位128ビットを非線形変換層132に与
えればよい。また、鍵長を128ビットとする場合に
は、例えば、その128ビットを初段の線形拡散層13
1に与えるとともに、非線形変換層132に与えればよ
い。また、鍵長を192ビットとする場合には、例え
ば、上位128ビットを初段の線形拡散層131に与
え、下位側64ビットと上位側64ビットとを結合した
128ビットを非線形変換層132に与えればよい。
【0098】なお、図12のように、段数依存定数Ci
を剰余加算する箇所について、種々のバリエーションが
考えられる。
【0099】図13に、図11や図12における非線形
変換層132の各々の非線形変換層133の構成例を示
す。141はS−boxであり、142は4並列のS−
boxを入力とする小MDSである。
【0100】なお、このS−boxは、図4の暗号処理
側のS−boxと同じものでもよいし、異なるものでも
よい。小MDSについても同様である。また、鍵スケジ
ュール部の各段によってS−boxや小MDSの構成を
変えることも可能である。
【0101】図14に、図11や図12における非線形
変換層132の各々の非線形変換層133の他の構成例
を示す。この例は、図13の構成に対して、排他的論理
和部143を付加したものである。
【0102】さらに、図14において、S−boxに対
する入力と排他的論理和をとる定数を、段数依存定数と
する構成も可能である。
【0103】次に、各段で異なる定数Ci を作る方法の
一例について説明する。
【0104】図11や図12の鍵スケジュール部の12
8ビットの加算定数Ci は、4つのビット定数(H0
1 ,H2 ,H3 )の組み合わせで記述することができ
る。32ビットの定数Hi の一例を次に示す。 H0 =(5a827999)H=21/2 /4 H1 =(6ed9eba1)H=31/2 /4 H2 =(8f1bbcdc)H=51/2 /4 H3 =(ca62c1d6)H=101/2 /4 加算定数Ci の組み合わせを、Ci =(Ci0,Ci1,C
i2,Ci3)と記述する。各段で異なる128ビットの定
数Ci を容易に生成するため、Ci を構成するHi の組
み合わせの決定に8ビットLFSRを用いる。例えば、
LFSRの原始多項式には(1D)H を、LFSRの初
期状態には(8B)H を用いる。このLFSRを用いて
生成されたビット列を2ビットづつ読み出し、定数とし
て使用する32ビット定数Hi を決定する。
【0105】図15に、上記のような方法によりLFS
Rを用いて決定した加算定数表の例を示す。
【0106】なお、LFSRの初期状態は、可変として
もよいし、固定としてもよい。前者の場合には、LFS
Rの初期状態も鍵の一部を構成することになる。後者の
場合には、暗号側と同じLFSRの初期状態を持つ復号
側のみ、暗号文を復号することができる。
【0107】以上説明したような鍵スケジュール部によ
れば、非線形変換層については、入力の1ビットが変化
すると、S−box(141)により、8ビットに変化
を波及させ、さらに、小MDS(142)により、32
ビットに変化を波及させることができる。さらにまた、
線形拡散層については、大MDS(131)が前段の非
線形変換層の出力をより大きく攪拌するので、1ビット
の違いも、128ビットの幅に広がる利点がある。
【0108】従って、このような鍵スケジュール部によ
れば、各段でバラバラな鍵が出やすい、攪拌しやすい、
という効果を得ることができる。また、段ごとに異なる
定数により、段にわたる鍵の一致が少ない(鍵がほぼ一
致しない)、という効果を得ることができる。
【0109】なお、鍵スケジュール部として他の構成を
とることも可能である。
【0110】さて、以下では、大きなブロック長を持つ
ブロック暗号のデータの攪拌部に用いられる効率的な線
形拡散装置について説明する。
【0111】図16に、本実施形態の線形拡散装置の基
本的な構成要素である有限体乗算装置の構成例を示す。
前述したGF(232)あるいはGF(216)を利用した
大MDS(図9、図4の104、図11や図12の13
1参照)における、1つの入力と大MDS行列の1つの
要素との積の計算に、この線形拡散装置を用いることが
できる。
【0112】図16に示されるように、この有限体乗算
装置は、係数格納部202、乗算部203、桁溢れ帰還
部201、排他的論理和分(排他和部)204を用いて
構成される。
【0113】係数格納部202は、係数すなわち乗算の
乗数(例えば、図9の大MDS行列の1つの要素)を格
納する部分である。
【0114】乗算部203は、入力ワードと係数を2進
数とみなした場合の乗算を行う部分である。
【0115】なお、係数格納部202の係数が1、2、
4、…、のように2のべき乗の場合には、通常の乗算器
を用いた計算が行える。また、この乗算器がキャリーを
伝播させない特殊な乗算器である場合には、係数格納部
202の係数が任意の値のときに計算が行える。
【0116】桁溢れ帰還部201は、乗算の結果として
生ずる桁溢れを有限体上の乗算に戻すため排他的論理和
分204で足される数(帰還ワード)を検索する部分で
ある。
【0117】排他的論理和分204は、乗算部203の
出力と桁溢れ帰還部201の出力ビット的な排他和を行
う部分である。
【0118】有限体乗算装置200の機能は、有限体G
F(2)の拡大体GF(2k )の元である入力ワードa
と同じ有限体の別の元である係数bの積a×bを出力ワ
ードとして計算することである。
【0119】まず、有限体における積について説明す
る。
【0120】なお、以下の記述において、Σai i
おいて総和を取るiの範囲やΣbjj において総和を
取るjの範囲を0〜k−1とし、それらの範囲について
の記述を省略する。
【0121】GF(2k )の元は、多項式表現によっ
て、ある変数xの(k−1)次の多項式Σai i とし
て表現できる。元aを表現するのに、その係数を並べて
k-1k-2 …c0 として表現することもある。
【0122】2つの元a=Σai i とb=Σbi i
の積は、 a×b=(Σai i )×(Σbi i ) mod p
(x) で定義される。
【0123】ここで、p(x)はGF(2k )の原始多
項式と呼ばれ、周期(2k −1)を持つk次の既約なモ
ニック多項式である。また、modの意味は、例えば、
k=32の場合、原始多項式としてp(x)=x32+x
28+x27+x+1を選んだ場合、多項式の積によってx
32の項や因子が現れた場合には、それを(x28+x27
x+1)と見なすということを表す。従って、積もまた
k次未満の多項式となる。
【0124】一般に、このような操作を行う場合、高速
な処理を行うため、乗数と被乗数をタグとして積を検索
する乗算表を用いた乗算装置を用いることがある。しか
し、乗数と被乗数はともに2k 個の値を取り得るので、
乗算表は、22k個のエントリを持ち、各エントリはkビ
ットのサイズを持つので、kがある程度大きくなると、
乗算表のサイズは非常に大きなものとなる。
【0125】本実施形態も、基本的には、乗算表を用い
る方式に類似するが、係数がある制約条件を満足する場
合には、はるかに小さな記憶容量によって実現すること
ができる。
【0126】その制約条件とは、係数bは、定数であっ
て、非零の係数を持つのは、ある次数t以下の下位の係
数のみであるということである(t次を越える次数の係
数は0であり、t次以下の係数は0または1である)。
ある元aが任意の元を取る場合には、桁溢れは、最大3
2ビットであるが、この制約条件を満足する場合には、
桁溢れは、高々、tビットである。このtビットの桁溢
れの値を決定するのは、被乗数aの上位tビットまでの
MSB(Most SignificantBits)
である。
【0127】有限体上の乗算と通常の多項式と見なした
場合の乗算との違いは、2進数の積の結果、32次以上
の係数への桁溢れが起こった場合に、原始多項式によっ
て、32次未満の係数へその寄与を還元する必要がある
が、本実施形態では、桁溢れ帰還部201が、還元すべ
きワードを表として持っている。
【0128】この帰還ワードは、高々(t+1)ビット
の係数bと乗数aの上位tビットと原始多項式から決定
できる。つまり、(a[(k−t)...(k−1)]×
b)[(t+1)...2t] mod p(x)によっ
て与えられる。ここで、a[(k−t)...(k−
1)]とは、aの中から、(k−1)次から(k−t)
次までの項を取り出したものである。
【0129】すなわち、桁溢れ帰還部201が持つ帰還
ワードの表の内容は、対応するMDS行列(図9参照)
の要素に応じて決まる。
【0130】桁溢れ帰還部201が持つ帰還ワードの表
は、2t 個のエントリからなり、各エントリはkビット
のサイズを持つ。
【0131】次に、上述した有限体乗算装置を利用する
ことで実現される、ブロック暗号のデータ・ブロックに
線形変換を施す線形変換装置について説明する。
【0132】線形変換の1種にMDS行列による線形変
換がある。MDS行列とは、データ・ブロックが、複数
(n)のワードから構成され、各ワードがkビットの長
さを持つ場合、各ワードを有限体GF(2k )の元と見
なし、n個の元の組をn個の元の組に線形写像するn行
n列の行列であって、すべての小行列が非零のものであ
る。MDS行列による線形変換は、非零の入出力のワー
ドの数の下限が保証されているという性質を持つ。
【0133】しかし、一般に、有限体GF(2k )上の
行列演算は、GF(2k )上の複数回の乗算と加算から
構成され、計算コストが大きい。
【0134】図17に、本実施形態の線形変換装置の構
成例を示す。前述したGF(232)あるいはGF
(216)を利用した大MDS(図9、図4の104、図
11や図12の131)に、この線形変換装置を用いる
ことができる。
【0135】図17の構成では、まず、図16の有限体
乗算装置をMDS行列に対応してマトリクス状に用意す
る。
【0136】図17においてm=nとすると、n2 個の
有限体乗算装置200の各々の係数は、n行n列のMD
S行列の対応する要素と同じ値をとる。係数aijを持つ
装置には、第i入力ワードが入力される。
【0137】各々の出力ワードに対する排他的論理和分
205は、それぞれ、あるjに対応する係数aijを持つ
すべての有限体乗算装置200の出力ビット的な排他的
論理和を計算し、第j出力ワードとして出力する。
【0138】本実施形態における線形変換装置は、線形
変換を表現するMDS行列を(aij)で表現するとき、
各要素aijは高々t次までの項しか非零の係数を持たな
いことを特徴とする。ここで、i,jは、0からn−1
までの整数値を取りうるとする。また、tは、有限体G
F(2k )の拡大次数kよりも小さな正数であるとす
る。
【0139】これによって、図18のような乗算が実現
できる。
【0140】なお、桁溢れ帰還部201が持つ帰還ワー
ドの表の内容は、対応するMDS行列の要素に応じて決
まるので、例えば、図9の大MDS行列の例では、4種
類の帰還ワード表だけ持てばよいことになる。
【0141】次に、本暗号方式に用いるMDS行列(特
に大MDS)を生成するためのMDS行列生成装置(も
しくはランダム生成アルゴリズム)について説明する。
【0142】図19に、MDS行列生成装置の構成例を
示す。図19に示されるように、このMDS行列生成装
置は、要素生成部231、小行列式計算部232、判定
部233を用いて構成される。
【0143】図20に、この場合の手順の一例を示す。
【0144】要素生成部231は、ランダムに、n行n
列のMDS行列の各行列要素を生成する(ステップS
1)。なお、先の有限体乗算装置を適用可能とする場合
には、このときに、下位tビットのみ非零の要素(t次
以下の要素)からなるMDS行列を生成しておく(すな
わち、この場合には、要素生成部231内で、下位tビ
ットのみ非零かどうかのチェックを行うことになる)。
【0145】なお、行列要素を生成するためには、乱数
を発生して用いる方法や、多重ループの制御変数の値を
用いる方法など種々の方法が考えられる。
【0146】次に、小行列式計算部232は、要素生成
部231の生成した行列の1次小行列を計算し(ステッ
プS2)、判定部233は、小行列式計算部232が計
算した小行列が非零か否かを判定する(ステップS
3)。1つでも零の1次小行列式があれば、ステップS
1からやり直す。
【0147】すべての1次小行列式が非零ならば、同じ
要領で、2次小行列について同様にチェックする(ステ
ップS4,S5)。
【0148】以上を、n次小行列式まで、同じ要領で行
い(ステップS6,S7)、1次からn次まですべての
小行列式が非零であることが確認されたならば、そのM
DS行列を出力する(ステップS8)。
【0149】なお、ステップS8で得たMDS行列を暗
号化に用いるMDS行列とした場合、復号に用いるMD
S行列は、ステップS8で得たMDS行列の逆行列によ
って与えられる(逆に、ステップS8で得たMDS行列
を復号に用いる場合には、その逆行列が、暗号化に用い
るMDS行列となる)。
【0150】ただし、ステップS8で得られたMDS行
列の全ての要素が下位tビットのみ非零であっても、そ
の逆行列の全ての要素が下位tビットのみ非零であると
は限らない。
【0151】なお、図20の手順おいて、小行列式の判
定を1次からn次まで順番に行っているが、他の順番で
もよく、また、それらの全部または一部を並列して行っ
てもよい。
【0152】次に、暗号化に用いるMDS行列と、その
逆行列である、復号に用いるMDS行列との両方とも、
下位tビットのみ非零という条件を満たすように、MD
S行列を求める方法について説明する。
【0153】図21に、この場合のMDS行列生成装置
の構成例を示す。図21に示されるように、このMDS
行列生成装置は、要素生成部231、小行列式計算部2
32、判定部233、逆行列生成部234、逆行列判定
部235を用いて構成される。要素生成部231、小行
列式計算部232、判定部233の部分は、図19と同
様である。
【0154】図22に、この場合の手順の一例を示す。
【0155】まず、先の例と同様にして、要素生成部2
31、小行列式計算部232、判定部233により、下
位tビットのみ非零の要素からなるMDS行列を生成す
る(ステップS11)。
【0156】次に、逆行列生成部234により、生成さ
れたMDS行列の逆行列を求める(ステップS12)。
【0157】次に、逆行列判定部235は、求められた
逆行列の各々の要素が、下位tビットのみ非零かどうか
調べる。
【0158】全ての要素が下位tビットのみ非零であれ
ば(ステップS13)、そのMDS行列および逆行列を
出力する(ステップS14)。
【0159】1つでも下位tビットのみ非零ではない要
素があれば(ステップS13)、S11からやり直す。
【0160】なお、ステップS11で生成されたMDS
行列を暗号化に用いる場合、ステップS12で生成され
た逆行列を復号に用いることになる(逆に、ステップS
11で生成されたMDS行列を復号に用いる場合、ステ
ップS12で生成された逆行列を暗号化に用いることに
なる)。
【0161】なお、MDS行列を生成するにあたって
は、同一行内に同じ値の要素が存在しないようなMDS
行列(n行n列のMDS行列において第i1要素から第
in要素までの中に同一の値を持つ2個以上の要素がな
いもの)を生成するようにしてもよい。例えば、図20
や図22の手順例の場合、MDS行列の生成時に、同一
行内に同じ値の要素が存在するかどうかチェックし、同
一行内に1つでも同じ値の要素が存在すれば、MDS行
列を生成し直すようにすればよい。なお、同一列内に同
じ値の要素が存在しても構わない。
【0162】ブロック暗号のデータの線形変換装置とし
て、同一行内に同じ値の要素が存在しないようなMDS
行列を選択した線形変換装置を用いることによって、入
力ワードの差分値が相殺する確率を小さくすることがで
きる。
【0163】また、同一行内の要素の和が1または0に
ならないようにMDS行列を生成するようにしてもよ
い。この場合も、同様の効果が得られる。
【0164】次に、S−boxと小MDSの組み合わせ
を選択する(あるいは最適化する)ことによって、より
安全性を高める方法、より具体的には、最大差分特性確
率が理論的最悪例よりも良くなることを保証するS−b
oxとMDSの組み合わせの設計方法について説明す
る。
【0165】MDSはブランチ数Bしか保証しないの
で、S−boxの最大差分確率がpとすると、最大差分
特性確率は、pB になる。例えば、m行m列のMDSは
B=m+1となる。しかし、S−boxと小MDSの組
み合わせを選択する(あるいは最適化する)ことによ
り、ブランチ数Bで、最大差分特性確率がpB 未満を保
証することができる。この結果、通常のMDSよりも最
大差分確率が小さいMDSとS−boxを組み合わせる
ことにより、相乗効果が望め、安全性をより向上させる
ことができる。
【0166】さて、暗号アルゴリズムの安全性評価の一
手法として、差分解読法あるいは線形解読法があり、両
者は双対な関係にある。差分解読法に着目すると、S−
boxの安全性は入出力の差分相関を持つ確率で規定さ
れ、この確率が小さいほど安全性が高い。暗号アルゴリ
ズムでは、差分確率の小さいS−boxが多数組み合わ
せられるほど安全性が向上する。効率的なS−boxの
連結方法として、線形変換装置が従来から提案されてい
る。線形変換装置は、あるブロック長のデータに対して
線形変換を施す装置で、暗号化装置(や復号装置)の構
成要素として利用されることがある。線形変換の一種に
MDS行列による線形変換がある。
【0167】MDS行列とは、データブロックがn個の
複数のワードから構成される場合、n個のワードへの線
形変換を定義する行列であり、非零の入出力ワードはn
+1個以上が保証されているという性質を持つ。しか
し、S−boxは、差分確率として、6/256、4/
256、2/256など複数の値の候補を持つため、M
DSであっても、n+1個の確率がそれぞれ6/256
のMDSと、それぞれ4/256であるMDSとでは、
後者の方が安全性が高い。
【0168】従来、S−boxとMDSは単体の構成要
素としてそれぞれ独立に安全性を評価されたが、ここで
は、S−boxとMDSの相乗効果を検証する装置の例
を示す。
【0169】図23に、この場合の処理手順の一例を示
す。この例は、差分解読法に着目して、S−boxとの
相乗効果が望めるMDS決定処理を示している。差分解
読法と線形解読法は双対な関係にあるため、この処理を
線形確率に着目して行うことにより、線形解読法に対し
ても同じ効果が得られる。
【0170】まず、複数のS−boxの候補と複数の小
MDSの候補を生成する(ステップS21、ステップS
22)。なお、ステップS21とステップS22は逆の
順番で行ってもよいし、並列して行ってもよい。
【0171】次に、S−box候補のなかからS−bo
xを1つ選択するとともに(ステップS23)、小MD
S候補のなかから小MDSを1つ選択する(ステップS
24)。なお、ステップS23とステップS24を逆の
順番で行ってもよいし、並列して行ってもよい。
【0172】次に、後述するように、有効な(活性にし
た)S−boxの差分値の最大を計算し(ステップS2
5)、上限(例えば、6/256)を下回る差分値(例
えば、4/256)が含まれているかどうか調べる。
【0173】そして、含まれていれば(ステップS2
6)、そのときのS−boxと小MDSの組み合わせを
出力する(ステップS27)。
【0174】一方、含まれていなければ(ステップS2
6)、S−boxと小MDSの一方または両方を選択し
直して、以下、同様に、処理を繰り返す。
【0175】なお、図23では、最初に複数のS−bo
xの候補と複数の小MDSの候補を生成しておいたが、
その代わりに、最初の1組以外は、ステップS26で条
件を満たさずに、他のS−boxおよびまたはMDSを
選択することになったときに、生成するようにしてもよ
い。
【0176】ステップS25およびステップS26の処
理は、実際には、次のようになる。
【0177】例えば、図6の例の場合、S−boxと小
MDSの組について、次の4種類、計20通りの検証を
行い、すべての条件を満たした場合に、ステップS27
でそのときのS−boxと小MDSの組が出力される。 小MDS113の入力側の1つのS−box112の
み活性にした場合に、小MDS113の出力側の4つの
S−box112が全て活性になり、かつ、そのうちの
1つでも上限を下回る差分値になれば、この検証を合格
とする。この検証を、入力側の4つのS−box112
の各々について行う(4通りある)。 小MDS113の入力側の2つのS−box112の
み活性にした場合に、小MDS113の出力側の4つの
S−box112が全て活性になれば、この検証を合格
とし、小MDS113の出力側の3つのS−box11
2が活性になり、かつ、そのうちの1つでも上限を下回
る差分値になれば、この検証を合格とする。この検証
を、入力側の2つのS−box112の組み合わせの各
々について行う(6通りある)。 小MDS113の出力側の2つのS−box112の
み活性にした場合に、小MDS113の入力側の4つの
S−box112が全て活性になれば、この検証を合格
とし、小MDS113の入力側の3つのS−box11
2が活性になり、かつ、そのうちの1つでも上限を下回
る差分値になれば、この検証を合格とする。この検証
を、出力側の2つのS−box112の組み合わせの各
々について行う(6通りある)。 小MDS113の出力側の1つのS−box112の
み活性にした場合に、小MDS113の入力側の4つの
S−box112が全て活性になり、かつ、そのうちの
1つでも上限を下回る差分値になれば、この検証を合格
とする。この検証を、出力側の4つのS−box112
の各々について行う(4通りある)。
【0178】上記の複数の検証処理は、逐次行ってもよ
いし、全部または一部を並列的に行ってもよい。上記の
複数の検証処理のうち、1つでも合格しないものがあれ
ば、そのS−boxと小MDSの組み合わせについて
は、以降の全ての検証処理をうち切って、不合格として
構わない。
【0179】なお、図23の手順の例では、最初に条件
を満たしたS−boxと小MDSの組み合わせが得られ
た時点で、処理をうち切るものであったが、条件を満た
したS−boxと小MDSの組み合わせを複数求め、そ
れらのうちで最も良いと評価されるものを選択するよう
にしてもよい。
【0180】以下では、復号側について説明する。
【0181】復号側は、基本的には、暗号側を逆にした
構造である(鍵は同一である)。
【0182】図24に、図4の暗号化装置に対応する復
号装置の構成例を示す。
【0183】図25に、図6の小構造に対応する構成例
を示す。
【0184】図26に、図8の大構造に対応する構成例
を示す。
【0185】なお、図24では、復号装置の鍵スケジュ
ール部は、図4の暗号化装置の鍵スケジュール部と同一
の構成としてある。
【0186】復号装置における、S−box1112の
入出力表、小MDS1113の小MDS行列、大MDS
1104の大MDS行列は、それぞれ、暗号化装置にお
ける、S−box112の入出力表(例えば図5)、小
MDS113の小MDS行列(例えば図7)、大MDS
104の大MDS行列(例えば、図9、図10)と逆関
数(逆行列)の関係になっている。
【0187】なお、図24では、鍵については、図4と
同様の順番で生成しているが、図4とは逆の順番で生成
するように構成することも可能である。
【0188】図27に、この場合の鍵スケジュール部の
構成例を示す。
【0189】1132は、図11の非線形変換層132
の逆変換を示している(例えば各々のSP層133の逆
変換(例えば図13あるいは図14の入出力を逆方向に
したもの)を4並列にしたものである)。
【0190】図27の鍵スケジュール部で用いる、S−
boxの入出力表、小MDS行列、大MDS行列は、そ
れぞれ、図11の鍵スケジュール部で用いる、S−bo
xの入出力表、小MDS行列、大MDS行列と逆関数
(逆行列)の関係になっている。
【0191】また、図27の復号の鍵入力K’は、図4
において(暗号側で)最後の鍵加算に用いられた鍵とす
る。
【0192】なお、この場合においても、段数依存定数
i を剰余加算する箇所について、図12の場合と同様
の方法をはじめとして、種々のバリエーションが考えら
れる。
【0193】以上では、局所的な拡散(小拡散)と、ブ
ロック幅に渡る拡散(大拡散)との組み合わせによる、
入れ子型(再帰的)SPN構造の暗号方式を適用した例
として8ビットS−boxを利用したAES相当の12
8ビット・ブロック暗号の具体例を用いたが、以下で
は、同64ビット・ブロック暗号の具体例を用いつつ本
実施形態について説明する(128ビットを64ビット
にしたことに応じて相違することになる部分を中心に説
明する)。
【0194】以下で説明する64ビット・ブロック暗号
の暗号化装置/復号装置もしくは暗号アルゴリズム/復
号アルゴリズムの構成例は、図1に例示した基本構成に
おいて、非線形変換モジュール2すなわち具体例では拡
大S−boxを、2並列にした場合に相当する。
【0195】64ビット・ブロック暗号の場合について
も、もちろん、前述の128ビット・ブロック暗号の場
合と同様に、攻撃に対する耐性の向上が可能である。
【0196】この場合の入れ子型暗号方式のデータ攪拌
部の階層構造の例は図3と同様である。ブロック長は、
64ビットである。鍵長は、128ビットを例にとる
(もちろん、他の鍵長でも本発明は実施可能である)。
なお、本実施形態で、ブロック長を64ビットとしたと
きに、鍵長を64ビットや96ビットとした場合につい
て後述する。
【0197】段数(複数並列された拡大S−boxと大
MDSとの対(ただし、後述するように最終段は大MD
Sを含まない)を1段と数えるものとしている)の具体
例を用いる場合にはR=6を用いる。なお、基本的には
段数は何段でも実施可能であるが、実際の段数は、例え
ば安全性や計算機資源等を想定して適宜設定することが
でき、好ましくは6段以上とすると、より効果的であ
る。
【0198】本例の暗号では、段関数がS−box層を
2層含んでいるので、1段が通常の2段に相当する。段
構造内の大MDSについては、ガロア体に基づく実装例
を示す。
【0199】図28に、本実施形態に係る暗号化装置の
構成例を示す。
【0200】2101が各段であり、2104は大MD
S拡散層、2102は拡大S−box層、2103は各
々の拡大S−boxである。2105は、排他的論理和
部である。2121〜2124は、詳しくは後述する鍵
スケジュール部の構成部分である。Pは入力となる64
ビットの平文データ、Cは出力となる64ビットの暗号
文データである。なお、拡大S−box2103は、図
4の拡大S−box103と同様のもので構わない。
【0201】段関数は、2段SPN構造からなる32ビ
ット処理サブ・ブロック(拡大S−box)2103を
2個並列に並べ、MDS拡散層2104で繋いだ構造で
ある。全体の基本構造は、この段関数の繰り返しにす
る。
【0202】なお、図28の例では、暗号化と復号の処
理を対称的にするため、最終段は拡大S−box層21
02とその後の鍵加算2105だけで構成することにし
ている。
【0203】段関数1段に2段SPN構造が埋め込ま
れ、最後に鍵加算が行われるので、拡大鍵のビット長
は、2×64×R+64=64(2R+1)となる。R
=6の場合には、128×13ビットとなる。
【0204】S−boxは、前述したように、入出力表
を用いることもできるし、演算処理を用いることもでき
る。8ビットS−boxの入出力表の一例は、図5に示
したものと同様のもので構わない。
【0205】拡大S−box103の内部構成例は、図
6と同様とする。拡大S−box内の拡散層113につ
いても同様に、例えば、図7に例示したMDS行列を
使用し、S−box入出力と行列要素をガロア体GF
(28 )の元とみなして乗算を行うものとする。
【0206】次に、本例の暗号の段関数である大構造に
ついて説明する。
【0207】図29に、1段の部分の構成例を示す。本
例の暗号の段関数である大構造は、2並列の32ビット
拡大S−box2103(図6参照)をMDS行列の拡
散層2104で結合して構成する。この段関数である大
構造における拡散層2104にも、MDS行列を使用す
る。
【0208】大MDSの構成についても、前述と同様、
GF(232)やGF(24 )やGF(28 )やGF(2
16)を利用する方法がある。
【0209】GF(24 )を利用した大MDSについて
説明する。
【0210】図30に、この場合のMDS行列の一例を
示す。
【0211】ここでは、1つの拡大S−box2103
において4つのS−boxの各々の出力すなわち8ビッ
ト・データの同じ位置(例えば図30では最上位ビット
を例にとって示している)の1ビットを集めて、これを
1組4ビットのデータとし、2つの拡大S−box21
03からの2組の4ビット・データを、GF(24 )の
元とみなす。
【0212】そして、8ビット・データの同じ位置につ
いて、2段の2並列拡大S−box層の間の拡散層21
04に2行2列のMDS行列(例えば図30では最上位
ビットの場合、2104−1)を用いる。
【0213】出力となった2組の4ビット・データは、
それぞれ対応するもとの8ビット・データの同じ位置に
結線される。
【0214】S−boxのビット幅に対応して、8個の
MDS行列(2104−1〜2104−8)を用意し
て、大MDSとする。
【0215】各拡大S−boxの同じ位置のS−box
出力を単位とした表引きによって(なお、演算によって
もよい)、8個のMDS行列を同時に処理する効率的な
実行が可能である。
【0216】さらに、MDS行列が巡回的な場合、32
ビットごとの排他的論理和と8ビット単位のビット回転
を組み合わせた効率的な処理が可能となる。
【0217】なお、図30では、暗号側の大MDS行列
の一例として、 1行1列=5、1行2列=7 1行1列=A、1行2列=B を示したが、これに対応する復号側での大MDS行列
は、 1行1列=C、1行2列=A 1行1列=5、1行2列=B となる。なお、前者を復号側に用い、後者を暗号側に用
いるようにしてもよい。また、任意のMDS行列につい
て、行の入れ替え、列の入れ替え、転置を任意に行って
得た行列を用いることも可能である。また、この他の大
MDS行列を用いることも可能である。
【0218】ところで、この大MDS拡散層は、上記の
ように行列演算または入出力変換表による変換を実行す
るためのソフトウェアによって実現可能であるが、ハー
ドウェア(例えば半導体基板上等に形成した実回路)に
よっても実現可能である。
【0219】大MDSを実回路で実現する場合には、例
えば、MDS行列と等価な結線パターンを用いればよ
い。
【0220】図31に、GF(24 )上の乗算の結線表
現(結線パターン)を、GF(24)の1〜Fの元の各
々について示す。なお、結合部分では、排他的論理和が
なされる。
【0221】すなわち、図30の各々の拡散層2104
−1〜2104−8において、MDS行列の1行1列要
素をx1 に作用させる部分、1行2列要素をx2 に作用
させる部分、2行1列要素をx1 に作用させる部分、2
行2列要素をx2 に作用させる部分の結線パターンに、
当該行列要素の図31において該当する結線パターンを
用いればよい。
【0222】図32に、図30に例示した行列に基づい
て大MDSを実回路で構成した例を示す。図中、214
1が1行1列要素“5”に対応する結線パターン、21
42が1行2列要素“7”に対応する結線パターン、2
143が2行1列要素“A”に対応する結線パターン、
2144が2行2列要素“B”に対応する結線パターン
である。ただし、複数ビットが結合される部分では、排
他的論理和がなされる。
【0223】なお、行列の積に相当する部分の排他的論
理和による結合の後に、行列積の和に相当する部分の排
他的論理和による結合を行ったように示しているが、そ
れらすべての排他的論理和による結合を一括して行って
もよいし、適宜複数に分けて行ってもよい。
【0224】また、先に図31の結線パターン群のうち
から所望の結線パターンを選択して暗号側の大MDSの
実回路構成の候補を作り、次に、これに対応するMDS
行列の逆行列(MDS行列)が存在することを検証す
る、という手順を取ることも可能である。もちろん、復
号側を先に決めてもよい。
【0225】また、GF(24 )上の乗算の結線表現
(結線パターン)以外のものを用いることも可能であ
る。
【0226】もちろん、この方法は、前述した128ビ
ットブロック暗号にも適用可能である。
【0227】次に、繰り込みについて説明する。
【0228】ここで、MDS拡散層のファン・インにつ
いて説明する。図31の結線パターンにおいて、データ
の出力側の各ビットにおいて、当該ビットに結線される
ビット数(結線数)を、ファン・インと呼ぶものとす
る。例えば、“1”に対応する結線パターンでは、いず
れのビットも、ファン・イン=1である。また、“5”
に対応する結線パターンでは、左側のビットから右側の
ビットへ順番に、ファン・イン=2,3,3,2であ
る。
【0229】次に、このMDS拡散層の結線パターンに
ついてのファン・インの総計Sを考える。図32の例を
見ると、2141〜2144の点線内の16ビットのフ
ァン・インの総計Sは、45となる。このMDS拡散層
の結線パターンについてのファン・インの総計Sは、配
線の増加につながるので(行列計算を行う場合にも、排
他的論理和演算などの増加につながるので)、Sの値が
小さい方が好ましい。なお、GF(24 )の元を要素と
する2行2列のMDSの場合には、Sの最小値は18と
なる。
【0230】このSを削減する方法に、繰り込み手法が
ある。これによって、回路量(行列計算を行う場合には
計算量)を削減することができる。
【0231】繰り込みを行う場合、図33に示すよう
に、各々のMDS拡散層(2104−1〜2104−
8)について、当該MDS拡散層と前段の個々のS−b
oxとの間にそれぞれ、繰り込みのための前処理回路
(2180−1,2180−2)を挿入する。
【0232】この前処理回路の各々には、例えば、図3
1の結線パターンのいずれかが設けられる。あるいは、
等価な計算処理が行われる。
【0233】図33は、いずれのS−boxについても
共通因子5による繰り込みによる実装を行った場合を示
している。また、図34に、このときの大MDSの一例
を示す。この場合、大MDS行列は、 1行1列=1、1行2列=4 1行1列=2、1行2列=9 となる。図中、2145が1行1列要素“1”に対応す
る結線パターン、2146が1行2列要素“4”に対応
する結線パターン、2147が2行1列要素“2”に対
応する結線パターン、2148が2行2列要素“9”に
対応する結線パターンである。複数ビットが結合される
部分が排他的論理和に対応する点は前述の通りである。
この場合、Sの値は、20となっている。
【0234】図32による大拡散と、図33/図34に
よる大拡散とは、等価である。
【0235】繰り込みを行う場合に、共通因子およびそ
のときの行列を求める方法としては、例えば、図31の
ように繰り込みを行わない場合に求めた行列に対して、
共通因子をパラメータとして、等価な大拡散になるよう
な行列を求め、それらについてファン・インを評価し
て、採用するものを選択する方法がある。
【0236】なお、各S−boxについての共通因子を
同一にするという制約を課してもよいし、そのような制
約を課さなくてもよい。
【0237】なお、 1行1列=C、1行2列=A 1行1列=5、1行2列=B の行列について、いずれのS−boxについても共通因
子Bによる繰り込みによる実装を行うと、大MDS行列
は、 1行1列=9、1行2列=4 1行1列=2、1行2列=1 となる。
【0238】もちろん、この方法も、前述した128ビ
ットブロック暗号にも適用可能である。
【0239】なお、以上で例示した配線やレイアウトは
論理的な関係を示すものであり、実配線や実レイアウト
にはもちろん設計の自由度がある。また、大MDS層の
各部分104−1〜104−8の8つを実装してもよい
し、MDS部分104−1〜104−8のうちの一部
(例えば、1つ、2つ、あるいは4つ)のみを実装し、
それを時分割的に共用するように構成してもよい。
【0240】暗号側と復号側で構成の仕方は同様である
(逆変換の関係になるだけである)。
【0241】なお、上記と同様の考え方により、8ビッ
ト・データのうちの同じ位置の2ビットごとに処理を行
うこととして、各要素が8ビットの2行2列のMDS行
列(GF(28 ))を、4個用意して、大MDSを構成
することも可能である。また、8ビット・データのうち
の同じ位置の4ビットごとに処理を行うこととして、各
要素が16ビットの2行2列のMDS行列(GF
(216))を、2個用意して、大MDSを構成すること
も可能である。
【0242】また、上記では、同じ位置のビットを取り
出して処理を行うものとして説明したが、前述と同様、
異なる位置のビットを(排他的に)取り出して処理を行
うことも可能である。
【0243】また、図9の例と同様に、GF(232)を
利用した大MDS行列による構成も可能である。
【0244】以上の構成例は、前述した128ビットブ
ロック暗号にも適用可能である。
【0245】なお、前述と同様、図28では、拡大S−
boxの内部構成を、全て同一とせずに、異なるものを
混在させることも可能である。また、全ての大MDS行
列を同一にせずに、異なるものを混在させることも可能
である。この点は、小MDS行列、S−boxの入出力
表についても同様である。また、例えば、最初の入力段
と、最後の出力段だけ、他の中間段とは異なる内部構成
にしてもよい。なお、各々の大MDSの前段及び又は後
段に、同一の拡大S−boxに属する複数のS−box
についてのビットの位置を入れ替える処理を行う(ある
いはそのような回路を挿入する)構成も可能である。
【0246】この他にも、種々のバリエーションが考え
られる。
【0247】もちろん、ここで説明した大MDSの構成
は、これまで説明してきた種々のバリエーションを持つ
暗号化装置や復号装置に適用可能である。
【0248】次に、鍵スケジュール部(鍵生成部)につ
いて説明する。
【0249】図35に、鍵スケジュール部の構成例を示
す。2121は、データ攪拌部の段関数の1段分に対応
する部分であり、2131は線形拡散層(本例では、大
MDSによる拡散層とする)であり、2133は非線形
変換層(本例では、2並列のSP層(S−box層・拡
散層)とする)であり、2134は排他的論理和部であ
り、2135は剰余加算部である。図35では省略して
いるが、2121の部分の構成が必要に応じて繰り返さ
れることになる。なお、64ビットの鍵を出力する構成
単位を鍵スケジュール部の1つの段とすると、鍵スケジ
ュール部の段数は(2R+1)段となる(R=6の場
合、13段である)。
【0250】図35の例では、128ビットの変形Fe
istel型繰り返し処理の各段の出力左半分64ビッ
トを取り出し、段数依存定数Ci を剰余加算して拡大鍵
とする。
【0251】なお、鍵長を128ビットとする場合に
は、例えば、上位64ビットを初段の線形拡散層213
1に与え、下位64ビットを非線形変換層2133に与
えればよい。また、鍵長を64ビットとする場合には、
例えば、その64ビットを初段の線形拡散層2131に
与えるとともに、非線形変換層2133に与えればよ
い。また、鍵長を96ビットとする場合には、例えば、
上位64ビットを初段の線形拡散層2131に与え、下
位側32ビットと上位側32ビットとを結合した64ビ
ットを非線形変換層2133に与えればよい。
【0252】なお、図36のように、段数依存定数Ci
を剰余加算する箇所について、種々のバリエーションが
考えられる。
【0253】図35や図36における各々の非線形変換
層2133の構成例は、図13や図14と同様とする
(図14において、S−boxに対する入力と排他的論
理和をとる定数を、段数依存定数とする構成も可能であ
る点も、同様である)。このS−boxが、図28の暗
号処理側のS−boxと同じものでもよいし、異なるも
のでもよい点も、同様である。小MDSについても同様
である。また、鍵スケジュール部の各段によってS−b
oxや小MDSの構成を変えることも可能である。
【0254】次に、各段で異なる定数Ci を作る方法の
一例について説明する。
【0255】図35や図36の鍵スケジュール部の64
ビットの加算定数Ci は、2つのビット定数(H0 ,H
1 )の組み合わせで記述することができる。32ビット
の定数Hi の一例を次に示す。 H0 =(5a827999)H=21/2 /4 H1 =(6ed9eba1)H=31/2 /4 H2 =(8f1bbcdc)H=51/2 /4 H3 =(ca62c1d6)H=101/2 /4 加算定数Ci の組み合わせを、Ci =(Ci0,Ci1)と
記述する。各段で異なる64ビットの定数Ci を容易に
生成するため、Ci を構成するHi の組み合わせの決定
に8ビットLFSRを用いる。例えば、LFSRの原始
多項式には(1D)H を、LFSRの初期状態には(8
B)H を用いる。このLFSRを用いて生成されたビッ
ト列を2ビットづつ読み出し、定数として使用する32
ビット定数Hi を決定する。
【0256】図37に、上記のような方法によりLFS
Rを用いて決定した加算定数表の例を示す。
【0257】なお、LFSRの初期状態は、可変として
もよいし、固定としてもよい。前者の場合には、LFS
Rの初期状態も鍵の一部を構成することになる。後者の
場合には、暗号側と同じLFSRの初期状態を持つ復号
側のみ、暗号文を復号することができる。
【0258】以上説明したような鍵スケジュール部によ
れば、非線形変換層については、入力の1ビットが変化
すると、S−boxにより、8ビットに変化を波及さ
せ、さらに、小MDSにより、32ビットに変化を波及
させることができる。さらにまた、線形拡散層について
は、大MDSが前段の非線形変換層の出力をより大きく
攪拌するので、1ビットの違いも、64ビットの幅に広
がる利点がある。
【0259】従って、このような鍵スケジュール部によ
れば、各段でバラバラな鍵が出やすい、攪拌しやすい、
という効果を得ることができる。また、段ごとに異なる
定数により、段にわたる鍵の一致が少ない(鍵がほぼ一
致しない)、という効果を得ることができる。
【0260】なお、鍵スケジュール部として他の構成を
とることも可能である。
【0261】なお、図16〜図18を参照しながら説明
した線形拡散装置や有限体乗算装置は、この場合につい
ても適用可能である。また、図19〜図22を参照しな
がら説明したMDS行列生成装置(もしくはランダム生
成アルゴリズム)は、この場合についても適用可能であ
る。もちろん、図23を参照しながら説明したS−bo
xとMDSの組み合わせの設計方法は、この場合につい
ても適用可能である。
【0262】以下では、復号側について説明する。
【0263】復号側は、基本的には、暗号側を逆にした
構造である(鍵は同一である)。
【0264】図38に、図28の暗号化装置に対応する
復号装置の構成例を示す。
【0265】図39に、図28の大構造(図29参照)
に対応する構成例を示す。
【0266】図28の小構造(図6参照)に対応する構
成例は、図25と同様である。
【0267】なお、図38では、復号装置の鍵スケジュ
ール部は、図28の暗号化装置の鍵スケジュール部と同
一の構成としてある。
【0268】復号装置における、S−box(図25の
1112参照)の入出力表、小MDS(図25の111
3参照)の小MDS行列、大MDS3104の大MDS
行列は、それぞれ、暗号化装置における、S−box
(図6の1112参照)の入出力表、小MDS(図6の
113参照)の小MDS行列、大MDS3104の大M
DS行列と逆関数(逆行列)の関係になっている。
【0269】なお、図38では、鍵については、図28
と同様の順番で生成しているが、図28とは逆の順番で
生成するように構成することも可能である。
【0270】図40に、この場合の鍵スケジュール部の
構成例を示す。
【0271】3132は、図35の非線形変換層213
2の逆変換を示している(例えば各々のSP層2133
の逆変換(例えば図13あるいは図14の入出力を逆方
向にしたもの)を4並列にしたものである)。
【0272】図40の鍵スケジュール部で用いる、S−
boxの入出力表、小MDS行列、大MDS行列は、そ
れぞれ、図35の鍵スケジュール部で用いる、S−bo
xの入出力表、小MDS行列、大MDS行列と逆関数
(逆行列)の関係になっている。
【0273】また、図40の復号の鍵入力K’は、図2
8において(暗号側で)最後の鍵加算に用いられた鍵と
する。
【0274】なお、この場合においても、段数依存定数
i を剰余加算する箇所について、図36の場合と同様
の方法をはじめとして、種々のバリエーションが考えら
れる。
【0275】以上では、128ビット・ブロック暗号や
64ビット・ブロック暗号を例にとって説明したが、他
のビット長のブロック暗号にももちろん本発明は適用可
能である。
【0276】以下では、本実施形態のハードウェア構
成、ソフトウェア構成について説明する。
【0277】本実施形態の暗号化装置や復号装置は、ハ
ードウェアとしても、ソフトウェアとしても、実現可能
である。
【0278】本実施形態は、ソフトウェアで実現する場
合に、暗号化装置や復号装置を実現するプログラムであ
って、コンピュータに所定の手段を実行させるための
(あるいはコンピュータを所定の手段として機能させる
ための、あるいはコンピュータに所定の機能を実現させ
るための)プログラムを記録したコンピュータ読取り可
能な記録媒体としても実施することもできる。
【0279】また、ハードウェアとして構成する場合、
半導体装置として形成することができる。
【0280】また、本発明を適用した暗号化装置や復号
装置を構成する場合、あるいは暗号化プログラムや復号
プログラムを作成する場合に、図4や図24で例示した
ようなブロックもしくはモジュールをすべて個別に作成
することも可能であるが、同一構成を有するブロックも
しくはモジュールについては1または適当数のみ用意し
ておいて、それをアルゴリズムの各部分で共有する(使
い回す)ことも可能である。
【0281】また、ソフトウェアの場合には、マルチプ
ロセッサを利用し、並列処理を行って、処理を高速化す
ることも可能である。
【0282】なお、暗号化機能を持ち、復号機能を持た
ない装置として構成することも、復号機能を持ち、暗号
化機能を持たない装置として構成することも、暗号化機
能と復号機能の両方を持つ装置として構成することも、
可能である。同様に、暗号化機能を持ち、復号機能を持
たないプログラムとして構成することも、復号機能を持
ち、暗号化機能を持たないプログラムとして構成するこ
とも、暗号化機能と復号機能の両方を持つプログラムと
して構成することも、可能である。
【0283】次に、本実施形態のシステムへの応用につ
いて説明する。
【0284】本実施形態の暗号方式は、基本的にはどの
ようなシステムにも適用可能である。
【0285】例えば、図41に示すように、送信側装置
301と、受信側装置303との間で、所定の方法もし
くは手続により、鍵を安全に共有しておき、送信側装置
301は送信データをブロック長ごとに本実施形態の暗
号方式で暗号化し、所定のプロトコルに従って、通信ネ
ットワーク302を介して、暗号文を受信側装置303
へ送信し、暗号文を受信した受信側装置303では、受
信した暗号文をブロック長ごとに本実施形態の暗号方式
で復号し、もとの平文を得ることができる。なお、各々
の装置が、暗号化機能と復号機能を両方持っていれば、
双方向に暗号通信を行うことができる。
【0286】また、例えば、図42に示すように、計算
機311では、所定の方法で鍵を生成し、保存したいデ
ータをブロック長ごとに本実施形態の暗号方式で暗号化
し、所定のネットワーク(例えば、LAN、インターネ
ット等)314を介して、暗号化データとして、データ
・サーバ313に保存しておく。計算機311では、こ
のデータを読みたいときは、データ・サーバ313から
所望の暗号化データを読み込み、これをブロック長ごと
に本実施形態の暗号方式で復号し、もとの平文を得るこ
とができる。また、他の計算機312が、この鍵を知っ
ていれば、同様に復号してもとの平文を得ることができ
るが、鍵の分からない他の計算機は、該暗号データを復
号することはできず、情報のセキュリティ・コントロー
ルが可能になる。
【0287】また、例えば、図43に示すように、コン
テンツ提供側では、暗号化装置321により、あるコン
テンツを、ある鍵で、ブロック長ごとに本実施形態の暗
号方式で暗号化し、これを暗号化コンテンツとして、記
録媒体322に記録し、これを頒布等する。記録媒体3
22を取得したユーザ側では、所定の方法で該ある鍵を
入手することにより、復号装置323により、該コンテ
ンツを、ブロック長ごとに本実施形態の暗号方式で復号
し、コンテンツの閲覧もしくは再生等を行うことができ
る。
【0288】もちろん、上記以外にも種々のシステムに
適用可能である。
【0289】なお、本実施形態で示した構成は一例であ
って、それ以外の構成を排除する趣旨のものではなく、
例示した構成の一部を他のもので置き換えたり、例示し
た構成の一部を省いたり、例示した構成に別の機能を付
加したり、それらを組み合わせたりすることなどによっ
て得られる別の構成も可能である。また、例示した構成
と論理的に等価な別の構成、例示した構成と論理的に等
価な部分を含む別の構成、例示した構成の要部と論理的
に等価な別の構成なども可能である。また、例示した構
成と同一もしくは類似の目的を達成する別の構成、例示
した構成と同一もしくは類似の効果を奏する別の構成な
ども可能である。また、各種構成部分についての各種バ
リエーションは、適宜組み合わせて実施することが可能
である。また、本実施形態は、暗号化装置としての発
明、復号化装置としての発明、システム全体としての発
明、個別装置内部の構成部分についての発明、またはそ
れらに対応する方法の発明等、種々の観点、段階、概念
またはカテゴリに係る発明を包含・内在するものであ
る。従って、この発明の実施の形態に開示した内容から
は、例示した構成に限定されることなく発明を抽出する
ことができるものである。
【0290】本発明は、上述した実施の形態に限定され
るものではなく、その技術的範囲において種々変形して
実施することができる。
【0291】
【発明の効果】本発明によれば、局所的なデータ拡散を
行う小型の拡散層とブロック幅に及ぶ拡散を行う大型の
拡散層を交互に重ねて運用することにより、計算コスト
を抑えたまま高く均一な拡散を実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る暗号方式の基本的な
構成について説明するための図
【図2】同実施形態の暗号強度に関して説明するための
【図3】同実施形態の入れ子型暗号方式のデータ攪拌部
の階層構造の例を示す図
【図4】同実施形態の暗号化装置の構成例を示す図
【図5】同実施形態のS−boxの一例を示す図
【図6】同実施形態の拡大S−boxの内部構成例を示
す図
【図7】同実施形態の小MDSの一例を示す図
【図8】同実施形態の大MDSおよび拡大S−boxの
構造例を示す図
【図9】同実施形態の大MDSの一例を示す図
【図10】同実施形態の大MDSの他の例を示す図
【図11】同実施形態の鍵スケジュール部の構成例を示
す図
【図12】同実施形態の鍵スケジュール部の他の構成例
を示す図
【図13】同実施形態の非線形変換層の内部構成の一例
を示す図
【図14】同実施形態の非線形変換層の内部構成の他の
例を示す図
【図15】同実施形態の加算定数表の一例を示す図
【図16】同実施形態の有限体乗算装置の構成例を示す
【図17】同実施形態の線形変換装置の構成例を示す図
【図18】同実施形態の線形変換装置の構成例を示す図
【図19】同実施形態のMDS行列生成装置の構成例を
示す図
【図20】同実施形態のMDS行列生成処理手順の一例
を示すフローチャート
【図21】同実施形態のMDS行列生成装置の他の構成
例を示す図
【図22】同実施形態のMDS行列生成処理手順の他の
例を示すフローチャート
【図23】同実施形態のS−boxと小MDSの組み合
わせを選択するための処理手順の一例を示すフローチャ
ート
【図24】同実施形態の復号装置の構成例を示す図
【図25】同実施形態の拡大S−boxの内部構成例を
示す図
【図26】同実施形態の大MDSおよび拡大S−box
の構造例を示す図
【図27】同実施形態の鍵スケジュール部の構成例を示
す図
【図28】同実施形態の暗号化装置の他の構成例を示す
【図29】同実施形態の大MDSおよび拡大S−box
の他の構造例を示す図
【図30】同実施形態の大MDSのさらに他の例を示す
【図31】GF(24 )上の乗算の結線表現を示す図
【図32】同実施形態の大MDSのさらに他の例を示す
【図33】同実施形態に大MDSおける繰り込みについ
て説明するための図
【図34】同実施形態の大MDSのさらに他の例を示す
【図35】同実施形態の鍵スケジュール部のさらに他の
構成例を示す図
【図36】同実施形態の鍵スケジュール部のさらに他の
構成例を示す図
【図37】同実施形態の加算定数表の他の例を示す図
【図38】同実施形態の復号装置の他の構成例を示す図
【図39】同実施形態の大MDSおよび拡大S−box
の他の構造例を示す図
【図40】同実施形態の鍵スケジュール部の他の構成例
を示す図
【図41】同実施形態の暗号方式を利用したシステムの
一例を示す図
【図42】同実施形態の暗号方式を利用したシステムの
他の例を示す図
【図43】同実施形態の暗号方式を利用したシステムの
さらに他の例を示す図
【符号の説明】 1…暗号処理装置 2…最上位の階層の非線形変換モジュール 3…データ幅に渡る拡散モジュール 4…階層構造内部の非線形変換モジュール 5…局所的な拡散モジュール 102,2102,3102…拡大S−box層 103,1103,2103,3103…拡大S−bo
x 104,131,1104,2104,2131,31
04…大MDS 105,1105,2105,3105…(暗号文直前
の)鍵加算部 111,1111…鍵加算部 112,141,1112…S−box 113,142,1113…小MDS 121〜124,2121〜2124,3121〜31
24…鍵スケジュール部 134,143,2134…排他的論理和部 135,136,2135,2136…剰余加算部 200…有限体乗算装置 201…桁溢れ帰還部 202…係数格納部 203…乗算部 204…排他的論理和分 231…要素生成部 232…小行列式計算部 233…判定部 234…逆行列生成部 235…逆行列判定部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川村 信一 神奈川県川崎市幸区小向東芝町1番地 株式会社東芝研究開発センター内 (56)参考文献 特開 平1−144091(JP,A) 国際公開97/009705(WO,A1) CRYPTANALYSIS OF TREE−STRUCTURED SU BSTITUTION NETWORK S,ELECTRONICS LETT ERS,1993年 1月 7日,Vol. 29 No.1,p.40−41 On the Design of Linear Transformat ions for Substitut ion Permutation En cryption Networks, in the Workshop Re cord of the & Work shop on Selected A reas in Cryptograp hy,1997年 8月11日,p.40−48 Twofish A 128−Bit Block Cipher,1998年 6 月15日,URL,http://ww w.counterpnane.com /twofish.html Serpent : A New B lock Cipher Propos al,Lecture Notes i n Computer Scienc e,1998年 4月13日,Vol.1372, p.222−238 (58)調査した分野(Int.Cl.7,DB名) G09C 1/00 610 H04L 9/06 (54)【発明の名称】 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記 録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピ ュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体

Claims (13)

    (57)【特許請求の範囲】
  1. 【請求項1】ブロック暗号方式による暗号化装置におい
    初段では暗号化対象とする平文データとして第1のデー
    タ幅のデータを、2段目以降の各段では前段での処理が
    施された第1のデータ幅のデータを入力する複数段の第
    1の段関数処理手段であって、該 第1のデータ幅のデー
    タが複数に分割された第2のデータ幅の各データに対し
    てそれぞれ非線形変換処理を施す複数の第1の処理手段
    と、これら複数の第1の処理手段からの第2のデータ幅
    の各データからなる第1のデータ幅のデータに対して線
    形拡散処理を施す第2の処理手段とからなる複数段の第
    1の段関数処理手段と、 前記複数段の第1の段関数処理手段のうちの最後の段の
    第1の段関数処理手段での処理が施された第1のデータ
    幅のデータを入力する第2の段関数処理手段であって、
    該第1のデータ幅のデータが複数に分割された第2のデ
    ータ幅の各データに対してそれぞれ非線形変換処理を施
    す複数の第3の処理手段と、これら複数の第3の処理手
    段からの第2のデータ幅の各データからなる第1のデー
    タ幅のデータに基づいて前記平文データに対する暗号化
    データを出力する手段とからなる第2の段関数処理手段
    とを備え、 前記第1の処理手段及び第3の処理手段は、それぞれ、
    前記第2のデータ幅のデータがさらに複数に分割された
    第3のデータ幅の各データに対してそれぞれ非線形変換
    処理を施す複数の非線形変換処理手段と、これら複数の
    非線形変換処理手段からの第3のデータ幅の各データか
    らなる第2のデータ幅のデータに対して線形拡散処理を
    施す線形拡散処理手段と、この線形拡散処理手段からの
    第2のデータ幅のデータがさらに複数に分割された第3
    のデータ幅の各データに対してそれぞれ非線形変換処理
    を施す複数の非線形変換処理手段とからなるものである
    ことを特徴とする暗号化装置。
  2. 【請求項2】前記第2の処理手段は予め選択された最大
    距離分離行列を用いて第1のデータ幅を持つ入力データ
    から第1のデータ幅を持つ出力データを求めるものであ
    ることを特徴とする請求項1に記載の暗号化装置。
  3. 【請求項3】前記最大距離分離行列として全行列要素に
    ついて下位所定ビットのみ非零であるものを選択するこ
    とを特徴とする請求項2に記載の暗号化装置。
  4. 【請求項4】前記最大距離分離行列として同一行に属す
    る全行列要素が相異なる値を持つものを選択することを
    特徴とする請求項2または3に記載の暗号化装置。
  5. 【請求項5】前記第2の処理手段は、前記第1のデータ
    幅から所定数個おきに1ビットを取りだして連結したデ
    ータを入力として最大距離分離行列を用いて出力を求め
    る処理を、該1ビットを取り出す位置を変えたものにつ
    いてそれぞれ行うものであることを特徴とする請求項2
    に記載の暗号化装置。
  6. 【請求項6】前記線形拡散処理手段は予め選択された最
    大距離分離行列を用いて第2のデータ幅を持つ入力デー
    タから第2のデータ幅を持つ出力データを求めるもので
    あることを特徴とする請求項1ないし5のいずれか1項
    に記載の暗号化装置。
  7. 【請求項7】複数段の第1の段関数処理手段及び第2の
    段関数処理手段からなるブロック暗号方式による暗号化
    装置における暗号化方法であって、暗号化対象とする平文データとして第1のデータ幅のデ
    ータを入力装置から入力するステップと、 初段の前記第1の段関数処理手段により、 第1のデータ
    幅の前記暗号化データが複数に分割された第2のデータ
    幅の各データに対してそれぞれ非線形変換処理を施し、
    これら非線形変換処理を施された第2のデータ幅の各デ
    ータからなる第1のデータ幅のデータに対して線形拡散
    処理を施すステップと、 2段目以降の各段の前記第1の段関数処理手段のそれぞ
    れにより、順次、前段の前記第1の段関数処理手段での
    処理が施された第1のデータ幅のデータを入力し、該第
    1のデータ幅のデータが複数に分割された第2のデータ
    幅の各データに対してそれぞれ非線形変換処理を施し、
    これら非線形変換処理を施された第2のデータ幅の各デ
    ータからなる第1のデータ幅のデータに対して線形拡散
    処理を施すステップと、 前記第2の段関数処理手段により、前記複数段の第1の
    段関数処理手段のうちの最後の段の第1の段関数処理手
    段での処理が施された第1のデータ幅のデータを入力
    し、該第1のデータ幅のデータが複数に分割された第2
    のデータ幅の各データに対してそれぞれ非線形変換処理
    を施し、これら非線形変換処理を施された第2のデータ
    幅の各データからなる第1のデータ幅のデータに基づい
    て前記平文データに対する暗号化データを出力装置から
    出力するステップとを有し、 各段の前記第1の段関数処理手段及び前記第2の段関数
    処理手段により 、それぞれ、前記第2のデータ幅の各デ
    ータに対してそれぞれ非線形変換処理を施すにあたって
    は、前記第2のデータ幅のデータがさらに複数に分割さ
    れた第3のデータ幅の各データに対してそれぞれ非線形
    変換処理を施し、これら非線形変換処理を施された第3
    のデータ幅の各データからなる第2のデータ幅のデータ
    に対して線形拡散処理を施し、この線形拡散処理を施さ
    れた第2のデータ幅のデータがさらに複数に分割された
    第3のデータ幅の各データに対してそれぞれ非線形変換
    処理を施すことを特徴とする暗号化方法。
  8. 【請求項8】複数段の第1の段関数処理手段及び第2の
    段関数処理手段からなるブロック暗号方式による暗号化
    装置としてコンピュータを機能させるためのプログラム
    を記録したコンピュータ読取り可能な記録媒体におい
    て、 前記プログラムは、 暗号化対象とする平文データとして第1のデータ幅のデ
    ータを入力装置から入力するステップと、 初段の前記第1の段関数処理手段により、第1のデータ
    幅の前記平文が複数に分割された第2のデータ幅の各デ
    ータに対してそれぞれ非線形変換処理を施し、これら非
    線形変換処理を施された第2のデータ幅の各データから
    なる第1のデータ幅のデータに対して線形拡散処理を施
    すステップと、 2段目以降の各段の前記第1の段関数処理手段のそれぞ
    れにより、順次、前段の前記第1の段関数処理手段での
    処理が施された第1のデータ幅のデータを入力し、該
    1のデータ幅のデータが複数に分割された第2のデータ
    幅の各データに対してそれぞれ非線形変換処理を施し、
    これら非線形変換処理を施された第2のデータ幅の各デ
    ータからなる第1のデータ幅のデータに対して線形拡散
    処理を施すステップと、 前記第2の段関数処理手段により、前記複数段の第1の
    段関数処理手段のうちの最後の段の第1の段関数処理手
    段での処理が施された第1のデータ幅のデータを入力
    し、該第1のデータ幅のデータが複数に分割された第2
    のデータ幅の各データに対してそれぞれ非線形変換処理
    を施し、これら非線形変換処理を施された第2のデータ
    幅の各データからなる第1のデータ幅のデータに基づい
    て前記平文データに対する暗号化データを出力装置から
    出力するステップとをコンピュータに実行させるととも
    に、 各段の前記第1の段関数処理手段及び前記第2の段関数
    処理手段により 、それぞれ、前記第2のデータ幅の各デ
    ータに対してそれぞれ非線形変換処理を施すにあたって
    は、前記第2のデータ幅のデータがさらに複数に分割さ
    れた第3のデータ幅の各データに対してそれぞれ非線形
    変換処理を施し、これら非線形変換処理を施された第3
    のデータ幅の各データからなる第2のデータ幅のデータ
    に対して線形拡散処理を施し、この線形拡散処理を施さ
    れた第2のデータ幅のデータがさらに複数に分割された
    第3のデータ幅の各データに対してそれぞれ非線形変換
    処理を施させるものであることを特徴とするプログラム
    を記録したコンピュータ読取り可能な記録媒体。
  9. 【請求項9】ブロック暗号方式による復号装置におい
    復号対象とする暗号化データとして第1のデータ幅のデ
    ータを入力する第1の段関数処理手段であって、該暗号
    化データに基づいて得られる第1のデータ幅のデータが
    複数に分割された第2のデータ幅の各データに対してそ
    れぞれ非線形変換処理を施す複数の第1の処理手段から
    なる第1の段関数処理手段と、 初段では前記第1の段関数処理手段からの第1のデータ
    幅のデータを、2段目以降の各段では前段での処理が施
    された第1のデータ幅のデータを入力する複数段の第2
    の段関数処理手段であって、該第1のデータ幅に対して
    線形拡散処理を施す第2の処理手段と、該第2の処理手
    段からの 第1のデータ幅のデータが複数に分割された第
    2のデータ幅の各データに対してそれぞれ非線形変換処
    理を施し、最後の段以外の各段では、これら非線形変換
    処理を施された第2のデータ幅の各データからなる第1
    のデータ幅のデータを次段へ出力し、最後の段では、こ
    れら非線形変換処理を施された第2のデータ幅の各デー
    タからなる第1のデータ幅のデータを前記暗号化データ
    に対する平文データとして出力する複数の第の処理手
    とからなる複数段の第2の段関数処理手段とを備え、 前記第1の処理手段及び前記第3の処理手段は、それぞ
    れ、前記第2のデータ幅のデータがさらに複数に分割さ
    れた第3のデータ幅の各データに対してそれぞれ非線形
    変換処理を施す複数の非線形変換処理手段と、これら複
    数の非線形変換処理手段からの第3のデータ幅の各デー
    タからなる第2のデータ幅のデータに対して線形拡散処
    理を施す線形拡散処理手段と、この線形拡散処理手段か
    らの第2のデータ幅のデータがさらに複数に分割された
    第3のデータ幅の各データに対してそれぞれ非線形変換
    処理を施す複数の非線形変換処理手段とからなるもので
    あることを特徴とする復号装置。
  10. 【請求項10】第1の段関数処理手段及び複数段の第2
    の段関数処理手段からなるブロック暗号方式による復号
    装置における復号方法であって、復号対象とする暗号化データとして第1のデータ幅のデ
    ータを入力装置から入力するステップと、 前記第1の段関数処理手段により、第1のデータ幅の前
    記暗号化データが複数に分割された第2のデータ幅の各
    データに対してそれぞれ非線形変換処理を施すステップ
    と、 初段の前記第2の段関数処理手段により、前記第1の段
    関数処理手段からの第1のデータ幅のデータを入力し、
    該第1のデータ幅に対して線形拡散処理を施し、この線
    形拡散処理を施された 第1のデータ幅のデータが複数に
    分割された第2のデータ幅の各データに対してそれぞれ
    非線形変換処理を施すステップと、 初段及び最後の段以外の各段の前記第2の段関数処理手
    段のそれぞれにより、順次、前段の前記第2の段関数処
    理手段での処理が施された第1のデータ幅のデータを入
    力し、該第1のデータ幅に対して線形拡散処理を施し、
    この線形拡散処理を施された第1のデータ幅のデータが
    複数に分割された第2のデータ幅の各データに対してそ
    れぞれ非線形変換処理を施すステップと、 最後の段の前記第2の段関数処理手段により、前段の前
    記第2の段関数処理手段での処理が施された第1のデー
    タ幅のデータを入力し、該第1のデータ幅に対して線形
    拡散処理を施し、この線形拡散処理を施された第1のデ
    ータ幅のデータが複数に分割された第2のデータ幅の各
    データに対してそれぞれ非線形変換処理を施し、これら
    非線形変換処理を施された第2のデータ幅の各データか
    らなる第1のデータ幅のデータを前記暗号化データに対
    する平文データとして出力装置から出力するステップと
    を有し、 前記第1の段関数処理手段及び各段の前記第2の段関数
    処理手段により 、それぞれ、前記第2のデータ幅の各デ
    ータに対してそれぞれ非線形変換処理を施すにあたって
    は、前記第2のデータ幅のデータがさらに複数に分割さ
    れた第3のデータ幅の各データに対してそれぞれ非線形
    変換処理を施し、これら非線形変換処理を施された第3
    のデータ幅の各データからなる第2のデータ幅のデータ
    に対して線形拡散処理を施し、この線形拡散処理を施さ
    れた第2のデータ幅のデータがさらに複数に分割された
    第3のデータ幅の各データに対してそれぞれ非線形変換
    処理を施すことを特徴とする復号方法。
  11. 【請求項11】第1の段関数処理手段及び複数段の第2
    の段関数処理手段からなるブロック暗号方式による復号
    装置としてコンピュータを機能させるためのプログラム
    を記録したコンピュータ読取り可能な記録媒体におい
    て、 前記プログラムは、 復号対象とする暗号化データとして第1のデータ幅のデ
    ータを入力装置から入力するステップと、 前記第1の段関数処理手段により、第1のデータ幅の前
    記暗号化データが複数に分割された第2のデータ幅の各
    データに対してそれぞれ非線形変換処理を施すステップ
    と、 初段の前記第2の段関数処理手段により、前記第1の段
    関数処理手段からの第1のデータ幅のデータを入力し、
    該第1のデータ幅に対して線形拡散処理を施し、この線
    形拡散処理を施された 第1のデータ幅のデータが複数に
    分割された第2のデータ幅の各データに対してそれぞれ
    非線形変換処理を施すステップと、 初段及び最後の段以外の各段の前記第2の段関数処理手
    段のそれぞれにより、順次、前段の前記第2の段関数処
    理手段での処理が施された第1のデータ幅のデータを入
    力し、該第1のデータ幅に対して線形拡散処理を施し、
    この線形拡散処理を施された第1のデータ幅のデータが
    複数に分割された第2のデータ幅の各データに対してそ
    れぞれ非線形変換処理を施すステップと、 最後の段の前記第2の段関数処理手段により、前段の前
    記第2の段関数処理手段での処理が施された第1のデー
    タ幅のデータを入力し、該第1のデータ幅に対して線形
    拡散処理を施し、この線形拡散処理を施された第1のデ
    ータ幅のデータが複数に分割された第2のデータ幅の各
    データに対してそれぞれ非線形変換処理を施し、これら
    非線形変換処理を施された第2のデータ幅の各データか
    らなる第1のデータ幅のデータを前記暗号化データに対
    する平文データとして出力装置から出力するステップと
    をコンピュータに実行させるとともに、 前記第1の段関数処理手段及び各段の前記第2の段関数
    処理手段により 、それぞれ、前記第2のデータ幅の各デ
    ータに対してそれぞれ非線形変換処理を施すにあたって
    は、前記第2のデータ幅のデータがさらに複数に分割さ
    れた第3のデータ幅の各データに対してそれぞれ非線形
    変換処理を施し、これら非線形変換処理を施された第3
    のデータ幅の各データからなる第2のデータ幅のデータ
    に対して線形拡散処理を施し、この線形拡散処理を施さ
    れた第2のデータ幅のデータがさらに複数に分割された
    第3のデータ幅の各データに対してそれぞれ非線形変換
    処理を施させるものであることを特徴とするプログラム
    を記録したコンピュータ読取り可能な記録媒体。
  12. 【請求項12】共通鍵ブロック暗号方式による暗号化装
    において、 初段では入力された128ビットの平文ブロックデータ
    を、2段目以降の各段では前段での処理が施された12
    8ビットのブロックデータを入力とし、該ブロックデー
    タを4分割した4組の32ビット・データに対してそれ
    ぞれ局所的な線形拡散処理非線形変換処理と局所的な
    線形拡散処理とを順次施して出力する4つの第1の非線
    形変換処理部と、これら4つの第1の非線形変換処理部
    からそれぞれ出力された4組の32ビット・データを連
    結した128ビットのブロックデータに対して最大距離
    分離行列を用いて線形拡散処理を施し次段へ出力する第
    1の拡散処理部とを、1段分の段構成として、該段構成
    を所定段数分接続し、 最後の前記第1の拡散処理部の後段に、この第1の拡散
    処理部から出力される128ビットのブロックデータを
    入力とする前記4つの第1の非線形変換処理部を接続
    し、 この4つの第1の非線形変換処理部の後段に、これら4
    つの第1の非線形変換処理部からそれぞれ出力された4
    組の32ビット・データを連結した128ビットのブロ
    ックデータに対して128ビットの鍵データを加算して
    128ビットの暗号化されたブロックデータとして出力
    する第1の鍵加算部を接続して構成されるとともに、 前記第1の非線形変換処理部の各々は、与えられた1組
    の前記32ビット・データをさらに4分割した4組の8
    ビット・データに対してそれぞれ8ビットの鍵データを
    加算する4つの第2の鍵加算部と、各第2の鍵加算部の
    出力に対してそれぞれ8ビットの入出力変換表を用いて
    非線形変換を行う4つの第2の非線形変換処理部と、こ
    れら4つの第2の非線形変換処理部からそれぞれ出力さ
    れた4組の8ビット・データを連結した32ビット・デ
    ータに対して最大距離分離行列を用いて線形拡散処理を
    施す第2の拡散処理部と、この第2の拡散処理部の後段
    にさらに接続された4組の前記第2の鍵加算部および第
    2の非線形変換処理部とからなるものであることを特徴
    とする暗号化装置。
  13. 【請求項13】共通鍵ブロック暗号方式による暗号化装
    において、 初段では入力された64ビットの平文ブロックデータ
    を、2段目以降の各段では前段での処理が施された64
    ビットのブロックデータを入力とし、該ブロックデータ
    を2分割した2組の32ビット・データに対してそれぞ
    れ局所的な線形拡散処理非線形変換処理と局所的な線
    形拡散処理とを順次施して出力する2つの第1の非線形
    変換処理部と、これら2つの第1の非線形変換処理部か
    らそれぞれ出力された2組の32ビット・データを連結
    した64ビットのブロックデータに対して最大距離分離
    行列を用いて線形拡散処理を施し次段へ出力する第1の
    拡散処理部とを、1段分の段構成として、該段構成を所
    定段数分接続し、 最後の前記第1の拡散処理部の後段に、この第1の拡散
    処理部から出力される64ビットのブロックデータを入
    力とする前記2つの第1の非線形変換処理部を接続し、 この2つの第1の非線形変換処理部の後段に、これら2
    つの第1の非線形変換処理部からそれぞれ出力された2
    組の32ビット・データを連結した64ビットのブロッ
    クデータに対して64ビットの鍵データを加算して64
    ビットの暗号化されたブロックデータとして出力する第
    1の鍵加算部を接続して構成されるとともに、 前記第1の非線形変換処理部の各々は、与えられた1組
    の前記32ビット・データをさらに4分割した4組の8
    ビット・データに対してそれぞれ8ビットの鍵データを
    加算する4つの第2の鍵加算部と、各第2の鍵加算部の
    出力に対してそれぞれ8ビットの入出力変換表を用いて
    非線形変換を行う4つの第2の非線形変換処理部と、こ
    れら4つの第2の非線形変換処理部からそれぞれ出力さ
    れた4組の8ビット・データを連結した32ビット・デ
    ータに対して最大距離分離行列を用いて線形拡散処理を
    施す第2の拡散処理部と、この第2の拡散処理部の後段
    にさらに接続された4組の前記第2の鍵加算部および第
    2の非線形変換処理部とからなるものであることを特徴
    とする暗号化装置。
JP2000210484A 2000-03-06 2000-07-11 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体 Expired - Lifetime JP3499810B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2000210484A JP3499810B2 (ja) 2000-03-06 2000-07-11 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
US09/799,028 US7227948B2 (en) 2000-03-06 2001-03-06 Encryption apparatus and method, and decryption apparatus and method based on block encryption
EP01302065A EP1133100B1 (en) 2000-03-06 2001-03-06 Encryption apparatus and method, and decryption apparatus and method based on block encrytion
CNB011109408A CN1322697C (zh) 2000-03-06 2001-03-06 加密装置与加密方法
DE60119410T DE60119410T2 (de) 2000-03-06 2001-03-06 Vorrichtung und Verfahren zur Blockverschlüsselung und zur Entschlüsselung
KR10-2001-0011395A KR100415410B1 (ko) 2000-03-06 2001-03-06 암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법
US11/261,562 US7209556B2 (en) 2000-03-06 2005-10-31 Encryption apparatus and method, and decryption apparatus and method based on block encryption

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000060482 2000-03-06
JP2000-60482 2000-03-06
JP2000210484A JP3499810B2 (ja) 2000-03-06 2000-07-11 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体

Publications (3)

Publication Number Publication Date
JP2001324924A JP2001324924A (ja) 2001-11-22
JP3499810B2 true JP3499810B2 (ja) 2004-02-23
JP2001324924A5 JP2001324924A5 (ja) 2004-08-19

Family

ID=26586845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000210484A Expired - Lifetime JP3499810B2 (ja) 2000-03-06 2000-07-11 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体

Country Status (6)

Country Link
US (2) US7227948B2 (ja)
EP (1) EP1133100B1 (ja)
JP (1) JP3499810B2 (ja)
KR (1) KR100415410B1 (ja)
CN (1) CN1322697C (ja)
DE (1) DE60119410T2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US7382878B2 (en) * 2001-06-22 2008-06-03 Uponus Technologies, Llc System and method for data encryption
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7046803B2 (en) * 2001-10-06 2006-05-16 Samsung Electronics Co., Ltd. Random keystream generation apparatus and method for use in an encryption system
US7801301B2 (en) 2001-10-10 2010-09-21 Stmicroelectronics S.R.L. Method and circuit for data encryption/decryption
IL147287A0 (en) * 2001-12-25 2002-08-14 Yissum Res Dev Co Method and apparatus for controlling atmospheric conditions
JP4328487B2 (ja) * 2002-01-28 2009-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 組合せ回路、暗号回路、その生成方法及びプログラム
EP1510028A4 (en) * 2002-05-23 2008-01-23 Atmel Corp CRYPTOGRAPHIC MOTOR OF TECHNICAL EQUIPMENT BASED ON ADVANCED ENCRYPTION STANDARD (AES)
US7401109B2 (en) * 2002-08-06 2008-07-15 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Multiplication of multi-precision numbers having a size of a power of two
US7447310B2 (en) * 2002-08-06 2008-11-04 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Lean multiplication of multi-precision numbers over GF(2m)
US7363346B2 (en) * 2002-09-07 2008-04-22 Appistry, Inc. Reliably storing information across multiple computers such as in a hive of computers
EP1480371A1 (en) * 2003-05-23 2004-11-24 Mediacrypt AG Device and method for encrypting and decrypting a block of data
US7772999B2 (en) * 2007-12-10 2010-08-10 Peter Lablans N-state ripple adder scheme coding with corresponding n-state ripple adder scheme decoding
US8577026B2 (en) 2010-12-29 2013-11-05 Ternarylogic Llc Methods and apparatus in alternate finite field based coders and decoders
US20110064214A1 (en) * 2003-09-09 2011-03-17 Ternarylogic Llc Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
DE10345457A1 (de) * 2003-09-30 2005-04-28 Infineon Technologies Ag Verfahren und Vorrichtung zur Ver- und Entschlüsselung
US7415616B2 (en) * 2004-01-21 2008-08-19 National Institute Of Information And Communications Technology Cipher strength evaluation apparatus
FR2871969B1 (fr) * 2004-06-18 2006-12-01 Sagem Procede et dispositif d'execution d'un calcul cryptographique
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CA2922172A1 (en) 2004-10-25 2006-05-04 Security First Corp. Secure data parser method and system
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
WO2007008919A2 (en) * 2005-07-11 2007-01-18 University Of Virginia Patent Foundation Method and system for software protection using binary encoding
US20070043977A1 (en) * 2005-08-22 2007-02-22 Moxa Technologies Co., Ltd. [program encryption method]
KR20080065654A (ko) * 2005-10-10 2008-07-14 엔디에스 리미티드 블록 암호문 암호화를 위한 방법 및 시스템
CA2629015A1 (en) 2005-11-18 2008-05-08 Rick L. Orsini Secure data parser method and system
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) * 2006-09-01 2012-03-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US8265177B2 (en) * 2006-12-04 2012-09-11 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using beambook-constructed beamforming signals
US8259836B2 (en) * 2006-12-04 2012-09-04 Samsung Electronics Co., Ltd. Method and system for generating candidate beamforming coefficients for transmission of data over a wireless medium
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US20080250248A1 (en) * 2006-12-24 2008-10-09 Zeev Lieber Identity Management System with an Untrusted Identity Provider
IL182246A0 (en) * 2007-03-27 2008-01-06 Nds Ltd Method and system for block cipher encryption
US9191197B2 (en) * 2007-10-10 2015-11-17 Canon Kabushiki Kaisha AES encryption/decryption circuit
US8600050B1 (en) * 2008-02-22 2013-12-03 Sprint Communications Company L.P. Encrypting a data transmission using multiple channels
US8098816B2 (en) * 2008-10-17 2012-01-17 Qualcomm Incorporated Apparatus and method for evaluating a cipher structure's resistance to cryptanalysis
US9548758B2 (en) * 2010-01-05 2017-01-17 Alcatel-Lucent Usa Inc. Secure compressive sampling using codebook of sampling matrices
US9789247B2 (en) 2011-12-21 2017-10-17 Deka Products Limited Partnership Syringe pump, and related method and system
US9744300B2 (en) 2011-12-21 2017-08-29 Deka Products Limited Partnership Syringe pump and related method
US9295778B2 (en) 2011-12-21 2016-03-29 Deka Products Limited Partnership Syringe pump
CA2795206C (en) 2010-03-31 2014-12-23 Rick L. Orsini Systems and methods for securing data in motion
US20120323786A1 (en) * 2011-06-16 2012-12-20 OneID Inc. Method and system for delayed authorization of online transactions
US11217340B2 (en) 2011-12-21 2022-01-04 Deka Products Limited Partnership Syringe pump having a pressure sensor assembly
US10722645B2 (en) 2011-12-21 2020-07-28 Deka Products Limited Partnership Syringe pump, and related method and system
US9215223B2 (en) 2012-01-18 2015-12-15 OneID Inc. Methods and systems for secure identity management
KR101977823B1 (ko) * 2012-04-02 2019-05-13 삼성전자주식회사 랜덤 순열 생성 방법, 랜덤 순열 생성 장치 및 이를 구비하는 암복호화 장치
JP5772934B2 (ja) * 2013-12-02 2015-09-02 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
CA3175252A1 (en) 2014-02-21 2015-08-27 Deka Products Limited Partnership Syringe pump having a pressure sensor assembly
US10103877B2 (en) * 2015-09-24 2018-10-16 Intel Corporation SMS4 acceleration processors having round constant generation
US10860962B2 (en) 2015-10-28 2020-12-08 Qomplx, Inc. System for fully integrated capture, and analysis of business information resulting in predictive decision making and simulation
WO2017193093A1 (en) 2016-05-05 2017-11-09 Neustar, Inc. Systems and methods for enabling trusted communications between entities
US10958725B2 (en) 2016-05-05 2021-03-23 Neustar, Inc. Systems and methods for distributing partial data to subnetworks
US11025428B2 (en) 2016-05-05 2021-06-01 Neustar, Inc. Systems and methods for enabling trusted communications between controllers
US11108562B2 (en) 2016-05-05 2021-08-31 Neustar, Inc. Systems and methods for verifying a route taken by a communication
US11277439B2 (en) 2016-05-05 2022-03-15 Neustar, Inc. Systems and methods for mitigating and/or preventing distributed denial-of-service attacks
CN114040381A (zh) * 2021-11-08 2022-02-11 百度在线网络技术(北京)有限公司 加密方法、解密方法、装置及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3798359A (en) * 1971-06-30 1974-03-19 Ibm Block cipher cryptographic system
JPH0682259B2 (ja) 1987-11-30 1994-10-19 日本電信電話株式会社 データ拡散装置
WO1995009410A1 (fr) * 1993-09-29 1995-04-06 Pumpkin House Incorporated Dispositif et procede de chiffrement/dechiffrement et systeme de communication a chiffrement/dechiffrement
US5473693A (en) * 1993-12-21 1995-12-05 Gi Corporation Apparatus for avoiding complementarity in an encryption algorithm
KR100250803B1 (ko) 1995-09-05 2000-04-01 다니구찌 이찌로오 데이타 변환장치 및 데이타 변환방법
US5838794A (en) * 1996-01-11 1998-11-17 Teledyne Electronic Technologies Method and apparatus for inter-round mixing in iterated block substitution systems
US7305085B2 (en) 2000-06-30 2007-12-04 Kabushiki Kaisha Toshiba Encryption apparatus and method, and decryption apparatus and method based on block encryption

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CRYPTANALYSIS OF TREE−STRUCTURED SUBSTITUTION NETWORKS,ELECTRONICS LETTERS,1993年 1月 7日,Vol.29 No.1,p.40−41
On the Design of Linear Transformations for Substitution Permutation Encryption Networks,in the Workshop Record of the & Workshop on Selected Areas in Cryptography,1997年 8月11日,p.40−48
Serpent : A New Block Cipher Proposal,Lecture Notes in Computer Science,1998年 4月13日,Vol.1372,p.222−238
Twofish A 128−Bit Block Cipher,1998年 6月15日,URL,http://www.counterpnane.com/twofish.html

Also Published As

Publication number Publication date
US7227948B2 (en) 2007-06-05
EP1133100B1 (en) 2006-05-10
EP1133100A2 (en) 2001-09-12
DE60119410T2 (de) 2006-11-02
JP2001324924A (ja) 2001-11-22
EP1133100A3 (en) 2003-01-02
CN1322697C (zh) 2007-06-20
US20010024502A1 (en) 2001-09-27
US7209556B2 (en) 2007-04-24
US20070058805A1 (en) 2007-03-15
DE60119410D1 (de) 2006-06-14
KR100415410B1 (ko) 2004-01-16
CN1312630A (zh) 2001-09-12
KR20010087344A (ko) 2001-09-15

Similar Documents

Publication Publication Date Title
JP3499810B2 (ja) 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
US7305085B2 (en) Encryption apparatus and method, and decryption apparatus and method based on block encryption
US6298136B1 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
Kazymyrov et al. Influence of addition modulo 2 n on algebraic attacks
Biham et al. Differential-linear cryptanalysis of serpent
EP3480999B1 (en) Customizable encryption/decryption algorithm
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN111431697A (zh) 一种新型轻量级分组密码corl的实现方法
US6111952A (en) Asymmetrical cryptographic communication method and portable object therefore
JPH0675525A (ja) 暗号通信装置
Zhao et al. Truncated differential cryptanalysis of PRINCE
Jing et al. Reconfigurable system for high-speed and diversified AES using FPGA
Buell Modern symmetric ciphers—Des and Aes
JP2001282103A (ja) 暗号化方法
Lee et al. Design and evaluation of a block encryption algorithm using dynamic-key mechanism
Somasagar et al. Clefia-a encryption algorithm using novel s-box architecture
WO2012060685A1 (en) A method for linear transformation in substitution-permutation network symmetric-key block cipher
JP3557178B2 (ja) 暗号化装置及び暗号化方法、復号装置及び復号方法並びにプログラム
McLoone et al. System-on-chip architectures and implementations for private-key data encryption
Sone A New Cross-Layer FPGA-Based Security Scheme for Wireless Networks
Banik et al. Efficient and Secure Encryption for FPGAs in the Cloud
Lambooij et al. Cryptanalysis of Simon et al.
JP3017725B2 (ja) データ変換装置
Yan et al. Secret-Key Cryptography

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
R151 Written notification of patent or utility model registration

Ref document number: 3499810

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081205

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091205

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091205

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101205

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20131205

Year of fee payment: 10

EXPY Cancellation because of completion of term