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

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

Info

Publication number
JP5023624B2
JP5023624B2 JP2006238226A JP2006238226A JP5023624B2 JP 5023624 B2 JP5023624 B2 JP 5023624B2 JP 2006238226 A JP2006238226 A JP 2006238226A JP 2006238226 A JP2006238226 A JP 2006238226A JP 5023624 B2 JP5023624 B2 JP 5023624B2
Authority
JP
Japan
Prior art keywords
function
round
functions
data
different
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
JP2006238226A
Other languages
English (en)
Other versions
JP2008058829A (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 JP2006238226A priority Critical patent/JP5023624B2/ja
Priority to EP07806208A priority patent/EP2058782A1/en
Priority to PCT/JP2007/066731 priority patent/WO2008026623A1/ja
Priority to US12/439,250 priority patent/US8396210B2/en
Priority to CN200780040630XA priority patent/CN101553856B/zh
Priority to TW096132640A priority patent/TW200830831A/zh
Publication of JP2008058829A publication Critical patent/JP2008058829A/ja
Application granted granted Critical
Publication of JP5023624B2 publication Critical patent/JP5023624B2/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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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

Description

本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号であったDES(Data Encryption Standard)アルゴリズム、現在の米国標準暗号であるAES(Advanced Encryption Standard)アルゴリズムなどが知られている。
このような、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するF関数部を有するラウンド関数部と、ラウンド関数部の各ラウンドにおけるF関数部で適用するラウンド鍵を生成する鍵スケジュール部とによって構成される。鍵スケジュール部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた拡大鍵を生成し、生成した拡大鍵に基づいて、ラウンド関数部の各ラウンドのF関数部で適用するラウンド鍵(副鍵)を生成する。
このようなラウンド関数(F関数)を適用したアルゴリズムを実行する具体的な構造として、Feistel構造が知られている。Feistel構造は、データ変換関数としてのラウンド関数(F関数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。Feistel構造を適用した暗号処理について記載した文献としては、例えば非特許文献1、非特許文献2がある。
しかし、このFeistel構造を適用する共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。暗号解析または攻撃手法の代表的な手法として、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析(差分解読法または差分攻撃とも呼ばれる)や、平文と対応暗号文に基づく解析を行う線形解析(線形解読法または線形攻撃とも呼ばれる)が知られている。
暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになる。従来の暗号アルゴリズムにおいては、ラウンド関数(F関数)部の線形変換部において適用する処理(変換行列)が、各段のラウンドにおいて等しいものであったため解析が行いやすく、結果として鍵の解析の容易性を招いていた。
このような問題に対処する構成として、Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を各ラウンド毎に切り替えるように配置する構成が提案された。この技術は拡散行列切り替え機構(DSM:Diffusion Switching Mechanism,以下DSM)と呼ばれる。このDSMにより、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。この拡散行列切り替え機構(DSM)を適用した暗号処理構成については、例えば特許文献1に記載されている。
しかし、拡散行列切り替え機構(DSM)を適用した暗号処理を実行する場合には、異なる行列を設定した異なるラウンド関数(F関数)を実装することが必要であり、また、複数のラウンド関数を予め定められてシーケンスに従って切り替えを行なうことが必要であり、新たな制御機構を設けることが必要であり、暗号処理装置を構成する場合に、必要となる構成が増加し、装置の小型化の妨げとなりコスト高になる。また切り替え制御に伴い処理速度が低下するという問題がある。
特開2006−72054号 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
本発明は、上記問題点に鑑みてなされたものであり、Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を各ラウンド毎に切り替えるように配置する拡散行列切り替え機構(DSM)を適用した暗号処理構成を改良し、実装コストを上昇させずに高速な暗号処理を実行可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数として少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理部と、
前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリを有し、
前記データ処理部は、
予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得し、取得アドレスを適用したメモリアクセスにより、各ラウンドのF関数に対応するF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、暗号処理対象データを2分割したデータ系列数(分割数)d=2の設定に従って暗号処理を実行するFeistel構造に基づく暗号処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、暗号処理対象データを3以上に分割したデータ系列数(分割数)d≧3の設定に従って暗号処理を実行する拡張型Feistel構造に基づく暗号処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、予め設定された暗号関数を実行し、該暗号関数の実行に際して、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを、各ラウンド毎に適宜切り替えて各ラウンドのF関数に対応するF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記メモリは、各F関数に対する入力値または入力値の構成データと、F関数の出力値または中間値、またはこれらの構成データとを対応付けたF関数対応テーブルを格納した構成であることを特徴とする。
さらに、本発明の第2の側面は、
暗号処理装置において、Feistel型共通鍵ブロック暗号処理を実行する暗号処理方法であり、
データ処理部において、ラウンド関数として少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理ステップを有し、
前記データ処理ステップは、
予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得するステップと、
前記取得アドレスを適用したメモリアクセスを実行し、前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリから、各ラウンドのF関数に対応するF関数対応テーブルを読み込むステップと、
メモリから読み込まれたテーブルを参照し、F関数入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得るステップと、
を有することを特徴とする暗号処理方法にある。
さらに、本発明の第3の側面は、
暗号処理装置において、Feistel型共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
データ処理部に、ラウンド関数として少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行させるデータ処理ステップを有し、
前記データ処理ステップは、
予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得させるステップと、
前記取得アドレスを適用したメモリアクセスを実行させ、前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリから、各ラウンドのF関数に対応するF関数対応テーブルを読み込ませるステップと、
メモリから読み込まれたテーブルを参照させ、F関数入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を取得させるステップと、
を実行させるステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例の構成によれば、ラウンド関数として少なくとも2種類以上の異なるF関数を選択的に適用したラウンド演算による暗号処理を実行する構成において、F関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルをメモリに格納し、予め規定された暗号処理シーケンスに従って、各ラウンドのF関数に対応するテーブルアクセス用アドレスを適用してメモリからF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る。本構成によれば、各ラウンドに対応して変更されるアドレスに従って各F関数対応テーブルを取得して、入力値に対応する出力値を効率的に取得または算出可能となる。例えば、1つの暗号関数を適用して引数を変更するのみで、様々な暗号処理を実行することが可能となる。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.SPN型Feistel構造
2.2つのデータ系列を持つFeistel構造に対する拡散行列切り替え機構(DSM)の設定構成
3.拡張型Feistel構造(GFN:Generalized Feistel Network)に対する拡散行列切り替え機構(DSM)の設定構成
4.異なる線形変換行列を適用した異なるラウンド関数のテーブル実装による処理構成
5.暗号処理装置の構成例
[1.SPN型Feistel構造]
まず、SPN(Substitution Permutation Network))型Feistel構造について説明する。共通鍵ブロック暗号のデザインとして知られているFeistel構造はラウンド関数と呼ばれる基本処理単位の繰り返しにより、平文を暗号文に変換する構造を持つ。
図1を参照して、Feistel構造の基本構成について説明する。図1には、rラウンドのラウンド数=rを持つ2つのデータ系列を持つFeistel構造の例を示している。なお、ラウンド数rは、設計の段階で決定されるパラメータであり、例えば入力される鍵の長さに応じて変更可能な値である。
図1に示すFeistel構造において、暗号化対象として入力される平文の長さを2mnビットとする。ただし、m,nは共に整数である。初めに、2mnビットの平文を、mnビットの2つの入力データP[0]101,P[1]102に分割し、これを入力値とする。図に示す例は、入力値を2分割する構成であり、データ系列数(分割数)=2の構成例である。
Feistel構造はラウンド関数とよばれる基本処理単位の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はラウンド関数(F関数)120と呼ばれる。図1の構成では、ラウンド関数120がr段繰り返された構成例を示している。
例えば第1番目のラウンドでは、mnビットの入力データXと、図示しない鍵スケジュール部(鍵生成部)から入力されるmnビットのラウンド鍵RK103がF関数120に入力され、ラウンド関数(F関数)120におけるデータ変換処理の後にmnビットのデータYを出力する。出力はもう片方の前段からの入力データ(第1段の場合は入力データP)と排他的論理和部104において、排他的論理和演算がなされ、mnビットの演算結果が次のラウンド関数へと出力される。この処理、すなわちラウンド関数(F関数)を定められたラウンド数(r)だけ繰り返し適用して暗号化処理が完了し、暗号文の分割データC[0]、C[1]が出力される。各ラウンドにおいて実行されるラウンド関数(F関数)が同一構成である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と呼ぶものとする。
ラウンド数rとしたSPN型Feistel構造は、図3に示すような構成となる。n−bitの平文PはP[0]とP[1]に1/2に分割され、P[0]にラウンド鍵RKが入力されたラウンド関数Fを適用し、その結果とP[1]との排他的論理和演算(EXOR)を実行する。この結果を次のラウンドの左入力、P[0]を右入力とする。以降規定の回数(r回)ラウンド関数を繰り返し適用し、最終出力Cを得る。この構成は全てのラウンドでラウンド関数(F関数)は同じものである。
ラウンド関数F内では、まずラウンド関数に入力されたデータがラウンド鍵と排他的論理和演算(EXOR)がなされる。その結果を、X(n/2−bit)とする。Xはm個のs−bitデータに分割される。これをそれぞれx,x,・・・,xとする(X=(x||x||・・・||x))である。なお、a||bはaとbの連結データを示す。
各分割データxはそれぞれs−bit入出力の非線形変換S、すなわちSボックス(S−box)に入力される。S−boxの出力をそれぞれz,z,・・・,zとおく(Z=z||z||・・・||z)。Zは、さらに、線形変換部に入力され、m×m行列M0を適用した行列演算を施され、最終出力Yを得る。
このように、Feistel構造は、データ変換関数としてのラウンド関数(F関数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。しかし、このFeistel構造を適用する共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩がある。例えば、差分解析(差分解読法または差分攻撃とも呼ばれる)や、平文と対応暗号文に基づく解析を行う線形解析(線形解読法または線形攻撃とも呼ばれる)による解析がなされる恐れがある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになる。
[2.2つのデータ系列を持つFeistel構造に対する拡散行列切り替え機構(DSM)の設定構成]
先に説明したように、Feistel構造を適用した暗号処理において、差分攻撃や線形攻撃に対する耐性を高める構成として、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism,以下DSM)を適用した構成が提案されている。この拡散行列切り替え機構(DSM)を適用した暗号処理構成については、例えば特開2006−72054号に記載されている。DSMは、Feistel構造のラウンド関数(F関数)部の線形変換部において適用する行列をすべてのラウンドで同一とするのではなく、少なくとも2つ以上の異なる行列を各ラウンドに配置する構成である。このDSMにより、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
このDSMについて、その概要を説明する。Feistel構造において、拡散行列切り替え機構(DSM)を適用した場合、Feistel構造を構成するラウンド関数(F関数)部の線形変換部(P層)において適用する行列は、複数の異なる行列となる。例えば、図1や図3に示すようなrラウンドのFeistel構造の各ラウンドにおける適用行列を全て同じ線形変換行列として設定するのではなく、少なくとも2種類以上の行列を特定の規則に従って配列する。
例えば、各ラウンドのラウンド関数(F関数)の線形変換層に2つの異なる線形変換行列M,Mを配置した拡散行列切り替え機構(DSM)を実現したFeistel構造例を図4に示す。図4に示すFeistel構造例において、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)、
を示している。
2つの線形変換行列M,Mは、異なる行列によって構成される。
なお、拡散行列切り替え機構(DSM)を実現するためには、適用する行列は、所定の条件を満たすことが必要となる。この条件の1つが、分岐数(Branch)に関する制約である。以下、この制約について説明する。
Feistel構造におけるラウンド関数部の線形変換に適用する複数の異なる行列M〜Mそれぞれの分岐数において、
適用行列中の分岐数の最小値:B と、
適用する複数の行列の結合行列に対応する分岐数の最小値:B ,B ,B
を以下のように定義する。
Figure 0005023624
上記式において、
は、Feistel構造における第iラウンドの線形変換処理に適用する線形変換行列を示し、
[M|Mi+2|・・]は、M|Mi+2|・・各行列の連結により得られる結合行列を示し、
Mは、行列Mの転置行列、M−1は、行列Mの逆行列を示す。
上記式において、:B ,B ,B は、具体的には、Feistel構造における1つ飛びで連続する2ラウンドもしくは3ラウンドのF関数に含まれる行列を結合した行列の分岐数の最小値を表している。
例えば、上記の各分岐数が以下の条件、すなわち、
≧3, B ≧3, B ≧3、
上記条件を満足させるように各行列を設定することで、Feistel構造において、差分攻撃や線形攻撃に対する耐性を向上させることが出来ることが知られている。
なお、B ,B ,B ,B における各添え字は以下の意味を持つものである。
のnは結合する行列数、B のDは差分攻撃(Differential Attack)に対する耐性を持つための条件であることを示し、B のLは線形攻撃(Linear Attack)に対する耐性を持つための条件であることを示している。
このように、各ラウンドのラウンド関数(F関数)の線形変換層に2つ以上の異なる線形変換行列を配置した拡散行列切り替え機構(DSM)を適用することで差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
図4に示す構成では、2つの異なる行列M,Mを適用し、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)Fと、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)Fとによって構成されるFeistel構造であるが、適用する異なる線形変換行列の数は2に限らず、3,4・・種類の行列を適用する構成とすることができる。
図5に3つの行列M,M,Mを適用したFeistel構造例を示す。図5に示すFeistel構造例において、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するラウンド関数(F関数)、
を示している。
3つの線形変換行列M,M,Mは、異なる行列によって構成される。
このように、拡散行列切り替え機構(DSM)は、異なる線形変換処理を実行する複数の異なる線形変換行列M,M,・・を各ラウンドのラウンド関数(F関数)の線形変換層に配置してラウンド関数を実行させるものであり、この構成により差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
[3.拡張型Feistel構造(GFN:Generalized Feistel Network)に対する拡散行列切り替え機構(DSM)の設定構成]
次に、拡張型Feistel構造(GFN:Generalized Feistel Network)について説明する。図1〜図5を参照して説明したFeistel構造は、入力データPを2つのデータ系列P[0],P[1]に分割して処理を実行する構成である。入力データの分割数をデータ系列数(分割数)と呼ぶ。図1〜図5を参照して説明したFeistel構造は、データ系列数(分割数)d=2の設定である。
Feistel構造を適用した暗号処理では、データ系列数(分割数)dは3以上の数に設定することが可能であり、データ系列数(分割数)を3以上の任意数:dとしたFeistel構造を拡張型Feistel構造(GFN:Generalized Feistel Network)と定義する。このような拡張型Feistel構造(GFN)においても、拡散行列切り替え機構(DSM)の適用が可能であり、拡散行列切り替え機構(DSM)の適用により暗号攻撃に対する耐性を向上させることができる。
拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)を持つ暗号化関数の構成例を図6に示す。図6に示す例は、データ系列数(分割数)dを、d=4とした拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)の暗号化関数の構成例である。
拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)は、前述したように、Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を各ラウンド毎に切り替えるように配置する構成としたものである。DSMにより、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。図6に示す例では、F関数Fと、F関数Fとでは、それぞれ異なる線形変換行列を適用したデータ変換を実行する構成となっている。なお、これらF関数において適用する線形変換行列は、ある特定の条件を満足する行列に設定することで、差分攻撃や線形攻撃に対する耐性を大きく向上させることが可能となる。この構成については、本出願人が先に出願した特願2006−206376号において詳細に説明している。
図6に示す暗号化関数の構成において、入力は、平文Pであり、平文PはP[0],P[1],P[2],P[3]の4つのデータ系列(分割数=4)に分割され、順次、各ラウンドにおいてF関数F、またはF関数Fを適用したデータ変換が実行されて、rラウンドの変換結果として暗号文Cを構成するC[0],C[1],C[2],C[3]を出力する。各ラウンドのF関数F、またはF関数Fでは、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)のRK[0],RK[1]が入力され、データ変換に適用される。なお、鍵RK[n]のiはラウンドを示し、nは、同一ラウンドにおけるラウンド鍵の識別子を示す。
図6に示すように、拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)においては、各ラウンドの切り替え部分では、各データ系列を入れ替えるスワップ処理が実行される。図6に示すようにスワップ関数211は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定する。
図6において、データ系列を、図6上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数211によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数が暗号化処理において適用されるスワップ関数である。
データ系列数(分割数)d=3以上の任意数を持つ拡張型Feistel構造(GFN)では、各ラウンドにおいて、1つ以上のラウンド関数が実行され、その後、系列切り替え処理が行なわれて、後続するラウンド関数が実行されるという処理を繰り返すことになる。
このようなデータ系列数(分割数)d=3以上の任意数を持つ拡張型Feistel構造(GFN)においても、ラウンド関数(F関数)において適用する線形変換行列を、ある特定の条件を満足する異なる行列として設定することで、差分攻撃や線形攻撃に対する耐性を大きく向上させることが可能となる。
[4.異なる線形変換行列を適用した異なるラウンド関数のテーブル実装による処理構成]
上述したような、拡散行列切り替え機構(DSM)を採用したFeistel構造または拡張型Feistel構造を適用した暗号処理構成は、差分攻撃や線形攻撃に対する耐性を大きく向上させるという利点があるが、一方、次のような問題がある。すなわち、
異なる行列を設定した異なるラウンド関数(F関数)を実装することが必要、
複数のラウンド関数を予め定められてシーケンスに従って切り替えを行なう新たな制御機構を設けることが必要、
従って、暗号処理装置を構成する場合に、必要となる構成が増加し、装置の小型化の妨げとなりコスト高になる。また切り替え制御に伴い処理速度が低下するという問題がある。
以下では、このような問題を解決する構成について説明する。すなわち、異なる線形変換行列を適用した異なるラウンド関数のテーブル実装による処理構成である。
ラウンド関数(F関数)を持つ共通鍵暗号の実装構成としては、ソフトウェア、ハードウェアを適用した様々な構成が可能である。F関数の処理構成としては非線形変換部としてのS−boxと、線形変換部としての行列演算部が必要となるが、それぞれ論理回路によるハードウェア構成や、テーブル変換表を用いた構成が可能である。高速動作を要求される場合は、テーブル(表引き)実装と呼ばれる手法が最適である。
表引き(テーブル)実装は、実際の演算は行わず、様々な入力に対応する予め計算済みの演算結果をテーブル(置換表)でメモリ空間に保持し、テーブルを参照することによって、求めたい出力値を得る実装手法である。例えば、
f(x)=x
といった計算を行いたい場合には、以下のような値を持つftabというテーブル(置換表)を持つことにより、実際のxの計算を行わずともftabの中身を参照することで、xの結果を得ることが可能になる。
ftab[0]=0(=0)、
ftab[1]=1(=1)、
ftab[2]=8(=2)、
ftab[3]=27(=3)、
ftab[4]=64(=4)、
・・
上記は、入力値として0,1,2,3,4があるとき、出力として0,1,8,27,64を取得する構成を持つテーブルftabの例である。
このようにF関数が表引き(テーブル)実装構成を適用し、必要となる各F関数の入力値に対応する出力値を予めテーブルとして用意して、暗号処理装置のメモリに格納する。各F関数のテーブルは、メモリのテーブル格納位置を示す各アドレスに基づいて取得可能な構成とする。この方法によれば、F関数の入れ替えは実行速度を落とさずに容易に行うことが可能となる。これを応用して、偶数段のF関数のテーブルのアドレスだけを外部から与えるようにすることで、関数を用いずに暗号化関数と復号関数の変更が可能になる。
例えば、16−bit入出力のF関数の入力から出力を求めるためのテーブル構成を図7を参照して説明する。図7(a)に示すラウンド関数(F関数)は、2つのS−box301,302と、1つの線形変換部303を有する構成である。この構成において、入力X(16−bit)を8−bitごと2つに分割してx、xとする。
次にx、xをそれぞれ8−bit入出力の非線形変換処理を実行するS−box301,302に入力し、出力z、zを得る。これらのz、zに線形変換部303において線形変換を施し、その結果y、yを得て、これらを連結して最終出力Yを得る。例えば、線形変換部303における線形変換は以下のように計算される。
Figure 0005023624
このようなS−boxにおける非線形処理や、線形変換部における行列演算は、論理回路などにより入力値から出力を求める設定とすることが可能である。
すなわち、S−boxにおける非線形処理演算として、
=S(x
=S(x
上記演算を実行する論理回路を構成し、さらに、線形変換部における演算として、
=a0,0(EXOR)a0,1
=a1,0(EXOR)a1,1
上記演算を実行する論理回路を構成して、論理回路を適用して結果を求める構成とすることが可能である。しかし、論理回路を構成すると、実装面積が大きくなり、また処理速度も低下するという問題がある。
そこで、演算部分を予め計算し、様々な入力に対応する出力値をテーブルで保持し、テーブル参照により出力を得る処理が高速化には最適となる。例えば、図7に示すラウンド関数では、図7(b)に示すテーブルが利用可能となる。
この例では、tを2つのS−box301,302に対する入力値に相当する変数として、以下の2つのテーブルTAB[t],TAB[t]を適用する。
TAB[t]=(a0、0S(t)||a1、0S(t))
TAB[t]=(a0、1S(t)||a1、1S(t))
入力値[t]は2つのS−box301,302に対する入力値x,xに相当する8ビットデータであり、TAB[t]、TAB[t]によってテーブルから取得されるデータ、すなわち、
(a0、0S(t)||a1、0S(t))
(a0、1S(t)||a1、1S(t))
これらは、各々16ビットデータである。
TAB[t]、TAB[t]によって取得される16ビットデータに基づいて、最終的なラウンド関数の出力Yを求める。出力Yは、TAB[]にxを挿入して得られる結果とTAB[]にxを挿入して得られる結果とをEXORする処理、すなわち、
Y=TAB[x](EXOR)TAB[x
によって算出することができる。
上記の処理をより細かく記述すると以下のようになる。
Y=(y||y)=(a0、0S(x)||a1、0S(x))(EXOR)(a0、1S(x)||a1、1S(x))
となる。
このテーブルを利用した手法を適用した場合、テーブルTAB[]と、テーブルTAB[]の各テーブルの参照処理を各1回実行して、入力x,xに対応する出力TAB[x]、TAB[x]を求める。すなわち、
TAB[x]=(a0、0S(x)||a1、0S(x))
TAB[x]=(a0、1S(x)||a1、1S(x))
次に、これら2つのテーブル取得値、TAB[x]、TAB[x]を、1回排他的論理和演算(EXOR)を実行する。
これらの処理によって、1つのラウンド関数の処理結果を得ることができる。つまり、処理としてはテーブル参照が2回と排他的論理和演算(EXOR)が1回だけである。よって、テーブル参照が十分高速に実行できるのであれば、F関数の処理を非常に高速に行うことができる。
本発明では、先に説明した拡散行列切り替え機構(DSM)を採用したFeistel構造または拡張型Feistel構造を適用した暗号処理におけるラウンド演算に、上述のテーブル参照処理を適用した構成を提案する。先に説明したように、拡散行列切り替え機構(DSM)は、複数の異なる線形変換行列を適用した異なるラウンド関数(F関数)を適切に用いることで、単一のF関数を用いる手法と比較して飛躍的に安全性を高められる方式である。この方式では、複数の異なるF関数を用いるが、その数によって、安全性のパラメータや実装上の特性が変化する。
拡散行列切り替え機構(DSM)を用いる場合は、異なるラウンド関数を各ラウンド毎に適用することが必要であり、ラウンド関数(F関数)の切り替え制御が必要となる。1つの実装構成例としては、例えば3つの異なる線形変換行列を持つ3つの異なるラウンド関数(F関数)を利用した構成では、F、F、Fという3つのF関数を用意した設定とする。
この実装構成によれば、ラウンド関数(F関数)の選択制御により、様々な暗号処理が実現される。例えば、先に図3を参照して説明した1つのみのラウンド関数(F関数)Fを利用したSPN型Feistel構造による暗号処理を行なう場合、全てのラウンドにおいて、F関数Fを呼び出して適用する構成とする。
また、先に図4を参照して説明した2つの異なる線形変換行列M、Mを有する2つのF関数F、Fを利用したDSM適用Feistel構造に従った暗号処理を行なう場合、各ラウンドにおいて、予め規定されたシーケンスに従って、2つのF関数F、Fを呼び出して適用する構成とする。
また、先に図5を参照して説明した3つの異なる線形変換行列M、M、Mを有する3つのF関数F、F、Fを利用したDSM適用Feistel構造に従った暗号処理を行なう場合、各ラウンドにおいて、予め規定されたシーケンスに従って、3つのF関数F、F、Fを呼び出して適用する構成とする。
このように、本体の暗号化部は変更せずとも3つの暗号化関数を1つのプログラムで実行することができる。
以上のようにF関数の適時入れ替えができれば、様々な応用が可能であるため、特にDSMにおいては容易にF関数の入れ替えができることが望ましい。
この問題を解決するための最も簡易な手法として、F関数部を関数として外部から入力するような形が考えられる。この手法では複数のF関数部を実行する関数を作っておいて、それらを暗号化関数に入力することでF関数の切り替えを実現する。しかしながら、この手法では複数のF関数を暗号化関数で複数回呼び出す必要がある。一般的に1度の実行時間が非常に短いブロック暗号においては、暗号化関数内で他の関数(この場合F関数)を複数回呼び出すことは実行速度の大幅な低下を招くと考えられ、その影響は大きい。よって、F関数部を関数にせずに切り替えられることがより望ましい。
このような問題を解決する構成として、異なる線形変換行列を適用した異なるラウンド関数(F関数)の各々に対応したテーブルを実装した処理構成について説明する。すなわち、予め装置のメモリ空間に、異なる線形変換行列を適用した異なるラウンド関数(F関数)に対応する出力値取得用のテーブルを格納する。上述した拡散行列切り替え機構(DSM)を適用したFeistel構造に従った暗号処理を実行する場合は、各ラウンドにおいて利用するテーブルを適宜切り替えて利用する。すなわち利用するテーブルだけを入れ替えることでF関数入れ替えを実現する。
より具体的には、例えば暗号処理を実行する暗号化関数の入力情報として、各ラウンドにおいて適用するラウンド関数(F関数)対応テーブルの取得用メモリアドレスを設定する。暗号化関数がラウンド関数を実行する場合、各ラウンド対応のメモリアドレスを適用して、メモリから各ラウンドにおいて実行するラウンド関数(F関数)に対応するテーブルを取得して、所定の入力値に基づいてテーブル設定値を取得する。この処理により、テーブル、つまりメモリのアドレスのみを入れ替えればF関数を入れ替えたことと等価になり、高速処理が実現される。すなわち、実際の処理はテーブルのアドレスが変わっただけであるので、実行速度は全く低下しない。
図8、図9を参照して、複数の異なるラウンド関数(F関数)に対応する複数のテーブルを利用した暗号処理構成について説明する。図8は、本実施例に係る暗号処理装置400の一構成例を示す図である。暗号処理装置400は、例えば、上述したSPN型Feistel構造を適用した暗号処理、拡散行列切り替え機構(DSM)を適用したFeistel構造に従った暗号処理などを実行するデータ処理部410と、異なる線形変換行列M,M,・・・を適用したラウンド関数(F関数)F,F・・・に対応するテーブルを格納したメモリ420を有する。
メモリ420は、異なる線形変換行列M,M,・・・を適用したラウンド関数(F関数)F,F・・・に対応するテーブル、すなわち異なるF関数F,F・・・の入力値に対応する出力値または出力値を算出するために必要となる中間値を、各入力値に対応付けて格納した複数のF関数対応テーブル421,422・・42nを保持している。
図9に、メモリ420に格納される複数のF関数対応テーブル421,422・・42nの例を示す。F関数対応テーブル421は第1のF関数(ラウンド関数)に対応するテーブルであり、第1F関数に対する各入力値と、入力値に対応する出力値または出力値を算出するために必要となる中間値とが対応付けて設定されている。F関数対応テーブル422は第2のF関数(ラウンド関数)に対応するテーブルであり、第2F関数に対する各入力値と、入力値に対応する出力値または出力値を算出するために必要となる中間値とが対応付けて設定されている。以下、同様に、n個のF関数の対応テーブルがメモリ420には格納される。
なお、テーブルに格納される入力値は、F関数全体に対する入力値としてもよいし、F関数内の各S−boxに対する入力値など、F関数入力値の部分的な構成値としてもよい。出力値についてもF関数の出力値としてもよいし、出力値を算出するための中間値としてもよい。すなわち、メモリ420に格納されるF関数対応テーブルは、各F関数に対する入力値または入力値の構成データと、F関数の出力値または中間値、またはこれらの構成データとを対応付けたテーブルとされる。
これらの各テーブルはアクセス用アドレスを適用して読み出しが可能な構成であり、各テーブルに対応するアドレス、例えば、
第1F関数対応テーブルアドレス=[FF000001]
第2F関数対応テーブルアドレス=[FFF01234]
など、各テーブルの読み込みアドレスが設定され、図8に示すラウンド関数実行部411は、各ラウンドにおいて適用するF関数に対応するアドレスを適用してテーブル読み出しを実行する。
図8に示すデータ処理部410は、ラウンド関数を実行するラウンド関数実行部411と、各ラウンドにおいて適用するF関数対応テーブルのアクセスに適用する各テーブル対応のメモリアドレスを、ラウンド関数実行部411に提供するメモリアドレス提供部412と、暗号処理のシーケンス情報を格納した処理シーケンス情報格納部413を有する。
処理シーケンス情報格納部は、例えば、先に説明した拡散行列切り替え機構(DSM)を適用したFeistel構造に従った暗号処理を実行する場合に、各ラウンドで実行するF関数のシーケンス情報を格納しており、メモリアドレス提供部412は、このシーケンス情報に従って、各ラウンドにおいて参照すべきF関数対応テーブルのメモリアドレスを取得して、ラウンド関数実行部411に提供する。
ラウンド関数実行部411は、実行する暗号シーケンスに従ったラウンド毎に実行するF関数に対応するテーブルのアクセス用アドレスをメモリアドレス提供部412から受領し、受領アドレスに従って、メモリ420のアクセスを実行して、各ラウンドにおいて適用すべきF関数対応テーブルを取得して、テーブル参照に基づいて、入力値に対応する出力値(または中間値)を得る。ラウンド関数実行部411は、各ラウンドにおいて適用するテーブルの取得を、各ラウンドに対応して変更されるアドレスに従って実行するのみであり、一定の暗号関数において適用する引数として各ラウンド毎のF関数対応テーブルのアドレスを逐次設定すればよく、1つの暗号関数を適用して引数を変更するのみで、様々な暗号処理を実行することが可能となる。すなわち、異なるF関数の呼び出し処理といったことが不要であり、高速に各ラウンド演算(F関数)の処理結果を得ることが可能となる。また、この構成では、各ラウンド関数に対応する論理回路等が必要とならず、装置の小型化、実装コストの削減が可能となる。
なお、先に図6を参照して説明したデータ系列数が3以上の任意数に設定可能な拡張型Feistel構造を適用した暗号処理を実行する構成では、1つのラウンドにおいて複数のラウンド関数(F関数)が並列に実行されることがある。従って、拡張型Feistel構造を適用した暗号処理を実行する構成の場合は、ラウンド関数実行部411は、複数のラウンド関数(F関数)を並列実行可能な構成とすることが好ましい。ラウンド関数実行部411は、並列に実行するラウンド関数に対応するそれぞれのF関数対応テーブルの参照処理を並列に実行する。なお、処理速度は低下するがメモリアクセスはシーケンシャルに行なう構成としてもよい。
なお、図8に示すようなメモリに格納したF関数対応テーブルの参照切り替え構成を用いれば、各ラウンドにおいて適用するテーブルの変更をメモリアクセス用のアドレス変更のみで実行できるので、テーブル利用シーケンスの柔軟な変更が可能となる。例えば、先に図5を参照して説明した3つの異なる行列M,M,Mを適用したFeistel構造による暗号処理においては、図5に示す例では、
F関数の適用シーケンス=
→F→F→F→F・・・
と設定されているが、
このシーケンスを、例えば以下のように変更する。
の位置にFを設定し、
の位置にFを設定し、
の位置にFを設定する。
このようなF関数の利用シーケンスの変更は、各ラウンドにおいて適用するアドレスの変更のみで実現できる。
上記の変更例では、各ラウンドのF関数利用シーケンスは、
→F→F→F→F・・・
となる。
このようなシーケンスを実現するために必要となる処理は、各ラウンドにおいて適用するF関数呼び出しアドレスの順番を変更するのみであり、容易な変更が可能となる。このような異なるF関数利用シーケンスに従った暗号処理は、変更前のF関数利用シーケンスとは異なる入出力を持ち、かつ安全性としては等価な暗号化関数が構成できる。
なお、拡散行列切り替え機構(DSM)では、適用する異なるラウンド関数(F関数)の数によって、安全性のパラメータが変化する。一般的に多くの異なるラウンド関数(F関数)を用いた方が安全性は高められる。複数のF関数対応のテーブルをメモリに格納し利用する構成とする場合、高速アクセス可能なメモリ空間(例えば1次キャッシュメモリ)上に参照すべきテーブルが入りきらなくなってしまう場合も想定されるので、処理シーケンスに応じて参照が必要となるテーブルの最大数を格納可能なメモリ領域を高速アクセス可能なメモリ空間として設定した構成とすることが好ましい。
図8に示すように、本発明の暗号処理装置400は、Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置であり、ラウンド関数として少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理部410と、2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリ420を有し、データ処理部410では、予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得し、取得アドレスを適用したメモリ420のアクセスにより、各ラウンドのF関数に対応するF関数対応テーブル421〜42nを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る。
なお、データ処理部410は、各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する構成であり、例えば、暗号処理対象データを2分割したデータ系列数(分割数)d=2の設定に従ったFeistel構造、あるいは、データ系列数(分割数)d≧3の設定とした拡張型Feistel構造に基づく暗号処理を実行する。
データ処理部410では、予め設定された暗号関数を実行し、暗号関数の実行に際して、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを、各ラウンド毎に適宜切り替えて各ラウンドのF関数に対応するF関数対応テーブルをメモリ420から読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る。
なお、メモリ420に格納されるF関数対応テーブル421〜42nは、各F関数に対する入力値または入力値の構成データと、F関数の出力値または中間値、またはこれらの構成データとを対応付けたF関数対応テーブルである。
前述したように、このような構成とすることで、データ処理部410は、各ラウンドのF関数に従ったデータ変換処理を、各ラウンドに対応して変更されるアドレスに従ってテーブルを取得して実行することが可能となり、一定の暗号関数において適用する引数として各ラウンド毎のF関数対応テーブルのアドレスを逐次設定すればよく、1つの暗号関数を適用して引数を変更するのみで、様々な暗号処理を実行することが可能となる。すなわち、異なるF関数の呼び出し処理といったことが不要であり、高速に各ラウンド演算(F関数)の処理結果を得ることが可能となる。また、この構成では、各ラウンド関数に対応する論理回路等が必要とならず、装置の小型化、実装コストの削減が可能となる。
[5.暗号処理装置の構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール700の構成例を図10に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図10に示すICモジュール700は、これら様々な機器に構成することが可能である。
図10に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用される。また、メモリ702は、図8、図9を参照して説明したように、上述した異なるF関数に対応する出力値を得るためのF関数対応テーブルの格納領域として利用される。
上述したように、異なる線形変換行列M,M,・・・を適用したラウンド関数(F関数)F,F・・・に対応するテーブル、すなわち異なるF関数F,F・・・の入力値に基づく出力値を算出するために必要となる値を、各入力値に対応付けて格納した複数のF関数対応テーブルを保持している。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部703は、例えば上述したFeistel構造や、拡張型Feistel構造に従った共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
このICモジュール700の暗号処理部703は、例えば、データ系列数d=2のFeistel型暗号処理、または、データ系列数dがd≧3の整数とした拡張型Feistel型暗号処理を実行する。また、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する。なお、暗号処理に際しては、図8、図9を参照して説明したように、異なるF関数に対応する出力値を得るためのF関数対応テーブルを取得するためのアドレスを、各ラウンドにおいて逐次切り替えてメモリアクセスを実行して各F関数の入力値に対応する出力値または中間値を取得してラウンド演算を実行する。この処理によって、様々な暗号関数を利用することなく、メモリアクセス用のアドレスを引数として設定した1つの暗号関数の利用により、様々な暗号シーケンスに従った処理が可能となる。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の一実施例の構成によれば、ラウンド関数として少なくとも2種類以上の異なるF関数を選択的に適用したラウンド演算による暗号処理を実行する構成において、F関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルをメモリに格納し、予め規定された暗号処理シーケンスに従って、各ラウンドのF関数に対応するテーブルアクセス用アドレスを適用してメモリからF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る。本構成によれば、各ラウンドに対応して変更されるアドレスに従って各F関数対応テーブルを取得して、入力値に対応する出力値を効率的に取得または算出可能となる。例えば、1つの暗号関数を適用して引数を変更するのみで、様々な暗号処理を実行することが可能となる。
Feistel構造の基本構成について説明する図である。 ラウンド関数部として設定されるF関数の構成について説明する図である。 ラウンド数をrとしたSPN型Feistel構造例を示す図である。 各ラウンドのラウンド関数(F関数)の線形変換層に2つの異なる線形変換行列M,Mを配置した拡散行列切り替え機構(DSM)を実現したFeistel構造例を示す図である。 3つの行列M,M,Mを適用したFeistel構造例を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)を持つ暗号化関数の構成例を示す図である。 F関数の入力から出力を求めるためのテーブル構成を説明する図である。 複数の異なるラウンド関数(F関数)に対応する複数のテーブルを利用した暗号処理構成について説明する図である。 複数の異なるラウンド関数(F関数)に対応する複数のテーブルを利用した暗号処理構成を実現するためにメモリに格納されるテーブルについて説明する図である。 本発明に係る暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
符号の説明
101 入力データP[0]
102 入力データP[1]
103 ラウンド鍵
104 排他的論理和部
120 F関数
121 Sボックス(S−box)
122 線形変換部
211 スワップ関数
400 暗号処理装置
410 データ処理部
411 ラウンド関数実行部
412 メモリアドレス提供部
413 処理シーケンス情報格納部
420 メモリ
421〜42n F関数対応テーブル
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 暗号処理部
704 乱数発生器
705 送受信部

Claims (10)

  1. Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置であり、
    線形変換部と非線形変換部を有するF関数をラウンド関数として繰り返し実行するデータ処理部であり、少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理部と、
    前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリを有し、
    前記データ処理部は、
    予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得し、取得アドレスを適用したメモリアクセスにより、各ラウンドのF関数に対応するF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る構成であり、
    前記データ処理部は、
    各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行し、該暗号処理の各ラウンドのF関数に従ったデータ変換処理に際して、前記異なる行列を設定した異なるF関数に対応する複数のF関数対応テーブルを切り替え適用して入力値に対する出力値または中間値を取得する構成であることを特徴とする暗号処理装置。
  2. 前記データ処理部は、
    暗号処理対象データを2分割したデータ系列数(分割数)d=2の設定に従って暗号処理を実行するFeistel構造に基づく暗号処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記データ処理部は、
    暗号処理対象データを3以上に分割したデータ系列数(分割数)d≧3の設定に従って暗号処理を実行する拡張型Feistel構造に基づく暗号処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記データ処理部は、
    予め設定された暗号関数を実行し、該暗号関数の実行に際して、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを、各ラウンド毎に適宜切り替えて各ラウンドのF関数に対応するF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る構成であることを特徴とする請求項1に記載の暗号処理装置。
  5. 前記メモリは、
    各F関数に対する入力値または入力値の構成データと、F関数の出力値または中間値、またはこれらの構成データとを対応付けたF関数対応テーブルを格納した構成であることを特徴とする請求項1に記載の暗号処理装置。
  6. 暗号処理装置において、Feistel型共通鍵ブロック暗号処理を実行する暗号処理方法であり、
    データ処理部において、線形変換部と非線形変換部を有するF関数をラウンド関数として繰り返し実行するデータ処理ステップであり、少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理ステップを有し、
    前記データ処理ステップは、
    予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得するステップと、
    前記取得アドレスを適用したメモリアクセスを実行し、前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリから、各ラウンドのF関数に対応するF関数対応テーブルを読み込むステップと、
    メモリから読み込まれたテーブルを参照し、F関数入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得るステップと、
    を有し、
    前記データ処理ステップは、
    各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行し、該暗号処理の各ラウンドのF関数に従ったデータ変換処理に際して、前記異なる行列を設定した異なるF関数に対応する複数のF関数対応テーブルを切り替え適用して入力値に対する出力値または中間値を取得するステップである暗号処理方法。
  7. 暗号処理装置において、Feistel型共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
    データ処理部に、線形変換部と非線形変換部を有するF関数をラウンド関数として繰り返し実行するデータ処理ステップであり、少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行させるデータ処理ステップを有し、
    前記データ処理ステップは、
    予め規定された暗号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得させるステップと、
    前記取得アドレスを適用したメモリアクセスを実行させ、前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリから、各ラウンドのF関数に対応するF関数対応テーブルを読み込ませるステップと、
    メモリから読み込まれたテーブルを参照させ、F関数入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を取得させるステップと、
    を実行させるステップであり、
    前記データ処理ステップは、
    各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行し、該暗号処理の各ラウンドのF関数に従ったデータ変換処理に際して、前記異なる行列を設定した異なるF関数に対応する複数のF関数対応テーブルを切り替え適用して入力値に対する出力値または中間値を取得するステップであることを特徴とするコンピュータ・プログラム。
  8. Feistel型共通鍵ブロック暗号処理を実行する復号処理装置であり、
    線形変換部と非線形変換部を有するF関数をラウンド関数として繰り返し実行するデータ処理部であり、少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理部と、
    前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリを有し、
    前記データ処理部は、
    予め規定された復号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得し、取得アドレスを適用したメモリアクセスにより、各ラウンドのF関数に対応するF関数対応テーブルを読み込み、テーブル参照に基づいて入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得る構成であり、
    前記データ処理部は、
    各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った復号処理を実行し、該復号処理の各ラウンドのF関数に従ったデータ変換処理に際して、前記異なる行列を設定した異なるF関数に対応する複数のF関数対応テーブルを切り替え適用して入力値に対する出力値または中間値を取得する構成であることを特徴とする復号処理装置。
  9. 復号処理装置において、Feistel型共通鍵ブロック暗号処理を実行する復号処理方法であり、
    データ処理部において、線形変換部と非線形変換部を有するF関数をラウンド関数として繰り返し実行するデータ処理ステップであり、少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行するデータ処理ステップを有し、
    前記データ処理ステップは、
    予め規定された復号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得するステップと、
    前記取得アドレスを適用したメモリアクセスを実行し、前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリから、各ラウンドのF関数に対応するF関数対応テーブルを読み込むステップと、
    メモリから読み込まれたテーブルを参照し、F関数入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を得るステップと、
    を有し、
    前記データ処理ステップは、
    各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った復号処理を実行し、該復号処理の各ラウンドのF関数に従ったデータ変換処理に際して、前記異なる行列を設定した異なるF関数に対応する複数のF関数対応テーブルを切り替え適用して入力値に対する出力値または中間値を取得するステップである復号処理方法。
  10. 復号処理装置において、Feistel型共通鍵ブロック暗号処理を実行させるコンピュータ・プログラムであり、
    データ処理部に、線形変換部と非線形変換部を有するF関数をラウンド関数として繰り返し実行するデータ処理ステップであり、少なくとも2種類以上の異なるF関数を選択的に適用して、複数ラウンドのラウンド演算を実行させるデータ処理ステップを有し、
    前記データ処理ステップは、
    予め規定された復号処理シーケンスに従って、各ラウンドにおいて適用するF関数に対応するF関数対応テーブルのアクセス用アドレスを取得させるステップと、
    前記取得アドレスを適用したメモリアクセスを実行させ、前記2種類以上の異なるF関数の各々に対応する入力値と出力値または中間値とを対応付けた複数のF関数対応テーブルを格納したメモリから、各ラウンドのF関数に対応するF関数対応テーブルを読み込ませるステップと、
    メモリから読み込まれたテーブルを参照させ、F関数入力値に対する出力値または中間値を取得して、各F関数に従ったデータ変換結果を取得させるステップと、
    を実行させるステップであり、
    前記データ処理ステップは、
    各ラウンドのF関数中の線形変換処理に適用する変換行列として、少なくとも2以上の異なる行列を設定した少なくとも2以上の異なるF関数を選択的に適用する拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った復号処理を実行し、該復号処理の各ラウンドのF関数に従ったデータ変換処理に際して、前記異なる行列を設定した異なるF関数に対応する複数のF関数対応テーブルを切り替え適用して入力値に対する出力値または中間値を取得するステップであることを特徴とするコンピュータ・プログラム。
JP2006238226A 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP5023624B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2006238226A JP5023624B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
EP07806208A EP2058782A1 (en) 2006-09-01 2007-08-29 Encryption device, encryption method, and computer program
PCT/JP2007/066731 WO2008026623A1 (fr) 2006-09-01 2007-08-29 Dispositif de codage, procédé de codage et programme informatique
US12/439,250 US8396210B2 (en) 2006-09-01 2007-08-29 Cryptographic processing apparatus and cryptographic processing method, and computer program
CN200780040630XA CN101553856B (zh) 2006-09-01 2007-08-29 密码处理装置和密码处理方法
TW096132640A TW200830831A (en) 2006-09-01 2007-08-31 Encryption processor, encryption processing method, and computer program

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2008058829A JP2008058829A (ja) 2008-03-13
JP5023624B2 true JP5023624B2 (ja) 2012-09-12

Family

ID=39135905

Family Applications (1)

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

Country Status (6)

Country Link
US (1) US8396210B2 (ja)
EP (1) EP2058782A1 (ja)
JP (1) JP5023624B2 (ja)
CN (1) CN101553856B (ja)
TW (1) TW200830831A (ja)
WO (1) WO2008026623A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
WO2009075337A1 (ja) * 2007-12-13 2009-06-18 Nec Corporation 暗号化方法及び復号化方法、装置並びにプログラム
US8363828B2 (en) * 2009-02-09 2013-01-29 Intel Corporation Diffusion and cryptographic-related operations
JP5541277B2 (ja) * 2009-03-23 2014-07-09 富士通株式会社 データ処理装置及びデータ処理方法
TWI452889B (zh) * 2009-04-30 2014-09-11 Sumitomo Electric Industries 加密密鑰產生裝置
CN102598574B (zh) * 2009-10-27 2014-12-17 日本电气株式会社 块加密装置、块加密方法以及程序
JP5605197B2 (ja) * 2010-12-09 2014-10-15 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US10127390B2 (en) 2013-03-27 2018-11-13 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
CN103427988A (zh) * 2013-07-26 2013-12-04 青岛海信宽带多媒体技术有限公司 数据加密及解密方法
JP2015191106A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US10341090B2 (en) * 2014-10-14 2019-07-02 Sony Corporation Cipher processing apparatus and cipher processing method
JP6877889B2 (ja) * 2016-04-08 2021-05-26 ソニーグループ株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
FR3060804B1 (fr) * 2016-12-21 2021-01-22 Safran Identity & Security Procede de configuration d'un programme cryptographique destine a etre execute par un terminal
EP3651142A4 (en) * 2017-08-10 2021-03-24 Sony Corporation ENCRYPTION DEVICE, ENCRYPTION METHOD, DECCRYPTION DEVICE, AND DECryption METHOD
EP3786927B1 (en) * 2018-04-26 2023-06-14 Nippon Telegraph And Telephone Corporation System, apparatus, method and program for secure aggregate median computation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003597A (en) * 1989-12-21 1991-03-26 Xerox Corporation Method and apparatus for data encryption
JP2927079B2 (ja) * 1991-10-02 1999-07-28 松下電器産業株式会社 データ暗号化方法およびデータ暗号化装置
CA2164768C (en) * 1995-12-08 2001-01-23 Carlisle Michael Adams Constructing symmetric ciphers using the cast design procedure
US6459792B2 (en) * 1997-04-23 2002-10-01 Matsushita Electric Industrial Co., Ltd. Block cipher using key data merged with an intermediate block generated from a previous block
US7292693B1 (en) * 1998-08-13 2007-11-06 Teledyne Technologies Incorporated Deterministically generating block substitution tables which meet a given standard of nonlinearity
TW514844B (en) * 2000-01-26 2002-12-21 Sony Corp Data processing system, storage device, data processing method and program providing media
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
JP2004212828A (ja) * 2003-01-08 2004-07-29 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
FR2851862B1 (fr) * 2003-02-27 2006-12-29 Radiotelephone Sfr Procede de generation d'une permutation pseudo-aleatoire d'un mot comportant n digits
JP4622222B2 (ja) * 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4752313B2 (ja) * 2004-09-30 2011-08-17 ソニー株式会社 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP5026275B2 (ja) * 2004-10-28 2012-09-12 イルデト・コーポレート・ビー・ヴイ 暗号化関数を難読化するための方法及びシステム
JP2006206376A (ja) 2005-01-28 2006-08-10 Ngk Spark Plug Co Ltd セラミック焼結体、切削インサート及び切削工具
WO2007003230A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc Encryption apparatus and method therefor
TW200840238A (en) * 2007-03-27 2008-10-01 Nat Univ Chung Cheng The method of electric circuit encryption with external bits and adjustable time pulses

Also Published As

Publication number Publication date
JP2008058829A (ja) 2008-03-13
US20100091991A1 (en) 2010-04-15
TW200830831A (en) 2008-07-16
WO2008026623A1 (fr) 2008-03-06
EP2058782A1 (en) 2009-05-13
TWI380659B (ja) 2012-12-21
CN101553856B (zh) 2011-04-20
CN101553856A (zh) 2009-10-07
US8396210B2 (en) 2013-03-12

Similar Documents

Publication Publication Date Title
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4882598B2 (ja) 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5272417B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JPWO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5223245B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5510587B2 (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 Written amendment

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 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120426

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

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

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

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees