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

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

Info

Publication number
JP2007192893A
JP2007192893A JP2006008695A JP2006008695A JP2007192893A JP 2007192893 A JP2007192893 A JP 2007192893A JP 2006008695 A JP2006008695 A JP 2006008695A JP 2006008695 A JP2006008695 A JP 2006008695A JP 2007192893 A JP2007192893 A JP 2007192893A
Authority
JP
Japan
Prior art keywords
cryptographic
cryptographic processing
feistel
matrices
round
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.)
Pending
Application number
JP2006008695A
Other languages
English (en)
Inventor
Taizo Shirai
太三 白井
Koushi Shibuya
香士 渋谷
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 JP2006008695A priority Critical patent/JP2007192893A/ja
Priority to CN200780002505XA priority patent/CN101371286B/zh
Priority to EP07706356A priority patent/EP1975908A4/en
Priority to PCT/JP2007/050009 priority patent/WO2007083528A1/ja
Priority to US12/160,895 priority patent/US8073140B2/en
Publication of JP2007192893A publication Critical patent/JP2007192893A/ja
Pending legal-status Critical Current

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
    • 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

Landscapes

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

Abstract

【課題】低コストかつメモリ記憶データの削減を可能としたFeistel型共通鍵ブロック暗号処理構成を実現する。
【解決手段】非線形変換部および線形変換部を有するSP型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数、例えばAESやWhirlpoolなどにおいて適用される変換処理と同一の変換処理として実行する構成とした。本構成により、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。
【選択図】図3

Description

本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
代表的な共通鍵ブロック暗号のアルゴリズムとしては、共通鍵ブロック暗号のアルゴリズム中で行なわれるデータ変換には非線形変換や線形変換が含まれる。従って、共通鍵ブロック暗号などの暗号要素技術を設計する際に、非線形変換を行う関数や線形変換部に利用するための行列を決定しなくてはならない。
例えば、ICカードにおいて暗号処理演算を実行させる場合、暗号処理アルゴリズムを実行させるハードウェアを内蔵させ、ハードウェア内のメモリにプログラム(ソフトウェア)などのデータを記録することが必要となる。
昨今、ICカードや携帯電話などの情報処理端末に様々なデータ処理機能を備えさせることで、ユーザが多数のカードを保持する必要性を排除し、利便性を高めようとする動きがある。しかし、この場合、それぞれの機関の運用システムにおいて採用する暗号アルゴリズムに対応させることが必要となる。ICカードや携帯端末などにおいて、複数の異なる暗号アルゴリズムを実行可能な構成とするためには、各アルゴリズムに対応するハードウェアを備え、かつ各アルゴリズムに対応するソフトウェアを組み込むことが必要となり、コスト高を招くという問題がある。
本発明は、上記問題点に鑑みてなされたものであり、Feistel型共通鍵ブロック暗号処理を実行する構成において、他の暗号アルゴリズムやハッシュ関数などにおいて適用可能なデータ変換と共通のデータ変換を実行する構成として、部品の共通化による設計コストの削減やメモリ記憶データの削減を可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
さらに、具体的には、本発明は、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化による、コードサイズの縮小を可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
暗号処理装置であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有し、
前記暗号処理部は、
各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、各ラウンドの線形変換処理に、少なくとも2以上の異なる複数の行列を選択的に適用する構成であり、選択適用する行列の少なくとも1つは前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、各ラウンドの線形変換処理に、2つの異なる行列M,Mを選択的に適用する構成であり、各行列M,Mの配置は、
(a)奇数ラウンドにM,Mの順に配置、
(b)偶数ラウンドの最終段からM,Mの順に配置、
上記(a),(b)の条件を満足するように2つの異なる行列M,Mを適用する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、各ラウンドの線形変換処理に、3つの異なる行列M,M,Mを選択的に適用する構成であり、各行列M,M,Mの配置は、
(a)奇数ラウンドにM,M,Mの順に配置、
(b)偶数ラウンドの最終段からM,M,Mの順に配置、
上記(a),(b)の条件を満足するように3つの異なる行列M,M,Mを適用する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、64ビットFeistel型共通鍵ブロック暗号処理を実行する構成であり、各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはAES暗号アルゴリズムにおいて適用される行列であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、AES暗号処理と、64ビットFeistel型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、128ビットFeistel型共通鍵ブロック暗号処理を実行する構成であり、各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはWhirlpoolハッシュ関数において適用される行列であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理部は、Whirlpoolハッシュ関数と、128ビットFeistel型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする。
さらに、本発明の第2の側面は、
暗号処理方法であり、
非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理ステップを有し、
前記暗号処理ステップは、
各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、各ラウンドの線形変換処理に、少なくとも2以上の異なる複数の行列を選択的に適用し、選択適用する行列の少なくとも1つは前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、各ラウンドの線形変換処理に、2つの異なる行列M,Mを選択的に適用する処理を実行するステップであり、各行列M,Mの適用順は、
(a)奇数ラウンドにM,Mの順に適用、
(b)偶数ラウンドの最終段からM,Mの順に適用、
上記(a),(b)の条件を満足するように2つの異なる行列M,Mを適用することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、各ラウンドの線形変換処理に、3つの異なる行列M,M,Mを選択的に適用する処理を実行するステップであり、各行列M,M,Mの適用順は、
(a)奇数ラウンドにM,M,Mの順に適用、
(b)偶数ラウンドの最終段からM,M,Mの順に適用、
上記(a),(b)の条件を満足するように3つの異なる行列M,M,Mを適用することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、64ビットFeistel型共通鍵ブロック暗号処理を実行するステップであり、各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはAES暗号アルゴリズムにおいて利用される行列を適用することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理ステップは、128ビットFeistel型共通鍵ブロック暗号処理を実行するステップであり、各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはWhirlpoolハッシュ関数において適用される行列であることを特徴とする。
さらに、本発明の第3の側面は、
暗号処理装置において暗号処理を実行させるコンピュータ・プログラムであり、
暗号処理部において実行させるステップとして、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行させる暗号処理ステップを有し、
前記暗号処理ステップは、
各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行させるステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、非線形変換部および線形変換部を有するSP型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数、例えばAESやWhirlpoolなどにおいて適用される変換処理と同一の変換処理として実行する構成としたので、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。すなわち、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化によるコードサイズの縮小が可能となる。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.SP型F関数を持つFeistel構造
2.線形変換層(P層)における最適拡散変換
3.様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換の態様
4.SP型F関数を持つFeistel型暗号におけるデータ変換処理に、他の暗号アルゴリズムまたはハッシュ関数に適用されるデータ変換処理構成を適用した構成
(4.1)AES部品共有型64ビットFeistel型暗号
(4.2)Whirlpool部品共有型128ビットFeistel型暗号
5.暗号処理装置の構成例
[1.SP型F関数を持つFeistel構造]
まず、SP型F関数を持つFeistel構造について説明する。共通鍵ブロック暗号のデザインとして、平文データの変換方法に基本となる変換関数をある特別な順序で配置するFeistel構造と呼ばれる構造が用いられることが多い。Feistel構造はラウンド関数と呼ばれる変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。
図1を参照して、Feistel構造について説明する。暗号化対象として入力される平文の長さを2mnビットとする。ただし、m,nは共に整数である。初めに、2mnビットの平文を、mnビットの2つの入力データP(Plain-Left)101,P(Plain-Right)102に分割し、これを入力値とする。
Feistel構造はラウンド関数とよばれる基本構造の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はF関数120と呼ばれる。図1の構成では、F関数(ラウンド関数)120がr段繰り返された構成例を示している。
例えば第1番目のラウンドでは、mnビットの入力データXと、鍵生成部(図示せず)から入力されるmnビットのラウンド鍵K103がF関数120に入力され、F関数120におけるデータ変換処理の後にmnビットのデータYを出力する。出力はもう片方の前段からの入力データ(第1段の場合は入力データP)と排他的論理和部104において、排他的論理和演算がなされ、mnビットの演算結果が次のラウンド関数へと出力される。この処理、すなわちF関数を定められたラウンド数(r)だけ繰り返し適用して暗号化処理が完了し、暗号文の分割データC(Cipher-Left)、C(Cipher-Right)が出力される。以上の構成より、Feistel構造の復号処理はラウンド鍵を挿入する順序を逆にするだけでよく、逆関数を構成する必要がないことが導かれる。
各ラウンドの関数として設定されるF関数120の構成について、図2を参照して説明する。図2(a)は、1つのラウンドにおけるF関数120に対する入力および出力を示す図であり、図2(b)は、F関数120の構成の詳細を示す図である。F関数120は、図2(b)に示すように、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。
図2に示すF関数120は、入出力ビット長がm×n(m,n:整数)ビットの設定を持つ関数である。SP型F関数内部では初めに鍵データKとデータXとの排他的論理和が実行され、次に非線形変換層(S層)が適用され、続いて線形変換層(P層)が適用される。
具体的には非線形変換層(S層)は、Sボックス(S−box)121と呼ばれるnビット入力nビット出力の非線形変換テーブルがm個並んだものであり、mnビットのデータはnビットずつ分割されてそれぞれ対応するSボックス(S−box)121に入力されデータが変換される。各Sボックスでは、例えば変換テーブルを適用した非線形変換処理が実行される。
線形変換層(P層)は線形変換部122によって構成され、線形変換部122は、Sボックス121からの出力データであるmnビットの出力値Zを入力し、この入力に対して線形変換を施しmnビットの結果を出力する。線形変換部122は、入力ビット位置の入れ替え処理などの線形変換処理を実行して、mnビットの出力値Yを出力する。この出力値Yが前段からの入力データと排他的論理和され、次のラウンドのF関数の入力値とされる。
なお、以下に説明する本実施例の構成では、線形変換層(P層)としての線形変換部122において実行する線形変換はGF(2)上で定義されるmn×mnの行列を適用して行なわれる線形変換であると定義し、また、第iラウンド目に含まれる行列をMと呼ぶものとする。
[2.線形変換層(P層)における最適拡散変換]
上述したF関数内の線形変換層(P層)としての線形変換部122において実行される線形変換の特殊な例として最適拡散変換(Optimal Diffusion Mappings)を以下のように定義する。
n×aビットデータからn×bビットデータへの線形変換を行う写像、
θ:{0,1}na→{0,1}nb
に対して分岐数B(θ)を次のように定義する。
B(θ)=minα≠0{hw(α)+hw(θ(α))}
ただし、minα≠0{Xα}は、α≠0を満たすすべてのXαのうちの最小値を表すものとし、hw(Y)はビット列Yをnビットごとに区切って表したときに、nビットのデータすべてが0ではない(非ゼロ)要素の数を返す関数とする。このとき、B(θ)がb+1であるような写像θを最適拡散変換と定義する。また便宜的に行列Mの分岐数をB(M)と表すものとする。
[3.様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換の態様]
次に、様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換の態様について説明する。先に説明した非線形変換や線形変換処理は、多くの暗号アルゴリズムや縮約関数としてのハッシュ関数などにおいて利用されるデータ変換である。
様々な暗号アルゴリズムおよびハッシュ関数では、このようなデータ変換を行うため、非線形変換層(S層)として、nビット入力nビット出力の非線形変換テーブルからなるSボックス(S−box)が利用され、線形変換層(P層)としては、入力ビット位置の入れ替え処理などの線形変換処理を実行する線形変換行列が利用される。
このように、様々な暗号アルゴリズムおよびハッシュ関数におけるデータ変換は、非線形変換や線形変換処理を行なうという共通性を有するため、共通鍵ブロック暗号やハッシュ関数の一部、ストリーム暗号などでは、データ変換を行なうための同じような部品が使われることがある。例えば、非線形変換を実現するために8ビット入出力の置換表が使われるケースや、線形変換としてGF(2)上の4x4や8x8の行列が使われることがある。以下、米国標準暗号AES(Advanced Encryption Standard))と、ISOにおいて標準化されているハッシュ関数Whirlpoolにおいて利用される非線形変換と、線形変換の概要について説明する。
(1)AES暗号
米国標準暗号AESは128ビットブロック暗号であり、データ変換手続きの中に以下のような非線形演算と線形演算を行う部分が存在する。
[非線形変換]
Figure 2007192893
上記式はAESにおける非線形変換の一部を示している。上記式において、SAES(x)は、AESアルゴリズムにおいて適用される非線形変換を実行するSボックスによる処理関数を示しており、1バイトデータ(x)を入力として、1バイトデータ(y)の出力に非線形変換処理を行なう関数を示している。複数のSボックスの適用によって、入力4バイトデータ:x〜xを出力4バイトデータ:y〜yに非線形変換する処理を実行する。
[線形変換]
Figure 2007192893
上記式はAESにおける線形変換の一部を示している。上記式は、入力ビット位置の入れ替え処理などの線形変換処理を実行する線形変換行列を利用した式である。ただし、行列の要素は有限体GF(2)の要素を表し、既約多項式はt+t+t+t+1で表されるものである。ここで用いられている行列は分岐数が5となる最適拡散変換である。AES暗号アルゴリズムにおける線形変換には、上記した4×4の行列が適用される。
(2)Whirlpool
次に、ISOにおいて標準化されているハッシュ関数Whirlpoolにおいて利用される非線形変換と、線形変換の概要について説明する。ハッシュ関数Whirlpoolは512bitの出力を持つハッシュ関数であり、データ変換手続きの中に以下のような演算を行う部分が存在する。
[非線形変換]
Figure 2007192893
上記式はハッシュ関数Whirlpoolの非線形変換を示している。上記式において、S(x)は、ハッシュ関数Whirlpoolにおいて適用される非線形変換を実行するSボックスによる処理関数を示しており、1バイトデータ(x)を入力として、1バイトデータ(y)の出力に非線形変換処理を行なう関数を示している。複数のSボックスの適用によって、入力8バイトデータ:x〜xを出力8バイトデータ:y〜yに非線形変換する処理を実行する。
[線形変換]
Figure 2007192893
上記式はハッシュ関数Whirlpoolの線形変換を示している。上記式は、入力ビット位置の入れ替え処理などの線形変換処理を実行する線形変換行列を利用した式である。ただし、行列の要素は有限体GF(2)の要素を表し、既約多項式はt+t+t+t+1で表されるものである。ここで用いられている行列は分岐数が9となる最適拡散変換である。ハッシュ関数Whirlpoolアルゴリズムにおける線形変換には、上記した8×8の行列が適用される。
[4.SP型F関数を持つFeistel型暗号におけるデータ変換処理に、他の暗号アルゴリズムまたはハッシュ関数に適用されるデータ変換処理構成を適用した構成]
上述したように、AES暗号や、ハッシュ関数Whirlpoolでも、入力値から出力値を得るためのデータ変換処理において非線形変換、線形変換が実行され、それぞれの変換処理に適用されるデータ、すなわち、非線形変換に適用する変換テーブル(置換表)や、線形変換に適用する線形変換行列は予め規定されたデータが利用される。
以下では、SP型F関数を持つFeistel型暗号におけるデータ変換処理において実行される非線形変換処理や変換処理において、AES暗号や、ハッシュ関数Whirlpoolにおいて利用されている非線形変換に適用する変換テーブル(置換表)や、線形変換に適用する線形変換行列を適用した構成について説明する。
本発明に係る暗号処理装置は、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有し、暗号処理部において、各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成を有する。
SP型F関数を持つFeistel型暗号は、先に[1.SP型F関数を持つFeistel構造]の項目において説明したアルゴリズムであり、そのアルゴリズムは、AES暗号や、ハッシュ関数Whirlpoolのアルゴリズムとは異なっている。SP型F関数を持つFeistel型暗号は、先に図1、図2を参照して説明したように、各ラウンドにおいて、F関数を実行する構成を有し、各ラウンドにおけるF関数においてSボックスを適用した非線形変換と、線形変換行列を適用した線形変換処理を実行する構成を持つ。
共通鍵ブロック暗号の1つのデザインであるSP型F関数を持つFeistel型暗号は、F関数の構成を変更することで、様々な入出力ビット構成に対応可能である。例えば入出力ビットを64ビットとした64ビットブロック暗号、あるいは、入出力ビットを128ビットとした128ビットブロック暗号などである。
SP型F関数を持つFeistel型暗号を設計する場合、F関数において適用する非線形変換処理や線形変換処理構成は、処理ビット数に対応した構成とすることが必要となる。
ここで、例えば、入出力ビットを64ビットとした64ビットブロック暗号を実行するSP型F関数を持つFeistel型暗号においては、前述したAESアルゴリズムにおいて適用される非線形変換および線形変換処理構成が適用可能となる。すなわち、AESアルゴリズムで適用されている非線形変換用の変換テーブル(置換表)や線形変換に適用する線形変換行列が適用可能である。
また、入出力ビットを128ビットとした128ビットブロック暗号を実行するSP型F関数を持つFeistel型暗号においては、前述したハッシュ関数Whirlpoolにおいて適用される非線形変換および線形変換処理構成が適用可能となる。すなわち、ハッシュ関数Whirlpoolで適用されている非線形変換用の変換テーブル(置換表)や線形変換に適用する線形変換行列が適用可能となる。
SP型F関数を持つFeistel型暗号において、各ラウンドにおいて適用する線形変換行列を異なる行列として設定すると、例えば差分解析などの攻撃に対する耐性を高めることができる。すなわち、暗号強度を高めることが可能となる。なお、各ラウンドにおいて適用する線形変換行列を異なる行列として設定することでSP型F関数を持つFeistel型暗号の暗号強度を高めた構成の詳細については、本発明と同一の出願人に係る先の特許出願:特願2005−313842に説明されている。
従来型のFeistel型暗号では、すべての段のF関数に同じ線形変換層を用いているため、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質が存在した。暗号解析手法の代表的な手法として、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析(あるいは差分解読法)が知られており、従来のDES暗号アルゴリズム等の共通鍵ブロック暗号においては、F関数の線形変換部において適用する処理(変換行列)を、各段のラウンドにおいて等しいものに設定しているため、差分解析が行いやすく、結果として鍵の解析の容易性を招いている。
各ラウンドのF関数に適用する線形変換行列を特定のシーケンスに従った異なる行列とすることで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。
各ラウンドにおいて適用する線形変換行列を異なる行列として設定する場合、例えば暗号処理を実行するICカードなどの情報処理装置に複数の異なる線形変換行列データを保持することが必要となる。Feistel型暗号において複数の行列を選択する際には、いくつかの選択基準があるが、例えば各行列を決定する際に、新たに2つや3つの行列全てを自ら決定せずに、そのうちのひとつをAESの行列やWhirlpoolの行列をそのまま利用することで、設計の効率化が図られる。
具体的には、64ビットFeistel型暗号において利用する行列の1つとしてAESに適用されている行列を利用する構成や、128ビットFeistel型暗号において利用する行列の1つとしてWhirlpoolに適用されている行列を利用する構成である。
先に説明したように、ICカードや携帯端末では、様々なデータ処理を1つの装置で実行可能とするため、様々な暗号アルゴリズムやハッシュ関数を実行可能な構成とすることが求められている。このような要請に対して、例えば、AESとFeistel型暗号の2つの異なるアルゴリズムを実行可能な構成とする場合、それぞれのアルゴリズムに適用する非線形変換テーブルや線形変換行列を保持することが必要となる。また、WhirlpoolとFeistel型暗号の2つの異なるアルゴリズムを実行可能な構成とする場合、それぞれのアルゴリズムに適用する非線形変換テーブルや線形変換行列を保持することが必要となる。
このような複数のアルゴリズムに適用する変換用のデータを保持させるためには、ICカードなどの装置の限られたメモリ空間をこれらの複数のアルゴリズムに利用される複数のテーブルや行列を格納するために費やされることになる。また、Feistel型暗号に適用するための例えば線形変換行列は、一定の暗号強度を保持するために、任意の行列を利用することは好ましくなく暗号強度を低下させないための性質を持つ行列であることが必要となる。
Feistel型暗号に適用するための例えば線形変換行列の制約は、例えば、前述した本発明と同一の出願人に係る先の特許出願:特願2005−313842に説明されている。例えば適用可能な1つの制約条件の例を以下に示す。
(制約条件A)
F関数を持つr段からなるFeistel型共通鍵ブロック暗号処理構成におけるr段各々に対応するF関数の線形変換部は下記条件を満足する行列Mを適用する。
n×aビットデータからn×bビットデータへの線形変換を行う写像θ:{0,1}na→{0,1}nbに対して、分岐数B(θ)を、
分岐数B(θ)=minα≠0{hw(α)+hw(θ(α))}、
ただし、minα≠0{Xα}は、α≠0を満たすすべてのXαのうちの最小値、
hw(Y)はビット列Yをnビットごとに区切って表したときにnビットのデータすべてが0ではない(非ゼロ)要素の数を返す関数、
とし、分岐数B(θ)がb+1である写像θを最適拡散変換と定義し、
さらに、行列Mの分岐数をB(M)と表したとき、
BD=min{B(M)|1≦i≦r},
BD=min{B(M|Mi+2)|1≦i≦r−2},
ただし、A|Bは行列A,Bの連結により得られる行列、
とした場合において、
BD,BDのすべてが3以上になるような行列Mを適用する。
なお、3以上という条件により、MとMi+2が必ず異なる行列ではなくてはならない。
例えば、上述の(制約条件A)が、差分攻撃などの攻撃に対する耐性を持つために、Feistel型暗号に適用する線形変換行列の条件として適用可能である。
AESや、Whirlpoolにおいて利用されている例えば線形変換行列は、暗号強度を保つ指標の1つである分岐数が一定の条件を満たしており、これらをFeistel型暗号に適用することで、一定の暗号強度の保持が保証される。従って、上述した複数の異なる線形変換行列を適用するFeistel型暗号における複数の行列の一部に、AESや、Whirlpoolにおいて利用されている線形変換行列を適用することで、ICカードや携帯端末などの暗号処理装置におけるメモリの有効利用が可能となり、またFeistel型暗号の設計の効率化も図られることになる。すなわち、設計時に決定すべき行列の数を少なくすることができ、設計者が探索すべき候補数が少なくなり絞込みのための時間が削減される。
以下、SP型F関数を持つFeistel型暗号において、各ラウンドにおいて適用する線形変換行列を異なる行列として設定し、差分解析などの攻撃に対する耐性を高めたFeistel型暗号において、その一部の線形変換行列にAESまたはWhirpoolの行列を適用した構成例について説明する。以下に説明する実施例では、2つまたは3つの異なる線形変換行列を用いるFeistel暗号において、それら行列のうちの1つにAESまたはWhirlpoolの行列を採用する例を説明する。
(4.1)AES部品共有型64ビットFeistel型暗号
まず、AESと部品共有した64ビットブロック暗号の構成について説明する。前述したように、Feistel型暗号の各ラウンドのF関数に適用する線形変換行列を適用することで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。以下、非線形変換層(S層)と線形変換層(P層)をF関数に有するSP型の64ビットFeistel型暗号構成において、2つの異なる線形変換行列と3つの異なる線形変換行列を適用し、その一部をAES暗号アルゴリズムにおいて適用されている線形変換行列を利用した構成例について説明する。
(4.1.1)2つの異なる線形変換行列を適用した構成例
まず、2つの異なる線形変換行列を利用したFeistel型暗号であり、64ビットブロック暗号を実行する構成例について説明する。図3を参照して、2つの異なる線形変換行列を利用したFeistel型暗号アルゴリズムについて説明する。
本アルゴリズムの構成では、複数段(ラウンド)を持つFeistel型共通鍵ブロック暗号処理構成における各段のF関数中の線形変換部において適用する線形変換処理のための行列として、2つの異なる行列M,Mを利用する。具体的には、図3に示すように、
(a)奇数段にM,Mの順に配置
(b)偶数段の最終段からM,Mの順に配置
上記(a),(b)の条件を満足するように2つの異なる行列M,Mを適用する構成とする。
条件(a)は、(a)奇数段にM,Mの順に配置する条件であり、図3に示すように、ラウンド1,3,5,・・・の順に、行列M,Mを順に配置する。条件(b)は、(a)偶数段の最終段からM,Mの順に配置する条件であり、図3に示すように、ラウンド12,10,8,・・・の順に、行列M,Mを順に配置する。
ここで、行列M,Mの各々は、各ラウンドにおけるF関数において実行される線形変換行列であり、4×4の行列を示している。この2つの行列M,Mは異なる行列であり、その1つの行列、例えば、行列Mは、前述のAESアルゴリズムにおいて利用されている4×4の行列を利用する。行列Mは、Feistel暗号アルゴリズムの制約条件を満足する行列とする。
具体的な行列の組み合わせ例を以下に示す。例えば、M,Mの2つの行列全体の任意の4本の行を取り出してきても分岐数が5であり、さらに −1 −1の2つの行列の任意の4本の行を取り出してきても分岐数が5であるような条件を満たす行列としては以下の行列の組み合わせがある。なお、MはMの転置行列,M−1はMの逆行列を表す。
Figure 2007192893
上記行列M,Mのうち、行列Mは、先に説明したAESアルゴリズムにおいて利用されている4×4の行列であり、行列Mは、Feistel暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の2つの異なる行列M,Mを適用してFeistel暗号アルゴリズムの各ラウンドにおけるF関数の線形変換を実行する。なお、各行列の要素は有限体GF(2)の要素を表し、既約多項式はt+t+t+t+1で表される。
(4.1.2)3つの異なる線形変換行列を適用した構成例
次に、3つの異なる線形変換行列を利用したFeistel型暗号であり、64ビットブロック暗号を実行する構成例について説明する。図4を参照して、3つの異なる線形変換行列を利用したFeistel型暗号アルゴリズムについて説明する。
本アルゴリズムの構成では、複数段(ラウンド)を持つFeistel型共通鍵ブロック暗号処理構成における各段のF関数中の線形変換部において適用する線形変換処理のための行列として、3つの異なる行列M,M,Mを利用する。具体的には、図4に示すように、
(a)奇数段にM,M,Mの順に配置
(b)偶数段の最終段からM,M,Mの順に配置
上記(a),(b)の条件を満足するように3つの異なる行列M,M,Mを適用する構成とする。
条件(a)は、(a)奇数段にM,M,Mの順に配置する条件であり、図4に示すように、ラウンド1,3,5,・・・の順に、行列M,M,Mを順に配置する。条件(b)は、(a)偶数段の最終段からM,M,Mの順に配置する条件であり、図4に示すように、ラウンド12,10,8,・・・の順に、行列M,M,Mを順に配置する。
ここで、行列M,M,Mの各々は、各ラウンドにおけるF関数において実行される線形変換行列であり、4×4の行列を示している。この3つの行列M,M,Mは異なる行列であり、その1つの行列、例えば、行列Mは、前述のAESアルゴリズムにおいて利用されている4×4の行列を利用する。行列M,Mは、Feistel暗号アルゴリズムの制約条件を満足する行列とする。
具体的な行列の組み合わせ例を以下に示す。例えば、M,M,Mの3つの行列全体の任意の4本の行を取り出してきても分岐数が5であり、さらに −1 −1の2つの行列、 −1 −1の2つの行列、 −1 −1の2つの行列の任意の4本の行を取り出してきても分岐数が5であるような条件を満たす行列としては以下の行列の組み合わせがある。
Figure 2007192893
上記行列M,M,Mのうち、行列Mは、先に説明したAESアルゴリズムにおいて利用されている4×4の行列であり、行列M,Mは、Feistel暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の3つの異なる行列M,M,Mを適用してFeistel暗号アルゴリズムの各ラウンドにおけるF関数の線形変換を実行する。なお、各行列の要素は有限体GF(2)の要素を表し、既約多項式はt+t+t+t+1で表される。
(4.2)Whirlpool部品共有型128ビットFeistel型暗号
次に、ISO標準化ハッシュ関数であるWhirlpoolと部品共有した128ビットブロック暗号の構成について説明する。前述したように、Feistel型暗号の各ラウンドのF関数に適用する線形変換行列を適用することで、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質を排除することが可能となり、差分解析などの攻撃に対する耐性を高めることができる。以下、非線形変換層(S層)と線形変換層(P層)をF関数に有するSP型の128ビットFeistel型暗号構成において、2つの異なる線形変換行列と3つの異なる線形変換行列を適用し、その一部をWhirlpool暗号アルゴリズムにおいて適用されている線形変換行列を利用した構成例について説明する。
(4.2.1)2つの異なる線形変換行列を適用した構成例
まず、2つの異なる線形変換行列を利用したFeistel型暗号であり、128ビットブロック暗号を実行する構成例について説明する。2つの異なる線形変換行列を利用したFeistel型暗号は、先に図3を参照して説明したように、複数段(ラウンド)を持つFeistel型共通鍵ブロック暗号処理構成における各段のF関数中の線形変換部において適用する線形変換処理のための行列として2つの異なる線形変換行列M,Mを利用する構成である。具体的には、図3に示すように、
(a)奇数段にM,Mの順に配置
(b)偶数段の最終段からM,Mの順に配置
上記(a),(b)の条件を満足するように2つの異なる行列M,Mを適用する構成とする。
条件(a)は、(a)奇数段にM,Mの順に配置する条件であり、図3に示すように、ラウンド1,3,5,・・・の順に、行列M,Mを順に配置する。条件(b)は、(a)偶数段の最終段からM,Mの順に配置する条件であり、図3に示すように、ラウンド12,10,8,・・・の順に、行列M,Mを順に配置する。
ここで、行列M,Mの各々は、各ラウンドにおけるF関数において実行される線形変換行列であり、8×8の行列を示している。この2つの行列M,Mは異なる行列であり、その1つの行列、例えば、行列Mは、前述のWhirlpoolアルゴリズムにおいて利用されている8×8の行列を利用する。行列Mは、Feistel暗号アルゴリズムの制約条件を満足する行列とする。
具体的な行列の組み合わせ例を以下に示す。例えば、M,Mの2つの行列全体の任意の8本の行を取り出してきても分岐数が8以上であり、さらに −1 −1の2つの行列の任意の8本の行を取り出してきても分岐数が8以上であるような条件を満たす行列としては以下の行列の組み合わせがある。
Figure 2007192893
上記行列M,Mのうち、行列Mは、先に説明したWhirlpoolアルゴリズムにおいて利用されている8×8の行列であり、行列Mは、Feistel暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の2つの異なる行列M,Mを適用してFeistel暗号アルゴリズムの各ラウンドにおけるF関数の線形変換を実行する。なお、各行列の要素は有限体GF(2)の要素を表し、既約多項式はt+t+t+t+1で表される。
(4.2.2)3つの異なる線形変換行列を適用した構成例
次に、3つの異なる線形変換行列を利用したFeistel型暗号であり、128ビットブロック暗号を実行する構成例について説明する。3つの異なる線形変換行列を利用したFeistel型暗号は、先に図4を参照して説明したように、複数段(ラウンド)を持つFeistel型共通鍵ブロック暗号処理構成における各段のF関数中の線形変換部において適用する線形変換処理のための行列として、3つの異なる行列M,M,Mを利用する。具体的には、図4に示すように、
(a)奇数段にM,M,Mの順に配置
(b)偶数段の最終段からM,M,Mの順に配置
上記(a),(b)の条件を満足するように3つの異なる行列M,M,Mを適用する構成とする。
条件(a)は、(a)奇数段にM,M,Mの順に配置する条件であり、図4に示すように、ラウンド1,3,5,・・・の順に、行列M,M,Mを順に配置する。条件(b)は、(a)偶数段の最終段からM,M,Mの順に配置する条件であり、図4に示すように、ラウンド12,10,8,・・・の順に、行列M,M,Mを順に配置する。
ここで、行列M,M,Mの各々は、各ラウンドにおけるF関数において実行される線形変換行列であり、8×8の行列を示している。この3つの行列M,M,Mは異なる行列であり、その1つの行列、例えば、行列Mは、前述のWhirlpoolアルゴリズムにおいて利用されている8×8の行列を利用する。行列M,Mは、Feistel暗号アルゴリズムの制約条件を満足する行列とする。
具体的な行列の組み合わせ例を以下に示す。例えば、M,M,Mの3つの行列全体の任意の8本の行を取り出してきても分岐数が8以上であり、さらに −1 −1の2つの行列、 −1 −1の2つの行列、 −1 −1の2つの行列の任意の8本の行を取り出してきても分岐数が8以上であるような条件を満たす行列としては以下の行列の組み合わせがある。
Figure 2007192893
上記行列M,M,Mのうち、行列Mは、先に説明したWhirlpoolアルゴリズムにおいて利用されている8×8の行列であり、行列M,Mは、Feistel暗号アルゴリズムの制約条件を満足する行列から選択された行列である。上記の3つの異なる行列M,M,Mを適用してFeistel暗号アルゴリズムの各ラウンドにおけるF関数の線形変換を実行する。なお、各行列の要素は有限体GF(2)の要素を表し、既約多項式はt+t+t+t+1で表される。
なお、上述した処理例では、Feistel型共通鍵ブロック暗号処理を実行する構成において、各ラウンドのF関数中の線形変換処理に適用する線形変換行列のAESまたはWhirlpoolとの共通化構成を説明したが、非線形変換に適用する変換テーブルについても、例えば64ビットFeistel型共通鍵ブロック暗号処理における非線形変換処理においては、AESアルゴリズムにおいて適用する非線形変換テーブルを利用することが可能であり、例えば128ビットFeistel型共通鍵ブロック暗号処理における非線形変換処理においては、Whirlpoolアルゴリズムにおいて適用する非線形変換テーブルを利用することが可能である。
すなわち、本発明の暗号処理装置は、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有し、暗号処理部において、各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成を有する。この構成により、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。すなわち、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化によるコードサイズの縮小が可能となる。
[5.暗号処理装置の構成例]
最後に、暗号処理を実行する暗号処理装置としてのICモジュール300の構成例を図5に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図5に示すICモジュール300は、これら様々な機器に構成することが可能である。
図5に示すCPU(Central processing Unit)301は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ302は、CPU301が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU301の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ302は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部303は、例えば上述したFeistel型共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理、さらに、AESアルゴリズムや、Whirlpoolなどの暗号処理やハッシュ関数等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU301がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器304は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部305は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
このICモジュール300において、例えばAESアルゴリズムと、複数の異なる行列(線形変換行列)を適用したFeistel型共通鍵ブロック暗号処理アルゴリズムの2つの異なるアルゴリズムを実行可能な構成とする場合、Feistel型共通鍵ブロック暗号処理アルゴリズムの適用行列の一部をAESアルゴリズムの適用行列と共通化することで、メモリ302に記録すべき変換行列用データを削減することができる。
また、同様に、ハッシュ関数Whirlpoolと、複数の異なる行列(線形変換行列)を適用したFeistel型共通鍵ブロック暗号処理アルゴリズムの2つの異なるアルゴリズムを実行可能な構成とする場合、Feistel型共通鍵ブロック暗号処理アルゴリズムの適用行列の一部をハッシュ関数Whirlpoolの適用行列と共通化することで、メモリ302に記録すべき変換行列用データを削減することができる。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の構成によれば、非線形変換部および線形変換部を有するSP型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数、例えばAESやWhirlpoolなどにおいて適用される変換処理と同一の変換処理として実行する構成としたので、部品の共通化による設計コストの削減やメモリ記憶データの削減が可能となる。すなわち、非線形変換や線形変換を実行するために必要となる少なくとも一部のハードウェアや、ソフトウェアを、異なるアルゴリズムである暗号処理やハッシュ関数において共通に利用可能とすることで、ハードウェアの実装コストを低下させ、またソフトウェア実装においても部品の共有化によるコードサイズの縮小が可能となる。
Feistel構造を持つ代表的な共通鍵ブロック暗号の構成を示す図である。 ラウンド関数部として設定されるF関数の構成について説明する図である。 2つの異なる線形変換行列を利用したFeistel型暗号アルゴリズムについて説明する図である。 3つの異なる線形変換行列を利用したFeistel型暗号アルゴリズムについて説明する図である。 本発明に係る暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
符号の説明
101 入力データP(Plain-Left)
102 入力データP(Plain-Right)
103 ラウンド鍵
104 排他的論理和部
120 F関数
121 Sボックス(S−box)
122 線形変換部
300 ICモジュール
301 CPU(Central processing Unit)
302 メモリ
303 暗号処理部
304 乱数発生器
305 送受信部

Claims (15)

  1. 暗号処理装置であり、
    非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理部を有し、
    前記暗号処理部は、
    各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行する構成であることを特徴とする暗号処理装置。
  2. 前記暗号処理部は、
    各ラウンドの線形変換処理に、少なくとも2以上の異なる複数の行列を選択的に適用する構成であり、選択適用する行列の少なくとも1つは前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記暗号処理部は、
    各ラウンドの線形変換処理に、2つの異なる行列M,Mを選択的に適用する構成であり、各行列M,Mの配置は、
    (a)奇数ラウンドにM,Mの順に配置、
    (b)偶数ラウンドの最終段からM,Mの順に配置、
    上記(a),(b)の条件を満足するように2つの異なる行列M,Mを適用する構成であることを特徴とする請求項2に記載の暗号処理装置。
  4. 前記暗号処理部は、
    各ラウンドの線形変換処理に、3つの異なる行列M,M,Mを選択的に適用する構成であり、各行列M,M,Mの配置は、
    (a)奇数ラウンドにM,M,Mの順に配置、
    (b)偶数ラウンドの最終段からM,M,Mの順に配置、
    上記(a),(b)の条件を満足するように3つの異なる行列M,M,Mを適用する構成であることを特徴とする請求項2に記載の暗号処理装置。
  5. 前記暗号処理部は、
    64ビットFeistel型共通鍵ブロック暗号処理を実行する構成であり、
    各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはAES暗号アルゴリズムにおいて適用される行列であることを特徴とする請求項1〜4いずれかに記載の暗号処理装置。
  6. 前記暗号処理部は、
    AES暗号処理と、64ビットFeistel型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする請求項5に記載の暗号処理装置。
  7. 前記暗号処理部は、
    128ビットFeistel型共通鍵ブロック暗号処理を実行する構成であり、
    各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはWhirlpoolハッシュ関数において適用される行列であることを特徴とする請求項1〜4いずれかに記載の暗号処理装置。
  8. 前記暗号処理部は、
    Whirlpoolハッシュ関数と、128ビットFeistel型共通鍵ブロック暗号処理との両アルゴリズムを選択的に実行する構成を有することを特徴とする請求項7に記載の暗号処理装置。
  9. 暗号処理方法であり、
    非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行する暗号処理ステップを有し、
    前記暗号処理ステップは、
    各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行することを特徴とする暗号処理方法。
  10. 前記暗号処理ステップは、
    各ラウンドの線形変換処理に、少なくとも2以上の異なる複数の行列を選択的に適用し、選択適用する行列の少なくとも1つは前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される行列であることを特徴とする請求項9に記載の暗号処理方法。
  11. 前記暗号処理ステップは、
    各ラウンドの線形変換処理に、2つの異なる行列M,Mを選択的に適用する処理を実行するステップであり、各行列M,Mの適用順は、
    (a)奇数ラウンドにM,Mの順に適用、
    (b)偶数ラウンドの最終段からM,Mの順に適用、
    上記(a),(b)の条件を満足するように2つの異なる行列M,Mを適用することを特徴とする請求項10に記載の暗号処理方法。
  12. 前記暗号処理ステップは、
    各ラウンドの線形変換処理に、3つの異なる行列M,M,Mを選択的に適用する処理を実行するステップであり、各行列M,M,Mの適用順は、
    (a)奇数ラウンドにM,M,Mの順に適用、
    (b)偶数ラウンドの最終段からM,M,Mの順に適用、
    上記(a),(b)の条件を満足するように3つの異なる行列M,M,Mを適用することを特徴とする請求項10に記載の暗号処理方法。
  13. 前記暗号処理ステップは、
    64ビットFeistel型共通鍵ブロック暗号処理を実行するステップであり、
    各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはAES暗号アルゴリズムにおいて利用される行列を適用することを特徴とする請求項9〜12いずれかに記載の暗号処理方法。
  14. 前記暗号処理ステップは、
    128ビットFeistel型共通鍵ブロック暗号処理を実行するステップであり、
    各ラウンドの線形変換処理に選択適用する行列の少なくとも1つはWhirlpoolハッシュ関数において適用される行列であることを特徴とする請求項9〜12いずれかに記載の暗号処理方法。
  15. 暗号処理装置において暗号処理を実行させるコンピュータ・プログラムであり、
    暗号処理部において実行させるステップとして、非線形変換処理および線形変換処理を含むデータ変換処理を実行するSP型F関数を複数ラウンド繰り返すFeistel型共通鍵ブロック暗号処理を実行させる暗号処理ステップを有し、
    前記暗号処理ステップは、
    各ラウンドにおけるF関数において実行する非線形変換処理または線形変換処理の少なくともいずれかの変換処理を、前記Feistel型共通鍵ブロック暗号アルゴリズム以外の暗号アルゴリズムまたはハッシュ関数において適用される変換処理と同一の変換処理として実行させるステップであることを特徴とするコンピュータ・プログラム。
JP2006008695A 2006-01-17 2006-01-17 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Pending JP2007192893A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006008695A JP2007192893A (ja) 2006-01-17 2006-01-17 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CN200780002505XA CN101371286B (zh) 2006-01-17 2007-01-04 密码处理装置和密码处理方法
EP07706356A EP1975908A4 (en) 2006-01-17 2007-01-04 ENCRYPTION / DECOMPOSITION DEVICE, ENCRYPTION / DECOMPOSITION METHOD AND COMPUTER PROGRAM
PCT/JP2007/050009 WO2007083528A1 (ja) 2006-01-17 2007-01-04 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US12/160,895 US8073140B2 (en) 2006-01-17 2007-01-04 Encryption/decryption device, encryption/decryption method, and computer program

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
JP2007192893A true JP2007192893A (ja) 2007-08-02

Family

ID=38287482

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US8073140B2 (ja)
EP (1) EP1975908A4 (ja)
JP (1) JP2007192893A (ja)
CN (1) CN101371286B (ja)
WO (1) WO2007083528A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011130340A (ja) * 2009-12-21 2011-06-30 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
US8619976B2 (en) 2007-12-13 2013-12-31 Nec Corporation Encryption method, decryption method, device, and program

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US20120047087A1 (en) 2009-03-25 2012-02-23 Waldeck Technology Llc Smart encounters
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
JP5682526B2 (ja) 2011-03-28 2015-03-11 ソニー株式会社 データ処理装置、およびデータ処理方法、並びにプログラム
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5682527B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5682525B2 (ja) 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US20140196151A1 (en) * 2013-01-10 2014-07-10 Microsoft Corporation Preserving geometric properties of datasets while protecting privacy
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
CN103905186B (zh) * 2014-02-26 2017-12-05 苏州朗格智能配用电系统有限公司 一种加密方法
JP2015191106A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
CN105281911B (zh) * 2015-08-04 2018-09-25 电子科技大学 将任意长度字符串映射到固定大小矩阵的哈希函数方法
CN109635599B (zh) * 2018-12-07 2024-01-09 上海航芯电子科技股份有限公司 数据加密方法、解密方法、保护装置、片内存储器及芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116029A (ja) * 1996-10-11 1998-05-06 Toshiba Corp 暗号化装置及び暗号化方法
JP2003037482A (ja) * 2001-01-23 2003-02-07 Hitachi Ltd 疑似乱数生成装置またはそれを用いた暗号復号処理装置
JP2005107078A (ja) * 2003-09-30 2005-04-21 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2005309148A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ変換装置およびデータ変換方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US327953A (en) * 1885-10-06 Ische anilin and soda fabrik
US358738A (en) * 1887-03-01 Emmet v
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
JP2005313842A (ja) 2004-04-30 2005-11-10 Ichikoh Ind Ltd 車両用照明装置
JP4905000B2 (ja) * 2006-09-01 2012-03-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116029A (ja) * 1996-10-11 1998-05-06 Toshiba Corp 暗号化装置及び暗号化方法
JP2003037482A (ja) * 2001-01-23 2003-02-07 Hitachi Ltd 疑似乱数生成装置またはそれを用いた暗号復号処理装置
JP2005107078A (ja) * 2003-09-30 2005-04-21 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2005309148A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ変換装置およびデータ変換方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8619976B2 (en) 2007-12-13 2013-12-31 Nec Corporation Encryption method, decryption method, device, and program
JP2011130340A (ja) * 2009-12-21 2011-06-30 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム

Also Published As

Publication number Publication date
CN101371286B (zh) 2011-05-25
US8073140B2 (en) 2011-12-06
EP1975908A4 (en) 2011-06-08
US20100226493A1 (en) 2010-09-09
EP1975908A1 (en) 2008-10-01
CN101371286A (zh) 2009-02-18
WO2007083528A1 (ja) 2007-07-26

Similar Documents

Publication Publication Date Title
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4622807B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4882598B2 (ja) 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4622222B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
JP4561252B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP2009003312A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111108