JP4961909B2 - 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents

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

Info

Publication number
JP4961909B2
JP4961909B2 JP2006238228A JP2006238228A JP4961909B2 JP 4961909 B2 JP4961909 B2 JP 4961909B2 JP 2006238228 A JP2006238228 A JP 2006238228A JP 2006238228 A JP2006238228 A JP 2006238228A JP 4961909 B2 JP4961909 B2 JP 4961909B2
Authority
JP
Japan
Prior art keywords
key
intermediate key
unit
round
conversion
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
JP2006238228A
Other languages
English (en)
Other versions
JP2008058831A (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
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006238228A priority Critical patent/JP4961909B2/ja
Priority to TW096130941A priority patent/TW200828196A/zh
Priority to PCT/JP2007/066733 priority patent/WO2008026625A1/ja
Priority to EP07806210A priority patent/EP2058784A1/en
Priority to US12/439,544 priority patent/US8369522B2/en
Priority to CN201110091269.1A priority patent/CN102158337B/zh
Priority to CN200780032112.3A priority patent/CN101512619B/zh
Publication of JP2008058831A publication Critical patent/JP2008058831A/ja
Application granted granted Critical
Publication of JP4961909B2 publication Critical patent/JP4961909B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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
    • 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
    • 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
    • H04L2209/122Hardware reduction or efficient architectures
    • 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
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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

本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
代表的な共通鍵ブロック暗号のアルゴリズムとしては,例えば過去に米国標準暗号であったDES(Data Encryption Standard)アルゴリズム,現在の米国標準暗号であるAES(Advanced Encryption Standard)アルゴリズムなどが知られている。
このような、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有する暗号処理部と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部とによって構成される。鍵スケジュール部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた拡大鍵を生成し、生成した拡大鍵に基づいて、暗号処理部の各ラウンド関数部で適用するラウンド鍵(副鍵)を生成する。
このようなアルゴリズムを実行する具体的な構造として、線形変換部および非線形変換部を有するラウンド関数を繰り返し実行する構造が知られている。例えば代表的な構造にFeistel構造がある。Feistel構造は、データ変換関数としてのラウンド関数(F関数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関数(F関数)においては、線形変換処理および非線形変換処理が実行される。なお、Feistel構造を適用した暗号処理について記載した文献としては、例えば非特許文献1、非特許文献2がある。
しかし、この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになり、実用上、大きな問題となる。
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
本発明は、上記問題点に鑑みてなされたものであり、暗号解析の困難性を高め、安全性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
前記鍵スケジュール部は、
前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大部とを有する構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵生成部は、前記暗号化関数に対して、前記秘密鍵と予め設定された定数を入力して暗号化処理を実行して中間鍵を生成する処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵生成部において適用する暗号化関数は、前記ラウンド関数を少なくとも1段以上含む構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵生成部において適用する暗号化関数は、前記暗号処理部で利用するFeistel構造を持つ複数段のラウンド関数を含む構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵生成部は、前記暗号処理部で利用する暗号化関数を並列に利用して、複数の中間鍵を生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵生成部は、前記暗号処理部で利用する暗号化関数の処理単位であるブロック長と同じビット数の秘密鍵を入力し、同一ビット数の中間鍵を生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵生成部は、前記暗号処理部で利用する暗号化関数の処理単位であるブロック長以上のビット数の秘密鍵を入力し、入力した秘密鍵のデータ変換を実行して、前記ブロック長と同一のビット数を持つ複数の秘密鍵変換データを生成し、該秘密鍵変換データを前記暗号化関数に入力して中間鍵を生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵拡大部は、前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データの少なくともいずれかを入力して全単射変換による秘密鍵全単射変換データを生成する第1データ変換処理部と、前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する第2データ変換処理部と、前記第1データ変換処理部の生成する秘密鍵全単射変換データと、前記第2データ変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算部を有し、前記第2データ変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記第1データ変換処理部において各ラウンド鍵の生成時に実行する全単射変換に適用する全単射関数の少なくとも一部を共通の全単射関数としたことを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記第2データ変換処理部において各ラウンド鍵の生成時に実行する全単射変換に適用する全単射関数の少なくとも一部を共通の全単射関数としたことを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記中間鍵拡大部は、前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成するデータ変換処理部と、前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記データ変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算部を有し、前記データ変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力する構成であることを特徴とする。
さらに、本発明の第2の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置における暗号処理方法であり、
鍵スケジュール部において、暗号処理部において実行されるラウンド関数の実行に適用するラウンド鍵を生成する鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理ステップを有し、
前記鍵生成ステップは、
中間鍵生成部において、前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成する中間鍵生成ステップと、
中間鍵拡大部において、前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大ステップと、
を有することを特徴とする暗号処理方法にある。
さらに、本発明の第3の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置において、暗号処理を実行させるコンピュータ・プログラムであり、
鍵スケジュール部において、暗号処理部において実行されるラウンド関数の実行に適用するラウンド鍵を生成させる鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる暗号処理ステップを有し、
前記鍵生成ステップは、
中間鍵生成部において、前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成させる中間鍵生成ステップと、
中間鍵拡大部において、前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成させる中間鍵拡大ステップと、
を実行させることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例の構成によれば、共通鍵ブロック暗号処理を実行する暗号処理装置の鍵スケジュール部において、暗号処理部で適用する暗号化関数を利用したラウンド鍵生成処理を行なう構成とした。具体的には、暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成し、中間鍵および秘密鍵等に基づく全単射変換を行った結果や、全単射変換データの排他的論理和演算結果をラウンド鍵に適用する。本構成により、安全性の保証された暗号化関数を利用して生成した中間鍵に基づくラウンド鍵の生成が実現され、安全性、すなわち鍵の解析困難性を高めることが可能となるとともに、暗号処理部の構成を利用した鍵生成により鍵スケジュール部の構成を簡略化することが可能となり実装効率を高めることが可能となる。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.共通鍵ブロック暗号の概要
2.鍵スケジュール部における中間鍵生成構成の概要
(2−1)鍵スケジュール部の詳細構成について
(2−2)各種の中間鍵生成処理構成について
3.本発明に従った中間鍵およびラウンド鍵生成処理および暗号処理構成
(3−1:第1カテゴリ)
ブロック長と同じビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
(3−1A)中間鍵生成部に差分攻撃に対する耐性を確保した暗号化関数E'を使用することで、related−key attack に対する安全性の向上を実現する中間鍵生成部の構成例について
(3−1B)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、暗号攻撃に対する耐性向上を実現する構成例について
(3−1C)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、安全性を落とさずに実装効率を高めた構成例について
(3−2:第2カテゴリ)
ブロック長の2倍までのビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
(3−2A)上記(3−1A〜C)の長所を備えた鍵スケジュール部の構成について
(3−2B)上記(3−1A〜C)の長所を備え、上記(3−2A)より高速処理可能とした鍵スケジュール部の構成について
4.暗号処理装置の構成例
[1.共通鍵ブロック暗号の概要]
まず、本発明の適用可能な共通鍵ブロック暗号の概要について説明する。本明細書において、共通鍵ブロック暗号(以下ではブロック暗号)は、以下に定義するものを指すものとする。
ブロック暗号は平文Pと鍵Kを入力し、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼びここではnで示す。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、予め1つに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。
鍵のビット長は、kで表す。鍵は任意の整数値を取りうる。共通鍵ブロック暗号アルゴリズムは1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムAはブロックサイズn=128であり、ビット長k=128、またはk=192またはk=256の各種の鍵サイズに対応するという構成もありうる。
平文[P]、暗号文[C]、鍵[K]の各ビットサイズは、以下のように示される。
平文P:nビット
暗号文C:nビット
鍵K:kビット
図1にkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムEの図を示す。図1に示すように、共通鍵ブロック暗号処理部E10は、nビットの平文Pと、kビットの鍵Kを入力して、予め定められた暗号アルゴリズムを実行して、nビットの暗号文Cを出力する。なお、図1には平文から暗号文を生成する暗号化処理を示しているが、暗号文から平文を生成する復号処理においても、同様の共通鍵ブロック暗号処理部E10が適用され、鍵の入力順などのシーケンスの変更によって復号処理がなされる。
図1に示す共通鍵ブロック暗号処理部E10の内部構成について、図2を参照して説明する。ブロック暗号は2つの部分に分けて考えることができる。ひとつは鍵Kを入力とし、ある定められたステップにより入力鍵Kのビット長を拡大して拡大鍵K'(ビット長k')を出力する鍵スケジュール部11と、平文Pと鍵スケジュール部11から入力する拡大鍵K'を受け取り、平文Pを入力して、拡大鍵K'を適用した暗号処理を実行して、暗号文Cを生成するためのデータの変換を実行する暗号処理部12である。なお、先に説明したように、暗号処理部12は、暗号文を平文に戻すデータ復号処理にも適用可能である。
次に、図2に示す暗号処理部12の詳細構成について図3を参照して説明する。暗号処理部12は、図3に示すように、ラウンド関数実行部20を適用したデータ変換を繰り返し実行する構成を持つ。すなわち、暗号処理部12は、ラウンド関数実行部20という処理単位に分割できる。ラウンド関数実行部20は入力として、前段のラウンド関数実行部の出力Xと、拡大鍵に基づいて生成されるラウンド鍵RKの2つのデータを受け取り、内部でデータ変換処理を実行して出力データXi+1を次のラウンド関数実行部に出力する。なお、第1ラウンドでは、入力は、平文または平文に対する初期化処理データである。また最終ラウンドの出力は暗号文となる。
図3示す例では、暗号処理部12は、r個のラウンド関数実行部20を有し、r回のラウンド関数実行部におけるデータ変換を繰り返して暗号文を生成する構成となっている。ラウンド関数の繰り返し回数をラウンド数と呼ぶ。図に示す例では、ラウンド数はrとなる。
各ラウンド関数実行部の入力データXは暗号化途中のnビットデータであり、あるラウンドにおけるラウンド関数の出力Xi+1が次のラウンドの入力として供給される。各ラウンド関数実行部のもう一つの入力データは鍵スケジュールから出力された拡大鍵のK'に基づくデータが用いられる。この各ラウンド関数実行部に入力され、ラウンド関数の実行に適用される鍵をラウンド鍵と呼ぶ。図で、iラウンドに適用するラウンド鍵をRKとして示している。拡大鍵K'は、例えば、rラウンド分のラウンド鍵RK〜RKの連結データとして構成される。
図3に示す構成は、暗号処理部12の入力側から見て1ラウンド目の入力データをXとし、i番目のラウンド関数から出力されるデータをX、ラウンド鍵をRKとして示した暗号処理部12の構成である。なお、この暗号処理部12において、例えば、適用するラウンド鍵の適用シーケンスを、暗号化処理と逆に設定することで暗号文を入力として、復号文を出力する構成とすることができる。
図3に示す暗号処理部12のラウンド関数実行部20は、さまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造(structure)によって分類できる。代表的な構造として、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
がある。以下、これらの具体的構成について、図4〜図6を参照して説明する。
(ア)SPN構造ラウンド関数
まず、図4を参照して、ラウンド関数実行部20の一構成例としてのSPN構造ラウンド関数について説明する。SPN構造ラウンド関数実行部20aは、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。図4に示すように、nビットの入力データすべてに対して、ラウンド鍵との排他的論理和(EXOR)演算を実行する排他的論理和演算部21、排他的論理和演算部21の演算結果を入力し、入力データの非線形変換を実行する非線形変換処理部22、非線形変換処理部22における非線形変換処理結果を入力し、入力データに対する線形変換処理を実行する線形変換処理部23などによって構成される。線形変換処理部23の線形変換処理結果が、次のラウンドに出力される。最終ラウンドでは暗号文となる。なお、図4に示す例では、排他的論理和演算部21、非線形変換処理部22、線形変換処理部23の処理順を示しているが、これらの処理部の順番は、限定されるものではなく、他のシーケンスで処理を行なう構成としてもよい。
(イ)Feistel構造
次に、図5を参照してラウンド関数実行部20の一構成例としてのFeistel(フェイステル)構造について説明する。Feistel構造は、図5に示すように、前ラウンドからの入力(第1ラウンドでは入力文)であるnビットの入力データをn/2ビットの2つのデータに分割して、各ラウンドにおいて入れ替えながら処理を実行する。
Feistel構造を持つラウンド関数実行部20bを適用した処理においては、図に示すように、一方のn/2ビットデータとラウンド鍵とがF関数部30に入力される。F関数部30は、上述したSPN構造と同様、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。
前ラウンドからのn/2ビットデータとラウンド鍵とがF関数部30の排他的論理和演算部31に入力され排他的論理和(EXOR)処理がなされる。さらに、この結果データを非線形変換処理部32に入力して非線形変換を実行し、さらに、この非線形変換結果が線形変換処理部33に入力され線形変換が実行される。この線形変換結果が、F関数処理結果データとして出力する。
さらに、このF関数出力と、前ラウンドから入力するもう1つのn/2ビット入力とを、排他的論理和演算部34に入力し、排他的論理和演算(EXOR)を実行して、実行結果を、次のラウンドにおけるF関数の入力として設定される。なお、図に示す第iラウンドにおけるF関数入力に設定されたn/2ビットは次のラウンドのF関数出力との排他的論理和演算に適用される。このように、Feistel構造は、各ラウンドにおいて入力を交互に入れ替えながらF関数を適用したデータ変換処理を実行する。
(ウ)拡張Feistel構造
次に、図6を参照してラウンド関数実行部20の一構成例としての拡張Feistel構造について説明する。先に、図5を参照して説明したFeistel構造は、nビットの平文を2つに分割してn/2ビットずつに区分して処理を実行していた。すなわち、分割数:d=2とした処理である。なお、この分割数は、データ系列数とも呼ばれる。
拡張Feistel構造では、このデータ系列数(分割数)dを2以上の任意の整数とした設定である。データ系列数(分割数)dの値に応じたさまざまな拡張Feistel構造を定義することができる。図6に示す例では、データ系列数(分割数)d=4であり、各系列に対してn/4ビットのデータが入力される。各ラウンドでは、1つ以上のラウンド関数としてのF関数が実行される。図に示す例は、1ラウンドにおいて2つのF関数部によるラウンド演算を行なう構成例である。
F関数部41,42の構成は、先に図5を参照して説明したF関数部30の構成と同様であり、ラウンド鍵と入力値との排他的論理和演算と、非線形変換処理、線形変換処理を実行する構成となっている。なお、各F関数部に入力するラウンド鍵は、入力ビットとビット数が一致するように調整される。図に示す例では、各F関数部41,42に入力するラウンド鍵は、n/4ビットとなる。これらの鍵は、拡大鍵を構成するラウント鍵をさらにビット分割して生成する。なお、データ系列数(分割数)をdとしたとき、各系列に入力されるデータはn/dビットであり、各F関数に入力する鍵のビット数もn/dビットに調整される。
なお、図6に示す拡張Feistel構造では、データ系列数(分割数)をdとして、各ラウンドにおいてd/2のF関数を並列に実行する構成例であるが、拡張Feistel構造は、各ラウンドにおいて、1つ以上d/2以下のF関数を実行する構成が可能である。
図4〜図6を参照して説明したように、共通鍵ブロック暗号における暗号処理部12のラウンド関数実行部20は、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの構造をとり得る。これらのラウンド関数実行部は、いずれも非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。すなわち、非線形変換処理を実行する非線形変換処理部と、線形変換処理を実行する線形変換処理部とを有する。以下、これらの変換処理構成について説明する。
(非線形変換処理部)
非線形変換処理部の具体例について、図7を参照して説明する。図7に示すように、非線形変換処理部50は、具体的には、Sボックス(S−box)51と呼ばれるsビット入力sビット出力の非線形変換テーブルがm個並んだものであり、msビットの入力データがsビットずつ分割されてそれぞれ対応するSボックス(S−box)51に入力されデータが変換される。各Sボックス51では、例えば変換テーブルを適用した非線形変換処理が実行される。
入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために、図7に示すように、処理対象データXを複数の単位に分割し、それぞれに対して、非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとしたとき、sビットずつのm個のデータに分割して、m個のSボックス(S−box)51それぞれに対してsビットを入力し、例えば変換テーブルを適用した非線形変換処理を実行して、これらの各Sビット出力m個を合成してmsビットの非線形変換結果を得る。
(線形変換処理部)
線形変換処理部の具体例について、図8を参照して説明する。線形変換処理部は、入力値、例えば、Sボックスからの出力データであるmsビットの出力値を入力値Xとして入力し、この入力に対して線形変換を施しmsビットの結果を出力する。線形変換処理は、例えば、入力ビット位置の入れ替え処理などの線形変換処理を実行して、msビットの出力値Yを出力する。線形変換処理は、例えば、入力に対して、線形変換行列を適用して入力ビット位置の入れ替え処理を行なう。この行列の一例が図8に示す線形変換行列である。
線形変換処理部において適用する線形変換行列の要素は拡大体:GF(2)の体の要素やGF(2)の要素など、一般的にはさまざまな表現を適用した行列として構成できる。図8は、msビット入出力をもち、GF(2)の上で定義されるm×mの行列により定義される線形変換処理部の1つの構成例を示すものである。
[2.鍵スケジュール部における中間鍵生成構成の概要]
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を行なう構成である。この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになり、実用上、大きな問題となる。
上述した説明から明らかなように、共通鍵ブロック暗号においては、各ラウンドにおいて拡大鍵に基づいて生成されるラウンド鍵を適用した処理がなされる。暗号攻撃では、ラウンド鍵の解析に基づいて拡大鍵を復元し、さらに拡大鍵の元データである秘密鍵を解析するといった手順の攻撃が行なわれる場合がある。まず、本発明の構成の説明の前に、鍵スケジュール部における中間鍵生成構成の概要について説明する。
以下の各項目に従って、説明を行なう。
(2−1)鍵スケジュール部の詳細構成について
(2−2)各種の中間鍵生成処理構成について
(2−1)鍵スケジュール部の詳細構成について
まず、鍵スケジュール部の詳細構成について説明する。先に、例えば図2を参照して説明したように、共通鍵ブロック暗号においては、鍵スケジュール部が、入力鍵Kのビット長を拡大して拡大鍵K'(ビット長k')を出力し、拡大鍵に基づいて生成されるラウンド鍵RKを適用したラウンド関数が実行される。
鍵スケジュール部は、例えば、k−bitの秘密鍵Kを入力として、ある定められた変換によりk'−bitの拡大鍵(ラウンド鍵)K'を生成する。一般的にはk<k'であり、例えば、共通鍵ブロック暗号AESにおいては、
秘密鍵Kのビット数:k=128の場合、
拡大鍵(ラウンド鍵)K'のビット数:k'=1408(=128x11)、
とした拡大鍵生成処理を実行する。
また、共通鍵ブロック暗号Camelliaにおいては、
秘密鍵Kのビット数:k=128の場合、
拡大鍵(ラウンド鍵)K'のビット数:k'=1664(=128x13)
とした拡大鍵生成処理を実行する。
なお、拡大鍵は、暗号処理部のラウンド関数に入力されるためラウンド鍵とも呼ばれる。また、ラウンド関数以外にも、最初のラウンド関数の前の演算(排他的論理和(EXOR))に適用する初期鍵や、最後のラウンド関数の後の演算(排他的論理和(EXOR))に適用する最終鍵も含めてラウンド鍵と呼ぶこともある。これらの鍵も鍵スケジュール部の生成する拡大鍵に基づいて生成される。
一般的に鍵スケジュール部には、暗号化処理に適用する暗号化拡大鍵を生成する暗号化鍵スケジュール部と、復号処理に適用する復号拡大鍵を生成する復号鍵スケジュール部とが存在し、それぞれの処理に対応する拡大鍵を生成する。図9および図10を参照して暗号化処理と復号処理のそれぞれに適用される暗号化鍵スケジュール部と、復号鍵スケジュール部の構成および処理について説明する。
例えば、図9は、平文Pを入力してラウンド関数を適用したブロック暗号を実行して暗号文Cを出力する暗号化構成であり、例えば、k−bitの秘密鍵[K]111が、暗号化鍵スケジュール部112に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、ラウンド鍵生成用データとしてのk'−bitの暗号化拡大鍵EK113を生成する。さらに、暗号化拡大鍵EK113に基づいてラウンド鍵を生成し、データ暗号化部114に供給する。データ暗号化部114では、r段のラウンド関数においてラウンド鍵を適用したデータ変換による暗号化が実行され、平文Pから暗号文Cを生成する。
図10は、復号処理構成を示している。k−bitの秘密鍵[K]121は、復号鍵スケジュール部122に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、ラウンド鍵生成用データとしてのk'−bitの復号拡大鍵DK123を生成する。なお、秘密鍵[K]121は暗号化処理において適用した図9に示す秘密鍵[K]111と同じ鍵が適用される。さらに、復号拡大鍵DK123に基づいてラウンド鍵を生成し、データ復号部124に供給する。データ復号部124では、r段のラウンド関数においてラウンド鍵を適用したデータ変換による復号が実行され、暗号文Cから平文Pを生成する。
さらに細かく見ると、暗号化拡大鍵EK、復号拡大鍵DKはそれぞれラウンド鍵RKi(iはラウンド番号)に分割され、データ暗号化部、データ復号部それぞれのラウンド関数に挿入される。図11に、暗号化拡大鍵EKとラウンド鍵との対応を示す。データ暗号化部114は、例えばr段をラウンド数としたブロック暗号を実行する構成であり、暗号化の場合に、1からr段目までのラウンド関数に、暗号化拡大鍵EK113に基づいて生成されるラウンド鍵115{RK,RK,・・・,RKr−1,RK}が順に入力されてラウンド関数(F関数)が実行される。復号処理においては、この鍵のシーケンスを逆としてラウンド関数が実行される。
なお、図11に示すラウンド関数以外にもラウンド鍵が適用される場合がある。例えば共通鍵ブロック暗号のアルゴリズムの1つとして知られるAES(Advanced Encryption Standard)アルゴリズムでは、key−whiteningと呼ばれる処理が実行される。すなわち、最後のラウンド関数の後にラウンド鍵が入力され、ラウンド鍵と処理データとの排他的論理和演算(EXOR)が実行される。また、共通鍵ブロック暗号のアルゴリズムの1つとして知られるCamelliaでは、key−whiteningとして、最初のラウンド関数の前と最後のラウンド関数の後にそれぞれラウンド鍵が入力され、ラウンド鍵と処理データとの排他的論理和演算(EXOR)が実行される。
key−whitening鍵とは最初のラウンド関数の前、もしくは最後のラウンド関数の後に実行される排他論理和演算(EXOR)に適用されるラウンド鍵のことをいう。また、最初のラウンド関数の前に利用されるラウンド鍵(key−whitening鍵)を初期鍵ともいい、最後のラウンド関数の後に利用されるラウンド鍵(key−whitening鍵)を最終鍵ともいう。
鍵解析を行なう暗号攻撃に対する耐性の高い、すなわち鍵解析を困難として安全性を高めた構成とするための、ラウンド鍵が満たす理想的な性質としては以下の性質がある。
(a)等価鍵が存在しないこと
(b)関連鍵攻撃(related key attack)に対して十分な耐性を持つこと
ここで等価鍵とは厳密には、Pを変化させても常にE(RK)=E(RK)を満たすような秘密鍵の組K、K(K≠K)のことである。なお、平文Pに対して暗号化関数Eを適用して秘密鍵Kで暗号化した結果CをC=E(RK)とする。
E(RK)=E(RK
は、任意の平文Pに対して、異なる秘密鍵K、K(K≠K)を利用してできた暗号化データが等しくなってしまうことを意味している。
このような等価鍵が存在した場合、秘密鍵を解析する際に行なわれる全数探索攻撃を行う際の計算量が減らせてしまうため、安全性が低下する。よって、この等価鍵の非存在性を示せることが望ましいが、厳密な意味での等価鍵の非存在性を示すことは困難である。したがって、以降では拡大鍵K'が等しくなるような異なる秘密鍵K、Kの組を等価鍵と再定義し、この等価鍵の非存在性について議論を行う。
また、related−key attack(関連鍵攻撃)とは、未知の鍵Kを用いて暗号化された暗号文Cと、Kとある関係を持つ鍵、
K'=f(K)
を用いて暗号化された暗号文C'との関係を用いて未知の鍵Kを推定する攻撃法である。攻撃者はKとK'の間の関係を攻撃が成立する様に選ぶ。多くの場合、KとK'の間の関係を示す関数fは、なんらかの差分を表す。つまりKとK'との排他的論理和演算:K(EXOR)K'=ΔKとなるK'を入力したときに、Kから生成される拡大鍵RK、K'から生成される拡大鍵RK'との間にも明らかな差分ΔRK(=RK(EXOR)RK')が現れてしまうような場合、攻撃が適用できる可能性が高い。逆に、KとK'にどんな差分を入れたとしてもRK、RK'間に強い相関を持つようなデータを作ることが難しい場合は、攻撃は難しいと言える。なお、A(EXOR)Bは、AとBとの排他的論理和演算を意味するものとする。
さらに鍵スケジュール部には実装上、以下のような特性も要求される。
(1)実装が容易であること
(2)秘密鍵から拡大鍵を生成するセットアップ時間が短いこと
(3)暗号化鍵スケジュール部、復号鍵スケジュール部ができる限り共有可能であること
(4)データ暗号化部、データ復号部とできる限り共有可能であること
(5)鍵長の変更に容易に対応できること
鍵スケジュール部は安全性、および実装の観点からこれらの特性をバランスよく満たすことが望まれる。
(2−2)各種の中間鍵生成処理構成について
この拡大鍵生成部には、AESで用いられているような繰り返し型方式や、Camelliaで用いられているような中間鍵生成方式などがある。まず、これらの中間鍵生成方式について説明する。
まず、例えば、AESで用いられている繰り返し型方式について、図12を参照して説明する。繰り返し型方式は、図12に示すように鍵スケジュール部(拡大鍵生成部)130が、ラウンド鍵生成部131−1〜rと呼ばれる関数をラウンド毎、もしくは適切な回数適用することにより、秘密鍵から複数のラウンド鍵RK,RK,RK,・・・,RKからかる拡大鍵K'を生成する。
この方式では、多くの場合、秘密鍵Kから即座に初期の拡大鍵K'を生成でき、さらに初期拡大鍵K'から次の拡大鍵K''も容易に計算することができるため、高速な拡大鍵生成が可能となる。しかしながら、鍵スケジュール部(拡大鍵生成部)130に設定するラウンド鍵生成部131−1〜rの構成にも因るが、ラウンド鍵生成部131−1〜rとして、一般的な非線形処理を実行するラウンド鍵生成部を使用している場合は、このラウンド鍵生成部の実行回数によって、使用される拡大鍵の拡散性に差が生じる可能性がある。つまり、ラウンド鍵生成部が1回適用されただけの拡大鍵と2回、3回と繰り返し適用された拡大鍵ではその特性が異なる可能性がある。また、復号拡大鍵を生成する際は、暗号化拡大鍵生成時と異なる動作を要求される場合もある。
例えば、図12に示すラウンド鍵生成部131−1〜rの単純な繰り返し型方式では、秘密鍵Kに何らかの差分を与えることにより、ラウンド鍵RK1に任意の差分を与えることが可能となる場合がある。このような差分がラウンド鍵に付与されると、related−key attack が成功してしまう可能性があり、安全性が低下する。実際、ブロック暗号AESの鍵スケジュール部は、related−key rectangle attackに対してあまり強くないことが知られている。
次に、Camelliaで用いられているような中間鍵生成方式について、図13を参照して説明する。中間鍵生成方式は、図13に示すように、鍵スケジュール部(拡大鍵生成部)140に、中間鍵生成関数141と、中間鍵拡大関数142を設定し、まず秘密鍵K(k−bit)を中間鍵生成関数141に入力して、中間鍵MK(m−bit)を生成し、さらに中間鍵MKともとの秘密鍵Kの両者を中間鍵拡大関数142に入力して、拡大鍵K'(k'−bit)を得る構成を持つ。
中間鍵生成関数141の詳細構成例を図14に示す。図14に示す例は、共通鍵暗号Camelliaの鍵スケジュール部における中間鍵生成関数141の詳細構成例である。この構成では、中間鍵生成関数141を適用して一度中間鍵を生成し、これをメモリなどに保持しておけば、その生成済みの中間鍵を利用して容易に拡大鍵を生成できるという実装上のメリットも得られる。
しかし、この中間鍵生成方式では、通常、中間鍵生成関数に最低限の攪拌性を満たす関数を設定する構成であり、十分な攪拌性を得られるとは限らず、前述のrelated−keyなどの攻撃に対しての耐性は確保されているとは言えなかった。また、中間鍵拡大関数ではもとの鍵長Kよりも大きな値を取り扱うためハードウェア上で値を操作するための大きいレジスタが必要となってしまうといったデメリットがある。
[3.本発明に従った中間鍵およびラウンド鍵生成処理および暗号処理構成]
本発明においては、上述した鍵スケジュール部の問題点を解決し、鍵解析の困難性を高めて安全性を高めるとともに、実装上も有利な構成を持つ鍵スケジュール部の構成を持つ暗号処理装置を提案する。
本発明において提案する構成は、拡大鍵、すなわちラウンド鍵の生成を行なう鍵スケジュール部の構成であり、基本的には、kビットの秘密鍵Kを入力して、拡大鍵、すなわちラウンド鍵を生成する鍵スケジュール部の構成である。ラウンド鍵は、暗号化処理または復号処理を実行する暗号処理部に入力されて、各ラウンド関数において適用される。暗号処理部における暗号処理対象として処理されるデータは、例えば、先に図1、図2を参照して説明したように、所定ビット長、例えば64ビッ、128ビットなどの所定ビット長のブロック単位で暗号処理が行なわれることになる。
以下では、本発明に係る鍵スケジュール部(拡大鍵生成部)の構成例として、2つのカテゴリに区分して説明する。
(3−1:第1カテゴリ)
ブロック長と同じビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
(3−2:第2カテゴリ)
ブロック長の2倍までのビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
さらに、上記第1、第2カテゴリについて、以下に示す構成単位で、本発明の実施例を説明する。
(3−1:第1カテゴリ)
ブロック長と同じビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
(3−1A)中間鍵生成部に差分攻撃に対する耐性を確保した暗号化関数E'を使用することで、related−key attack に対する安全性の向上を実現する中間鍵生成部の構成例について
(3−1B)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、暗号攻撃に対する耐性向上を実現する構成例について
(3−1C)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、安全性を落とさずに実装効率を高めた構成例について
(3−2:第2カテゴリ)
ブロック長の2倍までのビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
(3−2A)上記(3−1A〜C)の長所を備えた鍵スケジュール部の構成について
(3−2B)上記(3−1A〜C)の長所を備え、上記(3−2A)より高速処理可能とした鍵スケジュール部の構成について
以下、各項目について、順次説明する。
(3−1:第1カテゴリ)
ブロック長と同じビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
(3−1A)中間鍵生成部に差分攻撃に対する耐性を確保した暗号化関数E'を使用することで、related−key attack に対する安全性の向上を実現する中間鍵生成部の構成例について
まず、ブロック長と同じビット長を持つ秘密鍵を入力して拡大鍵(ラウンド鍵)を生成する構成例として、中間鍵生成部に差分攻撃に対する耐性を確保した暗号化関数E'を使用することで、related−key attack に対する安全性の向上を実現する中間鍵生成部の構成例について説明する。
本構成例は、中間鍵生成部に差分攻撃に対する耐性を確保した暗号化関数E'を使用することで、related−key attack に対する安全性の向上が期待できる鍵スケジュール部(拡大鍵生成部)である。
図15を参照して本実施例に係る鍵スケジュール部の中間鍵生成部の構成例を説明する。本実施例に係る鍵スケジュール部の中間鍵生成部は、暗号処理部において利用される暗号化関数E201をそのまま拡大鍵生成に適用するものである。暗号化関数E201は、先に図1を参照して説明した共通鍵ブロック暗号処理部E10に相当する。すなわち、本実施例は、独立した鍵スケジュール部(拡大鍵生成部)を設けるのではなく、共通鍵ブロック暗号処理を実行する暗号処理部を利用して、その暗号処理部に秘密鍵を入力して暗号処理結果として拡大鍵を得る構成である。暗号化関数E201は、暗号処理部において平文の暗号化に利用される暗号化関数であり、鍵スケジュール部は、暗号処理部の構成を利用してラウンド鍵を生成することが可能な構成であり、実装コストが削減できる。
なお、先に図1を参照して説明した共通鍵ブロック暗号処理部E10の詳細構成は、図2に示す構成であり、複数段のラウンド関数を実行してデータ変換を行う。本処理例では、秘密鍵を入力としてラウンド関数を実行して処理結果を拡大鍵とする。
なお、各ラウンド関数の実行時にはラウンド鍵が必要であり、ラウンド鍵と処理対象データの2つの入力が必要となる。本処理例では、図15に示すように、暗号化関数E201に対して、秘密鍵[K]211と、定数[CONST]212を入力して、
MK=E(K、CONST)、
とした中間鍵生成処理を実行して、中間鍵[MK]213を得る。
なお、前述したように、E(A,B)は、Aに対して鍵Bを適用して暗号化関数Eで暗号化する処理を意味する。
この方式は、秘密鍵Kの鍵サイズが暗号化関数E201のブロックサイズと一致している場合に適用可能な構成である。この方式では、暗号化関数そのものを中間鍵生成関数として用いることで、中間鍵MKに任意の差分を入力することが困難になっており、related−key attackに対する安全性を保証することができる。これは、暗号化関数E201は差分攻撃に対して十分な安全性を持つことが要求され、その要求に対応する安全性を備えた構成として構築されているため言えることである。さらに、本実施例の構成では、前述したように暗号化関数をそのまま利用することで、中間鍵生成関数を新たに実装する必要がなくなるため、実装コストを低減させることができる。
なお、この方式において差分攻撃に対する安全性を十分確保できることが保証される場合は、暗号化関数Eをそのまま利用せず、暗号処理に適用するラウンド数より少ないラウンド数による変換処理構成として簡略化した関数E'を使用する構成としてもよい。具体的には、暗号化関数E201に任意の入力差分と出力差分の間の遷移確率がある閾値を超えないものであれば良い。閾値は、その関数と同じ入出力サイズを持つランダムに定義された関数と比較して識別可能であるか否かによって設定される値である。ラウンド関数の構造を持つ暗号化関数の設計の段階では、どのラウンドまでに遷移確率またはその近似値が閾値以下になっているのかは理解されている。たとえばAESの場合には4ラウンドでこの水準が達成できることが知られている。
暗号化関数にはほとんどの場合安全性のマージンとして、例えば数ラウンドを上乗せして設計している、AESの場合は10ラウンドであるため、6ラウンド分は差分攻撃に関するマージン分であるといえる。この場合でも暗号化関数E201としてはマージンを取り除いた、より高速に処理をすることが可能な関数を用いる。
(3−1B)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、暗号攻撃に対する耐性向上を実現する構成例について
次に、上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、暗号攻撃に対する耐性向上を実現する構成例について、図16、図17を参照して説明する。
図16に示す構成は、図15に示す鍵スケジュール部の中間鍵生成部に、第1データ変換処理部211、第2データ変換処理部212、排他的論理和演算(EXOR)部213からなる中間鍵拡大部210を追加した構成であり、ラウンド鍵RK231を出力する。ラウンド鍵は、暗号処理部の各ラウンド関数に適用され、nビットの複数のラウンド鍵{RK,RK,・・・,RK}である。
図17に、図16に示す鍵スケジュール部の処理によって生成されるラウンド鍵{RK,RK,・・・,RK}の構成例を示す。図17には、生成するラウンド鍵の一部を示す例として上段から13個のラウンド鍵RK〜RK13を示している。図に示すp(MK)またはPa,b(MK)は、図16に示す第2データ変換処理部212において実行される全単射変換処理を示し、入力としての中間鍵[MK]に対して全単射関数を適用した処理結果である。また図に示すP(K)またはPa,b(K)は、図16に示す第1データ変換処理部211において実行される全単射変換処理を示し、入力としての秘密鍵[K]に対して全単射関数を適用した処理結果である。なお、第1データ変換処理部211、第2データ変換処理部212においては、各ラウンド鍵の生成に際して、異なる態様での全単射処理を実行する。
例えば、第1番目のラウンド鍵RKは、中間鍵[MK]に対して、全単射関数Pを適用した結果であり、
第2番目のラウンド鍵RKは、中間鍵[MK]に対して全単射関数P2,1を適用した結果と、秘密鍵[K]に対して全単射関数P2,21を適用した結果との排他的論理和演算(EXOR)の結果である。排他的論理和演算(EXOR)処理は、図16に示す排他的論理和演算(EXOR)部223において実行される。
このようにして、nビットの複数のラウンド鍵{RK,RK,・・・,RK}を生成する。
図16、図17を参照して説明したラウンド鍵{RK,RK,・・・,RK}を生成処理は、以下のような処理シーケンスによって実行される。
(1)MKにある定められた全単射な関数を施した結果をRKとして格納
(2)MKにある定められた全単射な関数を施した結果とKにある定められた全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(3)MKにある定められた全単射な関数を施した結果をRKとして格納
(4)MKにある定められた全単射な関数を施した結果とKにある全単射な関数を施した結果を排他的論理和した結果をRKとして格納
・・・
(上記の繰り返し)
このような処理によって複数のラウンド鍵{RK,RK,・・・,RK}を生成することで、出力する鍵には、以下のような性質が保証され、暗号強度の向上、すなわち鍵の解析を困難とする安全性向上に寄与する。
(1)奇数番目のRK(iは奇数)はMKを全単射した結果であるため、Kが異なる値に変化すればRKもまた必ず変化することが保障される。よって、前記で定義した等価鍵は存在しないことが保証できる。
(2)偶数版目のRK(iは偶数)はMKとKのそれぞれを全単射した値を排他的論理和した結果であるため、その結果からはMKやKの値を復元することは不可能である。よって、万が一、偶数番目の鍵RKのみが先に攻撃により暴露されてしまっても、もとの秘密鍵Kの値は知られることはない。
(3)連続する2つのRK、RKi+1には、必ず、
MK、
MKとKの合成、
これらの2つのパターンに対応する成分が格納されていることが保証されるため、RK、RKi+1をあわせた2nビットから任意のnビット以下のmビットの値を推定するためには、必ず2回の総当り攻撃を行わなければならず、解析コストが増大する。
例えばMKのみを繰り返し用いてラウンド鍵を生成する従来型の構成、例えば、RK=MK、RKi+1=MKとするような鍵の生成構成では、mビットの推定をするためには、選択ビットが重複すれば計算コストが減少するという事態となるが、本処理例では、必ず2回の総当り攻撃を行わなければならないことになり、解析のコストが大きくなる。よって攻撃者にとっての鍵解析の困難度が向上する。これは全単射関数が暗号学的にみて弱いものであっても保障することができる。
このように、図16、図17を参照して説明した鍵スケジュール部の構成によってラウンド鍵を生成することで、鍵の解析の困難性が高まり、安全性の高い暗号処理構成が実現される。
(3−1C)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、安全性を落とさずに実装効率を高めた構成例について
次に、上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、安全性を落とさずに実装効率を高めた中間鍵拡大部(ラウンド鍵生成部)の構成例について説明する。
先に、図16、図17を参照して説明した全単射関数と排他論理和演算を適用して秘密鍵[K]と中間鍵[MK]からラウンド鍵を生成する構成では、利用する全単射関数は、すべて異なるものとして説明した。実装を考慮すると、これらの全単射関数は、同じものを適用する構成が望ましい。
例えば第1番目の生成鍵[RK]の生成処理において中間鍵[MK]に適用する全単射関数であるPと、第2番目の生成鍵[RK]の生成処理において中間鍵[MK]に適用する全単射関数P2,1とは等しいものとする。例えば、図18に示すように、第2データ変換処理部222では、以下の処理を実行して複数のラウンド鍵生成用データを生成する。
(1)MKに第一回目の全単射関数を施した結果をMK'としそれをRKとする。
(2)MK'に第二回目の同じ全単射関数を施した結果をMK''としそれをRKの生成用データとする。
以降同様の手順を繰り返して、RK,RK,・・・の生成用データを作り出す。
この構成を適用したハードウェア実装では、中間鍵[MK]の値や更新値の格納レジスタ領域の削減、実装する全単射関数の削減が可能であり、実装コストが低減される。
同様の構成を偶数版目のRK(iは偶数)を決定する際に必要となる秘密鍵[K]に対するデータ変換にも適用する。すなわち、図18の第1データ変換処理部231では、以下の処理を実行する。
(1)秘密鍵[K]に第一回目の全単射関数を施した結果をK'とし、これをRKの生成用データとする。
(2)K'に第二回目の同じ全単射関数を施した結果をK''とし、これをRKの生成用データとする。
以降同様の手順を繰り返して、RK,RK,・・・の生成用データを作り出す。
秘密鍵[K]に対応する処理に関しては、さらに次のような効率化を図ることができる。偶数番目のRK(iは偶数)を決定するために、秘密鍵[K]にある定められた全単射な関数を施すが、その際に用いる全単射な関数を、Kをそのまま変更せずに出力する関数とする。
すなわち偶数番目のRK(iは偶数)を生成する場合、秘密鍵[K]をそのまま排他的論理和する構成である。この処理構成は、図19に示す構成のように、図18に示す構成から、第1データ変換処理部221を省略した構成となる。
このような構成にしても、暗号強度の低下が発生することはない。これにより秘密鍵[K]に施すための全単射な関数が省略できる効果があるだけではなく、Kを格納するレジスタも不要となりハードウェアリソースの削減効果がある。これは、秘密鍵[K]の値はすでにハードウェア処理部に対して入力信号として与えられており、この値は暗号化処理の間中、変わらず保持され続けどのタイミングでも参照可能であるためである。
(3−2:第2カテゴリ)
ブロック長の2倍までのビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成例
次に、ブロック長の2倍までのビット長を持つ秘密鍵を入力して拡大鍵(ラウンド鍵)を生成する鍵スケジュール部の構成例について説明する。
(3−2A)上記(3−1A〜C)の長所を備えた鍵スケジュール部の構成について
まず、ブロック長の2倍までのビット長を持つ秘密鍵を入力して拡大鍵(ラウンド鍵)を生成する鍵スケジュール部(拡大鍵生成部)の構成例として、上述の(3−1A〜C)の長所を備えた鍵スケジュール部の構成について説明する。
上記(3−1A〜C)においては、暗号処理部の暗号化関数において処理される単位データとしてのブロック長[n]と同じ長さの秘密鍵[K]が入力された場合の処理構成について説明したが、ブロック長[n]と同じ長さの秘密鍵[K]が入力された場合だけではなく、最大2nビットの秘密鍵に対応できる方が暗号の適用範囲を向上させるためには望ましい。以下では、このような鍵スケジュール部の構成例について説明する。
暗号処理部の暗号化関数において処理される単位データとしてのブロック長をnビットとし、鍵スケジュール部に対して入力する秘密鍵[K]のビットサイズをmビット(n+1≦m≦2n)とする。
図20は、鍵スケジュール部の中間鍵生成部の構成を示している。図20に示すように、本処理例の鍵スケジュールの中間鍵生成部は、Feistel構造を持ち、Feistel構造におけるラウンド関数であるF関数部に暗号化関数E301〜303を設定した構成であり、さらにデータ変換部300と、排他論理和演算(EXOR)部311〜313を有する。これらの構成は、暗号処理部において平文の暗号化に利用される構造である。すなわち、本処理例においても、鍵スケジュール部は、暗号処理部の構成を利用してラウンド鍵を生成することが可能な構成であり、実装コストが削減できる。
まず、鍵スケジュール部に入力するmビットの秘密鍵[K]は、データ変換部300においてデータ変換が実行されnビットの[K1]、[K2]の2つの秘密鍵変換データを生成する。具体的な方法としては、入力秘密鍵[K]にビット0をn個連続で付け加えたm+nビット値(K|000000000)の最初のnビットを第1秘密鍵変換データ[K1]とし、次のnビットを第2秘密鍵変換データ[K2]とする。
もしくはデータ変換部300において秘密鍵[K]を2回並べたデータ[K|K]を生成し、最初のnビットを第1秘密鍵変換データ[K1]=K、後半nビットを第2秘密鍵変換データ[K2]=Kとする構成としてもよい。
あるいは、データ変換部300において秘密鍵[K]に、Kのビット反転を接続した構成K|K(反転)を生成し、さらに前からnビットずつ分割し、最初のnビットを第1秘密鍵変換データ[K1]=K、後半nビットを第2秘密鍵変換データ[K2]=Kの反転データとする構成としてもよい。
次に、これらの第1秘密鍵変換データ[K1]と、第2秘密鍵変換データ[K2]に対して、暗号化関数E301〜303をFeistel構造におけるラウンド関数であるF関数とみなした3ラウンドからなるFeistel構造に従ったデータ変換を行い、その結果として、nビットの中間鍵[MK1]、[MK2]を得る。
各暗号化関数E301〜303には、それぞれ予め定められた定数[CONST1]、[CONST2]、[CONST3]を入力してデータ変換を実行する。図20に示す中間値[X1]と、出力する中間鍵[MK1],[MK2]は以下の処理によって生成される。
X1=K2(EXOR)(E(K1、CONST1))
MK1=K1(EXOR)(E(X1、CONST2))
MK2=X1(EXOR)(E(MK1、CONST3))
である。
なお、A(EXOR)Bは、AとBの排他的論理和演算、
E(A,B)は、Aに対して鍵Bを適用して暗号化関数Eで暗号化する処理を意味する。
中間鍵[MK1],[MK2]と、第1秘密鍵変換データ[K1]、第2秘密鍵変換データ[K2]との関係式は、以下の通りとなる。
MK1=E[(E(K1,CONST1))(EXOR)K2,CONST2](EXOR)K1
MK2=(E(MK1,CONST3))(EXOR)(E(K1,CONST1))(EXOR)K2
となる。
図20に示すようなFeistel構造を適用した暗号処理構成では、例えば暗号化関数E301〜303を差分攻撃に対して強度のある関数として設定することで、3ラウンドFeistelを行った結果も2nビットのデータ変換関数として同様に強度が高くなることが知られている。従って、図20に示すデータ変換構成による中間鍵生成処理構成は、暗号強度が高い鍵生成構成となり、生成した中間鍵[MK1],[MK2]の解析によって秘密鍵情報を得ることは困難となり、安全性の高い中間鍵生成が実現される。
なお、この方式において差分攻撃に対する安全性を十分確保できることが保証される場合は、暗号化関数Eをそのまま利用せず、暗号処理に適用するラウンド数より少ないラウンド数による変換処理構成として簡略化した関数E'を使用する構成としてもよい。具体的には、暗号化関数E201に任意の入力差分と出力差分の間の遷移確率がある閾値を超えないものであれば良い。閾値は、その関数と同じ入出力サイズを持つランダムに定義された関数と比較して識別可能であるか否かによって設定される値である。ラウンド関数の構造を持つ暗号化関数の設計の段階では、どのラウンドまでに遷移確率またはその近似値が閾値以下になっているのかは理解されている。たとえばAESの場合には4ラウンドでこの水準が達成できることが知られている。
さらに、図20に示す中間鍵生成構成を適用したラウンド鍵生成処理構成について、図21、図22を参照して説明する。図21に示す構成は、図20に示す鍵スケジュール部の中間鍵生成部構成に、第1データ変換処理部351、第2データ変換処理部352、排他的論理和演算(EXOR)部353からなる中間鍵拡大部350、すなわちラウンド鍵生成部として機能する中間鍵拡大部350を追加した構成であり、ラウンド鍵RK361を出力する。ラウンド鍵は、暗号処理部の各ラウンド関数に適用され、nビットの複数のラウンド鍵{RK,RK,・・・,RK}である。
図22に、図21に示す鍵スケジュール部の処理によって生成されるラウンド鍵{RK,RK,・・・,RK}の構成例を示す。図22には、生成するラウンド鍵の一部を示す例として上段から13個のラウンド鍵RK〜RK13を示している。図に示すp(MK1)、Pa,b(MK1)、p(MK2)、Pa,b(MK2)は、図21に示す第2データ変換処理部352において実行される全単射変換処理を示し、入力としての中間鍵[MK1]または[MK2]に対して全単射関数を適用した処理結果である。また、図に示すp(K1),Pa,b(K1),p(K2),Pa,b(K2)は、図21に示す第1データ変換処理部351において実行される全単射変換処理を示し、入力としての秘密鍵変換データ[K1],[K2]に対して全単射関数を適用した処理結果である。なお、第1データ変換処理部351、第2データ変換処理部352においては、各ラウンド鍵の生成に際して、異なる態様での全単射処理を実行する。
例えば、第1番目のラウンド鍵RKは、中間鍵[MK1]に対して、全単射関数Pを適用した結果であり、
第2番目のラウンド鍵RKは、中間鍵[MK1]に対して全単射関数P2,1を適用した結果と、第2秘密鍵変換データ[K2]に対して全単射関数P2,2を適用した結果との排他的論理和演算(EXOR)の結果である。
第3番目のラウンド鍵RKは、中間鍵[MK2]に対して、全単射関数Pを適用した結果であり、
第4番目のラウンド鍵RKは、中間鍵[MK2]に対して全単射関数P4,1を適用した結果と、第1秘密鍵変換データ[K1]に対して全単射関数P4,2を適用した結果との排他的論理和演算(EXOR)の結果である。
このようにして、nビットの複数のラウンド鍵{RK,RK,・・・,RK}を生成する。
図21、図22を参照して説明したラウンド鍵{RK,RK,・・・,RK}を生成処理は、以下のような処理シーケンスによって実行される。
(1)MK1にある定められた全単射な関数を施した結果をRKとして格納
(2)MK1にある定められた全単射な関数を施した結果とK2にある定められた全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(3)MK2にある定められた全単射な関数を施した結果をRKとして格納
(4)MK2にある定められた全単射な関数を施した結果とK1にある全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(5)MK1にある定められた全単射な関数を施した結果をRKとして格納
(6)MK1にある定められた全単射な関数を施した結果とK2にある定められた全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(7)MK2にある定められた全単射な関数を施した結果をRKとして格納
(8)MK2にある定められた全単射な関数を施した結果とK1にある全単射な関数を施した結果を排他的論理和した結果をRKとして格納
・・・
(上記の繰り返し)
なお、上記シーケンスにおいて、中間鍵[MK1]と[MK2]を入れ替えたり、秘密鍵変換データ[K1]と[K2]を入れ替えた構成でも良い。
このような処理によって複数のラウンド鍵{RK,RK,・・・,RK}を生成することで、出力する鍵には、以下のような性質が保証され、暗号強度の向上、すなわち鍵の解析を困難とする安全性向上に寄与する。
(1)奇数番目のRK(iは奇数)とRKi+2をあわせると、MK1とMK2になっており、これは、K1|K2を全単射した結果であるため、Kが異なる値に変化すればRK|RKi+2もまた必ず変化することが保障されるため、前記で定義した等価鍵は存在しないことが保証できる。
(2)偶数版目のRK(iは偶数)とRKi+2をあわせるとMK1とMK2から作られる2nビットデータとK1とK2から作られる2nビットデータのそれぞれを全単射した値を排他的論理和した結果であるため、その結果からはMK1、MK2やK1、K2の値を復元することは不可能である。よって、万が一、偶数番目の偶数版目のRK(iは偶数)とRKi+2のみが先に攻撃により暴露されてしまっても、もとの秘密鍵Kの値は知られることはない。
(3)連続する4つのRK、RKi+1、RKi+2、RKi+3には必ず
MK1、
MK2、
MK1とK2の合成、
MK2とK1の合成
これらの4つのパターンに対応する成分が格納されていることが保証されるため、RK、RKi+1、RKi+2、RKi+3をあわせた4nビットから任意の2nビット以下のmビットの値を推定するためには、必ず2回の総当り攻撃を行わなければならないことになり、解析のコストが大きくなる。よって攻撃者にとっての鍵解析の困難度が向上する。これは全単射関数が暗号学的にみて弱いものであっても保障することができる。なおこの効果はMK1とMK2を入れ替えたり、K1とK2を入れ替えても存在する。
このように、図21、図22を参照して説明した鍵スケジュール部の構成を適用してラウンド鍵の生成を行なうことで、鍵の解析の困難性が高まり、安全性の高い暗号処理構成が実現される。
なお、本実施例においても、先に説明した実施例と同様、利用する全単射関数を全て異なる設定とせず、少なくとも一部は共通のものとすることで、実装効率を高めることが可能となる。
例えば中間鍵[MK1]に適用する全単射関数を共通のものとした設定例では、以下の処理が実行される。第1番目の生成鍵[RK]の生成処理において中間鍵[MK1]に適用する全単射関数であるPと、第2番目の生成鍵[RK]の生成処理において中間鍵[MK1]に適用する全単射関数P2,1とは等しいものとする。図23に示すように、第2データ変換処理部352では、以下の処理を実行して複数のラウンド鍵生成用データを生成する。
(1)MK1に第一回目の全単射関数を施した結果をMK1'としそれをRKとする。
(2)MK1'に第二回目の同じ全単射関数を施した結果をMK1''としそれをRKの生成用データとする。
以降同様の手順を繰り返して、RK,RK,・・・の生成用データを作り出す。
上述の処理では、中間鍵[MK1]に対して適用する全単射変換を共通のものとする構成例であるが、同様に中間鍵[MK2]に対して適用する全単射変換を共通のものとする構成も可能であり、さらに、2つの中間鍵[MK1][MK2]に適用する全単射変換を共通のものとする構成としてもよい。
同様に、第1秘密鍵変換データ[K1]に対して適用する全単射関数を共通とする構成、第2秘密鍵変換データ[K2]に対して適用する全単射関数を共通とする構成、さらに、第1秘密鍵変換データ[K1]と第2秘密鍵変換データ[K2]に対して適用する全単射関数を共通とする構成などが可能である。これらの場合は、図23に示すように、第1データ変換処理部351では、少なくとも一部の変換処理では共通の全単射関数を適用したデータ変換が実行されることになる。
この構成を適用したハードウェア実装では、中間鍵[MK1][MK2]や各秘密鍵変換データ[K1],[K2]の値や更新値の格納レジスタ領域の削減、実装する全単射関数の削減が可能であり、実装コストが低減される。
(3−2B)上記(3−1A〜C)の長所を備え、上記(3−2A)より高速処理可能な鍵スケジュール部の構成について
次に、先に(3−1A〜C)の項目において説明した攻勢の持つ長所を備え、さらに、上述の(3−2A)の構成より高速処理可能な鍵スケジュール部の構成について説明する。
本実施例も、暗号処理部において設定される暗号化関数の処理単位であるブロック長と同じ長さの秘密鍵Kが入力された場合だけではなく、最大2nビットの秘密鍵に対応できるようにした鍵スケジュール部(拡大鍵生成部)の構成例に関する実施例である。
なお、暗号化関数の処理単位であるブロック長をnビットとして、鍵スケジュール部に入力する秘密鍵の鍵サイズをmビット(n+1≦m≦2n)とする。本実施例における鍵スケジュール部の中間鍵生成部の構成について、図24を参照して説明する。
まず、鍵スケジュール部に入力するmビットの秘密鍵[K]は、データ変換部401においてデータ変換が実行されnビットの[K1]、[K2]の2つの秘密鍵変換データを生成する。具体的な方法としては、入力秘密鍵[K]にビット0をn個連続で付け加えたm+nビット値(K|000000000)の最初のnビットを第1秘密鍵変換データ[K1]とし、次のnビットを第2秘密鍵変換データ[K2]とする。
もしくはデータ変換部300において秘密鍵[K]を2回並べたデータ[K|K]を生成し、最初のnビットを第1秘密鍵変換データ[K1]=K、後半nビットを第2秘密鍵変換データ[K2]=Kとする構成としてもよい。
あるいは、データ変換部300において秘密鍵[K]に、Kのビット反転を接続した構成K|K(反転)を生成し、さらに前からnビットずつ分割し、最初のnビットを第1秘密鍵変換データ[K1]=K、後半nビットを第2秘密鍵変換データ[K2]=Kの反転データとする構成としてもよい。
次に、図24に示すように第1秘密鍵変換データ[K1]を暗号化関数E411に入力し、第2秘密鍵変換データ[K1]を暗号化関数E412に入力して、暗号化関数による暗号処理を実行する。これらの暗号化関数は、暗号処理部において平文の暗号化に利用される暗号化関数である。すなわち、本処理例においても、鍵スケジュール部は、暗号処理部の構成を利用してラウンド鍵を生成することが可能な構成であり、実装コストが削減できる。
これらの暗号化関数を利用した具体的な処理について説明する。予め定められた定数[CONST1]、[CONST2]を各暗号化関数E411、暗号化関数E412に入力して、以下のデータ変換処理を実行して、中間鍵[MK1],[MK2]を生成する。
MK1=E(K1,CONST1)
MK2=E(K2,CONST2)
上記式は、暗号化関数E411において、第1秘密鍵変換データ[K1]に対して定数[CONST1]を適用した暗号化処理によって中間鍵[MK1]を生成し、暗号化関数E412において、第2秘密鍵変換データ[K2]に対して定数[CONST2]を適用した暗号化処理によって中間鍵[MK2]を生成することを意味する。この処理によって2つのnビット中間鍵[MK1],[MK2]が生成され、これらの中間鍵に基づいてラウンド鍵を生成する。本処理例では、暗号化関数E411と、暗号化関数E412とは並列処理が可能であり、処理時間の短縮が可能となる。
なお、この方式において差分攻撃に対する安全性を十分確保できることが保証される場合は、暗号化関数Eをそのまま利用せず、暗号処理に適用するラウンド数より少ないラウンド数による変換処理構成として簡略化した関数E'を使用する構成としてもよい。具体的には、暗号化関数E201に任意の入力差分と出力差分の間の遷移確率がある閾値を超えないものであれば良い。閾値は、その関数と同じ入出力サイズを持つランダムに定義された関数と比較して識別可能であるか否かによって設定される値である。ラウンド関数の構造を持つ暗号化関数の設計の段階では、どのラウンドまでに遷移確率またはその近似値が閾値以下になっているのかは理解されている。たとえばAESの場合には4ラウンドでこの水準が達成できることが知られている。
さらに、図24に示す中間鍵生成構成を適用したラウンド鍵生成処理構成について、図25、図26を参照して説明する。図25に示す構成は、図24に示す構成に、第1データ変換処理部451、第2データ変換処理部452、排他的論理和演算(EXOR)部453からなる中間鍵拡大部450を追加した構成であり、ラウンド鍵RK461を出力する。ラウンド鍵は、暗号処理部の各ラウンド関数に適用され、nビットの複数のラウンド鍵{RK,RK,・・・,RK}である。
図26に、図25に示す鍵スケジュール部の処理によって生成されるラウンド鍵{RK,RK,・・・,RK}の構成例を示す。図26には、生成するラウンド鍵の一部を示す例として上段から13個のラウンド鍵RK〜RK13を示している。図に示すp(MK1)、Pa,b(MK1)、p(MK2)、Pa,b(MK2)は、図25に示す第2データ変換処理部452において実行される全単射変換処理を示し、入力としての中間鍵[MK1]または[MK2]に対して全単射関数を適用した処理結果である。また、図に示すp(K1),Pa,b(K1),p(K2),Pa,b(K2)は、図25に示す第1データ変換処理部451において実行される全単射変換処理を示し、入力としての秘密鍵変換データ[K1],[K2]に対して全単射関数を適用した処理結果である。なお、第1データ変換処理部451、第2データ変換処理部452においては、各ラウンド鍵の生成に際して、異なる態様での全単射処理を実行する。
例えば、第1番目のラウンド鍵RKは、中間鍵[MK1]に対して、全単射関数Pを適用した結果であり、
第2番目のラウンド鍵RKは、中間鍵[MK1]に対して全単射関数P2,1を適用した結果と、第2秘密鍵変換データ[K2]に対して全単射関数P2,21を適用した結果との排他的論理和演算(EXOR)の結果である。
第3番目のラウンド鍵RKは、中間鍵[MK2]に対して、全単射関数Pを適用した結果であり、
第4番目のラウンド鍵RKは、中間鍵[MK2]に対して全単射関数P4,1を適用した結果と、第1秘密鍵変換データ[K1]に対して全単射関数P2,21を適用した結果との排他的論理和演算(EXOR)の結果である。
このようにして、nビットの複数のラウンド鍵{RK,RK,・・・,RK}を生成する。
図25、図26を参照して説明したラウンド鍵{RK,RK,・・・,RK}を生成処理は、以下のような処理シーケンスによって実行される。
(1)MK1にある定められた全単射な関数を施した結果をRKとして格納
(2)MK1にある定められた全単射な関数を施した結果とK2にある定められた全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(3)MK2にある定められた全単射な関数を施した結果をRKとして格納
(4)MK2にある定められた全単射な関数を施した結果とK1にある全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(5)MK1にある定められた全単射な関数を施した結果をRKとして格納
(6)MK1にある定められた全単射な関数を施した結果とK2にある定められた全単射な関数を施した結果を排他的論理和した結果をRKとして格納
(7)MK2にある定められた全単射な関数を施した結果をRKとして格納
(8)MK2にある定められた全単射な関数を施した結果とK1にある全単射な関数を施した結果を排他的論理和した結果をRKとして格納
・・・
(上記の繰り返し)
なお、上記シーケンスにおいて、中間鍵[MK1]と[MK2]を入れ替えてもよいが、その際は同時に秘密鍵変換データ[K1]と[K2]も必ず入れ替えた構成とする。
このような処理によって複数のラウンド鍵{RK,RK,・・・,RK}を生成することで、出力する鍵には、以下のような性質が保証され、暗号強度の向上、すなわち鍵の解析を困難とする安全性向上に寄与する。
(1)奇数番目のRK(iは奇数)とRKi+2をあわせると、MK1とMK2になっており、これは、K1|K2を全単射した結果であるため、Kが異なる値に変化すればRK|RKi+2もまた必ず変化することが保障されるため、前記で定義した等価鍵は存在しないことが保証できる。
(2)偶数版目のRK(iは偶数)とRKi+2をあわせるとMK1とMK2から作られる2nビットデータとK1とK2から作られる2nビットデータのそれぞれを全単射した値を排他的論理和した結果であるため、その結果からはMK1、MK2やK1、K2の値を復元することは不可能である。よって、万が一、偶数番目の偶数版目のRK(iは偶数)とRKi+2のみが先に攻撃により暴露されてしまっても、もとの秘密鍵Kの値は知られることはない。
(3)連続する4つのRK、RKi+1、RKi+2、RKi+3には必ず
MK1、
MK2、
MK1とK2の合成、
MK2とK1の合成
これらの4つのパターンに対応する成分が格納されていることが保証されるため、RK、RKi+1、RKi+2、RKi+3をあわせた4nビットから任意の2nビット以下のmビットの値を推定するためには、必ず2回の総当り攻撃を行わなければならないことになり、解析のコストが大きくなる。よって攻撃者にとっての鍵解析の困難度が向上する。これは全単射関数が暗号学的にみて弱いものであっても保障することができる。
なお、本実施例においても、先に説明した実施例と同様、利用する全単射関数を全て異なる設定とせず、少なくとも一部は共通のものとすることで、実装効率を高めることが可能となる。
例えば中間鍵[MK1]に適用する全単射関数を共通のものとした設定例では、以下の処理が実行される。第1番目の生成鍵[RK]の生成処理において中間鍵[MK1]に適用する全単射関数であるPと、第2番目の生成鍵[RK]の生成処理において中間鍵[MK1]に適用する全単射関数P2,1とは等しいものとする。図27に示すように、第2データ変換処理部452では、以下の処理を実行して複数のラウンド鍵生成用データを生成する。
(1)MK1に第一回目の全単射関数を施した結果をMK1'としそれをRKとする。
(2)MK1'に第二回目の同じ全単射関数を施した結果をMK1''としそれをRKの生成用データとする。
以降同様の手順を繰り返して、RK,RK,・・・の生成用データを作り出す。
上述の処理では、中間鍵[MK1]に対して適用する全単射変換を共通のものとする構成例であるが、同様に中間鍵[MK2]に対して適用する全単射変換を共通のものとする構成も可能であり、さらに、2つの中間鍵[MK1][MK2]に適用する全単射変換を共通のものとする構成としてもよい。
同様に、第1秘密鍵変換データ[K1]に対して適用する全単射関数を共通とする構成、第2秘密鍵変換データ[K2]に対して適用する全単射関数を共通とする構成、さらに、第1秘密鍵変換データ[K1]と第2秘密鍵変換データ[K2]に対して適用する全単射関数を共通とする構成などが可能である。これらの場合は、図27に示すように、第1データ変換処理部451では、少なくとも一部の変換処理では共通の全単射関数を適用したデータ変換が実行されることになる。
この構成を適用したハードウェア実装では、中間鍵[MK1][MK2]や各秘密鍵変換データ[K1],[K2]の値や更新値の格納レジスタ領域の削減、実装する全単射関数の削減が可能であり、実装コストが低減される。
[4.暗号処理装置の構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール700の構成例を図28に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図28に示すICモジュール700は、これら様々な機器に構成することが可能である。
図28に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部703は、例えば上述した各種の暗号処理構成、すなわち、
(ア)SPN(Substitution Permutation Network)構造、
(イ)Feistel構造、
(ウ)拡張Feistel構造、
これらの各構成のいずれかの構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
また、暗号処理部703は、上述した各実施例に対応した構成、すなわち、
(3−1:第1カテゴリ)
ブロック長と同じビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成
(3−1A)中間鍵生成部に差分攻撃に対する耐性を確保した暗号化関数E'を使用することで、related−key attack に対する安全性の向上を実現する中間鍵生成部の構成
(3−1B)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、暗号攻撃に対する耐性向上を実現する構成
(3−1C)上記の(3−1A)に説明する中間鍵生成部において生成した中間鍵に基づいてラウンド鍵を生成する中間鍵拡大部(ラウンド鍵生成部)であり、安全性を落とさずに実装効率を高めた構成
(3−2:第2カテゴリ)
ブロック長の2倍までのビット長を持つ秘密鍵を入力して中間鍵を生成し、生成した中間鍵からラウンド鍵を生成する鍵スケジュール部の構成
(3−2A)上記(3−1A〜C)の長所を備えた鍵スケジュール部の構成
(3−2B)上記(3−1A〜C)の長所を備え、上記(3−2A)より高速処理可能とした鍵スケジュール部の構成
これらの処理構成のいずれかに対応する構成を持つ鍵スケジュール部を持つ。
例えば、暗号処理部703では、以下のような暗号処理を実行する。
まず、暗号処理部703内の鍵スケジュール部において、暗号処理部703内の暗号処理実行部のラウンド関数の実行に適用するラウンド鍵を生成する。このラウンド鍵の生成は、中間鍵生成部において、暗号処理実行部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成した後、中間鍵拡大部において、中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する処理として実行される。具体的には、図15〜図27を参照して説明した構成、すなわち上記の(3−1A〜C)、(3−2A,B)のいずれかの構成を適用してラウンド鍵の生成が実行される。次に、暗号処理実行部において、ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を実行する。
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の一実施例の構成によれば、共通鍵ブロック暗号処理を実行する暗号処理装置の鍵スケジュール部において、暗号処理部で適用する暗号化関数を利用したラウンド鍵生成処理を行なう構成とした。具体的には、暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成し、中間鍵および秘密鍵等に基づく全単射変換を行った結果や、全単射変換データの排他的論理和演算結果をラウンド鍵に適用する。本構成により、安全性の保証された暗号化関数を利用して生成した中間鍵に基づくラウンド鍵の生成が実現され、安全性、すなわち鍵の解析困難性を高めることが可能となるとともに、暗号処理部の構成を利用した鍵生成により鍵スケジュール部の構成を簡略化することが可能となり実装効率を高めることが可能となる。
共通鍵ブロック暗号アルゴリズムの基本構成を示す図である。 図1に示す共通鍵ブロック暗号処理部E10の内部構成について説明する図である。 図2に示す暗号処理部12の詳細構成について説明する図である。 ラウンド関数実行部の一構成例としてのSPN構造ラウンド関数について説明する図である。 ラウンド関数実行部の一構成例としてのFeistel(フェイステル)構造について説明する図である。 ラウンド関数実行部の一構成例としての拡張Feistel構造について説明する図である。 非線形変換処理部の具体例について説明する図である。 線形変換処理部の具体例について説明する図である。 暗号化処理に適用される暗号化鍵スケジュール部の構成および処理について説明する図である。 復号処理に適用される暗号化鍵スケジュール部の構成および処理について説明する図である。 暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 AESで用いられている繰り返し型方式によるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 Camelliaで用いられているような中間鍵生成方式によるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 図13に示す中間鍵生成関数141の詳細構成例について説明する図である。 本発明の一実施例に係る鍵スケジュール部の中間鍵生成部の構成例を説明する図である。 図15に示す構成によって生成した中間鍵MKと秘密鍵Kを適用してラウンド鍵を生成する鍵スケジュール部の構成について説明する図である。 図16に示す鍵スケジュール部の処理によって生成されるラウンド鍵データについて説明する図である。 図16に示す鍵スケジュール部の構成において全単射関数の共通化を行なった構成例について説明する図である。 図17に示す鍵スケジュール部の構成において第1データ変換処理部を省略した構成例について説明する図である。 ブロック長[n]より長い最大2nビットの秘密鍵に対応することを可能とした鍵スケジュール部の中間鍵生成部の構成例について説明する図である。 図20に示す構成によって生成した中間鍵MKと秘密鍵Kを適用してラウンド鍵を生成する鍵スケジュール部の構成について説明する図である。 図21に示す鍵スケジュール部の処理によって生成されるラウンド鍵データについて説明する図である。 図21に示す鍵スケジュール部の構成において全単射関数の共通化を行なった構成例について説明する図である。 ブロック長[n]より長い最大2nビットの秘密鍵に対応することを可能とした鍵スケジュール部の中間鍵生成部の構成例について説明する図である。 図24に示す構成によって生成した中間鍵MKと秘密鍵Kを適用してラウンド鍵を生成する鍵スケジュール部の構成について説明する図である。 図25に示す鍵スケジュール部の処理によって生成されるラウンド鍵データについて説明する図である。 図25に示す鍵スケジュール部の構成において全単射関数の共通化を行なった構成例について説明する図である。 本発明に係る暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
符号の説明
10 共通鍵ブロック暗号処理部E
11 鍵スケジュール部
12 暗号処理部
20 ラウンド関数実行部
21 排他的論理和演算部
22 非線形変換処理部
23 線形変換処理部
30 F関数部
31 排他的論理和演算部
32 非線形変換処理部
33 線形変換処理部
34 排他的論理和演算部
41,42 F関数部
50 非線形変換処理部
51 Sボックス
111 秘密鍵
112 暗号化鍵スケジュール部
113 暗号化拡大鍵
114 データ暗号化部
115 ラウンド鍵
121 秘密鍵
122 復号鍵スケジュール部
123 復号拡大鍵
124 データ復号部
130 鍵スケジュール部(拡大鍵生成部)
131 ラウンド鍵生成部
140 鍵スケジュール部(拡大鍵生成部)
141 中間鍵生成関数
142 中間鍵拡大関数
201 暗号化関数
211 秘密鍵
212 定数
213 中間鍵
220 中間鍵拡大部
221 第1データ変換処理部
222 第2データ変換処理部
223 排他的論理和演算部
231 ラウンド鍵
300 データ変換部
301〜303 暗号化関数
311〜313 排他的論理和演算部
350 中間鍵拡大部
351 第1データ変換処理部
352 第2データ変換処理部
353 排他的論理和演算部
361 ラウンド鍵
401 データ変換部
411,412 暗号化関数
450 中間鍵拡大部
451 第1データ変換処理部
452 第2データ変換処理部
453 排他的論理和演算部
461 ラウンド鍵
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 暗号処理部
704 乱数発生器
705 送受信部

Claims (17)

  1. 共通鍵ブロック暗号処理を実行する暗号処理装置であり、
    ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
    前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成する中間鍵生成部と、
    前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大部を有し、
    前記中間鍵拡大部は、
    前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理部と、
    前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算部を有し、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力する構成である暗号処理装置。
  2. 前記中間鍵生成部は、
    前記暗号化関数に対して、前記秘密鍵と予め設定された定数を入力して暗号化処理を実行して中間鍵を生成する処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記中間鍵生成部において適用する暗号化関数は、前記ラウンド関数を少なくとも1段以上含む構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記中間鍵生成部において適用する暗号化関数は、
    前記暗号処理部で利用するFeistel構造を持つ複数段のラウンド関数を含む構成であることを特徴とする請求項1に記載の暗号処理装置。
  5. 前記中間鍵生成部は、
    前記暗号処理部で利用する暗号化関数を並列に利用して、複数の中間鍵を生成する構成であることを特徴とする請求項1に記載の暗号処理装置。
  6. 前記中間鍵生成部は、
    前記暗号処理部で利用する暗号化関数の処理単位であるブロック長と同じビット数の秘密鍵を入力し、同一ビット数の中間鍵を生成する構成であることを特徴とする請求項1に記載の暗号処理装置。
  7. 前記中間鍵生成部は、
    前記暗号処理部で利用する暗号化関数の処理単位であるブロック長以上のビット数の秘密鍵を入力し、入力した秘密鍵のデータ変換を実行して、前記ブロック長と同一のビット数を持つ複数の秘密鍵変換データを生成し、該秘密鍵変換データを前記暗号化関数に入力して中間鍵を生成する構成であることを特徴とする請求項1に記載の暗号処理装置。
  8. 前記中間鍵拡大部は、
    前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データの少なくともいずれかを入力して全単射変換による秘密鍵全単射変換データを生成する秘密鍵変換処理部を有し、
    前記排他的論理和演算部は、前記秘密鍵変換処理部の生成する秘密鍵全単射変換データと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  9. 前記秘密鍵変換処理部において各ラウンド鍵の生成時に実行する全単射変換に適用する全単射関数の少なくとも一部を共通の全単射関数としたことを特徴とする請求項に記載の暗号処理装置。
  10. 前記中間鍵変換処理部において各ラウンド鍵の生成時に実行する全単射変換に適用する全単射関数の少なくとも一部を共通の全単射関数としたことを特徴とする請求項1に記載の暗号処理装置。
  11. プログラムを記憶するメモリと、
    前記プログラムを実行するプロセッサと、
    前記プロセッサの制御下で共通鍵ブロック暗号処理を実行する暗号処理実行部を備える情報処理装置であって、
    前記暗号処理実行部は、
    ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
    前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成する中間鍵生成部と、
    前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大部を有し、
    前記中間鍵拡大部は、
    前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理部と、
    前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算部を有し、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力する構成である情報処理装置。
  12. 共通鍵ブロック暗号処理を実行する暗号処理装置における暗号処理方法であり、
    鍵スケジュール部において、暗号処理部において実行されるラウンド関数の実行に適用するラウンド鍵を生成する鍵生成ステップと、
    暗号処理部において、前記ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理ステップを有し、
    前記鍵生成ステップは、
    中間鍵生成部において、前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成する中間鍵生成ステップと、
    中間鍵拡大部において、前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大ステップを有し、
    前記中間鍵拡大ステップは、
    中間鍵変換処理部において、前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理ステップと、
    排他的論理和演算部において、前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算ステップを有し、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力するステップであることを特徴とする暗号処理方法。
  13. 共通鍵ブロック暗号処理を実行する暗号処理装置において、暗号処理を実行させるコンピュータ・プログラムであり、
    鍵スケジュール部において、暗号処理部において実行されるラウンド関数の実行に適用するラウンド鍵を生成させる鍵生成ステップと、
    暗号処理部において、前記ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる暗号処理ステップを有し、
    前記鍵生成ステップは、
    中間鍵生成部において、前記暗号処理部で利用するラウンド関数を含む暗号化関数に秘密鍵を入力して中間鍵を生成させる中間鍵生成ステップと、
    中間鍵拡大部において、前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成させる中間鍵拡大ステップを実行させ、
    前記中間鍵拡大ステップにおいては、
    中間鍵変換処理部において、前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理ステップと、
    排他的論理和演算部において、前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算ステップを実行させて、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力させることを特徴とするコンピュータ・プログラム。
  14. 共通鍵ブロック暗号処理を実行する復号処理装置であり、
    ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう復号処理部と、
    前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    前記復号処理部で利用するラウンド関数を含む復号関数に秘密鍵を入力して中間鍵を生成する中間鍵生成部と、
    前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大部を有し、
    前記中間鍵拡大部は、
    前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理部と、
    前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算部を有し、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力する構成である復号処理装置。
  15. プログラムを記憶するメモリと、
    前記プログラムを実行するプロセッサと、
    前記プロセッサの制御下で共通鍵ブロック暗号処理を実行する復号処理実行部を備える情報処理装置であって、
    前記復号処理実行部は、
    ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう復号処理部と、
    前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    前記復号処理部で利用するラウンド関数を含む復号関数に秘密鍵を入力して中間鍵を生成する中間鍵生成部と、
    前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大部を有し、
    前記中間鍵拡大部は、
    前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理部と、
    前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算部を有し、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力する構成である情報処理装置。
  16. 共通鍵ブロック暗号処理を実行する復号処理装置における復号処理方法であり、
    鍵スケジュール部において、復号処理部において実行されるラウンド関数の実行に適用するラウンド鍵を生成する鍵生成ステップと、
    復号処理部において、前記ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう復号処理ステップを有し、
    前記鍵生成ステップは、
    中間鍵生成部において、前記復号処理部で利用するラウンド関数を含む復号関数に秘密鍵を入力して中間鍵を生成する中間鍵生成ステップと、
    中間鍵拡大部において、前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成する中間鍵拡大ステップを有し、
    前記中間鍵拡大ステップは、
    中間鍵変換処理部において、前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理ステップと、
    排他的論理和演算部において、前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算ステップを有し、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力するステップであることを特徴とする復号処理方法。
  17. 共通鍵ブロック暗号処理を実行する復号処理装置において、復号処理を実行させるコンピュータ・プログラムであり、
    鍵スケジュール部において、復号処理部において実行されるラウンド関数の実行に適用するラウンド鍵を生成させる鍵生成ステップと、
    復号処理部において、前記ラウンド鍵を入力して、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる復号処理ステップを有し、
    前記鍵生成ステップは、
    中間鍵生成部において、前記復号処理部で利用するラウンド関数を含む復号関数に秘密鍵を入力して中間鍵を生成させる中間鍵生成ステップと、
    中間鍵拡大部において、前記中間鍵生成部の生成する中間鍵を入力してラウンド鍵を生成させる中間鍵拡大ステップを実行させ、
    前記中間鍵拡大ステップにおいては、
    中間鍵変換処理部において、前記中間鍵生成部の生成する中間鍵を入力して全単射変換による中間鍵全単射変換データを生成する中間鍵変換処理ステップと、
    排他的論理和演算部において、前記秘密鍵または秘密鍵に基づいて生成される秘密鍵変換データのいずれかと、前記中間鍵変換処理部の生成する中間鍵全単射変換データとの排他的論理和演算を実行する排他的論理和演算ステップを実行させて、
    前記中間鍵変換処理部の処理結果である中間鍵全単射変換データ、および前記排他的論理和演算部の処理結果データをラウンド鍵として出力させることを特徴とするコンピュータ・プログラム。
JP2006238228A 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP4961909B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2006238228A JP4961909B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
TW096130941A TW200828196A (en) 2006-09-01 2007-08-21 Encryption device, encryption method, and computer program
EP07806210A EP2058784A1 (en) 2006-09-01 2007-08-29 Encryption device, encryption method, and computer program
US12/439,544 US8369522B2 (en) 2006-09-01 2007-08-29 Encryption processing apparatus, encryption method, and computer program
PCT/JP2007/066733 WO2008026625A1 (fr) 2006-09-01 2007-08-29 Dispositif de codage, procédé de codage et programme informatique
CN201110091269.1A CN102158337B (zh) 2006-09-01 2007-08-29 信息处理装置
CN200780032112.3A CN101512619B (zh) 2006-09-01 2007-08-29 密码处理装置和密码处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006238228A JP4961909B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2008058831A JP2008058831A (ja) 2008-03-13
JP4961909B2 true JP4961909B2 (ja) 2012-06-27

Family

ID=39135907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006238228A Expired - Fee Related JP4961909B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US8369522B2 (ja)
EP (1) EP2058784A1 (ja)
JP (1) JP4961909B2 (ja)
CN (2) CN101512619B (ja)
TW (1) TW200828196A (ja)
WO (1) WO2008026625A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE47633E1 (en) 2005-06-22 2019-10-01 Odyssey Wireless Inc. Systems/methods of conducting a financial transaction using a smartphone
US8233554B2 (en) 2010-03-29 2012-07-31 Eices Research, Inc. Increased capacity communications for OFDM-based wireless communications systems/methods/devices
US8670493B2 (en) 2005-06-22 2014-03-11 Eices Research, Inc. Systems and/or methods of increased privacy wireless communications
US20080019517A1 (en) * 2006-04-06 2008-01-24 Peter Munguia Control work key store for multiple data streams
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US20160286532A1 (en) * 2012-01-24 2016-09-29 Odyssey Wireless, Inc. Systems/methods of preferentially using a first asset, refraining from using a second asset and providing reduced levels of interference to gps and/or satellites
US9374746B1 (en) 2008-07-07 2016-06-21 Odyssey Wireless, Inc. Systems/methods of spatial multiplexing
US8848904B2 (en) * 2008-10-24 2014-09-30 University Of Maryland, College Park Method and implementation for information exchange using Markov models
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
CN102045709B (zh) * 2009-10-13 2013-11-06 中兴通讯股份有限公司 移动终端应用数据的下载方法、系统及移动终端
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
FR2966953B1 (fr) * 2010-11-02 2015-08-28 St Microelectronics Rousset Procede de contremesure cryptographique par derivation d'une donnee secrete
EP2822215A1 (en) * 2012-03-02 2015-01-07 Sony Corporation Information processing device, information processing method, and programme
US8744078B2 (en) * 2012-06-05 2014-06-03 Secure Channels Sa System and method for securing multiple data segments having different lengths using pattern keys having multiple different strengths
JP5871827B2 (ja) * 2013-01-11 2016-03-01 日本電信電話株式会社 安全性強化システム、安全性強化装置、検証装置、およびプログラム
US9094191B2 (en) 2013-03-14 2015-07-28 Qualcomm Incorporated Master key encryption functions for transmitter-receiver pairing as a countermeasure to thwart key recovery attacks
US10148430B1 (en) * 2013-04-17 2018-12-04 Amazon Technologies, Inc Revocable stream ciphers for upgrading encryption in a shared resource environment
JP2014240921A (ja) * 2013-06-12 2014-12-25 株式会社東芝 暗号装置、暗号処理方法及び暗号処理プログラム
US20150227472A1 (en) * 2014-02-10 2015-08-13 Kabushiki Kaisha Toshiba Memory system, controller, and method
JP2015191107A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
KR101593169B1 (ko) * 2014-08-20 2016-02-15 한국전자통신연구원 페이스텔 구조의 가변길이 블록암호 장치 및 방법
CN104253684B (zh) * 2014-09-23 2018-02-02 深圳市汇顶科技股份有限公司 加密方法和加密装置
GB201505434D0 (en) * 2015-03-30 2015-05-13 Irdeto Bv Cryptographic processing
EP3220304B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
US10742405B2 (en) * 2016-12-16 2020-08-11 The Boeing Company Method and system for generation of cipher round keys by bit-mixers
WO2020186125A1 (en) 2019-03-13 2020-09-17 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317638A (en) * 1992-07-17 1994-05-31 International Business Machines Corporation Performance enhancement for ANSI X3.92 data encryption algorithm standard
CN1130871C (zh) * 1996-04-30 2003-12-10 东芝株式会社 加密装置及加密方法
JP3505482B2 (ja) * 2000-07-12 2004-03-08 株式会社東芝 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
WO2002058036A1 (en) * 2001-01-22 2002-07-25 Fujitsu Limited Encryption circuit
JP4128395B2 (ja) * 2002-05-23 2008-07-30 三菱電機株式会社 データ変換装置

Also Published As

Publication number Publication date
CN102158337A (zh) 2011-08-17
TW200828196A (en) 2008-07-01
CN101512619B (zh) 2012-04-18
WO2008026625A1 (fr) 2008-03-06
JP2008058831A (ja) 2008-03-13
TWI340368B (ja) 2011-04-11
US20100008498A1 (en) 2010-01-14
EP2058784A1 (en) 2009-05-13
CN102158337B (zh) 2014-06-04
CN101512619A (zh) 2009-08-19
US8369522B2 (en) 2013-02-05

Similar Documents

Publication Publication Date Title
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5682525B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
WO2012132623A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090820

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120210

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4961909

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

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

LAPS Cancellation because of no payment of annual fees