JP4882598B2 - 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents

暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
JP4882598B2
JP4882598B2 JP2006224674A JP2006224674A JP4882598B2 JP 4882598 B2 JP4882598 B2 JP 4882598B2 JP 2006224674 A JP2006224674 A JP 2006224674A JP 2006224674 A JP2006224674 A JP 2006224674A JP 4882598 B2 JP4882598 B2 JP 4882598B2
Authority
JP
Japan
Prior art keywords
data series
function
cryptographic processing
feistel structure
extended feistel
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
Application number
JP2006224674A
Other languages
English (en)
Other versions
JP2008051829A (ja
JP2008051829A5 (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.)
Sony Corp
Original Assignee
Sony 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 JP2006224674A priority Critical patent/JP4882598B2/ja
Application filed by Sony Corp filed Critical Sony Corp
Priority to MYPI20090165 priority patent/MY151698A/en
Priority to CN201310020891.2A priority patent/CN103078734B/zh
Priority to KR1020097001363A priority patent/KR101364192B1/ko
Priority to BRPI0715646-4A priority patent/BRPI0715646A2/pt
Priority to US12/375,410 priority patent/US8295478B2/en
Priority to CN2007800280570A priority patent/CN101496080B/zh
Priority to RU2009102664/09A priority patent/RU2409902C2/ru
Priority to PCT/JP2007/064089 priority patent/WO2008013076A1/ja
Priority to CN201010219870.XA priority patent/CN101908958B/zh
Priority to EP07790851.5A priority patent/EP2048641B1/en
Priority to TW096126283A priority patent/TW200821999A/zh
Publication of JP2008051829A publication Critical patent/JP2008051829A/ja
Publication of JP2008051829A5 publication Critical patent/JP2008051829A5/ja
Priority to HK09111002.4A priority patent/HK1131252A1/xx
Application granted granted Critical
Publication of JP4882598B2 publication Critical patent/JP4882598B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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

Description

本発明は、暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば米国標準暗号としてのDES(Data Encryption Standard)アルゴリズムがあり、様々な分野において広く用いられている。
DESに代表される共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数(F関数)部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで適用するラウンド鍵(副鍵)は、1つのマスター鍵(主鍵)に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。
このようなラウンド関数を適用したアルゴリズムを実行する具体的な構造として、Feistel構造が知られている。Feistel構造はラウンド関数と呼ばれる変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。Feistel構造を適用した暗号処理について記載した文献としては、例えば非特許文献1、非特許文献2がある。
しかし、例えばFeistel構造を適用する共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題となっている。暗号解析または攻撃手法の代表的な手法として、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析(差分解読法または差分攻撃とも呼ばれる)や、平文と対応暗号文に基づく解析を行う線形解析(線形解読法または線形攻撃とも呼ばれる)が知られている。
暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになる。従来の暗号アルゴリズムにおいては、ラウンド関数(F関数)部の線形変換部において適用する処理(変換行列)が、各段のラウンドにおいて等しいものであったため解析が行いやすく、結果として鍵の解析の容易性を招いていた。
このような問題に対処する構成として、Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を配置する構成が提案された。この技術は拡散行列切り替え機構(DSM:Diffusion Switching Mechanism,以下DSM)と呼ばれる。このDSMにより、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
この拡散行列切り替え機構(DSM)は、通常の2つのデータ系列を持つFeistel構造に対する適用構成として示されている。一方、このような、一般的な2つのデータ系列を持つFeistel構造と異なり、3本以上のデータ系列を持つ拡張型のFeistel構造がある。しかし、このような3本以上のデータ系列を持つ拡張型のFeistel構造において、上述の拡散行列切り替え機構(DSM)を適用して、差分攻撃や線形攻撃に対する耐性を向上させる構成についての開示はない。
K. Nyberg, "Generalized Feistel networks", ASIACRYPT'96, SpringerVerlag, 1996, pp.91--104. Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
本発明は、上記問題点に鑑みてなされたものであり、線形解析や差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
さらに具体的には、2つのデータ系列を持つFeistel構造を拡張したFeistel構造、すなわち、例えば3つ、4つなど、2以上の任意のデータ系列を持つ拡張型のFeistel構造において、複数の異なる線形変換行列を適用したラウンド関数部を設定して、線形解析や差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
暗号処理装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有し、
前記暗号処理部は、
データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行する構成であり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用する構成を有し、
前記2以上の複数の異なる行列は、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列であり、
前記複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置した構成を有することを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部において利用される前記複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部において利用される前記複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部において利用される前記複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、前記複数の異なる行列を、n個(ただし、nは2以上の整数)の異なる行列、M,M,・・Mn−1としたとき、これらの異なる行列M,M,・・Mn−1を、拡張Feistel構造の各データ系列に入力するF関数に順番に繰り返し配置した構成を有することを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、1つのラウンドに1つのF関数のみを実行する拡張Feistel構造を適用した暗号処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、1つのラウンドに複数のF関数を並列に実行する拡張Feistel構造を適用した暗号処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、
a≧2の任意の整数、x≧1の任意の整数としたとき、前記複数の異なる行列による異なる線形変換処理を実行するa種類のF関数を利用したデータ系列数:d=2axの拡張Fesitel構造を適用した暗号処理を実行する構成であり、
1つのラウンドにおいて、全種類(a種類)のF関数を均等にx個ずつ実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、1つのラウンドにおいて並列に実行するax個のF関数を実行するF関数実行部と、前記F関数実行部に対するデータ入出力制御を実行する制御部とを備えた構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、前記複数の異なる行列による異なる線形変換処理を実行する複数のF関数実行部と、前記複数のF関数実行部の利用シーケンスを設定に応じて変更する制御部とを備え、前記制御部は、
(a)データ系列数d=2としたFeistel構造による暗号処理、または、
(b1)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容した暗号処理、または、
(b2)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容した暗号処理、
上記(a),(b1),(b2)のいずれかの暗号処理を選択的に実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記制御部は、暗号化または復号処理の対象となるデータのビット長に応じて、実行する処理形態を選択する構成であることを特徴とする。
さらに、本発明の第2の側面は、
暗号処理装置において、暗号処理を実行する暗号処理方法であり、
暗号処理部において、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理ステップを有し、
前記暗号処理ステップは、
データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行するステップであり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用した演算を実行する演算ステップを有し、
前記演算ステップにおいて適用する複数の異なる行列は、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列であり、
前記演算ステップは、
拡張Feistel構造の各データ系列に入力するF関数において、前記複数の異なる行列に基づく線形変換演算を実行するステップであることを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記複数の異なる行列を、n個(ただし、nは2以上の整数)の異なる行列、M,M,・・Mn−1としたとき、前記演算ステップは、拡張Feistel構造の各データ系列に入力するF関数において、これらの異なる行列M,M,・・Mn−1を順番に繰り返し実行するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、1つのラウンドに1つのF関数のみを実行する拡張Feistel構造を適用した暗号処理を実行するステップであることを特徴とする。
さらに、本発明の第3の側面は、
情報処理装置において暗号処理アルゴリズムを構築する暗号処理アルゴリズム構築方法であり、
情報処理装置における制御部が、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理アルゴリズムの構成において、各ラウンドにおけるF関数において実行する線形変換処理に適用する少なくとも2以上の複数の異なる行列を決定する行列決定ステップと、
前記制御部が、前記行列決定ステップにおいて決定した複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置する行列設定ステップを有し、
前記行列決定ステップは、
前記2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列を適用行列として決定する処理を実行するステップであることを特徴とする暗号処理アルゴリズム構築方法にある。
さらに、本発明の第4の側面は、
暗号処理装置において、暗号処理を実行させるコンピュータ・プログラムであり、
暗号処理部において、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行させる暗号処理ステップを有し、
前記暗号処理ステップは、
データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行させるステップであり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用した演算を実行する演算ステップを含み、
前記演算ステップにおいて適用する複数の異なる行列は、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列であり、
前記演算ステップは、
拡張Feistel構造の各データ系列に入力するF関数において、前記複数の異なる行列に基づく線形変換演算を実行するステップであることを特徴とするコンピュータ・プログラムにある。
さらに、本発明の第5の側面は、
情報処理装置において暗号処理アルゴリズムを構築させるコンピュータ・プログラムであり、
情報処理装置における制御部に、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理アルゴリズムの構成において、各ラウンドにおけるF関数において実行する線形変換処理に適用する少なくとも2以上の複数の異なる行列を決定させる行列決定ステップと、
前記制御部に、前記行列決定ステップにおいて決定した複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置させる行列設定ステップを有し、
前記行列決定ステップは、
前記2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列を適用行列として決定する処理を実行するステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例の構成によれば、非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、2つのデータ系列を持つFeistel構造を拡張したFeistel構造、すなわち、例えば3つ、4つなど、2以上の任意のデータ系列を持つ拡張型のFeistel構造において、複数の異なる線形変換行列を適用したラウンド関数部を設定することで拡散行列切り替え機構(DSM)を実現し、線形解析や差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムの構築および暗号処理の実行が可能となる。
本発明の一実施例の構成によれば、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行する構成において、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用する構成を有し、2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列として設定することで、拡散行列切り替え機構(DSM)を実現し、線形解析や差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムの構築および暗号処理の実行が可能となる。
さらに、本発明の一実施例の構成によれば、複数の異なる行列による異なる線形変換処理を実行するa(a≧2)種類のF関数を利用したデータ系列数:d=2axの拡張Fesitel構造(x≧1)を適用した暗号処理を実行する構成において、1つのラウンドにおいて、全種類(a種類)のF関数を均等にx個ずつ実行する構成としたので、無駄な回路を設けることのない小型の暗号処理装置が実現される。
さらに、本発明の一実施例の構成によれば、複数の異なる行列による異なる線形変換処理を実行する複数のF関数実行部を構成して、複数のF関数実行部の利用シーケンスを設定に応じて変更する構成としたことで、
(a)データ系列数d=2としたFeistel構造による暗号処理、または、
(b1)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容した暗号処理、または、
(b2)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容した暗号処理、
上記(a),(b1),(b2)のいずれかの暗号処理を選択的に実行することを可能とした暗号処理装置が実現される。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.SP型F関数を持つFeistel構造
2.分岐数演算関数と耐性評価関数
2−1.分岐数演算関数:Branch()
2−2.差分攻撃に対する耐性評価指標
2−3.線形攻撃に対する耐性評価指標
3.2つのデータ系列を持つFeistel構造に対するDSMの設定法
4.拡張Feistel構造におけるDSMの設定
4−1.拡張Feistel構造について
4−2.拡張Feistel構造において差分攻撃に対する耐性を向上させるための構成
4−2−1.最小分岐数B の値を3以上とするF関数中の行列選択構成
4−2−2.最小分岐数B の値を3以上とするF関数中の行列選択構成
4−3.拡張Feistel構造において線形攻撃に対する耐性を向上させるための構成
4−3−1.最小分岐数B の値を3以上とするF関数中の行列選択構成
5.特定の形を持つ拡張Feistel構造に対するDSMの利用構成
5−1.拡張Feistel構造のタイプ1に対するDSMの適用
5−2.拡張Feistel構造のタイプ2に対するDSMの適用
6.拡張Feistel構造各タイプのアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明
6−1.拡張Feistel構造のタイプ1のアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明
6−2.拡張Feistel構造のタイプ2のアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明
7.F関数の設定および利用処理の工夫に基づく実装における改良構成
7−1.拡張Feistelのタイプ2の効率的なF関数配置方法
7−2.Feistel構造と拡張Feistel構造における部品の共通化
8.本発明の暗号処理および暗号アルゴリズム構築処理のまとめ
9.暗号処理装置の構成例
[1.SP型F関数を持つFeistel構造]
まず、SP型F関数を持つFeistel構造について説明する。共通鍵ブロック暗号のデザインとして、Feistel構造が知られている。Feistel構造はラウンド関数と呼ばれる基本処理単位の繰り返しにより、平文を暗号文に変換する構造を持つ。
図1を参照して、Feistel構造の基本構成について説明する。図1には、rラウンドのラウンド数=rを持つ2つのデータ系列を持つFeistel構造の例を示している。なお、ラウンド数rは、設計の段階で決定されるパラメータであり、例えば入力される鍵の長さに応じて変更可能な値である。
図1に示すFeistel構造において、暗号化対象として入力される平文の長さを2mnビットとする。ただし、m,nは共に整数である。初めに、2mnビットの平文を、mnビットの2つの入力データP(Plain-Left)101,P(Plain-Right)102に分割し、これを入力値とする。
Feistel構造はラウンド関数とよばれる基本処理単位の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はF関数120と呼ばれる。図1の構成では、F関数(ラウンド関数)120がr段繰り返された構成例を示している。
例えば第1番目のラウンドでは、mnビットの入力データXと、鍵生成部(図示せず)から入力されるmnビットのラウンド鍵K103がF関数120に入力され、F関数120におけるデータ変換処理の後にmnビットのデータYを出力する。出力はもう片方の前段からの入力データ(第1段の場合は入力データP)と排他的論理和部104において、排他的論理和演算がなされ、mnビットの演算結果が次のラウンド関数へと出力される。この処理、すなわちF関数を定められたラウンド数(r)だけ繰り返し適用して暗号化処理が完了し、暗号文の分割データC(Cipher-Left)、C(Cipher-Right)が出力される。以上の構成より、Feistel構造の復号処理はラウンド鍵を挿入する順序を逆にするだけでよく、逆関数を構成する必要がないことが導かれる。
各ラウンドの関数として設定されるF関数120の構成について、図2を参照して説明する。図2(a)は、1つのラウンドにおけるF関数120に対する入力および出力を示す図であり、図2(b)は、F関数120の構成の詳細を示す図である。F関数120は、図2(b)に示すように、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。
図2に示すF関数120は、入出力ビット長がm×n(m,n:整数)ビットの設定を持つ関数である。SP型F関数内部では初めに鍵データKとデータXとの排他的論理和が実行され、次に非線形変換層(S層)が適用され、続いて線形変換層(P層)が適用される。
具体的には非線形変換層(S層)は、Sボックス(S−box)121と呼ばれるnビット入力nビット出力の非線形変換テーブルがm個並んだものであり、mnビットのデータはnビットずつ分割されてそれぞれ対応するSボックス(S−box)121に入力されデータが変換される。各Sボックスでは、例えば変換テーブルを適用した非線形変換処理が実行される。
線形変換層(P層)は線形変換部122によって構成され、線形変換部122は、Sボックス121からの出力データであるmnビットの出力値Zを入力し、この入力に対して線形変換を施しmnビットの結果を出力する。線形変換部122は、入力ビット位置の入れ替え処理などの線形変換処理を実行して、mnビットの出力値Yを出力する。この出力値Yが前段からの入力データと排他的論理和され、次のラウンドのF関数の入力値とされる。
なお、以下に説明する本実施例の構成では、線形変換層(P層)としての線形変換部122において実行する線形変換はGF(2)上で定義されるmn×mnの行列を適用して行なわれる線形変換であると定義し、また、第iラウンド目に含まれる行列をMと呼ぶものとする。なお、本発明において説明する構成における非線形変換部としてのSボックスと、線形変換は、いずれも全単射であるものとする。
[2.分岐数演算関数と耐性評価関数]
次に、本発明を理解するために必要となる分岐数演算関数と耐性評価関数について説明する。
(2−1.分岐数演算関数:Branch())
上述したF関数内の線形変換層(P層)としての線形変換部122において実行される線形変換の例としての最適拡散変換(Optimal Diffusion Mappings)の分岐数演算関数:Branch()を以下のように定義する。
n×aビットデータからn×bビットデータへの線形変換を行う写像、
θ:{0,1}na→{0,1}nb
に対して分岐数:Branch(θ)を次のように定義する。
Branch(θ)=minα≠0{hw(α)+hw(θ(α))}
ただし、minα≠0{Xα}は、α≠0を満たすすべてのXαのうちの最小値を表すものとし、hw(Y)はビット列Yをnビットごとに区切って表したときに、nビットのデータすべてが0ではない(非ゼロ)要素の数を返す関数とする。
なお、このとき、Branch(θ)がb+1であるような写像θを最適拡散変換と定義する。
(2−2.差分攻撃に対する耐性評価指標)
Feistel構造を適用する共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題となる。暗号解析または攻撃手法の代表的な手法として、ある差分(ΔX)を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析(差分解読法または差分攻撃とも呼ばれる)や、平文と対応暗号文に基づく解析を行う線形解析(線形解読法または線形攻撃とも呼ばれる)が知られている。
差分攻撃に対する耐性を図る指標として、差分の接続関係を表現した差分パスに含まれる差分アクティブS−boxの最小数が適用可能である。
差分パスとは、暗号化関数中の鍵データを除くすべてのデータ部分に対して特定の差分値を指定したものである。差分値は自由に決められるものではなく変換処理の前後の差分値は互いに関連しあっている。線形変換処理の前後では、入力差分と出力差分の関係は一対一に決定される。非線形変換の前後では、入力差分と出力差分の関係は一対一にはきまらないが、確率という概念が導入される。ある入力差分と出力差分に対する確率は事前に計算することができるものとする。すべての出力に対する確率をすべて足し合わせると1となっている。
SP型のF関数を持ったFeistel構造においては、非線形変換はS−boxによる処理の部分のみである。したがって、この場合、0以外の確率をもつ差分パスとは平文(入力)に対する差分値から始まって暗号文(出力)の差分値までに至る差分データの集合であり、すべてのS−boxの前後で与えられる差分値は0以外の確率をもつものである。0以外の確率をもつある差分パスのS−boxに入力される差分値が0でないものを差分アクティブS−boxと呼ぶものとする。0以外の確率を持つすべての差分パスのアクティブS−boxの数のうちで最も少ない数を最小差分アクティブS−box数とよび、この数値が差分攻撃に対する安全性指標として知られている。なお、すべての差分値が0であるような差分パスは、確率が1となり攻撃として意味をなさないので、以降では考慮しない。
本発明の一実施例においては、この最小差分アクティブS−box数を大きく保証することにより差分攻撃に対する安全性を高める構成を持つ。
(2−3.線形攻撃に対する耐性評価指標)
さらに、線形攻撃に対する耐性を図る指標として、線形マスクの接続関係を表現した線形パス(線形近似と呼ばれることが多いが、差分と対応させるためここではパスという言葉を用いる)に含まれる線形アクティブS−boxの最小数が適用可能である。
線形パスとは、暗号化関数中の鍵データを除くすべてのデータ部分に対して特定の線形マスク値を指定したものである。線形マスク値は自由に決められるものではなく変換処理の前後の線形値は互いに関連しあっている。線形変換処理の前後では、入力線形マスク値と出力線形マスク値の関係は一対一に決定される。非線形変換の前後では、入力線形マスク値と出力線形マスク値の関係は一対一にはきまらないが、確率という概念が導入される。入力線形マスク値に対して、出力されうるひとつ以上の線形マスク値の集合が存在し、それぞれが出力される確率を事前に計算することができる。すべての出力に対する確率をすべて足し合わせると1となっている。
SP型のF関数を持ったFeistel構造においては、非線形変換はS−boxによる処理の部分のみである。したがって、この場合、0以外の確率をもつ線形パスとは平文(入力)に対する線形値から始まって暗号文(出力)の線形値までに至る線形マスク値データの集合であり、すべてのS−boxの前後で与えられる線形値は0以外の確率をもつものである。0以外の確率をもつある線形パスのS−boxに入力される線形値が0でないものを線形アクティブS−boxと呼ぶものとする。0以外の確率を持つすべての線形パスのアクティブS−boxの数のうちで最も少ない数を最小線形アクティブS−box数とよび、この数値が線形攻撃に対する安全性指標として知られている。なお、すべての線形マスク値が0であるような線形パスは、確率が1となり攻撃として意味をなさないので、以降では考慮しない。
本発明の一実施例においては、この最小線形アクティブS−box数を大きく保証することにより線形攻撃に対する安全性を高める。
[3.2つのデータ系列を持つFeistel構造に対するDSMの設定法]
先に説明したように、Feistel構造を適用した暗号処理において、上述した差分攻撃や線形攻撃に対する耐性を高める構成として、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism,以下DSM)を適用した構成が提案されている。DSMは、Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を配置する構成である。このDSMにより、最小線形アクティブS−box数を大きく保証することが可能となり、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
このDSMについて、その概要を説明する。Feistel構造において、拡散行列切り替え機構(DSM)を適用した場合、Feistel構造を構成するラウンド関数(F関数)部の線形変換部(P層)において適用する行列は、複数の異なる行列となる。例えば、図1に示すようなrラウンドのFeistel構造の各ラウンドにおける適用行列は、全て同じ線形変換行列として設定されるのではなく、少なくとも2種類以上の行列が、特定の規則に従って配列されることになる。
例えば、2つの線形変換行列M,Mによって、拡散行列切り替え機構(DSM)を実現したFeistel構造例を図3に、3つの線形変換行列M,M,Mによって、拡散行列切り替え機構(DSM)を実現したFeistel構造例を図4に示す。
図3に示すFeistel構造例において、2つの線形変換行列M,Mは、異なる行列によって構成される。また、図4に示すFeistel構造例においては、3つの線形変換行列M,M,Mは、異なる行列によって構成される。
拡散行列切り替え機構(DSM)を実現するためには、適用する行列が所定の条件を満たすことが必要となる。この条件の1つが、上述した分岐数(Branch)に関する制約である。以下、この制約について説明する。
Feistel構造におけるラウンド関数部の線形変換に適用する複数の異なる行列M〜Mそれぞれの分岐数において、
適用行列中の分岐数の最小値:B と、
適用する複数の行列の結合行列に対応する分岐数の最小値:B ,B ,B
を以下のように定義する。
Figure 0004882598
上記式において、
は、Feistel構造における第iラウンドの線形変換処理に適用する線形変換行列を示し、
[M|Mi+2|・・]は、M|Mi+2|・・各行列の連結により得られる結合行列を示し、
Mは、行列Mの転値行列、M−1は、行列Mの逆行列を示す。
上記式において、:B ,B ,B は、具体的には、Feistel構造における1つ飛びで連続する2ラウンドもしくは3ラウンドのF関数に含まれる行列を結合した行列の分岐数の最小値を表している。
例えば、上記の各分岐数が以下の条件、すなわち、
≧3, B ≧3, B ≧3、
上記条件を満足させるように各行列を設定することで、Feistel構造において、差分攻撃や線形攻撃に対する耐性を向上させることが出来ることが知られている。
なお、B ,B ,B ,B における各添え字は以下の意味を持つものである。
のnは結合する行列数、B のDは差分攻撃(Differential Attack)に対する耐性を持つための条件であることを示し、B のLは線形攻撃(Linear Attack)に対する耐性を持つための条件であることを示している。
[4.拡張Feistel構造におけるDSMの設定]
本発明では、2つのデータ系列を持つFeistel構造ではなく、例えば3系列や、4系列など2以上の任意のデータ系列を持つFeistel構造に対して拡散行列切り替え機構(DSM)を実現する構成を提案する。以下、この構成について、詳細に説明する。
本発明において取り扱うのはSP型のF関数を使う点では上記の2つのデータ系列を持つFeistel構造と同じであるが、データ系列数の分割数を一般化してdとした拡張Feistel構造を対象とする。ただしdは2以上の整数である。
上述したように、データ系列数=2に限定したFeistel構造に対するDSMの適用構成については提案されていたが、データ系列数dをd≧2とした任意数のdを持つ拡張Feistel構造に対して、DSMを適用して耐性を向上させる方法が知られていなかった。本発明は、d≧2とした任意数のデータ系列数dを持つ拡張Feistel構造に対して拡散行列切り替え機構(DSM)を適用して差分攻撃や線形攻撃に対する耐性を向上させる構成を実現するものである。
以下、本発明の具体的構成および処理例について説明する。
(4−1.拡張Feistel構造について)
以下、拡張Feistel構造の定義について、図5を参照して説明する。本明細書では拡張Feistel構造を以下のように定義する。
1.d本(dは2以上)のデータ系列をもち、各データ系列のサイズはmnビット。
2.F関数の入出力サイズはmnビット。
3.ラウンドという処理単位をもち、ラウンド内では一つまたは複数のデータ系列に対してF関数による変換処理が施され、その結果は別のデータ系列に排他的論理和がなされる。ただし、2つ以上のF関数が1ラウンド内に含まれる場合はすべてのF関数の入出力となるデータ系列には重複する系列が存在しないものとする。
上記の定義によって構築される拡張Feistel構造の例を図5を参照して説明する。
上記定義1.d本(dは2以上)のデータ系列をもち、各データ系列のサイズはmnビット。
この定義について図5を参照して説明する。図5において、データ系列1〜dの各々の各データ系列の入出力サイズがmnビットであり、入出力の総ビット数はdmnビットであることを意味している。
上記定義2.F関数の入出力サイズはmnビット。
この定義について図5を参照して説明する。例えばF関数202にはデータ系列2から上段の排他的論理和(XOR)演算部201から演算結果としてのmnビットが入力され、さらに、ラウンド鍵Kが入力されて演算処理が実行される。この演算処理は、図2(b)を参照して説明した処理であり、Sボックスにおける非線形変換と、線形変換部における線形変換行列Miを適用した線形変換処理が含まれる。F関数202の出力はmnビットであり、データ系列4の排他的論理和(XOR)演算部203に入力される。
上記定義3.ラウンドという処理単位をもち、ラウンド内では一つまたは複数のデータ系列に対してF関数による変換処理が施され、その結果は別のデータ系列に排他的論理和がなされる。ただし、2つ以上のF関数が1ラウンド内に含まれる場合はすべてのF関数の入出力となるデータ系列には重複する系列が存在しないものとする。
この定義について図5を参照して説明する。図5にはrラウンドの構成を持つ拡張Feistel構造を示している。各ラウントには1つ以上のF関数が含まれ、その結果は別のデータ系列に排他的論理和がなされる。図5に示すラウンドnは、複数のF関数が1ラウンド内に含まれる。図5に示すF関数211とF関数212である。
このように、1つのラウンドに複数のF関数が含まれる場合、各F関数の入出力系列は、それぞれ異なるデータ系列であり、重複したデータ系列が入出力系列として適用されない設定とする。
図5に示すF関数211の入力データ系列はデータ系列1、出力データ系列はデータ系列2であり、
F関数212の入力データ系列はデータ系列5以上のいずれか、出力データ系列はデータ系列3であり、
いずれの入出力データ系列も重複しない設定とされる。
なお、図5にも示すように、本明細書では、F関数は[F]、ラウンド鍵は[K]として示す。これらの各識別子F,Kに設定した添え字は以下の意味を持つ。
、K のiはラウンドを示し、nは、同一ラウンドにおけるF関数またはラウンド鍵の識別番号を示す。
なお、図には示していないが、以下の説明において、各ラウンドにおけるF関数の線形変換部において適用される線形変換行列は[M]として示し、Mに設定する添え字も上記と同様、
のiはラウンドを示し、nは、同一ラウンドに設定された複数のF関数各々に対応する線形変換行列の識別番号を示すものとする。
図6は、上述の定義を満足する7つのデータ系列(d=7)を持つ拡張Feistel構造例を表したものである。なお、図6においては、各F関数の出力と、各データ系列との排他的論理和演算(XOR)部の記号を省略しているが、各F関数の出力と、各データ系列と各交差ポイントでは、それぞれの入力による排他的論理和演算(XOR)が実行され、その排他的論理和演算(XOR)結果が同一データ系列の下方向に出力される構成である。図6に示す例では、ラウンドi+4、ラウンドi+5、ラウンドi+9、ラウンドi+10が一つのラウンドに2つ以上のF関数が含まれるラウンドであり、これらのラウンドに示すF関数[F]と、ラウンド鍵[K]は、同一ラウンドにおけるF関数またはラウンド鍵の識別番号を示す番号が右上に示されている。
上記定義1〜3に従って、系列数dをd=2としたFeistel構造を構築すると、2本のデータ系列からなるFeistel構造、すなわち、先に図1を参照して説明したFeistel構造となる。すなわち、2本の各データ系列交互にF関数が行き来するような結線構造になるが、3本以上のデータ系列を持つ拡張Feistel構造の場合はF関数の入力と出力として選ばれるデータ系列が複数存在するため結線構造が一意に定まることはない。つまり拡張Feistel構造ではdが大きくなればなるほど、F関数の設置場所の自由度が指数関数的に増大することとなる。
本発明では、このような拡張Feistel構造において、差分攻撃や線形攻撃に対する耐性を向上させる拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を実現する構成を提案する。
系列数dをd=2としたFeistel構造では、例えば、図3や図4に示したように、Feistel構造を構成するラウンド関数(F関数)部の線形変換部(P層)において適用する行列を、2つの異なる線形変換行列M,M、あるいは、3つの異なる線形変換行列M,M,MとすることなどでDSMが実現される。ただし、DSMを実現するためには、適用する行列が所定の条件を満たすことが必要となる。この条件の1つが、前述した分岐数(Branch)に関する制約である。
データ系列数dを、
d:d≧2の任意の整数
とした拡張Feistel構造において、DSMを実現する構成の説明の前に、以下の説明において使用する拡張Feistel構造の各構成部および各構成部の入出力データの定義について、図7を参照して説明する。
図7は、例えば図6に示すような拡張Feistel構造を構成する1つのデータ系列のみを抽出して示す図である。図7に示すように、ある1つのデータ系列への入力データは1回以上のF関数の出力が排他的論理和(XOR)されて出力に至っていることがわかる。このことは拡張Feistel構造に含まれる任意のデータ系列にあてはまる。
図7では、一本のデータ系列[s(i)]に対して複数のF関数[Fs(i),1,Fs(i),2,...]の出力が排他的論理和演算(XOR)により足しあわされていく様子を表している。
なお、拡張Feistel構造中のd本あるデータ系列を、それぞれs(i)(1≦i≦d)とし、データ系列s(i)に入力するF関数を、データ系列s(i)の入力に近い方からFs(i),1,Fs(i),2,...と名づけることとする。
またデータ系列s(i)の入力データをWs(i),0とし、
F関数Fs(i),jの出力が排他的論理和された後のデータをWs(i),jとする。
また、F関数Fs(i),jへの入力データをXs(i),jとする。
各Xs(i),jは、データ系列s(i)以外の別の系列に属するデータであるが、ここではそれらがどこの系列に属しているかは問わないものとする。
このとき、拡張Feistel構造は、このようなd本のデータ系列が相互に接続されて構成されるものと考えることができる。
拡張Feistel構造において、DSMを実現するための構成
以下、d:d≧2の任意の整数
とした拡張Feistel構造において、DSMを実現するための構成について説明する。説明は、
(4−2)拡張Feistel構造において差分攻撃に対する耐性を向上させるための構成
(4−3)拡張Feistel構造において線形攻撃に対する耐性を向上させるための構成
これらの各構成について、順次、説明する。
(4−2.拡張Feistel構造において差分攻撃に対する耐性を向上させるための構成)
まず、拡張Feistel構造において差分攻撃に対する耐性を向上させるための構成について説明する。
前述したように、差分攻撃は、ある差分(ΔX)を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する攻撃であり、差分攻撃に対する耐性を図る指標として、差分の接続関係を表現した差分パスに含まれる差分アクティブS−boxの最小数が適用される。差分パスは、暗号化関数中の鍵データを除くデータ部分における差分値である。線形変換処理の前後では、入力差分と出力差分の関係は一対一に決定され、非線形変換処理の前後では、一対一とはならないが、ある入力差分に対する出力差分の出現確率が算出される。すべての出力に対する確率をすべて足し合わせると1となる。
SP型のF関数を持ったFeistel構造においては、非線形変換はS−boxのみである。この場合、0以外の確率をもつ差分パスは平文(入力)に対する差分値から始まって暗号文(出力)の差分値までに至る差分データの集合であり、すべてのS−boxの前後で与えられる差分値は0以外の確率をもつ。0以外の確率をもつある差分パスのS−boxに入力される差分値が0でないものを差分アクティブS−boxと呼ぶ。0以外の確率を持つすべての差分パスのアクティブS−boxの数のうちで最も少ない数を最小差分アクティブS−box数とよび、この数値が差分攻撃に対する安全性指標として用いられる。
最小差分アクティブS−box数を大きくすることが、差分攻撃に対する耐性の向上をもたらす。以下では、データ系列数dをd≧2の任意整数とした拡張Feistel構造において、最小差分アクティブS−box数の数を大きくするDSM構造を構築する手法について説明する。
拡張Feistel構造に含まれるF関数[Fs(i),x]で用いられる線形変換行列を[Ms(i),x]とする。このとき、分岐数演算関数:Branch()を適用した分岐数の算出式B (s(i))を次のように定義する、
Figure 0004882598
上記式は、拡張Feistel構造を構成する任意のデータ系列s(i)に入力する2つの隣り合うF関数[Fs(i),j,Fs(i),j+1]中で用いられる2つの線形変換行列[Ms(i),j,Ms(i),j+1]の結合行列[Ms(i),j|Ms(i),j+1]中の分岐数の最小値を求める式である。
拡張Feistel構造を構成する任意のデータ系列s(i)において、データ系列s(i)に入力するF関数の上段からの個数に相当する[j]を任意のjとし、データ系列s(i)上のデータ[Ws(i),j]について考える。
データ系列s(i)に入力する2つのF関数[Fs(i),j+1],[Fs(i),j+2]のデータ系列s(i)に対する入力部を挟むデータ系列s(i)上の入出力データ[Ws(i),j]と、[Ws(i),j+2]について、
s(i),j=0,
s(i),j+2=0である場合を考える。
このとき、
データ系列s(i)に入力するF関数中、隣り合うF関数[Fs(i),j+1]と[Fs(i),j+2]への各々の入力差分値[ΔXs(i),j+1]と、[ΔXs(i),j+2]との間に、
Figure 0004882598
という関係式が成立している。
なお、上記式において、hwはハミングウェイトであり、上記式の左辺はF関数の入力差分データにおける非ゼロの要素数つまりアクティブS−box数の和を表している。この数が大きな値に保証されることが差分攻撃への耐性向上が期待できる条件である。従ってそれ以外の条件が同じであれば、B (s(i))をできるだけ大きくするように、拡張Feistel構造を構成する各F関数内の行列を選択することが望ましいことが導かれる。
これまでの拡張Feistel型暗号ではひとつの線形変換行列をすべてのF関数内の線形変換部で利用する構成が一般的である。
しかしながら、データ系列s(i)に入力する2つの隣り合うF関数[Fs(i),j,Fs(i),j+1]中で用いられる2つの線形変換行列[Ms(i),j]、[Ms(i),j+1]とが、同一の行列であると、前述の分岐数演算関数:Branch()を適用した分岐数の算出式、すなわち、
(s(i))
は必ず最低の値である2となってしまう。このため耐性向上の効果は見込めない。
また異なる行列を用いている場合でも不用意に2つの行列を選択してしまうとB (s(i))が2となってしまう場合がある。
前述の分岐数算出式によって定義されるB (s(i))をより大きな分岐数とすることが、局所的な最小差分アクティブS−box数を大きく保証することになり、差分攻撃に対する耐性を向上させることが可能となる。従って、例えば、B (s(i))が3以上となるように行列を選択することで、差分攻撃に対する耐性を向上させることが可能となる。
拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とする。このB を3以上とするように、F関数中の行列を選択する方法について以下説明する。
(4−2−1.最小分岐数B の値を3以上とするF関数中の行列選択構成)
まず、拡張Feistel構造のすべてのデータ系列における最小分岐数[B (s(i))]中、最小の分岐数[B ]を3以上とするためには、最低2種類の行列があれば実現できることを以下に説明する。
まず、2つの異なる行列[A]と[A]の結合行列[A|A]の分岐数が3以上となる、すなわち、
Branch([A|A])≧3
を満たす2つの異なる行列[A]と[A]を用意する。
次に、拡張Feistel構造のデータ系列s(i)に入力する複数のF関数の線形変換部の線形変換行列を以下のように設定する。
最初のF関数Fs(i),1の線形変換部に設定する線形変換行列をA
第2番目のF関数Fs(i),2の線形変換部に設定する線形変換行列をA
第3番目のF関数Fs(i),3の線形変換部に設定する線形変換行列をA

というように2つの異なる行列[A]と[A]をデータ系列s(i)に入力する複数のF関数に対して、上から順に交互に配置していく。
このように線形変換行列を設定した場合、任意のデータ系列s(i)に入力する2つの隣り合うF関数[Fs(i),j,Fs(i),j+1]中で用いられる2つの線形変換行列[Ms(i),j,Ms(i),j+1]の結合行列[Ms(i),j|Ms(i),j+1]中の分岐数の最小値を求める上述した式は、
Figure 0004882598
である。すなわち、最小分岐数が3以上であることが保証される。
もちろん行列[A]と[A]を入れ替えても効果は同じである。また、拡張Feistel構造のすべてのデータ系列s(i)について同様に行列を設定すれば、2つの行列を用いただけでB の値を3以上にすることが可能である。
このように、Branch([A|A])≧3
を満たす2つの異なる行列[A]と[A]を用意して、これらの各行列を、拡張Feistel構造の各データ系列s(i)に入力するF関数に交互に配置する設定とすることで、最小分岐数B の値を3以上にすることが可能となり、拡散行列切り替え機構(DSM)による差分攻撃に対する耐性の向上が実現される。
上述した説明は、2つの異なる行列[A]と[A]を適用した例である。
次に、異なる行列を2以上の任意の数[k]として一般化した例について、以下、説明する。
拡張Feistel構造に含まれるF関数[Fs(i),j]で用いられる線形変換行列を[Ms(i),j]とする。このとき、分岐数演算関数:Branch()を適用した分岐数の算出式B (s(i))を次のように定義する、
Figure 0004882598
上記式は、拡張Feistel構造を構成する任意のデータ系列s(i)に入力するk個の隣り合うF関数[Fs(i),j,Fs(i),j+1,・・・,Fs(i),j+k−1]中で用いられるk個の線形変換行列[Ms(i),j,Ms(i),j+1,・・・,Ms(i),j+k−1]の結合行列[Ms(i),j|Ms(i),j+1|・・・|Ms(i),j+k−1]中の分岐数の最小値を求める式である。
拡張Feistel構造を構成する任意のデータ系列s(i)において、データ系列s(i)に入力するF関数の上段からの個数に相当する[j]を任意のjとし、データ系列s(i)上のデータ[Ws(i),j]について考える。
データ系列s(i)に入力するk個のF関数[Fs(i),j+1]・・・[Fs(i),j+k]のデータ系列s(i)に対する入力部を挟むデータ系列s(i)上の入出力データ[Ws(i),j]と、[Ws(i),j+k]について、
s(i),j=0,
s(i),j+k=0である場合を考える。
このとき、
データ系列s(i)に入力するF関数中、隣り合うk個のF関数[Fs(i),j+1]・・・[Fs(i),j+k]への各々の入力差分値[ΔXs(i),j+1]・・・[ΔXs(i),j+k]との間に、
Figure 0004882598
という関係式が得られる。
なお、上記式において、hwはハミングウェイトであり、上記式の左辺はF関数の入力差分データにおける非ゼロの要素数つまりアクティブS−box数の和を表している。この数が大きな値に保証されることが差分攻撃への耐性向上が期待できる条件である。従ってそれ以外の条件が同じであれば、B (s(i))をできるだけ大きくするように、拡張Feistel構造を構成する各F関数内の行列を選択することが望ましいことが導かれる。
しかしながら、データ系列s(i)に入力するk個の隣り合うF関数[Fs(i),j]・・・[Fs(i),j+k−1]中で用いられるk個の線形変換行列[Ms(i),j]・・・[Ms(i),j+k−1]中に、同じ行列が1つでも存在すると、前述の分岐数演算関数:Branch()を適用した分岐数の算出式、すなわち、
(s(i))
は必ず最低の値である2となってしまう。このため耐性向上の効果は見込めない。
またk個の線形変換行列[Ms(i),j]・・・[Ms(i),j+k−1]に異なる行列を用いている場合でも不用意に行列を選択してしまうとB (s(i))が2となってしまう場合がある。
前述の分岐数算出式によって定義されるB (s(i))をより大きな分岐数とすることが、局所的な最小線形アクティブS−box数を大きく保証することになり、差分攻撃に対する耐性を向上させることが可能となる。従って、例えば、B (s(i))が3以上となるように行列を選択することで、差分攻撃に対する耐性を向上させることが可能となる。
拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とする。このB を3以上とするように、F関数中の行列を選択する方法について以下説明する。
(4−2−2.最小分岐数B の値を3以上とするF関数中の行列選択構成)
拡張Feistel構造のすべてのデータ系列における最小分岐数[B (s(i))]中、最小の分岐数[B ]を3以上とするためには、最低k種類の行列があれば実現できることを以下に説明する。
まず、k個の異なる行列[A],[A],[A],・・・[Ak−1]の結合行列[A|A|・・・|Ak−1]の分岐数が3以上となる、すなわち、
Branch([A|A|・・・|Ak−1])≧3
を満たすk個の異なる行列[A],[A],[A],・・・[Ak−1]を用意する。
次に、拡張Feistel構造のデータ系列s(i)に入力する複数のF関数の線形変換部の線形変換行列を以下のように設定する。
最初のF関数Fs(i),1の線形変換部に設定する線形変換行列をA
第2番目のF関数Fs(i),2の線形変換部に設定する線形変換行列をA
第3番目のF関数Fs(i),3の線形変換部に設定する線形変換行列をA

第k番目のF関数Fs(i),kの線形変換部に設定する線形変換行列をAk−1
第k+1番目のF関数Fs(i),k+1の線形変換部に設定する線形変換行列をA
第k+2番目のF関数Fs(i),k+2の線形変換部に設定する線形変換行列をA

というようにk個の異なる行列[A],[A],[A],・・・[Ak−1]をデータ系列s(i)に入力する複数のF関数に対して、上から順に、繰り返し配置していく。
このように線形変換行列[A],[A],[A],・・・[Ak−1]を設定した場合、任意のデータ系列s(i)に入力するk個の隣り合うF関数[Fs(i),j,Fs(i),j+1・・・Fs(i),j+k−1]中で用いられるk個の線形変換行列[Ms(i),j,Ms(i),j+1・・・Ms(i),j+k−1]の結合行列[Ms(i),j|Ms(i),j+1|・・・Ms(i),j+k−1]中の分岐数の最小値を求める式は、
Figure 0004882598
である。すなわち、最小分岐数が3以上であることが保証される。
もちろん行列[A],[A],[A],・・・[Ak−1]を入れ替えても効果は同じである。また、拡張Feistel構造のすべてのデータ系列s(i)について同様に行列を設定すれば、k個の行列を用いただけでB の値を3以上にすることが可能である。
このように、
Branch([A|A|・・・|Ak−1])≧3
を満たすk個の異なる行列[A],[A],[A],・・・[Ak−1]を用意して、これらの各行列を、拡張Feistel構造の各データ系列s(i)に入力するF関数に順番に繰り返し配置する設定とすることで、最小分岐数B の値を3以上にすることが可能となり、拡散行列切り替え機構(DSM)による差分攻撃に対する耐性の向上が実現される。
なお、kの値の選択に関しては、最低でもkが2以上であれば効果が見込まれる。kが大きくなればなるほど、保証される範囲が大きくなるため、耐性の向上がより期待できる。しかし、一方で、必要となる行列の種類の最小数が大きくなるため効率的な実装に不向きとなる可能性がある。よってkの値は設計の段階で状況に応じて選択されるべき値である。
(4−3.拡張Feistel構造において線形攻撃に対する耐性を向上させるための構成)
次に、拡張Feistel構造において線形攻撃に対する耐性を向上させる構成について説明する。
先に、説明したように、線形攻撃に対する耐性を図る指標としては、線形マスクの接続関係を表現した線形パス(線形近似と呼ばれることが多いが、差分と対応させるためここではパスという言葉を用いる)に含まれる線形アクティブS−boxの最小数が適用可能である。線形パスは、暗号化関数中の鍵データを除くすべてのデータ部分に対して特定の線形マスク値を指定したものである。線形変換処理の前後では、入力線形マスク値と出力線形マスク値の関係は一対一に決定され、非線形変換処理の前後では、一対一とはならないが、ある入力線形マスクに対する出力線形マスクの出現確率が算出される。すべての出力に対する確率をすべて足し合わせると1となる。
SP型のF関数を持ったFeistel構造においては、非線形変換はS−boxによる処理の部分のみである。したがって、この場合、0以外の確率をもつ線形パスとは平文(入力)に対する線形値から始まって暗号文(出力)の線形値までに至る線形マスク値データの集合であり、すべてのS−boxの前後で与えられる線形値は0以外の確率をもつものである。0以外の確率をもつある線形パスのS−boxに入力される線形値が0でないものを線形アクティブS−boxと呼ぶ。0以外の確率を持つすべての線形パスのアクティブS−boxの数のうちで最も少ない数を最小線形アクティブS−box数とよび、この数値が線形攻撃に対する安全性指標として用いられる。
最小線形アクティブS−box数を大きくすることが、線形攻撃に対する耐性の向上をもたらす。以下では、データ系列数dをd≧2の任意整数とした拡張Feistel構造において、最小線形アクティブS−box数の数を大きくするDSM構造を構築する手法について説明する。
拡張Feistel構造に含まれるF関数[Fs(i),x]で用いられる線形変換行列を[Ms(i),x]とする。このとき、分岐数演算関数:Branch()を適用した分岐数の算出式B (s(i))を次のように定義する、
Figure 0004882598
上記式は、拡張Feistel構造を構成する任意のデータ系列s(i)に入力する2つの隣り合うF関数[Fs(i),j,Fs(i),j+1]中で用いられる2つの線形変換行列[Ms(i),j]、[Ms(i),j+1]各々の逆行列の転置行列[−1 s(i),j]、[−1 s(i),j+1]の結合行列[−1 s(i),j−1 s(i),j+1]中の分岐数の最小値を求める式である。
拡張Feistel構造を構成する任意のデータ系列s(i)において、データ系列s(i)に入力するF関数の上段からの個数に相当する[j]を任意のjとし、あるjに対して、
j番目のF関数に対する入力:Xs(i),j
j番目のF関数の出力と、データ系列s(i)上のデータとの排他的論理和(XOR)結果:Ws(i),j
j+1番目のF関数に対する入力:Xs(i),j+1
これらの各データの線形マスクをそれぞれ、
ΓXs(i),j
ΓWs(i),j
ΓXs(i),j+1
とすると、それらのうちどれかひとつでも0でないものがあれば、以下の式を満たす。すなわち、
Figure 0004882598
上記式を満足する。上記式の左辺の値が大きいほど局所的な線形アクティブS−box数が多くなることを意味している。従って、B (s(i))を大きくするように行列を選択することが望ましいといえる。
しかしながら、データ系列s(i)に入力する2つの隣り合うF関数[Fs(i),j,Fs(i),j+1]中で用いられる2つの線形変換行列[Ms(i),j]、[Ms(i),j+1]とが、同一の行列であると、上記の分岐数算出式、すなわち、
(s(i))
は必ず最低の値である2となってしまう。このため耐性向上の効果は見込めない。B (s(i))をより大きな分岐数とすることが、最小線形アクティブS−box数を大きく保証することになり、線形攻撃に対する耐性を向上させることが可能となる。従って、例えば、B (s(i))が3以上となるように行列を選択することで、線形攻撃に対する耐性を向上させることが可能となる。
拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とする。このB を3以上とするように、F関数中の行列を選択する方法について以下説明する。
(4−3−1.最小分岐数B の値を3以上とするF関数中の行列選択構成)
拡張Feistel構造のすべてのデータ系列における最小分岐数[B (s(i))]中、最小の分岐数[B ]を3以上とするためには、最低2種類の行列があれば実現できることを以下に説明する。
まず、2つの異なる行列[A]と[A]の結合行列[ −1 −1]の分岐数が3以上となる、すなわち、
Branch([ −1 −1])≧3
を満たす2つの異なる行列[A]と[A]を用意する。
次に、拡張Feistel構造のデータ系列s(i)に入力する複数のF関数の線形変換部の線形変換行列を以下のように設定する。
最初のF関数Fs(i),1の線形変換部に設定する線形変換行列をA
第2番目のF関数Fs(i),2の線形変換部に設定する線形変換行列をA
第3番目のF関数Fs(i),3の線形変換部に設定する線形変換行列をA

というように2つの異なる行列[A]と[A]をデータ系列s(i)に入力する複数のF関数に対して、上から順に交互に配置していく。
このように線形変換行列を設定した場合、任意のデータ系列s(i)に入力する2つの隣り合うF関数[Fs(i),j,Fs(i),j+1]中で用いられる2つの線形変換行列[Ms(i),j]、[Ms(i),j+1]各々の逆行列の転置行列[−1 s(i),j]、[−1 s(i),j+1]の結合行列[−1 s(i),j−1 s(i),j+1]中の分岐数の最小値を求める上述した式は、
Figure 0004882598
となる。すなわち、最小分岐数が3以上であることが保証される。
もちろん行列[A]と[A]を入れ替えても効果は同じである。また、拡張Feistel構造のすべてのデータ系列s(i)について同様に行列を設定すれば、2つの行列を用いただけでB の値を3以上にすることが可能である。
このように、Branch([ −1 −1])≧3
を満たす2つの異なる行列[A]と[A]を用意して、これらの各行列を、拡張Feistel構造の各データ系列s(i)に入力するF関数に交互に配置する設定とすることで、最小分岐数B の値を3以上にすることが可能となり、拡散行列切り替え機構(DSM)による線形攻撃に対する耐性の向上が実現される。
[5.特定の形を持つ拡張Feistel構造に対するDSMの利用構成]
上述したように、データ系列数dをd≧2の任意整数とした拡張Feistel構造においてDSM技術を適用することで、差分攻撃や線形攻撃に対する耐性を向上させることが可能である。以下、差分攻撃や線形攻撃についての安全性指標を高いレベルで保証できる具体的な拡張Feistel構造について説明する。
先に図5、図6を参照して説明したように、データ系列数dをd≧2の任意整数とした拡張Feistel構造は、1つのデータ系列に対する入力が、他の様々なデータ系列から入力可能であり、また、1つのラウンドにおいて、複数のF関数が並列に実行可能であるなど、様々な構成がある。以下では、拡張Feistel構造を、大きく2つのタイプ(タイプ1、タイプ2)に分類して、各タイプ毎に、差分攻撃や線形攻撃についての安全性指標を高いレベルで保証できる具体的な拡張Feistel構造を説明する。
(5−1.拡張Feistel構造のタイプ1に対するDSMの適用)
まず、拡張Feistel構造のタイプ1に対するDSMの適用について、図8を参照して説明する。
拡張Feistel構造のタイプ1は、以下のパラメータを持つものとする。
パラメータ
(a)データ分割数:d(dは3以上)
(b)入出力データ長:dmnビット
(c)分割データ長:mnビット
(d)1ラウンドあたりのF関数の数:1
図8に示すように、各ラウンド内では、図8に示す左端のデータ系列上のmnビットデータに対してF関数が適用され、F関数の処理結果は、すぐ隣のデータ系列に出力され、排他的論理和される。なお、図8においては排他的論理和の演算記号を省略してある。
図8に示すように、各ラウンドにおいて、F関数に対するデータ入力を行なった左端のデータ系列は、次のラウンドでは、右端に移動し、それ以外のデータ系列は左にひとつずつずれる構成をとる。
このように各ラウンド毎に1つのF関数が実行される拡張Feistel構造にDSMを適用して差分攻撃および線形攻撃に対する耐性を向上させる構成について説明する。
先に説明した(4−2.拡張Feistel構造において差分攻撃に対する耐性を向上させるための構成)において、拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とし、このB を3以上とするように、F関数中の行列を選択することで、差分攻撃に対する耐性が高められることを説明した。
さらに、先に説明した(4−3.拡張Feistel構造において線形攻撃に対する耐性を向上させるための構成)において、拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とし、このB を3以上とするように、F関数中の行列を選択することで、線形攻撃に対する耐性が高められることを説明した。
このB とB に加えて、さらに、
を、図8に示すようなタイプ1の拡張Feistel構造中に含まれるF関数中の線形変換行列の分岐数中の最小の分岐数とする。
このとき、図8に示すようなタイプ1の拡張Feistel構造における連続するpラウンドに含まれる差分アクティブS−box数をActD(p)と表記し、線形アクティブS−box数をActL(p)と表記するものとすると、以下の関係式が存在する。
ActD(3d)≧B +B
ActL(3d)≧2B
上記式において、
ActD(3d)は、連続する3dラウンドに含まれる差分アクティブS−box数、
ActL(3d)は、連続する3dラウンドに含まれる線形アクティブS−box数、
を示している。
これらの関係式が成立することの証明は後述する。
このことから、B ,B ,B が大きくなるような行列を利用することによって、アクティブS−box数を多く確保することが出来ることになり、結果として、差分攻撃および線形攻撃に対する耐性を向上させることが可能となる。
なお、これらB ,B ,B の理論上の最大値はm+1になることが知られている。
上述の式、すなわち、
ActD(3d)≧B +B
ActL(3d)≧2B
これらの式の右辺には、先に説明した最小分岐数B またはB が含まれており、これらの最小分岐数の値を大きくすることが、アクティブS−box数を多く確保することに貢献することになり、差分攻撃および線形攻撃に対する耐性を向上させるために有効となる。したがって、図8に示すような拡張Feistel構造のタイプ1の構成においては、先に説明した最小分岐数B またはB を3以上とする構成が、有効であることになり、この構成とすることで、差分攻撃と線形攻撃に対する耐性をこれまでよりも高く保証することが可能となる。
(5−2.拡張Feistel構造のタイプ2に対するDSMの適用)
次に、拡張Feistel構造のタイプ2に対するDSMの適用について、図9を参照して説明する。
拡張Feistel構造のタイプ2は、以下のパラメータを持つものとする。
パラメータ
(a)データ分割数:d(ただしdは4以上の偶数)
(b)入出力データ長:dmnビット
(c)分割データ長:mnビット
(d)1ラウンドあたりのF関数の数:d/2
図9に示すように、各ラウンド内では左端から数えて奇数番目にあるmnビットのデータ系列に対してF関数が適用され、F関数の処理結果は、すぐ隣のデータに出力が排他的論理和される。なお、図9においては排他的論理和の演算記号を省略してある。
図9に示すように、各ラウンドにおいて、F関数に対するデータ入力を行なった左端のデータ系列は、次のラウンドでは、右端に移動し、それ以外のデータ系列は左にひとつずつずれる構成をとる。
このように各ラウンド毎にd/2個のF関数が実行される拡張Feistel構造にDSMを適用して差分攻撃および線形攻撃に対する耐性を向上させる構成について説明する。
先に説明した(4−2.拡張Feistel構造において差分攻撃に対する耐性を向上させるための構成)において、拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とし、このB を3以上とするように、F関数中の行列を選択することで、差分攻撃に対する耐性が高められることを説明した。
さらに、先に説明した(4−3.拡張Feistel構造において線形攻撃に対する耐性を向上させるための構成)において、拡張Feistel構造のすべてのデータ系列に対してB (s(i))を計算し、それらの中で最小の値のものをB とし、このB を3以上とするように、F関数中の行列を選択することで、線形攻撃に対する耐性が高められることを説明した。
このB とB に加えて、さらに、
を、図9に示すようなタイプ2の拡張Feistel構造中に含まれるF関数中の線形変換行列の分岐数中の最小の分岐数とする。
このとき、図9に示すようなタイプ2の拡張Feistel構造における連続するpラウンドに含まれる差分アクティブS−box数をActD(p)と表記し、線形アクティブS−box数をActL(p)と表記するものとすると、以下の関係式が存在する。
ActD(6)≧B +B
ActL(6)≧2B
上記式において、
ActD(6)は、連続する6ラウンドに含まれる差分アクティブS−box数、
ActL(6)は、連続する6ラウンドに含まれる線形アクティブS−box数、
を示している。
これらの関係式が成立することの証明は後述する。
このことから、B ,B ,B が大きくなるような行列を利用することによって、アクティブS−box数を多く確保することが出来ることになり、結果として、差分攻撃および線形攻撃に対する耐性を向上させることが可能となる。
なお、これらB ,B ,B の理論上の最大値はm+1になることが知られている。
上述の式、すなわち、
ActD(6)≧B +B
ActL(6)≧2B
これらの式の右辺には、先に説明した最小分岐数B またはB が含まれており、これらの最小分岐数の値を大きくすることが、アクティブS−box数を多く確保することに貢献することになり、差分攻撃および線形攻撃に対する耐性を向上させるために有効となる。したがって、図9に示すような拡張Feistel構造のタイプ2の構成においては、先に説明した最小分岐数B またはB を3以上とする構成が、有効であることになり、この構成とすることで、差分攻撃と線形攻撃に対する耐性をこれまでよりも高く保証することが可能となる。
[6.拡張Feistel構造各タイプのアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明]
次に、上述した
(5−1.拡張Feistel構造のタイプ1に対するDSMの適用)
(5−2.拡張Feistel構造のタイプ2に対するDSMの適用)
において説明したアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明について説明する。
(6−1.拡張Feistel構造のタイプ1のアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明)
まず、先に図8を参照して説明した拡張Feistel構造のタイプ1のアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明について説明する。
すなわち、タイプ1の拡張Feistel構造における連続するpラウンドに含まれる差分アクティブS−box数をActD(p)と表記し、線形アクティブS−box数をActL(p)と表記した場合の関係式、
ActD(3d)≧B +B
ActL(3d)≧2B
この関係式が成立することを証明する。
先に図8を参照して説明した拡張Feistel構造のタイプ1の構成を、別の形で示すと、図10のように示すことができる。図8では、F関数への入力を行なうデータ系列が左端になるように各データ系列の並びをラウンド毎に入れ替えて示していたが、図10は、データ系列のラウンド毎の入れ替えを行なわず、1つの直線で示している。図10では、ラウンド1〜6dまでを示している。d個のラウンド(ラウンド1〜d,d+1〜2d,・・・,5d+1〜6d)を1つの横ラインに並べて示してあるが、これらは並列に実行されるのではなく、各ラウンド、例えばラウンド1〜dは、順次実行される。
また、図には、F関数の出力と各データ系列の交点における排他的論理和(XOR)演算を省略しているが、F関数の出力と各データ系列の交点では排他的論理和(XOR)演算が実行され、その結果が、次のラウンドのF関数の入力となる。
この拡張Feistel構造のタイプ1の構成において、先に、(5−1.拡張Feistel構造のタイプ1に対するDSMの適用)において説明した関係式、
ActD(3d)≧B +B
ActL(3d)≧2B
が成立することを証明する。
上記式において、
ActD(3d)、ActL(3d)は、図8または図10に示すタイプ1の拡張Feistel構造における連続する3dラウンドに含まれる差分アクティブS−box数と、線形アクティブS−box数を意味する。
は、タイプ1の拡張Feistel構造中に含まれるF関数中の線形変換行列の分岐数中の最小の分岐数、
,B は、先に(4−2),(4−3)において説明した拡張Feistel構造中に含まれる1つのデータ系列に入力する連続するF関数中の線形変換行列の結合行列の最小分岐数、および逆行列の転置行列の結合行列の最小分岐数である。
,B ,B は、以下のように定義される。
Figure 0004882598
なお、上記定義において、
≧B
の関係が成立している。
また、図8または図10に示すタイプ1の拡張Feistel構造における第k番目のF関数に含まれる差分アクティブS―boxの数をDで表し、線形アクティブS―boxの数をLで表すものとする。
(証明1.ActD(3d)≧B +B の証明)
まず、ActD(3d)≧B +B の証明を行なう。
すなわち、図8、図10に示すタイプ1の拡張Feistel構造において、連続する3dラウンドに含まれる差分アクティブS−boxの個数はB +B 以上であることを証明する。
タイプ1の拡張Feistel構造において、入力がゼロでない差分(Δx)を与えた場合について考察する。この場合、タイプ1の拡張Feistel構造は、以下の4つの性質を持つ。
(性質1)連続するdラウンドの中に最低ひとつのラウンドでは差分アクティブS−boxが0ではないものが存在する
(性質2)D=0ならば、Dk−d+1=D+1
(性質3)D≠0ならば、Dk−d+1+D+D+1≧B
(性質4)D+Dk+d≠0ならば、Dk−d+1+D+Dk+d+Dk+d+1≧B
以上の4つの性質を利用して、
ActD(3d)≧B +B
の証明、すなわち、
「連続する3dラウンドに含まれる差分アクティブS−boxの個数はB +B 以上である」
ことを証明する。
対象とするラウンドをi+1番目からi+3d番目のラウンドとして考える。
場合1:もしも、i+d+2ラウンド目からi+2d−1ラウンド目までに0でないアクティブS−boxが存在する場合。
0でないアクティブS−boxが存在するラウンドをkとするとD≠0と表せる。
場合1−1:場合1に加えて、Dk+d−1≠0である場合、
性質3からD+Dk+1+Dk−d+1≧B
性質4からDk+d−1+Dk−2d+Dk−1+Dk+d≧B
であるから、
Figure 0004882598
となる。
場合1−2:場合1に加えて、Dk+1≠0である場合、
性質3からDk+1+Dk+2+Dk−d+2≧B
性質4からD+Dk−d+1+Dk+d+Dk+d+1≧B
であるから、
Figure 0004882598
となる。
場合1−3:場合1に加えて、Dk+d−1=0かつDk+1=0である場合、
性質2からD=Dk+d≠0
性質3からD+Dk+1+Dk−d+1≧B
性質3からDk+d+Dk+d+1+Dk+1≧B
k+1=0であるため、
Figure 0004882598
となる。
場合2:もしも、i+d+2ラウンド目からi+2d−1ラウンド目までに0でないアクティブS−boxが存在しない場合。
性質1から、Di+d+1≠0、またはDi+2d≠0である。
場合2−1:Di+d+1≠0であるがDi+2d=0の場合、
性質2からDi+d+1=Di+2d+1≠0
性質3からDi+d+1+Di+d+2+Di+2≧B
性質3からDi+2d+1+Di+2d+2+Di+d+2≧B
i+d+2=0であるため、
Figure 0004882598
である。
場合2−2:Di+d+1=0であるがDi+2d≠0の場合、
性質2からDi+2d=Di+d≠0
性質3からDi+d+Di+d+1+Di+1≧B
性質3からDi+2d+Di+2d+1+Di+d+1≧B
i+d+1=0であるため、
Figure 0004882598
である。
場合2−3:Di+d+1≠0かつDi+2d≠0の場合、
性質3からDi+d+1+Di+d+2+Di+2≧B
性質3からDi+2d+Di+2d+1+Di+d+Di+1≧B
であるため、
Figure 0004882598
である。
以上の場合1と場合2を総合すると、
Figure 0004882598
であることが証明される。すなわち、
ActD(3d)≧B +B
が成立し、図8、図10に示すタイプ1の拡張Feistel構造において、連続する3dラウンドに含まれる差分アクティブS−boxの個数はB +B 以上であることが証明される。
(証明2.ActL(3d)≧2B の証明)
次に、ActL(3d)≧2B の証明を行なう。
すなわち、図8、図10に示すタイプ1の拡張Feistel構造において、連続する3dラウンドに含まれる線形アクティブS−boxの個数は2B 以上であることを証明する。
なお、B は、前述したように、
Figure 0004882598
と定義する。
またk番目のF関数に含まれる線形アクティブS−boxの数をLで表すものとする。
タイプ1の拡張Feistel構造において、入力がゼロでない線形マスクを与えた場合には、以下の2つの性質を持つ。
(性質5)連続するdラウンドの中の最低ひとつのラウンドでは線形アクティブS−boxが0ではないものが存在する
(性質6)L+Lk+1+Lk+d≧B 、または、L+Lk+1+Lk+d=0である。なお、L+Lk+1+Lk+d≧B の場合は左辺に含まれる2つ以上の項が同時に0となることはない。
以上の2つの性質を利用して、
ActL(3d)≧2B
の証明、すなわち、
「連続する3dラウンドに含まれる線形アクティブS−boxの個数は2B 以上である」
ことを証明する。
対象とするラウンドをi+1番目からi+3d番目のラウンドとして考える。
場合1:もしも、i+d+2ラウンド目からi+2dラウンド目までに0でないアクティブS−boxが存在する場合。
0でないアクティブS−boxが存在するラウンドをkとするとL≠0である。
場合1−1:場合1に加えて、Lk+d≠0またはLk−1≠0である場合、
性質6からL+Lk+d+Lk+1≧B
性質6からLk−1+Lk−1−d+Lk−d≧B
であるから、
Figure 0004882598
となる。
場合1−2:場合1に加えて、Lk+d=0かつLk−1=0である場合、
性質6からLk−d+1≠0
性質6からL+Lk−1+Lk+d−1≧B
性質6からLk−d+1+Lk+1+Lk−d+2≧B
このときd≧4であれば、
Figure 0004882598
である。
d=3であれば、Lk−1が重なるがすでにLk−1=0であることがわかっているため、
同様に、
Figure 0004882598
である。
場合2:もしも、i+d+2ラウンド目からi+2d−1ラウンド目までに0でないアクティブS−boxが存在しない場合。
性質1から、Li+d+1≠0となる。
性質6からLi+d≠0
性質6からLi+d+1+Li+d+2+Li+2d+1≧B
性質6からLi+d+Li+d−1+Li+2d−1≧B
このときd≧4であれば、
Figure 0004882598
である。
d=3であれば、Li+5が重なるがすでにLi+5=0であることがわかっているため、
同様に、
Figure 0004882598
である。
以上の場合1と場合2を総合すると、
Figure 0004882598
であることが証明される。すなわち、
ActL(3d)≧2B
が成立し、図8、図10に示すタイプ1の拡張Feistel構造において、連続する3dラウンドに含まれる線形アクティブS−boxの個数は2B 以上であることが証明される。
(6−2.拡張Feistel構造のタイプ2のアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明)
次に、図9を参照して説明した拡張Feistel構造のタイプ2のアクティブS−box数と、F関数中の線形変換行列に基づく最小分岐数との関係式の証明について説明する。
すなわち、タイプ2の拡張Feistel構造における連続するpラウンドに含まれる差分アクティブS−box数をActD(p)と表記し、線形アクティブS−box数をActL(p)と表記した場合の関係式、
ActD(6)≧B +B
ActL(6)≧2B
この関係式が成立することを証明する。
先に図9を参照して説明した拡張Feistel構造のタイプ2の構成を、別の形で示すと、図11のように示すことができる。図9では、ラウンド毎に各データ系列の並びを入れ替えて示していたが、図11は、データ系列の入れ替えを行なわず、1つの直線で示している。図11では、ラウンド1〜12までを示している。2つのラウンド(1〜2,3〜4,・・)のF関数を1つの横ラインに並べて示してある。例えば、図11に示すラウンド1〜2の横ラインに示されたF関数F1,0〜F1,d−1中、F1,0、F1,2、・・・、F1,d−2の1つおきのF関数(出力の矢印が上向き)が第1ラウンドにおいて並列に実行される。次の第2ラウンドにおいて、残りのF1,1、F1,3、・・・、F1,d−1の1つおきのF関数(出力の矢印が下向き)が並列に実行される。
図11において、F関数を識別するための番号は証明をわかりやすくするために新たに導入したものであり、2つの数字を使ってF関数の位置を決定している。
i,jのiは、ラウンド数(1=1,2ラウンド、2=3,4ラウンド・・)を示し、は、2つのラウンドにおけるF関数の位置を示している。なお、jが0,2,4,の偶数であれば、先行ラウンドにおけるF関数であり、jが1,3,5,の奇数であれば、後続ラウンドにおけるF関数である。なお、F関数Fi,jに含まれる線形変換行列を[Mi,j]と呼ぶものとする。
この拡張Feistel構造のタイプ2の構成において、先に、(5−2.拡張Feistel構造のタイプ2に対するDSMの適用)において説明した関係式、
ActD(6)≧B +B
ActL(6)≧2B
が成立することを証明する。
上記式において、
ActD(6)、ActL(6)は、図9または図11に示すタイプ2の拡張Feistel構造における連続する6ラウンドに含まれる差分アクティブS−box数と、線形アクティブS−box数を意味する。
は、タイプ2の拡張Feistel構造中に含まれるF関数中の線形変換行列の分岐数中の最小の分岐数、
,B は、先に(4−2),(4−3)において説明した拡張Feistel構造中に含まれる1つのデータ系列に入力する連続するF関数中の線形変換行列の結合行列の最小分岐数、および逆行列の転置行列の結合行列の最小分岐数である。
,B ,B は、以下のように定義される。
Figure 0004882598
なお、上記定義において、
≧B
の関係が成立している。
また、Fp,qに含まれるアクティブS−boxの数をDp,qで表すものとする。なお以降で、添え字qの部分が負の値やd以上の値を持つ場合には、dによる剰余演算(q mod d)を行い常に0≦q<dとなるように補正するものとする。
(証明3.ActD(6)≧B +B の証明)
まず、ActD(6)≧B +B の証明を行なう。
すなわち、図9、図11に示すタイプ2の拡張Feistel構造において、連続する6ラウンドに含まれる差分アクティブS−boxの個数はB +B 以上であることを証明する。
タイプ2の拡張Feistel構造において、入力がゼロでない差分(Δx)を与えた場合について考察する。この場合、タイプ2の拡張Feistel構造は、以下の4つの性質を持つ。
(性質1)あるiに対して、Fp,q(p=i,q∈{0,..d−1})の中には差分アクティブS−boxが0ではないものが存在する
(性質2)Dp,q=0ならば、
p−1,q+1=Dp,q+1 (qが偶数のとき)
p,q+1=Dp+1,q+1 (qが奇数のとき)
(性質3)Dp,q≠0ならば、
p,q+Dp−1,q+1+Dp,q+1≧B (qが偶数のとき)
p,q+Dp,q+1+Dp+1,q+1≧B (qが奇数のとき)
(性質4)Dp,q+Dp+1,q≠0ならば、
p,q+Dp+1,q+Dp−1,q+1+Dp+1,q+1≧B (qが偶数のとき)
p,q+Dp+1,q+Dp,q+1+Dp+2,q+1≧B (qが奇数のとき)
以上の4つの性質を利用して、
ActD(6)≧B +B
の証明、すなわち、
「1以上の任意の整数iに対して、p∈{i,i+1,i+2},q∈{0,1,..d−1}を満たす3d個のF関数Fp,qに含まれる差分アクティブS−boxの総数はB +B 以上である」
ことを証明する。
p,q (p=i+1,q∈{0,..d−1})の0でない要素を任意に取り出したとき、それがDj,k≠0であったとする。上述の(性質1)より必ず存在することが示される。
場合1:Dj,k−1≠0である場合、
性質3から
j,k+Dj−1,k+1+Dj,k+1≧B (kが偶数のとき)
j,k+Dj,k+1+Dj+1,k+1≧B (kが奇数のとき)
性質4から
j−1,k−1 +Dj,k−1+Dj−1,k+Dj+1,k≧B (kが偶数のとき)
j,k−1+Dj+1,k−1+Dj−1,k+Dj+1,k≧B (kが奇数のとき)
であるから、
Figure 0004882598
が成立する。
場合2:Dj,k+1≠0である場合、
性質3から
j,k+1+Dj,k+2+Dj+1,k+2≧B (kが偶数のとき)
j,k+1+Dj−1,k+2+Dj,k+2≧B (kが奇数のとき)

性質4から
j,k +Dj+1,k+Dj−1,k+1+Dj+1,k+1≧B (kが偶数のとき)
j−1,k+Dj,k+Dj−1,k+1+Dj+1,k+1≧B (kが奇数のとき)
であるから、
Figure 0004882598
が成立する。
場合3:Dj,k−1=0かつDj,k+1=0である場合、
性質2から、Dj,k−1=0であるので
j+1,k=Dj,k≠0 (kが偶数のとき)
j−1,k=Dj,k≠0 (kが奇数のとき)
性質3から、
j,k+Dj−1,k+1+Dj,k+1≧B (kが偶数のとき)
j,k+Dj,k+1+Dj+1,k+1≧B (kが奇数のとき)
さらに性質3から
j+1,k+Dj,k+1+Dj+1,k+1≧B (kが偶数のとき)
j−1,k+Dj−1,k+1+Dj,k+1≧B (kが奇数のとき)
j,k+1=0であるから、
Figure 0004882598
が成立する。
以上を総合すると、
Figure 0004882598
であることが証明される。すなわち、
ActD(6)≧B +B
が成立し、図9、図11に示すタイプ2の拡張Feistel構造において、連続する6ラウンドに含まれる差分アクティブS−boxの個数はB +B 以上であることが証明される。
(証明4.ActL(6)≧2B の証明)
次に、ActL(6)≧2B の証明を行なう。
すなわち、図9、図11に示すタイプ2の拡張Feistel構造において、連続する6ラウンドに含まれる線形アクティブS−boxの個数は2B 以上であることを証明する。
なお、B は、前述したように、
Figure 0004882598
と定義する。
またFp,q番目のF関数に含まれる線形アクティブS−boxの数をLp,qで表すものとする。
タイプ2の拡張Feistel構造において、入力がゼロでない線形マスクを与えた場合には、以下の2つの性質を持つ。
(性質5)あるiに対して、Fp,q (p=i,q∈{0,..d−1})の中には線形アクティブS−boxが0ではないものが存在する
(性質6)
j,k+Lj+1,k+Lj,k+1≧B または、Lj,k+Lj+1,k+Lj,k+1=0 (kが偶数のとき)
j,k+Lj+1,k+Lj+1,k+1≧B または、Lj,k+Lj+1,k+Lj+1,k+1=0 (kが奇数のとき)
なお、L+L+L≧B の形の場合は左辺に含まれる2つ以上の項が同時に0となることはない。
以上の2つの性質を利用して、
ActL(6)≧2B
の証明、すなわち、
「1以上の任意の整数iに対して、p∈{i,i+1,i+2},q∈{0,1,..d−1}を満たす3d個のF関数Fp,qに含まれる線形アクティブS−boxの総数は2B 以上である」
ことを証明する。
p,q (p=i+1,q∈{0,..d−1})の0でない要素を任意に取り出したとき、それがLj,k≠0であったとする。そのようなLj,kは性質5より必ず存在することが示される。
性質6から、
j−1,k+Lj,k+Lj−1,k+1≧B (kが偶数のとき)
j,k+Lj+1,k+Lj+1,k+1≧B (kが奇数のとき)
場合1:Lj,k−1≠0である場合、
性質6から
j,k−1+Lj+1,k−1+Lj+1,k≧B (kが偶数のとき)
j−1,k−1+Lj,k−1+Lj−1,k≧B (kが奇数のとき)
従って、この場合、
Figure 0004882598
が成立する。
場合2:Lj,k−1=0である場合、
性質6から
j−1,k−1≠0 (kが偶数のとき)
j+1,k−1≠0 (kが奇数のとき)
であるので、
j−1,k−2+Lj,k−2+Lj−1,k−1≧B (kが偶数のとき)
j,k−2+Lj+1,k−2+Lj+1,k−1≧B (kが奇数のとき)
このときd≧4であるので、この場合、
Figure 0004882598
が成立する。
以上の場合1と場合2を総合すると、
Figure 0004882598
であることが証明される。すなわち、
ActL(6)≧2B
が成立し、図9、図11に示すタイプ2の拡張Feistel構造において、連続する6ラウンドに含まれる線形アクティブS−boxの個数は2B 以上であることが証明される。
[7.F関数の設定および利用処理の工夫に基づく実装における改良構成]
上述したように、本発明では、データ系列数:dをd≧2の整数とした拡張Feistel構造において、各ラウンドのF関数の線形変換処理として、少なくとも2以上の異なる行列を選択的に適用する、いわゆる拡散行列切り替え機構(DSM)を適用することで、線形解析や差分解析に対する耐性を向上させた構成を実現している。
このように、異なる複数の行列を選択適用させる演算処理を実行する構成をハードウェアで実現する場合、それぞれの行列に対応する演算を行なうハードウェア構成を持つ異なるF関数処理部が必要となる。特に、1つのラウンドにおいて、複数のF関数を並列に実行させようとした場合には、並列処理を行なうための複数のF関数用回路が必要となる。
すなわち、先に図9や図11を参照して説明したタイプ2の拡張Feistel構造では、同一ラウンドに複数のF関数を適用したデータ変換処理を並列に実行する構成であり、このタイプ2の構成に従った処理をハードウェアで実行する場合、1つのラウンドで並列に実行する個数分のF関数のハードウェアを実装することが必要となる。このような並列実行の要求されるF関数は、同一構成である場合でも、その同一構成を持つF関数を複数、備えなければならない。
前述したように、本発明の暗号処理構成は、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用する構成とすることで各種の攻撃に対する耐性を高めた構成を持つ。すなわち、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を備えた構成としたものである。
この拡散行列切り替え機構(DSM)を満足させるためには、拡張Feistel構造の各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列に設定することなどの条件が満足されればよく、各ラウンドにおいて並列に実行されるF関数における制約は特にない。
以下では、この特性に基づいて、拡張Feistel構造において拡散行列切り替え機構(DSM)に基づく耐性を維持しつつ、実装効率を高めた構成例について説明する。
(7−1.拡張Feistelのタイプ2の効率的なF関数配置方法)
まず、先に、図9、図11を参照して説明した拡張Feistelのタイプ2の効率的なF関数配置構成について説明する。タイプ2の拡張Feistel構造は、先に説明した項目(5−2.拡張Feistel構造のタイプ2に対するDSMの適用)において述べたように、以下のパラメータを持つ。
パラメータ
(a)データ分割数:d(ただしdは4以上の偶数)
(b)入出力データ長:dmnビット
(c)分割データ長:mnビット
(d)1ラウンドあたりのF関数の数:d/2
すなわち、図9に示すように、各ラウンド内では左端から数えて奇数番目にあるmnビットのデータ系列に対してF関数が適用され、F関数の処理結果は、すぐ隣のデータに出力が排他的論理和される。なお、図9においては排他的論理和の演算記号を省略してある。
以下では、このような構成を持つタイプ2の拡張Feistel構造に対する実装効率を高めた構成について説明する。一例として、データ系列数(分割数)d=4の場合について、図12を参照して説明する。図12において、2つの異なる線形変換行列M1,M2によって線形変換を実行することなる2つのF関数をそれぞれF1,F2とする。
図12に示すFeistel構造は、F関数F1,F2の2つのF関数を用いたd=4の拡張Feistel構造のタイプ2である。すなわち、
(a)データ分割数:4
(b)入出力データ長:4mnビット
(c)分割データ長:mnビット
(d)1ラウンドあたりのF関数の数:4/2=2
を持つ構成である。
この図12に示す構成の場合、2つのF関数を用いてDSM条件を満たすようにするにはいくつかの配置が考えられる。すなわち、DSM条件を満足させるためには、前述したように、各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列に設定することなどの条件が満足されればよく、各ラウンドにおいて並列に実行されるF関数における制約は特にない。
従って、F関数の設定態様としては、
(a)1つのラウンドに設定する複数のF関数を同一のF関数とする設定、
(b)1つのラウンドに設定する複数のF関数を異なるF関数とする設定、
上記2つの態様が可能となる。
ここでは、図12に示すように、1つのラウンドに存在する2つのF関数が互いにF1,F2となるように選択する構成をとる。この構成によるメリットは、1ラウンド分の処理を基本としてハードウェア(H/W)実装を行った場合に顕著に現れる。
すなわち、ハードウェア(H/W)実装として、1つのラウンド分の処理だけを実行可能な構成、すなわち、図13に示すように、F関数F1と、関数F2を並列に実行可能な構成を持つハードウェアを設定する。図13は、図12に示す拡張Feistel構造に従った暗号処理を実行するハードウェア構成を持つ暗号処理装置250を示すブロック図である。
暗号処理装置250は、F関数F1を実行する第1F関数(F1)専用処理回路251と、F関数F2を実行する第2F関数(F2)専用処理回路252と、制御回路253、および補助回路254から構成される。第1F関数(F1)専用処理回路251と、第2F関数(F2)専用処理回路252は並列に動作可能な構成であり、各ラウンドにおいて、これらの2つの回路を適用して2つの異なるF関数に基づくデータ変換が実行される。
制御回路253は、各F関数専用処理回路251,252、および補助回路254に対する入出力データの制御を実行する。補助回路254はF関数以外の演算処理などを実行する。
この構成を適用することで、必要なラウンド数分だけ、第1F関数(F1)専用処理回路251と、第2F関数(F2)専用処理回路252を適用してラウンド演算を行なうことが可能となる。すべてのラウンドにおいて2つのF関数専用回路が並列に実行され、無駄な回路を設けることのない実装が可能となる。
図12に示すように各ラウンドで並列に実行するF関数が2つの場合、これらを異なるF関数に設定することで、図13に示すハードウェア実装により、すべてのラウンド演算を行なうことが可能となる。ちなみに、1つのラウンドにおいて実行するF関数を同じ設定、例えば第1ラウンドで、F1,F1を並列に実行し、第2ラウンドでF2,F2を実行するような構成とした場合、ハードウェアとしては、F1実行回路とF2実行回路を各々2つ設けることが必要となり、図13に示す構成に比較して回路規模を大きなものとすることが必要となる。
図12に示すように各ラウンドで実行するF関数の組み合わせをすべてF1,F2の設定とすることで、図13に示すハードウェアを適用して、各ラウンドにおいて、常にF1,F2が同時に実行でき、回路上の無駄を発生させることなく回路規模を小さくした小型の装置が実現される。
図12に示す構成は、データ系列d=4の場合であるが、その他のデータ系列数の場合も、同様な設定とすることで、効率的な実装が可能となる。例えばデータ系列数d=8の場合、1つのラウンドには、4つのF関数が設定されることになるが、この4つのF関数を、2つの異なるF関数F1,F2を2つずつ設定する構成とする。
この場合の実装構成は、F関数F1,F2をそれぞれ2つずつ設けて、4つのF関数(F1,F1,F2,F2)を並列実行可能な構成とする。この構成により、すべてのラウンドにおいて4つのすべてのF関数が並列に実行され、無駄な回路を設けることのない実装が可能となる。
また、データ系列数d=16の場合、1つのラウンドに存在する8つのF関数をF1,F2を4つずつ設定する。さらに一般化して、データ系列数d=4xの場合には、各ラウンドにおいて、F関数F1,F2がx個づつ利用される構成にするようにして、ハードウェア実装として、F関数F1,F2を各々x個設定した構成とすれば、毎ラウンドで必要とされるF1,F2の個数が同じであるため過不足無く実行でき実装効率を高めることができる。
上述した処理例は、拡散行列切り替え機構(DSM)を満足させるために、2つの線形変換行列を適用した2つの異なるF関数を設定した例であるが、3種類以上の線形変換行列を用いて3種類以上のF関数を設定した場合でも同様のことが言える。
3種類のF関数を効率的な実装とするための配置例を図14に示す。図14は、データ系列数d=6の拡張Feistelのタイプ2の構造例である。この図14に示す構成では、1つのラウンドに存在する3つのF関数がF1,F2,F3とかならずひとつずつ利用される構成になるように設定されている。
この構成により、ハードウェア(H/W)実装時にF1,F2,F3をそれぞれひとつずつ実装するのみで、各ラウンドにおいて、F関数を並列に実行させる構成とすることができ、H/W的に見て無駄のない回路構成が実現される。
さらに、データ系列数d=12の場合は1つのラウンドに存在する6つのF関数をF1,F2,F3各々2つずつの設定とする。また、データ系列数d=18の場合は、1つのラウンドに設定する9つのF関数について、F1,F2,F3を3つずつの設定とする。これらを一般化して、データ系列数d=6xの場合には、各ラウンドに設定するF関数をF1,F2,F3の各々がx個ずつとなるようにする。すなわち、各ラウンドにおいて、異なるF関数が均等に利用される構成とする。
このようなF関数の設定構成とすることで、毎ラウンドで必要とされるF1,F2,F3の個数を同じ数に設定することができ、ハードウェア実装において過不足無く利用する回路の設定が可能となり、実装効率を高めることができる。ソフトウェアの場合にも、入出力値を取得するためのテーブルの利用態様が各ラウンドにおいて均一となるので、様々なパターンを想定したテーブルを構成することなく、1つの利用態様に応じたテーブルを設定してメモリに格納することが可能となる。
上述した各処理例をさらに、一般化すると以下のように言える。
(1)a種類のF関数を利用したType2の拡張Fesitel構造を構成する場合、データ系列数(分割数)d=2ax、ただしaは2以上の整数,xは1以上の整数、としたとき、1つのラウンド内に設定されるax個のF関数として、全種類のF関数が均等にx個ずつ設定する構成とすることで実装効率を向上させることが可能となる。
なお、上述したF関数の設定においては、各データ系列に入力されるF関数の設定を、前述したDSM条件を満足させる設定とすることで耐性の維持が可能である。
(7−2.Feistel構造と拡張Feistel構造における部品の共通化)
前述したように、これまで説明してきたFeistel構造、拡張Feistelのタイプ1、拡張Feistelのタイプ2のいずれに対してもDSMメカニズムを利用することにより、攻撃に対する耐性を向上させるメリットがある。
すなわち、Feistel構造を大きく分類すると、
(a)データ系列数(分割数)d=2としたFeistel構造
(b)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造
に分類され、さらに、拡張Feistel構造は、
(b1)各ラウンドにおいて1つのF関数の実行のみを許容したタイプ1、
(b2)各ラウンドにおいて複数のF関数の並列実行を許容したタイプ2、
これら(a),(b1),(b2)の3種類に分類できる。
これらの3種類のFeistel構造のいずれにおいても、DSMメカニズムの適用による耐性向上が実現される。
DSMメカニズムの適用のためには、少なくとも2つ以上の異なる線形変換行列を実行する異なるF関数を実装することが必要となるが、この異なる複数のF関数を持つ実装構成によって、上述の複数の異なるFeistel構造(a),(b1),(b2)を選択的に実行可能な装置を実現することができる。このような選択的な処理を実行する装置構成について以下、説明する。
拡散行列切り替え機構(DSM)を満足する線形変換行列を実行する複数の異なるF関数を決定し、これらの各F関数における入出力データのデータサイズをmnビットとする。このようなF関数を適用することで、例えば、図15に示すような、データ系列d=2のFeistel構造では2mnビットのブロック暗号が実行される。
図15に示すデータ系列d=2のFeistel構造の各F関数F1,F2は、入出力データサイズがmnビットである。このデータ系列d=2のFeistel構造は、2mnビットの平文を2mnビットの暗号文にする処理、またはその逆の復号処理を行い、2mnビットのブロック暗号を実行する。
また、この図15に示す入出力データサイズがmnビットのF関数F1,F2を利用することで、拡散行列切り替え機構(DSM)を満足するデータ系列数d=4の拡張Feistel構造を構成することができる。図16にこの構成を示す。
図16に示すデータ系列d=4の拡張Feistel構造の各F関数F1,F2は、入出力データサイズがmnビットであり、図15に示すF関数F1,F2をそのまま適用したものである。このデータ系列d=4の拡張Feistel構造は、4mnビットの平文を4mnビットの暗号文にする処理、またはその逆の復号処理を行い、4mnビットのブロック暗号を実行する。
さらに、一般化して、データ系列数d=x、ただしxは2以上の整数、とした場合、xmnビットの暗号化または復号処理を実行するブロック暗号構成を、同じF関数実行構成を用いて構築することができる。
例えば、入出力ビットが64ビットの異なるF関数F1,F2のみを用いて、DSM機構を実現する入出力128ビットブロック暗号処理と、256ビットブロック暗号処理を選択的に実行可能な装置を構成することが可能となる。
すなわちF関数としては、入出力ビットが64ビットの異なる2つのF関数F1,F2を実装し、これらの利用態様を制御する。例えば、データ系列数d=2としたFeistel構造(図15)に基づく暗号処理を実行する場合は、各F関数F1,F2を各ラウンドにおいて1つ実行する構成とする。一方、データ系列数d=4とした拡張Feistel構造(図16)に基づく暗号処理を実行する場合は、各F関数F1,F2を各ラウンドにおいて並列に実行する構成とする。このように、2種類のF関数を装着することで、入出力128ビットブロック暗号と256ビットブロック暗号を選択的に実行可能な装置が実現される。すなわち、同じF関数を使って接続方法を変えることで異なるビット数のブロック暗号を実行することが可能であり、S/W,H/W両者において回路・コードの共有化などによる実装効率の向上が期待できる。
このような構成を持つ暗号処理装置の構成例を図17に示す。図17に示す暗号処理装置270は、F関数F1を実行する第1F関数(F1)専用処理回路271と、F関数F2を実行する第2F関数(F2)専用処理回路272と、制御回路273、および補助回路274から構成される。第1F関数(F1)専用処理回路271と、第2F関数(F2)専用処理回路272は並列に動作可能な構成である。制御回路273は、各処理部に対するデータ入出力制御を行うとともに、Feistel構造選択処理を実行する。補助回路254はF関数以外の演算処理などを実行する。
制御回路273は、Feistel構造選択処理として、
(a)データ系列数(分割数)d=2としたFeistel構造
(b1)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容したタイプ1、
(b2)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容したタイプ2、
これらのいずれの構造に基づく暗号処理を実行するかを選択する。なお、設定情報は、例えば外部から入力する。あるいは暗号化または復号処理の対象となるデータのビット長に応じて実行する処理形態を選択する構成としてもよい。制御回路273は、選択に応じて、各F関数専用回路の適用シーケンスを変更し、各Feistel構造に従ったラウンド関数を実行させる制御を行う。
この構成を適用することで、第1F関数(F1)専用処理回路251と、第2F関数(F2)専用処理回路252を適用して様々なFeistel構造を適用した暗号処理が可能となり、暗号化処理、または復号処理の処理ビットが異なる様々なビット対応の暗号処理を実行可能となる。
また、図17には2つのF関数を持つ例を示しているが、2つのF関数を用いた例にはとどまらず、任意の個数のF関数を用いた構成でも同様の結果が期待できる。例えば、先に図14を参照して説明した拡張Feistel構造では、3つの異なるF関数F1,F2.F3を適用して拡散行列切り替え機構(DSM)を満足するデータ系列数d=6の拡張Feistel構造を構成している。これと同じ3種類のF関数F1,F2,F3のF関数を適用して図18に示すデータ系列d=2のFeistel構造を持つ暗号処理構成が構築できる。このデータ系列d=2の構成においても、各行列F1,F2,F3は、DSM機構を満足する設定で配置される。
このような3種類のF関数F1,F2,F3を実行する暗号処理装置の構成例を図19に示す。図19に示す暗号処理装置280は、F関数F1を実行する第1F関数(F1)専用処理回路281と、F関数F2を実行する第2F関数(F2)専用処理回路282と、F関数F3を実行する第3F関数(F3)専用処理回路283と、制御回路284、および補助回路285から構成される。第1F関数(F1)専用処理回路281と、第2F関数(F2)専用処理回路282と、第3F関数(F3)専用処理回路283とは並列に動作可能な構成である。制御回路284は、各処理部に対するデータ入出力制御を行うとともに、Feistel構造選択処理を実行する。補助回路285はF関数以外の演算処理などを実行する。
制御回路284は、Feistel構造選択処理として、
(a)データ系列数(分割数)d=2としたFeistel構造
(b1)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容したタイプ1、
(b2)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容したタイプ2、
これらのいずれの構造に基づく暗号処理を実行するかを選択する。なお、設定情報は、例えば外部から入力する。制御回路284は、設定に応じて、各F関数専用回路の適用シーケンスを変更し、各Feistel構造に従ったラウンド関数を実行させる制御を行う。
この構成を適用することで、第1F関数(F1)専用処理回路281〜第3F関数(F3)専用処理回路283を適用して様々なFeistel構造を適用した暗号処理が可能となり、暗号化処理、または復号処理の処理ビットが異なる様々なビット対応の暗号処理を実行可能となる。なお、4つ以上のF関数実行部を持つ構成も可能である。
上述したように、拡散行列切り替え機構(DSM)を満足する線形変換行列を実行する複数の異なるF関数を決定し、これらの各F関数を実装して、F関数を適用した処理シーケンスを変更することで、
(a)データ系列数(分割数)d=2としたFeistel構造
(b1)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容したタイプ1、
(b2)データ系列数(分割数)d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容したタイプ2、
これらのいずれかの構造に基づく暗号処理を選択的に実行する構成が実現され、暗号化処理または復号処理における処理ビット数を変更可能な装置が実現される。
例えば、a種類(aは2以上の整数)のF関数を構成して、上記3種類のFeistel構造に基づく暗号処理を実行し、かつ拡散行列切り替え機構(DSM)を満足させた処理構成により耐性の高い暗号処理を行なうことが可能となる。
[8.本発明の暗号処理および暗号アルゴリズム構築処理のまとめ]
最後に、上述した本発明の暗号処理および暗号アルゴリズム構築処理についてまとめて説明する。
本発明の暗号処理装置は、図1、図2を参照して説明したように、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有する。さらに、図5以下を参照して説明したように、暗号処理部は、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行する構成であり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用する構成を有する。
これらの2以上の複数の異なる行列は、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を実現するように設定され、DSMにより、差分攻撃や線形攻撃に対する耐性を向上させた暗号処理が実現される。このDSMによる耐性向上の実現のため特定の条件に従った行列の選択、配置が行なわれる。
すなわち、F関数において実行する線形変換処理に適用される複数の行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列が選択され、これらの複数の異なる行列が、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置される。
さらに、具体的には、暗号処理部において利用される複数の異なる行列は、拡張Feistel構造の各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列である。
あるいは、拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列である。
本発明の暗号処理装置の暗号処理部は、これらの複数の異なる行列を、n個(ただし、nは2以上の整数)の異なる行列を、M,M,・・Mn−1としたとき、これらを、拡張Feistel構造の各データ系列に入力するF関数に順番に繰り返し配置した構成を有する。具体的な拡張Feistel構造の例としては、例えば図8、図10を参照して説明した1つのラウンドに1つのF関数のみを実行するタイプ1の拡張Feistel構造や、図9、図11を参照して説明した1つのラウンドに複数のF関数を並列に実行する拡張Feistel構造がある。
なお、本発明は、このような拡張Feistel構造を適用した暗号処理を実行する暗号処理装置および方法並びに暗号処理を実行するコンピュータ・プログラムと、さらに、上述の拡張Feistel構造を適用した暗号処理を実行するための暗号処理アルゴリズムを構築する情報処理装置、方法並びにコンピュータ・プログラムをも含むものである。
暗号処理アルゴリズムを構築する情報処理装置は、例えば一般的なPC等の情報処理装置が適用可能であり、以下の処理ステップを実行可能な制御部を持つ。すなわち、
データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理アルゴリズムの構成において、各ラウンドにおけるF関数において実行する線形変換処理に適用する少なくとも2以上の複数の異なる行列を決定する行列決定ステップと、
行列決定ステップにおいて決定した複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置する行列設定ステップである。
上述の行列決定ステップは、2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列を適用行列として決定する処理を実行するステップとして実行される。
このような処理アルゴリズムによって設定された拡張Feistel構造を適用した暗号処理においては、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)が実現され、DSMにより、差分攻撃や線形攻撃に対する耐性を向上させた暗号処理が実現される。
[9.暗号処理装置の構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール300の構成例を図20に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図20に示すICモジュール300は、これら様々な機器に構成することが可能である。
図20に示すCPU(Central processing Unit)301は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ302は、CPU301が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU301の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ302は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部303は、例えば上述した拡張Feistel型の共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU301がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器304は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部305は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
このICモジュール300は、例えば、上述した実施例に従って、データ系列数dがd≧2の整数とした拡張Feistel型暗号処理を実行する。拡張Feistel構造におけるF関数の線形変換行列として、上述した実施例に従った態様で、異なる線形変換行列を設定することで、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)が実現され、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の一実施例の構成によれば、非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、2つのデータ系列を持つFeistel構造を拡張したFeistel構造、すなわち、例えば3つ、4つなど、2以上の任意のデータ系列を持つ拡張型のFeistel構造において、複数の異なる線形変換行列を適用したラウンド関数部を設定することで拡散行列切り替え機構(DSM)を実現し、線形解析や差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムの構築および暗号処理の実行が可能となる。
本発明の一実施例の構成によれば、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行する構成において、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用する構成を有し、2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列として設定することで、拡散行列切り替え機構(DSM)を実現し、線形解析や差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムの構築および暗号処理の実行が可能となる。
さらに、本発明の一実施例の構成によれば、複数の異なる行列による異なる線形変換処理を実行するa(a≧2)種類のF関数を利用したデータ系列数:d=2axの拡張Fesitel構造(x≧1)を適用した暗号処理を実行する構成において、1つのラウンドにおいて、全種類(a種類)のF関数を均等にx個ずつ実行する構成としたので、無駄な回路を設けることのない小型の暗号処理装置が実現される。
さらに、本発明の一実施例の構成によれば、複数の異なる行列による異なる線形変換処理を実行する複数のF関数実行部を構成して、複数のF関数実行部の利用シーケンスを設定に応じて変更する構成としたことで、
(a)データ系列数d=2としたFeistel構造による暗号処理、または、
(b1)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容した暗号処理、または、
(b2)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容した暗号処理、
上記(a),(b1),(b2)のいずれかの暗号処理を選択的に実行することを可能とした暗号処理装置が実現される。
Feistel構造を持つ代表的な共通鍵ブロック暗号の構成を示す図である。 ラウンド関数部として設定されるF関数の構成について説明する図である。 2つの異なる線形変換行列を利用したFeistel型暗号アルゴリズムについて説明する図である。 3つの異なる線形変換行列を利用したFeistel型暗号アルゴリズムについて説明する図である。 拡張Feistel構造の定義について説明する図である。 7つのデータ系列(d=7)を持つ拡張Feistel構造例を示す図である。 拡張Feistel構造の各構成部および各構成部の入出力データの定義について説明する図である。 拡張Feistel構造のタイプ1に対するDSMの適用について説明する図である。 拡張Feistel構造のタイプ2に対するDSMの適用について説明する図である。 拡張Feistel構造のタイプ1に対するDSMの適用について説明する図である。 拡張Feistel構造のタイプ2に対するDSMの適用について説明する図である。 拡張Feistel構造の実装効率を高めた構成について説明する図である。 拡張Feistel構造の実装効率を高めたハードウェア構成例について説明する図である。 3種類のF関数を効率的な実装とするための配置例について説明する図である。 データ系列d=2のFeistel構造とした2mnビットのブロック暗号構成を示す図である。 拡散行列切り替え機構(DSM)を満足するデータ系列数d=4の拡張Feistel構造を示す図である。 異なるビット数のブロック暗号を実行することを可能とした回路共有構成について説明する図である。 3種類のF関数F1,F2,F3のF関数を適用したデータ系列d=2のFeistel構造について説明する図である。 3種類のF関数F1,F2,F3を実行する暗号処理装置の構成例について説明する図である。 本発明に係る暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
符号の説明
101 入力データP(Plain-Left)
102 入力データP(Plain-Right)
103 ラウンド鍵
104 排他的論理和部
120 F関数
121 Sボックス(S−box)
122 線形変換部
250 暗号処理装置
251 第1F関数専用処理回路
252 第2F関数専用処理回路
253 制御回路
254 補助回路
271 第1F関数専用処理回路
272 第2F関数専用処理回路
273 制御回路
274 補助回路
281 第1F関数専用処理回路
282 第2F関数専用処理回路
283 第3F関数専用処理回路
284 制御回路
285 補助回路
300 ICモジュール
301 CPU(Central processing Unit)
302 メモリ
303 暗号処理部
304 乱数発生器
305 送受信部

Claims (20)

  1. 暗号処理装置であり、
    非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有し、
    前記暗号処理部は、
    データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行する構成であり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用する構成を有し、
    前記2以上の複数の異なる行列は、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列であり、
    前記複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置した構成を有することを特徴とする暗号処理装置。
  2. 前記暗号処理部において利用される前記複数の異なる行列は、
    拡張Feistel構造の各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記暗号処理部において利用される前記複数の異なる行列は、
    拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記暗号処理部において利用される前記複数の異なる行列は、
    拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする請求項1に記載の暗号処理装置。
  5. 前記暗号処理部は、
    前記複数の異なる行列を、n個(ただし、nは2以上の整数)の異なる行列、
    ,M,・・Mn−1としたとき、
    これらの異なる行列M,M,・・Mn−1を、拡張Feistel構造の各データ系列に入力するF関数に順番に繰り返し配置した構成を有することを特徴とする請求項1に記載の暗号処理装置。
  6. 前記暗号処理部は、
    1つのラウンドに1つのF関数のみを実行する拡張Feistel構造を適用した暗号処理を実行する構成であることを特徴とする請求項1〜5いずれかに記載の暗号処理装置。
  7. 前記暗号処理部は、
    1つのラウンドに複数のF関数を並列に実行する拡張Feistel構造を適用した暗号処理を実行する構成であることを特徴とする請求項1〜5いずれかに記載の暗号処理装置。
  8. 前記暗号処理部は、
    a≧2の任意の整数、x≧1の任意の整数としたとき、前記複数の異なる行列による異なる線形変換処理を実行するa種類のF関数を利用したデータ系列数:d=2axの拡張Fesitel構造を適用した暗号処理を実行する構成であり、
    1つのラウンドにおいて、全種類(a種類)のF関数を均等にx個ずつ実行する構成であることを特徴とする請求項1〜5いずれかに記載の暗号処理装置。
  9. 前記暗号処理部は、
    1つのラウンドにおいて並列に実行するax個のF関数を実行するF関数実行部と、
    前記F関数実行部に対するデータ入出力制御を実行する制御部とを備えた構成であることを特徴とする請求項8に記載の暗号処理装置。
  10. 前記暗号処理部は、
    前記複数の異なる行列による異なる線形変換処理を実行する複数のF関数実行部と、
    前記複数のF関数実行部の利用シーケンスを設定に応じて変更する制御部とを備え、
    前記制御部は、
    (a)データ系列数d=2としたFeistel構造による暗号処理、または、
    (b1)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて1つのF関数の実行のみを許容した暗号処理、または、
    (b2)データ系列数d≧2の任意数とした拡張Feistel構造であり、各ラウンドにおいて複数のF関数の並列実行を許容した暗号処理、
    上記(a),(b1),(b2)のいずれかの暗号処理を選択的に実行する構成であることを特徴とする請求項1〜5いずれかに記載の暗号処理装置。
  11. 前記制御部は、
    暗号化または復号処理の対象となるデータのビット長に応じて、実行する処理形態を選択する構成であることを特徴とする請求項10に記載の暗号処理装置。
  12. 暗号処理装置において、暗号処理を実行する暗号処理方法であり、
    暗号処理部において、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理ステップを有し、
    前記暗号処理ステップは、
    データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行するステップであり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用した演算を実行する演算ステップを有し、
    前記演算ステップにおいて適用する複数の異なる行列は、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列であり、
    前記演算ステップは、
    拡張Feistel構造の各データ系列に入力するF関数において、前記複数の異なる行列に基づく線形変換演算を実行するステップであることを特徴とする暗号処理方法。
  13. 前記複数の異なる行列は、
    拡張Feistel構造の各データ系列s(i)に入力する連続するk個(ただし、kは2以上の整数)のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする請求項12に記載の暗号処理方法。
  14. 前記複数の異なる行列は、
    拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする請求項12に記載の暗号処理方法。
  15. 前記複数の異なる行列は、
    拡張Feistel構造の各データ系列s(i)に入力する連続する2個のF関数に含まれる線形変換行列に基づいて算出されるデータ系列対応の最小分岐数[B (s(i))]中から選択される全データ系列中の最小分岐数[B ]が3以上となる条件を満足する複数の異なる行列であることを特徴とする請求項12に記載の暗号処理方法。
  16. 前記複数の異なる行列を、n個(ただし、nは2以上の整数)の異なる行列、
    ,M,・・Mn−1としたとき、
    前記演算ステップは、
    拡張Feistel構造の各データ系列に入力するF関数において、これらの異なる行列M,M,・・Mn−1を順番に繰り返し実行するステップであることを特徴とする請求項12に記載の暗号処理方法。
  17. 前記暗号処理ステップは、
    1つのラウンドに1つのF関数のみを実行する拡張Feistel構造を適用した暗号処理を実行するステップであることを特徴とする請求項12〜16いずれかに記載の暗号処理方法。
  18. 情報処理装置において暗号処理アルゴリズムを構築する暗号処理アルゴリズム構築方法であり、
    情報処理装置における制御部が、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理アルゴリズムの構成において、各ラウンドにおけるF関数において実行する線形変換処理に適用する少なくとも2以上の複数の異なる行列を決定する行列決定ステップと、
    前記制御部が、前記行列決定ステップにおいて決定した複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置する行列設定ステップを有し、
    前記行列決定ステップは、
    前記2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列を適用行列として決定する処理を実行するステップであることを特徴とする暗号処理アルゴリズム構築方法。
  19. 暗号処理装置において、暗号処理を実行させるコンピュータ・プログラムであり、
    暗号処理部において、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行させる暗号処理ステップを有し、
    前記暗号処理ステップは、
    データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理を実行させるステップであり、各ラウンドにおけるF関数において実行する線形変換処理に、少なくとも2以上の複数の異なる行列を選択的に適用した演算を実行する演算ステップを含み、
    前記演算ステップにおいて適用する複数の異なる行列は、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列であり、
    前記演算ステップは、
    拡張Feistel構造の各データ系列に入力するF関数において、前記複数の異なる行列に基づく線形変換演算を実行するステップであることを特徴とするコンピュータ・プログラム。
  20. 情報処理装置において暗号処理アルゴリズムを構築させるコンピュータ・プログラムであり、
    情報処理装置における制御部に、データ系列数:dをd≧2の整数とした拡張Feistel構造を適用した暗号処理アルゴリズムの構成において、各ラウンドにおけるF関数において実行する線形変換処理に適用する少なくとも2以上の複数の異なる行列を決定させる行列決定ステップと、
    前記制御部に、前記行列決定ステップにおいて決定した複数の異なる行列を、拡張Feistel構造の各データ系列に入力するF関数に繰り返し配置させる行列設定ステップを有し、
    前記行列決定ステップは、
    前記2以上の複数の異なる行列として、拡張Feistel構造の各データ系列に入力するF関数に含まれる線形変換行列に基づくデータ系列対応の最小分岐数中から選択される全データ系列中の最小分岐数が予め定めた値以上となる条件を満足する複数の異なる行列を適用行列として決定する処理を実行するステップであることを特徴とするコンピュータ・プログラム。
JP2006224674A 2006-07-28 2006-08-21 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP4882598B2 (ja)

Priority Applications (13)

Application Number Priority Date Filing Date Title
JP2006224674A JP4882598B2 (ja) 2006-07-28 2006-08-21 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
EP07790851.5A EP2048641B1 (en) 2006-07-28 2007-07-17 Encryption processing device, method for building encryption process algorithm, encryption processing method, and computer program
KR1020097001363A KR101364192B1 (ko) 2006-07-28 2007-07-17 암호처리장치, 암호처리 알고리즘 구축방법 및 암호처리방법과 컴퓨터·프로그램
BRPI0715646-4A BRPI0715646A2 (pt) 2006-07-28 2007-07-17 aparelho e mÉtodo de processamento por criptografia, mÉtodo de construÇço de algoritmo de processamento por criptografia, e, programa de computador
US12/375,410 US8295478B2 (en) 2006-07-28 2007-07-17 Cryptographic processing apparatus, algorithm constructing method, processing method, and computer program applying an extended feistel structure
CN2007800280570A CN101496080B (zh) 2006-07-28 2007-07-17 密码处理装置、密码处理算法构建方法和密码处理方法
RU2009102664/09A RU2409902C2 (ru) 2006-07-28 2007-07-17 Устройство криптографической обработки, способ построения алгоритма криптографической обработки, способ криптографической обработки и компьютерная программа
PCT/JP2007/064089 WO2008013076A1 (fr) 2006-07-28 2007-07-17 Dispositif de traitement par cryptage, procédé d'établissement d'un algorithme de traitement par cryptage, procédé de traitement par cryptage et programme informatique
MYPI20090165 MY151698A (en) 2006-07-28 2007-07-17 Cryptographic processing apparatus, algorithm constructing method, processing method, and computer program applying an extended feistel structure
CN201310020891.2A CN103078734B (zh) 2006-07-28 2007-07-17 解密处理装置、方法和信息处理装置
CN201010219870.XA CN101908958B (zh) 2006-07-28 2007-07-17 密码处理装置、方法、算法构建方法和信息处理装置
TW096126283A TW200821999A (en) 2006-07-28 2007-07-19 Encryption processing device, method for building encryption process algorithm, encryption processing method, and computer program
HK09111002.4A HK1131252A1 (en) 2006-07-28 2009-11-25 Cryptographic processing apparatus, cryptographic-processing-algorithm constructing method, and cryptographic processing method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006206376 2006-07-28
JP2006206376 2006-07-28
JP2006224674A JP4882598B2 (ja) 2006-07-28 2006-08-21 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム

Publications (3)

Publication Number Publication Date
JP2008051829A JP2008051829A (ja) 2008-03-06
JP2008051829A5 JP2008051829A5 (ja) 2009-08-27
JP4882598B2 true JP4882598B2 (ja) 2012-02-22

Family

ID=38981389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006224674A Expired - Fee Related JP4882598B2 (ja) 2006-07-28 2006-08-21 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (11)

Country Link
US (1) US8295478B2 (ja)
EP (1) EP2048641B1 (ja)
JP (1) JP4882598B2 (ja)
KR (1) KR101364192B1 (ja)
CN (3) CN101496080B (ja)
BR (1) BRPI0715646A2 (ja)
HK (1) HK1131252A1 (ja)
MY (1) MY151698A (ja)
RU (1) RU2409902C2 (ja)
TW (1) TW200821999A (ja)
WO (1) WO2008013076A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
US8731189B2 (en) 2009-10-27 2014-05-20 Nec Corporation Information processing device, information processing method
US8369515B2 (en) * 2010-03-18 2013-02-05 Chiou-Haun Lee Cryptographic method of multilayer diffusion in multidimension
JP5424974B2 (ja) * 2010-04-27 2014-02-26 三菱電機株式会社 暗号処理システム、鍵生成装置、暗号化装置、復号装置、署名処理システム、署名装置及び検証装置
US20120079462A1 (en) * 2010-09-24 2012-03-29 SoftKrypt LLC Systems and methods of source software code obfuscation
FR2966953B1 (fr) * 2010-11-02 2015-08-28 St Microelectronics Rousset Procede de contremesure cryptographique par derivation d'une donnee secrete
JP5929757B2 (ja) * 2010-11-15 2016-06-08 日本電気株式会社 暗号処理装置および暗号処理方法
JP5605197B2 (ja) * 2010-12-09 2014-10-15 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5682526B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 データ処理装置、およびデータ処理方法、並びにプログラム
JP5682527B2 (ja) 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5682525B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5813380B2 (ja) 2011-06-03 2015-11-17 株式会社東芝 半導体記憶装置
TWI451741B (zh) * 2012-03-19 2014-09-01 Chiou Haun Lee 以xor運算於三方通訊之加解密方法
KR101330664B1 (ko) 2012-06-15 2013-11-15 한국전자통신연구원 저전력 암호화 장치 및 방법
KR101989813B1 (ko) * 2012-06-29 2019-06-18 펜타시큐리티시스템 주식회사 특정 포맷을 가지는 대체 데이터의 생성 및 검증
US10142099B2 (en) * 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
TWI510046B (zh) * 2013-07-04 2015-11-21 Univ Nat Cheng Kung 認證式加解密方法
JP2015191106A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US10341090B2 (en) * 2014-10-14 2019-07-02 Sony Corporation Cipher processing apparatus and cipher processing method
JP6292107B2 (ja) * 2014-12-01 2018-03-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
CN105763316A (zh) * 2016-02-01 2016-07-13 苏州中科启慧软件技术有限公司 基于分组密码vhf和ctr模式的轻量级流密码技术cvhf
JP6877889B2 (ja) * 2016-04-08 2021-05-26 ソニーグループ株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
CN112487410A (zh) * 2020-12-02 2021-03-12 中国电子科技集团公司第三十研究所 基于循环移位和异或运算构造密码结构模型的方法
CN114024663B (zh) * 2021-11-24 2023-06-02 中国电子科技集团公司第三十研究所 基于smt的线性扩散层分支数测评方法、设备及介质

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4195200A (en) * 1976-06-30 1980-03-25 International Business Machines Corporation Key controlled block-cipher cryptographic system employing a multidirectional shift matrix
US4316055A (en) * 1976-12-30 1982-02-16 International Business Machines Corporation Stream/block cipher crytographic system
JP2927079B2 (ja) * 1991-10-02 1999-07-28 松下電器産業株式会社 データ暗号化方法およびデータ暗号化装置
CN1136692C (zh) * 1995-09-05 2004-01-28 三菱电机株式会社 数据变换装置及数据变换方法
US5740249A (en) * 1996-04-09 1998-04-14 Kabushiki Kaisha Toshiba Encryption apparatus and method capable of controlling encryption process in accordance with an internal state
US6182216B1 (en) * 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
EP1052611B9 (en) * 1998-01-27 2007-02-14 Nippon Telegraph and Telephone Corporation Data converter and recording medium on which program for executing data conversion is recorded
US6185679B1 (en) * 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
CN1130944C (zh) 1998-04-17 2003-12-10 松下电器产业株式会社 无线通信装置及传输速率控制方法
WO1999063706A1 (en) * 1998-06-02 1999-12-09 Nippon Telegraph And Telephone Corporation Device and method for evaluating randomness of function, device and method for generating random function, and recorded medium on which programs for implementing these methods are recorded
US6189095B1 (en) * 1998-06-05 2001-02-13 International Business Machines Corporation Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks
US6269163B1 (en) * 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
US7346161B2 (en) * 2000-01-26 2008-03-18 Fujitsu Limited Method and apparatus for designing cipher logic, and a computer product
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
ES2616544T3 (es) * 2000-03-09 2017-06-13 Mitsubishi Denki Kabushiki Kaisha Aparato de cifrado en bloques y método de cifrado en boques que incluye un esquema de claves rotacional
US7305085B2 (en) * 2000-06-30 2007-12-04 Kabushiki Kaisha Toshiba Encryption apparatus and method, and decryption apparatus and method based on block encryption
DE60111746T2 (de) * 2000-08-03 2006-05-18 Koninklijke Philips Electronics N.V. Lineartransformation für symmetrische verschlüsselungssysteme
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
JP2003098959A (ja) * 2001-09-21 2003-04-04 Toshiba Corp 暗号処理装置
US7236592B2 (en) * 2002-02-01 2007-06-26 International Business Machines Corporation Efficient stream cipher system and method
AU2003298560A1 (en) * 2002-08-23 2004-05-04 Exit-Cube, Inc. Encrypting operating system
JP4357815B2 (ja) * 2002-09-11 2009-11-04 株式会社東芝 暗号演算回路
FR2851862B1 (fr) * 2003-02-27 2006-12-29 Radiotelephone Sfr Procede de generation d'une permutation pseudo-aleatoire d'un mot comportant n digits
AU2004201807A1 (en) * 2003-05-09 2004-11-25 Nor Azman Bin Abu Method and apparatus for the generation of public key based on a user-defined ID in a cryptosystem
JP4622222B2 (ja) * 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7415616B2 (en) * 2004-01-21 2008-08-19 National Institute Of Information And Communications Technology Cipher strength evaluation apparatus
US7460665B2 (en) * 2004-01-21 2008-12-02 National Institute Of Information And Communications Technology Cipher strength evaluation apparatus
US7289629B2 (en) * 2004-02-09 2007-10-30 Microsoft Corporation Primitives for fast secure hash functions and stream ciphers
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
EP1646174A1 (en) * 2004-10-07 2006-04-12 Axalto SA Method and apparatus for generating cryptographic sets of instructions automatically and code generation
JP5026275B2 (ja) * 2004-10-28 2012-09-12 イルデト・コーポレート・ビー・ヴイ 暗号化関数を難読化するための方法及びシステム
KR100855958B1 (ko) * 2004-11-24 2008-09-02 삼성전자주식회사 해밍거리를 이용한 부가 채널 공격에 안전한 암호화시스템 및 방법
JP4622807B2 (ja) * 2005-03-25 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007192893A (ja) * 2006-01-17 2007-08-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) * 2006-01-24 2007-08-09 Sony Corp 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
IL174784A0 (en) * 2006-04-04 2006-12-31 Nds Ltd Robust cipher design
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) * 2006-09-01 2012-10-17 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5023624B2 (ja) * 2006-09-01 2012-09-12 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) * 2006-09-01 2012-06-27 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) * 2006-09-01 2012-03-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) * 2006-09-01 2012-07-04 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
WO2009075337A1 (ja) * 2007-12-13 2009-06-18 Nec Corporation 暗号化方法及び復号化方法、装置並びにプログラム
US20110110519A1 (en) * 2008-01-09 2011-05-12 Tomoyasu Suzaki Data transmission device, data reception device, methods thereof, recording medium, and data communication system therefor
JP5532560B2 (ja) * 2008-08-25 2014-06-25 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム

Also Published As

Publication number Publication date
JP2008051829A (ja) 2008-03-06
BRPI0715646A2 (pt) 2013-03-26
CN101908958A (zh) 2010-12-08
TWI340367B (ja) 2011-04-11
EP2048641A4 (en) 2017-04-19
CN101908958B (zh) 2014-01-29
EP2048641A1 (en) 2009-04-15
RU2009102664A (ru) 2010-10-27
WO2008013076A1 (fr) 2008-01-31
CN101496080A (zh) 2009-07-29
TW200821999A (en) 2008-05-16
HK1131252A1 (en) 2010-01-15
CN103078734A (zh) 2013-05-01
MY151698A (en) 2014-06-30
KR20090052850A (ko) 2009-05-26
EP2048641B1 (en) 2019-05-22
KR101364192B1 (ko) 2014-02-19
CN103078734B (zh) 2016-03-09
US8295478B2 (en) 2012-10-23
RU2409902C2 (ru) 2011-01-20
CN101496080B (zh) 2010-09-01
US20100061548A1 (en) 2010-03-11

Similar Documents

Publication Publication Date Title
JP4882598B2 (ja) 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4622807B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR101091749B1 (ko) 암호 처리 장치, 암호 처리 방법 및 기록매체
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
TWI595460B (zh) Data processing device, information processing device, data processing method and program
WO2008026625A1 (fr) Dispositif de codage, procédé de codage et programme informatique
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2009175167A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5223245B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2010134247A (ja) 共通鍵ブロック暗号評価装置、共通鍵ブロック暗号評価方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090710

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090710

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111121

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

Free format text: PAYMENT UNTIL: 20141216

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4882598

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees