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

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

Info

Publication number
JP2008058827A
JP2008058827A JP2006238224A JP2006238224A JP2008058827A JP 2008058827 A JP2008058827 A JP 2008058827A JP 2006238224 A JP2006238224 A JP 2006238224A JP 2006238224 A JP2006238224 A JP 2006238224A JP 2008058827 A JP2008058827 A JP 2008058827A
Authority
JP
Japan
Prior art keywords
key
round
data
generated
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006238224A
Other languages
English (en)
Other versions
JP4905000B2 (ja
Inventor
Toru Akishita
徹 秋下
Taizo Shirai
太三 白井
Koushi Shibuya
香士 渋谷
Shiho Moriai
志帆 盛合
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 Interactive Entertainment Inc
Sony Corp
Original Assignee
Sony Corp
Sony Computer Entertainment Inc
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, Sony Computer Entertainment Inc filed Critical Sony Corp
Priority to JP2006238224A priority Critical patent/JP4905000B2/ja
Priority to US11/846,853 priority patent/US8290148B2/en
Priority to EP07253461A priority patent/EP1895708A1/en
Priority to CN200710167659.6A priority patent/CN101162557B/zh
Publication of JP2008058827A publication Critical patent/JP2008058827A/ja
Application granted granted Critical
Publication of JP4905000B2 publication Critical patent/JP4905000B2/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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】鍵解析の困難性を高め、安全性の高めた共通鍵ブロック暗号処理構成を実現する。
【解決手段】共通鍵ブロック暗号処理に適用するラウンド鍵を生成する鍵スケジュール部において、秘密鍵から生成したmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド中間鍵を生成して、このラウンド中間鍵に基づいて複数の異なるラウンド鍵を生成する。または、さらにラウンド中間鍵からの選択データに対して各ラウンド毎に異なる定数を適用した排他的論理和演算によりラウンド鍵を生成する。本構成により、鍵の解析困難性を高めた安全性の高い暗号処理構成が実現される。
【選択図】図19

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の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵の変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成する構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、秘密鍵の変換処理によって生成するmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行し、q個のラウンド中間鍵{MK,MK,・・・,MKq−1,MK}を、
MK=MK
MK=MKx
MK=MKx2×s
・・・
MKq−1=MKx(q−2)×s
MK=MKx(q−1)×s
上記式に従って生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、生成するラウンド中間鍵数をq個としたとき、前記x倍演算を繰り返し実行して、q個の異なるラウンド中間鍵を生成した後、q−1回目の最終的なx倍演算によって生成されたラウンド中間鍵データ、
MK=MKx(q−1)×s
に対して、
−(q−1)×s倍算を実行して、
倍演算実行前のオリジナル中間鍵MKに戻す処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記x倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵を生成することを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記x倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記x倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択を実行し、さらにビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記秘密鍵の変換処理による中間鍵生成処理を、前記秘密鍵の構成データに対する非線形変換処理によって実行する構成であることを特徴とする。
さらに、本発明の第2の側面は、
暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、
鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成するラウンド中間鍵生成ステップと、
前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成するビット選択ステップと、
を有することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップは、秘密鍵の変換処理によって生成するmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行し、q個のラウンド中間鍵{MK,MK,・・・,MKq−1,MK}を、
MK=MK
MK=MKx
MK=MKx2×s
・・・
MKq−1=MKx(q−2)×s
MK=MKx(q−1)×s
上記式に従って生成するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さらに、前記鍵スケジュール部において、前記ラウンド鍵生成ステップにおいて前記x倍演算を繰り返し実行して、q個の異なるラウンド中間鍵を生成した後、q−1回目の最終的なx倍演算によって生成されたラウンド中間鍵データ、
MK=MKx(q−1)×s
に対して、
−(q−1)×s倍算を実行して、
倍演算実行前のオリジナル中間鍵MKに戻す処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップは、前記x倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップは、前記ビット選択ステップにおいて抽出したビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記ラウンド鍵生成ステップにおける秘密鍵の変換処理は、前記秘密鍵の構成データに対する非線形変換処理によって実行することを特徴とする。
さらに、本発明の第3の側面は、
暗号処理装置において共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる暗号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成させるラウンド中間鍵生成ステップと、
前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成させるビット選択ステップと、
を実行させるステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例の構成によれば、共通鍵ブロック暗号処理を実行する暗号処理装置におけるラウンド鍵を生成する鍵スケジュール部において、秘密鍵から生成したmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド中間鍵を生成して、このラウンド中間鍵に基づいて複数の異なるラウンド鍵を生成する構成とした。また、本発明の一実施例の構成によれば、さらに、ラウンド中間鍵から選択されたデータに対して、各ラウンド毎に異なる定数を適用した排他的論理和演算によりラウンド鍵を生成する構成とした。本構成により、鍵の解析困難性を高めた安全性の高い暗号処理構成が実現される。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.共通鍵ブロック暗号の概要
2.鍵スケジュール部におけるx倍演算による中間鍵データの生成を伴う暗号処理構成
(2−1)鍵スケジュール部の詳細構成について
(2−2)中間鍵データの一般的な生成処理構成について
(2−3)本発明の第1実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
(2−4)本発明の第2実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
3.暗号処理装置の構成例
[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の逆関数が用いられる。ただし、暗号化処理部E10の構造によっては、復号処理においても、同様の共通鍵ブロック暗号処理部E10が適用でき、鍵の入力順などのシーケンスの変更によって復号処理が可能となる。
図1に示す共通鍵ブロック暗号処理部E10の内部構成について、図2を参照して説明する。ブロック暗号は2つの部分に分けて考えることができる。ひとつは鍵Kを入力とし、ある定められたステップにより入力鍵Kのビット長を拡大して拡大鍵K'(ビット長k')を出力する鍵スケジュール部11と、平文Pと鍵スケジュール部11から入力する拡大鍵K'を受け取り、平文Pを入力して、拡大鍵K'を適用した暗号処理を実行して、暗号文Cを生成するためのデータの変換を実行する暗号処理部12である。なお、先に説明したように、暗号化処理部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の構造によっては、例えば、適用するラウンド鍵の適用シーケンスを、暗号化処理と逆に設定し、暗号文を暗号処理部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.鍵スケジュール部におけるx倍演算による中間鍵データの生成を伴う暗号処理構成]
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を行なう構成である。この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになり、実用上、大きな問題となる。
上述した説明から明らかなように、共通鍵ブロック暗号においては、各ラウンドにおいて拡大鍵に基づいて生成されるラウンド鍵を適用した処理がなされる。暗号攻撃では、ラウンド鍵の解析に基づいて拡大鍵を復元し、さらに拡大鍵の元データである秘密鍵を解析するといった手順の攻撃が行なわれる場合がある。以下では、このような鍵解析の困難性を高め、安全性の高めた暗号処理装置の構成例について説明する。
以下、以下の各項目に従って、説明を行なう。
(2−1)鍵スケジュール部の詳細構成について
(2−2)中間鍵データの一般的な生成処理構成について
(2−3)本発明の第1実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
(2−4)本発明の第2実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
(2−1)鍵スケジュール部の詳細構成について
先に、例えば図2を参照して説明したように、共通鍵ブロック暗号においては、鍵スケジュール部が、入力鍵Kのビット長を拡大して拡大鍵K'(ビット長k')を出力し、拡大鍵に基づいて生成されるラウンド鍵RKを適用したラウンド関数が実行される。
鍵スケジュール部は、例えば、数百ビットの鍵データを数千ビット程度の拡大鍵データに拡張して、ラウンド関数を実行するデータ暗号化部に供給する。拡大鍵データのうち、データ暗号化部のラウンド関数に入力される拡大鍵の一部をラウンド鍵と呼ぶ。また、ラウンド関数以外にもラウンド鍵が挿入される場合がある。例えば、最初のラウンド関数の前に挿入(EXOR)される鍵を初期鍵、最後のラウンド関数の後に挿入(EXOR)される鍵を最終鍵と呼ぶ。
図9および図10を参照して暗号化処理と復号処理における秘密鍵Kと、初期鍵、ラウンド鍵、最終鍵の対応について説明する。図9、図10には、それぞれr段をラウンド数としたブロック暗号を実行する暗号化構成および復号構成を示している。
例えば、図9は、r段をラウンド数としたブロック暗号を実行する暗号化構成であり、秘密鍵[K]111は、暗号化鍵スケジュール部112に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、初期鍵、ラウンド鍵、最終鍵を含む暗号化拡大鍵113を生成する。データ暗号化部114は、r段をラウンド数としたブロック暗号を実行する構成であり、暗号化の場合に、1からr段目までのラウンド関数にそれぞれラウンド鍵{RK,RK,・・・,RKr−1,RK}が順に入力されてラウンド関数(F関数)が実行される。また、初期鍵として[IK]、最終鍵として[FK]が入力され、処理データとの排他的論理和演算(EXOR)が行なわれる。
図10は、復号処理構成を示している。秘密鍵[K]121は、復号鍵スケジュール部122に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、初期鍵、ラウンド鍵、最終鍵を含む復号拡大鍵123を生成する。なお、秘密鍵[K]121は暗号化処理において適用した図9に示す秘密鍵[K]111と同じ鍵が適用される。
データ復号部124は、r段をラウンド数としたブロック暗号を実行する構成であり、復号処理の場合は、最終鍵[FK]が入力され、処理データとの排他的論理和演算(EXOR)がなされた後、{RK,RKr−1,・・・,RK,RK}の各ラウンド鍵が順に入力されてラウンド関数(F関数)が実行され、最後に初期鍵[IK]が入力され、処理データとの排他的論理和演算(EXOR)がなされる。
なお、以下では、初期鍵、最終鍵も含めてラウンド鍵と呼ぶ。
鍵解析を行なう暗号攻撃に対する耐性の高い、すなわち鍵解析を困難として安全性を高めた構成とするための、ラウンド鍵が満たす理想的な性質としては以下の性質がある。
(a)ラウンド鍵が分かっても鍵データが復元できないこと
(b)ラウンド鍵同士が独立であること
これらの性質がある。
(a)は、万が一各ラウンドにおいて適用するラウンド鍵が解析された場合でも、そのラウンド鍵から元の秘密鍵を復元不可能とすることで安全性を高められることを意味する。また、(b)は1つのラウンド鍵と他のラウンド鍵とのデータ間に何らかの関係がある場合、1つのラウンド鍵の解析に成功した場合、他のラウンド鍵が推定可能になり、このような関連性を排除することで安全性が高まるということを意味する。
しかしながら、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を生成することは難しく、実際には、秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる場合が多い。また、上記条件を満たしていない場合でも、安全性上、
*slide attack(スライド攻撃)に対し十分な耐性をもつこと
*related cipher attack(関連暗号攻撃)に対して十分な耐性をもつことが必要とされる。
Slide attack(スライド攻撃)は,元の暗号化関数とそれをずらした暗号化関数とで、重なったラウンド関数のデータ値が同じになる平文・暗号文を検出し、これを利用してずらした部分の鍵を効率よく求める攻撃である。異なる秘密鍵に対して数段分のラウンド鍵が一致する場合に攻撃可能となる。
また、Related cipher attack (関連暗号攻撃)は,以下のような攻撃である。ある共通鍵ブロック暗号がラウンド数rのkビットの鍵長,ラウンド数rのkビットの鍵長を共にサポートしている場合(r<rかつk<kとする)を考える。鍵長kビットのラウンド鍵が鍵長kビットのラウンド鍵の一部と一致する場合を考える。この場合、鍵長kビットの場合のデータ暗号部の出力を用いることにより、鍵長kビットの場合の残りのラウンド鍵を攻撃することが可能になる。
(2−2)中間鍵データの一般的な生成処理構成について
上述したように、上述のラウンド鍵を利用する共通鍵ブロック暗号処理を実行する装置を構成する場合、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を生成することは難しく、実際には、秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる。
この秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる場合の鍵スケジュール部の一般的な構成例について、図11〜図13を参照して説明する。
図11は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図12は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図13は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例を示している。
まず、図11に示す暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成、および処理について説明する。秘密鍵Kをkビットとする。秘密鍵Kを、非線形変換回路201に入力し、非線形変換処理を行いmビットの中間鍵データを生成する。中間鍵をMKとする。
中間鍵MKは、セレクタ202を介してレジスタRegL203に入力され格納される。セレクタ202には、sビット左循環シフト回路211、(q−1)×sビット右循環シフト回路212が接続され、セレクタ202を介してレジスタRegL203に対してそれぞれの循環シフト処理信号が入力され、レジスタRegL203に格納されたデータのsビット左循環シフト処理、または(q−1)×sビット右循環シフト処理が実行される。なお、sは1以上の整数である。
例えば、sビット左循環シフト回路211は、レジスタRegL203に格納されたmビットの中間鍵MKのsビット循環左シフトを実行し、次のように、レジスタRegL203に格納された中間鍵MKから、mビット×qのラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}を作り出す。
MK=MK
MK=MK<<<s
MK=MK<<<(2×s)
・・・
MKq−1=MK<<<((q−2)×s)
MK=MK<<<((q−1)×s)
なお、上記式において、[<<<s]は、sビット循環左シフトを表す。
MK=MKは、シフト量ゼロのデータであり、中間鍵MKに等しく、
MK=MK<<<sは、中間鍵MKに対して、左にsビットの循環シフトを行なったデータ、
MK=MK<<<(2×s)は、中間鍵MKに対して、左に2×sビットのシフトを行なったデータ、
・・・をそれぞれ示している。
ここで、初期鍵[IK]および最終鍵[FK]を含めたラウンド鍵を、それぞれl(エル)ビットであるとすると、l(エル)ビット×(r+2)のラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}はラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}からデータを切り出して作られる。
例えば、セレクタ202に設定された中間鍵MKのビット数mが、ラウンド鍵のビット数(l(エル))の2倍、すなわち、m=2×l(エル)とした場合、ラウンド鍵をラウンド中間鍵データから順に過不足なく切り出していくとすると、
IK=(MK
RK=(MK
RK=(MK
RK=(MK
・・・
RKr−2=(MKq−1
RKr−1=(MKq−1
RK=(MK
FK=(MK
となる。
なお、(x)はxの上位l(エル)ビット、(x)はxの下位l(エル)ビットを表す。このとき、q=(r+2)/2を満たす。
この方式を適用した実装構成および処理について、図11を参照して説明する。まず、中間鍵生成プロセスにおいて、kビットの秘密鍵Kを非線形変換回路201に入力して、mビットの中間鍵データMKを生成してセレクタ202を介してそのままシフト処理なしに、ラウンド中間鍵用レジスタRegL203に格納する。
暗号化の場合には、sビット左循環シフト回路211の処理信号をセレクタ202を介してラウンド中間鍵用レジスタRegL203に選択入力し、ラウンド中間鍵用レジスタRegL203に格納されたmビットの中間鍵データMKに対するsビット循環左シフトを繰り返し実行して、ラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}を順次作り出すことができる。
さらに、ラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}は、各ラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}から、予め定められた選択シーケンスに従って所定のデータを選択することにより作り出される。データ選択は、セレクタ204において実行され、セレクタ204から、各ラウントにおいてl(エル)ビットのラウンド鍵が出力される。
この処理によって、すべてのラウンドのラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}が生成されて出力されると、最後にラウンド中間鍵用レジスタRegL203に格納されたデータを(q−1)×sビット循環右シフトする。この処理は、(q−1)×sビット右循環シフト回路212の処理信号をセレクタ202を介してラウンド中間鍵用レジスタRegL203に選択入力することで実行される。この右シフト処理によって、ラウンド中間鍵用レジスタRegL203に格納されたデータを、シフトなしの初期状態としての中間鍵データMKに戻すことができる。
図12は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例である。図12に示す復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部において、非線形変換回路201、セレクタ202、レジスタRegL203、セレクタ204は、図11に示す構成と同様であり、シフト回路221,222のみが異なっている。
すなわち、復号処理におけるシフト回路221,222は、暗号処理におけるシフト回路211,212と逆向きのシフトを実行する回路、すなわち、
sビット右循環シフト回路221と、
(q−1)×sビット左循環シフト回路222
によって構成される。
この復号処理における鍵スケジュール部では、まず、(q−1)×sビット左循環シフト回路222の処理によって、レジスタRegL203に格納された中間鍵データを、(q−1)×sビット循環左シフトする。その後に、sビット右循環シフト回路221の処理により、各ラウンドのラウンド鍵生成毎に、レジスタRegL203に格納されたデータを適宜sビット右循環シフトする。この処理シーケンスにより、ラウンド中間鍵データは、暗号処理時と逆の順番で生成される。すなわち、{MK,MKq−1,・・・,MK,MK}を順次作り出すことができる。ラウンド鍵はラウンド中間鍵データから所定のデータをセレクタ204において選択することにより作り出される。
なお、図11、図12は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理の際のラウンド鍵生成処理を実行する構成であるが、これらの機能を兼ね備えた構成も構築可能である。この構成を図13に示す。図13に示す構成では、循環シフト回路231〜234を備え、それぞれ、
sビット左循環シフト回路231、
sビット右循環シフト回路232、
(q−1)×sビット右循環シフト回路233、
(q−1)×sビット左循環シフト回路234、
であり、図11、図12に構成された循環シフト回路をすべて含む構成であり、
sビット左循環シフト、sビット右循環シフト、(q−1)×sビット右循環シフト、(q−1)×sビット左循環シフトを選択的に実行することが可能な構成を持つ。この構成を適用することで、暗号化および復号処理いずれの場合もラウンド鍵を生成して出力することが可能となる。
次に、上述した鍵スケジュール部で生成されるラウンド中間鍵データの一様性について考える。ここで、ラウンド中間鍵データ、すなわち、
MK=MK
のビット列を
(mkm−1,mkm−2,…,mk,mk
とする。
このとき、ラウンド中間鍵データ
MK=(MK<<<s)
=(mkm−s−1,mkm−s−2,…,mk,mk,mkm−1,mkm−2,…,mkm−s+1,mkm−s
となる。
2つの異なるラウンド中間鍵データMKとラウンド中間鍵データMKの排他的論理和、すなわち、
MK(EXOR)MKを、
MK(EXOR)MK=(um−1,um−2,…,u,u)とする。なお(EXOR)は排他的論理和演算を示す演算子とする。また、(um−1,um−2,…,u,u)は、ラウンド中間鍵データMKとラウンド中間鍵データMKの排他的論理和演算の結果データの構成ビットを示す。すると、
m−1=mkm−1(EXOR)mkm−s−1
m−2=mkm−2(EXOR)mkm−s−2
・・・
s+1=mks+1(EXOR)mk
=mk(EXOR)mk
s−1=mks−1(EXOR)mkm−1
・・・
=mk(EXOR)mkm−s+1
=mk(EXOR)mkm−s
と、表すことができる。
このとき、ビット[u]は他のビット(um−1,um−2,…,u,u)を用いて、
=um−1(EXOR)um−2(EXOR),・・・(EXOR)u(EXOR)u
と表現できる。つまり、中間鍵データMKがランダムであるとしても、2つのラウンド中間鍵データの排他的論理和演算の結果、
MK(EXOR)MK
この結果として得られるビットは、上記の性質を満たすことになり、結果として、mビット(um−1,um−2,…,u,u)中の1ビット(u)は、他のビット情報によって記述可能となり、その情報量が1ビット分欠損してしまう。1ビット欠損することは、例えばビット解析を行なう場合に、解析対象とするビット数を削減することが可能となることを意味し、解析、すなわち鍵解析を行なう暗号攻撃に有利な条件となる。
同様に、任意のラウンド中間鍵データ同士の排他的論理和、
MK(EXOR)MK(0≦i,j≦q−1,i≠j)
についても、その情報量が1ビット分欠損してしまう。
MK(EXOR)MKの情報量が1ビット分欠損することによる影響に関しては,例えばMK(EXOR)MKを全数探索する場合にその情報量が少ないため、全数探索が容易になり、鍵の解析を容易にし、暗号攻撃を行いやすくする弊害を発生させる。
また、中間鍵データ{MK,MK,・・・,MKq−1,MK}を生成する際に、循環シフトを用いた場合、中間鍵データMKの全てのビットが0になる場合,または全てのビットが1になる場合には、任意のラウンド中間鍵データMKも同様に全てのビットが0,または全てのビットが1となってしまい、全てのラウンド鍵が同じになってしまうという問題を発生させる。
また、秘密鍵Kより生成されたラウンド中間鍵データMKと別の秘密鍵K'より生成されたラウンド中間鍵データMK'が同じ値になった場合には、結果として、その後のシフト処理によって生成される各ラウンド中間鍵データも等しくなる。すなわち、
MK=MK'
MK=MK'
・・・
MKq−2=MKq−1'
MKq−1=MK'
上記状態が発生する。このように、多くのラウンド中間鍵データが同じになり、ラウンド中間鍵データから生成するラウンド鍵もセレクタ条件が等しい場合には同じになってしまう。このような鍵の出現は、前述のslide attack(スライド攻撃)を可能とするという問題を発生させることになる。
また、この鍵スケジュール部がラウンド数rのkビットの鍵長、ラウンド数rのkビットを共にサポートしている場合(r<rかつk<kとする)を考える。kビットの秘密鍵Kから生成された中間鍵MKとkビットの秘密鍵Kから生成された中間鍵MK'が一致した場合には、秘密鍵MKのラウンド中間鍵データと秘密鍵MK'のr段分のラウンド中間鍵データが等しくなる。このような状況は、前述したrelated cipher attack(関連暗号攻撃)の適用を可能にするという問題を発生させることになる。
上記のように、図11〜図13を参照して説明した中間鍵データの生成構成、すなわち、1つの中間鍵MKに対してシフト処理を実行して複数の中間鍵データ{MK,MK,・・・,MKq−1,MK}を生成する構成では、以下のような明らかに暗号攻撃を容易にするという問題を発生させる。すなわち、
*ラウンド中間鍵データの排他的論理和の情報量が1ビット分欠損する。
*中間鍵データの全てのビットが0になる場合,または全てのビットが1になる場合にはラウンド鍵が全て同じとなる。
*Slide attackに対して十分な耐性がない。
*Related cipher attackに対して十分な耐性がない。
このように、暗号攻撃を容易にする欠点をもつ。
(2−3)本発明の第1実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
以下、上述した循環シフト処理による中間鍵データの生成処理における問題点を解決し、様々な暗号攻撃に対する耐性の高い、すなわち安全性の高い暗号処理を実行するための中間鍵データおよびラウンド鍵の生成処理構成について説明する。
以下では、秘密鍵Kに基づく非線形変換処理の結果として得られた中間鍵MKに対して、循環シフト処理を実行するのではなく、x倍演算を用いてラウンド中間鍵データを生成する処理構成について説明する。
すなわち、秘密鍵Kに基づく非線形変換処理の結果として得られる中間鍵MKから、中間鍵データ{MK,MK,・・・,MKq−1,MK}を生成する際、sビット循環シフトを適用せず、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を用いる。
例えば、秘密鍵Kに基づく非線形変換処理の結果として得られる中間鍵MKのビット数mをm=128とし、m次の既約多項式をf(x)=x128+x+x+x+1とすると、拡大体GF(2128)上のx倍演算は以下のように定義できる。128bitのデータを、
A=(a127,a126,…,a,a),
B=(b127,b126,…,b,b
とする。
拡大体GF(2128)上のx倍演算:B=Axは、以下のように表現される。
(a127,a126,・・・,a,a)→(b127,b126,・・・,b,b
ここで、
127=a126
126=a125
・・・
=a
=a(EXOR)a127
=a
=a
=a
=a
=a(EXOR)a127
=a(EXOR)a127
=a127
となる。
上記演算は、拡大体GF(2128)上のx倍演算:B=Axによって得られるデータBとデータAの対応を示している。x倍演算は上記のx倍演算をs回繰り返した演算となる。
また、x倍演算の逆変換であるx−1倍演算は以下のように定義できる。
−1倍演算:B=Ax−1
(a127,a126,…,a,a)→(b127,b126,…,b,b
ここで、
127=a
126=a127
125=a126
・・・
=a
=a(EXOR)a
=a
=a
=a
=a
=a(EXOR)a
=a(EXOR)a
となる。
上記演算は、拡大体GF(2128)上のx倍演算の逆変換であるx−1倍演算:B=Ax−1によって得られるデータBとデータAの対応を示している。なお、x−s倍演算は上記のx−1倍演算をs回繰り返した演算となる。
倍演算、またはx−s倍演算を用いたラウンド鍵生成処理構成について、図14〜図16を参照して説明する。
図14は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図15は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図16は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例を示している。
まず、図14に示す暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成、および処理について説明する。秘密鍵Kをkビットとする。秘密鍵Kを、非線形変換回路301に入力し、非線形変換処理を行いmビットの中間鍵データを生成する。中間鍵をMKとする。
中間鍵MKは、セレクタ302を介してレジスタRegL303に入力され格納される。セレクタ302には、x倍演算回路311、x−(q−1)×s倍演算回路312が接続され、セレクタ302を介してレジスタRegL303に対して、それぞれの処理信号を入力し、レジスタRegL303に格納されたデータのx倍演算、またはx(q−1)×s倍演算を実行する。
例えば、x倍演算回路311は、レジスタRegL303に格納されたmビットの中間鍵MKのx倍演算を実行し、次のように、レジスタRegL303に格納された中間鍵MKから、mビット×qのラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}を作り出す。
MK=MK
MK=MKx
MK=MKx2×s
・・・
MKq−1=MKx(q−2)×s
MK=MKx(q−1)×s
上記式において、xは、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算であり、先に説明したx倍演算をs回繰り返した演算となる。x2×sは、先に説明したx倍演算を2s回繰り返した演算となる。
ここで、初期鍵[IK]および最終鍵[FK]を含めたラウンド鍵を、それぞれl(エル)ビットであるとすると、l(エル)ビット×(r+2)のラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}は、上記手法によって生成されたラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}からデータを切り出して作られる。
この方式を適用した実装構成および処理について、図14を参照して説明する。まず、中間鍵生成プロセスにおいて、kビットの秘密鍵Kを非線形変換回路301に入力して、mビットの中間鍵データMKを生成してセレクタ302を介して、そのままシフト処理なしに、ラウンド中間鍵用レジスタRegL303に格納する。
暗号化の場合には、x倍演算回路311の処理信号をセレクタ302を介してラウンド中間鍵用レジスタRegL303に選択入力し、ラウンド中間鍵用レジスタRegL303に格納されたmビットの中間鍵データMKに対するx倍演算を繰り返し実行して、上述した演算、すなわち、
MK=MK
MK=MKx
MK=MKx2×s
・・・
MKq−1=MKx(q−2)×s
MK=MKx(q−1)×s
これらの演算を実行して、ラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}を順次作り出すことができる。
さらに、ラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}は、各ラウンド中間鍵データ{MK,MK,・・・,MKq−1,MK}から、予め定められた選択シーケンスに従って所定のデータを選択することにより作り出される。データ選択は、セレクタ204において実行され、セレクタ204から、各ラウントにおいてl(エル)ビットのラウンド鍵が出力される。
この処理によって、すべてのラウンドのラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}が生成されて出力されると、最後にラウンド中間鍵用レジスタRegL203に格納されたデータに対して、x−(q−1)×s倍演算を実行する。この処理は、x−(q−1)×s倍演算回路312の処理信号をセレクタ302を介してラウンド中間鍵用レジスタRegL203に選択入力することで実行される。このx−(q−1)×s倍演算処理によって、ラウンド中間鍵用レジスタRegL303に格納されたデータを、初期状態としての中間鍵データMKに戻すことができる。すなわち、
q−1回目の最終的なx倍演算によって生成されたラウンド中間鍵データ、
MK=MKx(q−1)×s
に対して、
−(q−1)×s倍算を実行して、
倍演算実行前のオリジナル中間鍵MKに戻す処理を実行する。
図15は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例である。図15に示す復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部において、非線形変換回路301、セレクタ302、レジスタRegL303、セレクタ304は、図14に示す構成と同様であり、演算回路321,322のみが異なっている。
すなわち、復号処理における演算回路321,322は、暗号処理における演算回路311,312の実行するx倍算の逆変換であるx−1倍算を実行する回路、すなわち、
−s倍演算回路321と、
(q−1)×s倍演算回路322
によって構成される。
この復号処理における鍵スケジュール部では、まず、x(q−1)×s倍演算回路322の処理によって、レジスタRegL303に格納された中間鍵データに対して、x(q−1)×s倍演算処理を実行する。その後に、x−s倍演算回路321の処理を実行して、各ラウンドのラウンド鍵生成毎に、レジスタRegL203に格納されたデータに対するx−s倍演算処理を実行する。この処理シーケンスにより、ラウンド中間鍵データは、暗号処理時と逆の順番で生成される。すなわち、{MK,MKq−1,・・・,MK,MK}を順次作り出すことができる。ラウンド鍵はラウンド中間鍵データから所定のデータをセレクタ304において選択することにより作り出される。
なお、図14、図15は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理の際のラウンド鍵生成処理を実行する構成であるが、これらの機能を兼ね備えた構成も構築可能である。この構成を図16に示す。図16に示す構成では、演算回路331〜334を備え、それぞれ、
倍演算回路331、
−s倍演算回路332、
−(q−1)×s倍演算回路333、
(q−1)×s倍演算回路334、
であり、図14、図15に構成された演算回路をすべて含む構成であり、
倍演算、x−s倍演算、x−(q−1)×s倍演算、x(q−1)×s倍演算を選択的に実行することが可能な構成を持つ。この構成を適用することで、暗号化および復号処理いずれの場合もラウンド鍵を生成して出力することが可能となる。
次に、上述した鍵スケジュール部で生成されるラウンド中間鍵データの一様性について考える。2つの異なるラウンド中間鍵データMKとラウンド中間鍵データMKの排他的論理和、すなわち、
MK(EXOR)MKは、以下に示すように、
MK(EXOR)MK
=MK(EXOR)MKx
=MK(1(EXOR)x
と一意に表せる。
逆に演算を施していない元の中間鍵MKは、2つの異なるラウンド中間鍵データMKとラウンド中間鍵データMKの排他的論理和、
MK(EXOR)MK
を適用して、
MK=(MK(EXOR)MK)(1(EXOR)x−1
として、こちらも一意に表せる。
つまり、オリジナルの中間鍵MKと、中間鍵MKに対する演算によって生成される複数の異なるラウンド中間鍵データMKとラウンド中間鍵データMKの排他的論理和、すなわち、
MK(EXOR)MK
とは、一対一の関係にあり、前述した循環シフト処理による中間鍵データの生成構成とは異なり、中間鍵データMKに対してMK(EXOR)MKの情報量が欠損することはない。
同様に、任意のラウンド中間鍵データ同士の排他的論理和、
MK(EXOR)MK (0≦i,j≦q−1,i≠j)
についても、中間鍵データMKに対してその情報量が欠損することはない。従って、鍵解析において、解析不要とするビット情報が発生せず、ビット解析の困難性を高めることが可能となる。
また,拡大体GF(2128)上のx倍演算のb,b,bで確認できるように、x倍演算においては被乗数の上位ビットがその下位ビットと排他的論理和された値が結果のビットに割り当てられることがあるため、sビット循環シフトと比較してラウンド中間鍵データが攪拌されやすいと考えられる。また、(q−1)×sを、中間鍵データMKのビット長mに近い値に設定することにより、ラウンド中間鍵データをより多く攪拌することが可能になる。
さらに、中間鍵データMKの全てのビットが1になる場合を考える。
MK=(mkm−1,mkm−2,…,mk,mk
とする。
このとき、中間鍵データMKに対してx倍演算を施したMKxは上記の拡大体GF(2128)上のx倍演算で確認できるように、mkm−1の値で排他的論理和をとったMKxのビットが0となることから、MKxの全てのビットが1になることはない。
同様にMKxも全てのビットが1になることはないため、任意のラウンド中間鍵データMKも同様に全てのビットが1になることはなく、全てのラウンド鍵が同じになることはない。
従って、例えば前述のslide attack(スライド攻撃)を困難にすることが可能であり、暗号攻撃に対する耐性の高い、すなわち安全性の高い暗号処理が実現される。
(2−4)本発明の第2実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について
次に、本発明の第2実施例に係る中間鍵データおよびラウンド鍵の生成処理構成について、図17〜図19を参照して説明する。以下において説明する実施例は、図14〜図16を参照して説明した構成によって生成するラウンド鍵データに対して、ラウンド毎に異なる定数Cを排他的論理和(EXOR)し、この結果をラウンド鍵とする構成である。
すなわち、図14〜図16を参照して説明した構成によって生成するラウンド鍵データに対して、各ラウンド(i)ごとに、異なる定数C(1≦i≦r−1)を排他的論理和(EXOR)したデータをラウンド鍵とする。
本実施例に係るx倍演算、またはx−s倍演算を用い、さらに、定数Cの排他的論理和(EXOR)を適用したラウンド鍵生成処理構成について、図17〜図19を参照して説明する。
図17は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図18は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例、
図19は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例を示している。
図17は、先に説明した図14に示すx倍演算を適用した暗号化用のラウンド鍵生成処理を実行するラウンド鍵生成処理構成に対して、各ラウンド(i)ごとに、異なる定数C(1≦i≦r−1)を生成する定数C生成回路401と、定数C生成回路401において生成したラウンド毎の定数C(1≦i≦r−1)と、セレクタ304の選択する各ラウンド毎のデータとの排他的論理和演算(EXOR)を実行する排他的論理和(EXOR)演算部402を追加した構成である。本実施例では、この排他的論理和(EXOR)演算部402による演算結果をラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}として出力する。
図18は、先に説明した図15に示すx−s倍演算を適用した復号用のラウンド鍵生成処理を実行するラウンド鍵生成処理構成に対して、定数C生成回路401と、排他的論理和(EXOR)演算部402を追加した構成であり、図19は、図17、図18の両者を実行可能とした構成であり、先に説明した図16に示す構成に、定数C生成回路401と、排他的論理和(EXOR)演算部402を追加した構成である。
これらの構成では、セレクタ304の出力する各ラウンド毎のデータと、ラウンド毎に異なる定数Cを排他的論理和(EXOR)し、この結果をラウンド鍵とする。これは、例えば、中間鍵データMKの全てのビットが0となった場合、最終的に出力されるラウンド鍵{IK,RK,RK,・・・,RKr−1,RK,FK}を同じデータとしないための措置である。
例えば、図17〜図19に示す構成において、レジスタRegL303に格納される中間鍵データMKの全てのビットが0となった場合、x倍演算、あるいはx−s倍演算を施して生成したラウンド中間鍵データMKの全てのビットは0になるが、図17〜図19に示す構成では、セレクタ304の出力する各ラウンド毎のデータと、ラウンド毎に異なる定数Cを排他的論理和(EXOR)し、この結果をラウンド鍵としており、ラウンド毎に異なる定数Cが排他的論理和されることにより、ラウンド鍵が同じになることがない。
また、秘密鍵Kより生成されたラウンド中間鍵データMKと別の秘密鍵K'より生成されたラウンド中間鍵データMK'が同じ値になった場合には以降の中間鍵データが同じになるが、ラウンド鍵に関してはラウンド毎に異なる定数Cが排他的論理和されることにより、ラウンド鍵は同じにならない。つまり、前述したslide attackを防ぐことができる。
また、図17〜図19に示す鍵生成構成が複数の鍵長をサポートする場合を考える。各ラウンド異なる定数を鍵長に応じて変えることによって、異なる鍵長において、中間鍵データMKが同じ値になった場合にもラウンド鍵を異なる値にすることができ、related cipher attack(関連暗号攻撃)に対する耐性を高めることが可能となる。
例えば、
ラウンド数rのkビットの鍵長、
ラウンド数rのkビットの鍵長、
ラウンド数rのkビットの鍵長、
これらの全てをサポートする構成である場合、
合計r+r+r個の異なるl(エル)ビットの定数Cを用いて排他論理和(EXOR)を実行する構成とすることにより、異なる鍵長において中間鍵データMKが同じ値になった場合にもラウンド鍵を異なる値にすることができる。
なお、ラウンド毎に異なるl(エル)ビットの定数をラウンド数rに応じてr通り生成する回路は、l(エル)が大きい場合にはその回路規模も大きくなる。この問題を解決する構成としては、例えば、l(エル)ビットのデータをラウンド毎に異なるwビットのデータbに分割して、bをl/w回繰り返し使用する。この構成により、回路規模を小さくすることができる。
例えばl(エル)=64の場合には、ラウンド毎に異なる64bitの定数、すなわち、ラウンドiに適用する定数Cをラウンド(i)毎に異なる8ビットのbで以下のように構成する。
=(b,b,b,b,b,b,b,b
このように、ラウンド毎に異なる8ビットのbを繰り返し用いることにより定数生成回路の規模を小さくすることができる。
また、
=(b,b,b,b,〜b,〜b,〜b,〜b
このような定数Cを生成する構成、すなわち、bとbの反転データ〜bを用いる構成としてもよい。
また、ラウンドiに適用する定数Ciの構成ビットbをある初期値からラウンド毎にある規則を用いて更新するような回路とするとその回路規模は小さくすることができる。その規則をGF(2)上で定義されるw次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算としてもよい。
このとき、例えば,w=8でw次の既約多項式をf(x)=x+x+x+x+1とすると、
=(d,d,…,d,d)はbi−1=(c,c,…,c,c)を用いて以下のように示される。
=c
=c
=c
=c(EXOR)c
=c(EXOR)c
=c(EXOR)c
=c
=c
上記のように更新することができる。f(x)が原始多項式の場合には、ある初期値から生成されるx倍演算の値の周期は2−1となるため、2−1の異なるデータを生成することが可能となる。他に、上記規則を拡大体GF(2)上のx−1倍演算などとしてもよい。
このように、実施例2では、実施例1の構成に残る問題点を解決し、
*ラウンド中間鍵データの排他的論理和の情報量が欠損しない。
*中間鍵データの全てのビットが0になる場合,または全てのビットが1になる場合であってもラウンド鍵が全て同じにはならない。
*Slide attackに対して十分な耐性がある。
*Related cipher attackに対して十分な耐性がある。
これらのすべてを満たす鍵スケジュール部の構成が実現される。
本発明の暗号処理装置の構成についてまとめると、本発明の暗号処理装置は以下のような構成を有する。
本発明の暗号処理装置は、ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有する共通鍵ブロック暗号処理を実行する暗号処理装置であり、鍵スケジュール部は、秘密鍵の構成データに対する非線形変換処理を適用した変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成し、ラウンド中間鍵の構成データのビット選択により、ラウンド鍵を生成する構成を有する。なお、鍵スケジュール部の生成するラウンド鍵は、ラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とが含まれる。
具体的には、鍵スケジュール部は、秘密鍵の変換処理によって生成するmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行し、q個のラウンド中間鍵{MK,MK,・・・,MKq−1,MK}を、
MK=MK
MK=MKx
MK=MKx2×s
・・・
MKq−1=MKx(q−2)×s
MK=MKx(q−1)×s
上記式に従って生成する。
さらに、鍵スケジュール部は、生成するラウンド中間鍵数をq個としたとき、x倍演算を繰り返し実行して、q個の異なるラウンド中間鍵を生成した後、q−1回目の最終的なx倍演算によって生成されたラウンド中間鍵データ、
MK=MKx(q−1)×s
に対して、
−(q−1)×s倍算を実行して、
倍演算実行前のオリジナル中間鍵MKに戻す処理を実行する。
さらに、鍵スケジュール部は、上述した第2実施例で説明した構成では、x倍演算を繰り返し実行して生成したラウンド中間鍵の構成データからのビット選択データに対して、ラウンド毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成する構成となる。
上記構成を持つ鍵スケジュール部において生成されるラウンド鍵は、上述したように、ラウンド中間鍵データの排他的論理和の情報量が欠損せず、中間鍵データの全てのビットが0になる場合,または全てのビットが1になる場合であってもラウンド鍵が全て同じにはならないという特徴を持ち、例えばSlide attackや、Related cipher attackに対して十分な耐性がある安全性の高い暗号処理構成が実現される。
[3.暗号処理装置の構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール700の構成例を図20に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図20に示すICモジュール700は、これら様々な機器に構成することが可能である。
図20に示す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は、上述した各実施例に対応した構成、すなわち、
(2−3)本発明の第1実施例に係る中間鍵データおよびラウンド鍵の生成処理
(2−4)本発明の第2実施例に係る中間鍵データおよびラウンド鍵の生成処理
これらの処理構成のいずれかに対応する構成を持つ鍵スケジュール部を持つ。
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムを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)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の一実施例の構成によれば、共通鍵ブロック暗号処理を実行する暗号処理装置におけるラウンド鍵を生成する鍵スケジュール部において、秘密鍵から生成したmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド中間鍵を生成して、このラウンド中間鍵に基づいて複数の異なるラウンド鍵を生成する構成とした。また、本発明の一実施例の構成によれば、さらに、ラウンド中間鍵から選択されたデータに対して、各ラウンド毎に異なる定数を適用した排他的論理和演算によりラウンド鍵を生成する構成とした。本構成により、鍵の解析困難性を高めた安全性の高い暗号処理構成が実現される。
共通鍵ブロック暗号アルゴリズムの基本構成を示す図である。 図1に示す共通鍵ブロック暗号処理部E10の内部構成について説明する図である。 図2に示す暗号処理部12の詳細構成について説明する図である。 ラウンド関数実行部の一構成例としてのSPN構造ラウンド関数について説明する図である。 ラウンド関数実行部の一構成例としてのFeistel(フェイステル)構造について説明する図である。 ラウンド関数実行部の一構成例としての拡張Feistel構造について説明する図である。 非線形変換処理部の具体例について説明する図である。 線形変換処理部の具体例について説明する図である。 暗号化処理における秘密鍵Kと、初期鍵、ラウンド鍵、最終鍵の対応について説明する図である。 復号処理における秘密鍵Kと、初期鍵、ラウンド鍵、最終鍵の対応について説明する図である。 暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例について説明する図である。 本発明に係る暗号処理を実行する暗号処理装置としての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 データ暗号化部
121 秘密鍵
122 復号鍵スケジュール部
123 復号拡大鍵
124 データ復号部
201 非線形変換回路
202 セレクタ
203 レジスタ
204 セレクタ
211 sビット左循環シフト回路
212 (q−1)×sビット右循環シフト回路
221 sビット右循環シフト回路
222 (q−1)×sビット左循環シフト回路
231 sビット左循環シフト回路
232 sビット右循環シフト回路
233 (q−1)×sビット右循環シフト回路
234 (q−1)×sビット左循環シフト回路
301 非線形変換回路
302 セレクタ
303 レジスタ
304 セレクタ
311 x倍演算回路
312 x−(q−1)×s倍演算回路
321 x−s倍演算回路
322 x(q−1)×s倍演算回路
401 定数C生成回路
402 排他的論理和(EXOR)演算部
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 暗号処理部
704 乱数発生器
705 送受信部

Claims (14)

  1. 共通鍵ブロック暗号処理を実行する暗号処理装置であり、
    ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
    前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    秘密鍵の変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成する構成であることを特徴とする暗号処理装置。
  2. 前記鍵スケジュール部は、
    秘密鍵の変換処理によって生成するmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行し、q個のラウンド中間鍵{MK,MK,・・・,MKq−1,MK}を、
    MK=MK
    MK=MKx
    MK=MKx2×s
    ・・・
    MKq−1=MKx(q−2)×s
    MK=MKx(q−1)×s
    上記式に従って生成する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記鍵スケジュール部は、
    生成するラウンド中間鍵数をq個としたとき、前記x倍演算を繰り返し実行して、q個の異なるラウンド中間鍵を生成した後、
    q−1回目の最終的なx倍演算によって生成されたラウンド中間鍵データ、
    MK=MKx(q−1)×s
    に対して、
    −(q−1)×s倍算を実行して、
    倍演算実行前のオリジナル中間鍵MKに戻す処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記鍵スケジュール部は、
    前記x倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵を生成することを特徴とする請求項1に記載の暗号処理装置。
  5. 前記鍵スケジュール部は、
    前記x倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成する構成であることを特徴とする請求項1に記載の暗号処理装置。
  6. 前記鍵スケジュール部は、
    前記x倍演算を繰り返し実行して生成したラウンド中間鍵の構成データのビット選択を実行し、さらにビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成する構成であることを特徴とする請求項1に記載の暗号処理装置。
  7. 前記鍵スケジュール部は、
    前記秘密鍵の変換処理による中間鍵生成処理を、前記秘密鍵の構成データに対する非線形変換処理によって実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  8. 暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、
    鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
    暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理ステップとを有し、
    前記ラウンド鍵生成ステップは、
    秘密鍵の変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成するラウンド中間鍵生成ステップと、
    前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成するビット選択ステップと、
    を有することを特徴とする暗号処理方法。
  9. 前記ラウンド鍵生成ステップは、
    秘密鍵の変換処理によって生成するmビットの中間鍵MKに対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行し、q個のラウンド中間鍵{MK,MK,・・・,MKq−1,MK}を、
    MK=MK
    MK=MKx
    MK=MKx2×s
    ・・・
    MKq−1=MKx(q−2)×s
    MK=MKx(q−1)×s
    上記式に従って生成するステップであることを特徴とする請求項8に記載の暗号処理方法。
  10. 前記暗号処理方法は、さらに、
    前記鍵スケジュール部において、
    前記ラウンド鍵生成ステップにおいて前記x倍演算を繰り返し実行して、q個の異なるラウンド中間鍵を生成した後、q−1回目の最終的なx倍演算によって生成されたラウンド中間鍵データ、
    MK=MKx(q−1)×s
    に対して、
    −(q−1)×s倍算を実行して、
    倍演算実行前のオリジナル中間鍵MKに戻す処理を実行することを特徴とする請求項8に記載の暗号処理方法。
  11. 前記ラウンド鍵生成ステップは、
    前記x倍演算を繰り返し実行して生成するラウンド中間鍵の構成データのビット選択により、前記暗号処理部におけるラウンド関数の実行に適用するラウンド鍵、およびラウンド関数実行前の初期的データ変換に適用する初期鍵と、ラウンド関数実行後の最終的データ変換に適用する最終鍵とを含む鍵を生成するステップであることを特徴とする請求項8に記載の暗号処理方法。
  12. 前記ラウンド鍵生成ステップは、
    前記ビット選択ステップにおいて抽出したビット選択データに対して、前記暗号処理部に対して提供するラウンド鍵毎に異なる定数を適用した排他的論理和演算を実行してラウンド鍵を生成することを特徴とする請求項8に記載の暗号処理方法。
  13. 前記ラウンド鍵生成ステップにおける秘密鍵の変換処理は、
    前記秘密鍵の構成データに対する非線形変換処理によって実行することを特徴とする請求項8に記載の暗号処理方法。
  14. 暗号処理装置において共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
    鍵スケジュール部において、暗号処理部で実行する複数ラウンドのラウンド関数の実行に適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
    暗号処理部において、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデータ変換処理を行なわせる暗号処理ステップとを有し、
    前記ラウンド鍵生成ステップは、
    秘密鍵の変換処理によって生成するmビットの中間鍵に対して、GF(2)上で定義されるm次の既約多項式f(x)によって作られる拡大体GF(2)上のx倍演算を繰り返し実行して、複数の異なるラウンド鍵の生成用データとなる複数の異なるラウンド中間鍵を生成させるラウンド中間鍵生成ステップと、
    前記ラウンド中間鍵からのビット選択によりラウンド鍵を生成させるビット選択ステップと、
    を実行させるステップであることを特徴とするコンピュータ・プログラム。
JP2006238224A 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP4905000B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006238224A JP4905000B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US11/846,853 US8290148B2 (en) 2006-09-01 2007-08-29 Encryption processing apparatus, encryption processing method, and computer program
EP07253461A EP1895708A1 (en) 2006-09-01 2007-08-31 Encryption processing apparatus, encryption processing method and computer program
CN200710167659.6A CN101162557B (zh) 2006-09-01 2007-08-31 密码处理装置和密码处理方法

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2008058827A true JP2008058827A (ja) 2008-03-13
JP4905000B2 JP4905000B2 (ja) 2012-03-28

Family

ID=38669927

Family Applications (1)

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

Country Status (4)

Country Link
US (1) US8290148B2 (ja)
EP (1) EP1895708A1 (ja)
JP (1) JP4905000B2 (ja)
CN (1) CN101162557B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010024247A1 (ja) 2008-08-25 2010-03-04 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム
WO2010024248A1 (ja) 2008-08-25 2010-03-04 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム
JP2010057066A (ja) * 2008-08-29 2010-03-11 Toshiba Corp 暗号化で用いる鍵をスケジュールする装置、方法およびプログラム
JP2012027149A (ja) * 2010-07-21 2012-02-09 Nec Corp 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム
CN110199338A (zh) * 2017-01-20 2019-09-03 日本电信电话株式会社 秘密计算系统、秘密计算装置、秘密计算方法、程序

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007192893A (ja) * 2006-01-17 2007-08-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) * 2006-01-24 2007-08-09 Sony Corp 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US8175266B2 (en) * 2008-05-07 2012-05-08 Apple Inc. System and method of performing authentication
US8707042B2 (en) * 2008-08-28 2014-04-22 Red Hat, Inc. Sharing keys between cooperating parties
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8233620B2 (en) * 2009-02-27 2012-07-31 Inside Secure Key recovery mechanism for cryptographic systems
JP5296217B2 (ja) * 2009-09-24 2013-09-25 株式会社東芝 鍵スケジュール装置および方法
JP5481455B2 (ja) * 2011-09-27 2014-04-23 株式会社東芝 暗号処理装置
JP2014240921A (ja) * 2013-06-12 2014-12-25 株式会社東芝 暗号装置、暗号処理方法及び暗号処理プログラム
DE102014216392A1 (de) * 2014-08-19 2016-02-25 Robert Bosch Gmbh Symmetrisches Iteriertes Blockchiffrierverfahren und entsprechende Vorrichtung
US11563566B2 (en) * 2014-10-27 2023-01-24 Micro Focus Llc Key splitting
US10936759B1 (en) * 2017-09-01 2021-03-02 Amzetta Technologies, Llc Systems, methods and computer-readable media for providing enhanced encryption in a storage system
US10637656B2 (en) * 2017-11-28 2020-04-28 Blackberry Limited Method and system for key agreement utilizing semigroups
US11436341B2 (en) * 2018-04-10 2022-09-06 Bushra Abbas Mohammed AL BELOOSHI System and method for cryptographic keys security in the cloud
CN108933652B (zh) * 2018-06-11 2021-03-05 安徽工程大学 一种普通轮变换运算单元、普通轮变换电路及aes解密电路
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN113194476B (zh) * 2020-01-14 2022-10-21 宁波方太厨具有限公司 一种设备激活及鉴权绑定方法
US12047485B2 (en) * 2020-12-23 2024-07-23 Intel Corporation Time and frequency domain side-channel leakage suppression using integrated voltage regulator cascaded with runtime crypto arithmetic transformations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11282346A (ja) * 1998-01-27 1999-10-15 Nippon Telegr & Teleph Corp <Ntt> デ―タ変換装置及びそれを実施するプログラムを記録した記録媒体
JP2004233427A (ja) * 2003-01-28 2004-08-19 Nec Corp Aes暗号処理装置、aes復号処理装置、および、aes暗号・復号処理装置
US20050058285A1 (en) * 2003-09-17 2005-03-17 Yosef Stein Advanced encryption standard (AES) engine with real time S-box generation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994016509A1 (en) * 1992-12-30 1994-07-21 Telstra Corporation Limited A method and apparatus for generating a cipher stream
US6578143B1 (en) * 1998-12-18 2003-06-10 Qualcomm Incorporated Method for negotiating weakened keys in encryption systems
JP3499810B2 (ja) 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
JP2005218023A (ja) * 2004-02-02 2005-08-11 Matsushita Electric Ind Co Ltd 鍵配信システム
US7421067B2 (en) * 2006-04-19 2008-09-02 Emotive Communications, Inc. System and methodology for peer-to-peer voice communication employing a pushed interactive multimedia announcement

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11282346A (ja) * 1998-01-27 1999-10-15 Nippon Telegr & Teleph Corp <Ntt> デ―タ変換装置及びそれを実施するプログラムを記録した記録媒体
JP2004233427A (ja) * 2003-01-28 2004-08-19 Nec Corp Aes暗号処理装置、aes復号処理装置、および、aes暗号・復号処理装置
US20050058285A1 (en) * 2003-09-17 2005-03-17 Yosef Stein Advanced encryption standard (AES) engine with real time S-box generation

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010024247A1 (ja) 2008-08-25 2010-03-04 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム
WO2010024248A1 (ja) 2008-08-25 2010-03-04 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム
JP2010057066A (ja) * 2008-08-29 2010-03-11 Toshiba Corp 暗号化で用いる鍵をスケジュールする装置、方法およびプログラム
JP2012027149A (ja) * 2010-07-21 2012-02-09 Nec Corp 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム
CN110199338A (zh) * 2017-01-20 2019-09-03 日本电信电话株式会社 秘密计算系统、秘密计算装置、秘密计算方法、程序

Also Published As

Publication number Publication date
CN101162557A (zh) 2008-04-16
CN101162557B (zh) 2010-10-13
JP4905000B2 (ja) 2012-03-28
US20080056490A1 (en) 2008-03-06
US8290148B2 (en) 2012-10-16
EP1895708A1 (en) 2008-03-05

Similar Documents

Publication Publication Date Title
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5822970B2 (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化デバイス
JP4960044B2 (ja) 暗号処理回路及びicカード
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
WO2005073842A1 (ja) 擬似乱数生成装置および擬似乱数生成プログラム
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5605197B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP4857230B2 (ja) 疑似乱数生成装置及びそれを用いた暗号化処理装置
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
JP5223245B2 (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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111107

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

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

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

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees