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

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

Info

Publication number
JP2005107078A
JP2005107078A JP2003339364A JP2003339364A JP2005107078A JP 2005107078 A JP2005107078 A JP 2005107078A JP 2003339364 A JP2003339364 A JP 2003339364A JP 2003339364 A JP2003339364 A JP 2003339364A JP 2005107078 A JP2005107078 A JP 2005107078A
Authority
JP
Japan
Prior art keywords
matrix
rounds
mds
linear transformation
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003339364A
Other languages
English (en)
Other versions
JP4622222B2 (ja
JP2005107078A5 (ja
Inventor
Taizo Shirai
太三 白井
Koushi Shibuya
香士 渋谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2003339364A priority Critical patent/JP4622222B2/ja
Priority to US10/951,371 priority patent/US7433470B2/en
Publication of JP2005107078A publication Critical patent/JP2005107078A/ja
Publication of JP2005107078A5 publication Critical patent/JP2005107078A5/ja
Priority to US12/232,352 priority patent/US8031866B2/en
Application granted granted Critical
Publication of JP4622222B2 publication Critical patent/JP4622222B2/ja
Priority to US13/206,803 priority patent/US8306217B2/en
Priority to US13/605,470 priority patent/US8666069B2/en
Priority to US14/143,739 priority patent/US9083506B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Landscapes

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

Abstract

【課題】 解析困難性を高めた、安全性の高い暗号処理装置および方法を実現する。
【解決手段】 非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、複数ラウンド各々に対応するF関数の線形変換処理を、MDS(Maximum Distance Separable)行列を適用した線形変換処理として実行し、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行する構成とした。本構成により、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となる。
【選択図】 図9

Description

本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、暗号解析処理、攻撃処理として知られる差分解析に対する耐性を向上させた暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されている。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式にも様々なアルゴリズムがあるが、その1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば米国標準暗号としてのDES(Data Encryption Standard)アルゴリズムがあり、様々な分野において広く用いられている。
DESに代表される共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数(F関数)部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで適用するラウンド鍵(副鍵)は、1つのマスター鍵(主鍵)に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。
しかし、このような共通鍵暗号処理においては、暗号解析による鍵、あるいは暗号アルゴリズムの漏洩が問題となっている。暗号解析または攻撃手法の代表的な手法として、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析(あるいは差分解読法または差分攻撃とも呼ばれる)が知られている。
暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が低いということになる。従来のDESアルゴリズムにおいては、ラウンド関数(F関数)部の線形変換部において適用する処理(変換行列)が、各段のラウンドにおいて等しいものであったため、差分解析が行いやすく、結果として鍵の解析の容易性を招いているという問題がある。
本発明は、上記問題点に鑑みてなされたものであり、差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
具体的には、本発明は、各ラウンド毎に異なる変換行列を適用した線形変換処理を実行することにより、差分解析に対する耐性の高い共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供する。
本発明の第1の側面は、
Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置であり、
非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行する構成を有し、
前記複数ラウンド各々に対応するF関数の線形変換部は、
MDS(Maximum Distance Separable)行列を適用した線形変換処理を実行する構成であり、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行する構成であることを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記F関数の線形変換部は、全ての偶数ラウンドおよび全ての奇数ラウンドにおいて異なるMDS行列をそれぞれ適用した線形変換処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記Feistel型共通鍵ブロック暗号処理のアルゴリズムは、ラウンド数2rの暗号処理アルゴリズムであり、前記F関数の線形変換部は、r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいてr種類の異なるMDS行列を順次適用した線形変換処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記Feistel型共通鍵ブロック暗号処理のアルゴリズムは、ラウンド数2rの暗号処理アルゴリズムであり、前記F関数の線形変換部は、r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいて2≦q<rのq種類の異なるMDS行列を順次繰り返し適用した線形変換処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記F関数の線形変換部は、m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理を実行する構成であり、前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、前記複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列が線形独立であるMDS行列として設定したことを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記F関数の線形変換部は、m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理を実行する構成であり、前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、前記複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列もMDS行列となるMDS行列として設定したことを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、前記異なるMDS行列を構成する要素を全て含むMDS行列Mから選択された行ベクトルによって構成される行列M'から抽出された列ベクトルによって構成される行列によって構成されていることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、リードソロモン符号生成行列に基づいて生成されたMDS行列であることを特徴とする。
さらに、本発明の第2の側面は、
Feistel型共通鍵ブロック暗号処理を実行する暗号処理方法であり、
非線形変換処理および線形変換処理を実行するSPN型のF関数を、複数ラウンド繰り返し実行し、
前記複数ラウンド各々に対応するF関数の線形変換処理は、
MDS(Maximum Distance Separable)行列を適用した線形変換処理を実行するとともに、
少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記複数ラウンド各々に対応するF関数の線形変換処理は、全ての偶数ラウンドおよび全ての奇数ラウンドにおいて異なるMDS行列をそれぞれ適用した線形変換処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、ラウンド数2rのFeistel型共通鍵ブロック暗号処理を実行し、前記複数ラウンド各々に対応するF関数の線形変換処理は、r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいてr種類の異なるMDS行列を順次適用した線形変換処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、ラウンド数2rのFeistel型共通鍵ブロック暗号処理を実行し、前記複数ラウンド各々に対応するF関数の線形変換処理は、r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいて2≦q<rのq種類の異なるMDS行列を順次繰り返し適用した線形変換処理を実行することを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記複数ラウンド各々に対応するF関数の線形変換処理は、m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理であり、前記複数ラウンド各々に対応するF関数の線形変換処理において適用する異なる複数のMDS行列の各々は、該複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列が線形独立であるMDS行列であることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記複数ラウンド各々に対応するF関数の線形変換処理は、m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理であり、前記複数ラウンド各々に対応するF関数の線形変換処理において適用する異なる複数のMDS行列の各々は、前記複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列もMDS行列となるMDS行列であることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記複数ラウンド各々に対応するF関数の線形変換処理において適用する異なる複数のMDS行列の各々は、前記複数のMDS行列を構成する要素を全て含むMDS行列Mから選択された行ベクトルによって構成される行列M'から抽出された列ベクトルによって構成される行列によって構成されていることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、リードソロモン符号生成行列に基づいて生成されたMDS行列であることを特徴とする。
さらに、本発明の第3の側面は、
Feistel型共通鍵ブロック暗号処理を実行するコンピュータ・プログラムであり、
非線形変換処理および線形変換処理を実行するSPN型のF関数を、複数ラウンド繰り返し実行し、
前記複数ラウンド各々に対応するF関数の線形変換処理は、
MDS(Maximum Distance Separable)行列を適用した線形変換処理を実行するとともに、
少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行するステップであることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、複数ラウンド各々に対応するF関数の線形変換処理を、MDS(Maximum Distance Separable)行列を適用した線形変換処理として実行するとともに、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行する構成としたので、アクティブSボックスの寄与による同時差分キャンセルの発生可能性が低減または解消することとなり、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となる。すなわち、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、暗号鍵等の解析困難性が高まることとなり、差分解析に対する耐性が高く、安全性の高い暗号処理が実現される。
本発明の構成によれば、非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、複数ラウンド各々に対応するF関数の線形変換処理を、MDS(Maximum Distance Separable)行列を適用した線形変換処理として実行するとともに、ラウンド数2rの暗号処理アルゴリズムに対応してrの異なるMDS行列を生成し、偶数ラウンドおよび奇数ラウンドの各々においてr個の異なるMDS行列を適用した線形変換処理を実行する構成とし、適用するMDS行列の列ベクトルによって構成される行列が線形独立性を示すか、またはMDS行列を構成することを確認した構成としたので、アクティブSボックスの寄与による同時差分キャンセルの発生しないことが保証され、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となる。すなわち、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、暗号鍵等の解析困難性が高まることとなり、差分解析に対する耐性が高く、安全性の高い暗号処理が実現される。
本発明の構成によれば、非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、複数ラウンド各々に対応するF関数の線形変換処理を、MDS(Maximum Distance Separable)行列を適用した線形変換処理として実行するとともに、ラウンド数2rの暗号処理アルゴリズムに対応して2≦q<rの整数q個の異なるMDS行列を生成し、偶数ラウンドおよび奇数ラウンドの各々においてq個の異なるMDS行列を繰り返し適用した線形変換処理を実行する構成としたので、ラウンド数より少ないMDS行列の適用により、アクティブSボックスの寄与による同時差分キャンセルの発生可能性が低減され、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となる。すなわち、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、暗号鍵等の解析困難性が高まることとなり、差分解析に対する耐性が高く、安全性の高い暗号処理が実現される。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は、以下の項目順に行う。
1.共通鍵ブロック暗号アルゴリズムにおける差分解析処理
2.本発明に基づく暗号処理アルゴリズム
[1.共通鍵ブロック暗号アルゴリズムにおける差分解析処理]
まず、DES(Data Encryption Standard)暗号処理に代表される共通鍵ブロック暗号アルゴリズムにおける差分解析処理の概要について、一般化した共通鍵ブロック暗号モデルを用いて説明する。
共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで適用する鍵(副鍵)は、1つのマスター鍵(主鍵)に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方式としてのDES(Data Encryption Standard)がある。
Feistel構造と呼ばれる代表的な共通鍵ブロック暗号の構造について、図1を参照して説明する。
Feistel構造は、変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。平文の長さを2mnビットとする。ただし、m,nは共に整数である。初めに、2mnビットの平文を、mnビットの2つの入力データP(Plain-Left)101,P(Plain-Right)102に分割し、これを入力値とする。
Feistel構造はラウンド関数とよばれる基本構造の繰り返しで表現され、各ラウンドに含まれるデータ変換関数はF関数120と呼ばれる。図1の構成では、F関数(ラウンド関数)120がr段繰り返された構成例を示している。
例えば第1番目のラウンドでは、mnビットの入力データXと、鍵生成部(図示せず)から入力されるmnビットのラウンド鍵K103がF関数120に入力され、F関数120におけるデータ変換処理の後にmnビットのデータYを出力する。出力はもう片方の前段からの入力データ(第1段の場合は入力データP)と排他的論理和部104において、排他的論理和演算がなされ、mnビットの演算結果が次のラウンド関数へと出力される。この処理、すなわちF関数を定められたラウンド数(r)だけ繰り返し適用して暗号化処理が完了し、暗号文の分割データC(Cipher-Left)、C(Cipher-Right)が出力される。以上の構成より、Feistel構造の復号処理はラウンド鍵を挿入する順序を逆にするだけでよく、逆関数を構成する必要がないことが導かれる。
各ラウンドの関数として設定されるF関数120の構成について、図2を参照して説明する。図2(a)は、1つのラウンドにおけるF関数120に対する入力および出力を示す図であり、図2(b)は、F関数120の構成の詳細を示す図である。F関数120は、図2(b)に示すように、非線形変換層と線形変換層を接続したいわゆるSPN型の構成を有する。
SPN型のF関数120は、図2(b)に示すように、非線形変換処理を実行する複数のSボックス(S−box)121を有する。ラウンド関数部の前段からのmnビットの入力値Xは、鍵スケジュール部から入力されるラウンド鍵Kと排他的論理和が実行され、その出力がnビットずつ非線形変換処理を実行する複数(m個)のSボックス121に入力される。各Sボックスでは、例えば変換テーブルを適用した非線形変換処理が実行される。
Sボックス121からの出力データであるmnビットの出力値Zは、線形変換処理を実行する線形変換部122に入力されて、例えばビット位置の入れ替え処理などの線形変換処理が実行され、mnビットの出力値Yを出力する。この出力値Yが前段からの入力データと排他的論理和され、次のラウンドのF関数の入力値とされる。
図2に示すF関数120は、入出力ビット長がm×n(m,n:整数)ビットであり、非線形変換層はnビットの入出力を持つ非線形変換層としてのSボックス121は、m個並列にならんだ構成を有し、線形変換層としての線形変換部122はn次の既約多項式で定義される2の拡大体GF(2)上の元を要素として持つm次の正方行列に基づく線形変換処理を実行する。
線形変換部122における線形変換処理に適用する正方行列の例を図3に示す。図3に示す正方行列125は、n=8,m=8の場合の例である。非線形変換部(Sボックス121)から出力されたm個のnビットデータZ[1],Z[2],...,Z[m]に対してあらかじめ定められた正方行列125を適用した演算により線形変換が施され、F関数(ラウンド関数)出力としての、Y[1],Y[2],...,Y[m]が決定される。ただし、このとき各データの行列の要素に対する線形演算はあらかじめ定められた2の拡大体GF(2)上で行われる。
これまでのFeistel型暗号では、すべての段のF関数に同じ線形変換層を用いているため、差分の伝播時に同時に複数の差分がキャンセルしてしまうという性質が存在した。背景技術の欄において説明したように、暗号解析手法の代表的な手法として、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数解析することにより各ラウンド関数における適用鍵を解析する差分解析(あるいは差分解読法)が知られており、従来のDES暗号アルゴリズム等の共通鍵ブロック暗号においては、F関数120部の線形変換部122において適用する処理(変換行列)を、各段のラウンドにおいて等しいものに設定しているため、差分解析が行いやすく、結果として鍵の解析の容易性を招いている。
差分の伝播時に、同時に複数の差分がキャンセルする例について、図4を参照して説明する。なお、本明細書においては、差分を表す場合にはΔ(デルタ)記号をつけて表す。
図4はm=8,n=8の128bitブロック暗号における3段の同時差分キャンセルの様子を説明する図である。ただし、図中では64bitのデータをバイト単位で区切ってベクトルとして表現し、それぞれの要素を16進数で表記するものとする。
3段構成を持つF関数での同時差分キャンセルは、例えば以下のデータ状態1〜4の設定メカニズムに基づいて発生する。以下に説明するメカニズムの発生するデータ状態は、多数の差分入力データを設定することで発生させることができるデータ状態であり、いわゆる差分解析における鍵(ラウンド鍵)の解析において発生し得る。
(状態1)
iラウンドへの入力差分の左半分は、すべてゼロである入力差分(ΔXi−1=(00,00,00,00,00,00,00,00))であり、右半分の入力差分がただひとつのS−boxへの入力を除いてゼロである入力差分(ΔXi=(34,00,00,00,00,00,00,00))であるとする。このデータ状態は、多数の差分入力データを設定することで、iラウンドにおいて、このようなデータ状態を得ることができるということである。
なお、ΔXi=(34,00,00,00,00,00,00,00)の8つの各要素は、F関数中に構成されるm個(m=8)のSボックス各々に対する入力差分に対応する。差分(34)が第1Sボックス(図4中の(S1))に入力され、(00)が、第2〜8Sボックスに対する入力差分である。
なおゼロ(00)の入力差分を持つSボックスの出力差分はゼロ(00)であり、差分データに関する限り、ゼロ(00)の入力差分を持つSボックスは、何の作用も行なっていないものであり、アクティブでないすなわち非アクティブSボックスと呼ばれる。一方、非ゼロの入力差分(図4の例では差分:34)を持つSボックスは、非ゼロの入力差分に対応した非線形変換結果を出力差分として発生させるので、アクティブSボックス(Active S−box)と呼ばれる。
図4の例では、非ゼロの入力差分(34)を入力する1つのアクティブSボックス(S1)の出力差分(b7)を発生させており、その他の非アクティブSボックスS2〜S8はゼロの入力差分(00)に基づいて出力差分(00)を発生させ、線形変換部の差分入力としている。
(状態2)
iラウンドへの非ゼロの入力差分(図4の例では差分:34)を持つSボックス(以下、アクティブSボックス(Active S−box)と呼ぶ)からの出力差分は線形変換層で拡散されたのちF関数から出力(出力値=ΔYi)され、そのまま次のラウンドへの入力差分ΔXi+1となる。
図4の例における線形変換は、各ラウンドのF関数において共通する例えば図5に示すある特定の正方行列125による線形変換が実行されiラウンドのF関数出力差分としてのΔYi=(98,c4,b4,d3,ac,72,0f,32)を出力する。図5に示す線形変換構成から理解されるように、出力差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)は、1つのアクティブSボックス(S1)からの出力要素Z[1]=b7にのみ依存した値として決定される。
このiラウンドのF関数出力差分としてのΔYi=(98,c4,b4,d3,ac,72,0f,32)は、図4に示す排他的論理和部131において、すべてゼロである入力差分(ΔXi−1=(00,00,00,00,00,00,00,00)と排他的論理和(XOR)演算が実行され、演算結果が、次のラウンド(i+1)への入力差分ΔXi+1となる。
iラウンドのF関数出力差分としてのΔYi=(98,c4,b4,d3,ac,72,0f,32)と、すべてゼロである入力差分ΔXi−1=(00,00,00,00,00,00,00,00)との排他的論理和(XOR)結果は、ΔYiであるので、次のラウンド(i+1)への入力差分ΔXi+1=ΔYi=(98,c4,b4,d3,ac,72,0f,32)となる。
(状態3)
i+1ラウンドのF関数からの出力差分ΔYi+1が、iラウンドでのActive S−boxの位置にのみ非ゼロ値をもつ。このデータ状態は、多数の差分入力データを設定することで、このようなデータ状態を得ることができるということである。
すなわち、ΔYi+1=(ad,00,00,00,00,00,00,00)であり、iラウンドと同様、非ゼロの差分値(図4の例では差分:34)を持つS−boxの位置(第1Sボックス(S1))にのみ非ゼロ値をもつ。なお、明らかにad≠00である。
(状態4)
i+2ラウンドのアクティブSボックス(Active S−box)(S1)の出力差分がiラウンドでのアクティブSボックス(Active S−box)(S1)の出力差分と一致した場合、すなわち、図4に示すようにi+2ラウンドのアクティブSボックス((S1)の出力差分がb7となり、iラウンドでのアクティブSボックス(S1)の出力差分(b7)と一致する。このデータ状態は、多数の差分入力データを設定することで、このようなデータ状態を得ることができるということである。
このデータ状態が発生すると、i+2ラウンドのF関数の出力差分ΔYi+2=(98,c4,b4,d3,ac,72,0f,32)が、2つ前のラウンドであるiラウンドのF関数の出力差分ΔYi=(98,c4,b4,d3,ac,72,0f,32)と一致することになる。
この結果、排他的論理和部133では、
ΔXi+1=ΔYi=(98,c4,b4,d3,ac,72,0f,32)と、
ΔYi+2=(98,c4,b4,d3,ac,72,0f,32)と、
の同一の値同士の排他的論理和演算が実行されることになり、排他的論理和演算結果としてオール0の値を出力する。
その結果、次の段(ラウンドi+3)への出力差分の前段(i+2ラウンド)からの左の入力差分ΔXi+3=(00,00,00,00,00,00,00,00)となる。
このラウンドi+3への左入力ΔXi+3=(00,00,00,00,00,00,00,00)は、ラウンドiへの左入力ΔXi−1=(00,00,00,00,00,00,00,00)と同様オールゼロであり、ラウンドi+3以降のラウンドにおいても、ラウンドi〜i+2と同様の処理が繰り返される可能性がある。
この結果、ラウンド数の伸びに対してアクティブSボックスの数が増大せず、差分攻撃に対する強度がそれほど伸びないという問題を発生させる。
共通鍵ブロック暗号において、差分攻撃に対する強度指標のひとつとして、暗号化関数全体でのアクティブSボックスの最少数が知られている。アクティブSボックス数の最少数が大きいほど差分攻撃に対する耐性が高いと判断される。
前述したように、差分解析(差分攻撃)においては、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数設定してこの対応を解析することにより各ラウンド関数における適用鍵を解析する手法であり、この差分解析において、アクティブSボックスの数を少なくできれば、解析が容易となり、解析プロセス数を削減できる。
上述の図4を参照した例では、第1のSボックス(S1)のみがアクティブSボックスであるパターンの発生状態を提示したが、その他のSボックス(S2〜S8)についても、差分解析の入力データの設定によって、各SボックスのみをアクティブSボックスとした設定が可能であり、このような差分解析プロセスを実行することにより、各Sボックスの非線形変換処理の解析、さらにF関数に対して入力されるラウンド鍵の解析が可能となる。
このような差分解析に対する耐性を向上させるためには、アクティブSボックスの数が常に多い状態を維持すること、すなわち、アクティブSボックスの最少数が多いことが必要である。
図4を参照して説明した例において、右から左へ入力を行なうF関数、すなわち、第iラウンドと第i+2ラウンドのみをアクティブSボックス算出処理対象ラウンドとしてみた場合、アクティブSボックス数はわずか2であり、左から右へ入力を行なうF関数、すなわち、第i+1ラウンドではアクティブSボックス数が8であるものの、同時差分キャンセルにより第i+3ラウンドでのアクティブSボックス数が0となってしまうため、差分解析による各Sボックスの非線形変換処理の解析処理が容易となる。
図4に示す共通鍵ブロック暗号アルゴリズムは、各ラウンドにおける線形変換部において適用する線形変換行列が等しいものであり、この構成に起因して、特に右から左へ入力を行うF関数におけるわずか2つのアクティブSボックスにより同時差分キャンセルの発生可能性を引き起こしている。従って、ラウンド数の伸びに対してアクティブSボックスの最少数が十分に増大せず、差分攻撃に対する強度がそれほど伸びないという問題がある。
次に、同様に、同じ線形変換行列をすべての段(ラウンド)のF関数に用いる構成において、5ラウンドにまたがる同時差分キャンセルの発生メカニズムについて、図6を参照して説明する。
図6はm=8,n=8の128bitブロック暗号における5段の同時差分キャンセルの様子を説明する図である。ただし、図中では64bitのデータをバイト単位で区切ってベクトルとして表現し、それぞれの要素を16進数で表記するものとする。
5段構成を持つF関数での同時差分キャンセルは、例えば以下のデータ状態1〜7の設定メカニズムに基づいて発生する。以下に説明するメカニズムの発生するデータ状態は、多数の差分入力データを設定することで発生させることができるデータ状態であり、いわゆる差分解析における鍵(ラウンド鍵)の解析において発生し得る。
(状態1)
iラウンドへの入力差分の左半分は、すべてゼロである入力差分(ΔXi−1=(00,00,00,00,00,00,00,00))であり、右半分の入力差分がただひとつのS−boxへの入力を除いてゼロである入力差分(ΔXi=(34,00,00,00,00,00,00,00))であるとする。このデータ状態は、多数の差分入力データを設定することで、iラウンドにおいて、このようなデータ状態を得ることができるということである。
なお、ΔXi=(34,00,00,00,00,00,00,00)の8つの各要素は、F関数中に構成されるm個(m=8)のSボックス各々に対する入力差分に対応する。(34)が第1Sボックス(図6中の(S1))に入力され、(00)が、第2〜8Sボックスに対する入力差分である。
なお前述したように、ゼロ(00)の入力差分を持つSボックスの出力差分はゼロ(00)であり、差分データに関する限り、ゼロ(00)の入力差分を持つSボックスは、何の作用も行なっていないものであり、アクティブでないすなわち非アクティブSボックスと呼ばれる。一方、非ゼロの入力差分(図6の例では差分:34)を持つSボックス(S1)のみが、非ゼロの入力差分に対応した非線形変換結果を出力差分として発生させるので、アクティブSボックス(Active S−box)である。
図6の例では、非ゼロの入力差分(34)を入力する1つのアクティブSボックス(S1)の出力差分(b7)を発生させており、その他の非アクティブSボックスS2〜S8はゼロの入力差分(00)に基づいて出力差分(00)を発生させ、線形変換部の差分入力としている。
(状態2)
iラウンドへの非ゼロの入力差分(図4の例では差分:34)を持つSボックス(以下、アクティブSボックス(Active S−box)と呼ぶ)からの出力差分は線形変換層で拡散されたのちF関数から出力(出力値=ΔYi)され、そのまま次のラウンドへの入力差分ΔXi+1となる。
図6の例において、各ラウンドに共通の例えば図5に示すある特定の正方行列125による線形変換が実行されiラウンドのF関数出力差分としてのΔYi=(98,c4,b4,d3,ac,72,0f,32)を出力する。
iラウンドのF関数出力差分としてのΔYi=(98,c4,b4,d3,ac,72,0f,32)は、図6に示す排他的論理和部141において、すべてゼロである入力差分(ΔXi−1=(00,00,00,00,00,00,00,00)と排他的論理和(XOR)演算が実行され、演算結果が、次のラウンド(i+1)への入力差分ΔXi+1となる。
iラウンドのF関数出力差分としてのΔYi=(98,c4,b4,d3,ac,72,0f,32)と、すべてゼロである入力差分(ΔXi−1=(00,00,00,00,00,00,00,00)との排他的論理和(XOR)結果は、ΔYiであるので、次のラウンド(i+1)への入力差分ΔXi+1=ΔYi=(98,c4,b4,d3,ac,72,0f,32)となる。
(状態3)
i+1ラウンドのF関数からの出力差分ΔYi+1が、iラウンドでのActive S−boxの位置にのみ非ゼロ値をもつ。このデータ状態は、多数の差分入力データを設定することで、このようなデータ状態を得ることができるということである。
すなわち、ΔYi+1=(34,00,00,00,00,00,00,00)であり、iラウンドと同様、非ゼロの差分値(図6の例では差分:34)を持つS−boxの位置(第1Sボックス(S1))にのみ非ゼロ値をもつ。
(状態4)
i+2ラウンドのF関数に対する入力は、ΔXi=(34,00,00,00,00,00,00,00)と、ΔYi+1=(34,00,00,00,00,00,00,00)との排他的論理和部142における排他的論理和結果、すなわち、同一データ同士の排他的論理和であり、オールゼロの入力、ΔXi+2=(00,00,00,00,00,00,00,00)となり、その結果、i+2ラウンドのF関数からの出力差分も、オールゼロの出力差分、ΔYi+2=(00,00,00,00,00,00,00,00)となる。
(状態5)
i+3ラウンドのF関数に対する入力は、ΔXi+1=(98,c4,b4,d3,ac,72,0f,32)と、オールゼロのi+2ラウンドのF関数出力差分ΔYi+2=(00,00,00,00,00,00,00,00)との排他的論理和部143における排他的論理和結果であり、i+3ラウンドのF関数に対する入力ΔXi+3=ΔXi+1=(98,c4,b4,d3,ac,72,0f,32)となる。
(状態6)
i+3ラウンドのF関数出力差分が、ΔYi+3=(43,00,00,00,00,00,00,00)となり、オールゼロのΔXi+2=(00,00,00,00,00,00,00,00)との排他的論理和部144における排他的論理和の結果としてのΔXi+4=ΔYi+3=(43,00,00,00,00,00,00,00)がi+4ラウンドのF関数入力差分となる。
(状態7)
i+4ラウンドのアクティブSボックス(Active S−box)(S1)の出力差分がiラウンドでのアクティブSボックス(Active S−box)(S1)の出力差分と一致した場合、すなわち、図6に示すようにi+4ラウンドのアクティブSボックス((S1)の出力差分がb7となり、iラウンドでのアクティブSボックス(S1)の出力差分(b7)と一致する。このデータ状態は、多数の差分入力データを設定することで、このようなデータ状態を得ることができるということである。
このデータ状態が発生すると、i+4ラウンドのF関数の出力差分ΔYi+4=(98,c4,b4,d3,ac,72,0f,32)が、2つ前のラウンドであるi+2ラウンドの排他的論理和部143の出力差分ΔXi+3=(98,c4,b4,d3,ac,72,0f,32)と一致することになる。
この結果、排他的論理和部145では、
ΔXi+3=(98,c4,b4,d3,ac,72,0f,32)と、
ΔYi+4=(98,c4,b4,d3,ac,72,0f,32)と、
の同一の値同士の排他的論理和演算が実行されることになり、排他的論理和演算結果としてオール0の値を出力する。
その結果、次の段(ラウンドi+5)への入力差分は、ΔXi+5=(00,00,00,00,00,00,00,00)として設定される。
このラウンドi+5への左入力ΔXi+5=(00,00,00,00,00,00,00,00)は、ラウンドiへの左入力ΔXi−1=(00,00,00,00,00,00,00,00)と同様オールゼロであり、ラウンドi+5以降のラウンドにおいても、ラウンドi〜i+4と同様の処理が繰り返される可能性がある。
この結果、ラウンド数の伸びに対してアクティブSボックスの数が増大せず、差分攻撃に対する強度がそれほど伸びないという問題を発生させる。
前述したように、差分解析(差分攻撃)においては、ある差分を持つ入力データ(平文)とその出力データ(暗号文)を多数設定してこの対応を解析することにより各ラウンド関数における適用鍵を解析する手法であり、この差分解析において、アクティブSボックスの数を少なくできれば、解析が容易となり、解析プロセス数を削減できる。
上述の図6を参照した例において、右から左へ入力を行なうF関数、すなわち、第iラウンドと第i+2ラウンド、第i+4ラウンドのみをアクティブSボックス算出処理対象ラウンドとしてみた場合、アクティブSボックス数は、第iラウンド=1、第i+2ラウンド=0、第i+4ラウンド=1の合計わずか2であり、左から右へ入力を行なうF関数、すなわち第i+1ラウンドおよび第i+3ラウンドではアクティブSボックス数が8であるものの、同時差分キャンセルにより第i+5ラウンドでのアクティブSボックス数が0となってしまうため、差分解析による各Sボックスの非線形変換処理の解析、および、F関数に対する入力ラウンド鍵の解析処理が比較的、容易となる。
図6を参照した例では、第1のSボックス(S1)のみがアクティブSボックスであるパターンの発生状態を提示したが、その他のSボックス(S2〜S8)についても、差分解析の入力データの設定によって、各SボックスのみをアクティブSボックスとした設定が可能であり、このような差分解析プロセスを実行することにより、各Sボックスの非線形変換処理の解析、さらにF関数に対して入力されるラウンド鍵の解析が可能となる。
図4および図6を参照して、3および5ラウンドの場合の同時差分キャンセルの発生例を説明したが、任意のラウンド数に一般化して同時差分キャンセルを定義すると以下のように定義することができる。図7を参照して、任意のラウンド数における同時差分キャンセルの定義について説明する。なお、図7は、フェイステル(Feistel)構造の共通鍵ブロック暗号を実行するフェイステル(Feistel)構造の1つおきのラウンド(i,i+2,i+4,・・・,i+2j)を示している。
「定義」
フェイステル(Feistel)構造のラウンドiでの入力差分の半分(PLまたはPR)が0(図7において、ΔXi=(00,00,00,00,00,00,00,00))であり、そこにi+2jラウンド(j=0,1,2,...)のF関数の出力差分が排他的論理和部で演算されていく過程において、あるラウンドi+2kにおいて、排他的論理和の結果が0(図7において、ΔXi+2j+1=(00,00,00,00,00,00,00,00))になった場合を"同時差分キャンセル"と呼ぶ。
その時、i,i+2,i+4,..,i+2kラウンドのF関数の中に存在するアクティブSボックス(Active S−box)のことを"同時差分キャンセルを発生させたアクティブSボックス"と呼ぶものとし、ベクトルAの非ゼロの要素数をハミングウェイトhw(A)と定義すると、同時差分キャンセルを発生させるアクティブSボックスの数aは、以下の式として表せる。
Figure 2005107078
前述の3ラウンド、5ラウンドでの例ではともに同時差分キャンセルを発生させたアクティブSボックス数は2、すなわちa=2である。
前述したように、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつが暗号化関数全体でのアクティブSボックスの最少数であり、アクティブSボックス数の最少数が大きいほど差分攻撃に対する耐性が高いと判断される。
しかし、DESアルゴリズムのように同じ線形変換行列をすべての段のF関数に用いる構成では、図4、図6を参照して説明したように、わずか2つのアクティブSボックスにより同時差分キャンセルが発生してしまう可能性があった。そのような性質があるためラウンド数の伸びに対してアクティブSボックスの最少数が十分に増大せず、差分攻撃に対する強度がそれほど伸びないという問題があった。
[2.本発明に基づく暗号処理アルゴリズム]
以下、少ないアクティブSボックスに基づく同時差分キャンセルが起こらない、または、起こりにくい構造を実現して、差分攻撃に対する耐性を向上させた、すなわち、鍵解析の困難性を高め、安全性を向上させた本発明に係る共通鍵ブロック暗号処理アルゴリズムについて説明する。
本発明に係る暗号処理アルゴリズムの1つの特徴は、従来のDESアルゴリズムの如く各ラウンドのF関数に構成される線形変換部に共通の処理(変換行列)を適用した構成とせず、複数の異なるMDS(Maximum Distance Separable)行列を設定した構成としたことである。具体的には、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行する構成を持つ。
本発明に係る暗号処理アルゴリズムは、MDS(Maximum Distance Separable)行列の性質を利用し、少ないアクティブSボックスに基づく同時差分キャンセルが起こらない、または起こりにくい構造を実現し、アクティブSボックスの最小数を増大させ、差分攻撃に対してより強い共通鍵ブロック暗号処理である。
本発明の暗号処理アルゴリズムは、図1、2を参照して説明したSPN型のF関数を有するFeistel構造と呼ばれる代表的な共通鍵ブロック暗号の構造、すなわち、非線形変換部および線形変換部を有するSPN型のF関数の複数ラウンドに渡る単純な繰り返しにより、平文を暗号文に変換する、あるいは暗号文を平文変換する構造を適用している。
例えば、平文の長さを2mnビット(ただし、m,nは共に整数)として、2mnビットの平文を、mnビットの2つのデータPL(Plain-Left),PR(Plain-Right)に分割し、これを入力値として、各ラウンドにおいて、F関数を実行させるものであり、F関数は、図2を参照して説明したように、Sボックスからなる非線形変換部と、線形変換部を接続したSPN型を持つF関数である。
本発明の構成においては、F関数中の線形変換部において適用する線形変換処理のための行列として、複数の異なるMDS(Maximum Distance Separable)行列から選択された行列を各ラウンドのF関数の線形変換部において適用する行列として設定する。具体的には、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用する。
MDS行列について説明する。MDS行列とは以下の(a),(b)の性質を満たす行列をいう。
(a)正方行列である
(b)行列に含まれるすべての部分行列(submatrix)の行列式(determinant)が0でない、すなわち、det(submatrix)≠0
上記(a),(b)の条件を満足する行列をMDS行列と呼ぶ。
共通鍵ブロック暗号の各ラウンドで実行するF関数に対する入出力ビット長がm×n(m,n:整数)ビットであり、F関数内に構成される非線形変換部がnビットの入出力を持つm個のSボックスにより構成され、線形変換部がn次の既約多項式で定義される2の拡大体GF(2)上の元を要素として持つm次の正方行列に基づく線形変換処理を実行する場合の、MDS行列の一例を図8に示す。図8に示すMDS行列の例は、n=8,m=8のMDS行列の例である。
上記(a),(b)を満足するMDS行列は、ベクトルAの非ゼロの要素数をハミングウェイトhw(A)とし、Mをm次のMDS行列とし、xをMDS行列Mへの入力ベクトルとした場合、以下の不等式(式1)を満たすことになる。
hw(x)+hw(Mx)≧m+1‥‥‥‥‥‥(式1)
上記式(式1)は、MDS行列(M)によって線形変換される入力データxの非ゼロの要素数hw(x)と、MDS行列(M)によって線形変換された出力データMxの非ゼロの要素数hw(Mx)の総数が、MDS行列の次数mより大となるということを意味している。
なお、MDS行列という名はMDS−code(Maximum Distance Separable Code)の生成行列の標準形の右半分が上記条件を満足していることから名づけているものである。
1つの行列をすべてのF関数に組み込むという従来の構成でも線形変換行列にMDS行列を用いることで、MDS行列でない行列を用いる場合に比べてアクティブSボックス数の最少数を比較的高水準に保持することができるということは知られている。
本発明では、各ラウンドのF関数にはMDS行列の条件を満たす行列を利用し、さらにラウンドごとに異なる行列を設定する方法を提案する。具体的には、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用する。
以下に、段数(ラウンド数)が2r(rは整数)のFeistel型共通鍵ブロック暗号において、差分攻撃に対する耐性をより高めた複数の構成例について説明する。
なお、以下の説明において、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成のj段目のF関数における線形変換部で適用する線形変換行列をMLTjとして表すものとする。
(線形変換行列MLTj設定例1)
線形変換行列MLTj設定例1は、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定するものである。
本設定例を適用した構成例を図9に示す。図9は、段数(ラウンド数)が2r=12、すなわちr=6のFeistel型共通鍵ブロック暗号処理構成とした場合の、各ラウンドのF関数部の線形変換部に設定するMDS行列(L1,L2・・・L6)を示している。図中では明示していないが、各ラウンドには鍵スケジューリング部から入力される副鍵Kiが入力されているものとする。
図9の構成は、2mnビットの平文を、mnビットの2つのデータPL(Plain-Left),PR(Plain-Right)に分割し、これを入力値として、各ラウンドにおいて、F関数を実行させる構成であり、第1ラウンドのF関数301およびその他のラウンドのF関数も、すべて図2を参照して説明したように、Sボックスからなる非線形変換部と、線形変換部を接続したSPN型を持つF関数である。
図9において、各F関数内に示す記号Lnは、MDS行列302を示す。すなわちL1,L2・・・L6は、それぞれ異なる6種類のMDS行列を示し、各F関数の線形変部において線形変換処理に適用するMDS行列を示している。
線形変換行列MLTj設定例1の処理シーケンスについて、図10を参照して説明する。
[ステップS11]
r個のGF(2)上のm次MDS行列L1,L2,...,Lrを生成する。
r個のGF(2)上のm次MDS行列L1,L2,...,Lrの生成処理シーケンス(MDS行列生成手法1)について、図11を参照して説明する。
(MDS行列生成手法1)
[ステップS101]
入力:必要なMDSの個数x,拡大次数:n,行列のサイズ:mとして、
GF(2)上で、x個のm次MDS行列L1,L2,...,Lxをランダムに生成する。
[ステップS102]
x個のm次MDS行列L1,L2,...,Lxに含まれるxm個の列の任意のm個を取り出したときに、線形独立になっているかどうかをチェックする。チェックに通過したらステップS103に進む、そうでない場合はステップS101にもどる。
[ステップS103]
x個のm次MDS行列L1,L2,...,Lxを、ラウンド数2xのFeistel型共通鍵ブロック暗号に適用するMDS行列として出力
以上のプロセスによって、x個のm次MDS行列L1,L2,...,Lxが生成される。なお、本例ではx=rである。
図10に戻り、線形変換行列MLTj設定例1の処理シーケンスについての説明を続ける。ステップS11において、図11を参照して説明したMDS行列の生成処理によってr個のGF(2)上のm次MDS行列L1,L2,...,Lrが生成されると、次に、以下のMDS行列設定処理を実行する。
[ステップS12]
2i−1(1≦i≦r)段目の線形変換行列MLT2i−1にLを設定する。
[ステップS13]
2i(1≦i≦r)段目の線形変換行列にMLT2iにMLT2r−2i+1を設定する。
例えば、図9に示す12段(r=6)の場合は、
MLT1=L1, MLT2=L6
MLT3=L2, MLT4=L5
MLT5=L3, MLT6=L4
MLT7=L4, MLT8=L3
MLT9=L5, MLT10=L2
MLT11=L6, MLT12=L1
の設定となる。
すなわち、線形変換行列MLTj設定例1は、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定するものである。また、偶数ラウンドのMDS行列と奇数ラウンドのMDS行列を互いに逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処理を除き同一であることが保証されている。
本構成により、
(a)各F関数の線形変換行列はMDSであること、
(b)暗号化関数内の奇数ラウンド内に含まれる線形変換行列の任意のm個の列ベクトルは独立であること、
(c)偶数ラウンド内に含まれる線形変換行列の任意のm個の列ベクトルは独立であること、
これら(a)〜(c)が保証されるため、m個以下のアクティブSボックスの寄与による同時差分キャンセルは発生しないことが保証される。よって暗号化関数全体のアクティブSボックス数の最小値が増大する。
このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となり、結果として、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な安全性の高い暗号処理が実現される。
(線形変換行列MLTj設定例2)
線形変換行列MLTj設定例2は、線形変換行列MLTj設定例1と同様、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定するものであり、結果としては、線形変換行列MLTj設定例1と同様、図9に示すようなMDS行列(L1,L2・・・L6)設定構成となる。
本設定例2は、図10を参照して説明した線形変換行列MLTj設定例1の実行シーケンス中、ステップS11のMDS行列の生成手法として、設定例1とは異なる手法を適用した。
線形変換行列MLTj設定例1のMDS行列の生成手法は、先に説明したように、図11の処理シーケンスに従った手法であったが、線形変換行列MLTj設定例2においては、図12に示す従った処理シーケンスに従った手法(MDS行列生成手法2)を適用する。MDS行列生成手法2について、図12を参照して説明する。
(MDS行列生成手法2)
[ステップS201]
入力:必要なMDSの個数x,拡大次数:n,行列のサイズ:mとして、
GF(2)上で、x個のm次MDS行列L1,L2,...,Lxをランダムに生成する。
[ステップS202]
x個のm次MDS行列L1,L2,...,Lxに含まれるxm個の列の任意のm個を取り出したときに、MDS行列になっているかどうかをチェックする。チェックに通過したらステップS203に進む、そうでない場合はステップS201にもどる。
なお、MDS行列とは、前述したように以下の性質を満たす行列をいう。
(a)正方行列である
(b)行列に含まれるすべての部分行列(submatrix)の行列式(determinant)が0でない、すなわち、det(submatrix)≠0
[ステップS203]
x個のm次MDS行列L1,L2,...,Lxを、ラウンド数2xのFeistel型共通鍵ブロック暗号に適用するMDS行列として出力
以上のプロセスによって、x個のm次MDS行列L1,L2,...,Lxが生成される。なお、本例ではx=rである。
線形変換行列MLTj設定例1におけるMDS行列生成処理においては、図11の処理シーケンスにおいて説明したように、ステップS102において、x個のm次MDS行列L1,L2,...,Lxに含まれるxm個の列の任意のm個を取り出したときの線形独立性を判定したが、この線形変換行列MLTj設定例2におけるMDS行列生成処理においては、x個のm次MDS行列L1,L2,...,Lxに含まれるxm個の列の任意のm個を取り出したときMDS行列になっているかどうかをチェックする。すなわち、より厳しいチェックが実行されることになる。
この図12に示す処理シーケンスに従ったMDS行列生成処理によって生成されたx個のm次MDS行列L1,L2,...,Lxが、先に説明した線形変換行列MLTj設定例1におけるMDS行列設定例と同様、
2i−1(1≦i≦r)段目の線形変換行列MLT2i−1にLを設定、
2i(1≦i≦r)段目の線形変換行列にMLT2iにMLT2r−2i+1を設定
して、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成が構築される。
結果としては、図9に示すように、12段(r=6)の場合は、
MLT1=L1, MLT2=L6
MLT3=L2, MLT4=L5
MLT5=L3, MLT6=L4
MLT7=L4, MLT8=L3
MLT9=L5, MLT10=L2
MLT11=L6, MLT12=L1
の設定となる。
すなわち、線形変換行列MLTj設定例2も、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定するものである。ただし、線形変換行列MLTj設定例1と異なり、偶数段あるいは奇数段に設定される各MDS行列は、x個のm次MDS行列L1,L2,...,Lxに含まれるxm個の列の任意のm個を取り出したときMDS行列になっていることが保証されたものである。また、偶数ラウンドのMDS行列と奇数ラウンドのMDS行列を互いに逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処理を除き同一であることが保証されている。
本構成により、
(a)各F関数の線形変換行列はMDSであること、
(b)暗号化関数内の奇数ラウンド内に含まれる線形変換行列の任意のm個の列ベクトルはMDS行列であること、
(c)偶数ラウンド内に含まれる線形変換行列の任意のm個の列ベクトルはMDS行列であること、
これら(a)〜(c)が保証されるため、m個以下のアクティブSボックスの寄与による同時差分キャンセルは発生しないことが保証される。
さらに、
(d)MDSの性質から、a個(a≦m)のアクティブSボックスの寄与によって得られる差分値における非ゼロの要素数はm+1−a個以上になることが保証される。よって暗号化関数全体のアクティブSボックス数の最小値が増大する。
このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となり、結果として、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な安全性の高い暗号処理が実現される。
(線形変換行列MLTj設定例3)
線形変換行列MLTj設定例3は、線形変換行列MLTj設定例1,2と同様、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定するものであり結果としては、線形変換行列MLTj設定例1と同様、図9に示すようなMDS行列(L1,L2・・・L6)設定構成となる。
本設定例2は、図10を参照して説明した線形変換行列MLTj設定例1の実行シーケンス中、ステップS11のMDS行列の生成手法として、設定例1,2とは異なる手法を適用した。
線形変換行列MLTj設定例3においては、図13に示す従った処理シーケンスに従った手法(MDS行列生成手法3)を適用する。MDS行列生成手法3について、図13を参照して説明する。
(MDS行列生成手法3)
[ステップS301]
入力:必要なMDSの個数x,拡大次数:n,行列のサイズ:mとして、
GF(2)上で、1個のxm次MDS行列Mを生成する。
[ステップS302]
1個のxm次MDS行列Mからm本の行を任意に選択抽出し、m行,xm列の行列M'を構成する。
[ステップS303]
m行,xm列の行列M'に含まれるxm本の列ベクトルを重複することなくm本の列ベクトルからなるx個のグループに任意に分割し、それぞれのグループに含まれる列ベクトルからm次の正方行列L1,L2,...,Lxを、ラウンド数2xのFeistel型共通鍵ブロック暗号に適用するMDS行列として出力
以上のプロセスによって、x個のm次MDS行列L1,L2,...,Lxが生成される。なお、本例ではx=rである。
MDS行列生成手法3について、図14を参照して、より具体的に説明する。
[ステップS301]
GF(2)上で、1個のxm次MDS行列Mを生成する。図14に示すように、xm×xmのMDS行列Mを生成する。なお、このステップS301において生成する行列Mの次数はxm次より大きいものでもよい。
[ステップS302]
図14に示すように、xm次MDS行列Mからm本の行を任意に選択抽出し、m行,xm列の行列M'を構成する。なお、図に示す例では、連続するm本の行を選択抽出した例として示してあるが、m次MDS行列Mを構成する任意の離間した行をm本選択抽出して、m行,xm列の行列M'を構成してもよい。
[ステップS303]
m行,xm列の行列M'に含まれるxm本の列ベクトルを重複することなくm本の列ベクトルからなるx個のグループに任意に分割し、それぞれのグループに含まれる列ベクトルからm次の正方行列L1,L2,...,Lxを生成する。
図13、図14を参照して説明した処理シーケンスに従ったMDS行列生成処理によって生成されたx個のm次MDS行列L1,L2,...,Lxが、先に説明した線形変換行列MLTj設定例1、2におけるMDS行列設定例と同様、
2i−1(1≦i≦r)段目の線形変換行列MLT2i−1にLを設定、
2i(1≦i≦r)段目の線形変換行列にMLT2iにMLT2r−2i+1を設定
して、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成が構築される。
結果としては、図9に示すように、12段(r=6)の場合は、
MLT1=L1, MLT2=L6
MLT3=L2, MLT4=L5
MLT5=L3, MLT6=L4
MLT7=L4, MLT8=L3
MLT9=L5, MLT10=L2
MLT11=L6, MLT12=L1
の設定となる。
すなわち、線形変換行列MLTj設定例3も、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定するものである。また、偶数ラウンドのMDS行列と奇数ラウンドのMDS行列を互いに逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処理を除き同一であることが保証されている。
本構成により、
(a)各F関数の線形変換行列はMDSであること、
(b)暗号化関数内の奇数ラウンド内に含まれる線形変換行列の任意のm個の列ベクトルは独立であること、
(c)偶数ラウンド内に含まれる線形変換行列の任意のm個の列ベクトルは独立であること、
これら(a)〜(c)が保証されるため、m個以下のアクティブSボックスの寄与による同時差分キャンセルは発生しないことが保証される。
さらに、
(d)MDSの性質から、a個(a≦m)のアクティブSボックスの寄与によって得られる差分値における非ゼロの要素数はm+1−a個以上になることが保証される。よって暗号化関数全体のアクティブSボックス数の最小値が増大する。
線形変換行列MLTj設定例3が特に効果を発揮するのは、m,r,が大きくなり、前述した処理例1,2の行列決定処理(方式1,2)にかかる時間的コストが莫大となり、現実的な時間内に行列を決定することが困難である場合である。そのような場合でも本処理例3のMDS行列生成手法ならば比較的短時間での行列生成処理が可能となる。
これは、MDS行列生成手法3においては、大きなm,rに対しても現実的な時間で十分に処理可能な方式、例えばリードソロモン(Reed−Solomon)符号の生成行列の生成法を適用することが可能となるからである。
この線形変換行列MLTj設定例3においても、上述したように、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となり、結果として、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な安全性の高い暗号処理が実現される。
(線形変換行列MLTj設定例4)
上述した線形変換行列MLTj設定例1〜3においては、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をすべて異なるMDS行列として設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列もすべて異なるMDS行列として設定したものであった。以下、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個より少ないq個のMDS行列を生成して、上述した線形変換行列MLTj設定例1と同様の効果、すなわち、暗号化関数全体でのアクティブSボックスの最少数を大きくすることを実現した構成例について説明する。
本設定例を適用した構成例を図15に示す。図15は、段数(ラウンド数)が2r=12、すなわちr=6のFeistel型共通鍵ブロック暗号処理構成とした場合、q=3、すなわち、12段のラウンド数を持つFeistel型共通鍵ブロック暗号処理構成において3種類の異なるMDS行列を配置した構成例として、各ラウンドのF関数部の線形変換部に設定するMDS行列(L1,L2,L3)を示している。
図15の構成は、2mnビットの平文を、mnビットの2つのデータPL(Plain-Left),PR(Plain-Right)に分割し、これを入力値として、各ラウンドにおいて、F関数を実行させる構成であり、第1ラウンドのF関数401およびその他のラウンドのF関数も、すべて図2を参照して説明したように、Sボックスからなる非線形変換部と、線形変換部を接続したSPN型を持つF関数である。
図15の設定例はr=6,q=3であり、各F関数内に示す記号LnはMDS行列402を示している。すなわち、L1,L2,L3は、それぞれ異なる3種類のMDS行列を示し、各F関数の線形変部において線形変換処理に適用するMDS行列を示している。
本処理例によれば、上述した線形変換行列MLTj設定例1〜3において必要としていた異なるMDS行列の数を削減した簡易な構成が実現される。
線形変換行列MLTj設定例4の処理シーケンスについて、図16を参照して説明する。
[ステップS21]
ラウンド数2rの半数rに対してrより小さい数q、すなわち、
q<rとなる数qを選択する。ただし、qは2以上の整数である。
[ステップS22]
q個のGF(2)上のm次MDS行列L1,L2,...,Lqを生成する
q個のGF(2)上のm次MDS行列L1,L2,...,Lqの生成処理手法としては、MDS行列生成手法1(図11)を適用する。すなわち、GF(2)上で、q個のm次MDS行列L1,L2,...,Lqを生成し、生成したq個のm次MDS行列L1,L2,...,Lqに含まれるqm個の列の任意のm個を取り出したときの線形独立性を判定して、各ラウンドのF関数部の線形変換部に設定するq個のm次MDS行列L1,L2,...,Lqとする。
ステップS22において、MDS行列生成手法1を適用したMDS行列の生成処理によってq個のGF(2)上のm次MDS行列L1,L2,...,Lqが生成されると、次に、以下のMDS行列設定処理を実行する。
[ステップS23]
2i−1(1≦i≦r)段目の線形変換行列MLT2i−1にL(i−1modq)+1を設定する。
[ステップS24]
2i(1≦i≦r)段目の線形変換行列にMLT2にMLT2r−2i+1を設定する。
例えば、図15に示す構成例、すなわち、12段(r=6)でありq=3とした場合は、
MLT1=L1, MLT2=L3
MLT3=L2, MLT4=L2
MLT5=L3, MLT6=L1
MLT7=L1, MLT8=L3
MLT9=L2, MLT10=L2
MLT11=L3, MLT12=L1
の設定となる。
すなわち、線形変換行列MLTj設定例4においては、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、rより少ないq個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をq個の異なるMDS行列を順次設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列についても、q個の異なるMDS行列を順次設定する構成としたものである。また、偶数ラウンドのMDS行列と奇数ラウンドのMDS行列を互いに逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処理を除き同一であることが保証されている。
本構成により、
(a)各F関数の線形変換行列はMDSであること、
が保証され、さらに、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続するq個のF関数に含まれる線形変換行列の任意のm個の列ベクトルが独立であること、
(c)偶数ラウンド内の少なくとも連続するq個のF関数に含まれる線形変換行列の任意のm個の列ベクトルが独立であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つFeistel型共通鍵ブロック暗号処理構成において、連続する2q−1ラウンドにおいて、前述した線形変換行列MLTj設定例1に対応する効果が得られる。
すなわち、連続する2q−1ラウンドにおいて、m個以下のアクティブSボックスの寄与による同時差分キャンセルは発生しないことが保証される。よって暗号化関数全体のアクティブSボックス数の最小値が増大する。
このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となり、結果として、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な安全性の高い暗号処理が実現される。
さらに、本処理例においては、暗号化関数に必要な行列の種類をq種類に減少させることができるためソフトウェアのコードサイズ、ハードウェアのゲート規模を減少させる効果がある。
(線形変換行列MLTj設定例5)
線形変換行列MLTj設定例5は、上述した線形変換行列MLTj設定例4と同様、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個より少ないq個のMDS行列を生成して、上述した線形変換行列MLTj設定例2と同様の効果、すなわち、暗号化関数全体でのアクティブSボックスの最少数を大きくすることを実現した構成例について説明する。
本設定例を適用した構成例は、設定例4と同様であり、例えばr=6,q=3の場合、図15に示すMDS行列(L1,L2,L3)設定となる。
本処理例は、図16を参照して説明した線形変換行列MLTj設定例4の実行シーケンス中、ステップS21のMDS行列の生成手法として、先に、図12を参照して説明したMDS行列生成手法2を適用したものである。
すなわち、設定例4では、MDS行列の生成において、q個のm次MDS行列L1,L2,...,Lqに含まれるqm個の列の任意のm個を取り出したときの線形独立性を判定したが、この線形変換行列MLTj設定例5では、q個のm次MDS行列L1,L2,...,Lqに含まれるqm個の列の任意のm個を取り出したときMDS行列になっているかどうかをチェックする。すなわち、より厳しいチェックが実行して、q個のm次MDS行列L1,L2,...,Lqを生成する。
図12に示す処理シーケンスに従ったMDS行列生成処理によって生成されたq個のm次MDS行列L1,L2,...,Lqが、先に説明した線形変換行列MLTj設定例4におけるMDS行列設定例と同様の設定処理により設定される。すなわち、
2i−1(1≦i≦r)段目の線形変換行列MLT2i−1にL(i−1modq)+1を設定し、
2i(1≦i≦r)段目の線形変換行列にMLT2iにMLT2r−2i+1を設定する。
この設定処理の結果として、例えば、図15に示す構成例、すなわち、12段(r=6)でありq=3とした場合は、
MLT1=L1, MLT2=L3
MLT3=L2, MLT4=L2
MLT5=L3, MLT6=L1
MLT7=L1, MLT8=L3
MLT9=L2, MLT10=L2
MLT11=L3, MLT12=L1
の設定となる。
すなわち、線形変換行列MLTj設定例5においても、線形変換行列MLTj設定例4と同様、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、rより少ないq個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をq個の異なるMDS行列を順次設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列についても、q個の異なるMDS行列を順次設定する構成としている。また、偶数ラウンドのMDS行列と奇数ラウンドのMDS行列を互いに逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処理を除き同一であることが保証されている。
本構成により、
(a)各F関数の線形変換行列はMDSであること、
が保証され、さらに、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続するq個のF関数に含まれる線形変換行列の任意のm個の列ベクトルがMDS行列であること、
(c)偶数ラウンド内の少なくとも連続するq個のF関数に含まれる線形変換行列の任意のm個の列ベクトルがMDS行列であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つFeistel型共通鍵ブロック暗号処理構成において、連続する2q−1ラウンドにおいて、前述した線形変換行列MLTj設定例2に対応する効果が得られる。
すなわち、連続する2q−1ラウンドにおいて、m個以下のアクティブSボックスの寄与による同時差分キャンセルは発生しないことが保証され、さらに、
(d)MDSの性質から、連続する2q−1ラウンドにおいて、a個(a≦m)のアクティブSボックスの寄与によって得られる差分値における非ゼロの要素数はm+1−a個以上になることが保証される。よって暗号化関数全体のアクティブSボックス数の最小値が増大する。
このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となり、結果として、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な安全性の高い暗号処理が実現される。
さらに、本処理例においては、暗号化関数に必要な行列の種類をq種類に減少させることができるためソフトウェアのコードサイズ、ハードウェアのゲート規模を減少させる効果がある。
(線形変換行列MLTj設定例6)
線形変換行列MLTj設定例6は、上述した線形変換行列MLTj設定例4、5と同様、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、r個より少ないq個のMDS行列を生成して、上述した線形変換行列MLTj設定例3と同様の効果、すなわち、暗号化関数全体でのアクティブSボックスの最少数を大きくすることを実現した構成例について説明する。
本設定例を適用した構成例は、設定例4、5と同様であり、例えばr=6,q=3の場合、図15に示すMDS行列(L1,L2,L3)設定となる。
本処理例は、図16を参照して説明した線形変換行列MLTj設定例4の実行シーケンス中、ステップS21のMDS行列の生成手法として、先に、図13、図14を参照して説明したMDS行列生成手法3を適用したものである。
すなわち、GF(2)上で、1個のqm次MDS行列Mを生成し、1個のqm次MDS行列Mからm本の行を任意に選択抽出し、m行,qm列の行列M'を構成し、その後、m行,qm列の行列M'に含まれるqm本の列ベクトルを重複することなくm本の列ベクトルからなるq個のグループに任意に分割し、それぞれのグループに含まれる列ベクトルからm次の正方行列L1,L2,...,Lqを、Feistel型共通鍵ブロック暗号に適用するMDS行列として出力する。
図13、図14に示す処理シーケンスに従ったMDS行列生成処理によって生成されたq個のm次MDS行列L1,L2,...,Lqが、先に説明した線形変換行列MLTj設定例4におけるMDS行列設定例と同様設定される。すなわち、
2i−1(1≦i≦r)段目の線形変換行列MLT2i−1にL(i−1modq)+1を設定し、
2i(1≦i≦r)段目の線形変換行列にMLT2iにMLT2r−2i+1を設定する。
この設定処理の結果として、例えば、図15に示す構成例、すなわち、12段(r=6)でありq=3とした場合は、
MLT1=L1, MLT2=L3
MLT3=L2, MLT4=L2
MLT5=L3, MLT6=L1
MLT7=L1, MLT8=L3
MLT9=L2, MLT10=L2
MLT11=L3, MLT12=L1
の設定となる。
すなわち、線形変換行列MLTj設定例6においても、線形変換行列MLTj設定例4、5と同様、段数(ラウンド数)が2rのFeistel型共通鍵ブロック暗号処理構成に対応して、rより少ないq個のMDS行列を生成して、偶数ラウンドのF関数のr個の線形変換部において適用する正方行列をq個の異なるMDS行列を順次設定するとともに、奇数ラウンドのF関数のr個の線形変換部において適用する正方行列についても、q個の異なるMDS行列を順次設定する構成としている。また、偶数ラウンドのMDS行列と奇数ラウンドのMDS行列を互いに逆順に配置することによって、暗号化処理と復号処理は鍵の順序を入れ替える処理を除き同一であることが保証されている。
本構成により、
(a)各F関数の線形変換行列はMDSであること、
が保証され、さらに、
(b)暗号化関数内の奇数ラウンド内の少なくとも連続するq個のF関数に含まれる線形変換行列の任意のm個の列ベクトルが独立であること、
(c)偶数ラウンド内の少なくとも連続するq個のF関数に含まれる線形変換行列の任意のm個の列ベクトルが独立であること、
これら(a)〜(c)が保証されるため、複数段のラウンド数を持つFeistel型共通鍵ブロック暗号処理構成において、連続する2q−1ラウンドにおいて、前述した線形変換行列MLTj設定例3に対応する効果が得られる。
すなわち、連続する2q−1ラウンドにおいて、m個以下のアクティブSボックスの寄与による同時差分キャンセルは発生しないことが保証され、さらに、
(d)MDSの性質から、連続する2q−1ラウンドにおいて、a個(a≦m)のアクティブSボックスの寄与によって得られる差分値における非ゼロの要素数はm+1−a個以上になることが保証される。よって暗号化関数全体のアクティブSボックス数の最小値が増大する。
このように、本処理例によって、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となり、結果として、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、解析の困難性が高まることになる。従って鍵の解析の困難な安全性の高い暗号処理が実現される。
なお、線形変換行列MLTj設定例6は、先に説明した線形変換行列MLTj設定例3と同様、m,r,が大きくなり、行列生成手法1,2にかかる時間的コストが莫大となり、現実的な時間内に行列を決定することが困難である場合、比較的短時間での行列生成処理が可能となる。これは、前述したように、MDS行列生成手法3においては、大きなm,rに対しても現実的な時間で十分に処理可能な方式、例えばリードソロモン(Reed−Solomon)符号の生成行列の生成法を適用することが可能となるからである。
本処理例においては、設定例4、5と同様、暗号化関数に必要な行列の種類をq種類に減少させることができるためソフトウェアのコードサイズ、ハードウェアのゲート規模を減少させる効果がある。
最後に、暗号処理を実行する暗号処理装置としてのICモジュール600の構成例を図17に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図17に示すICモジュール600は、これら様々な機器に構成することが可能である。
図17に示すCPU(Central processing Unit)601は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ602は、CPU601が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)、CPU601の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ602は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部603は、例えば上述したFeistel型共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU601がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器604は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部605は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本発明は、非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行するFeistel型共通鍵ブロック暗号処理において、複数ラウンド各々に対応するF関数の線形変換処理を、MDS(Maximum Distance Separable)行列を適用した線形変換処理として実行するとともに、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行する構成としたので、アクティブSボックスの寄与による同時差分キャンセルの発生可能性が低減または解消することとなり、共通鍵ブロック暗号における差分攻撃に対する強度指標のひとつである暗号化関数全体でのアクティブSボックスの最少数を大きくすることが可能となる。すなわち、差分解析(差分攻撃)を行なった場合のアクティブSボックスの数が増大し、暗号鍵等の解析困難性が高まることとなり、差分解析に対する耐性が高く、安全性の高い暗号処理が実現される。従って、鍵解析困難性を高め、安全性の要求される暗号処理実行装置において適用可能である。
Feistel構造を持つ代表的な共通鍵ブロック暗号の構成を示す図である。 ラウンド関数部として設定されるF関数の構成について説明する図である。 線形変換部において、線形変換処理に適用する正方行列の例を示す図である。 m=8,n=8の128bitブロック暗号における3段の同時差分キャンセルの様子を説明する図である。 F関数の線形変換部において、正方行列による線形変換が実行されて、F関数出力差分ΔYiを生成する具体例を説明する図である。 m=8,n=8の128bitブロック暗号における5段の同時差分キャンセルの様子を説明する図である。 共通鍵ブロック暗号における任意段の同時差分キャンセルの定義を説明する図である。 MDS行列の一例を示す図である。 本発明に係る共通鍵ブロック暗号処理アルゴリズムにおける各ラウンドのF関数の線形変換行列としてのMDS行列設定例を説明する図である。 本発明に係る共通鍵ブロック暗号処理アルゴリズムにおける各ラウンドのF関数の線形変換行列としてのMDS行列設定処理シーケンスを説明するフロー図である。 各ラウンドのF関数に設定する線形変換行列であるMDS行列の生成手法1を説明するフロー図である。 各ラウンドのF関数に設定する線形変換行列であるMDS行列の生成手法2を説明するフロー図である。 各ラウンドのF関数に設定する線形変換行列であるMDS行列の生成手法3を説明するフロー図である。 各ラウンドのF関数に設定する線形変換行列であるMDS行列の生成手法3の具体的手法を説明する図である。 本発明に係る共通鍵ブロック暗号処理アルゴリズムにおける各ラウンドのF関数の線形変換行列としてのMDS行列設定例を説明する図である。 本発明に係る共通鍵ブロック暗号処理アルゴリズムにおける各ラウンドのF関数の線形変換行列としてのMDS行列設定処理シーケンスを説明するフロー図である。 本発明にかかる暗号処理を実行する暗号処理装置としてのICモジュールの構成例を示す図である。
符号の説明
101 入力データP(Plain-Left)
102 入力データP(Plain-Right)
103 ラウンド鍵
104 排他的論理和部
120 F関数
121 Sボックス(S−box)
122 線形変換部
125 正方行列
131,133 排他的論理和部
141〜145 排他的論理和部
301 F関数
302 MDS行列
401 F関数
402 MDS行列
600 ICモジュール
601 CPU(Central processing Unit)
602 メモリ
603 暗号処理部
604 乱数発生器
605 送受信部

Claims (17)

  1. Feistel型共通鍵ブロック暗号処理を実行する暗号処理装置であり、
    非線形変換部および線形変換部を有するSPN型のF関数を、複数ラウンド繰り返し実行する構成を有し、
    前記複数ラウンド各々に対応するF関数の線形変換部は、
    MDS(Maximum Distance Separable)行列を適用した線形変換処理を実行する構成であり、少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行する構成であることを特徴とする暗号処理装置。
  2. 前記F関数の線形変換部は、
    全ての偶数ラウンドおよび全ての奇数ラウンドにおいて異なるMDS行列をそれぞれ適用した線形変換処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記Feistel型共通鍵ブロック暗号処理のアルゴリズムは、ラウンド数2rの暗号処理アルゴリズムであり、
    前記F関数の線形変換部は、
    r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいてr種類の異なるMDS行列を順次適用した線形変換処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記Feistel型共通鍵ブロック暗号処理のアルゴリズムは、ラウンド数2rの暗号処理アルゴリズムであり、
    前記F関数の線形変換部は、
    r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいて2≦q<rのq種類の異なるMDS行列を順次繰り返し適用した線形変換処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  5. 前記F関数の線形変換部は、m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理を実行する構成であり、
    前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、
    前記複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列が線形独立であるMDS行列として設定したことを特徴とする請求項1に記載の暗号処理装置。
  6. 前記F関数の線形変換部は、m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理を実行する構成であり、
    前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、
    前記複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列もMDS行列となるMDS行列として設定したことを特徴とする請求項1に記載の暗号処理装置。
  7. 前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、
    前記異なるMDS行列を構成する要素を全て含むMDS行列Mから選択された行ベクトルによって構成される行列M'から抽出された列ベクトルによって構成される行列によって構成されていることを特徴とする請求項1に記載の暗号処理装置。
  8. 前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、
    リードソロモン符号生成行列に基づいて生成されたMDS行列であることを特徴とする請求項1に記載の暗号処理装置。
  9. Feistel型共通鍵ブロック暗号処理を実行する暗号処理方法であり、
    非線形変換処理および線形変換処理を実行するSPN型のF関数を、複数ラウンド繰り返し実行し、
    前記複数ラウンド各々に対応するF関数の線形変換処理は、
    MDS(Maximum Distance Separable)行列を適用した線形変換処理を実行するとともに、
    少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行することを特徴とする暗号処理方法。
  10. 前記複数ラウンド各々に対応するF関数の線形変換処理は、
    全ての偶数ラウンドおよび全ての奇数ラウンドにおいて異なるMDS行列をそれぞれ適用した線形変換処理を実行することを特徴とする請求項9に記載の暗号処理方法。
  11. 前記暗号処理方法は、
    ラウンド数2rのFeistel型共通鍵ブロック暗号処理を実行し、
    前記複数ラウンド各々に対応するF関数の線形変換処理は、
    r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいてr種類の異なるMDS行列を順次適用した線形変換処理を実行することを特徴とする請求項9に記載の暗号処理方法。
  12. 前記暗号処理方法は、
    ラウンド数2rのFeistel型共通鍵ブロック暗号処理を実行し、
    前記複数ラウンド各々に対応するF関数の線形変換処理は、
    r個の全ての偶数ラウンドおよびr個の全ての奇数ラウンドにおいて2≦q<rのq種類の異なるMDS行列を順次繰り返し適用した線形変換処理を実行することを特徴とする請求項9に記載の暗号処理方法。
  13. 前記複数ラウンド各々に対応するF関数の線形変換処理は、
    m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理であり、
    前記複数ラウンド各々に対応するF関数の線形変換処理において適用する異なる複数のMDS行列の各々は、該複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列が線形独立であるMDS行列であることを特徴とする請求項9に記載の暗号処理方法。
  14. 前記複数ラウンド各々に対応するF関数の線形変換処理は、
    m個の非線形変換部各々の出力するnビット、総計mnビットの入力に対する線形変換処理であり、
    前記複数ラウンド各々に対応するF関数の線形変換処理において適用する異なる複数のMDS行列の各々は、前記複数のMDS行列を構成する列ベクトルから任意に選択したm個の列ベクトルによって構成する行列もMDS行列となるMDS行列であることを特徴とする請求項9に記載の暗号処理方法。
  15. 前記複数ラウンド各々に対応するF関数の線形変換処理において適用する異なる複数のMDS行列の各々は、前記複数のMDS行列を構成する要素を全て含むMDS行列Mから選択された行ベクトルによって構成される行列M'から抽出された列ベクトルによって構成される行列によって構成されていることを特徴とする請求項9に記載の暗号処理方法。
  16. 前記F関数の線形変換部において適用する異なる複数のMDS行列の各々は、
    リードソロモン符号生成行列に基づいて生成されたMDS行列であることを特徴とする請求項9に記載の暗号処理方法。
  17. Feistel型共通鍵ブロック暗号処理を実行するコンピュータ・プログラムであり、
    非線形変換処理および線形変換処理を実行するSPN型のF関数を、複数ラウンド繰り返し実行し、
    前記複数ラウンド各々に対応するF関数の線形変換処理は、
    MDS(Maximum Distance Separable)行列を適用した線形変換処理を実行するとともに、
    少なくとも連続する偶数ラウンドおよび連続する奇数ラウンドの各々において異なるMDS行列を適用した線形変換処理を実行するステップであることを特徴とするコンピュータ・プログラム。
JP2003339364A 2003-09-30 2003-09-30 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Lifetime JP4622222B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2003339364A JP4622222B2 (ja) 2003-09-30 2003-09-30 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US10/951,371 US7433470B2 (en) 2003-09-30 2004-09-28 Cryptographic processing apparatus, cryptographic processing method, and computer program
US12/232,352 US8031866B2 (en) 2003-09-30 2008-09-16 Cryptographic processing apparatus and cryptographic processing method, and computer program
US13/206,803 US8306217B2 (en) 2003-09-30 2011-08-10 Cryptographic processing apparatus and cryptographic processing method, and computer program
US13/605,470 US8666069B2 (en) 2003-09-30 2012-09-06 Cryptographic processing apparatus and cryptographic processing method, and computer program
US14/143,739 US9083506B2 (en) 2003-09-30 2013-12-30 Cryptographic processing apparatus and cryptographic processing method, and computer program

Applications Claiming Priority (1)

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

Publications (3)

Publication Number Publication Date
JP2005107078A true JP2005107078A (ja) 2005-04-21
JP2005107078A5 JP2005107078A5 (ja) 2007-06-14
JP4622222B2 JP4622222B2 (ja) 2011-02-02

Family

ID=34534567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003339364A Expired - Lifetime JP4622222B2 (ja) 2003-09-30 2003-09-30 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (2)

Country Link
US (5) US7433470B2 (ja)
JP (1) JP4622222B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072054A (ja) * 2004-09-03 2006-03-16 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2006301567A (ja) * 2005-03-25 2006-11-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007192893A (ja) * 2006-01-17 2007-08-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) * 2006-01-24 2007-08-09 Sony Corp 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
WO2008026623A1 (fr) * 2006-09-01 2008-03-06 Sony Corporation Dispositif de codage, procédé de codage et programme informatique
JP2008058826A (ja) * 2006-09-01 2008-03-13 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2012027149A (ja) * 2010-07-21 2012-02-09 Nec Corp 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム
WO2015146430A1 (ja) * 2014-03-28 2015-10-01 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4622222B2 (ja) 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
DE102006011223A1 (de) * 2006-03-10 2007-09-13 Micronas Gmbh Datenverarbeitungsverfahren mit einem Verschlüsselungsalgorithmus
JP4882598B2 (ja) 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
DE102007012726A1 (de) 2007-03-16 2008-09-18 Micronas Gmbh Verschlüsselungsvorrichtung mit einem mehrstufigen Verschlüsselungsblock
JP5272417B2 (ja) * 2008-01-21 2013-08-28 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US8565431B2 (en) * 2008-03-17 2013-10-22 Sony Corporation System and method for scrambling wireless signals using a secure time value
WO2011036745A1 (ja) * 2009-09-24 2011-03-31 株式会社東芝 鍵スケジュール装置および方法
JP5605197B2 (ja) * 2010-12-09 2014-10-15 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP2015191106A (ja) 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
WO2017223509A1 (en) * 2016-06-23 2017-12-28 Cryptography Research, Inc. Cryptographic operations employing non-linear share encoding for protecting from external monitoring attacks
US10771235B2 (en) * 2016-09-01 2020-09-08 Cryptography Research Inc. Protecting block cipher computation operations from external monitoring attacks
RU173234U1 (ru) * 2017-03-06 2017-08-17 Общество с ограниченной ответственностью "КАСКАД" Устройство раунда шифрования данных по алгоритму "магма" и стандарту гост р 34.12-2015
RU2654078C1 (ru) * 2017-03-06 2018-05-16 Общество с ограниченной ответственностью "КАСКАД" Устройство раунда шифрования данных по алгоритму "магма" и стандарту гост р 34.12-2015
US10911215B2 (en) * 2018-02-12 2021-02-02 Gideon Samid BitMap lattice: a cyber tool comprised of geometric construction
CN113572594A (zh) * 2021-07-26 2021-10-29 晋商博创(北京)科技有限公司 Cpk密钥生成方法、装置、实体及密钥中心
US11930074B2 (en) * 2021-10-26 2024-03-12 King Fahd University Of Petroleum And Minerals Content distribution over a network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002023623A (ja) * 2000-07-13 2002-01-23 Toshiba Corp パラメータ決定装置、パラメータ決定方法、暗号化装置、および復号装置
JP2002091295A (ja) * 2000-07-13 2002-03-27 Fujitsu Ltd Feistel構造とSPN構造とを組み合わせた演算装置および演算方法
JP2002091297A (ja) * 2000-07-13 2002-03-27 Fujitsu Ltd F関数内部にspn構造を用いた演算装置および演算方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4078152A (en) * 1976-04-26 1978-03-07 International Business Machines Corporation Block-cipher cryptographic system with chaining
BE1003932A6 (fr) * 1989-04-28 1992-07-22 Musyck Emile Systeme cryptographique par bloc de donnees binaires.
US5214704A (en) * 1989-10-04 1993-05-25 Teledyne Industries, Inc. Nonlinear dynamic substitution devices and methods for block substitutions
US5295188A (en) * 1991-04-04 1994-03-15 Wilson William J Public key encryption and decryption circuitry and method
US5949884A (en) * 1996-11-07 1999-09-07 Entrust Technologies, Ltd. Design principles of the shade cipher
US6560727B1 (en) * 1999-10-21 2003-05-06 Sandia Corporation Bit error rate tester using fast parallel generation of linear recurring sequences
US7120696B1 (en) * 2000-05-19 2006-10-10 Stealthkey, Inc. Cryptographic communications using pseudo-randomly generated cryptography keys
JP3505482B2 (ja) * 2000-07-12 2004-03-08 株式会社東芝 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
IL145245A0 (en) * 2001-09-03 2002-06-30 Jtc 2000 Dev Delaware Inc System and method including vector-matrix multiplication
JP4622222B2 (ja) * 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8903083B2 (en) * 2010-08-16 2014-12-02 International Business Machines Corporation Fast evaluation of many polynomials with small coefficients on the same point

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002023623A (ja) * 2000-07-13 2002-01-23 Toshiba Corp パラメータ決定装置、パラメータ決定方法、暗号化装置、および復号装置
JP2002091295A (ja) * 2000-07-13 2002-03-27 Fujitsu Ltd Feistel構造とSPN構造とを組み合わせた演算装置および演算方法
JP2002091297A (ja) * 2000-07-13 2002-03-27 Fujitsu Ltd F関数内部にspn構造を用いた演算装置および演算方法

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US9240885B2 (en) 2004-09-03 2016-01-19 Sony Corporation Cryptographic processing apparatus, cryptographic processing method, and computer program therefor
US8767956B2 (en) 2004-09-03 2014-07-01 Sony Corporation Cryptographic processing apparatus, cryptographic processing method, and computer program therefor
US8275127B2 (en) 2004-09-03 2012-09-25 Sony Corporation Cryptographic processing apparatus, cryptographic processing method, and computer program therefor
JP2006072054A (ja) * 2004-09-03 2006-03-16 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4622807B2 (ja) * 2005-03-25 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2006301567A (ja) * 2005-03-25 2006-11-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8340282B2 (en) 2005-03-25 2012-12-25 Sony Corporation Information processing apparatus
JP2007192893A (ja) * 2006-01-17 2007-08-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8073140B2 (en) 2006-01-17 2011-12-06 Sony Corporation Encryption/decryption device, encryption/decryption method, and computer program
JP2007199156A (ja) * 2006-01-24 2007-08-09 Sony Corp 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
CN101553856B (zh) * 2006-09-01 2011-04-20 索尼株式会社 密码处理装置和密码处理方法
JP2008058826A (ja) * 2006-09-01 2008-03-13 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8396210B2 (en) 2006-09-01 2013-03-12 Sony Corporation Cryptographic processing apparatus and cryptographic processing method, and computer program
US8731188B2 (en) 2006-09-01 2014-05-20 Sony Corporation Cryptographic processing apparatus and cryptographic processing method, and computer program
WO2008026623A1 (fr) * 2006-09-01 2008-03-06 Sony Corporation Dispositif de codage, procédé de codage et programme informatique
JP2008058829A (ja) * 2006-09-01 2008-03-13 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2012027149A (ja) * 2010-07-21 2012-02-09 Nec Corp 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム
WO2015146430A1 (ja) * 2014-03-28 2015-10-01 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム

Also Published As

Publication number Publication date
US20140233729A1 (en) 2014-08-21
US20090103719A1 (en) 2009-04-23
JP4622222B2 (ja) 2011-02-02
US9083506B2 (en) 2015-07-14
US8666069B2 (en) 2014-03-04
US20130016829A1 (en) 2013-01-17
US8031866B2 (en) 2011-10-04
US8306217B2 (en) 2012-11-06
US20050111659A1 (en) 2005-05-26
US20110293089A1 (en) 2011-12-01
US7433470B2 (en) 2008-10-07

Similar Documents

Publication Publication Date Title
JP4622222B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4622807B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4561252B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8737603B2 (en) Cryptographic processing apparatus, cryptographic processing method, and computer program
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100421

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4622222

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term