CN101553856A - 密码处理装置和密码处理方法、以及计算机程序 - Google Patents

密码处理装置和密码处理方法、以及计算机程序 Download PDF

Info

Publication number
CN101553856A
CN101553856A CNA200780040630XA CN200780040630A CN101553856A CN 101553856 A CN101553856 A CN 101553856A CN A200780040630X A CNA200780040630X A CN A200780040630XA CN 200780040630 A CN200780040630 A CN 200780040630A CN 101553856 A CN101553856 A CN 101553856A
Authority
CN
China
Prior art keywords
function
processing
cipher
data
mentioned
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
CNA200780040630XA
Other languages
English (en)
Other versions
CN101553856B (zh
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
Publication of CN101553856A publication Critical patent/CN101553856A/zh
Application granted granted Critical
Publication of CN101553856B publication Critical patent/CN101553856B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

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

Abstract

本发明提供一种高效率地执行应用了多个不同的F函数的密码处理的结构。在执行基于选择性地应用了不同的F函数的循环运算的密码处理的结构中,在存储器中保存使对应于各F函数的输入值与输出值或中间值相对应的多个F函数对应表,按照预先规定的密码处理顺序,应用与各循环的F函数对应的地址从存储器中读入F函数对应表,根据表参照来获取对于输入值的输出值或中间值,从而得到按照各F函数的数据变换结果。

Description

密码处理装置和密码处理方法、以及计算机程序
技术领域
本发明涉及一种密码处理装置和密码处理方法、以及计算机程序。更详细的说,涉及一种执行Feistel型共用密钥块密码处理的密码处理装置和密码处理方法、以及计算机程序。
背景技术
近来,随着网络通信、电子商务的发展,确保通信中的安全性成为重要的问题。确保安全性的方法之一是密码技术,当前实际进行着使用了各种加密方法的通信。
例如实际应用有如下的系统:在IC卡等小型装置中嵌入密码处理模块,在IC卡与作为数据读取写入装置的读写器之间进行数据的发送接收,进行认证处理或者发送接收数据的加密、解密。
在密码处理算法中存在各种算法,大致分类为公开密钥密码方式和共用密钥密码方式,其中,上述公开密钥密码方式将加密密钥和解密密钥设定为不同的密钥、例如公开密钥和私人密钥,上述共用密钥密码方式将加密密钥和解密密钥设定为共用的密钥。
在共用密钥密码方式中也存在各种算法,其中之一是如下方式:以共用密钥为基础生成多个密钥,使用所生成的多个密钥来反复执行块单位(64比特、128比特等)的数据变换处理。应用了这种密钥生成方式和数据变换处理的算法的代表方式是共用密钥块密码方式。
作为代表的共用密钥块密码的算法,例如已知过去作为美国标准密码的DES(Data Encryption Standard:数据加密标准)算法、现在作为美国标准密码的AES(Advanced EncryptionStandard:高级加密标准)算法等。
这种共用密钥块密码的算法主要由循环函数部和密钥调度部构成,其中,上述循环函数部具有反复执行输入数据的变换的F函数部,上述密钥调度部生成在循环函数部的各循环的F函数部中应用的循环密钥。密钥调度部根据作为私人密钥的主密钥(Master key)首先生成增加了比特数的扩展密钥,根据所生成的扩展密钥生成在循环函数部的各循环的F函数部中应用的循环密钥(副密钥)。
作为执行应用了这种循环函数(F函数)的算法的具体结构,已知有Feistel结构。Feistel结构具有如下结构:通过作为数据变换函数的循环函数(F函数)的简单反复,将明文变换为密文。作为记载有应用了Feistel结构的密码处理的文献,例如存在非专利文献1、非专利文献2。
但是,作为应用该Feistel结构的共用密钥块密码处理的问题点,存在由密码分析引起的密钥泄漏。作为密码分析或攻击方法的代表性方法,已知有差分分析(也称为差分解读法或者差分攻击)、线性分析(也称为线性解读法或者线性攻击),其中,上述差分分析通过分析多个具有某个差分的输入数据(明文)及其输出数据(密文)来分析各循环函数中的应用密钥,上述线性分析进行基于明文和对应的密文的分析。
利用密码分析容易进行密钥的分析导致该密码处理的安全性较低。在以往的密码算法中,由于在循环函数(F函数)部的线性变换部中应用的处理(变换矩阵)在各级循环中相同,因此容易进行分析,结果是导致容易分析密钥。
作为应对这种问题的结构,提出了如下结构:在Feistel结构的循环函数(F函数)部的线性变换部中配置两个以上不同的矩阵使得在每个循环中进行切换。该技术被称为扩散矩阵切换机构(DSM:Diffusion Switching Mechanism,以下为DSM)。通过该DSM能够提高对差分攻击、线性攻击的抵抗性。例如专利文献1中记载有应用了该扩散矩阵切换机构(DSM)的密码处理结构。
但是,在执行应用了扩散矩阵切换机构(DSM)的密码处理的情况下,需要安装设定了不同矩阵的不同的循环函数(F函数),还需要预先决定多个循环函数并按照顺序进行切换,需要设置新的控制机构,在构成密码处理装置的情况下,所需的结构增加,妨碍装置的小型化并使成本增加。另外,还存在伴随切换控制而处理速度降低这种问题。
专利文献1:日本特开2006-72054号
非专利文献1:K.Nyberg,“Generalized Feistel networks”,ASIACRYPT’96,Springer Verlag,1996,pp.91--104.
非专利文献2:Yuliang Zheng,Tsutomu Matsumoto,HidekiImai:On the Construction of Block Ciphers Provably Secure andNot Relying On Any Unproved Hypotheses.CRYPTO 1989:461-480
发明内容
发明要解决的问题
本发明是鉴于上述问题点而完成的,其目的在于提供一种改良密码处理结构、能够不增加安装成本而执行高速的密码处理的密码处理装置和密码处理方法、以及计算机程序,其中,上述密码处理结构应用了对Feistel结构的循环函数(F函数)部的线性变换部配置两个以上不同的矩阵使得在每个循环中进行切换的扩散矩阵切换机构(DSM)。
用于解决问题的方案
本发明的第一侧面是一种密码处理装置,执行Feistel型共用密钥块密码处理,其特征在于,具有:
数据处理部,其选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算;以及
存储器,其保存有多个F函数对应表,该多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应,
其中,上述数据处理部是如下结构:按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址,通过应用了获取地址的存储器存取,读入与各循环的F函数对应的F函数对应表,根据表参照获取对于输入值的输出值或中间值来得到按照各F函数的数据变换结果。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述数据处理部是如下结构:执行按照Feistel结构的密码处理,该Feistel结构具有选择性地应用至少两个以上不同的F函数的扩散矩阵切换机构(DSM:Diffusion SwitchingMechanism),设定至少两个以上不同的矩阵作为应用于各循环的F函数中的线性变换处理的变换矩阵来得到至少两个以上不同的F函数。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述数据处理部是如下结构:执行基于Feistel结构的密码处理,该Feistel结构按照将密码处理对象数据进行二分割的数据序列数(分割数)d=2的设定来执行密码处理。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述数据处理部是如下结构,执行基于扩展型Feistel结构的密码处理,该扩展型Feistel结构按照将密码处理对象数据分割为三个以上的数据序列数(分割数)d≥3的设定来执行密码处理。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述数据处理部是如下结构:执行预先设定的密码函数,在执行该密码函数时,在每个循环中适当地切换与在各循环中应用的F函数对应的F函数对应表的存取用地址,读入与各循环的F函数对应的F函数对应表,根据表参照获取对于输入值的输出值或中间值来得到按照各F函数的数据变换结果。
并且,在本发明的密码处理装置的一个实施方式中,其特征在于,上述存储器是如下结构:保存有F函数对应表,该F函数对应表使对各F函数的输入值或输入值的结构数据与F函数的输出值或中间值或它们的结构数据相对应。
并且,本发明的第二侧面是一种密码处理方法,在密码处理装置中执行Feistel型共用密钥块密码处理,该密码处理方法的特征在于,
具有数据处理步骤,该数据处理步骤在数据处理部中选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算,
其中,上述数据处理步骤具有以下步骤:
按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址;
执行应用了上述获取地址的存储器存取,从保存有多个F函数对应表的存储器中读入与各循环的F函数对应的F函数对应表,其中,上述多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应;以及
参照从存储器中读入的表,获取对于F函数输入值的输出值或中间值来得到按照各F函数的数据变换结果。
并且,本发明的第三侧面是一种计算机程序,使密码处理装置执行Feistel型共用密钥块密码处理,该计算机程序的特征在于,
具有数据处理步骤,该数据处理步骤使数据处理部选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算,
上述数据处理步骤执行如下步骤:
按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址;
执行应用了上述获取地址的存储器存取,从保存有多个F函数对应表的存储器中读入与各循环的F函数对应的F函数对应表,其中,上述多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应;以及
参照从存储器中读入的表,获取对于F函数输入值的输出值或中间值来获取按照各F函数的数据变换结果。
此外,本发明的计算机程序例如是能够通过以计算机可读形式提供的存储介质、通信介质、例如CD、FD、MO等记录介质、或者网络等通信介质对可执行各种程序代码的计算机系统提供的计算机程序。通过以计算机可读形式提供这种程序,在计算机系统上实现与程序相应的处理。
通过基于后述的本发明的实施例、附图的更详细的说明,本发明的进一步的其他目的、特征、优点会更明确。此外,在本说明书中系统是指多个装置的逻辑集合结构,不限于各结构的装置存在于同一壳体内。
发明的效果
根据本发明的一个实施例的结构,在通过选择性地应用了至少两种以上不同的F函数作为循环函数的循环运算执行密码处理的结构中,在存储器中保存使对应于各F函数的输入值与输出值或中间值相对应的多个F函数对应表,按照预先规定的密码处理顺序,应用与各循环的F函数对应的表存取用地址从存储器中读入F函数对应表,根据表参照获取对于输入值的输出值或中间值来得到按照各F函数的数据变换结果。根据本结构,按照与各循环对应地变更的地址来获取各F函数对应表,能够高效率地获取或者算出与输入值对应的输出值。例如,应用一个密码函数,仅改变自变量就能够执行各种密码处理。
附图说明
图1是说明Feistel结构的基本结构的图。
图2是说明被设定为循环函数部的F函数的结构的图。
图3是表示将循环数设为r的SPN型Feistel结构例的图。
图4是表示实现了对各循环的循环函数(F函数)的线性变换层配置两个不同的线性变换矩阵M0、M1的扩散矩阵切换机构(DSM)的Feistel结构例的图。
图5是表示应用了三个矩阵M0、M1、M2的Feistel结构例的图。
图6是表示具有采用扩散矩阵切换机构(DSM)的扩展型Feistel结构(GFN)的加密函数的结构例的图。
图7是说明用于根据F函数的输入来求出输出的表结构的图。
图8是说明利用了与多个不同的循环函数(F函数)对应的多个表的密码处理结构的图。
图9是对为了实现利用了与多个不同的循环函数(F函数)对应的多个表的密码处理结构而保存在存储器中的表进行说明的图。
图10是表示作为执行本发明所涉及的密码处理的密码处理装置的IC模块的结构例的图。
具体实施方式
下面,详细说明本发明的密码处理装置和密码处理方法、以及计算机程序。按照以下项目进行说明。
1.SPN型Feistel结构
2.针对具有两个数据序列的Feistel结构的扩散矩阵切换机构(DSM)的设定结构
3.针对扩展型Feistel结构(GFN:Generalized FeistelNetwork(广义Feistel网络))的扩散矩阵切换机构(DSM)的设定结构
4.利用应用了不同的线性变换矩阵的不同循环函数的表安装的处理结构
5.密码处理装置的结构例
[1.SPN型Feistel结构]
首先,说明SPN(Substitution Permutation Network:置换组合网路)型Feistel结构。作为共用密钥块密码的设计而已知的Feistel结构具有如下结构:通过被称为循环函数的基本处理单位的反复,将明文变换为密文。
参照图1,说明Feistel结构的基本结构。图1示出了具有r循环的循环数=r的、具有两个数据序列的Feistel结构的例子。此外,循环数r是在设计阶段决定的参数,例如是能够根据输入的密钥的长度而变更的值。
在图1所示的Feistel结构中,将作为加密对象而被输入的明文的长度设为2mn比特。其中,m、n都是整数。首先,将2mn比特的明文分割为mn比特的两个输入数据P[0]101、P[1]102,将其作为输入值。图示的例子是将输入值进行二分割的结构,是数据序列数(分割数)=2的结构例。
Feistel结构通过被称为循环函数的基本处理单位的反复来表现,包含在各循环中的数据变换函数被称为循环函数(F函数)120。在图1的结构中,示出反复进行了r级循环函数120的结构例。
例如在第一循环中,对F函数120输入mn比特的输入数据X和从未图示的密钥调度部(密钥生成部)输入的mn比特的循环密钥RK1103。在循环函数(F函数)120中的数据变换处理之后输出mn比特的数据Y。输出与来自另一方的前级的输入数据(第一级的情况下是输入数据PL)在异或部104中进行异或运算,并向下一个循环函数输出mn比特的运算结果。仅反复应用该处理、即循环函数(F函数)决定的循环数(r)来完成加密处理,输出密文的分割数据C[0]、C[1]。在各循环中执行的循环函数(F函数)是相同结构的Feistel结构的解密处理仅将插入循环密钥的顺序设为相反即可,不需要构成反函数。
参照图2说明被设定为各循环的函数的循环函数(F函数)120的结构。图2的(a)是表示对于一个循环中的循环函数(F函数)120的输入和输出的图,图2的(b)是表示循环函数(F函数)120的详细结构的图。如图2的(b)所示,循环函数(F函数)120具有连接了非线性变换层(S层)和线性变换层(P层)的、所谓SP型的结构。
图2所示的循环函数(F函数)120是具有输入输出比特长为m×n(m、n:整数)比特的设定的函数。在SP型F函数内部首先执行密钥数据Ki与数据Xi之间的异或,接着应用非线性变换层(S层),接下来应用线性变换层(P层)。
具体地说,非线性变换层(S层)排列了m个被称为S盒(S-box)121的n比特输入n比特输出的非线性变换表,以每n比特分割mn比特的数据并分别输入到对应的S盒(S-box)121中来变换数据。在各S盒中,例如执行应用了变换表的非线性变换处理。
线性变换层(P层)由线性变换部122构成,线性变换部122输入来自S盒121的作为输出数据的mn比特的输出值Z,对该输入实施线性变换并输出mn比特的结果。线性变换部122执行输入比特位置的替换处理等线性变换处理,输出mn比特的输出值Y。该输出值Y与来自前级的输入数据进行异或,成为下一个循环的F函数的输入值。
此外,在下面说明的本实施例的结构中,将在作为线性变换层(P层)的线性变换部122中执行的线性变换定义为应用在GF(2n)上定义的mn×mn的矩阵来进行的线性变换,另外,将包含在第i次循环中的矩阵称为Mi
设为循环数r的SPN型Feistel结构为如图3所示的结构。n-bit的明文P被二等分为P[0]与P[1],对P[0]应用输入了循环密钥RK1的循环函数F0,执行其结果与P[1]之间的异或运算(EXOR)。将异或运算的结果设为下一个循环的左输入,将P[0]设为下一个循环的右输入。之后反复应用循环函数规定的次数(r次)来得到最终输出C。该结构为在所有循环中循环函数(F函数)都相同的结构。
在循环函数F0内,首先进行输入到循环函数的数据与循环密钥之间的异或运算(EXOR)。将其结果设为X(n/2-bit)。X被分割为m个s-bit数据。将其分别设为x1,x2,...,xm(X=(x1||x2||...||xm))。此外,a||b表示a和b的连接数据。
各分割数据xi被分别输入到s-bit输入输出的非线性变换S、即S盒(S-box)中。将S-box的输出分别设为z1,z2,...,zm(Z=z1||z2||...||zm)。Z进一步被输入到线性变换部,实施应用了m×m矩阵M0的矩阵运算,得到最终输出Y。
这样,Feistel结构具有如下结构:通过作为数据变换函数的循环函数(F函数)的简单反复,将明文变换为密文。但是,作为应用该Feistel结构的共用密钥块密码处理的问题点,存在由密码分析引起的密钥泄漏。例如,有可能利用差分分析(也称为差分解读法或差分攻击)、线性分析(也称为线性解读法或线性攻击)进行分析,其中,上述线性分析进行基于明文和对应的密文的分析。利用密码分析容易进行密钥的分析导致该密码处理的安全性较低。
[2.针对具有两个数据序列的Feistel结构的扩散矩阵切换机构(DSM)的设定结构]
如上所说明的那样,提出了如下结构:在应用了Feistel结构的密码处理中,应用扩散矩阵切换机构(DSM:DiffusionSwitching Mechanism,以下为DSM)作为提高对差分攻击、线性攻击的抵抗性的结构。例如在日本特开2006-72054号中记载有应用了该扩散矩阵切换机构(DSM)的密码处理结构。DSM是如下结构:不是将在Feistel结构的循环函数(F函数)部的线性变换部中应用的矩阵设为在所有循环中都相同,而是对各循环配置至少两个以上不同的矩阵。利用该DSM能够提高对差分攻击、线性攻击的抵抗性。
对该DSM说明其概要。在Feistel结构中应用了扩散矩阵切换机构(DSM)的情况下,在构成Feistel结构的循环函数(F函数)部的线性变换部(P层)中应用的矩阵为多个不同的矩阵。例如,不是将图1、图3所示那样的r循环的Feistel结构的各循环中的应用矩阵全部设定为相同的线性变换矩阵,而是按照特定的规则排列至少两种以上的矩阵。
例如,在图4中示出实现了对各循环的循环函数(F函数)的线性变换层配置了两个不同的线性变换矩阵M0、M1的扩散矩阵切换机构(DSM)的Feistel结构例。在图4所示的Feistel结构例中,
F函数F0示出执行应用了线性变换矩阵M0的线性变换处理的循环函数(F函数)、
F函数F1示出执行应用了线性变换矩阵M1的线性变换处理的循环函数(F函数)。
两个线性变换矩阵M0、M1由不同的矩阵构成。
此外,为了实现扩散矩阵切换机构(DSM),所应用的矩阵需要满足规定的条件。该条件之一是关于分支数(Branch)的限制。下面,说明该限制。
在应用于Feistel结构中的循环函数部的线性变换的多个不同的矩阵M0~Mn各自的分支数中,将
应用矩阵中的分支数的最小值:B1 D
与所应用的多个矩阵的关联矩阵对应的分支数的最小值:B2 D、B3 D、B2 L
如下这样进行定义。
式1
B 1 D = min i ( Branc h n ( M i ) )
B 2 D = min i ( Branc h n ( [ M i | M i + 2 ] ) )
B 3 D = min i ( Branc h n ( [ M i | M i + 2 | M i + 4 ] ) )
B 2 L = min i ( Branch n ( [ M i - 1 t | M i + 2 - 1 t ] ) )
在上述表达式中,
Mi表示应用于Feistel结构中的第i循环的线性变换处理的线性变换矩阵,
[Mi |Mi+2|··]表示通过连接Mi |Mi+2|··各矩阵而得到的关联矩阵,
tM表示矩阵M的转置矩阵,M-1表示矩阵M的逆矩阵。
具体地说,在上述表达式中:B2 D、B3 D、B2 L表示矩阵的分支数的最小值,该矩阵为关联包含在Feistel结构的一个数据序列中连续的两个循环或者三个循环的F函数中的矩阵而得到的矩阵。
例如,已知通过设定各矩阵使上述各分支数满足以下条件、即满足
B2 D≥3、B3 D≥3、B2 L≥3
上述条件,在Feistel结构中能够提高对差分攻击、线性攻击的抵抗性。
此外,B1 D、B2 D、B3 D、B2 L中的各上下标具有以下的意思。
Bn D的n表示关联的矩阵数,Bn D的D表示用于具有对差分攻击(Differential Attack)的抵抗性的条件,Bn L的L表示用于具有对线性攻击(Linear Attack)的抵抗性的条件。
这样,通过应用对各循环的循环函数(F函数)的线性变换层配置两个以上不同的线性变换矩阵的扩散矩阵切换机构(DSM),能够提高对差分攻击、线性攻击的抵抗性。
在图4所示的结构中,应用两个不同的矩阵M0、M1,是由执行应用了线性变换矩阵M0的线性变换处理的循环函数(F函数)F0与执行应用了线性变换矩阵M1的线性变换处理的循环函数(F函数)F1构成的Feistel结构,但是,所应用的不同的线性变换矩阵数不限于两种,能够设为应用三、四··种矩阵的结构。
图5示出应用了三个矩阵M0、M1、M2的Feistel结构例。在图5所示的Feistel结构例中,
F函数F0表示执行应用了线性变换矩阵M0的线性变换处理的循环函数(F函数),
F函数F1表示执行应用了线性变换矩阵M1的线性变换处理的循环函数(F函数),
F函数F2表示执行应用了线性变换矩阵M2的线性变换处理的循环函数(F函数)。
三个线性变换矩阵M0、M1、M2由不同的矩阵构成。
这样,扩散矩阵切换机构(DSM)对各循环的循环函数(F函数)的线性变换层配置执行不同的线性变换处理的多个不同的线性变换矩阵M0、M1、··来执行循环函数,利用该结构能够提高对差分攻击、线性攻击的抵抗性。
[3.针对扩展型Feistel结构(GFN:Generalized FeistelNetwork)的扩散矩阵切换机构(D SM)的设定结构]
接着,说明扩展型Feistel结构(GFN:Generalized FeistelNetwork)。参照图1~图5说明的Feistel结构是将输入数据P分割为两个数据序列P[0]、P[1]来执行处理的结构。将输入数据的分割数称为数据序列数(分割数)。参照图1~图5说明的Feistel结构是数据序列数(分割数)d=2的设定。
在应用了Feistel结构的密码处理中,可以将数据序列数(分割数)d设定为3以上的数,将数据序列数(分割数)设为3以上的任意数:d的Feistel结构定义为扩展型Feistel结构(GFN:Generalized Feistel Network)。在这种扩展型Feistel结构(GFN)中也能够应用扩散矩阵切换机构(DSM),通过应用扩散矩阵切换机构(DSM)能够提高对密码攻击的抵抗性。
图6示出具有采用扩散矩阵切换机构(DSM)的扩展型Feistel结构(GFN)的加密函数的结构例。图6所示的例子是将数据序列数(分割数)d设为d=4的具有扩散矩阵切换机构(DSM)的扩展型Feistel结构(GFN)的加密函数的结构例。
如上所述,将具有扩散矩阵切换机构(DSM)的扩展型Feistel结构(GFN)设为对Feistel结构的循环函数(F函数)部的线性变换部配置两种以上不同的矩阵使得在每个循环中进行切换的结构。利用DSM能够提高对差分攻击、线性攻击的抵抗性。图6所示的例子为如下结构:在F函数F0与F函数F1中分别执行应用了不同的线性变换矩阵的数据变换。此外,通过将在这些F函数中应用的线性变换矩阵设定为满足某个特定条件的矩阵,能够大幅提高对差分攻击、线性攻击的抵抗性。关于该结构,在本申请人之前提出申请的日本特愿2006-206376号中详细地进行了说明。
在图6所示的加密函数的结构中,输入是明文P,明文P被分割为P[0]、P[1]、P[2]、P[3]四个数据序列(分割数=4),在各循环中依次执行应用了F函数F0或者F函数F1的数据变换,作为r循环的变换结果而输出构成密文C的C[0]、C[1]、C[2]、C[3]。在各循环的F函数F0或者F函数F1中,输入从未图示的密钥调度部提供的、作为根据主密钥(Master key)而生成的扩展密钥的结构要素的循环密钥(副密钥)RKi[0]、RKi[1],并应用于数据变换。此外,密钥RKi[n]的i表示循环,n表示同一循环中的循环密钥的标识符。
如图6所示,在具有扩散矩阵切换机构(DSM)的扩展型Feistel结构(GFN)中,在各循环的切换部分执行替换各数据序列的交换处理。如图6所示,在切换各循环时,对各数据序列的输出应用交换函数211,设定与各数据序列的输出对应的下一个循环中的输入序列。
在图6中,如图6顶部所示,在将数据序列从左起设为数据序列0、1、2、3时,先行循环的四个序列的输出与对后续循环的输入序列的替换通过交换函数211如下那样进行切换。
先行循环的数据序列0的输出被设定为后续循环中的数据序列3的输入。
先行循环的数据序列1的输出被设定为后续循环中的数据序列0的输入。
先行循环的数据序列2的输出被设定为后续循环中的数据序列1的输入。
先行循环的数据序列3的输出被设定为后续循环中的数据序列2的输入。
执行这种序列替换处理的函数是在加密处理中应用的交换函数。
在具有数据序列数(分割数)d=3以上的任意数的扩展型Feistel结构(GFN)中反复进行如下处理:在各循环中执行一个以上的循环函数,之后进行序列切换处理,执行后续的循环函数。
在这种具有数据序列数(分割数)d=3以上的任意数的扩展型Feistel结构(GFN)中,也能够通过将在循环函数(F函数)中应用的线性变换矩阵设定为满足某个特定条件的不同的矩阵来大幅提高对差分攻击、线性攻击的抵抗性。
[4.利用应用了不同的线性变换矩阵的不同循环函数的表安装的处理结构]
如上述那样的、应用了采用扩散矩阵切换机构(DSM)的Feistel结构或者扩展型Feistel结构的密码处理结构具有大幅提高对差分攻击、线性攻击的抵抗性这种优点,但是另一方面存在如下问题。即,
需要安装设定了不同的矩阵的不同的循环函数(F函数);以及
需要设置预先决定多个循环函数、按照顺序进行切换的新的控制机构,
因而,在构成密码处理装置的情况下,所需的结构增加,妨碍装置的小型化并使成本增加。还存在伴随着切换控制而处理速度下降这种问题。
下面,说明解决这种问题的结构。即,利用应用了不同的线性变换矩阵的不同循环函数的表安装的处理结构。
作为具有循环函数(F函数)的共用密钥密码的安装结构,可以是应用了软件、硬件的各种结构。作为F函数的处理结构,需要作为非线性变换部的S-box和作为线性变换部的矩阵运算部,分别可以是利用逻辑电路的硬件结构、使用了表变换表的结构。在要求高速动作的情况下,称为表(查表)安装的方法为最佳。
查表(表)安装是如下的安装方法:不进行实际的运算,而是用表(置换表)将与各种输入对应的已预先计算好的运算结果保持在存储器空间中,通过参照表来得到想要求出的输出值。例如,在想要进行
f(x)=x3
这种计算的情况下,具有持有下面那样值的称为ftab的表(置换表),由此即使不进行实际的x3的计算、通过参照ftab的内容也能够得到x3的结果。
ftab[0]=0(=03),
ftab[1]=1(=13),
ftab[2]=8(=23),
ftab[3]=27(=33),
ftab[4]=64(=43),
..
上面记载是具有如下结构的表ftab的例子:在作为输入值存在0、1、2、3、4时,作为输出获取0、1、8、27、64。
这样F函数应用查表(表)安装结构,将与所需的各F函数的输入值对应的输出值预先准备为表,保存在密码处理装置的存储器中。设为能够根据表示存储器的表保存位置的各地址来获取各F函数的表的结构。根据该方法,能够不降低执行速度地容易地进行F函数的替换。应用该方法,通过仅从外部提供偶数级的F函数的表的地址,能够不使用函数而改变加密函数和解密函数。
例如,参照图7说明用于根据16-bit输入输出的F函数的输入求出输出的表结构。图7的(a)所示的循环函数(F函数)是具有两个S-box 301、302和一个线性变换部303的结构。在该结构中,将输入X(16-bit)分割为两个各8-bit,设为x1、x2。接着,将x1、x2分别输入到执行8-bit输入输出的非线性变换处理的S-box301、302,得到输出z1、z2。在线性变换部303中对这些z1、z2实施线性变换,得到其结果y1、y2,连接y1、y2得到最终输出Y。例如,线性变换部303中的线性变换如下这样进行计算。
式2
y 1 y 2 = a 0,0 a 0,1 a 1,0 a 1,1 z 1 z 2
y 1 = a 0,0 · z 1 ⊕ a 0,1 · z 2
y 2 = a 1,0 · z 1 ⊕ a 1 , 1 · z 2
这种S-box中的非线性处理、线性变换部中的矩阵运算能够设为利用逻辑电路等来根据输入值求出输出的设定。
即,作为S-box中的非线性处理运算,
z1=S(x1)
z2=S(x2)
构成执行上述运算的逻辑电路,并且,作为线形变换部中的运算,
y1=a0,0z1(EXOR)a0,1z2
y2=a1,0z1(EXOR)a1,1z2
构成执行上述运算的逻辑电路,能够设为应用逻辑电路求出结果的结构。但是,如果构成逻辑电路,则存在安装面积变大、并且处理速度也会下降这种问题。
因此,预先计算运算部分、用表保持与各种输入对应的输出值、通过表参照来得到输出的处理最适合高速化。例如,在图7所示的循环函数中,能够利用图7的(b)所示的表。
在该例中,将t设为相当于对两个S-box 301、302的输入值的变量,应用下面两个表TAB0[t]、TAB1[t]。
TAB0[t]=(a0,0S(t)||a1,0S(t))
TAB1[t]=(a0,1S(t)||a1,1S(t))
输入值[t]是相当于对两个S-box 301、302的输入值x1、x2的8比特数据,通过TAB0[t]、TAB1[t]而从表中获取的数据、即
(a0,0S(t)||a1,0S(t))
(a0,1S(t)||a1,1S(t))
这些分别是16比特数据。
根据通过TAB0[t]、TAB1[t]获取的16比特数据来求出最终的循环函数的输出Y。能够通过对TAB0[]插入x1得到的结果与对TAB1[]插入x2得到的结果进行EXOR处理、即
Y=TAB[x1](EXOR)TAB[x2]
算出输出Y。
在更详细说明上述处理时,成为以下式。
Y=(y1||y2)=(a0,0S(x1)||a1,0S(x1))(EXOR)(a0,1S(x2)||a1,1S(x2))
在应用利用了该表的方法的情况下,执行表TAB0[]和表TAB1[]的各表的参照处理各一次来求出与输入x1、x2对应的输出TAB0[x1]、TAB0[x2]。即,
TAB0[x1]=(a0,0S(x1)||a1,0S(x1))
TAB1[x2]=(a0,1S(x2)||a1,1S(x2))
接着,对这两个表获取值TAB0[x1]、TAB1[x2]执行一次异或运算(EXOR)。
通过这些处理能够得到一个循环函数的处理结果。也就是说,作为处理仅是进行两次表参照和一次异或运算(EXOR)。因此,如果能够足够高速地执行表参照,则能够非常高速地进行F函数的处理。
在本发明中提出了如下结构:在密码处理中的循环运算中应用上述表参照处理,其中,上述密码处理应用了采用之前说明的扩散矩阵切换机构(DSM)的Feistel结构或者扩展型Feistel结构。如上所说明那样,扩散矩阵切换机构(DSM)适当地使用应用了多个不同的线性变换矩阵的不同的循环函数(F函数),与使用单一的F函数的方法相比是飞跃性地提高安全性的方式。该方式使用多个不同的F函数,但是根据其数量,安全性参数、安装上的特性会发生变化。
在使用扩散矩阵切换机构(DSM)的情况下,需要在每个循环中应用不同的循环函数,需要进行循环函数(F函数)的切换控制。作为一个安装结构例,例如在利用了具有三个不同的线性变换矩阵的三个不同的循环函数(F函数)的结构中,设为准备了F0、F1、F2这三个F函数的设定。
根据该安装结构,通过循环函数(F函数)的选择控制来实现各种密码处理。例如,在进行之前参照图3说明的仅利用一个循环函数(F函数)F0的SPN型Feistel结构的密码处理的情况下,设为在所有循环中都调用F函数F0并进行应用的结构。
另外,在进行按照之前参照图4所说明的应用DSM的Feistel结构的密码处理的情况下,设为在各循环中按照预先规定的顺序来调用两个F函数F0、F1并进行应用的结构,其中,上述Feistel结构利用了具有两个不同的线性变换矩阵M0、M1的两个F函数F0、F1
另外,在进行按照之前参照图5所说明的应用DSM的Feistel结构的密码处理的情况下,设为在各循环中按照预先规定的顺序来调用三个F函数F0、F1、F2并进行应用的结构,其中,上述Feistel结构利用了具有三个不同的线性变换矩阵M0、M1、M2的三个F函数F0、F1、F2
这样,即使不改变主体的加密部也能够利用一个程序来执行三个加密函数。
如果能如上那样适时地替换F函数则能够进行各种应用,因此,特别期望在DSM中能够简单地进行F函数的替换。
作为用于解决该问题的最简单的方法,考虑将F函数部作为函数从外部进行输入的形式。在该方法中,预先制作执行多个F函数部的函数,通过将它们输入到加密函数中来实现F函数的切换。然而,该方法需要在加密函数中多次调用多个F函数。考虑到在通常一次执行时间非常短的块密码中,在加密函数内多次调用其他函数(该情况为F函数)会导致执行速度大幅降低,其影响较大。因此,更期望不将F函数部作为函数而进行切换。
作为解决这种问题的结构,说明安装了与应用不同的线性变换矩阵的不同循环函数(F函数)分别对应的表的处理结构。即,预先在装置的存储器空间中保存与应用了不同的线性变换矩阵的不同循环函数(F函数)对应的输出值获取用的表。在执行按照应用了上述扩散矩阵切换机构(DSM)的Feistel结构的密码处理的情况下,在各循环中适当地切换并利用所使用的表。即,仅替换所利用的表来实现F函数替换。
更具体地说,例如设定在各循环中应用的循环函数(F函数)对应表的获取用存储器地址作为执行密码处理的加密函数的输入信息。在加密函数执行循环函数的情况下,应用各循环对应的存储器地址,从存储器中获取与在各循环中执行的循环函数(F函数)对应的表,根据规定的输入值获取表设定值。通过该处理,仅替换表、即存储器的地址就变得与替换F函数相同,从而实现高速处理。即,由于实际处理仅是改变表的地址,因此执行速度完全不会降低。
参照图8、图9说明利用了与多个不同的循环函数(F函数)对应的多个表的密码处理结构。图8是表示本实施例所涉及的密码处理装置400的一个结构例的图。密码处理装置400例如具有数据处理部410和存储器420,其中,上述数据处理部410执行应用了上述SPN型Feistel结构的密码处理、按照应用了扩散矩阵切换机构(DSM)的Feistel结构的密码处理等,上述存储器420保存有与应用了不同的线性变换矩阵M0、M1、…的循环函数(F函数)F0、F1…对应的表。
存储器420保持有与应用了不同的线性变换矩阵M0、M1…的循环函数(F函数)F0、F1…对应的表、即、将与不同的F函数F0、F1…的输入值对应的输出值或算出输出值所需的中间值与各输入值相对应地进行保存的多个F函数对应表421、422··42n。
图9示出保存在存储器420中的多个F函数对应表421、422··42n的例子。F函数对应表421是与第一F函数(循环函数)对应的表,将对第一F函数的各输入值与对应于输入值的输出值或算出输出值所需的中间值相对应地进行设定。F函数对应表422是与第二F函数(循环函数)对应的表,将对第二F函数的各输入值与对应于输入值的输出值或算出输出值所需的中间值相对应地进行设定。下面,同样地在存储器420中保存n个F函数的对应表。
此外,保存在表中的输入值可以设为对F函数整体的输入值,也可以设为对F函数内的各S-box的输入值等F函数输入值的一部分结构值。关于输出值,可以设为F函数的输出值,也可以设为用于算出输出值的中间值。即,在存储器420中保存的F函数对应表被设为使对各F函数的输入值或输入值的结构数据与F函数的输出值或中间值或它们的结构数据相对应的表。
这些各表是能够应用存取用地址来读出的结构,设定与各表对应的地址、例如
第一F函数对应表地址=[FF000001]
第二F函数对应表地址=[FFF01234]
等各表的读入地址,图8所示的循环函数执行部411应用与在各循环中应用的F函数对应的地址来执行表读出。
图8所示的数据处理部410具有:循环函数执行部411,其执行循环函数;存储器地址提供部412,其将应用于在各循环中应用的F函数对应表的存取的各表对应的存储器地址提供给循环函数执行部411;以及处理顺序信息保存部413,其保存了密码处理的顺序信息。
例如在执行按照之前说明的应用了扩散矩阵切换机构(DSM)的Feistel结构的密码处理的情况下,处理顺序信息保存部保存在各循环中执行的F函数的顺序信息,存储器地址提供部412按照该顺序信息,获取在各循环中要参照的F函数对应表的存储器地址,提供给循环函数执行部411。
循环函数执行部411从存储器地址提取部412领取表的存取用地址,按照领取地址执行存储器420的存取,获取在各循环中要应用的F函数对应表,根据表参照得到与输入值对应的输出值(或中间值),其中,上述表与按照所执行的密码顺序的、在每个循环中执行的F函数对应。循环函数执行部411仅按照与各循环对应地进行变更的地址来执行在各循环中应用的表的获取,只要依次设定每个循环的F函数对应表的地址作为在固定的密码函数中应用的自变量即可,应用一个密码函数仅改变自变量就能够执行各种密码处理。即,不需要进行不同F函数的调用处理,能够高速地得到各循环运算(F函数)的处理结果。另外,在该结构中,不需要与各循环函数对应的逻辑电路等,能够实现装置的小型化、削减安装成本。
此外,在执行应用了之前参照图6说明的能够将数据序列数设定为3以上的任意数的扩展型Feistel结构的密码处理的结构中,有时在一个循环中并行地执行多个循环函数(F函数)。因而,在执行应用了扩展型Feistel结构的密码处理的结构的情况下,循环函数执行部411优选设为能够并行执行多个循环函数(F函数)的结构。循环函数执行部411并行地执行与并行执行的循环函数对应的各F函数对应表的参照处理。此外,也可以设为处理速度降低、但是按顺序进行存储器存取的结构。
此外,如果使用保存在图8所示的存储器中的F函数对应表的参照切换结构,则仅变更存储器存取用地址就能够执行在各循环中应用的表的变更,因此,能够灵活地变更表利用顺序。例如,在利用之前参照图5说明的应用了三个不同的矩阵M0、M1、M2的Feistel结构的密码处理中,在图5所示的例中设定为:
F函数的应用顺序=
F0→F2→F1→F1→F2→…
但是,例如如下这样变更该顺序:
将F1设定到F0的位置,
将F2设定到F1的位置,
将F0设定到F2的位置。
仅变更在各循环中应用的地址就能够实现这种F函数的利用顺序的变更。
在上述变更例中,各循环的F函数利用顺序为
F1→F0→F2→F2→F0→…。
为实现这种顺序所需的处理仅是改变在各循环中应用的F函数调用地址的顺序,能够进行容易的变更。按照这种不同的F函数利用顺序的密码处理能够构成与变更前的F函数利用顺序具有不同的输入输出、并且安全性相同的加密函数。
此外,在扩散矩阵切换机构(DSM)中,根据所应用的不同循环函数(F函数)的数量,安全性参数会发生变化。一般,使用很多不同循环函数(F函数)能提高安全性。在设为在存储器中保存多个F函数对应的表并进行利用的结构的情况下,也假想到在能够进行高速存取的存储器空间(例如一次高速缓冲存储器)上容纳不下要参照的表的情况,因此,优选设为如下结构:根据处理顺序,将能够保存参照所需的表的最大数的存储器区域设定为能够进行高速存取的存储器空间。
如图8所示,本发明的密码处理装置400是执行Feistel型共用密钥块密码处理的密码处理装置,具有:数据处理部410,其选择性地应用至少两种以上的不同的F函数作为循环函数来执行多个循环的循环运算;以及存储器420,其保存有使分别与两种以上不同的F函数对应的输入值与输出值或中间值相对应的多个F函数对应表,在数据处理部410中,按照预先规定的密码处理顺序来获取与在各循环中应用的F函数对应的F函数对应表的存取用地址,通过应用了获取地址的对存储器420的存取,读入与各循环的F函数对应的F函数对应表421~42n,根据表参照获取对于输入值的输出值或中间值,得到按照各F函数的数据变换结果。
此外,数据处理部410是执行按照Feistel结构的密码处理的结构,例如执行基于按照将密码处理对象数据进行二分割的数据序列数(分割数)d=2的设定的Feistel结构、或者设为数据序列数(分割数)d≥3的设定的扩展型Feistel结构的密码处理,其中,上述Feistel结构具有选择性地应用至少两个以上不同的F函数的扩散矩阵切换机构(DSM:Diffusion Switching Mechanism),设定至少两个以上不同的矩阵作为应用于各循环的F函数中的线性变换处理的变换矩阵来得到至少两个以上不同的F函数。
在数据处理部410中,执行预先设定的密码函数,在执行密码函数时,在每个循环中适当切换与在各循环中应用的F函数对应的F函数对应表的存取用地址,从存储器420中读入与各循环的F函数对应的F函数对应表,根据表参照来获取对于输入值的输出值或中间值,得到按照各F函数的数据变换结果。
此外,保存在存储器420中的F函数对应表421~42n是使对各F函数的输入值或输入值的结构数据与F函数的输出值或中间值或它们的结构数据相对应的F函数对应表。
如上所述,通过设为这种结构,数据处理部410能够按照与各循环对应地变更的地址来获取表,执行按照各循环的F函数的数据变换处理,只要依次设定每个循环的F函数对应表的地址为在固定的密码函数中应用的自变量即可,应用一个密码函数仅改变自变量就能够执行各种密码处理。即,不需要进行不同的F函数的调用处理,能够高速地得到各循环运算(F函数)的处理结果。另外,在该结构中,不需要与各循环函数对应的逻辑电路等,能够使装置小型化、削减安装成本。
[5.密码处理装置的结构例]
最后,图10示出作为执行按照上述实施例的密码处理的密码处理装置的IC模块700的结构例。能够在例如PC、IC卡、读写器、以及其他各种信息处理装置中执行上述处理,图10所示的IC模块700能够构成在这些各种设备中。
图10所示的CPU(Central processing Unit:中央处理单元)701是执行密码处理的开始、结束、数据的发送接收控制、各结构部之间的数据传送控制、其他各种程序的处理器。存储器702由ROM(Read-Only-Memory:只读存储器)、RAM(RandomAccess Memory:随机存取存储器)等构成,其中,上述ROM保存CPU 701所执行的程序、或者运算参数等固定数据,上述RAM作为在CPU 701的处理中所执行的程序以及在程序处理中适当变化的参数的保存区域、工作区域而使用。另外,存储器702作为密码处理中所需的密钥数据、在密码处理中应用的变换表(置换表)、应用于变换矩阵的数据等的保存区域而使用。另外,如参照图8、图9说明的那样,存储器702作为上述用于得到与不同的F函数对应的输出值的F函数对应表的保存区域而使用。
如上所述,保持有与应用了不同的线性变换矩阵M0、M1…的循环函数(F函数)F0、F1…对应的表、即、将根据不同的F函数F0、F1…的输入值来算出输出值所需的值与各输入值相对应地进行保存的多个F函数对应表。此外,优选数据保存区域构成为具有耐损害结构的存储器。
密码处理部703执行例如按照共用密钥块密码处理算法的密码处理、解密处理,其中,上述共用密钥块密码处理算法是按照上述Feistel结构、扩展型Feistel结构的算法。此外,在此示出了将密码处理单元设为单独模块的例子,但是,也可以不设置这种独立的密码处理模块,而构成为例如将密码处理程序保存在ROM中,CPU 701读出ROM保存程序来执行。
随机数产生器704执行在密码处理所需的密钥的生成等中成为需要的随机数的产生处理。
发送接收部705是执行与外部的数据通信的数据通信处理部,例如执行与读写器等IC模块之间的数据通信,执行在IC模块内生成的密文的输出、或者来自外部的读写器等设备的数据输入等。
该IC模块700的密码处理部703执行例如数据序列数d=2的Feistel型密码处理或将数据序列数d设为d≥3的整数的扩展型Feistel型密码处理。另外,执行按照具有扩散矩阵切换机构(DSM:Diffusion Switching Mechanism)的Feistel结构的密码处理,其中,上述扩散矩阵切换机构选择性地应用设定至少两个以上不同的矩阵而得到的至少两个以上不同的F函数。此外,在进行密码处理时,如参照图8、图9所说明的那样,在各循环中依次切换用于获取F函数对应表的地址,执行存储器存取来获取与各F函数的输入值对应的输出值或中间值来执行循环运算,其中,上述F函数对应表用于得到与不同的F函数对应的输出值。根据该处理,不使用各种密码函数而通过利用将存取用的地址设定为自变量的一个密码函数就能够进行按照各种密码顺序的处理。
以上,一边参照特定的实施例一边详细说明了本发明。然而,在不脱离本发明要旨的范围内本领域技术人员能够进行该实施例的修改、代用是显而易见的。即,以例示这种方式公开了本发明,而不是限定地解释本发明。要判断本发明的要旨,应当参考权利要求的范围一栏。
此外,在说明书中说明的一系列处理能够通过硬件、或者软件、或者两者的复合结构来执行。在通过软件执行处理的情况下,能够将记录了处理顺序的程序安装在嵌入专用硬件中的计算机内的存储器中来执行,或者安装在能够执行各种处理的通用计算机中来执行。
例如,能够将程序预先记录到作为记录介质的硬件、ROM(Read Only Memory)中。或者,能够将程序临时或者永久地保存(记录)到软盘、CD-ROM(Compact Disc Read OnlyMemory:光盘只读存储器)、MO(Magneto optical:磁光)盘、DVD(Digital Versatile Disc:数字多功能光盘)、磁盘、半导体存储器等可移动记录介质中。能够将这种可移动记录介质作为所谓的封装软件来提供。
此外,除了从上述那样的可移动记录介质对计算机安装程序之外,还能够从下载站点向计算机无线传送程序,或者通过LAN(Local Area Network:局域网)、因特网这种网络向计算机有线传送程序,在计算机中接收这样传送过来的程序,并安装到内置的硬盘等记录介质中。
此外,说明书中所记载的各种处理不仅可以按照记载以时间序列执行,也可以根据执行处理的装置的处理能力或者需要并行或者个别地执行。另外,在本说明书中,系统是指多个装置的逻辑集合结构,并不限于各结构的装置存在于同一壳体内。
产业上的可利用性
如上所述,根据本发明的一个实施例的结构,在通过作为循环函数而选择性地应用了至少两种以上的不同的F函数循环运算执行密码处理的结构中,在存储器中保存使与各F函数对应的输入值与输出值或中间值相对应的多个F函数对应表,按照预先规定的密码处理顺序,应用与各循环的F函数对应的表存取用地址来从存储器中读入F函数对应表,根据表参照获取对于输入值的输出值或中间值,得到按照各F函数的数据变换结果。根据本结构,按照与各循环对应地变更的地址来获取各F函数对应表,能够高效率地获取或算出与输入值对应的输出值。例如,应用一个密码函数,仅改变自变量就能够执行各种密码处理。
权利要求书(按照条约第19条的修改)
1.(修改后)一种密码处理装置,执行Feistel型共用密钥块密码处理,其特征在于,具有:
数据处理部,其将具有线性变换部和非线性变换部的F函数作为循环函数并反复执行,选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算;以及
存储器,其保存有多个F函数对应表,该多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应,
其中,上述数据处理部是如下结构:按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址,通过应用了获取地址的存储器存取来读入与各循环的F函数对应的F函数对应表,根据表参照获取对于输入值的输出值或者中间值来得到按照各F函数的数据变换结果。
2.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行按照Feistel结构的密码处理,该Feistel结构具有选择性地应用至少两个以上不同的F函数的扩散矩阵切换机构(DSM:Diffusion SwitchingMechanism),设定至少两个以上不同的矩阵作为应用于各循环的F函数中的线性变换处理的变换矩阵来得到至少两个以上不同的F函数。
3.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行基于Feistel结构的密码处理,该Feistel结构按照将密码处理对象数据进行二分割的数据序列数(分割数)d=2的设定来执行密码处理。
4.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行基于扩展型Feistel结构的密码处理,该扩展型Feistel结构按照将密码处理对象数据分割为三个以上的数据序列数(分割数)d≥3的设定来执行密码处理。
5.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行预先设定的密码函数,在执行该密码函数时,在每个循环中适当地切换与在各循环中应用的F函数对应的F函数对应表的存取用地址,读入与各循环的F函数对应的F函数对应表,根据表参照获取对于输入值的输出值或中间值来得到按照各F函数的数据变换结果。
6.根据权利要求1所述的密码处理装置,其特征在于,
上述存储器是如下结构:保存有F函数对应表,该F函数对应表使对各F函数的输入值或输入值的结构数据与F函数的输出值或中间值或它们的结构数据相对应。
7.(修改后)一种密码处理方法,在密码处理装置中执行Feistel型共用密钥块密码处理,该密码处理方法的特征在于,
具有数据处理步骤,该数据处理步骤在密码处理部中将具有线性变换部和非线性变换部的F函数作为循环函数并反复执行,选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算,
其中,上述数据处理步骤具有以下步骤:
按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址;
执行应用了上述获取地址的存储器存取,从保存有多个F函数对应表的存储器中读入与各循环的F函数对应的F函数对应表,其中,上述多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应;以及
参照从存储器中读入的表,获取对于F函数输入值的输出值或中间值来得到按照各F函数的数据变换结果。
8.(修改后)一种计算机程序,使密码处理装置执行Feistel型共用密钥块密码处理,该计算机程序的特征在于,
具有数据处理步骤,该数据处理步骤使数据处理部将具有线性变换部和非线性变换部的F函数作为循环函数并反复执行,选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算,
上述数据处理步骤执行如下步骤:
按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址;
执行应用了上述获取地址的存储器存取,从保存有多个F函数对应表的存储器中读入与各循环的F函数对应的F函数对应表,其中,上述多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应;以及
参照从存储器中读入的表,获取对于F函数输入值的输出值或中间值来获取按照各F函数的数据变换结果。
基于条约第19条(1)修改时的声明
(1)关于权利要求的修改
独立权利要求1、7、8的修改是明确如下结构的修改:“数据处理部所执行的处理是将具有线性变换部和非线性变换部的F函数作为循环函数并反复执行的处理,选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算”。
例如在说明书第8页[0032]~说明书第9页[0035]等中记载有这次的修改内容。
(2)关于与对比文件的差异
在国际调查报告中示出的文献1:Fast Software EncryptionFunctions,Lecture Notes in Computer Science,Vol.537,p.476-501,1991.12.26 especially Khuhu以及文献2:US5003597A中记载有选择应用两种S-Box的结构,但是没有如本申请发明这样公开选择应用具有线性变换部和非线性变换部的F函数的结构。在国际调查报告示出的其它文献3、4中也没有公开选择应用具有线性变换部和非线性变换部的F函数的结构。
本申请的该结构是在任何对比文件中都没有记载的独具的结构。

Claims (8)

1.一种密码处理装置,执行Feistel型共用密钥块密码处理,其特征在于,具有:
数据处理部,其选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算;以及
存储器,其保存有多个F函数对应表,该多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应,
其中,上述数据处理部是如下结构:按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址,通过应用了获取地址的存储器存取来读入与各循环的F函数对应的F函数对应表,根据表参照获取对于输入值的输出值或者中间值来得到按照各F函数的数据变换结果。
2.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行按照Feistel结构的密码处理,该Feistel结构具有选择性地应用至少两个以上不同的F函数的扩散矩阵切换机构(DSM:Diffusion SwitchingMechanism),设定至少两个以上不同的矩阵作为应用于各循环的F函数中的线性变换处理的变换矩阵来得到至少两个以上不同的F函数。
3.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行基于Feistel结构的密码处理,该Feistel结构按照将密码处理对象数据进行二分割的数据序列数(分割数)d=2的设定来执行密码处理。
4.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行基于扩展型Feistel结构的密码处理,该扩展型Feistel结构按照将密码处理对象数据分割为三个以上的数据序列数(分割数)d≥3的设定来执行密码处理。
5.根据权利要求1所述的密码处理装置,其特征在于,
上述数据处理部是如下结构:执行预先设定的密码函数,在执行该密码函数时,在每个循环中适当地切换与在各循环中应用的F函数对应的F函数对应表的存取用地址,读入与各循环的F函数对应的F函数对应表,根据表参照获取对于输入值的输出值或中间值来得到按照各F函数的数据变换结果。
6.根据权利要求1所述的密码处理装置,其特征在于,
上述存储器是如下结构:保存有F函数对应表,该F函数对应表使对各F函数的输入值或输入值的结构数据与F函数的输出值或中间值或它们的结构数据相对应。
7.一种密码处理方法,在密码处理装置中执行Feistel型共用密钥块密码处理,该密码处理方法的特征在于,
具有数据处理步骤,该数据处理步骤在密码处理部中选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算,
其中,上述数据处理步骤具有以下步骤:
按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址;
执行应用了上述获取地址的存储器存取,从保存有多个F函数对应表的存储器中读入与各循环的F函数对应的F函数对应表,其中,上述多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应;以及
参照从存储器中读入的表,获取对于F函数输入值的输出值或中间值来得到按照各F函数的数据变换结果。
8.一种计算机程序,使密码处理装置执行Feistel型共用密钥块密码处理,该计算机程序的特征在于,
具有数据处理步骤,该数据处理步骤使数据处理部选择性地应用至少两种以上不同的F函数作为循环函数来执行多个循环的循环运算,
上述数据处理步骤执行如下步骤:
按照预先规定的密码处理顺序获取与在各循环中应用的F函数对应的F函数对应表的存取用地址;
执行应用了上述获取地址的存储器存取,从保存有多个F函数对应表的存储器中读入与各循环的F函数对应的F函数对应表,其中,上述多个F函数对应表使分别与上述两种以上不同的F函数对应的输入值与输出值或中间值相对应;以及
参照从存储器中读入的表,获取对于F函数输入值的输出值或中间值来获取按照各F函数的数据变换结果。
CN200780040630XA 2006-09-01 2007-08-29 密码处理装置和密码处理方法 Expired - Fee Related CN101553856B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006238226A JP5023624B2 (ja) 2006-09-01 2006-09-01 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP238226/2006 2006-09-01
PCT/JP2007/066731 WO2008026623A1 (fr) 2006-09-01 2007-08-29 Dispositif de codage, procédé de codage et programme informatique

Publications (2)

Publication Number Publication Date
CN101553856A true CN101553856A (zh) 2009-10-07
CN101553856B CN101553856B (zh) 2011-04-20

Family

ID=39135905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780040630XA Expired - Fee Related CN101553856B (zh) 2006-09-01 2007-08-29 密码处理装置和密码处理方法

Country Status (6)

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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598574A (zh) * 2009-10-27 2012-07-18 日本电气株式会社 块加密装置、块加密方法以及程序
CN103427988A (zh) * 2013-07-26 2013-12-04 青岛海信宽带多媒体技术有限公司 数据加密及解密方法
CN105359450A (zh) * 2013-03-27 2016-02-24 爱迪德技术有限公司 防篡改密码算法实现
CN111373464A (zh) * 2017-08-10 2020-07-03 索尼公司 加密装置、加密方法、解密装置以及解密方法
CN112005288A (zh) * 2018-04-26 2020-11-27 日本电信电话株式会社 秘密聚合中值系统、秘密计算装置、秘密聚合中值方法、以及程序

Families Citing this family (11)

* 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
US8363828B2 (en) * 2009-02-09 2013-01-29 Intel Corporation Diffusion and cryptographic-related operations
WO2010109516A1 (ja) * 2009-03-23 2010-09-30 富士通株式会社 データ処理装置及びデータ処理方法
TWI452889B (zh) * 2009-04-30 2014-09-11 Sumitomo Electric Industries 加密密鑰產生裝置
JP5605197B2 (ja) * 2010-12-09 2014-10-15 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP2015191106A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
WO2016059870A1 (ja) * 2014-10-14 2016-04-21 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP6877889B2 (ja) * 2016-04-08 2021-05-26 ソニーグループ株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
FR3060804B1 (fr) * 2016-12-21 2021-01-22 Safran Identity & Security Procede de configuration d'un programme cryptographique destine a etre execute par un terminal

Family Cites Families (16)

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

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598574A (zh) * 2009-10-27 2012-07-18 日本电气株式会社 块加密装置、块加密方法以及程序
US8891758B2 (en) 2009-10-27 2014-11-18 Nec Corporation Block encryption device and method and computer program
CN102598574B (zh) * 2009-10-27 2014-12-17 日本电气株式会社 块加密装置、块加密方法以及程序
CN105359450A (zh) * 2013-03-27 2016-02-24 爱迪德技术有限公司 防篡改密码算法实现
US10127390B2 (en) 2013-03-27 2018-11-13 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
CN105359450B (zh) * 2013-03-27 2020-08-07 爱迪德技术有限公司 防篡改密码算法实现
CN103427988A (zh) * 2013-07-26 2013-12-04 青岛海信宽带多媒体技术有限公司 数据加密及解密方法
CN111373464A (zh) * 2017-08-10 2020-07-03 索尼公司 加密装置、加密方法、解密装置以及解密方法
CN112005288A (zh) * 2018-04-26 2020-11-27 日本电信电话株式会社 秘密聚合中值系统、秘密计算装置、秘密聚合中值方法、以及程序
CN112005288B (zh) * 2018-04-26 2023-08-04 日本电信电话株式会社 秘密聚合中值系统、秘密计算装置、秘密聚合中值方法、以及记录介质

Also Published As

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

Similar Documents

Publication Publication Date Title
CN101553856B (zh) 密码处理装置和密码处理方法
CN101512620B (zh) 密码处理装置和密码处理方法
CN101496080B (zh) 密码处理装置、密码处理算法构建方法和密码处理方法
Derbez et al. Meet-in-the-middle attacks and structural analysis of round-reduced PRINCE
CN101176134B (zh) 信息处理装置
CN101512618B (zh) 共用密钥块密码处理装置和共用密钥块密码处理方法
CN101536062B (zh) 密码处理装置和密码处理方法
Doröz et al. Toward practical homomorphic evaluation of block ciphers using prince
CN101375323B (zh) 密码处理装置、密码处理装置制造装置及方法
Biryukov et al. Differential analysis and meet-in-the-middle attack against round-reduced TWINE
CN101162557A (zh) 密码处理装置和密码处理方法、以及计算机程序
CN108718231A (zh) 一种全同态加密方法、装置和计算机可读存储介质
CN101371286A (zh) 密码处理装置和密码处理方法、以及计算机程序
CN102204158A (zh) 低等待时间的分块密码术
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
Gérault et al. Related-key cryptanalysis of midori
Ji et al. Improved (related-key) differential cryptanalysis on GIFT
Derbez et al. Revisiting related-key boomerang attacks on AES using computer-aided tool
Song et al. Optimizing rectangle attacks: a unified and generic framework for key recovery
CN102713994B (zh) 加密装置
Liu et al. Differential cryptanalysis of PRESENT-like cipher
Shakiba et al. Non-isomorphic biclique cryptanalysis and its application to full-round mCrypton
Liu et al. Improved slender-set linear cryptanalysis
Zhang et al. New Rectangle Attack Against SKINNY Block Cipher
AU716807B2 (en) Method and apparatus for encrypting data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110420

Termination date: 20150829

EXPY Termination of patent right or utility model