[go: up one dir, main page]

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

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

Info

Publication number
JP4967544B2
JP4967544B2 JP2006238223A JP2006238223A JP4967544B2 JP 4967544 B2 JP4967544 B2 JP 4967544B2 JP 2006238223 A JP2006238223 A JP 2006238223A JP 2006238223 A JP2006238223 A JP 2006238223A JP 4967544 B2 JP4967544 B2 JP 4967544B2
Authority
JP
Japan
Prior art keywords
processing
round
function
encryption
data
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
JP2006238223A
Other languages
English (en)
Other versions
JP2008058826A (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 JP2006238223A priority Critical patent/JP4967544B2/ja
Priority to TW096130767A priority patent/TWI394418B/zh
Priority to CN200780032468.7A priority patent/CN101512620B/zh
Priority to US12/439,543 priority patent/US8165288B2/en
Priority to PCT/JP2007/066729 priority patent/WO2008026621A1/ja
Priority to EP07806206A priority patent/EP2058780A4/en
Publication of JP2008058826A publication Critical patent/JP2008058826A/ja
Priority to US13/436,223 priority patent/US8731188B2/en
Application granted granted Critical
Publication of JP4967544B2 publication Critical patent/JP4967544B2/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
    • 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)

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)を適用せず、Feistel構造のラウンド関数(F関数)部の線形変換部に1種類のみの行列を配置した従来型のFeistel構造を適用した暗号処理構成例を図1に示す。図1に示すFeistel構造は、ラウンド数をr(例えばr=16)ラウンドとして、各ラウンドにおけるF関数をFとして示している。入力は、平文Pであり、平文PはP[0]とP[1]の2つのデータ系列(分割数=2)に分割され、順次、各ラウンドにおいてF関数を適用したデータ変換が実行されて、rラウンドの変換結果として暗号文Cを構成するC[0],C[1]を出力する。各ラウンドのF関数では、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)が入力され、データ変換に適用される。
図1に示す構成では、n−bitの平文Pをラウンド鍵RK,RK,・・・,RKが入力されたF関数でr回(r段)処理し、その結果としてn−bitの暗号文Cを得る。平文Pを1/2に分割したものをそれぞれ、P[0],P[1]と表現する(P=P[0]||P[1])である。なお、X1||X2は、X1とX2との連結データを示す。暗号文Cについても同様に1/2に分割したものをそれぞれC[0],C[1]と呼ぶ(C=C[0]||C[1])。なお、このF関数の詳細構成については、本発明の説明の欄において詳細に説明する。
このように、各ラウンドが共通の線形変換行列を適用した同じ形式のF関数を持つ構成では、暗号文を平文に戻す復号処理を行なう場合、図2に示すように、全く同じ構成を持つFeistel構造を適用し、各ラウンドに適用するラウンド鍵の順番を、暗号化処理の場合と逆に設定するのみでよい。すなわち、暗号化関数と復号関数に全く同じ関数を適用することが可能となる。このように暗号化処理と復号処理に同じ関数を適用することが可能であれば、実装上、ハードウェア、あるいはソフトウェアにおいて、1つの構成を暗号化と復号それぞれの処理において共用することが可能となり、装置の小型化、コストダウンが実現される。なお、暗号化関数と復号関数に共通の関数を適用することが可能な場合、その暗号はインボリューション性を持つと定義する。
これは,平文Pをラウンド鍵RK,RK,・・・,RKで暗号化する暗号化関数EをE(P,RK,RK,・・・,RK)で表現し,暗号文Cをラウンド鍵RK,RK,・・・,RKで復号する復号関数DをD(C,RK,RK,・・・,RK)で表現すると、下記のように表せることを意味する。
(暗号化関数)
C=E(P,RK,RK,・・・,RK
(復号関数)
P=D(C,RK,RK,・・・,RK
=E(C,RK,RKr−1,・・・,RK
上記より、復号関数Dは、ラウンド鍵の順番を入れ替えた暗号化関数Eと等価であるといえる。
Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を各ラウンド毎に切り替えるように配置する拡散行列切り替え機構(DSM)を備えたFeistel構造例を図3に示す。図3に示すFeistel構造は、図1と同様、ラウンド数をr(例えばr=16)ラウンドとした構成である。
本構成例では、各ラウンドにおけるF関数は、2つの異なるF関数F,Fをある規則に従って配列した構成とした拡散行列切り替え機構(DSM)を適用して、差分攻撃や線形攻撃に対する耐性を向上させる構成としている。すなわち、F関数Fと、F関数Fとでは、それぞれ異なる線形変換行列を適用したデータ変換を実行する構成となっている。
入力は、平文Pであり、平文PはP[0]とP[1]の2つのデータ系列(分割数=2)に分割され、順次、各ラウンドにおいてF関数を適用したデータ変換が実行されて、rラウンドの変換結果として暗号文Cを構成するC[0],C[1]を出力する。各ラウンドのF関数F,Fでは、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)が入力され、データ変換に適用される。
このような拡散行列切り替え機構(DSM)を適用したFeistel構造において、暗号文を平文に戻す復号処理を行なう場合、図4に示すように、各ラウンドのF関数F,Fの配列を変更することなく、図3と同じ構成を持つDSMを適用したFeistel構造を用いて、各ラウンドに適用するラウンド鍵の順番を、暗号化処理の場合と逆に設定することで、復号処理を行なうことが可能となる。つまり、拡散行列切り替え機構(DSM)を適用したFeistel構造においても、暗号化関数と復号関数に共通の関数を適用することを可能としたインボリューション性が保持される。
図3、図4を参照して説明した拡散行列切り替え機構(DSM)を持つFeistel構造は、入力としての平文Pを2つのデータ系列P[0],P[1]に分割してラウンド関数部に入力して暗号文を生成する。あるいは暗号文Cを2つのデータ系列C[0],C[1]に分割してラウンド関数部に入力して復号文を生成する構成である。このデータ分割数は、データ系列数あるいは分割数と呼ぶ。図3、図4に示す拡散行列切り替え機構(DSM)を持つFeistel構造は、データ系列数(分割数)=2の構造であり、このようなデータ系列数(分割数)=2の構造の場合には、F関数を適切に配置することでインボリューション性を保持させた構成が構築可能となる。
一方、このような、2つのみのデータ系列を持つFeistel構造と異なり、3本以上の任意数、例えば3,4,5・・等のデータ系列を許容した拡張型Feistel構造(GFN:Generalized Feistel Network)がある。すなわち、入力のデータ系列を2に限定せず、3以上のデータ系列を共用した構成である。
拡張型Feistel構造(GFN)では、例えば、平文Pを3つのデータ系列P[0],P[1],P[2]に分割してラウンド関数部に入力する構成や、4つのデータ系列P[0],P[1],P[2],P[3]に分割してラウンド関数部に入力する構成などが許容される。このようなデータ系列数(分割数)が3以上の任意数のFeistel構造を拡張型Feistel構造(GFN:Generalized Feistel Network)と呼ぶ。
このような3本以上の任意数のデータ系列を持つ拡張型Feistel構造(GFN)では、上述したインボリューション性、すなわち、暗号化関数と復号関数に共通関数を適用できるインボリューション性の保持構成とすることは困難となる。さらに、拡張型Feistel構造(GFN)において、上述の拡散行列切り替え機構(DSM)を適用構成、すなわち、各ラウンドのF関数での変換処理が一律でない構成を持つDSN適用構成では、さらにインボリューション性を保持させた構成とすることは困難である。
K. Nyberg, "Generalized Feistel networks", ASIACRYPT'96, SpringerVerlag, 1996, pp.91--104. EYuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
本発明は、上記問題点に鑑みてなされたものであり、2つのデータ系列を持つFeistel構造のみならず、例えば3つ、4つなど、3以上の任意数のデータ系列を持つ拡張型Feistel構造(GFN:Generalized Feistel Network)を持つ共通鍵ブロック暗号処理において、インボリューション性、すなわち暗号化処理と復号処理に共通の関数を適用することを可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
さらに、本発明は、ラウンド関数部に3つ以上の異なる行列をラウンドごとに配置した構成とする拡散行列切り替え機構(DSM)を適用し、2つのデータ系列を持つFeistel構造のみならず、例えば3つ、4つなど、3以上の任意のデータ系列を持つ拡張型Feistel構造(GFN)を持つ共通鍵ブロック暗号処理において、インボリューション性、すなわち暗号化処理と復号処理に共通の関数を適用することを可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理装置であり、
暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理部を有し、
前記データ処理部は、
暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行する構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行する構成であり、復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定としたラウンド鍵入れ替え処理を行なう構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する構成であり、復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なう構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、前記拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、復号処理の最終ラウンドの出力結果のシーケンス入れ替え処理を行なう出力調整を実行する構成であることを特徴とする。
さらに、本発明の第2の側面は、
暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理方法であり、
データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理ステップを有し、
前記データ処理ステップは、
暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行するステップであり、復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定としたラウンド鍵入れ替え処理を行なうことを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行するステップであり、復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なうことを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行するステップを含むことを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、前記拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、復号処理の最終ラウンドの出力結果のシーケンス入れ替え処理を行なう出力調整を実行するステップを含むことを特徴とする。
さらに、本発明の第3の側面は、
暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行させるコンピュータ・プログラムであり、
データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行させるデータ処理ステップを有し、
前記データ処理ステップは、
暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行させるステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例の構成によれば、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理構成において、インボリューション性、すなわち暗号化処理と復号処理に共通の関数を適用可能な構成とすることが可能となる。具体的には、復号処理におけるラウンド鍵の入れ替えやF関数の入れ替えを行う構成とすることで、スワップ関数を暗号化処理と復号処理とにおいて同一の処理態様に設定することで共通関数による処理が可能となる。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.SP型F関数を持つFeistel構造
2.2つのデータ系列を持つFeistel構造に対する拡散行列切り替え機構(DSM)の設定法
3.拡張型Feistel構造(GFN:Generalized Feistel Network)について
(3−1)拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)について
(3−2)拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)について
4.拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
(4−1)拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
(4−2)拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
5.暗号処理装置の構成例
[1.SP型F関数を持つFeistel構造]
まず、SP型F関数を持つFeistel構造について説明する。共通鍵ブロック暗号のデザインとして知られているFeistel構造はラウンド関数と呼ばれる基本処理単位の繰り返しにより、平文を暗号文に変換する構造を持つ。
図5を参照して、Feistel構造の基本構成について説明する。図5には、rラウンドのラウンド数=rを持つ2つのデータ系列を持つFeistel構造の例を示している。なお、ラウンド数rは、設計の段階で決定されるパラメータであり、例えば入力される鍵の長さに応じて変更可能な値である。
図5に示すFeistel構造において、暗号化対象として入力される平文の長さを2mnビットとする。ただし、m,nは共に整数である。初めに、2mnビットの平文を、mnビットの2つの入力データP[0]101,P[1]102に分割し、これを入力値とする。図に示す例は、入力値を2分割する構成であり、データ系列数(分割数)=2の構成例である。
Feistel構造はラウンド関数とよばれる基本処理単位の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はラウンド関数(F関数)120と呼ばれる。図5の構成では、ラウンド関数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の構成について、図6を参照して説明する。図6(a)は、1つのラウンドにおけるラウンド関数(F関数)120に対する入力および出力を示す図であり、図6(b)は、ラウンド関数(F関数)120の構成の詳細を示す図である。ラウンド関数(F関数)120は、図6(b)に示すように、非線形変換層(S層)と線形変換層(P層)を接続したいわゆるSP型の構成を有する。
図6に示すラウンド関数(F関数)120は、入出力ビット長がm×n(m,n:整数)ビットの設定を持つ関数である。SP型F関数内部では初めに鍵データKとデータXとの排他的論理和が実行され、次に非線形変換層(S層)が適用され、続いて線形変換層(P層)が適用される。
具体的には非線形変換層(S層)は、Sボックス(S−box)121と呼ばれるnビット入力nビット出力の非線形変換テーブルがm個並んだものであり、mnビットのデータはnビットずつ分割されてそれぞれ対応するSボックス(S−box)121に入力されデータが変換される。各Sボックスでは、例えば変換テーブルを適用した非線形変換処理が実行される。
線形変換層(P層)は線形変換部122によって構成され、線形変換部122は、Sボックス121からの出力データであるmnビットの出力値Zを入力し、この入力に対して線形変換を施しmnビットの結果を出力する。線形変換部122は、入力ビット位置の入れ替え処理などの線形変換処理を実行して、mnビットの出力値Yを出力する。この出力値Yが前段からの入力データと排他的論理和され、次のラウンドのF関数の入力値とされる。
なお、以下に説明する本実施例の構成では、線形変換層(P層)としての線形変換部122において実行する線形変換はGF(2)上で定義されるmn×mnの行列を適用して行なわれる線形変換であると定義し、また、第iラウンド目に含まれる行列をMと呼ぶものとする。なお、本発明において説明する構成における非線形変換部としてのSボックスと、線形変換は、いずれも全単射であるものとする。
[2.2つのデータ系列を持つFeistel構造に対する拡散行列切り替え機構(DSM)の設定法]
先に説明したように、Feistel構造を適用した暗号処理において、差分攻撃や線形攻撃に対する耐性を高める構成として、拡散行列切り替え機構(DSM:Diffusion Switching Mechanism,以下DSM)を適用した構成が提案されている。DSMは、Feistel構造のラウンド関数(F関数)部の線形変換部において適用する行列をすべてのラウンドで同一とするのではなく、少なくとも2つ以上の異なる行列を各ラウンドに配置する構成である。このDSMにより、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。
このDSMについて、その概要を説明する。Feistel構造において、拡散行列切り替え機構(DSM)を適用した場合、Feistel構造を構成するラウンド関数(F関数)部の線形変換部(P層)において適用する行列は、複数の異なる行列となる。例えば、図5に示すようなrラウンドのFeistel構造の各ラウンドにおける適用行列を全て同じ線形変換行列として設定するのではなく、少なくとも2種類以上の行列を特定の規則に従って配列する。
例えば、各ラウンドのF関数の線形変換層に2つの異なる線形変換行列M,Mを配置した拡散行列切り替え機構(DSM)を実現したFeistel構造例を図7に示す。図7に示すFeistel構造例において、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するF関数、
F関数Fは、線形変換行列Mを適用した線形変換処理を実行するF関数、
を示している。
2つの線形変換行列M,Mは、異なる行列によって構成される。
なお、拡散行列切り替え機構(DSM)を実現するためには、適用する行列は、所定の条件を満たすことが必要となる。この条件の1つが、分岐数(Branch)に関する制約である。以下、この制約について説明する。
Feistel構造におけるラウンド関数部の線形変換に適用する複数の異なる行列M〜Mそれぞれの分岐数において、
適用行列中の分岐数の最小値:B と、
適用する複数の行列の結合行列に対応する分岐数の最小値:B ,B ,B
を以下のように定義する。
Figure 0004967544
上記式において、
は、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)に対する耐性を持つための条件であることを示している。
図7に示すような、データ系列数(分割数)=2の拡散行列切り替え機構(DSM)を持つFeistel構造においては、先に、図3、図4を参照して説明したように、インボリューション性、すなわち暗号化関数と復号関数を共有可能な構成とすることは、F関数の適切な配置により可能となる。
しかし、2つのみのデータ系列を持つFeistel構造と異なり、データ系列数(分割数)dが、3,4・・・等の3以上の任意数のデータ系列を許容した拡張型Feistel構造(GFN:Generalized Feistel Network)、すなわち、入力としての平文Pを3つのデータ系列P[0],P[1],P[2]に分割してラウンド関数部に入力する構成や、4つのデータ系列P[0],P[1],P[2],P[3]に分割してラウンド関数部に入力する構成などにおいては、暗号化関数と復号関数を共有できるインボリューション性を保持させることは困難となる。本発明では、このような拡張型Feistel構造において、暗号化関数と復号関数を共有できるインボリューション性を実現する構成を提案する。
[3.拡張型Feistel構造(GFN:Generalized Feistel Network)について]
拡張型Feistel構造(GFN:Generalized Feistel Network)について説明する。本発明において取り扱うのはSP型のF関数を使う点では上記の2つのデータ系列を持つFeistel構造と同じであるが、データ系列数(分割数)を3以上の任意数:dとした拡張型Feistel構造(GFN)を対象とする。dは3以上の整数である。
(3−1)拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)について
まず、拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)を持つ暗号化処理構成の構成例を図8に示す。なお、図8に示す暗号化処理構成は、ハードウェアやソフトウェアを適用して実行可能な暗号化関数に相当する。前述したように暗号化関数と、復号関数を共通の関数を適用可能としたインボリューション性を保持する構成とすることで、実装コストの削減、装置の小型化などのメリットを奏することが可能となる。
図8に示す例は、データ系列数(分割数)dを、d=4とした拡張型Feistel構造(GFN)の暗号化関数の構成例である。また、拡散行列切り替え機構(DSM)を持たない構成であるので、各ラウンドにおいて適用される線形変換行列は同一の行列であり、各F関数での処理は同じ処理となる。
前述したように、拡張型Feistel構造(GFN)のデータ系列数(分割数)は3以上の任意の整数:dで与えることが可能である。以下の実施例では、データ系列数(分割数)dをd=4とした構成例について説明する。なお、本発明は、d=4に限らず、3以上の任意のデータ系列数(分割数)を持つ拡張型Feistel構造(GFN)において適用可能である。
図8に示す暗号化関数の構成において、入力は、平文Pであり、平文PはP[0],P[1],P[2],P[3]の4つのデータ系列(分割数=4)に分割され、順次、各ラウンドにおいてF関数を適用したデータ変換が実行されて、rラウンドの変換結果として暗号文Cを構成するC[0],C[1],C[2],C[3]を出力する。各ラウンドのF関数では、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)のRK[0],RK[1]が入力され、データ変換に適用される。なお、鍵RK[n]のiはラウンドを示し、nは、同一ラウンドにおけるラウンド鍵の識別子を示す。
図8に示す構成では、n−bitの平文Pをラウンド鍵RK,RK,・・・,RKが入力されたF関数でr回(r段)処理し、その結果として暗号文Cを得る.平文Pを1/4に分割したものをそれぞれP[0],P[1],P[2],P[3],ラウンド鍵RK1を1/2に分割したものをそれぞれRK[0],RK[1]と表現する。1段目の処理は、まず、データP[0]とラウンド鍵RK[0]が入力されたF関数での処理結果と、データP[1]との排他的論理和演算(EXOR)を行い、データP[2]と、ラウンド鍵RK[1]が入力されたF関数での処理結果と、データP[3]との排他的論理和演算(EXOR)を行う。
さらに、それぞれの結果をY[1],Y[3]として、P[0],P[2]をそれぞれY[0],Y[2]とする。1段目の処理結果、つまり2段目の入力値をX[0],X[1],X[2],X[3]とすると、
[0]にはY[1]、
[1]にはY[2]、
[2]にはY[3]、
[3]にはY[0]、
がそれぞれ代入される。このようなデータの入れ替え処理を「スワップ(入れ替え)関数」と定義する。
図8に示すように、各ラウンドの切り替え部分では、各データ系列を入れ替えるスワップ処理が実行される。このスワップ処理に適用する関数がスワップ関数である。スワップ関数は、暗号化関数の1つの構成要素となる。図8に示すようにスワップ関数201は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定するための関数である。
図8において、例えばデータ系列を、図8上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数201によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数が暗号化処理において適用されるスワップ関数である。
図8に示すd=4とした拡張型Feistel構造(GFN)の暗号化処理構成を適用して暗号化処理を実行した結果を復号する復号処理構成の構成例を図9に示す。拡散行列切り替え機構(DSM)を持たない構成であるので、各ラウンドにおいて適用される線形変換行列は同一の行列であり、各F関数での処理は同じ処理となる。
なお、図9に示す復号処理構成は、ハードウェアやソフトウェアを適用して実行可能な復号関数に相当する。前述したように暗号化関数と、復号関数を共通の関数を適用可能としたインボリューション性を保持する構成とすることで、実装コストの削減、装置の小型化などのメリットを奏することが可能となる。
図9に示す復号関数の構成において、入力は、暗号文Cであり、暗号文CはC[0],C[1],C[2],C[3]の4つのデータ系列(分割数=4)に分割され、順次、各ラウンドにおいてF関数を適用したデータ変換が実行されて、rラウンドの変換結果として平文Pを構成するP[0],P[1],P[2],P[3]を出力する。各ラウンドのF関数では、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)のRK[0],RK[1]が入力され、データ変換に適用される。
図9に示すように、各ラウンドの適用鍵は、図8に示す暗号化関数の各ラウンドの適用鍵と逆の順番となる。さらに、図9における復号関数においても、ラウンド切り替え部分では、各データ系列を入れ替えるスワップ処理が実行される。このスワップ処理は、図8に示すスワップ処理とは異なる処理となる。図9に示すようにスワップ関数202は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定するための関数である。
図9において、例えばデータ系列を、図9上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数202によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
このような系列入れ替え処理を実行する関数が復号処理において適用されるスワップ関数となる。
このように、図8に示す暗号化処理構成において適用されるスワップ関数201と、図9に示す復号処理構成において適用するスワップ関数202とは、スワップ処理の態様が異なり、暗号化処理と、復号処理によって同じ関数を共通に利用することができない。図1〜図4に示すようなデータ系列数(分割数)d=2のFeistel構造では、系列の入れ替えはデータ系列0,1の入れ替えのみであり、暗号化、復号処理において同様のスワップ関数を共通に利用した処理が可能であるが、データ系列数(分割数)d=3,4,5・・・等、3以上の任意数のデータ系列数(分割数)dを持つことが許容される拡張型Feistel構造(GFN)では、各ラウンド間でのスワップ(入れ替え)関数が暗号化関数と復号関数とで異なることになり、データ系列数(分割数)d=2に限定される通常のFeistel構造のように単純に暗号化関数と復号関数は同じ関数を使用することができないという問題がある。
(3−2)拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)について
次に、拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)について説明する。拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)を持つ暗号化関数の構成例を図10に示す。図10に示す例は、データ系列数(分割数)dを、d=4とした拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)の暗号化関数の構成例である。
拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)は、前述したように、Feistel構造のラウンド関数(F関数)部の線形変換部に2つ以上の異なる行列を各ラウンド毎に切り替えるように配置する構成としたものである。DSMにより、差分攻撃や線形攻撃に対する耐性を向上させることが可能となる。図10に示す例では、F関数Fと、F関数Fとでは、それぞれ異なる線形変換行列を適用したデータ変換を実行する構成となっている。なお、これらF関数において適用する線形変換行列は、ある特定の条件を満足する行列に設定することで、差分攻撃や線形攻撃に対する耐性を大きく向上させることが可能となる。この構成については、本出願人が先に出願した特願2006−206376号において詳細に説明している。
図10に示す暗号化関数の構成において、入力は、平文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は、同一ラウンドにおけるラウンド鍵の識別子を示す。
図10に示すように、拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)においても、各ラウンドの切り替え部分では、各データ系列を入れ替えるスワップ処理が実行される。図10に示すようにスワップ関数211は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定する。
図10において、データ系列を、図10上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数211によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数が暗号化処理において適用されるスワップ関数である。
図10に示すd=4とした拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)の暗号化関数において暗号化処理を実行した結果を復号する復号関数の構成例を図11に示す。図11に示す復号化関数の構成において、入力は、暗号文Cであり、暗号文CはC[0],C[1],C[2],C[3]の4つのデータ系列(分割数=4)に分割され、順次、各ラウンドにおいてF関数F、またはF関数Fを適用したデータ変換が実行されて、rラウンドの変換結果として平文Pを構成するP[0],P[1],P[2],P[3]を出力する。各ラウンドのF関数F、またはF関数Fでは、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)のRK[0],RK[1]が入力され、データ変換に適用される。
図11に示すように、各ラウンドの適用鍵は、図10に示す暗号化関数の各ラウンドの適用鍵と逆の順番となる。さらに、図11における復号関数においても、ラウンド切り替え部分では、各データ系列を入れ替えるスワップ処理が実行される。このスワップ処理は、図10に示すスワップ処理とは異なる処理となる。図11に示すようにスワップ関数212は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定する。
図11において、例えばデータ系列を、図11上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数212によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
このような系列入れ替え処理を実行する関数が復号処理において適用されるスワップ関数となる。
このように、図10に示す暗号化処理構成において適用されるスワップ関数211と、図11に示す復号処理構成において適用するスワップ関数212とは、スワップ処理の態様が異なり、同じ関数を共通に利用することができない。
上述したように、データ系列数(分割数)d=3,4,5・・・等、3以上の任意数のデータ系列数(分割数)dを持つことが許容される拡張型Feistel構造(GFN)では、拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)においても、また、拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)においても、各ラウンド間でのスワップ(入れ替え)関数が暗号化関数と復号関数とで異なり、データ系列数(分割数)d=2に限定される通常のFeistel構造のように単純に暗号化関数と復号関数は同じ関数を使用することができないという問題がある。
暗号化処理と復号処理とで同じスワップ関数を適用可能な構成とすれば、暗号処理装置を構成する際、ハードウェア実装においてもソフトウェア実装においても、実装コストを低減することが可能であり、特にハードウェア実装の場合には装置の小型化の実現につながる。さらに、検証コストが半減できるというメリットもある。すなわち、関数部の検証として、暗号化関数、復号関数のどちらかで検証するのみでよくなり、ソフトウェアにおいてもコードサイズが半減できるなどメリットが大きい。従って、できる限り暗号化関数と復号関数で同じ関数を使う構成とすることが望ましい。
しかし、一般的にブロック暗号は1回の実行速度が非常に短く、高速に動作することが要求される。従って、暗号化関数と復号関数の共有させるために実行速度が低下してしまうといったことは避けたい。このような要求に応じるため、暗号化関数と復号関数において共通に利用可能な関数をより多く設定するとともに、実行速度の低下しない構成が望まれる。以下では、このような構成について説明する。
[4.拡張型Feistel構造(GFN)におけるインボリューション性保持構造について]
以下、拡張型Feistel構造(GFN)において、インボリューション性、すなわち、暗号化処理と復号処理に共通の関数を適用可能とした構成例について説明する。
暗号化処理と復号処理において、共通の関数を利用するための簡易な手法としては、スワップ関数部分だけを外部から入力する構成の採用が考えられる。すなわち、暗号化関数と復号関数において、スワップ関数部だけを切り替える構成とし、その他の関数部分を共通に利用する構成である。
この構成を用いれば通常のデータ系列数(分割数)d=2としたFeistel構造と同様にラウンド(段)ごとにラウンド鍵を入れ替え、さらに、ラウンド切り替え時に適用するスワップ関数を、暗号処理と復号処理において適宜入れ替えて利用するのみで、その他の関数部分は、暗号化処理と復号処理とで同じ関数を使用することが可能となる。例えばスワップ関数を暗号化スワップ関数、復号スワップ関数の2種類作成しておき、この関数を外部から与えるような構成である。
しかしながら、この手法では暗号化スワップ関数、復号スワップ関数の呼び出しは、暗号化処理、復号処理の実行期間において、各ラウンドの切り替え毎に行なわなければならないことになり、関数呼び出し処理を繰り返し実行しなければならないことになる。このような関数呼び出し処理は、時間の消費を発生させ、結果として処理時間を大きくしてしまうという問題がある。一般的に1回の実行時間が非常に短いブロック暗号において、このような新たな関数呼び出処理を発生させることは、実行速度の大幅な低下を招くことになり、パフォーマンスを低下させることになる。従って現実的な使用を考慮した場合、このようなスワップ関数の呼び出し構成を適用することは好ましくない。
実装を考慮した場合、処理速度の低下を発生させない構成が必要であり、スワップ部分を変更せずに暗号化関数と復号関数を共有できることが望ましい構成である。以下、このような構成の具体的構成例について説明する。説明は、以下の項目に分けて行なう。
(4−1)拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
(4−2)拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
なお、以下において説明する拡張型Feistel構造(GFN)は、
分割数d≧3で、かつ以下に説明する条件を満たす拡張型Feistel構造であり、これを拡張型Feistel構造のタイプ2とする。本発明において適用する拡張型Feistel構造のタイプ2について、図12を参照して説明する。
本発明の拡張型Feistel構造タイプ2は、以下のパラメータを有する。
(a)データ分割数:d(ただしdは4以上の偶数)、
(b)入出力データ長:dmnビット、
(c)分割データ長:mnビット、
(d)1ラウンドあたりのF関数の数:d/2、
図12に示すように、各ラウンド内では左端から数えて奇数番目にあるmnビットのデータ系列に対してF関数が適用され、F関数の処理結果は、すぐ隣のデータに出力が排他的論理和される。なお、図においては排他的論理和の演算記号を省略してある。図に示すように、各ラウンドにおいて、F関数に対するデータ入力を行った左端のデータ系列は、次のラウンドでは右端に移動し、それ以外のデータ系列は左にひとつずつずれる構成をとる。このような構造を持つ拡張Feistel構造を拡張Feistel構造タイプ2と定義する。
(4−1)拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
まず、拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)におけるインボリューション性保持構造について説明する。
拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)において、インボリューション性を保持させる構成とした復号処理構成例を図13に示す。
図13に示す復号処理構成は、先に図8を参照して説明したデータ系列数(分割数)dを、d=4とした拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)の暗号化関数の構成例に対応する復号関数の構成例である。すなわち、図8を参照して説明した暗号処理構成において生成した暗号文の復号に適用可能な復号処理を実行する構成を示している。なお、図13に示す復号処理構成は、ハードウェアやソフトウェアを適用して実行可能な復号関数に相当する。前述したように暗号化関数と、復号関数を共通の関数を適用可能としたインボリューション性を保持する構成とすることで、実装コストの削減、装置の小型化などのメリットを奏することが可能となる。
図8に示す暗号処理構成に対応する復号処理構成として、先に説明した図9に示した復号処理構成では、適用するスワップ関数が異なるため、暗号関数と復号関数との構成が異なり、インボリューション性を保持できなかったが、図13に示す復号処理構成では、図8に示す暗号処理構成において適用するスワップ関数と同じ態様のスワップ処理を行なう構成としている。すなわち暗号化処理と復号処理とで適用するスワップ関数を共通の関数とした構成を持つ。すなわち、暗号化関数(図8)と復号関数(図13)は、共通の関数を適用可能としたインボリューション性を保持させた構成を実現している。
ただし、図13に示す復号処理構成は、ラウンド数rが奇数の場合の復号処理構成である。ラウンド数rが偶数の場合の暗号化関数(図8)に対応するインボリューション性を保持した復号処理構成は図14に示す構成となる。
まず、ラウンド数rが奇数の場合の復号処理構成である図13に示す復号関数の構成について説明する。図13の復号処理構成において、入力は、暗号文Cであり、暗号文CはC[0],C[1],C[2],C[3]の4つのデータ系列(分割数=4)に分割され、順次、各ラウンドにおいてF関数を適用したデータ変換が実行されて、rラウンドの変換結果として平文Pを構成するP[0],P[1],P[2],P[3]を出力する。各ラウンドのF関数では、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)のRK[0],RK[1]が入力され、データ変換に適用される。
図13に示す復号関数において、各ラウンドの適用鍵は、図8に示す暗号化関数の各ラウンドの適用鍵と逆の順番となる。これは、図8の暗号化関数と図9の復号関数の対応と同様の関係である。
しかし、図13における復号関数では、ラウンド切り替え部分の各データ系列入れ替え処理として実行するスワップ処理は、図8に示すスワップ処理と同一のスワップ処理となる。図13に示すようにスワップ関数251は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定する。
図13において、例えばデータ系列を、図13上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数251によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数がスワップ関数251である。
このスワップ処理は、先に図8を参照して説明した暗号化処理におけるスワップ関数と同一の系列入れ替え処理である。
従って、図8に示す暗号化処理と、図13に示す復号処理とでは、全く同一のスワップ関数を適用することが可能となる。
図13に示す復号処理構成では、スワップ関数を暗号化処理と同一の構成とするための工夫として、各ラウンドにおけるF関数に対する入力鍵(ラウンド鍵)の入力態様を変更している。図13に示す復号処理構成中、図に示す◎の偶数ラウンドにおいて、各F関数に入力するラウンド鍵の入れ替えを行なっている。図に示すように、図13に示す復号処理構成の、上から2つのラウンドである第2ラウンドでは、図に示す左側のF関数に対してラウンド鍵RK(r−1)[1]を入力し、右側のF関数に対してラウンド鍵RK(r−1)[0]を入力する構成としている。以下、第4ラウンド、第6ラウンド・・・各偶数ラウンドにおいて、各F関数に入力するラウンド鍵の入れ替えを行なっている。図9と対比するとその差異が明確となる。図9では、全てのラウンドにおいて、左側のF関数にはラウンド鍵RK[0]を入力し、右側のF関数にはラウンド鍵RK[1]を入力している。
このように、図13に示す復号処理構成では、各偶数ラウンドのF関数に対して入力するラウンド鍵を入れ替えることで、図8に示す暗号処理構成において適用するスワップ関数と同一のスワップ関数を適用可能として、暗号化関数と復号関数のインボリューション性を実現している。
図13に示す復号処理構成は、ラウンド数rが奇数の場合の復号処理構成である。ラウンド数rが偶数の場合の暗号化関数(図8)に対応するインボリューション性を保持した復号処理構成は図14に示す構成となる。
図14に示す復号処理構成も、図8に示す暗号処理構成によって暗号化された暗号文を平文に戻す復号処理に適用される復号関数に相当する復号処理構成を示している。図14の構成は、ラウンド数rが奇数である。
図14に示す復号処理構成も、図13に示す復号処理構成と同様、図に◎で示す各偶数ラウンドに設定されたF関数に対して入力するラウンド鍵の入れ替えを実行する構成としている。さらに、最終ラウンドの処理結果に対する出力調整処理を実行する構成を持つ。出力調整部262は、最終ラウンドにおける各データ系列の値を入れ替えて、P[0],P[1],P[2],P[3]の最終出力を得るための処理として実行される。この部分は、復号関数の実行後の処理として1回のみ実行すればよく、大きな効率低下を発生させるものとはならない。
図14に示す構成におけるスワップ関数261は、図13に示す構成と同様、図8を参照して説明した暗号化処理構成におけるスワップ関数201と同一のスワップ処理を行なう構成を持つ。すなわち、
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数がスワップ関数261である。
このスワップ処理は、先に図8を参照して説明した暗号化処理におけるスワップ関数201と同一の系列入れ替え処理である。
従って、図8に示す暗号化処理と、図13に示す復号処理とでは、全く同一のスワップ関数を適用することが可能となる。
図14に示す復号処理構成では、スワップ関数を暗号化処理と同一の構成とするための工夫として、各ラウンドにおけるF関数に対する入力鍵(ラウンド鍵)の入力態様を変更し、さらに、出力調整部262により、最終ラウンドの処理結果に対する出力調整処理を実行する構成としている。この設定とすることで、図8に示す暗号処理構成において適用するスワップ関数と同一のスワップ関数を適用可能として、暗号化関数と復号関数に共通の関数を適用可能なインボリューション性を実現している。
拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)においては、上述した構成によってインボリューション性を保持した構造を実現することができる。この処理おける暗号化関数、復号関数は、以下のように示すことができる。
(暗号化関数)
C=E(P,RK,RK,RK,RK,RK,・・・,RKr−1,RK
(復号関数(r=奇数の場合))
P=D(P,RK,RK,RK,RK,RK,・・・,RKr−1,RK
=E(P,RK,RK'r−1,RKr−2,RK'r−3,RKr−4・・・,RK',RK
(復号関数(r=偶数の場合))
P=D(P,RK,RK,RK,RK,RK,・・・,RKr−1,RK
=HalfSwap(E(P,RK,RK'r−1,RKr−2,RK'r−3,RKr−4・・・,RK,RK'))
として示すことができ、ラウンド鍵の適切な置換により、暗号化関数と復号関数が共有できることが分かる。
ただし、RK=(RK[0]||RK[1])とすると、RK'=(RK[1]||RK[0])であり、HalfSwapは入力値の前後を入れ替える関数を表す。
ラウンド数が奇数段の詳細な例として、3段GFNの暗号化、復号関数を図15に示す。図15の暗号化関数(図15(a))は,以下のように処理される、以降の説明で用いる(+)はビットごとの排他的論理和を表す.
[(0段目)]
[0]=P[0]
[1]=P[1]
[2]=P[2]
[3]=P[3]
[1段目]
[0]=F(X[0],RK[0])(+)X[1]
[1]=X[2]
[2]=F(X[2], RK[1])(+)X[3]
[3]=X[0]
[2段目]
[0]=F(X[0],RK[0])(+)X[1]
[1]=X[2]
[2]=F(X[2],RK[2])(+)X[3]
[3]=X[0]
[3段目]
C[0]=X[0]
C[1]=F(X[0],RK[0])(+)X[1]
C[2]=X[2]
C[3]=F(X[2],RK[1])(+)X[3]
また、図11の復号関数(図15(b))は以下のように処理される.
[1段目]
[0]=C[0]
[1]=F(X[0],RK[0])(+)C[1]
[2]=C[2]
[3]=F(X[2],RK[1])(+)C[3]
[2段目]
[0]=X[3]
[1]=F(X[0],RK[0])(+)X[0]
[2]=X[1]
[3]=F(X[2],RK[1])(+)X[2]
[3段目]
[0]=X[3]
[1]=F(X[0],RK[0])(+)X[0]
[2]=X[1]
[3]=F(X[2],RK[1])(+)X[2]
[最終段]
P[0]=X[0]
P[1]=X[1]
P[2]=X[2]
P[3]=X[3]
上記式より明らかに暗号化関数で暗号化されたデータは、偶数段のラウンド鍵を適切に入れ替えただけの暗号化関数によって復号できることが分かる。なお、式を一般化した場合、暗号化関数、復号関数は、それぞれ以下のように表現可能である。
[GFN暗号化関数(奇数段の場合(r=奇数))]
[0]=P[0]
[1]=P[1]
[2]=P[2]
[3]=P[3]
fori=2tor
[0]=F(Xi−1[0],RKi−1[0])(+)Xi−1[1]
[1]=Xi−1[2]
[2]=F(Xi−1[2],RKi−1[2])(+)Xi−1[3]
[3]=Xi−1[0]
C[0]=X[0]
C[1]=F(X[0],RK[0])(+)X[1]
C[2]=X[2]
C[3]=F(X[2],RK[1])(+)X[3]
[GFN復号関数(奇数段の場合(r=奇数))]
Xr[0]=C[0]
Xr[1]=F(X[0],RK[0])(+)C[1]
Xr[2]=C[2]
Xr[3]=F(X[2],RK[1])(+)C[3]
fori=r-1downto1
Xi[0]=Xi+1[3]
Xi[1]=F(X[0],RK[0])(+)Xi+1[0]
Xi[2]=Xi+1[1]
Xi[3]=F(X[2],RK[1])(+)Xi+1[2]
P[0]=X[0]
P[1]=X[1]
P[2]=X[2]
P[3]=X[3]
偶数段の例として、4段GFNの暗号化、復号関数を図16に示す。図16の暗号化関数(図16(a))は,以下のように処理される。
[(0段目)]
[0]=P[0]
[1]=P[1]
[2]=P[2]
[3]=P[3]
[1段目]
[0]=F(X[0],RK[0])(+)X[1]
[1]=X[2]
[2]=F(X[2],RK[1])(+)X[3]
[3]=X[0]
[2段目]
[0]=F(X[0],RK[0])(+)X[1]
[1]=X[2]
[2]=F(X[2],RK[2])(+)X[3]
[3]=X[0]
[3段目]
[0]=F(X[0],RK[0])(+)X[1]
[1]=X[2]
[2]=F(X[2],RK[1])(+)X[3]
[3]=X[0]
[4段目]
C[0]=X[0]
C[1]=F(X[0],RK[0])(+)X[1]
C[2]=X[2]
C[3]=F(X[2],RK[1])(+)X[3]
また,図16の復号関数(図16(b))は以下のように処理される.
[1段目]
[0]=C[0]
[1]=F(X[0],RK[0])(+)C[1]
[2]=C[2]
[3]=F(X[2],RK[1])(+)C[3]
[2段目]
[0]=X[3]
[1]=F(X[0],RK[0])(+)X[0]
[2]=X[1]
[3]=F(X[2],RK[1])(+)X[2]
[3段目]
[0]=X[3]
[1]=F(X[0],RK[0])(+)X[0]
[2]=X[1]
[3]=F(X[2],RK[1])(+)X[2]
[4段目]
[0]=X[3]
[1]=F(X[0],RK[0])(+)X[0]
[2]=X[1]
[3]=F(X[2],RK[1])(+)X[2]
[最終段]
P[0]=X[2]
P[1]=X[3]
P[2]=X[0]
P[3]=X[1]
上記式より明らかに暗号化関数で暗号化されたデータは、ラウンド鍵の順序を入れ替え、最終出力の左右の出力を入れ替えた暗号化関数によって復号できることが分かる。なお、式を一般化した場合、暗号化関数、復号関数はそれぞれ以下のように示すことができる。
[GFN暗号化関数(偶数段の場合(r=偶数))]
[0]=P[0]
[1]=P[1]
[2]=P[2]
[3]=P[3]
fori=2tor
[0]=F(Xi−1[0],RKi−1[0])(+)Xi−1[1]
[1]=Xi−1[2]
[2]=F(Xi−1[2],RKi−1[2])(+)Xi−1[3]
[3]=Xi−1[0]
C[0]=X[0]
C[1]=F(X[0],RK[0])(+)X[1]
C[2]=X[2]
C[3]=F(X[2],RK[1])(+)X[3]
[GFN復号関数(偶数段の場合(r=偶数))]
Xr[0]=C[0]
Xr[1]=F(X[0],RK[0])(+)C[1]
Xr[2]=C[2]
Xr[3]=F(X[2],RK[1])(+)C[3]
fori=r-1downto1
Xi[0]=Xi+1[3]
Xi[1]=F(X[0],RK[0])(+)Xi+1[0]
Xi[2]=Xi+1[1]
Xi[3]=F(X[2],RK[1])(+)Xi+1[2]
P[0]=X[2]
P[1]=X[3]
P[2]=X[0]
P[3]=X[1]
(4−2)拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)におけるインボリューション性保持構造について
次に、拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)におけるインボリューション性保持構造について説明する。
拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)において、インボリューション性を保持させる構成とした復号処理構成例を図17に示す。
図17に示す復号処理構成は、先に図10を参照して説明したデータ系列数(分割数)dを、d=4とした拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)の暗号化関数の構成例に対応する復号関数の構成例である。すなわち、図10を参照して説明した拡散行列切り替え機構(DSM)を持つ暗号処理構成において生成した暗号文の復号に適用可能な復号処理を実行する構成を示している。なお、図17に示す復号処理構成は、ハードウェアやソフトウェアを適用して実行可能な復号関数に相当する。前述したように暗号化関数と、復号関数を共通の関数を適用可能としたインボリューション性を保持する構成とすることで、実装コストの削減、装置の小型化などのメリットを奏することが可能となる。
図10に示す暗号処理構成に対応する復号処理構成として、先に説明した図11に示した復号処理構成では、適用するスワップ関数が異なるため、暗号関数と復号関数との構成が異なり、インボリューション性を保持できなかったが、図17に示す復号処理構成では、図10に示す暗号処理構成において適用するスワップ関数と同じ態様のスワップ処理を行なう構成としている。すなわち暗号化処理と復号処理とで適用するスワップ関数を共通の関数とした構成を持つ。すなわち、暗号化関数(図10)と復号関数(図17)は、共通の関数を適用可能としたインボリューション性を保持させた構成を実現している。
ただし、図17に示す復号処理構成は、ラウンド数rが奇数の場合の復号処理構成である。ラウンド数rが偶数の場合の暗号化関数(図10)に対応するインボリューション性を保持した復号処理構成は図18に示す構成となる。
まず、ラウンド数rが奇数の場合の復号処理構成である図17に示す復号関数の構成について説明する。図17の復号処理構成において、入力は、暗号文Cであり、暗号文CはC[0],C[1],C[2],C[3]の4つのデータ系列(分割数=4)に分割され、順次、各ラウンドにおいてF関数F、またはF関数Fを適用したデータ変換が実行されて、rラウンドの変換結果として平文Pを構成するP[0],P[1],P[2],P[3]を出力する。各ラウンドのF関数FとF関数Fでは、図示しない鍵スケジュール部から供給されるマスター鍵(主鍵)に基づいて生成された拡大鍵の構成要素としてのラウンド鍵(副鍵)のRK[0],RK[1]が入力され、データ変換に適用される。
図17に示す復号関数において、各ラウンドの適用鍵は、図10に示す暗号化関数の各ラウンドの適用鍵と逆の順番となる。これは、図10の暗号化関数と図11の復号関数の対応と同様の関係である。
しかし、図17における復号関数では、ラウンド切り替え部分の各データ系列入れ替え処理として実行するスワップ処理は、図10に示すスワップ処理と同一のスワップ処理となる。図17に示すようにスワップ関数271は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定する。
図17において、例えばデータ系列を、図17上段に示すように左からデータ系列0,1,2,3としたとき、先行ラウンドの4つの系列の出力と、後続ラウンドに対する入力系列の入れ替えがスワップ関数271によって以下のように切り替えられる。
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数がスワップ関数271である。
このスワップ処理は、先に図10を参照して説明した暗号化処理におけるスワップ関数211と同一の系列入れ替え処理である。
従って、図10に示す暗号化処理と、図17に示す復号処理とでは、全く同一のスワップ関数を適用することが可能となる。
図17に示す復号処理構成では、スワップ関数を暗号化処理と同一の構成とするための工夫として、各偶数ラウンドにおけるF関数FとF関数Fの入れ替えと、入力鍵(ラウンド鍵)の入れ替えを行なっている。
図17に示す復号処理構成中、図に示す◎の偶数ラウンドにおいて、F関数FとF関数Fの入れ替えと、入力鍵(ラウンド鍵)の入れ替えを行なっている。図に示すように、図17に示す復号処理構成の、上から2つのラウンドである第2ラウンドでは、左側にF関数Fを設定し、右側にF関数Fを設定し、さらに、左側のF関数Fに対してラウンド鍵RK(r−1)[1]を入力し、右側のF関数Fに対してラウンド鍵RK(r−1)[0]を入力する構成としている。以下、第4ラウンド、第6ラウンド・・・各偶数ラウンドにおいて、各F関数と、F関数に入力するラウンド鍵の入れ替えを行なっている。図11と対比するとその差異が明確となる。図11では、全てのラウンドにおいて、左側のF関数はFであり、ラウンド鍵RK[0]を入力する設定であり、右側のF関数はFであり、ラウンド鍵RK[1]を入力している。
しかし、上記構成とした場合、図10を参照して説明した暗号化処理構成と、図17に示す復号処理構成では、F関数の配列が異なることになるため、暗号化関数と復号関数の共有化を実現する構成とは言い難い。すなわち、復号処理のみにおいて偶数段のF関数の入れ替えが発生してしまい、暗号関数と同一の関数を実現しているとは言えないことになる。
暗号化関数と、復号関数において、F関数部分を別の関数として外部から与えるような構成としてもよいが、この手法ではスワップ関数を外部から与える手法と同様、実行速度の低下を招くことになり好ましい手法とは言えない。そこで、F関数の入出力結果を表引き(テーブル)実装する構成とする。
すなわち、図17に示す構成の場合、2つの異なるF関数、すなわち、F関数FとF関数Fを適用した構成であり、これらの各F関数の入力値に対応する出力値を予めテーブルとして用意して、暗号処理装置のメモリに格納する。各F関数のテーブルは、メモリのテーブル格納位置を示す各アドレスに基づいて取得可能な構成とする。
このように各F関数F,Fの出力値をメモリに格納したテーブルから取得可能な構成とし、図17に示す復号処理構成における偶数段のF関数の実行部分では、復号関数に対して、各テーブルのアドレスを外部から与えてテーブルを取得して各F関数の出力を得る構成とする。すなわち、少なくとも偶数段のF関数の実行部分は、暗号関数、復号関数においてテーブルを取得するアドレスに従った処理を実行する構成とする。
一般的に、ソフトウェアによって実行する処理構成とした場合、F関数の内部は表引き(テーブル)で実装されている。表引き(テーブル)実装というのは,実際の演算は行わずに予め計算しておいた演算結果のみをテーブル(置換表)という形でメモリ空間上に保持しておき、それを適時参照することによって求めたい出力値を得る実装手法である。例えば,
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関数のテーブルのアドレスだけを外部から与えるようにすることで、関数を用いずに暗号化関数と復号関数の変更が可能になる。
つまり、DSMを用いたGFNにおいて、暗号化関数と復号関数を共有するためには、
(1)通常のFeistel型暗号同様,段ごとに拡大鍵の順序を入れ替える
(2)通常のGFN構造同様,偶数段のF関数ごとに拡大鍵の位置を入れ替える
(3)偶数段のF関数のテーブルのアドレスを暗号化関数と復号関数で入れ替える
これらの構成を採用する。
以上のような方法により実行速度の低下を最小限に抑えつつ暗号化関数と復号関数を共有することが可能になる.
上述したように、図17に示す復号処理構成では、各偶数ラウンドの入力ラウンド鍵を入れ替え、偶数ラウンドの各F関数の処理結果をテーブルから取得する構成として、それぞれのF関数に対応するテーブルのアドレスを適用した処理を実行させることで、図10に示す暗号処理構成において適用するスワップ関数と同一のスワップ関数を適用可能として、暗号化関数と復号関数で共通の関数を用いることができるインボリューション性を実現することが可能となる。
図17に示す復号処理構成は、ラウンド数rが奇数の場合の復号処理構成である。ラウンド数rが偶数の場合の暗号化関数(図10)に対応するインボリューション性を保持した復号処理構成は図18に示す構成となる。
図18に示す復号処理構成も、図10に示す暗号処理構成によって暗号化された暗号文を平文に戻す復号処理に適用される復号関数に相当する復号処理構成を示している。図18の構成は、ラウンド数rが奇数である。
図18に示す復号処理構成も、図17に示す復号処理構成と同様、図に◎で示す各偶数ラウンドに設定されたF関数F,Fと、各F関数に対して入力するラウンド鍵の入れ替えを実行する構成としている。さらに、最終ラウンドの処理結果に対する出力調整処理を実行する構成を持つ。出力調整部282は、最終ラウンドにおける各データ系列の値を入れ替えて、P[0],P[1],P[2],P[3]の最終出力を得るための処理として実行される。この部分は、復号関数の実行後の処理として1回のみ実行すればよく、大きな効率低下を発生させるものとはならない。
図18に示す構成におけるスワップ関数281は、図17に示す構成と同様、図10を参照して説明した暗号化処理構成におけるスワップ関数211と同一のスワップ処理を行なう構成を持つ。すなわち、
先行ラウンドのデータ系列0の出力は後続ラウンドにおけるデータ系列3の入力として設定される。
先行ラウンドのデータ系列1の出力は後続ラウンドにおけるデータ系列0の入力として設定される。
先行ラウンドのデータ系列2の出力は後続ラウンドにおけるデータ系列1の入力として設定される。
先行ラウンドのデータ系列3の出力は後続ラウンドにおけるデータ系列2の入力として設定される。
このような系列入れ替え処理を実行する関数がスワップ関数281である。
このスワップ処理は、先に図10を参照して説明した暗号化処理におけるスワップ関数211と同一の系列入れ替え処理である。
従って、図10に示す暗号化処理と、図18に示す復号処理とでは、全く同一のスワップ関数を適用することが可能となる。
図18に示す復号処理構成では、スワップ関数を暗号化処理と同一の構成とするための工夫として、各ラウンドにおけるF関数と入力鍵(ラウンド鍵)の入力態様を変更し、さらに、出力調整部282により、最終ラウンドの処理結果に対する出力調整処理を実行する構成としている。
なお、各偶数段におけるF関数の入れ替えは、先に図17を参照して説明した構成例と同様、各F関数の入出力データの対応テーブルを予めメモリに格納し、各F関数対応のテーブルを取得するためのアドレスによって各F関数対応のテーブルを取得してF関数の処理結果を取得する構成とすることで、暗号化関数と復号関数の共通化を実現することが可能である。
上記の設定とすることで、図10に示す暗号処理構成において適用するスワップ関数と同一のスワップ関数を適用可能として、暗号化関数と復号関数に共通な関数を適用可能なインボリューション性が実現される。
[5.暗号処理装置の構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としてのICモジュール300の構成例を図19に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図19に示すICモジュール300は、これら様々な機器に構成することが可能である。
図19に示すCPU(Central processing Unit)301は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ302は、CPU301が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU301の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ302は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部303は、例えば上述した拡張型Feistel型の共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU301がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器304は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部305は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
このICモジュール300の暗号処理部303は、例えば、上述した実施例に従って、データ系列数dがd≧3の整数とした拡張型Feistel型暗号処理を実行するデータ処理部として機能する。この暗号処理部303は、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行し、例えば、暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行する。すなわち、暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行する。
暗号処理部303は、拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行する場合には、先に図13、図14を参照して説明したように、復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定としたラウンド鍵入れ替え処理を行なう。
また、暗号処理部303は、拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する場合には、先に図17、図18を参照して説明したように、復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定するとともに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を、暗号化処理における入力態様と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なう。この処理の場合には、複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行する。
さらに、暗号処理部303は、拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、先に図14、図18を参照して説明したように、復号処理の最終ラウンドの出力結果のシーケンス入れ替え処理を行なう出力調整を実行する。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明の一実施例の構成によれば、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理構成において、インボリューション性、すなわち暗号化処理と復号処理に共通の関数を適用可能な構成とすることが可能となる。具体的には、復号処理におけるラウンド鍵の入れ替えやF関数の入れ替えを行う構成とすることで、スワップ関数を暗号化処理と復号処理とにおいて同一の処理態様に設定することで共通関数による処理を可能とした。本構成により、装置のコストダウンや小型化が実現される。
拡散行列切り替え機構(DSM)を適用しない従来型のFeistel構造を持つ暗号処理構成例を示す図である。 拡散行列切り替え機構(DSM)を適用しない従来型のFeistel構造を持つ復号処理構成例を示す図である。 拡散行列切り替え機構(DSM)を適用した従来型のFeistel構造を持つ暗号処理構成例を示す図である。 拡散行列切り替え機構(DSM)を適用した従来型のFeistel構造を持つ復号処理構成例を示す図である。 Feistel構造の基本構成について説明する図である。 ラウンド関数部として設定されるF関数の構成について説明する図である。 拡散行列切り替え機構(DSM)を実現したFeistel構造例を示す図である。 拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)を持つ暗号化処理構成の構成例を示す図である。 拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)を持つ復号処理構成の構成例を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)を持つ暗号化処理構成の構成例を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)を持つ復号処理構成の構成例を示す図である。 本発明の適用可能な拡張型Feistel構造タイプ2について説明する図である。 拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)において、インボリューション性を保持させる構成とした復号処理構成例を示す図である。 拡散行列切り替え機構(DSM)を持たない拡張型Feistel構造(GFN)において、インボリューション性を保持させる構成とした復号処理構成例を示す図である。 3段GFNの暗号化、復号関数を示す図である。 4段GFNの暗号化、復号関数を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)において、インボリューション性を保持させる構成とした復号処理構成例を示す図である。 拡散行列切り替え機構(DSM)を持つ拡張型Feistel構造(GFN)において、インボリューション性を保持させる構成とした復号処理構成例を示す図である。 本発明に係る暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
符号の説明
101 入力データP[0]
102 入力データP[1]
103 ラウンド鍵
104 排他的論理和部
120 F関数
121 Sボックス(S−box)
122 線形変換部
201 スワップ関数
202 スワップ関数
211 スワップ関数
212 スワップ関数
251 スワップ関数
261 スワップ関数
262 出力調整部
271 スワップ関数
281 スワップ関数
282 出力調整部
300 ICモジュール
301 CPU(Central processing Unit)
302 メモリ
303 暗号処理部
304 乱数発生器
305 送受信部

Claims (12)

  1. データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理装置であり、
    暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理部を有し、
    前記データ処理部は、
    暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行する構成であり、
    前記データ処理部は、
    前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行する構成であり、
    復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを暗号処理と逆のシーケンスに設定し、さらに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を暗号化処理と異なる設定とするラウンド鍵入れ替え処理を行なう構成であることを特徴とする暗号処理装置。
  2. データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理装置であり、
    暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理部を有し、
    前記データ処理部は、
    暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行する構成であり、
    前記データ処理部は、
    前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行する構成であり、
    復号処理の各ラウンドにおいて適用するラウンド鍵の適用シーケンスを暗号処理と逆のシーケンスに設定し、さらに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を暗号化処理と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なう構成であることを特徴とする暗号処理装置。
  3. 前記データ処理部は、
    暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行する構成であることを特徴とする請求項1または2に記載の暗号処理装置。
  4. 前記データ処理部は、
    複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行する構成であることを特徴とする請求項2に記載の暗号処理装置。
  5. 前記データ処理部は、
    前記拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、
    復号処理の最終ラウンドの出力結果の入れ替え処理を行なう出力調整を実行する構成であることを特徴とする請求項1または2に記載の暗号処理装置。
  6. 暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理方法であり、
    データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理ステップを有し、
    前記データ処理ステップは、
    暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行するステップであり、
    さらに、前記データ処理ステップにおいては、
    前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行するとともに、
    復号処理を実行する場合は、各ラウンドにおいて適用するラウンド鍵の適用シーケンスを暗号処理と逆のシーケンスに設定し、さらに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を暗号化処理と異なる設定とするラウンド鍵入れ替え処理を行なうことを特徴とする暗号処理方法。
  7. 暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行する暗号処理方法であり、
    データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行するデータ処理ステップを有し、
    前記データ処理ステップは、
    暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行するステップであり、
    さらに、前記データ処理ステップにおいては、
    前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行するとともに、
    復号処理を実行する場合は、各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定し、さらに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を暗号化処理と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なうことを特徴とする暗号処理方法。
  8. 前記データ処理ステップは、
    暗号化処理および復号処理に共通のスワップ関数を含む共通の関数を実行するステップであることを特徴とする請求項6または7に記載の暗号処理方法。
  9. 前記データ処理ステップは、
    複数の異なるF関数各々に対応する入出力対応データを格納したテーブルを、各ラウンドに対応して指定されるアドレスに従ってメモリから呼び出して各F関数処理結果を算出する処理を実行するステップを含むことを特徴とする請求項7に記載の暗号処理方法。
  10. 前記データ処理ステップは、
    前記拡張型Feistel構造を構成するラウンドのラウンド数が偶数である場合、
    復号処理の最終ラウンドの出力結果の入れ替え処理を行なう出力調整を実行するステップを含むことを特徴とする請求項6または7に記載の暗号処理方法。
  11. 暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行させるコンピュータ・プログラムであり、
    データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行させるデータ処理ステップを有し、
    前記データ処理ステップは、
    暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行させるステップであり、
    さらに、前記データ処理ステップにおいて、
    前記拡張型Feistel構造を構成する各ラウンドのF関数において実行する線形変換処理の変換行列を共通の行列に設定した暗号処理を実行させるとともに、
    復号処理を実行する場合は、各ラウンドにおいて適用するラウンド鍵の適用シーケンスを暗号処理と逆のシーケンスに設定させ、さらに、偶数ラウンド各々の複数のF関数に入力するラウンド鍵を暗号化処理と異なる設定とするラウンド鍵入れ替え処理を行なわせることを特徴とするコンピュータ・プログラム。
  12. 暗号処理装置において、データ系列数:dをd≧3の整数とした拡張型Feistel構造を適用した暗号処理を実行させるコンピュータ・プログラムであり、
    データ処理部において、暗号化処理および復号処理に共通のスワップ処理を含むデータ処理を実行させるデータ処理ステップを有し、
    前記データ処理ステップは、
    暗号化処理と、復号処理において、適用ラウンド鍵の変更を行なうことで、暗号化処理と復号処理のいずれの処理においても前記共通のスワップ処理を含むデータ処理を実行させるステップであり、
    さらに、前記データ処理ステップにおいて、
    前記拡張型Feistel構造を構成する各ラウンドのF関数中の線形変換処理に適用する変換行列を少なくとも2以上の異なる行列の選択適用構成とした拡散行列切り替え機構(DSM:Diffusion Switching Mechanism)を持つFeistel構造に従った暗号処理を実行させるとともに、
    復号処理を実行する場合は、各ラウンドにおいて適用するラウンド鍵の適用シーケンスを、暗号処理と逆のシーケンスに設定させ、さらに、偶数ラウンド各々の複数のF関数、および該複数のF関数に入力するラウンド鍵を暗号化処理と異なる設定とするF関数およびラウンド鍵入れ替え処理を行なわせることを特徴とするコンピュータ・プログラム。
JP2006238223A 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP4967544B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2006238223A JP4967544B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
TW096130767A TWI394418B (zh) 2006-09-01 2007-08-20 A cryptographic processing device, a cryptographic processing method, and a non-temporary computer readable recording medium
US12/439,543 US8165288B2 (en) 2006-09-01 2007-08-29 Cryptographic processing apparatus and cryptographic processing method, and computer program
PCT/JP2007/066729 WO2008026621A1 (fr) 2006-09-01 2007-08-29 Dispositif de codage, procédé de codage et programme informatique
CN200780032468.7A CN101512620B (zh) 2006-09-01 2007-08-29 密码处理装置和密码处理方法
EP07806206A EP2058780A4 (en) 2006-09-01 2007-08-29 ENCODING DEVICE, ENCODING METHOD, AND COMPUTER PROGRAM
US13/436,223 US8731188B2 (en) 2006-09-01 2012-03-30 Cryptographic processing apparatus and cryptographic processing method, and computer program

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2008058826A JP2008058826A (ja) 2008-03-13
JP4967544B2 true JP4967544B2 (ja) 2012-07-04

Family

ID=39135903

Family Applications (1)

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

Country Status (6)

Country Link
US (2) US8165288B2 (ja)
EP (1) EP2058780A4 (ja)
JP (1) JP4967544B2 (ja)
CN (1) CN101512620B (ja)
TW (1) TWI394418B (ja)
WO (1) WO2008026621A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US8619976B2 (en) * 2007-12-13 2013-12-31 Nec Corporation Encryption method, decryption method, device, and program
CN101393658B (zh) * 2008-02-27 2011-04-20 重庆长安汽车股份有限公司 汽车中控防盗方法及系统
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
TWI383341B (zh) * 2009-03-16 2013-01-21 Chiou Haun Lee Multilayer Diffusion and Decryption Methods
WO2011052587A1 (ja) * 2009-10-27 2011-05-05 日本電気株式会社 ブロック暗号装置、ブロック暗号化方法およびプログラム
CN102713994B (zh) * 2009-10-27 2015-07-01 日本电气株式会社 加密装置
US8369515B2 (en) * 2010-03-18 2013-02-05 Chiou-Haun Lee Cryptographic method of multilayer diffusion in multidimension
TWI396149B (zh) * 2010-04-22 2013-05-11 Chiou Haun Lee 多層擴散串流加解密方法與裝置
US8948376B2 (en) * 2010-05-11 2015-02-03 Ca, Inc. Format-preserving encryption via rotating block encryption
WO2012067052A1 (ja) 2010-11-15 2012-05-24 日本電気株式会社 暗号処理装置および暗号処理方法
JP5605197B2 (ja) * 2010-12-09 2014-10-15 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5682525B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
WO2012141189A1 (ja) * 2011-04-11 2012-10-18 日本電気株式会社 暗号化方法、暗号化装置および暗号化プログラム
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
US9990479B2 (en) * 2014-12-27 2018-06-05 Intel Corporation Technologies for authenticating a user of a computing device based on authentication context state
CN104579635B (zh) * 2015-01-27 2018-07-06 聚辰半导体(上海)有限公司 可循环迭代抗侧信道攻击的des系统及实现可重映射sbox方法
CN104717054B (zh) * 2015-02-12 2017-11-14 中国科学院信息工程研究所 一种密码实现侧信道安全性快速检测方法
GB2543780B (en) * 2015-10-27 2020-01-22 Trustonic Ltd Cryptographic program diversification
KR102602696B1 (ko) * 2017-10-13 2023-11-16 삼성전자주식회사 암호화 장치 및 복호화 장치, 이들의 동작방법

Family Cites Families (9)

* 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
CA2319135C (en) * 1998-01-27 2003-06-17 Nippon Telegraph And Telephone Corporation Data transformation device and recording medium having recorded thereon a program for implementing the same
US6185679B1 (en) * 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
US6269163B1 (en) 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
DE60111746T2 (de) * 2000-08-03 2006-05-18 Koninklijke Philips Electronics N.V. Lineartransformation für symmetrische verschlüsselungssysteme
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 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2006206376A (ja) 2005-01-28 2006-08-10 Ngk Spark Plug Co Ltd セラミック焼結体、切削インサート及び切削工具

Also Published As

Publication number Publication date
WO2008026621A1 (fr) 2008-03-06
JP2008058826A (ja) 2008-03-13
US8731188B2 (en) 2014-05-20
US8165288B2 (en) 2012-04-24
TW200828936A (en) 2008-07-01
CN101512620B (zh) 2010-09-29
TWI394418B (zh) 2013-04-21
US20100014659A1 (en) 2010-01-21
US20120191986A1 (en) 2012-07-26
EP2058780A1 (en) 2009-05-13
EP2058780A4 (en) 2011-03-09
CN101512620A (zh) 2009-08-19

Similar Documents

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

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090820

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120217

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

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

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

Free format text: PAYMENT UNTIL: 20150413

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20150413

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees