CN106233660A - 加密处理设备、加密处理方法和程序 - Google Patents

加密处理设备、加密处理方法和程序 Download PDF

Info

Publication number
CN106233660A
CN106233660A CN201580015016.2A CN201580015016A CN106233660A CN 106233660 A CN106233660 A CN 106233660A CN 201580015016 A CN201580015016 A CN 201580015016A CN 106233660 A CN106233660 A CN 106233660A
Authority
CN
China
Prior art keywords
key
matrix
linear
diffusion
row
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
CN201580015016.2A
Other languages
English (en)
Other versions
CN106233660B (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 CN106233660A publication Critical patent/CN106233660A/zh
Application granted granted Critical
Publication of CN106233660B publication Critical patent/CN106233660B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • 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/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

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

Abstract

一种加密处理系统包括加密处理电路,其对输入数据执行轮计算并且生成输出数据;以及密钥调度电路,其将在加密处理电路中使用的密钥数据输出到加密处理电路。由加密处理电路执行的每一轮计算包括由线性转换电路执行的线性转换处理,并且线性转换电路根据轮变换来改变线性转换处理的线性转换模式。

Description

加密处理设备、加密处理方法和程序
相关申请的交叉引用
本申请要求2014年3月28日提交的日本优先权专利申请JP 2014-068290的权益,所述申请的全部内容以引用的方式并入本文。
技术领域
本公开涉及一种加密处理设备、一种加密处理方法和一种程序,更具体来说,涉及用于执行公用密钥系统加密的一种加密处理设备、一种加密处理方法和一种程序。
背景技术
随着信息社会的进步,用于保护安全处理的信息的信息安全技术已变得重要。作为信息安全技术的构成要素之一,有一种加密技术。目前,加密技术已在各种产品或系统中被起诉。
有各种加密处理算法。作为基本技术之一,有一种称为公用密钥块加密的技术。在公用密钥块加密中,公用密钥被用作用于加密的密钥和用于解密的密钥。在这两种加密处理和解密处理中,从公用密钥生成多个密钥。以块为某些单位,例如,以64位、128位、256位等的块数据为单位来重复执行数据转换处理。
作为公用密钥块加密的代表性的算法,已知有先前的美国国家标准、数据加密标准(DES)和现在的美国国家标准、高级加密标准(AES)。已在目前不断提出其他各种公用密钥块加密。索尼公司在2007年提出的CLEFIA也是公用密钥块加密中的一个。
作为公开公用密钥块加密的相关技术中的一种技术,例如,有PTL 1(日本未审查专利申请公开号2012-215813)。
公用密钥块加密的这种算法主要包括:加密处理单元,其具有重复执行输入数据转换的轮函数执行单元;以及密钥调度单元,其生成在轮函数单元的每一轮要应用的轮密钥。密钥调度单元首先生成扩展密钥,所述扩展密钥基于主密钥(主要密钥)(其是秘密密钥)增加位数,并且基于生成的扩展密钥生成要应用于加密处理单元的每个轮函数单元的轮密钥(子密钥)。
作为执行这种算法的特定结构,有重复执行轮函数的现有的结构,其包括线性转换单元和非线性转换单元。例如,作为代表结构,有代换-置换网络(SPN)结构、Feistel结构、扩展型Feistel结构等。
这些算法都具有重复执行轮函数的结构(包括线性转换单元和非线性转换单元),并且将纯文本转换成密文。
引文列表
专利文献
PTL 1:日本未审查专利申请公开号2012-215813
发明内容
技术问题
例如,作为试图解密加密算法或秘密密钥的攻击,有差分攻击、线性攻击等。对于加密处理设备,对这些各种攻击的抵抗、高速处理、小型化等是必要的。
需要提供一种加密处理设备、一种加密处理方法和一种程序,其实现在加密处理设备中必要的各种因素的改善,诸如安全、高速和小型化。
问题的解决方案
根据本公开的第一实施方案,提供一种加密处理系统,包括加密处理电路,其对输入数据执行轮计算并且生成输出数据;以及密钥调度电路,其将在加密处理电路中使用的密钥数据输出到加密处理电路。由加密处理电路执行的每一轮计算包括由线性转换电路执行的线性转换处理,并且线性转换电路根据轮变换来改变线性转换处理的线性转换模式。
根据本公开的第二实施方案,提供一种在加密处理系统中执行的加密处理方法,其中处理方法包括用加密处理电路对输入数据执行轮计算并且生成输出数据,以及用密钥调度电路将在加密处理电路中使用的密钥数据输出到加密处理电路。在执行步骤中,方法包括使加密处理电路在轮计算中通过线性转换电路执行线性转换处理;并且在执行步骤中,方法包括使线性转换电路根据轮变换来执行线性转换模式。
根据本公开的第三实施方案,提供一种用计算机可读指令编码的非暂时性计算机可读介质,所述指令在由处理器执行时使处理器执行方法,所述方法包括在加密处理电路中对输入数据执行轮计算并且生成输出数据,以及在密钥调度电路中将在加密处理电路中使用的密钥数据输出到加密处理电路。在执行步骤中,方法包括使加密处理电路在轮计算中通过线性转换电路执行线性转换处理,并且在执行步骤中,方法包括使线性转换电路根据轮变换来执行线性转换模式。
根据本公开的实施方案的程序是提供给例如信息处理设备或计算机系统的程序,所述信息处理设备或计算机系统能够通过例如存储介质执行各种程序代码。当信息处理设备或计算机系统中的程序执行单元执行程序时,实现根据该程序的处理。
本公开的实施方案的其他目的、特征和优点将基于将要描述的本公开的实施方案和附图从更详细的描述中显而易见。本说明书中的系统是指多个设备的逻辑集合,并且不限于设备存在于同一壳体内的配置。
发明的有益效果
根据本公开的实施方案,实现对各种攻击的抵抗提高并且安全性高的加密处理配置。
具体来说,包括加密处理单元,其被配置成对输入数据重复执行轮计算并且生成输出数据。包括密钥调度单元,其被配置成将在加密处理单元中使用的密钥数据输出到加密处理单元。根据轮变换来改变在由加密处理单元执行的轮计算中线性转换单元的线性转换处理。例如,列扩散计算和行扩散计算被切换成根据轮变换来执行,在列扩散计算中通过以状态的每一列的分量为单位将矩阵应用到每一列来执行线性转换,在行扩散计算中通过以状态的每一行的分量单元为单位应用矩阵来执行线性转换。
扩散性通过这个配置提高,从而实现了对各种攻击的抵抗提高并且安全性高的加密处理配置。
本说明书中所描述的有益效果仅仅是示例性的并且不受限制,并且可以获得额外的有益效果。
附图说明
图1是图示对应于k位密钥长度的n位公用密钥块加密算法的说明图。
图2是图示对应于n位公用密钥块加密算法的解密算法的说明图,所述n位公用密钥块加密算法对应于图1中所示的k位密钥长度。
图3是图示密钥调度单元与加密处理单元之间的关系的说明图。
图4是图示加密处理单元的配置的实例的说明图。
图5是图示具有SPN结构的轮函数的实例的说明图。
图6是图示具有Feistel结构的轮函数的实例的说明图。
图7是图示扩展型Feistel结构的实例的说明图。
图8是图示扩展型Feistel结构的实例的说明图。
图9是图示非线性转换单元的配置的实例的说明图。
图10是图示线性转换单元的配置的实例的说明图。
图11是图示关于状态(状态表示数据)的数据转换处理的实例的说明图。
图12是图示关于状态的数据转换处理的实例的说明图。
图13A是图示关于状态的数据转换处理的实例的说明图。
图13B是图示关于状态的数据转换处理的实例的说明图。
图14是图示关于状态的数据转换处理的实例的说明图。
图15是图示关于状态的列扩散计算处理的说明图。
图16是图示关于状态的列扩散计算处理的说明图。
图17是图示关于状态的行扩散计算处理的说明图。
图18是图示关于状态的行扩散计算处理的说明图。
图19是图示根据本公开的实施方案的加密处理设备的配置的实例的说明图。
图20是图示根据本公开的实施方案的加密处理设备的配置的实例的说明图。
图21是图示由加密处理单元执行的数据转换处理的实例的说明图。
图22A是图示加密处理单元的非线性转换单元和线性转换单元的配置和处理的说明图。
图22B是图示加密处理单元的非线性转换单元和线性转换单元的配置和处理的说明图。
图23是图示加密处理单元的线性转换单元的配置和处理的说明图。
图24A是图示应用到线性转换处理的矩阵的说明图。
图24B是图示应用到线性转换处理的矩阵的说明图。
图25A是图示由线性转换单元P1执行的列扩散计算的说明图。
图25B是图示由线性转换单元P1执行的列扩散计算的说明图。
图26A是图示由线性转换单元P2执行的行扩散计算的说明图。
图26B是图示由线性转换单元P2执行的行扩散计算的说明图。
图27A是图示由线性转换单元P3执行的行扩散计算的说明图。
图27B是图示由线性转换单元P3执行的行扩散计算的说明图。
图28是图示加密处理单元的线性转换单元的配置和处理的说明图。
图29是图示在相同的线性转换处理被配置成在加密处理单元的线性转换单元中执行时的配置的说明图。
图30是图示在不同的线性转换处理被配置成在加密处理单元的线性转换单元中执行时和在相同的线性转换处理被配置成执行时,活跃S盒的数量的比较数据的说明图。
图31是图示在不同的线性转换处理被配置成在加密处理单元的线性转换单元中执行时和在相同的线性转换处理被配置成执行时,活跃S盒的数量的比较数据的说明图。
图32是图示密钥调度单元的配置和处理的说明图。
图33是图示密钥调度单元的密钥转换单元的配置和处理的说明图。
图34是图示密钥调度单元的密钥转换单元的配置和处理的说明图。
图35是图示通过密钥调度单元的密钥转换单元的转换处理执行的数据扩散处理的说明图。
图36A是图示执行密钥转换处理的配置与不执行密钥转换处理的配置之间的对比的说明图。
图36B是图示执行密钥转换处理的配置与不执行密钥转换处理的配置之间的对比的说明图。
图37是图示执行密钥转换处理的配置与不执行密钥转换处理的配置之间的对比的说明图。
图38是图示执行密钥转换处理的配置与不执行密钥转换处理的配置之间的对比的说明图。
图39是图示密钥调度单元的配置和处理的说明图。
图40A是图示在密钥转换函数不具有对合性时密钥调度单元的配置和处理的说明图。
图40A是图示在密钥转换函数不具有对合性时密钥调度单元的配置和处理的说明图。
图41A是图示在密钥转换函数具有对合性时密钥调度单元的配置和处理的说明图。
图41B是图示在密钥转换函数具有对合性时密钥调度单元的配置和处理的说明图。
图42是图示密钥调度单元的配置和处理的说明图。
图43A是图示密钥调度单元的配置和处理的说明图。
图43B是图示密钥调度单元的配置和处理的说明图。
图44是图示在密钥转换函数G具有全扩散性时的加密处理配置的说明图。
图45是图示在不执行密钥转换时的配置和处理的说明图。
图46是图示16位替换处理的说明图。
图47是图示应用全扩散4位函数和16位替换函数的密钥转换处理的实例的说明图。
图48是图示应用全扩散4位函数和16位替换函数的密钥转换处理的实例的说明图。
图49是图示应用全扩散4位函数和16位替换函数的密钥转换处理的实例的说明图。
图50是图示应用全扩散4位函数和16位替换函数的密钥转换处理的实例的说明图。
图51是图示应用全扩散4位函数和16位替换函数的密钥转换处理的实例的说明图。
图52是图示分割密钥的替换函数G1和G2的设置实例的说明图。
图53是图示加密处理单元的常数输入配置的实例的说明图。
图54是图示具有对合性的加密处理单元的配置的实例的说明图。
图55A是图示具有对合性的加密处理单元的问题的说明图。
图55B是图示具有对合性的加密处理单元的问题的说明图。
图56是图示加密处理单元的常数输入配置的实例的说明图。
图57是图示加密处理单元的常数输入配置的实例的说明图。
图58是图示加密处理单元的常数输入配置的实例的说明图。
图59是图示加密处理单元的常数输入配置的实例的说明图。
图60是图示基于活跃S盒的安全评估处理的说明图。
图61是图示基于活跃S盒的安全评估处理的说明图。
图62是图示基于活跃S盒的安全评估处理的说明图。
图63是图示加密处理单元的常数输入配置的实例的说明图。
图64是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图65是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图66是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图67是图示加密处理单元的非线性转换单元的S盒的线性转换层的配置的实例的说明图。
图68是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图69是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图70是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图71是图示加密处理单元的非线性转换单元的S盒的配置的实例的说明图。
图72是图示加密处理设备的配置的实例的说明图。
图73是图示充当加密处理设备的IC模块700的配置的实例的说明图。
图74是图示具有加密处理执行函数的智能手机的配置的实例的图解。
具体实施方式
在下文中,将参照附图详细地描述根据本公开的实施方案的加密处理设备、加密处理方法和程序。将在下面的章节中进行描述。
1.公用密钥块加密的概述
2.公用密钥块加密的安全指数
3.安全性提高的公用密钥加密处理的整个配置的概述
4.加密处理单元的线性转换单元的配置和处理
5.密钥调度单元的配置和处理
5-1.密钥调度单元的配置和处理的描述
5-2.基于密钥调度单元的全扩散性的有益效果
5-3.基于密钥转换单元的对合性的有益效果
5-3-a.展开安装的有益效果
5-3-b.轮安装的有益效果
5-4.密钥调度单元的配置的结论和本公开的实施方案的有益效果
5-5.密钥调度单元的其他配置的实例
5-6.包括具有全扩散性的密钥调度单元的配置的实例
6.实现常数输入的安全性提高的配置
6-1.实现常数输入的安全性提高的相关技术的配置和问题
6-2.具有安全性高的常数输入配置的加密处理设备的配置
6-3.常数插入位置的变化
7.应用到非线性转换单元的S盒的具体配置实例
8.加密处理设备的具体实例
9.加密处理设备的安装实例
10.本公开的实施方案的配置的结论
<1.公用密钥块加密的概述>
首先,将描述公用密钥块加密的概述。
(1-1.公用密钥块加密)
这里,公用密钥块加密(在下文中也称为块加密)旨在指以下定义。
块加密接收纯文本P和密钥K作为输入并且输出密文C。纯文本和密文中的每个的位长度被称为块大小,并且用例如“块大小=n”指示。这里,n可以采用任何整数值,但通常是对于每个块加密算法预先确定的一个值。块长度是n的块加密也被称为n位块加密。
密钥的位长度用k指示。密钥可以采用任何整数值。公用密钥块加密算法对应于一个密钥大小或多个密钥大小。例如,某一块加密算法A被假定具有对应于块大小“n=128”和密钥大小“k=128”、“k=192”或“k=256”的配置。
纯文本P:n位
密文C:n位
密钥K:k位
图1是图示对应于k位密钥长度的n位公用密钥块加密算法E的图解。对应于加密算法E的解密算法D可以被定义为加密算法E的反函数E-1,并且接收密文c和密钥k作为输入并且输出纯文本P。图2是图示对应于图1中所示的加密算法E的解密算法D的图解。
(1-2.内部配置)
块加密可以被认为是分为两部分。一部分是“密钥调度单元”,其在某一确定步骤中接收秘密密钥K作为输入并且输出要应用到加密处理单元的每一轮的轮密钥,并且另一部分是“加密处理单元”,其从密钥调度单元输入纯文本P和轮密钥,执行数据转换,并且输出密文C。
在图3中图示这两部分之间的关系。
加密处理单元被配置成在许多情况下也执行输入密文C并且输出纯文本P的解密处理。在这种情况下,加密处理单元也执行解密处理,从密钥调度单元提供的轮密钥被应用到该解密处理。
在图3中图示这两部分之间的关系。
(1-3.加密处理单元)
在以下实施方案中使用的加密处理单元被假定分为称为轮函数的处理单元。轮函数对输入数据执行预定数据转换并且输出转换后的数据。在加密期间输入到轮函数的输入数据是例如n位数据。轮函数在某一轮的输出被配置成提供为在下一轮的输入。作为轮函数的一个配置,包括与基于从密钥调度单元输出的密钥生成的轮密钥的计算的配置。具体来说,执行在加密期间n位数据和轮密钥的异或计算。
轮函数的总数被称为总轮数,并且是对于每个加密算法预先确定的值。
当X1被假定是在加密处理单元的输入侧上在第一轮的输入数据,Xi是输入到第i个轮函数的数据,并且RKi被假定是轮密钥时,则整个加密处理单元如图4中所示。
(1-4.轮函数)
轮函数可以根据块加密算法采取各种形式。轮函数可以根据由加密算法采用的结构进行分类。作为代表结构,在本文中例示代换-置换网络(SPN)结构、Feistel结构和扩展型Feistel结构。
(A)代换-置换网络(SPN)结构的轮函数
这个结构是将异或计算、非线性转换、线性转换等应用到所有的n位输入数据的结构。没有特别确定计算的顺序。图5图示SPN结构的轮函数的实例。线性转换单元也被称为置换层(P层)。
(B)Feistel结构
n位输入数据被分为两块n/2位数据。具有一块数据和轮密钥作为输入的函数(F函数)被应用,并且输出和另一块数据进行异或。此后,通过置换数据的右侧和左侧获得的数据被设置为输出数据。有F函数的各种类型的内部配置。基本上,如在SPN结构中,内部配置是在异或计算、非线性转换和线性转换与轮密钥数据的组合来实现。图6图示Feistel结构的轮函数的实例。
(C)扩展型Feistel结构
扩展型Feistel结构是从数据分割的数量是2的Feistel结构扩展到数据分割的数量是3或更多的结构的结构。当d被假定是分割数时,各种扩展型Feistel结构可以用d来定义。由于F函数的输入/输出的大小相对减小,故F函数被认为是适合于紧凑的安装。图7图示在d=4并且两个F函数并行应用在一轮时扩展型Feistel结构的实例。图8图示在d=8并且一个F函数应用在一轮时扩展型Feistel结构的实例。
(1-5.非线性转换单元)
当要被输入的数据的大小增加时,安装成本趋向于在非线性转换单元中增加。为了避免安装成本的增加,在许多情况下实现目标数据被分为多个单元并且对每个单元执行非线性转换的配置。例如,可以实现数据具有ms位的输入大小并被分为s位的m块数据,并且执行具有s位输入/输出的非线性转换的配置。以s位为单位的非线性转换执行单元被称为S盒。在图9中图示S盒的实例。
图9中所示的实例说明了一个配置,其中ms位输入数据被分为m块s位数据,这些块的分割数据被输入到执行s位的非线性转换处理的m个S盒,通过连接S盒的输出获得ms位的非线性转换结果。
(1-6.线性转换单元)
线性转换单元可以从其性质被定义为矩阵。矩阵的分量可以被一般表示为各种分量,诸如扩展字段GF(28)的字段分量或GF(2)的分量。图10图示线性转换单元的实例,所述线性转换单元具有ms位输入和输出并且通过在GF(2s)上定义的m*m矩阵来定义。
(1-7.使用状态的数据表达式)
当表示每一块数据(纯文本、密文、密钥等)时,在某些情况下数据被表示为m*n排列数据,其中数据具有m行和n列的矩阵类型。用m*n排列表示的数据被称为状态或状态表示数据。
图11图示一个实例,其中当A假定是输入数据并且B是关于输入数据A的数据转换后的输出数据时,输入数据A和输出数据B各自表示为具有m*n排列的状态。
输入数据A是扩展字段GF(2s)mn的分量并且输入数据A=(a0a1a2...amn-2amn-1)。
此外,a0是MSB并且amn-1是在LSB侧的位数据。
同样地,输出数据B是扩展字段GF(2s)mn的分量并且输出数据B=(b0b1b2...bmn- 2bmn-1)。
此外,b0是MSB并且bmn-1是在LSB侧的位数据。
如图所示,m*n排列的状态包括m*n分量。
例如,图11中所示的状态A包括a0至amn-1的mn分量。状态B的分量是b0至bnm-1的mn分量。
mn分量中的每个由s(其中s=1或更多)位数据形成。具体来说,每个分量是例如位数据,诸如4位数据或8位(1字节)数据。
以下实施方案将被描述为每个分量被设置为4位数据的实施方案。然而,根据本公开的实施方案的处理适用于除了4位分量数据以外的配置。
图12图示当包括在4*4状态中的十六个分量中的每个分量被设置为4位数据时4*4状态的实例。
如在图11中,在图12中所示的实例中,A假定是输入数据并且B假定是在某一数据转换后的输出数据。
输入数据A是扩展字段GF(24)4*4的分量并且输入数据A=(a0a1a2...a14a15)。
此外,a0是MSB并且a15是在LSB侧的位数据。
同样地,输出数据B是扩展字段GF(24)4*4的分量并且输出数据B=(b0b1b2...b14b15)。
此外,b0是MSB并且b15是在LSB侧的位数据。
图12中所示的实例是一个实例,其中输入数据A和输出数据B表示为具有由分量形成的4*4排列的状态,每个分量是4位数据。
例如,图12中所示的状态A包括十六个分量a0至a15,并且每个分量是4位数据。
即,当64位输入数据A指示为一个状态时,输入数据可以表示为具有由图12中所示的分量形成的4*4排列的状态A,每个分量是4位数据。
同样地,图12中所示的状态B包括十六个分量b0至b15,并且每个分量是4位数据。
即,当64位输出数据B指示为一个状态时,输出数据B可以表示为具有由图12中所示的分量形成的4*4排列的状态B,每个分量是4位数据。
(1-8.关于状态表示数据的基本计算)
接着,将描述关于状态(状态表示数据)的计算处理。
(1)非线性转换处理(S)
例如,通过应用以状态的每个分量的4位为单位执行非线性转换的多个S盒,执行非线性转换处理。
如图13A中所示,状态B假定是通过关于输入状态A的非线性转换处理来生成。
在这种情况下,以每个分量的4位为单位的输出bi与输入ai之间的关系如下:
bi=S(ai),
其中i=0,1,...,15。
(2)线性转换处理(P)
如图13B中所示,状态B假定是通过关于输入状态A的线性转换处理来生成。
关于4*4状态的线性转换处理被执行为例如关于以4*4状态的每一行的4块数据作为向量的计算,用4*4矩阵[M]执行计算,并且更新值。这个处理被称为行扩散计算。
以转换处理后的状态的每个分量的4位为单位的输出bi与输入ai之间的关系如下:
t(bi,bi+4,bi+8,bi+12)=M*t(ai,ai+4,ai+8,ai+12),
其中i=0、1、2和3。
此外,tX指示X的转置矩阵。作为线性转换处理,除这种行扩散计算之外,还有各种处理方法(诸如列扩散计算和位替换)。
(3)异或计算(密钥应用计算处理(K))
如图14中所示,状态B假定是通过关于输入状态A的异或处理来生成。
例如,计算被执行为通过从密钥调度单元输出的轮密钥K的异或计算来计算输出数据B以及输入数据A。所有的输入数据A、轮密钥K和输出数据B是表示为由十六个4位分量形成的状态的64位数据。
以转换处理后的状态的每个分量的4位为单位的输出bi、输入ai和轮密钥ki之间的关系如下:
bi=ai(XOR)ki
其中i=0、1、...、和15。
上述表达式中的(XOR)指示异或计算。
以上述计算(1)至(3)的预定顺序按顺序执行的计算的组合来设置一轮计算。通过对输入数据重复执行轮计算来生成并输出该输出数据(例如,加密数据)。
通过执行每一个的与轮密钥的异或计算、线性转换处理和非线性转换处理一次来设置基本轮计算。然而,在加密处理序列中执行的轮计算中,也可以设置不规则的轮计算配置。例如,也可以设置与另一轮计算不同的轮计算,例如,在包括多次与轮密钥的异或计算或线性转换处理的轮计算被省略的配置中。
在许多情况下使用只在第一个或最后一个加密处理序列中执行与轮密钥的计算的配置。这个处理被称为密钥白化处理,并且一般不计为轮数。
(1-9.关于状态表示数据的列扩散计算)
接着,将参照图15和图16描述关于指示为m*n矩阵排列的状态表示数据的列扩散计算处理。
X0,X1,...,Xn-1中的每个被设置为m*m矩阵,其中每个分量是GF(2s)的分量。
如图15中所示,以下计算,即,将状态的每一列(0至n-1)和对应于每一列的矩阵X0,X1,...,Xn-1的分量应用到状态表示数据的分量的矩阵计算被定义为列扩散计算:
MC[X0,X1,...,Xn-1]。
MC指以列为单位的扩散((混合Mix)),即,(列混合(MixColumn))。
在列扩散计算中,执行将一个矩阵Xk应用到状态的一列的分量的矩阵计算。
应用到包括在状态中的多个列中的每个的矩阵Xk可以被设置为相同的矩阵或可以被设置为不同的矩阵。
例如,通过对状态A(其是输入数据)执行列扩散计算来计算状态B(其是输出数据)的计算表达式可以表示为如下:
B=MC[X0,X1,...,Xn-1](A)。
如图15的下半部分所示,列扩散计算处理是由以下表达式表示的处理。
即,由上述计算表达式计算的状态B的分量如下:
t(b0b1...bm-1)=X0*t(a0a1...am-1),
t(bmbm+1...b2m-1)=X1*t(amam+1...a2m-1),...,以及
t(b(n-1)mb(n-1)m+1...bnm-1)=Xn-1*t(a(n-1)ma(n-1)m+1...anm-1)。
在上述表达式中,t(b1b2...bk)指示(b1b2...bk)的转置矩阵。
当根据实际状态A和B的分量排列指示上述计算表达式时,获得以下计算表达式,如图15的下半部分所示。
[数学运算1]
b 0 b 1 . . . b m - 1 = X 0 &CenterDot; a 0 a 1 . . . a m - 1 , b m b m + 1 . . . b 2 m - 1 = X 1 &CenterDot; a m a m + 1 . . . a 2 m - 1 , ... , ... , b ( n - 1 ) m b ( n - 1 ) m + 1 . . . b n m - 1 = X n - 1 &CenterDot; a ( n - 1 ) m a ( n - 1 ) m + 1 . . . a n m - 1
图16是图示当输入数据A被设置为64位数据,状态A被设置为由十六个4位数据分量形成的状态A时,并且当输出数据B也被设置为64位数据,状态B被设置为由十六个4位数据分量形成的状态B时,下面的列扩散计算的应用处理的实例的图解:
列扩散计算:MC[X0,X1,X2,X3]。
即,如参照图15所述,图示通过下面的每个扩散计算处理计算状态B的每个分量的处理的实例:
B=MC[X0,X1,X2,X3] (A)。
即,通过上述计算表达式计算的状态B的分量如下:
t(b0b1b2b3)=X0*t(a0a1a2a3),
t(b4b5b6b7)=X1*t(a4a5a6a7),
t(b8b9b10b11)=X2*t(a8a9a10a11),以及
t(b12b13b14b15)=X3*t(a12a13a14a15)。
当根据实际状态A和B的分量排列指示上述计算表达式时,获得以下计算表达式,如图16的下半部分所示。
[数学运算2]
b 0 b 1 b 2 b 3 = X 0 &CenterDot; a 0 a 1 a 2 a 3 , b 4 b 5 b 6 b 7 = X 1 &CenterDot; a 4 a 5 a 6 a 7 , b 8 b 9 b 10 b 11 = X 2 &CenterDot; a 8 a 9 a 10 a 11 , b 12 b 13 b 14 b 15 = X 3 &CenterDot; a 12 a 13 a 14 a 15
当执行将相同的矩阵X应用到状态的每一列的分量的矩阵计算时,下面的计算可以在某些情况下表示为:
MC[X]。
即,MC[X]和MC[X,X,...,X]是相同的计算。
(1-10.关于状态表示数据的行扩散计算)
接着,将参照图17和图18描述关于指示为m*n矩阵排列的状态表示数据的行扩散计算处理。
X0,X1,...,Xm-1中的每个被设置为n*n矩阵,其中每个分量是关于GF(2s)的分量。
如图17中所示,以下计算,即,将状态的每一行(0至n-1)和对应于每一行的矩阵X0,X1,...,Xm-1的分量应用到状态表示数据的分量的矩阵计算被定义为行扩散计算:
MR[X0,X1,...,Xm-1]。
MR指以行为单位的扩散(Mix),即,(行混合(MixRow))。
在行扩散计算中,执行将一个矩阵Xk应用到状态的一行的分量的矩阵计算。
应用到包括在状态中的多个行中的每个的矩阵Xk可以被设置为相同的矩阵或可以被设置为不同的矩阵。
例如,通过对状态A(其是输入数据)执行行扩散计算来计算状态B(其是输出数据)的计算表达式可以表示为如下:
B=MR[X0,X1,...,Xm-1] (A)。
行扩散计算处理是在图17的下半部分所示的处理。
即,由上述计算表达式计算的状态B的分量如下:
t(b0bm...b(n-1)m)=X0*t(a0am...a(n-1)m),
t(b1bm+1...b(n-1)m+1)=X1*t(a1am+1...a(n-1)m+1),...,以及
t(bm-1b2m-1...bnm-1)=Xm-1*t(am-1a2m-1...anm-1)。
在上述表达式中,t(b1b2...bk)指示(b1b2...bk)的转置矩阵。
当根据实际状态A和B的分量排列指示上述计算表达式时,获得以下计算表达式,如图17的下半部分所示。
[数学运算3]
b 0 b m . . . b ( n - 1 ) m = X 0 &CenterDot; a 0 a m . . . a ( n - 1 ) m , b 1 b m + 1 . . . b ( n - 1 ) m + 1 = X 1 &CenterDot; a 1 a m + 1 . . . a ( n - 1 ) m + 1 , ... , ... , b m - 1 b 2 m - 1 . . . b n m - 1 = X m - 1 &CenterDot; a m - 1 a 2 m - 1 . . . a n m - 1
图18是图示当输入数据A被设置为64位数据,状态A被设置为由十六个4位数据分量形成的状态A时,并且当输出数据B也被设置为64位数据,状态B被设置为由十六个4位数据分量形成的状态B时,下面的行扩散计算的应用处理的实例的图解:
行扩散计算:MR[X0,X1,X2,X3]。
即,如参照图17所述,图示通过下面的行扩散计算处理计算状态B的每个分量的处理的实例:
B=MR[X0,X1,X2,X3] (A)。
即,通过上述计算表达式计算的状态B的分量如下:
t(b0b4b8b12)=X0*t(a0a4a8a12);
t(b1b5b9b13)=X1*t(a1a5a9a13);
t(b2b6b10b14)=X2*t(a2a6a10a14);以及
t(b3b7b11b15)=X3*t(a3a7a11a15)。
当根据实际状态A和B的分量排列指示上述计算表达式时,获得以下计算表达式,如图18的下半部分所示。
[数学运算4]
b 0 b 4 b 8 b 12 = X 0 &CenterDot; a 0 a 4 a 8 a 12 , b 1 b 5 b 9 b 13 = X 1 &CenterDot; a 1 a 5 a 9 a 13 , b 2 b 6 b 10 b 14 = X 2 &CenterDot; a 2 a 6 a 10 a 14 , b 3 b 7 b 11 b 15 = X 3 &CenterDot; a 3 a 7 a 11 a 15
当执行将相同的矩阵X应用到状态的每一行的分量的矩阵计算时,下面的计算可以在某些情况下表示为:
MR[X]。
即,MR[X]和MR[X,X,...,X]是相同的计算。
(1-11.对合)
当在从纯文本P生成密文C的公用密钥块加密中应用到每一轮的轮密钥是k1,k2,...,KR时,从纯文本P计算密文C的加密函数E可以指示为如下:
C=E(P,K1,K2,...,KR)。
此时,从密文C计算纯文本P的解密函数D表示为如下:
P=D(C,k1,k2,...,kr)。
这里,当解密函数D满足以下表达式时,即,当解密函数D具有其中除了加密函数E中的轮密钥的应用顺序是逆顺序之外,使用剩余的相同的函数的配置时,公用密钥块加密被假定具有对合性:
D(C,k1,k2,...,kr)=E(C,KR,...,K2,K1)。
因此,其中解密函数D可以除了使用加密函数E改变轮密钥的输入顺序之外被配置的公用密钥块加密可以说是具有对合性。例如,Feistel型公用密钥块加密一般可以说是具有对合性,这是因为仅仅通过颠倒要使用的轮密钥的使用顺序,可以用相同的电路执行加密函数和解密函数。
具有对合性的公用密钥块加密可以仅仅通过安装加密函数来基本上实现加密函数和解密函数。因此,必要的电路可以变小和轻便(小型化),并且安装效率提高。
<2.公用密钥块加密的安全指数>
对公用密钥块加密的攻击,例如,用于解密秘密密钥的目的的各种攻击是已知的。具体来说,有差分攻击、线性攻击等。
差分攻击是通过将具有特定差分的数据输入到加密设备,并且检测从输出反射输入差分所到的数据来试图估计密钥的攻击。差值的传播概率被称为差分概率。
线性攻击是通过观察输入的特定位的异或与输出的特定位的异或之间的相关,并且搜索强相关来试图估计密钥的攻击。输入和输出的特定位的相关系数被称为线性概率。
高安全性加密是指对上述各种攻击的高抵抗加密,即,应用于加密处理的秘密信息,例如,密钥等的解密难度高的加密。
在下文中,将描述充当加密算法的安全指数的多块数据。
(2-1.分支数)
在公用密钥块加密中,执行各种数据转换,例如,上述线性转换、非线性转换和异或计算。
作为关于数据转换的解密难度的安全指数,有分支数。
例如,从n*a位数据到n*b位数据的映射θ被设置为如下:
θ:{0,1}na->{0,1}nb
上述映射θ的分支数(Branchn(θ))被定义为如下。
Branchn(θ)=minα≠0{hwn(α)+hwn(θ(α))}
这里,minα≠0{Xα}指满足α≠0的所有Xα中的最小值,并且hwn(Y)是当位串Y被表示为以n位的间隔被分割时,返回分量数的函数,其中所有块n位数据不为0(非零)。
一般来说,分支数越高,解密难度越高,因此对差分攻击或线性攻击的抵抗被认为是提高。
分支数Branchn(θ)是“b+1”的映射θ被称为最优扩散转换(最优扩散映射)。
作为具有高分支数的线性转换矩阵,例如,有执行最优扩散转换的最大距离可分离(MDS)矩阵。MDS矩阵是一个矩阵,其中形成矩阵的任何小的矩阵是正则矩阵。正则矩阵是具有逆矩阵的矩阵。当A被假定是矩阵并且A-1被假定是逆矩阵时,具有满足以下表达式的逆矩阵A-1的矩阵A是正则矩阵:
AA-1=A-1A=E,
其中E是单位矩阵。
(2-2.最小差值活跃S盒数)
如上所述,在用公用密钥块加密设置的非线性转换单元中使用执行以s位为单位的非线性转换的S盒。
作为指示对差分攻击的抵抗的指数,有包括在表示不同连接关系的差分路径中的最小数量的差值活跃S盒,即,最小差值活跃S盒数。
差分路径指定所有数据部分(不包括加密函数中的密钥数据)的具体差值。不能自由确定差值,并且转换处理前后的差值是相互关联的。在线性转换处理之前和之后,输入差分与输出差分之间的关系被确定为一对。在非线性转换处理之前和之后,输入差分与输出差分之间的关系不被确定为一对,但概率的概念被引入。某一输入差分与输出差分的概率假定为被预先计算。当将相对于所有输出的所有概率相加时,获得1。
在一般的加密(块加密等)中,非线性转换仅为S盒的处理的一部分。因此,在这种情况下,具有除了0以外的概率的差分路径是从纯文本(输入)的差值到密文(输出)的差值的一组差分数据,并且在所有S盒之前和之后给出的差值具有除了0以外的概率。其中输入到具有除了0以外的概率的差分路径的S盒中的差值不为0的S盒假定被称为差值活跃S盒。在具有除了0以外的概率的所有差分路径的差值活跃S盒数中的最小数被称为最小差值活跃S盒数,并且其数值作为对抗差分攻击的安全指数而出名。
一般来说,可以通过确保最小差值活跃S盒数足够大来指示差分攻击的安全性,并且通过较少数量的轮函数的重复确保最小差值活跃S盒数更多的加密可以被认为是具有较高性能的加密。其中所有差值都为0的差分路径是没有意义的攻击,因为概率是1。
(2-3.最小线性活跃S盒数)
作为指示对线性攻击的抵抗的一个指数,可以例示包括在表示线性掩模连接关系的线性路径中的最小线性活跃S盒数。
线性路径通常也被称为线性近似,但术语路径在本文中用于对应于差值。
线性路径指定所有数据部分(不包括加密函数中的密钥数据)的特定的线性掩码值。不能自由确定线性掩码值,并且转换处理前后的线性掩码值是相互关联的。在线性转换处理之前和之后,输入线性掩码值与输出线性掩码值之间的关系被确定为一对。在非线性转换处理之前和之后,输入线性掩码值与输出线性掩码值之间的关系不被确定为一对,但概率的概念被引入。对于输入线性掩码值,有一组可以输出的一个或多个线性掩码值,并且可以预先计算每个线性掩码值被输出的概率。当将相对于所有输出的所有概率相加时,获得1。
在一般的加密(块加密等)中,非线性转换仅为S盒的处理的一部分。因此,在这种情况下,具有除了0以外的概率的线性路径是从纯文本(输入)的线性掩码值到密文(输出)的线性掩码值的一组线性掩码值数据,并且在所有S盒之前和之后给出的线性掩码值具有除了0以外的概率。其中输入到具有除了0以外的概率的线性路径的S盒中的线性掩码值不为0的S盒假定被称为线性活跃S盒。在具有除了0以外的概率的所有线性路径的线性活跃S盒数中的最小数被称为最小线性活跃S盒数,并且其数值作为对抗线性攻击的安全指数而出名。
一般来说,可以通过确保最小线性活跃S盒数足够大来指示线性攻击的安全性,并且通过较少数量的轮函数的重复确保最小线性活跃S盒数更多的加密可以被认为是具有较高性能的加密。其中所有线性掩码值都为0的线性路径是没有意义的攻击,因为概率是1。
<3.安全性提高的公用密钥加密处理的整个配置的概述>
接着,将描述根据本公开的实施方案的安全性提高的公用密钥加密设备的配置和处理。
下面将要描述的根据本公开的实施方案的加密处理设备是执行公用密钥块加密(块加密)的设备,并且是具有代换-置换网络(SPN)结构轮函数的设备。
实现了一个配置,使得对多个轮的所有n位输入数据重复执行与轮密钥的异或计算、非线性转换和线性转换。
在图19中图示根据本公开的实施方案的公用密钥加密处理设备的配置的具体实例。
如图19中所示,加密处理设备100包括密钥调度单元110和加密处理单元120。
根据预定的密钥生成算法,密钥调度单元110接收秘密密钥K作为输入,并且输出应用到加密处理单元120的每一轮的轮密钥。加密处理单元120接收轮密钥作为密钥调度单元110的输入,对纯文本P执行数据转换,并且输出密文C。
加密处理单元120也可以执行接收密文C作为输入并且输出纯文本P的解密处理。当执行解密处理时,执行以与加密处理的顺序相反的顺序应用从密钥调度单元110提供的轮密钥的处理。
加密处理单元120包括执行输入数据和轮密钥的异或计算的异或单元121、对输入数据执行非线性转换处理的非线性转换单元122,以及对输入数据执行线性转换处理的线性转换单元123。
如图所示,根据本公开的实施方案的加密处理设备100的加密处理单元120具有一个配置,其中重复执行异或单元121、非线性转换单元122和线性转换单元123的3个不同的数据转换处理。
如图20中所示,纯文本P(其是输入数据)和密文C(其是输出数据)是上述状态表示数据,并且是由4*4的十六个分量形成的64位数据,其中每个分量是4位数据。
从密钥调度单元110输入的轮密钥也是64位数据,其是状态表示数据并且由十六个4位数据分量形成。
如图21中所示,加密处理单元120重复执行以下三种数据转换处理:
(a)异或计算处理;
(b)非线性转换处理;以及
(c)线性转换处理。
每个处理被执行为关于状态的处理。上文已参照图13A、图13B和图14描述关于状态的处理。
使用多个S盒来执行在加密处理单元120的非线性转换单元中所执行的非线性转换处理,例如,如图22A中所示。
每个S盒是例如非线性转换单元,其具有4位输入/输出配置,并且通过对十六个S盒的并行处理执行“4*16=64”位的非线性转换处理。
在加密处理单元120的线性转换单元中所执行的线性转换处理被执行为矩阵计算处理,例如,如图22B中所示。
<4.加密处理单元的线性转换单元的配置和处理>
如参照图19所述,根据本公开的实施方案的加密处理设备100的加密处理单元120具有对多个轮重复执行与轮密钥的异或计算、非线性转换和线性转换的配置。
根据本公开的实施方案的加密处理设备的一个特征是,在每一轮执行的线性转换处理被配置成执行为在每一轮不同的处理。
在下文中,将描述由根据本公开的实施方案的加密处理设备执行的线性转换处理的细节。
图23是图示包括在根据本公开的实施方案的加密处理设备的加密处理单元中的不同的线性转换单元的配置的实例的说明图。
图23的配置图是省略了异或单元的配置图。
在图23中所示的实例中,加密处理单元被配置成包括执行三个不同的线性转换处理的线性转换单元。即,加密处理单元包括以下三个不同的线性转换单元:
线性转换单元P1、201;
线性转换单元P2、202;以及
线性转换单元P3、203。
加密处理单元被配置成在每一轮执行三种线性转换处理中的一种,并且被设置为执行不同的线性转换处理,而没有在连续轮上相同的线性转换处理的连续性。
在图23中所示的实例中,加密处理单元按从纯文本P的输入侧的顺序按以下顺序执行线性转换处理五次:
线性转换单元P1;
线性转换单元P2;
线性转换单元P1;
线性转换单元P3;以及
线性转换单元P1。
在执行五次的线性转换处理中,根据轮转换执行不同的线性转换处理,而没有在连续轮上相同的线性转换处理的连续性。
在上述实例中,相同的线性转换处理是通过组合并执行三种不同的线性转换处理P1、P2和P3被设置为不在连续轮上执行。
因此,通过根据加密处理中的轮变换改变线性转换模式,有可能增加最小差值活跃S盒数和最小线性活跃S盒数。因此,有可能提高对差分攻击或线性攻击的抵抗。
将参照图24A和图24B和随后的附图描述三种线性转换处理的具体处理。
在线性转换处理P1至P3中,组合并使用图24A中所示的四个不同的矩阵M0至M3。即,下面所示的4*4矩阵M0至M3被配置成进行组合。
[数学运算5]
M 0 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 M 1 = 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1
M 2 = 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 M 3 = 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1
在线性转换处理P1至P3中,组合并使用上述四个不同的矩阵M0至M3
上述四个矩阵不是上述最大距离可分离(MDS)矩阵,而是非MDS矩阵。
在下面将描述的实施方案中,将描述使用非MDS矩阵的线性转换处理的实例,但MDS矩阵可以被配置成进行应用。
图24B是图示线性转换处理P1至P3的特定矩阵计算的形式的图解。
图24B中所示的4*4矩形指示由十六个分量形成的状态,其中进行线性转换处理的每个分量具有4位。即,图示64位的4*4状态。
对4*4状态的输入数据执行其中组合并使用矩阵M0至M3的矩阵计算。
在线性转换处理P1中,以列为单位对4*4状态的输入数据的每一列的分量执行其中应用一个矩阵M0的矩阵计算。
这个计算是上文参照图15和图16所述的列扩散计算(MixColumn)。
即,线性转换处理P1是由以下表达式表示的列扩散计算(MC):
MC[M0]。
MC[M0]是指示矩阵计算的表达式,其中相同的矩阵M0应用到状态的每一列并且具有与以下表达式相同的含义,即,分别指示应用到状态的每一列的矩阵的表达式:
MC[M0,M0,M0,M0]。
接着,将描述线性转换处理P2。
在线性转换处理P2中,如图24B中所示,对4*4状态的输入数据的每一行的分量执行其中以行为单位应用不同的矩阵的矩阵计算。在上面的第一行至第四行执行其中应用以下矩阵的矩阵计算:
第一行:应用矩阵M0
第二行:应用矩阵M1
第三行:应用矩阵M2;以及
第四行:应用矩阵M3
这个计算是上文参照图17和图18所述的行扩散计算(MixRow)。
即,线性转换处理P2是由以下表达式表示的行扩散计算(MixRow):
MR[M0,M1,M2,M3]。
接着,将描述线性转换处理P3。
在线性转换处理P3中,如在线性转换处理P2中,如图24B中所示,对4*4状态的输入数据的每一行的分量执行其中以行为单位应用不同的矩阵的矩阵计算。在线性转换处理P3中,不同于线性转换处理P2,在上面的第一行至第四行执行其中应用以下矩阵的矩阵计算:
第一行:应用矩阵M2
第二行:应用矩阵M0
第三行:应用矩阵M1;以及
第四行:应用矩阵M3
这个计算是上文参照图17和图18所述的行扩散计算(MixRow)。
即,线性转换处理P3是由以下表达式表示的行扩散计算(MixRow):
MR[M2,M0,M1,M3]。
为了彼此区分线性转换处理P2和P3,在下面,线性转换处理P2被称为行扩散计算类型1(MixRow1),并且线性转换处理P3被称为行扩散计算类型2(MixRow2)。
线性转换处理P1是列扩散计算(MixColumn)。
将参照图25A和图25B和随后的附图描述三个线性转换处理P1至P3的特定矩阵计算的计算处理实例。
图25A和图25B是图示线性转换处理P1(即,列扩散计算(MixColumn))的具体计算处理实例的说明图。
图25A图示线性转换单元P1中的输入和输出数据的实例。
输入A是由n位数据的十六个分量a0至a15形成的状态。
输出B也是由n位数据的十六个分量b0至b15形成的状态。
输入和输出数据的分量ai和bi(其中i=0至15)中的每个是被配置具有值0和1中的一个的n位数据。
在实施方案中,n=4,每个分量是4位数据,并且输入A和输出B具有64位。
图25B图示线性转换处理P1(即,列扩散计算(MixColumn))的具体计算处理实例。
被执行为线性转换处理P1的列扩散计算(MixColumn)是根据以下表达式执行的矩阵计算。
[数学运算6]
b 0 b 1 b 2 b 3 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 &CenterDot; a 0 a 1 a 2 a 3 , b 4 b 5 b 6 b 7 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 &CenterDot; a 4 a 5 a 6 a 7
b 8 b 9 b 10 b 11 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 &CenterDot; a 8 a 9 a 10 a 11 , b 12 b 13 b 14 b 15 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 &CenterDot; a 12 a 13 a 14 a 15
基于矩阵M0和输入A的十六个分量a0至a15,通过以下计算来计算输出B的十六个分量b0至b15
b0=a1(+)a2(+)a3
b1=a0(+)a2(+)a3
b2=a0(+)a1(+)a3
b3=a0(+)a1(+)a2
b4=a5(+)a6(+)a7
b5=a4(+)a6(+)a7
b6=a4(+)a5(+)a7
b7=a4(+)a5(+)a6
b8=a9(+)a10(+)a11
b9=a8(+)a10(+)a11
b10=a8(+)a9(+)a11
b11=a8(+)a9(+)a10
b12=a13(+)a14(+)a15
b13=a12(+)a14(+)a15
b14=a12(+)a13(+)a15;以及
b15=a12(+)a13(+)a14
在上述表达式中,运算符(+)指异或计算。
在被执行为线性转换处理P1的列扩散计算(MixColumn)中,通过上述计算处理,基于矩阵M0和输入A的十六个分量a0至a15计算输出B的十六个分量b0至b15
图26A和图26B是图示线性转换处理P2(即,行扩散计算类型1(MixRow1))的具体计算处理实例的说明图。
图26A图示线性转换单元P2中的输入和输出数据的实例。
输入A是由n位数据的十六个分量a0至a15形成的状态。
输出B也是由n位数据的十六个分量b0至b15形成的状态。
输入和输出数据的分量ai和bi(其中i=0至15)中的每个是被配置具有值0和1中的一个的n位数据。
在实施方案中,n=4,每个分量是4位数据,并且输入A和输出B具有64位。
图26B图示线性转换处理P2(即,行扩散计算类型1(MixRow1))的具体计算处理实例。
被执行为线性转换处理P2的行扩散计算类型1(MixRow1)是根据以下表达式执行的矩阵计算。
[数学运算7]
b 0 b 4 b 8 b 12 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 &CenterDot; a 0 a 4 a 8 a 12 , b 1 b 5 b 9 b 13 = 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 &CenterDot; a 1 a 5 a 9 a 13
b 2 b 6 b 10 b 14 = 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 &CenterDot; a 2 a 6 a 10 a 14 , b 3 b 7 b 11 b 15 = 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 &CenterDot; a 3 a 7 a 11 a 15
基于矩阵M0、M1、M2和M3以及输入A的十六个分量a0至a15,通过以下计算来计算输出B的十六个分量b0至b15
b0=a4(+)a8(+)a12
b1=a1(+)a5(+)a13
b2=a2(+)a6(+)a10
b3=a3(+)a11(+)a15
b4=a0(+)a8(+)a12
b5=a1(+)a5(+)a9
b6=a2(+)a6(+)a14
b7=a7(+)a11(+)a15
b8=a0(+)a4(+)a12
b9=a5(+)a9(+)a13
b10=a2(+)a10(+)a14
b11=a3(+)a7(+)a11
b12=a0(+)a4(+)a8
b13=a1(+)a9(+)a13
b14=a6(+)a10(+)a14;以及
b15=a3(+)a7(+)a15
在上述表达式中,运算符(+)指异或计算。
在被执行为线性转换处理P2的行扩散计算类型1(MixRow1)中,通过上述计算处理,基于矩阵M0、M1、M2和M3以及输入A的十六个分量a0至a15计算输出B的十六个分量b0至b15
图27A和图27B是图示线性转换处理P3(即,行扩散计算类型2(MixRow2))的具体计算处理实例的说明图。
图27A图示线性转换单元P2中的输入和输出数据的实例。
输入A是由n位数据的十六个分量a0至a15形成的状态。
输出B也是由n位数据的十六个分量b0至b15形成的状态。
输入和输出数据的分量ai和bi(其中i=0至15)中的每个是被配置具有值0和1中的一个的n位数据。
在实施方案中,n=4,每个分量是4位数据,并且输入A和输出B具有64位。
图27B图示线性转换处理P3(即,行扩散计算类型2(MixRow2))的具体计算处理实例。
被执行为线性转换处理P3的行扩散计算类型2(MixRow2)是根据以下表达式执行的矩阵计算。
[数学运算8]
b 0 b 4 b 8 b 12 = 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 &CenterDot; a 0 a 4 a 8 a 12 , b 1 b 5 b 9 b 13 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 &CenterDot; a 1 a 5 a 9 a 13
b 2 b 6 b 10 b 14 = 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 &CenterDot; a 2 a 6 a 10 a 14 , b 3 b 7 b 11 b 15 = 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 &CenterDot; a 3 a 7 a 11 a 15
基于矩阵M0、M1、M2和M3以及输入A的十六个分量a0至a15,通过以下计算来计算输出B的十六个分量b0至b15
b0=a0(+)a4(+)a8
b1=a5(+)a9(+)a13
b2=a2(+)a6(+)a14
b3=a3(+)a11(+)a15
b4=a0(+)a4(+)a12
b5=a1(+)a9(+)a13
b6=a2(+)a6(+)a10
b7=a7(+)a11(+)a15
b8=a0(+)a8(+)a12
b9=a1(+)a5(+)a13
b10=a6(+)a10(+)a14
b11=a3(+)a7(+)a11
b12=a4(+)a8(+)a12
b13=a1(+)a5(+)a9
b14=a2(+)a10(+)a14;以及
b15=a3(+)a7(+)a15
在上述表达式中,运算符(+)指异或计算。
在被执行为线性转换处理P3的行扩散计算类型2(MixRow2)中,通过上述计算处理,基于矩阵M0、M1、M2和M3以及输入A的十六个分量a0至a15计算输出B的十六个分量b0至b15
因此,通过在每一轮改变在加密处理序列中执行的多个线性转换处理一次,有可能增加最小差值活跃S盒数和最小线性活跃S盒数。因此,有可能提高对差分攻击或线性攻击的抵抗。
将描述活跃S盒数的验证结果。
在根据本公开的实施方案的加密处理设备(即,执行三种不同的线性转换处理P1至P3的加密处理设备)与重复执行单种线性转换处理的相关技术类型的加密处理设备之间验证活跃S盒数。
如图28中所示,根据本公开的实施方案的加密处理设备具有在加密处理序列中使用三种线性转换处理并且在每一轮改变并执行这些处理的配置。
在图28中所示的图解中,省略了与轮密钥的异或计算单元。
图28中所示的加密处理设备具有6轮配置,因为非线性转换单元的数量=6。作为定义轮数的方法,有几种方法。这里,非线性转换单元的数量被称为轮数。
在图28中所示的实例中,应用七个轮密钥(即,轮密钥RK1至RK7),但有在六层中的非线性转换单元。因此,假定六轮加密处理设备。
如图28中所示,三个不同的线性转换处理在加密处理处理中被执行至少一次。
线性转换处理P1是应用矩阵M0的列扩散计算(MixColumn)。
线性转换处理P2是应用矩阵M0、M1、M2和M3的行扩散计算类型1(MixRow1)。
线性转换处理P3是应用矩阵M0、M1、M2和M3的行扩散计算类型2(MixRow2)。
与图28中所示的加密处理设备相比,在图29中图示执行单一线性转换处理的相关技术类型的加密处理设备的实例。
图29中所示的加密处理设备也具有6轮配置,但具有相同的线性转换处理被执行为每一轮的线性转换处理的配置。
图29中的加密处理设备的所有线性转换处理单元被设置为执行其中仅使用矩阵M0执行线性转换处理P1的列扩散计算,这也被用于图28中的加密处理设备,即,使用矩阵M0的列扩散计算。
对于图28中所示的执行多个不同的线性转换处理的加密处理设备和图29中所示的执行单一线性转换处理的相关技术类型的设备,配置各种数量的轮的设备,并且验证最小差值活跃S盒数和最小线性活跃S盒数。
图28和图29中的配置都被设置成对64位的输入纯文本P执行加密处理并且输出64位的密文C。
S盒被配置成每个非线性转换单元。每个S盒被配置成执行4位输入/输出的非线性转换,如上文参照图22A和图22B所述。
在图28和图29中的加密处理设备的每个非线性转换单元中,安装十六个4位输入/输出的S盒以执行“4*16=64”位数据的非线性转换。
S盒的总数是“16*6=96”,因为在图28和图29中所示的6轮型加密处理设备中设置六个非线性转换单元。
通过在总共96个S盒中计数所有输入模式中的活跃S盒数,验证最小差值活跃S盒数和最小线性活跃S盒数。
在图30和图31中图示验证结果。
如图30中所示,通过配置不同数量的轮的加密处理设备、4至24的轮数,并且计数最小差值/线性活跃S盒数,获得结果。
在“轮数=4”的情况下,活跃S盒数是4,并且在重复执行相关技术类型的相同的线性转换处理的配置和执行本公开的实施方案的不同的线性转换处理的配置中都是相同的值。然而,在轮数=6至24(不包括8)的情况下,在任何情况下,活跃S盒数在执行本公开的实施方案的不同的线性转换处理的配置中更多。
示出结果的曲线图是图31中所示的曲线图。
在上述实施方案中,已描述该配置,其中输入数据被设置为由4*4分量形成的状态,其中每个分量具有4位,并且线性转换单元使用四种矩阵M0、M1、M2和M3通过矩阵计算来执行线性转换处理。通过概括上述处理所描述的配置被设置如下。
当输入数据被设置为由m*n分量形成的状态时,其中每个分量具有1位或更多,线性转换单元被配置成在列扩散计算(其中以状态的每一列的分量为单位应用矩阵来执行线性转换)与行扩散计算(其中以状态的每一行的分量为单位应用矩阵来执行线性转换)之间的轮计算中执行一个矩阵计算。
这里,线性转换单元被配置成通过其中使用多种矩阵M0至Mk(其中k是1或更多的整数)的矩阵计算执行线性转换处理。线性转换单元根据轮变换切换并执行列扩散计算和行扩散计算,在列扩散计算中以特定的顺序以状态的每一列的分量为单位应用从矩阵M0至Mk选择的选择矩阵来执行线性转换,在行扩散计算中以特定的顺序以状态的每一行的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一行来执行线性转换。
例如,特定的线性转换处理的配置实例被配置如下。
加密处理设备根据轮变换切换并执行:
(a)列扩散计算,其中以特定的顺序以状态的每一列的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一列来执行线性转换;
(b)行扩散计算类型1,其中以特定的顺序A以状态的每一行的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一行来执行线性转换;以及
(c)行扩散计算类型2,其中以不同于特定的顺序A的特定的顺序B以状态的每一行的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一行来执行线性转换。
可以实现置换上述配置中的列扩散计算和行扩散计算的配置。
加密处理设备根据轮变换切换并执行:
(a)行扩散计算,其中以特定的顺序以状态的每一行的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一行来执行线性转换;
(b)列扩散计算类型1,其中以特定的顺序A以状态的每一列的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一列来执行线性转换;以及
(c)列扩散计算类型2,其中以不同于特定的顺序A的特定的顺序B以状态的每一列的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一列来执行线性转换。
当输入数据是由4*4分量(其中每个分量具有4位)形成的状态时线性转换处理的具体配置可以实现为以下配置。
在加密处理设备中,线性转换单元被配置成通过矩阵计算执行线性转换处理,其中使用四种矩阵M0、M1、M2和M3。线性转换单元根据轮变换切换并执行以下三种矩阵计算:
(a)列扩散计算,其中以状态的每一列的分量为单位应用矩阵M0来执行线性转换;
(b)行扩散计算类型1,其中以状态的每一行的分量为单位按矩阵M0、M1、M2和M3的顺序应用每个矩阵来执行线性转换;以及
(c)行扩散计算类型2,其中以状态的每一行的分量为单位按不同于行扩散计算类型1的顺序的顺序应用每个矩阵来执行线性转换。
在行扩散计算类型1中以状态的每一行的分量为单位应用的矩阵和在行扩散计算类型2中以状态的每一行的分量为单位应用的矩阵的组合是总共四个矩阵中的至少三种矩阵、在行扩散计算类型1中应用到状态的两个任意行的两个矩阵,以及在行扩散计算类型2中应用到两个任意行的两个矩阵的组合。
例如,当应用到4*4状态的行(即,第一至第四行)的矩阵被假定是类型1中的M1、M3、M0和M2时,应用到4*4状态的行(即,第一至第四行)的矩阵被设置为类型2中的M0、M2、M3和M1
在上述设置中,通过总共四个矩阵中的至少三种矩阵、在类型1中应用到4*4状态的两个任意行的两个矩阵,以及在类型2中应用到两个任意行的两个矩阵来配置组合。
即,在上述设置中,应用到4*4状态的第一行的矩阵如下:
类型1=M1;并且类型2=M0
应用到4*4状态的第二行的矩阵如下:
类型1=M3;并且类型2=M2
在这种组合中,在类型1和2中应用到第一行和第二行的矩阵是四种矩阵M0至M3
在上述设置中,通过总共四个矩阵中的至少三种矩阵、在类型1中应用的两个矩阵,以及在类型2中应用到另外两个任意行的两个矩阵来配置组合。
可以实现置换上述配置中的列扩散计算和行扩散计算的配置。
在加密处理设备中,线性转换单元被配置成通过矩阵计算执行线性转换处理,其中使用四种矩阵M0、M1、M2和M3
线性转换单元根据轮变换切换并执行以下三种矩阵计算:
(a)行扩散计算,其中以状态的每一行的分量为单位应用矩阵M0来执行线性转换;
(b)列扩散计算类型1,其中以状态的每一列的分量为单位按矩阵M0、M1、M2和M3的顺序应用每个矩阵来执行线性转换;以及
(c)列扩散计算类型2,其中以状态的每一列的分量为单位按不同于列扩散计算类型1的顺序的顺序应用每个矩阵来执行线性转换。
在这个配置中,在行扩散计算类型1中以状态的每一列的分量为单位应用的矩阵和在行扩散计算类型2中以状态的每一列的分量为单位应用的矩阵的组合是总共四个矩阵中的至少三种矩阵、在行扩散计算类型1中应用到状态的两个任意列的两个矩阵,以及在行扩散计算类型2中应用到两个任意列的两个矩阵的组合。
因此,通过在每一轮改变在加密处理序列中执行的线性转换处理一次,有可能增加最小差值活跃S盒数和最小线性活跃S盒数。因此,有可能提高对差分攻击或线性攻击的抵抗。
<5.密钥调度单元的配置和处理>
接着,将描述根据本公开的实施方案的加密处理设备中的密钥调度单元的配置和处理。
<5-1.密钥调度单元的配置和处理的描述>
如上文参照图19所述,根据本公开的实施方案的加密处理设备100包括密钥调度单元110和加密处理单元120。
密钥调度单元110根据预定的密钥生成算法,基于例如秘密密钥K生成将应用到加密处理单元120的每一轮的轮密钥,并且将轮密钥输出到加密处理单元120。加密处理单元120从密钥调度单元110输入轮密钥,执行纯文本P的数据转换,并且输出密文C。
在执行解密处理时执行相同的处理。
在下文中,将描述密钥调度单元110的配置和处理,密钥调度单元110用于执行生成并提供轮密钥的处理。
图32是图示根据本公开的实施方案的加密处理设备中的密钥调度单元的配置的实例的图解。
密钥调度单元300包括密钥供给单元(密钥寄存器)301作为存储秘密密钥K1的存储单元。
密钥调度单元300在加密处理单元320的第一轮将这个密钥K1输出到异或单元(轮密钥计算单元)321。即,密钥K1被用作第一轮的轮密钥。
密钥调度单元300将密钥K1输入到密钥转换单元302a。密钥转换单元302a对密钥K1执行预定的计算以生成转换密钥Kd1
在第二轮将由密钥转换单元302a生成的转换密钥Kd1输出到加密处理单元320的异或单元(轮密钥计算单元)322。即,转换密钥Kd1被用作第二轮的轮密钥。
密钥调度单元300将转换密钥Kd1输入到密钥转换单元302b。密钥转换单元302b对转换密钥Kd1执行预定的计算以生成密钥K1
密钥K1是与密钥K1(其是转换密钥Kd1的生成源)相同的密钥。
密钥调度单元300在加密处理单元320的第三轮将由密钥转换单元302b生成的密钥K1输出到异或单元(轮密钥计算单元)323。即,密钥K1被用作第三轮的轮密钥。
通过重复相同的处理,在密钥转换单元302c至302f中交替生成密钥K1和转换密钥Kd1,并且将生成的密钥输出到加密处理单元的异或单元324至327。
所有的密钥转换单元302a至302f执行相同的计算。即,通过相同的计算处理,从密钥K1生成转换密钥Kd1,并且从转换密钥Kd1生成密钥K1
当使用转换函数G和反函数G-1指示表达式时,获得以下表达式:
Kd1=G(K1);以及
K1=G-1(Kd1)。
此外,满足“G=G-1”。
即,应用到密钥转换单元302a至302f中的密钥转换的数据转换函数G具有对合性,即,正向函数G和反向函数G-1是相同的函数的性质,如图33中所示。
在图33中,图32中所述的密钥K1指示为基本密钥K,并且转换密钥Kd1指示为转换密钥Kd。图33中所示的每个密钥表示为十六个4位分量的4*4状态。即,所有密钥是64位密钥数据。
将参照图34描述由密钥转换单元302执行的密钥转换处理的实例。
图34是图示从基本密钥K生成转换密钥Kd的处理的说明图。
从基本密钥K生成转换密钥Kd的处理包括以下两个步骤:
(S1)通过对基本密钥K执行其中应用中间密钥生成的列扩散计算(MixColumn_KSF())的计算来生成中间密钥S的步骤;以及
(S2)通过对中间密钥S执行其中应用转换密钥生成的行扩散计算(MixRow_KSF())的计算来生成转换密钥Kd的步骤。
在步骤S1中执行的列扩散计算(MixColumn)和在步骤S2中执行的行扩散计算(MixRow)是上文参照图24A至图27B所述的相同的矩阵应用计算。
这里,应用于密钥转换处理中的矩阵MD是下面所示的矩阵。
[数学运算9]
M D = 1 2 4 6 2 1 6 4 4 6 1 2 6 4 2 1
上面所示的矩阵MD是称为阿达马MDS矩阵的矩阵。
MDS矩阵是一个矩阵,其中形成矩阵的任何小的矩阵是正则矩阵。正则矩阵是具有逆矩阵的矩阵。当A被假定是矩阵并且A-1被假定是逆矩阵时,具有满足以下表达式的逆矩阵A-1的矩阵A是正则矩阵:
AA-1=A-1A=E,
其中E是单位矩阵。
如上所述,分支数Branchn(θ)是“b+1”的映射θ被称为最优扩散转换(最优扩散映射),并且MDS矩阵是执行最优扩散转换的矩阵。
应用阿达马MDS矩阵MD来执行图34中所示的步骤S1的列扩散计算和步骤S2的行扩散计算。
步骤S1的列扩散计算由以下计算表达式指示:
MC[MD]=MC[MD,MD,MD,MD]。
步骤S2的行扩散计算由以下计算表达式指示:
MR[MD]=MR[MD,MD,MD,MD]。
即,在步骤S1的列扩散计算中,对由4位分量形成的4*4状态表示数据的所有四列执行应用相同的阿达马MDS矩阵MD的矩阵计算。
此外,在步骤S2的行扩散计算中,对由4位分量形成的4*4状态表示数据的所有四行执行应用相同的阿达马MDS矩阵MD的矩阵计算。
应用阿达马MDS矩阵MD的矩阵计算的算法可以表示如下。
MD():{0,1}16->{0,1}16
输入:{x0,x1,x2,x3},xi是{0,1}4的元素
输出:{y0,y1,y2,y3},yi是{0,1}4的元素
运算
-y0=x0(+)2(*)x1(+)4(*)x3(+)6(*)x4
-y1=2(*)x0(+)x2(+)6(*)x3(+)4(*)x4
-y2=4(*)x0(+)6(*)x2(+)x3(+)2(*)x4
-y3=6(*)x0(+)4(*)x2(+)2(*)x3(+)x4
这里,(+)指示异或运算,并且(*)指示受不可约多项式“x4+x+1”约束的扩展字段GF(24)上的乘法。
图34中所示的步骤S1的列扩散计算MC[MD]是根据以下表达式的矩阵计算。
[数学运算10]
s 0 s 1 s 2 s 3 = 1 2 4 6 2 1 6 4 4 6 1 2 6 4 2 1 &CenterDot; k 0 k 1 k 2 k 3 , ... , s 12 s 13 s 14 s 15 = 1 2 4 6 2 1 6 4 4 6 1 2 6 4 2 1 &CenterDot; k 12 k 13 k 14 k 15
上述列扩散计算MC[MD]的算法可以表示如下。
MixColumn_KSF():{0,1}64->{0,1}64
输入:{k0,k1,...,k15},ki是{0,1}4的元素
输出:{s0,s1,...,s15},si是{0,1}4的元素
运算
-(s0,s1,s2,s3)=MD(k0,k1,k2,k3)
-(s4,s5,s6,s7)=MD(k4,k5,k6,k7)
-(s8,s9,s10,s11)=MD(k8,k9,k10,k11)
-(s12,s13,s14,s15)=MD(k12,k13,k14,k15)
图34中所示的步骤S2的行扩散计算MR[MD]是根据以下表达式的矩阵计算。
[数学运算11]
kd 0 kd 4 kd 8 kd 12 = 1 2 4 6 2 1 6 4 4 6 1 2 6 4 2 1 &CenterDot; s 0 s 4 s 8 s 12 , ... , kd 3 kd 7 kd 11 kd 15 = 1 2 4 6 2 1 6 4 4 6 1 2 6 4 2 1 &CenterDot; s 3 s 7 s 11 s 15
上述行扩散计算MR[MD]的算法可以表示如下。
MixRow_KSF():{0,1}64->{0,1}64
输入:{s0,s1,...,s15},si是{0,1}4的元素
输出:{kd0,kd1,...,kd15},kdi是{0,1}4的元素
运算
-(kd0,kd4,kd8,kd12)=MD(s0,s4,s8,s12)
-(kd1,kd5,kd9,kd13)=MD(s1,s5,s9,s13)
-(kd2,kd6,kd10,kd14)=MD(s2,s6,s10,s14)
-(kd3,kd7,kd11,kd15)=MD(s3,s7,s11,s15)
因此,图32中所示的密钥调度单元300的密钥转换单元302执行图34中所示的步骤S1中的应用矩阵MD的列扩散计算MC[MD],并且执行步骤S2中的应用矩阵MD的行扩散计算MR[MD]。
通过连续执行两个矩阵计算,从基本密钥K生成转换密钥Kd。
即使当从转换密钥Kd生成基本密钥K时,执行与图34中所示的处理相同的处理。
即,如上文参照图33所述,列扩散计算MC[MD]和行扩散计算MR[MD]的连续处理中的函数G具有对合性,并且正向函数G和反函数G-1是相同的。因此,通过重复计算两次,计算原始值。
密钥转换单元302执行应用矩阵MD的列扩散计算MC[MD]和应用矩阵MD的行扩散计算MR[MD],使得形成输入数据的4*4状态的所有组成分量(即,所有十六个组成分量)可能对输出数据的所有十六个组成分量产生影响。
即,在输入和输出状态的所有分量之间实现数据扩散。数据转换模式被定义为“全扩散转换”或具有全扩散性的扩散。
例如,当输入和输出是由十六个n位分量形成的状态时,假定应用到输入的转换函数f,输出状态B被设置为根据以下表达式来计算:
B=f(A)。
输入状态A=(a0,a1,a2,...,a15)。
输出状态B=(b0,b1,b2,...,b15)。
这里,ai和bi是状态A和B的分量。
此时,当输出状态B的任何分量bi可以由以下表达式表示时,函数f被假定是全扩散转换:
bi=f(a0,a1,a2,...,a15)。
因此,密钥转换单元302的执行函数G是具有以下两个特性的函数:
(1)实现全扩散转换的全扩散性;以及
(2)正向函数G和反函数G-1是相同的对合性。
<5-2.基于密钥调度单元的全扩散性的有益效果>
因此,全扩散性(其是密钥转换单元302的性质)确保加密处理单元320中的转换目标数据与密钥之间的全扩散性,如图32中所示。将参照图35进行描述。
在图35中,图示以下密钥:
基本密钥K=(k0,k1,k2,...,k15);以及
转换密钥Kd=(kd0,kd1,kd2,...,kd15)。
将基本密钥K输入到加密处理单元的异或单元331,并且执行与输入状态A的异或计算。此后,非线性/线性转换单元(S&P)332执行非线性转换处理和线性转换处理。
异或计算单元333对输出执行与转换密钥Kd的异或计算。
异或计算单元333的输出被假定是状态B。
此时,基本密钥K与转换密钥Kd之间的关系如下:
Kdi=f(k0,k1,k2,...,k15),
其中i=0至15。
满足上述关系表达式。
即,确保全扩散性。
从上述关系表达式,在状态B与基本密钥K之间也满足以下关系表达式,
bi=f(k0,k1,k2,...,k15),
其中i=0至15。
即,也确保基本密钥K与转换数据B之间的全扩散性。
这种性质可以说是引起加密处理设备的安全性和促成安装性能的性质。
具体来说,通过密钥的数据扩散性提高。即使当轮数减少时,也实现高扩散性能。因此,有可能提高对各种攻击的抵抗。例如,有可能通过使用密钥依赖性等基于中间值协议攻击来进一步提高对密钥分析处理的抵抗。
如上所述,通过应用根据本公开的实施方案的配置,加密处理单元中的转换目标数据的扩散性能提高。因此,用较少数量的轮来实现安全加密处理,即,实现具有对各种攻击的高抵抗的加密处理(诸如密钥分析)。
图36A和图36B图示以下加密处理配置的两个实例:
(1)加密处理配置,其中不在每一轮执行密钥转换并且应用相同的轮密钥;以及
(2)加密处理配置,其中执行根据本公开的实施方案的密钥转换并且交替应用两种轮密钥。
图36B中所示的G盒对应于图32中所示的密钥转换单元302。
在图36A中不执行密钥转换的加密处理配置中,扩散(全扩散)到输入规划文本P的所有位所需的轮数取决于轮函数(R)的处理,其中应用密钥的组成信息(位串)是转换目标数据。
因此,当轮函数的扩散性能低时,大量的轮是必要的以便提高扩散水平。因此,很难实现高速处理或重量减少。
另一方面,在图36B中执行根据本公开的实施方案的密钥转换的加密处理配置中,扩散(全扩散)到输入规划文本P的所有位所需的轮数是使用基本密钥K1和转换密钥Kd1中的两个的轮数,其中应用密钥的组成信息(位串)是转换目标数据。
所示的实例是一轮。
即,当应用根据本公开的实施方案的处理时,通过一轮实现密钥数据的组成信息到转换目标数据的扩散,并且确保较大的扩散性能而不依赖于轮函数(R)的处理。
即,用较少数量的轮实现具有对攻击的高抵抗的安全加密处理。因此,实现高速处理和重量减少。
<5-3.基于密钥转换单元的对合性的有益效果>
如上文参照图32、图33等所述,根据本公开的实施方案的密钥调度单元300的密钥转换单元302具有对合性,其中正向函数G和反向函数G-1被实现为相同的函数。
在下文中,将描述基于对合性的有益效果。
作为重复执行轮函数(其是相同的数据转换处理)的加密处理设备的硬件安装配置,有以下两种类型:
(a)“展开安装”,其中对应于轮的正规数的该数量的轮函数执行单元被配置成硬件;以及
(b)“轮安装”,其中一个轮函数执行单元被配置成硬件,轮函数执行单元的输出被作为反馈输入到相同的轮函数执行单元,并且重复执行轮的正规数的轮函数。
在下文中,将按顺序描述基于这两种类型的对合性的有益效果。
<5-3-a.展开安装的有益效果>
将描述在以展开方式安装加密处理单元时,产生于根据本公开的实施方案的密钥转换单元的对合性的有益效果。
在展开安装中,对应于轮的正规数的该数量的轮函数执行单元被配置成加密处理单元中的硬件。
将参照图37、图38A和图38B描述在以展开方式安装加密处理单元时,产生于根据本公开的实施方案的密钥转换单元的对合性的有益效果。
在图37、图38A和图38B中图示加密处理设备的以下安装实例:
当密钥转换单元(F)不具有对合性时的硬件安装实例(图37中);以及
当密钥转换单元(G)具有对合性时的硬件安装实例(图38A和图38B)。
图38A和图38B对应于根据本公开的实施方案的密钥转换单元的安装实例,即,密钥转换单元具有对合性的情况。
由于在图37中密钥转换单元F不具有对合性,作为密钥转换单元F的转换结果因此获得的密钥成为按次序的不同的密钥。如图37中所示,通过密钥转换单元F的转换处理,基于密钥K1按顺序生成密钥Kd1、Kd2、Kd3、Kd4、Kd5和Kd6,并且这些密钥被配置成作为轮密钥按顺序输入到加密处理单元的异或单元(轮密钥计算单元)。
另一方面,图38A和图38B中所示的实例是当密钥转换单元(G)具有对合性时的硬件安装实例。
图38A中所示的实例是密钥转换单元G被设置为对应于每一轮以生成加密处理单元的异或单元(轮密钥计算单元)的输入密钥(轮密钥)的配置,如在图37中所示的硬件配置中。
另一方面,图38B示出了一个配置,其中通过仅设置一个密钥转换单元G,将预先保持的基本密钥K1和由密钥转换单元G生成的转换密钥Kd1设置为交替输入到加密处理单元的异或单元(轮密钥计算单元)。
由于密钥转换单元G具有对合性,通过密钥转换单元的转换处理的重复生成的密钥成为重复的K1、Kd1、K1、Kd1、K1等。如图38B中所示,基于这种性质,通过使用一个密钥转换单元G,基本密钥K1和通过由密钥转换单元G执行一次的密钥转换处理生成的转换密钥Kd1可以交替输入到加密处理单元的异或单元(轮密钥计算单元)。
因此,由于密钥转换单元G的数量可以被设置为1,可以实现轻型(小型化)硬件安装。
在图39中图示对应于图38B中所示的配置的加密处理设备的配置的实例。
如图39中所示,通过仅使用一个密钥转换单元G,密钥调度单元300的密钥转换单元(G)302可以将预先保持的基本密钥K1和由密钥转换单元G生成的转换密钥Kd1交替输入到加密处理单元320的每个异或单元(轮密钥计算单元)。
<5-3-b.轮安装的有益效果>
接着,将描述当加密处理设备通过轮安装来安装时,产生于根据本公开的实施方案的密钥转换单元的对合性的有益效果。
在轮安装中,加密处理单元中的一个轮函数集被配置成可重复使用。
在图40A和图40B中,分别图示当密钥转换单元不具有对合性时的加密处理配置和轮安装实例。
在图41a和图41B中,分别图示当密钥转换单元具有对合性时的加密处理配置和轮安装实例。
图40A中所示的加密处理配置是与上文参照图37所述的配置相同的配置。
即,由于密钥转换单元F不具有对合性,作为密钥转换单元F的转换结果因此获得的密钥成为按次序的不同的密钥。如图40A中所示,通过密钥转换单元F的转换处理,基于密钥K1按顺序生成密钥Kd1、Kd2、Kd3、Kd4、Kd5和Kd6,并且这些密钥被配置成作为轮密钥按顺序输入到加密处理单元的异或单元(轮密钥计算单元)。
当这个配置安装为轮型硬件时,实现图40B中所示的配置。加密处理单元350可以被配置成包括一个异或单元(轮密钥计算单元)351和一个非线性/线性转换单元352。
另一方面,密钥调度单元360被配置成包括存储并提供基本密钥K1的密钥寄存器361、存储并提供转换密钥Kd1至Kd6的密钥寄存器362、密钥转换单元(F)363,以及执行密钥寄存器361和362的输出变化的开关364。
相反,图41A中所示的加密处理配置是密钥转换单元G具有对合性的加密处理配置,如在上文参照图38B所述的配置中。
即,由于密钥转换单元G具有对合性,通过密钥转换单元的转换处理的重复生成的密钥成为重复的K1、Kd1、K1、Kd1、K1等。如图41A中所示,基于这种性质,通过使用一个密钥转换单元G,基本密钥K1和通过由密钥转换单元G执行一次的密钥转换处理生成的转换密钥Kd1可以交替输入到加密处理单元的异或单元(轮密钥计算单元)。
这个配置是当安装轮型硬件时图41B中所示的配置。加密处理单元350可以被配置成包括一个异或单元(轮密钥计算单元)351和一个非线性/线性转换单元352。
另一方面,密钥调度单元370被配置成包括存储并提供基本密钥K1和转换密钥Kd1的密钥寄存器371,以及密钥转换单元(G)372。
在当图40B中所示的密钥转换单元(F)不具有对合性时的轮安装配置中,两个密钥寄存器、一个密钥转换单元和一个开关在密钥调度单元360中是必要的。另一方面,在当图41B中所示的密钥转换单元(G)具有对合性时的轮安装配置中,密钥调度单元370被配置成包括一个密钥寄存器和一个密钥转换单元,因此硬件配置的重量减少(小型化)被证明得以实现。
例如,在当图40B中所示的密钥转换单元(F)不具有对合性时的轮安装配置中,按顺序生成、存储和提供多个不同的转换密钥的密钥寄存器是必要的。因此,对应于密钥寄存器的门数的新的硬件电路是必要的。
<5-4.密钥调度单元的配置的结论和本公开的实施方案的有益效果>
如上所述,在根据本公开的实施方案的加密处理设备中配置的密钥调度单元的密钥转换单元具有以下两个特性:
(1)实现全扩散转换的全扩散性;以及
(2)正向函数G和反向函数G-1是相同的对合性。
基于这两个特性,获得以下有益效果。
转换目标数据的(有益效果1),基于全扩散性,可以用较少数量的轮实现全扩散性。
因此,可以用少量的轮执行具有高安全性的加密处理,因此实现处理的高速(低延迟)和设备的重量减少(小型化)。
当以展开方式安装硬件配置时的(有益效果2),基于对合性仅可以配置一个密钥转换单元,因此实现设备的重量减少(小型化)。
当以轮的方式安装硬件配置时的(有益效果3),基于对合性可以安装包括一个密钥寄存器和一个密钥转换单元的密钥调度单元,因此实现设备的重量减少(小型化)。
<5-5.密钥调度单元的其他配置的实例>
接着,将参照图42和随后的附图描述包括密钥转换单元的密钥调度单元的其他配置实例,所述密钥转换单元执行应用函数G的密钥转换处理并且具有上面描述的以下两个特性:
(1)实现全扩散转换的全扩散性;以及
(2)正向函数G和反向函数G-1是相同的对合性。
图42是图示包括密钥调度单元380的加密处理设备的配置的实例的图解,密钥调度单元380包括具有上述两个特性的密钥转换单元。
图42中所示的加密处理设备包括密钥调度单元380和加密处理单元385。
预先生成的秘密密钥K存储在密钥调度单元380的密钥寄存器381中。
秘密密钥K是密钥K1和K2的连接数据。
例如,密钥K1和K2是64位密钥,并且秘密密钥K(其是连接数据)是128位数据。
在图中所示的G表示密钥转换单元。如在上文参照图32和随后的附图所述的密钥转换单元302中,密钥转换单元执行应用函数G的密钥转换处理,并且具有两个特性(即,全扩散性和对合性)。
图42中所示的密钥调度单元380按顺序输出密钥K1和K2以及转换密钥Kd1和Kd2,密钥K1和K2是从存储在密钥寄存器381中的秘密密钥K分割的数据,通过将密钥转换单元(G)中的这些密钥转换到加密处理单元385的异或单元(轮密钥计算单元)来获得转换密钥Kd1和Kd2
在所示的实例中,当密钥K1和K2是64位密钥时,纯文本P(其是加密处理单元385的转换目标)也是64位数据。
在图42中所示的实例中,密钥的输出顺序如下:
密钥K1
密钥K2
转换密钥Kd1
转换密钥Kd2
密钥K1
密钥K2,以及
转换密钥Kd1
以该顺序将四种密钥输入到加密处理单元385。
可以用各种方式设置密钥的输入顺序。
在图42中图示多个密钥转换单元(G)。然而,当执行上文参照图41A和图41B所述的轮安装时,只可以配置一个密钥转换单元(G)。
将参照图43A和图43B描述密钥调度单元的配置的另一实例。
在图43A和图43B中,图示以下附图:
(a)密钥调度单元的配置;以及
(b)密钥调度单元的密钥输出配置。
如图43A中所示,预先生成的秘密密钥K存储在密钥调度单元的密钥寄存器391中。
秘密密钥K是密钥K1和K2的连接数据。
例如,密钥K1和K2是64位密钥,并且秘密密钥K(其是连接数据)是128位数据。
图43A中所示的密钥调度单元包括密钥转换单元G393以及异或单元392和394。
如在上文参照图32和随后的附图所述的密钥转换单元302中,密钥转换单元G393是执行应用函数G的密钥转换处理的密钥转换单元,并且具有两个特性(即,全扩散性和对合性)。
图43A中所示的密钥调度单元基于这种配置生成以下六种密钥:
密钥K1
密钥K2
转换密钥Kd1
转换密钥Kd2
异或计算密钥K1(+)K2;以及
异或计算转换密钥Kd1(+)Kd2
图43A中所示的密钥调度单元生成六种密钥并且将密钥按顺序输出到加密处理单元。
当密钥K=128位时,上述六种密钥都是64位密钥。在这种情况下,纯文本P(其是加密处理单元的转换目标)也是64位数据。
在图43B中所示的实例中,密钥的输出顺序如下:
密钥K1
密钥K2
转换密钥Kd1
转换密钥Kd2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
转换密钥Kd2
转换密钥Kd1
密钥K2,以及
密钥K1
以该顺序将六种密钥输入到加密处理单元。
密钥的输入序列的逆顺序也是相同的序列。
这意味着,在从纯文本P生成密文C的加密处理中密钥的输入顺序和在从密文C生成纯文本P的解密处理中密钥的输入顺序被设置为相同。这意味着,应用于加密处理和解密处理的硬件或程序可以被一般化,并且是促成设备的重量减少(小型化)的设置。
稍后将描述包括图43A和图43B中所示的密钥调度单元的加密处理设备的具体配置。
<5-6.包括具有全扩散性的密钥调度单元的配置的实例>
在上述实施方案中,已描述这种情况,其中通过将转换函数G应用到秘密密钥K的转换处理生成转换密钥Kd的密钥转换单元具有对合性和全扩散性这两个特性。然而,即使当应用不具有对合性并且具有全扩散性的密钥转换单元时,输入数据的扩散性能提高,并且实现具有对各种攻击的高抵抗的安全加密处理配置。
在下文中,将描述具有全扩散性的加密处理配置的实施方案。
图44是说明一个事实的图解,即,当密钥转换函数G具有全扩散性时确保输入数据(P)的内部状态S的全扩散性。如参照图35等在上述章节<5-2.基于密钥调度单元的全扩散性的有益效果>中所述,当密钥转换单元的密钥转换函数G具有全扩散性时,也确保转换目标数据与密钥之间的全扩散性。
在图44中所示的配置中,将基本密钥K1输入到加密处理单元的异或单元,并且执行与输入状态的异或计算。此后,在轮计算单元R1中执行非线性转换处理和线性转换处理。
此外,对异或单元中的输出执行与转换密钥Kd1的异或计算。
将检查异或单元的输出(S)。
确保基本密钥K1与转换密钥Kd1之间的全扩散性。
在转换目标数据在轮计算单元R1中进行非线性转换处理和线性转换处理之后,转换目标数据进行与转换密钥Kd1的异或计算。
因此,甚至确保基本密钥K1与转换数据之间的全扩散性。
这种性质可以说是引起加密处理设备的安全性和促成安装性能的性质。
具体来说,通过密钥的数据扩散性提高。即使当轮数减少时,也实现高扩散性能。因此,有可能提高对各种攻击的抵抗。例如,有可能通过使用密钥依赖性等基于中间值协议攻击来进一步提高对密钥分析处理的抵抗。
在不执行密钥转换的加密处理配置中,如在图45中,扩散(全扩散)到输入规划文本P的所有位所需的轮数取决于轮函数(R)的处理,其中应用密钥的组成信息(位串)是转换目标数据。
相反,在执行图44中所示的密钥转换的配置中,扩散(全扩散)到输入规划文本P的所有位所需的轮数是使用两个基本密钥K1和转换密钥Kd1的轮数,其中应用密钥的组成信息(位串)是转换目标数据。
所示的实例是一轮。
即,当应用根据本公开的实施方案的处理时,通过一轮实现密钥数据的组成信息到转换目标数据的扩散,并且确保较大的扩散性能而不依赖于轮函数(R)的处理。
即,用较少数量的轮实现具有对攻击的高抵抗的安全加密处理。因此,实现高速处理和重量减少。
将描述具有全扩散性的G函数的具体实例。
下面将要描述的G函数是由以下两个函数的组合进行配置:
(a)全扩散4位函数(Df4);以及
(b)16位替换函数(Bp16)。
(a)全扩散4位函数是输入和输出是4位的转换函数,并且是具有全扩散性的函数,其指示输入4位对输出4位的所有位的影响。
全扩散4位函数是具有以下性质的函数:
输入:x0、x1、x2、x3(各1位);以及
输出:y0、y1、y2、y3(各1位)。
此时,函数f是如下:
yi=f(x0,x1,x2,x3),
其中i=0、1、2和3。
接着,将参照图46描述(b)16位替换函数(Bp16)。
图46图示16位替换函数(Bp16)的实例。
输入X被假定是x0,x1,x2,...,x15的16位数据,并且通过将输入X输入到转换函数G所转换的输出Y被假定是y0,y1,y2,...,y15的16位数据。
这里,xi和yi中的每个是0或1的1位数据。
通过16位替换函数(Bp16)的输入位和输出位之间的关系是以下对应关系:
输入:x0,x1,...,x15(各1位);
输出:y0,y1,...,y15(各1位);
函数:y0=x0,y1=x4,y2=x8,并且y3=x12
y4=x1,y5=x5,y6=x9,并且y7=x13
y8=x2,y9=x6,y10=x10,并且y11=x14;以及
y12=x3,y13=x7,y14=x11,并且y15=x15
图47是应用由以下两个函数形成并且具有全扩散性的G函数的密钥转换处理的实例(处理实例1)的图解:
(a)全扩散4位函数(Df4);以及
(b)16位替换函数(Bp16)。
这里,A被假定是基本密钥,并且B被假定是转换密钥。这两个密钥是每个分量具有4位的4*4状态数据。
在图47中所示的实例中,从基本密钥A生成转换密钥B的处理被配置成包括以下四个步骤:
(S11)将全扩散4位函数(Df4)应用到基本密钥A的十六个4位分量中的每个以执行转换的步骤;
(S12)在通过步骤S11的转换处理生成的数据(4*4状态)的每一列将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;
(S13)将全扩散4位函数(Df4)应用到通过步骤S12的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤;以及
(S14)在通过步骤S13的转换处理生成的数据(4*4状态)的每一行将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤。
通过这种处理,从基本密钥A生成转换密钥B。
转换密钥B的分量b0至b15中的每个是接收基本密钥A的分量a0至a15中的每个的影响的数据。确保基本密钥A与转换密钥B之间的全扩散性。
图48也是图示应用由以下两个函数形成并且具有全扩散性的G函数的密钥转换处理的实例(处理实例2)的图解:
(a)全扩散4位函数(Df4);以及
(b)16位替换函数(Bp16)。
这里,A被假定是基本密钥,并且B被假定是转换密钥。这两个密钥是每个分量具有4位的4*4状态数据。
在图48中所示的实例中,从基本密钥A生成转换密钥B的处理被配置成包括以下五个步骤:
(S21)将全扩散4位函数(Df4)应用到基本密钥A的十六个4位分量中的每个以执行转换的步骤;
(S22)在通过步骤S21的转换处理生成的数据(4*4状态)的每一列将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;
(S23)将全扩散4位函数(Df4)应用到通过步骤S22的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤;
(S24)在通过步骤S23的转换处理生成的数据(4*4状态)的每一行将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;以及
(S25)将全扩散4位函数(Df4)应用到通过步骤S24的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤。
通过这种处理,从基本密钥A生成转换密钥B。
转换密钥B的分量b0至b15中的每个是接收基本密钥A的分量a0至a15中的每个的影响的数据。确保基本密钥A与转换密钥B之间的全扩散性。
图49也是图示应用由以下两个函数形成并且具有全扩散性的G函数的密钥转换处理的实例(处理实例3)的图解:
(a)全扩散4位函数(Df4);以及
(b)16位替换函数(Bp16)。
这里,A被假定是基本密钥,并且B被假定是转换密钥。这两个密钥是每个分量具有4位的4*4状态数据。
G函数应用于处理实例3。
(a)全扩散4位函数(Df4)是也具有对合性的函数。
在图49中所示的实例中,从基本密钥A生成转换密钥B的处理被配置成包括以下五个步骤:
(S31)将具有对合性和全扩散性的4位函数(Df4)应用到基本密钥A的十六个4位分量中的每个以执行转换的步骤;
(S32)在通过步骤S31的转换处理生成的数据(4*4状态)的每一列将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;
(S33)将具有对合性和全扩散性的4位函数(Df4)应用到通过步骤S32的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤;
(S34)在通过步骤S33的转换处理生成的数据(4*4状态)的每一行将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;以及
(S35)将具有对合性和全扩散性的4位函数(Df4)应用到通过步骤S34的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤。
通过这种处理,从基本密钥A生成转换密钥B。
转换密钥B的分量b0至b15中的每个是接收基本密钥A的分量a0至a15中的每个的影响的数据。确保基本密钥A与转换密钥B之间的全扩散性。此外,(a)全扩散4位函数(Df4)和(b)16位替换函数(Bp16)的这两个函数都具有对合性,并且确保基本密钥A与转换密钥B之间的对合性。
图50也是图示应用由以下两个函数形成并且具有全扩散性的G函数的密钥转换处理的实例(处理实例4)的图解:
(a)全扩散4位函数(Df4);以及
(b)16位替换函数(Bp16)。
这里,A被假定是基本密钥,并且B被假定是转换密钥。这两个密钥是每个分量具有4位的4*4状态数据。
G函数应用于处理实例4。
(a)全扩散4位函数(Df4)是也具有对合性的函数。
在图50中所示的实例中,从基本密钥A生成转换密钥B的处理被配置成包括以下五个步骤:
(S41)在基本密钥A(4*4状态)的每一列将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;
(S42)将具有对合性和全扩散性的4位函数(Df4)应用到通过步骤S41的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤;
(S43)在通过步骤S42的转换处理生成的数据(4*4状态)的每一列将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;
(S44)将具有对合性和全扩散性的4位函数(Df4)应用到通过步骤S43的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤;以及
(S45)在通过步骤S44的转换处理生成的数据(4*4状态)的每一行将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤。
通过这种处理,从基本密钥A生成转换密钥B。
转换密钥B的分量b0至b15中的每个是接收基本密钥A的分量a0至a15中的每个的影响的数据。确保基本密钥A与转换密钥B之间的全扩散性。此外,(a)全扩散4位函数(Df4)和(b)16位替换函数(Bp16)的这两个函数都具有对合性,确保基本密钥A与转换密钥B之间的对合性。
图51也是图示应用由以下两个函数形成并且具有全扩散性的G函数的密钥转换处理的实例(处理实例5)的图解:
(a)全扩散4位函数(Df4);以及
(b)16位替换函数(Bp16)。
这里,A被假定是基本密钥,并且B被假定是转换密钥。这两个密钥是每个分量具有4位的4*4状态数据。
G函数应用于处理实例5。
(a)全扩散4位函数(Df4)是也具有对合性的函数。
在图51中所示的实例中,从基本密钥A生成转换密钥B的处理被配置成包括以下五个步骤:
(S51)将具有对合性和全扩散性的4位函数(Df4)应用到基本密钥A的十六个4位分量中的每个以执行转换的步骤;
(S52)在通过步骤S51的转换处理生成的数据(4*4状态)的每一列将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;
(S53)将具有对合性和全扩散性的4位函数(Df4)应用到通过步骤S52的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤;
(S54)在通过步骤S53的转换处理生成的数据(4*4状态)的每一行将16位替换函数(Bp16)应用到16位数据中的每个以执行转换的步骤;以及
(S55)将具有对合性和全扩散性的4位函数(Df4)应用到通过步骤S54的转换处理生成的数据(4*4状态)的十六个4位分量中的每个以执行转换的步骤。
通过这种处理,从基本密钥A生成转换密钥B。
转换密钥B的分量b0至b15中的每个是接收基本密钥A的分量a0至a15中的每个的影响的数据。确保基本密钥A与转换密钥B之间的全扩散性。此外,(a)全扩散4位函数(Df4)和(b)16位替换函数(Bp16)的这两个函数都具有对合性,确保基本密钥A与转换密钥B之间的对合性。
已参照图47至图51描述密钥转换函数G的五个配置实例。
可以在从基本密钥K生成转换密钥时应用这种密钥转换函数。密钥转换密钥也可以应用到通过分割基本密钥K生成的分割密钥的转换处理,如上文参照图42所述。
应用到两个分割密钥的密钥转换函数具有另一设置。
图52中所示的加密处理设备包括密钥调度单元380和加密处理单元385。预先生成的秘密密钥K存储在密钥调度单元380的密钥寄存器381中。
秘密密钥K是密钥K1和K2的连接数据。
例如,密钥K1和K2是64位密钥,并且秘密密钥K(其是连接数据)是128位数据。
图中所示的G1和G2是密钥转换单元。
密钥转换单元至少具有全扩散性。
或者,密钥转换单元具有两个特性,即,全扩散性和对合性。
例如,以下设置可以用密钥转换函数G1和G2的组合来实现。
(a)G1和G2具有全扩散性,但不具有对合性。
(b)G1和G2具有全扩散性和对合性。
(c)G1和G2具有全扩散性,并且G1和G2具有反函数的设置,关系是“G2=G1-1”。
作为密钥转换函数G1和G2的组合,可以实现各种设置,如上所述。
<6.实现常数输入的安全性提高的配置>
接着,将描述加密处理设备,其将常数输入到重复执行轮计算的加密处理单元并且执行转换目标数据或轮密钥和常数的计算,使得扩散性能提高。
<6-1.实现常数输入的安全性提高的相关技术的配置和问题>
为了排除在通过轮函数重复执行轮计算的配置中在每一轮的转换处理的相同性,在相关技术中已提出在每一轮应用不同常数的配置。
这种常数输入处理可以说是有效的方法,因为对称为滑动攻击或反射攻击的攻击的抵抗提高。
首先,将描述相关技术类型的常数输入配置和问题的概述。
作为相关技术类型的常数输入配置的实例,例如,有图53中所示的配置。
图53中所示的轮计算执行单元401a至401d是轮函数执行单元,其包括加密处理单元中的异或单元(轮密钥计算单元)、非线性转换单元和线性转换单元。
将常数1(CON1)至常数4(CON4)按顺序输入到轮计算执行单元401a至401d。
输入常数CON进行与轮计算单元中的转换数据或轮密钥的异或计算。
通过在每一轮执行各种常数的计算,轮计算之间的相同性被排除并且对各种攻击的抵抗可以提高。
将描述常数输入配置中的下一个问题。
在加密处理设备中,可以用相同的设备通过设计轮函数的设置来执行加密处理和解密处理。
具体来说,如图54中所示,当应用到加密处理设备的加密处理单元的多个转换函数的配置从中心分成右侧和左侧时,可以用相同的设备通过形成右半侧与左半侧之间的反函数的关系来执行加密处理和解密处理。
这个设备被称为具有对合性的加密处理设备。
在图54中所示的实例中,转换函数E 411和转换函数E-1 413具有反函数的关系。在中心处的线性转换单元M相对于输入A输出一个输出B,并且相对于输入B输出一个输出A。
以该顺序将转换函数E 411、线性转换单元412和转换函数E-1 413应用到纯文本P以获得密文C。
以相同的顺序将转换单元应用到密文C。即,通过以该顺序应用转换函数E 411、线性转换单元412和转换函数E-1 413,可以获得原始的纯文本P。
这种加密处理设备被称为具有对合性的加密处理设备。在具有对合性的加密处理设备中,有加密处理设备,其中不但轮函数的执行序列在正向和反向两个方向上是相同的序列,而且在每一轮应用的轮密钥的输入顺序在正向和反向两个方向上是相同的。
例如,上文参照图43A和图43B所述的密钥输入序列是实现加密处理设备的对合性的一个密钥输入序列。
然而,作为具有对合性的加密处理设备的一个问题,有安全问题。
将参照图55A和图55B描述这个问题。
图55A是图示当常数不被输入到具有对合性的加密处理设备时转换单元的数据输入值和输出值之间的关系的说明图。
假定纯文本P的一部分的“组成数据=Y”。
通过转换函数E 411的数据Y的转换结果被假定是X。
线性转换单元412对转换函数E 411的输出值执行线性转换,但在某些情况下直接输出该输出值的一部分的组成数据(位)的值。在线性转换中输入值和输出值是相同的值所处的点被称为稳定点。在应用到许多加密处理设备的线性转换处理中有几个稳定点。
在图55A中所示的实例中,线性转换单元412的输入值X被假定成为线性转换单元412的输出X,而无需通过线性转换单元412的稳定点的操作进行转换。
在这种情况下,值X被输入到转换函数E-1 413。由于转换函数E-1 413是转换函数E411的反函数,故输入值X返回到原始值Y。
即,密文C的一部分的输出值Y可以成为与输入纯文本P的组成值Y相同的值。即,输入值和输出值是相同的稳定点也发生在整个加密处理设备中。
这种性质是导致易受各种攻击的性质,并且是加密处理设备的安全性被破坏的不良性质。
图55B图示具有对合性的加密处理设备,如在图55A中。然而,转换函数E 411被配置成执行常数1(CON1)被输入的计算,并且执行常数2(CON2)被输入到转换函数E-1 413的计算。
说明在输入这些常数时转换单元的数据输入值和输出值之间的关系。
假定纯文本P的一部分的“组成数据=Y”。
通过转换函数E 411的数据Y的转换结果被假定是X。
在这个实例中,假定线性转换单元412的输入值X通过线性转换单元412的线性转换处理被转换为“X+ΔA”。
在这种情况下,值“X+ΔA”被输入到转换函数E-1 413。转换函数E-1 413是转换函数E 411的反函数,并且被配置成执行常数2(CON2)被输入的计算,并且不是执行常数1(CON1)被输入的计算的转换函数E 411的完整的反函数。
然而,根据选择常数的方法,如图所示,在某些情况下,对应于转换函数E-1 413的输入“X+ΔA”的输出值被设置为与“Y+ΔB”相同。
即,特定差分数据添加到输入数据的关系在某些情况下发生如下:
线性转换单元的输入值和输出值之间的对应关系是X和“X+ΔA”;以及
加密处理设备的输入值和输出值之间的对应关系是Y和“Y+ΔB”。
输入和输出数据的这种关系也是导致易受各种攻击的性质,并且是加密处理设备的安全性被破坏的不良性质。
<6-2.具有安全性高的常数输入配置的加密处理设备的配置>
接着,将描述具有安全性是高的并且解决相关技术的配置的上述问题的常数输入配置的加密处理设备的配置。
将参照图56和随后的附图描述根据实施方案的加密处理设备的配置的实例。
图56是图示根据实施方案的加密处理单元中的常数输入配置的实例的说明图。
在图56的(a)中,图示被配置成包括具有对合的数据转换单元的加密处理单元,如参照图54所述。
即,加密处理单元包括以下数据转换单元:
转换函数E 431;
线性转换单元432;以及
转换函数E-1 433。
转换函数E-1 433是转换函数E431的反函数。
在实施方案中,常数(CON)435被输入到转换函数E-1 433。
转换函数E-1 433被配置成包括多个轮函数,并且常数(CON)被配置成输入到一个或多个轮函数单元。
在本文所示的实施方案中,常数(CON)的输入单元被设置为将常数输入到转换函数E-1 433,但可以被设置为将常数输入到转换函数E 431的侧。
即,加密处理单元具有对合性,其中转换函数E 431和转换函数E-1 433(其是转换函数E 431的反函数)按顺序被执行,并且被配置成执行一个或多个常数仅应用到转换函数E和反函数E-1中的一个的轮计算。
图56的(b)图示常数(CON)435的输入配置的具体实例。在加密处理单元的线性转换单元437的前阶段,将常数(CON)435输入到异或单元436。对异或单元436执行与输入数据A的异或计算。
异或单元436是执行与轮密钥Kr的异或计算的轮密钥计算单元。异或单元436执行数据A(其是在所示的前阶段来自轮计算单元的输出)、轮密钥Kr和常数CON的异或计算。
即,异或单元436计算B作为以下计算执行结果,并且在后阶段将B输出到轮计算单元的线性转换处理单元437:
B=A(+)Kr(+)CON。
在上述表达式中,(+)指示异或计算。
在该配置中,以下条件被设置为输入常数(CON)435的条件。
条件:在邻近异或单元437的线性转换单元(即,在所示实例中线性转换单元437)的线性转换处理中输入值和输出值之间的差被设置为不减小的值。
具体来说,上述条件是一个条件,其中作为应用于线性转换单元437的常数CON和线性转换矩阵的矩阵计算结果可获得的所有分量是非零(即,不为零的值)。
将参照图57描述条件。
图57图示形成输入到异或单元436的常数CON 435的4*4矩阵和用于线性转换单元437的线性转换矩阵M。
常数CON 435是4*4状态,其中分量(con0至con15)中的每个是4位数据和64位数据。
线性转换矩阵M是4*4矩阵数据。
即,线性转换矩阵M是如下所示的线性转换矩阵。
[数学运算12]
m 0 m 4 m 8 m 12 m 1 m 5 m 9 m 13 m 2 m 6 m 10 m 14 m 3 m 7 m 11 m 15
常数CON的条件是一个条件,其中作为常数CON和应用于线性转换单元437的线性转换矩阵的矩阵计算的结果可获得的所有分量是非零(即,不为零的值)。
即,通过以下矩阵计算可获得的所有值是非零。
[数学运算13]
m 0 m 4 m 8 m 12 m 1 m 5 m 9 m 13 m 2 m 6 m 10 m 14 m 3 m 7 m 11 m 15 &CenterDot; con 0 con 1 con 2 con 3 , ... , m 0 m 4 m 8 m 12 m 1 m 5 m 9 m 13 m 2 m 6 m 10 m 14 m 3 m 7 m 11 m 15 &CenterDot; con 12 con 13 con 14 con 15
常数CON被设置成通过以上矩阵计算表达式计算的所有十六个值不为零(即,非零)。
在这种设置中,有可能防止在邻近常数CON被输入到的异或单元的线性转换单元(即,在图57中所示的实例中线性转换单元437)中线性转换处理的输入值和输出值之间的差的减少。因此,有可能使最小差值活跃S盒数保持预定数量或更多。
将参照图58描述常数CON的具体设置实例。
在图58中所示的实例中,邻近常数CON 435被输入到的异或单元436的线性转换单元437被设置为上文参照图23至图30所述的线性转换单元P1。即,这个实例是执行应用如下所示的矩阵的列扩散计算(MixColumn)的设置实例。
[数学运算14]
M 0 = 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
线性转换单元437执行应用上述矩阵M0的列扩散计算(MixColumn),即,下面的计算:
MC[M0]。
此时,常数CON的条件是一个条件,其中作为常数CON和应用于线性转换单元437的线性转换矩阵M0的矩阵计算的结果可获得的所有分量是非零(即,不为零的值)。
这种常数CON的实例是图58中所示的常数CON,并且是具有以下分量的配置的4*4状态。
[数学运算15]
具有上述设置的4*4状态的常数被输入到异或单元,所述异或单元邻近执行应用矩阵M0的列扩散计算(MixColumn):Mc[M0]的线性转换单元,以执行异或计算。在该配置中,防止线性转换单元的线性转换的差的减少。因此,有可能防止最小差值活跃S盒数的减少,从而实现了安全性是高的并且对各种攻击的抵抗提高的加密处理配置。
图59是图示在具有满足上述常数条件的常数CON的输入配置的加密处理设备的加密处理单元中,轮密钥和常数CON的输入配置和计算配置的实例的图解。
在图59中,从左下角输入纯文本P,并且从右下角输出密文C。
图59中所示的加密处理设备的加密处理单元451(E)对应于图56的(a)中所示的转换函数E 431。
线性转换单元(P2)452对应于图56的(a)中所示的线性转换单元432。
加密处理单元453(E-1)对应于图56的(a)中所示的转换函数E-1 433。
图59中所示的加密处理设备的配置是具有对合性的加密处理设备。
图59中所示的轮密钥的输入实例对应于上文参照图43A和图43B所述的配置的实例。即,在加密处理单元中配置的异或单元的轮密钥的输入顺序如下:
密钥K1
密钥K2
转换密钥Kd1
转换密钥Kd2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
转换密钥Kd2
转换密钥Kd1
密钥K2,以及
密钥K1
在图43A和图43B中所示的设置中,异或计算密钥K1(+)K2被设置成输入到轮计算单元R6。在图59中所示的实例中,然而,异或计算密钥K1(+)K2被设置为在线性转换单元452之前和之后被重复输入。
图59中所示的配置对应于在图43A和图43B中所示的轮计算单元R6被设置为被配置成包括以下转换单元的轮计算单元时的配置:
线性转换单元452;
在线性转换单元452之前和之后的异或计算密钥K1(+)K2的两个异或单元;以及
非线性转换单元。
密钥调度单元的轮密钥供给单元以上述顺序输出六种密钥。密钥的输入序列的逆顺序也是相同的序列。
这意味着,在从纯文本P生成密文C的加密处理中密钥的输入顺序和在从密文C生成纯文本P的解密处理中密钥的输入顺序被设置为相同。即,密钥的输入序列是具有对合性的密钥的输入序列,应用于加密处理和解密处理的硬件或程序可以被一般化,这种设置促成设备的重量减少(小型化)。
在图59中所示的配置中,常数CON被输入到加密处理单元453(E-1)的异或单元,即,异或单元461、异或单元463和异或单元465。
常数CON是例如参照图58所述的4*4状态的常数CON。
分别邻近三个异或单元461、463和465的线性转换单元462、464和466执行应用上述矩阵M0(即,下面的矩阵)的列扩散计算(MixColumn):
MC[M0]。
图59中所示的加密处理单元执行从纯文本P生成密文C的序列的逆序列,具有也可以从密文C生成纯文本P的对合的配置,并且可以通过应用相同的硬件或相同的程序来执行加密处理和解密处理。
由于密钥的输入序列也是加密处理和解密处理中相同的序列,故密钥调度单元的密钥供给处理也可以执行为应用相同的硬件或相同的程序的处理。
在上述常数输入配置中,有可能防止最小差值活跃S盒数的减少,从而实现了安全性是高的并且对各种攻击的抵抗提高的加密处理配置。
在基于一般的加密处理中活跃S盒的评估处理与基于根据本公开的实施方案的常数输入配置中活跃S盒的评估处理之间有细微差异。因此,将参照图60和图61描述差异。
如上所述,在用公用密钥块加密设置的非线性转换单元中使用执行以s位为单位的非线性转换的S盒。
作为指示对差分攻击的抵抗的指数,有包括在表示不同连接关系的差分路径中的最小数量的差值活跃S盒,即,最小差值活跃S盒数。
在一般的块加密中,非线性转换仅是S盒的处理的一部分。如图60的(A)和(B)中所示,在执行块加密的块加密设备中,具有特定差ΔX的数据P1和数据P2被分别输入,并且获得C1和C2的加密处理结果。
在两个加密处理(A)和(B)中,差值被输入到的S盒定义为活跃S盒。通过指定差值被输入到的S盒,分析的容易性提高。即,对攻击的抵抗变弱。
一般来说,如图60中所示,在设置具有预定差ΔX的两个输入P1和P2时发生的差值被输入到的S盒数定义为活跃S盒。通过计数这个数量,执行安全性评估。
图61图示被配置成包括具有上述图56的(a)中所示的对合性的数据转换单元的加密处理单元。
即,加密处理单元包括下面的数据转换单元:
转换函数E 431;
线性转换单元432;以及
转换函数E-1 433。
转换函数E-1 433是转换函数E431的反函数。
常数(CON)435被输入到转换函数E-1 433。
转换函数E-1 433被配置成包括多个轮函数,并且常数(CON)被配置成输入到一个或多个轮函数单元。
加密处理单元具有对合性,其中转换函数E 431和转换函数E-1 433(其是转换函数E 431的反函数)按顺序被执行,并且被配置成执行一个或多个常数仅应用到转换函数E和反函数E-1中的一个的轮计算。
在该配置中,输入S1是从线性转换单元432的侧输入到转换函数E 431,并且获得输出T。
另一方面,差值ΔX被加到上述输入值S1的输入S2(=S1(+)ΔX)同样是从线性转换单元432的侧输入到转换函数E-1 433,并且获得输出T(+)ΔY。
当具有差ΔX的输入值S1和S2在反向上被输入到两个函数,即,转换函数E 431和转换函数E-1 433(其是转换函数E 431的反函数)时,如图61中所示,差被输入到的S盒被设置为处在位于函数的对应位置的S盒中的活跃S盒。
图62是图示在上述图59中所示的加密处理配置中计算活跃S盒数的配置的说明图。
输入值S1是从图62中所示的加密处理设备的加密处理单元451(E)的线性转换单元452的侧被输入,并且执行应用加密处理单元451(E)的加密处理。
另一方面,与输入值S1的差ΔX被设置的输入值S2是从加密处理单元453(E-1)(其是加密处理单元451(E)的反函数)的线性转换单元452的侧被输入,并且执行应用加密处理单元453(E-1)的加密处理。
差被输入到的S盒被设置为处在位于两个加密处理中的加密处理单元(E)和(E-1)的对应位置的S盒中的活跃S盒。
当活跃S盒数减少时,例如,对称为滑动攻击或反射攻击的攻击的抵抗变弱。通过保持给定数量或更多的活跃S盒,有可能提高对这种攻击的抵抗。因此,有可能提高安全性。在上述常数输入配置中,有可能防止最小差值活跃S盒数的减少,从而实现了安全性是高的并且对各种攻击的抵抗提高的加密处理配置。
<6-3.常数插入位置的变化>
在上述实施方案中,已在具有对合性并且按顺序执行数据转换函数E和数据转换函数E的反函数E-1的加密处理设备中描述该配置,其中执行常数CON仅被输入到函数E和反函数E-1中的一个并且应用常数的轮计算。
在这种设置中,有可能防止在邻近常数CON被输入到的异或单元的线性转换单元(即,在图57中所示的实例中线性转换单元437)中线性转换处理的输入值和输出值之间的差的减少。因此,有可能使最小差值活跃S盒数保持预定数量或更多。
常数输入配置并不只限于函数E和反函数E-1中的一个,但可以是执行常数一次或多次被应用到函数E和反函数E-1中的两个的轮计算的配置。然而,常数应用位置被假定是偏离对应位置的位置(非对应位置),而不是函数E和反函数E-1的对应位置。
在图63中图示具有常数输入配置的加密处理设备的配置的实例。
在图63中,从左下角输入纯文本P,并且从右下角输出密文C。
图63中所示的加密处理设备的加密处理单元451(E)对应于图56的(a)中所示的转换函数E 431。
线性转换单元(P2)452对应于图56的(a)中所示的线性转换单元432。
加密处理单元453(E-1)对应于图56的(a)中所示的转换函数E-1 433。
图63中所示的加密处理单元的配置是具有对合性的加密处理单元。
图63中所示的轮密钥的输入实例对应于上文参照图43A和图43B所述的配置的实例。即,在加密处理单元中配置的异或单元的轮密钥的输入顺序如下:
密钥K1
密钥K2
转换密钥Kd1
转换密钥Kd2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
转换密钥Kd2
转换密钥Kd1
密钥K2
密钥K1
在图43A和图43B中所示的设置中,异或计算密钥K1(+)K2被设置为输入到轮计算单元R6。在图63中所示的实例中,然而,异或计算密钥K1(+)K2被设置为在线性转换单元452之前和之后被重复输入。
图63中所示的配置对应于在图43A和图43B中所示的轮计算单元R6被设置为被配置成包括以下转换单元的轮计算单元时的配置:
线性转换单元452;
在线性转换单元452之前和之后的异或计算密钥K1(+)K2的两个异或单元;以及
非线性转换单元。
密钥调度单元的轮密钥供给单元以上述顺序输出六种密钥。密钥的输入序列的逆顺序也是相同的序列。
这意味着,在从纯文本P生成密文C的加密处理中密钥的输入顺序和在从密文C生成纯文本P的解密处理中密钥的输入顺序被设置为相同。即,密钥的输入序列是具有对合性的密钥的输入序列,应用于加密处理和解密处理的硬件或程序可以被一般化,这种设置促成设备的重量减少(小型化)。
在图63中所示的配置中,常数CON被输入到加密处理单元451(E)的异或单元,即,异或单元471和异或单元472。
常数CON也被输入到加密处理单元453(E-1)的异或单元473。
常数CON是例如参照图58所述的4*4状态的常数CON。
分别邻近三个异或单元471、472和473的线性转换单元481、482和483执行应用上述矩阵M0(即,下面的矩阵)的列扩散计算(MixColumn):
MC[M0]。
常数输入配置并不只限于函数E和反函数E-1中的一个,但可以是执行常数一次或多次被应用到函数E和反函数E-1中的两个的轮计算的配置。然而,常数应用位置被假定是偏离位置(非对应位置),而不是函数E和反函数E-1的对应位置。
图63中所示的加密处理单元执行从纯文本P生成密文C的序列的逆序列,具有也可以从密文C生成纯文本P的对合的配置,并且可以通过应用相同的硬件或相同的程序来执行加密处理和解密处理。
由于密钥的输入序列也是加密处理和解密处理中相同的序列,故密钥调度单元的密钥供给处理也可以执行为应用相同的硬件或相同的程序的处理。
<7.应用到非线性转换单元的S盒的具体配置实例>
接着,将描述应用到非线性转换单元的S盒的具体配置实例。
例如,包括在加密处理单元120中的非线性转换单元122具有图19中所示的加密处理设备100中的加密处理单元120的对合性(即,从纯文本P生成密文C并且输出密文C的硬件或程序与从密文C生成纯文本P并且输出纯文本P的硬件或程序相同的对合)是必要的。
在下文中,将描述在加密处理单元120中配置的非线性转换单元122具有对合性的配置的实例。
如上文参照图22A和图22B所述,例如,图19中所示的加密处理设备100的加密处理单元120中的非线性转换单元122被配置成包括多个S盒,如图22A中所示。
每个S盒是例如具有4位输入/输出配置的非线性转换单元。“4*16=64”位的非线性转换处理被执行为十六个S盒的并行处理。
4位输入/输出的S盒具有对合性的配置是必要的。
即,当可以从4位输入值获得某一4位输出值并且将4位输出值输入到相同的S盒时,可以获得原始的4位输入值的配置是必要的。
具有对合性的函数f(x)是满足所有输入值x的以下表达式的函数:
f(f(x))=x。
包括在加密处理单元120中的非线性转换单元122必须是具有对合性的函数f(x)。
将参照图64和随后的附图描述具有对合性的4位输入/输出的S盒的配置的实例。
图64的(1)是图示非线性转换单元的配置的实例的图解,如在上述图22A中。
即,图示包括在图19中所示的加密处理设备100的加密处理单元120中的非线性转换单元122的配置的实例。非线性转换单元122具有布置执行非线性转换处理的多个S盒的配置。
每个S盒执行4位数据的非线性转换。
图64的(2)图示包括在非线性转换单元中的一个S盒的配置。S盒被分为以下三层:
非线性转换层1 521;
线性转换层522;以及
非线性转换层2 523。
非线性转换层2 523是非线性转换层1 521的反函数。
图65图示S盒的电路配置的具体实例。
如图65中所示,非线性转换层1 521被配置成包括两个异或计算单元(XOR)和两个基本运算符。
图65中所示的实例是反或电路被设置为基本运算符的实例。然而,基本运算符可以用执行与电路、或电路和与非电路中的一个的2输入和1输出的计算的基本运算符替代。
两个基本运算符可以是相同的基本运算符的组合,或可以是不同的基本运算符的组合。
线性转换层522是执行输入4位置换处理并且基本上具有对合性的线性转换层。
非线性转换层2 523被非线性转换层1 521的反函数配置。
被配置成包括三层的S盒电路是具有对合性的非线性转换电路。
在图65的下半部分示出图65中所示的S盒的输入值(in)与输出值(out)之间的对应关系数据。
所有输入值和输出值都是4位数据并且是0000至1111的数据。图65中所示的表被指示为用十进制计数制中从0000到1111表示的0至15的输入值和输出值的对应表。
如从该表可知,使用从任何输入值X获得的输出值Y作为输入值Y而获得的输出值是原始输入值X。
即,图65中所示的4位输入/输出的S盒是具有对合性的非线性转换电路。
图66图示S盒的数据转换表达式。
这里,ain、bin、cin和din被假定是S盒的4位输入,并且aout、bout、cout和dout被假定是S盒的4位输出。
S盒的数据转换表达式如下。
[数学运算16]
a o u t = c i n &CirclePlus; ~ ( ( d i n &CirclePlus; ~ ( a i n | b i n ) ) | ( a i n &CirclePlus; ~ ( b i n | c i n ) ) )
b o u t = d i n &CirclePlus; ~ ( a i n | b i n )
c o u t = a i n &CirclePlus; ~ ( b i n | c i n )
d o u t = b i n &CirclePlus; ~ ( b o u t | a o u t ) = b i n &CirclePlus; ~ ( ( d i n &CirclePlus; ~ ( a i n | b i n ) ) | ( c i n &CirclePlus; ~ ( ( d i n &CirclePlus; ~ ( a i n | b i n ) ) | ( a i n &CirclePlus; ~ ( b i n | c i n ) ) ) ) )
在上述表达式中,~(x|y)指示()中的值“否”。具体来说,~(x|y)指示在反或电路的输入值是x和y时反或电路的输出值。
执行由上述计算表达式表示的数据转换的S盒具有对合性。
图66中所示的S盒电路具有差分概率2-2和线性概率2-2,并且具有足够的安全性。
图66中所示的S盒被配置成包括四个异或运算符(XOR)和四个反或电路。硬件电路上所需的门数是13门。
必要的门数被计算为异或运算符(XOR)=2.25门并且反或电路=1门。
例如,整个加密处理单元的对合性是通过参照图54所述的加密处理单元的配置来实现,即,图64至图66中所示的S盒用于加密处理单元的转换函数E 411和转换函数E-1 413内的非线性转换单元中的配置,所述加密处理单元被配置成包括:
转换函数E 411;
线性转换单元412;以及
转换函数E-1 413。
参照图65和图66所述的S盒被配置成包括以下三层:
非线性转换层1;
线性转换层;以及
非线性转换层2。
这里,将描述具有三层配置的S盒的另一实例。
作为上述三层配置的线性转换层的先决条件,位替换必须被配置成在没有具有对合性并且其中输入和输出位是不变的替换单元下执行。
将参照图67描述线性转换层的条件。
图67图示4位输入/输出的S盒中的线性转换层的设置实例。
如在参照图65和图66所述的S盒中,具有以下三层配置的4位输入/输出的S盒中的线性转换层被设置为例如图67的(1)中所示的设置中的一个:
非线性转换层1;
线性转换层;以及
非线性转换层2。
当相对于线性转换层,输入4位是X=(x0,x1,x2,x3)并且输出4位是Y=(y0,y1,y2,y3)时,具有对合性并且其中输入和输出位是不相同的设置如下:
yi不等于xi
其中i=0、1、2和3。
线性转换层的条件是:建立了上述表达式。
图67的(2)中所示的线性转换配置不满足上述条件是不合适的。
当执行4位替换的线性转换层的替换函数P4的条件表示为表达式时,下面的表达式可以指示:
(a)P4(P4(X))=X;以及
(b)yi不等于xi,其中i=0、1、2和3。
上述(a)是指示替换函数P4具有对合性的条件表达式。
上述(b)是指示输入和输出位不相同的条件表达式。
线性转换层必须被配置成执行满足上述条件的替换处理。
作为执行4位替换的S盒的实例,将参照图68和随后的附图描述与参照图65和图66所述的配置不同的配置的实例。
图68中所示的S盒是具有以下三层配置的4位输入/输出的S盒:
非线性转换层1 531;
线性转换层532;以及
非线性转换层2 533。
非线性转换层1 531被配置成包括两个异或计算单元(XOR)、与非电路和反或电路。
线性转换层532是执行输入4位置换处理并且具有对合性的线性转换层。
非线性转换层2 533被非线性转换层1 531的反函数配置。
被配置成包括三层的S盒电路是具有对合性的非线性转换电路。
在图68的下半部分示出图68中所示的S盒的输入值(in)与输出值(out)之间的对应关系数据。
所有输入值和输出值都是4位数据并且是0000至1111的数据。图68中所示的表被指示为用十进制计数制中从0000到1111表示的0至15的输入值和输出值的对应表。
如从该表可知,使用从任何输入值X获得的输出值Y作为输入值Y而获得的输出值是原始输入值X。
即,图68中所示的4位输入/输出的S盒是具有对合性的非线性转换电路。
图69图示S盒的数据转换表达式。
这里,ain、bin、cin和din被假定是S盒的4位输入,并且aout、bout、cout和dout被假定是S盒的4位输出。
S盒的数据转换表达式如下。
[数学运算17]
d o u t = a i n &CirclePlus; ~ ( b i n | d in )
在上述表达式中,~(x|y)指示在反或电路的输入值是x和y时反或电路的输出值。
此外,~(x&y)指示在与非电路的输入值是x和y时与非电路的输出值。
执行由上述计算表达式表示的数据转换的S盒具有对合性。
图69中所示的S盒电路具有差分概率2-2和线性概率2-2,并且具有足够的安全性。
图69中所示的S盒被配置成包括四个异或运算符(XOR)、两个反或电路和两个与非电路。
例如,整个加密处理单元的对合性是通过参照图54所述的加密处理单元的配置来实现,即,图69中所示的S盒用于加密处理单元的转换函数E 411和转换函数E-1 413内的非线性转换单元中的配置,所述加密处理单元被配置成包括:
转换函数E 411;
线性转换单元412;以及
转换函数E-1 413。
接着,将参照图70描述具有又一配置的4位输入/输出的S盒的实例。
图70中所示的S盒是具有以下三层配置的4位输入/输出的S盒:
非线性转换层1 541;
线性转换层542;以及
非线性转换层2 543。
非线性转换层1 541被配置成包括两个异或计算单元(XOR)和两个或电路。
线性转换层542是执行4位置换处理并且具有对合性的线性转换层。
非线性转换层2 543被非线性转换层1 541的反函数配置。
被配置成包括三层的S盒电路是具有对合性的非线性转换电路。
在图70的下半部分示出图68中所示的S盒的输入值(in)与输出值(out)之间的对应关系数据。
所有输入值和输出值都是4位数据并且是0000至1111的数据。图70中所示的表被指示为用十进制计数制中从0000到1111表示的0至15的输入值和输出值的对应表。
如从该表可知,使用从任何输入值X获得的输出值Y作为输入值Y而获得的输出值是原始输入值X。
即,图70中所示的4位输入/输出的S盒是具有对合性的非线性转换电路。
图71图示S盒的数据转换表达式。
这里,ain、bin、cin和din被假定是S盒的4位输入,并且aout、bout、cout和dout被假定是S盒的4位输出。
S盒的数据转换表达式如下。
[数学运算18]
a o u t = c i n &CirclePlus; ( ( d i n &CirclePlus; ( a i n | b i n ) ) | ( a i n &CirclePlus; ( b i n | c i n ) ) )
b o u t = d i n &CirclePlus; ( a i n | b i n )
c o u t = a i n &CirclePlus; ( b i n | c i n )
d o u t = b i n &CirclePlus; ( b o u t | a o u t ) = b i n &CirclePlus; ( ( d i n &CirclePlus; ( a i n | b i n ) ) | ( c i n &CirclePlus; ( ( d i n &CirclePlus; ( a i n | b i n ) ) | ( a i n &CirclePlus; ( b i n | c i n ) ) ) ) )
在上述表达式中,(x|y)指示在或电路的输入值是x和y时或电路的输出值。
执行由上述计算表达式表示的数据转换的S盒具有对合性。
图71中所示的S盒电路具有差分概率2-2和线性概率2-2,并且具有足够的安全性。
图71中所示的S盒被配置成包括四个异或运算符(XOR)和四个或电路。
例如,整个加密处理单元的对合性是通过参照图54所述的加密处理单元的配置来实现,即,图71中所示的S盒用于加密处理单元的转换函数E 411和转换函数E-1 413内的非线性转换单元中的配置,所述加密处理单元被配置成包括:
转换函数E 411;
线性转换单元412;以及
转换函数E-1 413。
<8.加密处理设备的具体实例>
接着,将描述具有所有上述配置(即,下面的配置)的整个加密处理设备的配置的实例:
(1)安全性提高的公用密钥加密处理的整个配置(图19至图22B);
(2)应用多个不同的线性转换矩阵来执行线性转换的配置(图23至图31);
(3)提供使用基本密钥和转换密钥生成的轮密钥并且实现对合性和全扩散性的密钥调度单元的配置(图32至图52);
(4)常数输入配置(图53至图63);以及
(5)应用具有对合性的S盒的非线性转换单元的配置(图64至图71)。
图72是图示包括所有上述配置作为加密处理设备700的加密处理设备的实例的图解。
加密处理设备700包括密钥调度单元720和加密处理单元750。
加密处理单元750包括数据转换单元,即,异或单元751、非线性转换单元752和线性转换单元753,并且具有重复执行处理的配置。
另一方面,密钥调度单元720将轮密钥RKn输出到包括在加密处理单元750中的异或单元中的每个,并且执行与转换目标数据的异或计算。
密钥调度单元720包括轮密钥供给单元721和常数供给单元(常数寄存器)725。
轮密钥供给单元721包括存储秘密密钥K的密钥寄存器722和密钥转换单元723。
例如,图72中所示的加密处理设备700的加密处理单元750输入64位纯文本P并且输出64位密文C。也可以应用加密处理单元750来输入密文C并且输出纯文本P。
当转换数据是64位时,每个轮密钥RKn也是64位。
每块64位数据是由十六个分量形成的4*4状态,其中所有分量中的每个是4位。
加密处理单元750具有带有对合性的配置,其中通过使用纯文本P作为输入数据来重复轮计算可以将密文C输出为输出数据,并且通过使用密文C作为输入数据以逆顺序设置轮计算的执行序列的数据转换处理可以将纯文本P生成为输出数据。
当从纯文本P生成密文C时,从图中所示的加密处理单元750的上端到下端执行每个转换处理。
另一方面,当从密文C生成纯文本P时,从图中所示的加密处理单元750的下端到上端执行每个转换处理。
密钥调度单元720的轮密钥供给单元721被配置成执行具有对合性的密钥供给处理,其中在从纯文本P生成密文C时的密钥供给序列与在从密文C生成纯文本P时的密钥供给序列匹配。当密钥调度单元720对加密处理单元750执行密钥供给处理时,密钥调度单元720使用常数对供给的密钥的一部分执行计算,并且将密钥数据(其是计算结果)输出到加密处理单元750。
因此,如在上文参照图59所述的配置中,图72中所示的加密处理单元750的配置是具有对合性的配置,因为以转换函数E、线性转换函数和转换函数E-1的序列设置每个转换函数。
在加密处理单元750中,如上文参照图23至图31在章节<4.加密处理单元的线性转换单元的配置和处理>中所述,设置执行三种不同的线性转换处理的线性转换处理单元。
即,线性转换处理单元包括三个不同的线性转换单元,并且改变在加密处理中在每一轮执行的线性转换处理:
线性转换单元P1;
线性转换单元P2;以及
线性转换单元P3。
即,相同的线性转换处理被设置为不在连续轮中执行。
线性转换单元P1以列为单位对4*4状态的输入数据的每一列的分量执行其中应用一个矩阵M0的矩阵计算。
这个计算是上文参照图24A至图25B所述的列扩散计算(MixColumn)。
即,线性转换单元P1执行由以下表达式表示的列扩散计算(MC):
MC[M0]。
MC[M0]是指示矩阵计算的表达式,其中相同的矩阵M0应用到状态的每一列并且具有与以下表达式相同的含义,即,分别指示应用到状态的每一列的矩阵的表达式:
MC[M0,M0,M0,M0]。
如上文参照图24A、图24B、图26A、图26B等所述,线性转换单元P2对4*4状态的输入数据的每一行的分量执行其中以行为单位应用不同的矩阵的矩阵计算。在上面的第一行至第四行执行其中应用以下矩阵的矩阵计算:
第一行:应用矩阵M0
第二行:应用矩阵M1
第三行:应用矩阵M2;以及
第四行:应用矩阵M3
即,线性转换处理单元P2执行由以下表达式表示的行扩散计算(MixRow):
MR[M0,M1,M2,M3]。
如同线性转换单元P2,如图24B中所示,线性转换单元P3也对4*4状态的输入数据的每一行的分量执行其中以行为单位应用不同的矩阵的矩阵计算。不同于线性转换单元P2,线性转换单元P3执行其中在上面的第一行至第四行应用以下矩阵的矩阵计算:
第一行:应用矩阵M2
第二行:应用矩阵M0
第三行:应用矩阵M1;以及
第四行:应用矩阵M3
这个计算是上文参照图27A和图27B所述的行扩散计算(MixRow)。
即,线性转换单元P3执行由以下表达式表示的行扩散计算(MixRow):
MR[M2,M0,M1,M3]。
如上文参照图30所述,通过组合并使用多个不同的线性转换处理并且切换在每一轮执行的线性转换处理,有可能增加活跃S盒数。因此,实现了安全性较高的加密处理(加密处理和解密处理)。
图72中所示的加密处理单元750执行按顺序应用下面的数据转换单元的数据转换处理:
执行与轮密钥RK1的异或计算的异或单元;
非线性转换单元S;
线性转换单元P1;
执行与轮密钥RK2的异或计算的异或单元;
非线性转换单元S;
线性转换单元P2;
执行与轮密钥RK3的异或计算的异或单元;
非线性转换单元S;
线性转换单元P1;
执行与轮密钥RK4的异或计算的异或单元;
非线性转换单元S;
线性转换单元P3;
执行与密钥RK5的异或计算的异或单元;
非线性转换单元S;
线性转换单元P1;
执行与轮密钥RK6的异或计算的异或单元;
非线性转换单元S;
执行与轮密钥RK7的异或计算的异或单元;
线性转换单元P2;
执行与轮密钥RK7的异或计算的异或单元;
非线性转换单元S;
执行与轮密钥RK8的异或计算的异或单元;
线性转换单元P1;
非线性转换单元S;
执行与轮密钥RK9的异或计算的异或单元;
线性转换单元P3;
非线性转换单元S;
执行与轮密钥RK10的异或计算的异或单元;
线性转换单元P1;
非线性转换单元S;
执行与轮密钥RK11的异或计算的异或单元;
线性转换单元P2;
非线性转换单元S;
执行与轮密钥RK12的异或计算的异或单元;
线性转换单元P1;
非线性转换单元S;以及
执行与轮密钥RK13的异或计算的异或单元。
轮计算执行配置与上文参照图59所述的配置相同,以下面的序列被设置,并且具有对合性:
转换函数E;
线性转换单元;以及
转换函数E-1
每个非线性转换单元被具有对合性的S盒配置,如上文参照图64至图66所述。
密钥调度单元720的轮密钥供给单元721包括密钥寄存器722和密钥转换单元723。由轮密钥供给单元721执行的处理是上文参照图32至图43B在章节<5.密钥调度单元的配置和处理>中所述的处理。
即,使用基本密钥和转换密钥生成的轮密钥被提供给加密处理单元750。在轮密钥供给配置中,实现了对合性和全扩散性。
存储在密钥寄存器中的秘密密钥K是128位密钥数据,其是64位基本密钥K1和K2的连接数据。
密钥转换单元723基于基本密钥K1生成转换密钥Kd1,并且基于基本密钥K2通过转换处理生成转换密钥Kd2
使用转换函数G和反函数G-1将转换处理表示为如下的表达式:
Kd1=G(K1);以及
K1=G-1(Kd1)。
此外,满足“G=G-1”。
即,应用到密钥转换单元723中的密钥转换的数据转换函数G具有对合性,即,正向函数G和反向函数G-1是相同的函数的性质,如图33中所示。
如上文参照图34等所述,应用阿达马MDS矩阵MD来执行密钥转换处理。
具体来说,执行图34中所示的步骤S1的列扩散计算和步骤S2的行扩散计算。
步骤S1的列扩散计算由下面的计算表达式指示:
MC[MD]=MC[MD,MD,MD,MD]。
步骤S2的行扩散计算由下面的计算表达式指示:
MR[MD]=MR[MD,MD,MD,MD]。
即,在图34的步骤S1的列扩散计算中,对由4位分量形成的4*4状态表示数据的所有四列执行应用相同的阿达马MDS矩阵MD的矩阵计算。
此外,在步骤S2的行扩散计算中,对由4位分量形成的4*4状态表示数据的所有四行执行应用相同的阿达马MDS矩阵MD的矩阵计算。
由于用列扩散计算MC[MD]和行扩散计算MR[MD]的连续处理形成的函数G具有对合性,并且正向函数G和反向函数G-1是相同的,故通过重复计算两次来计算原始值。
通过应用矩阵MD并且由密钥转换单元723执行的列扩散计算MC[MD]和应用矩阵MD的行扩散计算MR[MD],执行输入和输出状态的所有分量之间的数据扩散,即,“全扩散转换”。
通过将具有全扩散性的轮密钥输入到加密处理单元并且执行与转换目标数据的异或,转换数据的扩散性能提高并且实现安全性较高的加密处理。
在轮密钥供给单元721中执行的轮密钥供给配置具有下面的两个性质:
(1)实现全扩散转换的全扩散性;以及
(2)正向函数G和反函数G-1是相同的对合性。
以下有益效果可以通过两个特征而获得,如上所述。
基于实现全扩散转换的全扩散性,用较少数量的轮实现在转换目标数据方面的密钥数据的配置信息的扩散,从而确保较大的扩散性能而不依赖于轮函数(R)的处理。
即,用较少数量的轮实现对攻击的抵抗是高的安全加密处理。因此,实现高速处理和重量减少。
作为基于对合性的有益效果,一个密钥转换单元可以被配置成被重复使用,并且也在展开安装或轮安装中实现硬件小型化。
在图72中所示的实例中,轮密钥供给单元721按以下顺序输出密钥:
密钥K1
密钥K2
转换密钥Kd1
转换密钥Kd2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
异或计算转换密钥Kd1(+)Kd2
异或计算密钥K1(+)K2
转换密钥Kd2
转换密钥Kd1
密钥K2;以及
密钥K1
以该顺序输出这六种密钥。
在没有常数CON的任何应用或具有常数CON的应用的情况下,使用上述密钥生成输入到加密处理单元750的轮密钥K1至K13
在位于加密处理单元750的中心位置的线性转换单元P2之前和之后,异或计算密钥K1(+)K2被重复用作轮密钥K7
通过执行从常数供给单元725提供到从轮密钥供给单元721提供的密钥的常数CON的异或来生成轮密钥RK8、RK10和RK12
上述密钥的输入序列与上文参照图59所述的序列相同,并且与逆顺序相同。
这意味着,轮密钥供给单元721以与从纯文本P生成密文C的加密处理、从密文C生成纯文本P的解密处理中的密钥的输入顺序相同的序列执行密钥的生成和输出。这意味着,应用于加密处理和解密处理的硬件或程序可以被一般化,并且是促成设备的重量减少(小型化)的设置。
在密钥调度单元720中设置的常数供给单元725根据上文参照图53至图59在章节<6.实现常数输入的安全性提高的配置>中所述的处理,执行常数供给处理。
在图中所示的实例中,常数(CON)进行关于密钥数据的异或计算,当生成下面的轮密钥时在轮密钥供给单元中生成所述密钥数据:
轮密钥RK8
轮密钥RK10;以及
轮密钥RK12
即,生成下面的轮密钥:
轮密钥RK8=Kd1(+)Kd2(+)CON;
轮密钥RK10=Kd2(+)CON;以及
轮密钥RK12=K2(+)CON。
这里,(+)指异或计算。
作为输入这种常数(CON)的处理的结果,输入到加密处理单元750的轮密钥RK1至RK13的设置如下:
RK1=K1
RK2=K2
RK3=Kd1
RK4=Kd2
RK5=K1(+)K2
RK5=Kd1(+)Kd2
RK6=K1(+)K2
RK7=K1(+)K2
RK8=Kd1(+)Kd2(+)CON;
RK9=K1(+)K2
RK10=Kd2(+)CON;
RK11=Kd1
RK12=K2(+)CON;以及
RK13=K1
这里,(+)指异或计算。
RK7被设置成在线性转换单元(P2)之前和之后相同的轮密钥被输入两次。
因此,常数(CON)进行关于密钥的异或处理,当生成轮密钥时在轮密钥供给单元中生成所述密钥。
常数可以输入到与轮密钥分离的加密处理单元的异或单元,并且可以执行与转换数据的异或处理。在这种情况下,结果是相同的。
使用下述常数(CON)作为常数(CON),其中常数CON与应用于邻近常数CON被输入到的加密处理单元的异或单元的线性转换单元的线性转换矩阵之间的矩阵计算的所有分量是非零(即,不为零的值)。
在该配置中,防止线性转换单元的线性转换的差的减少。因此,有可能防止最小差值活跃S盒数的减少,从而实现了安全性是高的并且对各种攻击的抵抗提高的加密处理配置。
在加密处理单元750中设置的非线性转换单元具有一个配置,其中设置多个4位输入和输出k和具有上文参照图64至图66在章节<7.应用到非线性转换单元的S盒的具体配置实例>中所述的对合性的盒(S盒)。
如上所述,加密处理单元750被配置成包括转换函数E、线性转换单元和转换函数E-1,并且被配置成图64至图66中所示的S盒用于转换函数E和转换函数E-1的非线性转换单元,从而实现了整个加密处理单元的对合性。
<9.加密处理设备的安装实例>
最后,将描述执行根据上述实施方案的加密处理的加密处理设备的安装实例。
执行根据上述实施方案的加密处理的加密处理设备可以安装在执行加密处理的各种信息处理设备中。具体来说,加密处理设备可以用于例如用数据处理或通信处理执行加密处理的各种设备中,诸如PC、TV、录音机、播放器、通信设备、RFID、智能卡、传感器网络设备、电池认证模块、健康和医疗设备、独立型网络设备。
在图73中图示IC模块800的配置的实例(其是执行根据本公开的实施方案的加密处理的设备的实例)。上述处理可以执行在各种信息处理设备中,诸如PC、IC卡、读取器/写入器、智能手机、可穿戴设备。可以在这些各种设备中配置图73中所示的IC模块800。
图73中所示的中央处理单元(CPU)801是执行加密处理的开始或结束、数据传输和接收的控制、构成单元之间的数据传输控制和各种程序的处理器。存储器802被配置成例如只读存储器(ROM),其存储由CPU 801执行的程序或固定数据(诸如算法参数);或随机存取存储器(RAM),其被用作在CPU 801的处理中执行的程序和在程序处理中适当改变的参数的存储区或工作区。存储器802可以被用作加密处理、应用于加密处理的转换表(置换表)、应用于转换矩阵的数据等所必需的密钥数据的存储区。数据存储区优选被配置成具有防篡改结构的存储器。
加密处理单元803具有上述加密处理配置,并且根据公用密钥块加密处理算法执行加密处理和解密处理。
这里,已描述加密处理单元是单独的模块的实例。然而,可以不提供独立的加密处理模块,并且例如加密处理程序可以存储在ROM中,使得CPU 801读取存储在ROM中的程序并且执行程序。
随机数生成器804例如在生成加密处理所必需的密钥时执行生成随机数的处理。
传输/接收单元805是数据通信处理单元,其执行与外部的数据通信并且执行与例如IC模块(诸如读取器/写入器)的数据通信,以输出在IC模块中生成的密文或从设备(诸如外部读取器/写入器)输入数据。
上述实施方案中所述的加密处理设备可以不仅应用于加密纯文本(其是输入数据)的加密处理,而且应用于解密密文(其是输入数据)以获得纯文本的解密处理。
上述实施方案中所述的配置可以应用于加密处理、解密处理或加密和解密处理这两者。
图74是图示执行根据本公开的实施方案的加密处理的智能手机900的示意性配置的实例的方框图。智能手机900包括处理器901、存储器902、存储器903、外部连接接口904、相机906、传感器907、麦克风908、输入设备909、显示设备910、扬声器911、无线通信接口913、天线开关914、天线915、总线917、电池918和辅助控制器919。
处理器901可以是例如中央处理单元(CPU)或片上系统(SoC),并且控制智能手机900的应用层和其他层的功能,并且控制加密处理。存储器902包括随机存取存储器(RAM)和只读存储器(ROM),并且存储由处理器901执行的数据和程序。存储器902可以被用作加密处理、应用于加密处理的转换表(置换表)、应用于转换矩阵的数据等所必需的密钥数据的存储区。数据存储区优选被配置成具有防篡改结构的存储器。存储器903可以包括存储介质(诸如半导体存储器或硬盘)。外部连接接口904是将外部附接设备(诸如存储卡或通用串行总线(USB)设备)连接到智能手机900的接口。
相机906包括例如图像传感器,诸如电荷耦合设备(CCD)或互补金属氧化物半导体(CMOS),并且生成捕获的图像。传感器907可以包括例如定位传感器、陀螺仪传感器、地磁传感器、加速度传感器等的传感器组。麦克风908将智能手机900的音频输入转换成音频信号。由相机906生成的图像、由传感器907获取的传感器数据、由麦克风908获取的音频信号等可以由处理器901进行加密,并且可以经由无线通信接口913传输到另一设备。输入设备909包括例如触摸传感器、小键盘、键盘、按钮,或检测显示设备910的屏幕上的触摸的开关,并且从用户接收操作或信息输入。显示设备910具有液晶显示器(LCD)或有机发光二极管(OLED)显示器的屏幕,并且显示智能手机900的输出图像。扬声器911将从智能手机900输出的音频信号转换成音频。
无线通信接口913执行无线通信并且通常可以包括基带处理器、射频(RF)电路和功率放大器。无线通信接口913可以是其中集成存储通信控制程序的存储器、执行程序的处理器和相关电路的单芯片模块。无线通信接口913可以不仅支持无线LAN方案,而且支持其他种类的无线通信方案,诸如短距离无线通信方案、邻近无线通信方案和蜂窝通信方案。
总线917使处理器901、存储器902、存储器903、外部连接接口904、相机906、传感器907、麦克风908、输入设备909、显示设备910、扬声器911、无线通信接口913和辅助控制器919彼此连接。电池918经由图中虚线部分指示的供电线将电源提供到图74中所示的智能手机900的各块。辅助控制器919操作处于例如睡眠模式的智能手机900的最小必要功能。
上述实施方案中所述的智能手机中的加密处理可以不仅应用于加密纯文本(其是输入数据)的加密处理,而且应用于解密密文(其是输入数据)以获得纯文本的解密处理。
上述实施方案中所述的配置可以应用于加密处理、解密处理或加密和解密处理这两者。
图73中所示的IC模块800可以安装在图74中所示的智能手机900上,使得根据上述实施方案的加密处理被配置成在IC模块800中被执行。
<10.本公开的实施方案的配置的结论>
上文已参照具体实施方案详细描述本公开的实施方案。然而,对本领域技术人员显而易见的是,在不脱离本公开的主旨的情况下,实施方案的修改和替换可以在本公开的范围内进行。即,由于本公开已被描述为示例性形式,故本公开不应被解释为限制。为了确定本公开的主旨,权利要求书必须被提交。
本说明书中所公开的技术可以具有以下配置。
(1)一种加密处理系统,包含:
加密处理电路,其被配置成对输入数据执行轮计算并且生成输出数据;以及
密钥调度电路,其被配置成将在所述加密处理电路中使用的密钥数据输出到所述加密处理电路,
其中由所述加密处理电路执行的每一轮计算包括由线性转换电路执行的线性转换处理,以及
所述线性转换电路根据轮变换来改变所述线性转换处理的线性转换模式。
(2)根据(1)所述的加密处理系统,其中所述线性转换电路根据所述轮变换切换用于所述线性转换处理中的矩阵。
(3)根据(1)或(2)所述的加密处理系统,其中所述线性转换电路根据所述轮变换在三个线性转换处理之间切换并且执行所述三个线性转换处理。
(4)根据(1)至(3)中任一项所述的加密处理系统,
其中所述输入数据是由m*n分量形成的状态,其中每个分量包括至少一位,以及
其中所述线性转换电路被配置成执行将线性转换矩阵应用到所述状态的矩阵计算,并且被配置成根据所述轮变换切换要应用的所述线性转换矩阵。
(5)根据(1)至(4)中任一项所述的加密处理系统,
其中所述输入数据是由m*n分量形成的状态,其中每个分量包括至少一位,以及
其中所述线性转换电路被配置成执行所述轮计算中的一个矩阵计算,所述轮计算是列扩散计算和行扩散计算中的至少一个,在所述列扩散计算中通过以所述状态的每一列的分量为单位应用矩阵来执行所述线性转换,在所述行扩散计算中通过以所述状态的每一行的分量为单位应用矩阵来执行所述线性转换。
(6)根据(5)所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用多个矩阵M0至Mk的矩阵计算执行所述线性转换处理,以及
所述线性转换电路根据所述轮变换切换并执行列扩散计算和行扩散计算,在所述列扩散计算中以特定的顺序以所述状态的每一列的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换,在所述行扩散计算中以特定的顺序以所述状态的每一行的分量为单位将从矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换。
(7)根据(5)所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用多种矩阵M0至Mk的矩阵计算执行所述线性转换处理,
所述线性转换电路根据所述轮变换切换并执行列扩散计算、第一行扩散计算和第二行扩散计算,
在所述列扩散计算中,以特定的顺序以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换,
在所述第一行扩散计算中,以特定的顺序A以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换,以及
在所述第二行扩散计算中,以不同于所述特定的顺序A的特定的顺序B以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换。
(8)根据(5)所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用多个矩阵M0至Mk的矩阵计算执行所述线性转换处理,
所述线性转换单元根据所述轮变换切换并执行行扩散计算、第一列扩散计算和第二列扩散计算,
在所述列扩散计算中,以特定的顺序以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换,
在所述第一列扩散计算中,以特定的顺序A以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换,以及
在所述第二列扩散计算中,以不同于所述特定的顺序A的特定的顺序B以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换。
(9)根据(1)至(8)中任一项所述的加密处理系统,
其中所述输入数据是由4*4分量形成的状态,其中每个分量具有4位,以及
所述线性转换电路被配置成执行将线性转换矩阵应用到所述状态的矩阵计算,并且根据所述轮变换切换要应用的所述线性转换矩阵。
(10)根据(9)所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用四个矩阵M0、M1、M2和M3的矩阵计算执行所述线性转换处理,以及
所述线性转换电路根据所述轮变换在三个矩阵计算中切换并执行,所述矩阵计算包括:
列扩散计算,其中以所述状态的每一列的分量为单位应用所述矩阵M0来执行所述线性转换,
第一行扩散计算,其中以所述状态的每一行的分量为单位以所述矩阵M0、M1、M2和M3的顺序应用每个矩阵来执行所述线性转换,以及
第二行扩散计算,其中以所述状态的每一行的分量为单位以不同于所述第一行扩散计算的所述顺序的顺序应用每个矩阵来执行所述线性转换。
(11)根据(10)所述的加密处理系统,其中在所述第一行扩散计算中以所述状态的每一行的分量为单位应用的矩阵和在所述第二行扩散计算中以所述状态的每一行的分量为单位应用的矩阵的组合是总共四个矩阵中的至少三个矩阵的组合,其中两个矩阵在所述第一行扩散计算中应用到所述状态的两个任意行,以及两个矩阵在所述第二行扩散计算中应用到所述两个任意行的。
(12)根据(9)所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用四个矩阵M0、M1、M2和M3的矩阵计算执行所述线性转换处理,以及
所述线性转换电路根据所述轮变换在三个矩阵计算中切换并执行,所述三个矩阵计算包括:
行扩散计算,其中以所述状态的每一行的分量为单位应用所述矩阵M0来执行所述线性转换,
第一列扩散计算,其中以所述状态的每一列的分量为单位以所述矩阵M0、M1、M2和M3的顺序应用每个矩阵来执行所述线性转换,以及
第二列扩散计算,其中以所述状态的每一列的分量为单位以不同于所述第一列扩散计算的所述顺序的顺序应用每个矩阵来执行所述线性转换。
(13)根据(12)所述的加密处理系统,其中在所述第一列扩散计算中以所述状态的每一列的分量为单位应用的矩阵和在所述第二列扩散计算中以所述状态的每一列的分量为单位应用的矩阵的组合是总共四个矩阵中的至少三个矩阵的组合,其中两个矩阵在所述第一列扩散计算中应用到所述状态的两个任意列,以及两个矩阵在所述第二列扩散计算中应用到所述两个任意列。
(14)根据(1)至(13)中任一项所述的加密处理系统,
其中所述加密处理电路通过使用纯文本P作为输入数据来重复所述轮计算,输出密文C作为输出数据,以及
所述加密处理电路被配置成具有对合性,其中通过使用所述密文C作为所述输入数据以逆顺序设置所述轮计算的执行序列的数据转换处理,将所述纯文本P生成为所述输出数据。
(15)根据(1)至(14)中任一项所述的加密处理系统,其中所述线性转换电路被配置成具有对合性,其中在从纯文本P生成密文C时在执行序列中的线性转换处理模式的转移序列与在从所述密文C生成所述纯文本P时在执行序列中的所述线性转换处理模式的转移序列匹配。
(16)根据(1)至(15)中任一项所述的加密处理系统,其中所述密钥调度电路被配置成执行具有对合性的密钥供给处理,其中在从纯文本P生成密文C时的密钥供给序列与在从所述密文C生成所述纯文本P时的密钥供给序列匹配。
(17)根据(1)至(16)中任一项所述的加密处理系统,其中当执行将密钥提供给所述加密处理电路的密钥供给处理时,所述密钥调度电路对供给密钥的部分通过常数执行计算,并且将是所述计算的结果的密钥数据输出到所述加密处理电路。
(18)根据(1)至(17)中任一项所述的加密处理电路,
其中所述轮计算包括非线性转换处理,以及
执行所述非线性转换处理的S盒被配置成具有对合性,其中通过重新输入从所述输入值可获得的输出值来获得输入值。
(19)一种在加密处理系统中执行的加密处理方法,所述处理方法包含:
用加密处理电路对输入数据执行轮计算并且生成输出数据;
用密钥调度电路将在所述加密处理电路中使用的密钥数据输出到所述加密处理电路
在所述执行步骤中,使所述加密处理电路在所述轮计算中通过线性转换电路执行线性转换处理;以及
在所述执行步骤中,使所述线性转换电路根据轮变换来执行线性转换模式。
(20)一种用计算机可读指令编码的非暂时性计算机可读介质,所述指令在由处理器执行时使所述处理器执行方法,所述方法包含:
在加密处理电路中对输入数据执行轮计算并且生成输出数据;
在密钥调度电路中将在所述加密处理电路中使用的密钥数据输出到所述加密处理电路;
在所述执行步骤中,使所述加密处理电路在所述轮计算中通过线性转换电路执行线性转换处理;以及
在所述执行步骤中,使所述线性转换电路根据轮变换来执行线性转换模式。
本说明书中所述的一系列处理可以由硬件、软件,或硬件和软件两者的组合配置来执行。当处理由软件来执行时,记录处理顺序的程序可以安装并执行在嵌入专用硬件中的计算机中的存储器中,或程序可以安装并执行在能够执行各种处理的通用计算机中。例如,程序可以被预先记录在记录介质中。程序可以从记录介质安装在计算机中,并且程序也可以经由网络(诸如LAN(局域网)或互联网)被接收,并且可以安装在记录介质(诸如内部硬盘)中。
本说明书中所述的各种处理可以根据描述按时间顺序被执行,并且也可以根据执行处理的设备的处理能力或在必要时并行或单独地被执行。本说明书中的系统指多个设备的逻辑集合,并且不限于其中组成设备存在于同一壳体的配置。
本领域技术人员将理解的是,各种修改、组合、子组合和变化可能会根据设计要求和其他因素发生,只要它们在所附权利要求书或其等效物的范围内。
工业实用性
如上所述,在根据本公开的实施方案的配置中,实现对各种攻击的抵抗提高并且安全性高的加密处理配置。
具体来说,包括加密处理单元,其被配置成对输入数据重复执行轮计算并且生成输出数据。包括密钥调度单元,其被配置成将在加密处理单元中使用的密钥数据输出到加密处理单元。根据轮变换来改变在由加密处理单元执行的轮计算中线性转换单元的线性转换处理。例如,列扩散计算和行扩散计算被切换成根据轮变换来执行,在列扩散计算中通过以状态的每一列的分量为单位将矩阵应用到每一列来执行线性转换,在行扩散计算中通过以状态的每一行的分量为单位应用矩阵来执行线性转换。
扩散性通过这个配置提高,从而实现了对各种攻击的抵抗提高并且安全性高的加密处理配置。
参考符号列表
100 加密处理设备
110 密钥调度单元
120 加密处理单元
121 异或单元
122 非线性转换单元
123 线性转换单元
201 线性转换单元P1
202 线性转换单元P2
203 线性转换单元P3
300 密钥调度单元
301 密钥供给单元(密钥寄存器)
302 密钥转换单元
320 加密处理单元
321-327 异或单元
331、333 异或单元
332 非线性/线性转换单元(S&P)
350 加密处理单元
351 异或单元
352 非线性/线性转换单元(S&P)
360 密钥调度单元
361、362 密钥寄存器
363 密钥转换单元
371 密钥寄存器
372 密钥转换单元
381 密钥寄存器
391 密钥寄存器
392、394 异或单元
393 密钥转换单元
401 轮计算执行单元
402 常数输入单元
411 转换函数E
412 线性转换单元
413 转换函数E-1
431 转换函数E
432 线性转换单元
433 转换函数E-1
435 常数输入单元
436 异或单元
437 线性转换单元
451 转换函数E
452 线性转换单元
453 转换函数E-1
521 非线性转换层1
522 线性转换层
523 非线性转换层
700 加密处理设备
720 密钥调度单元
721 轮密钥供给单元
722 密钥寄存器
723 密钥转换单元
725 常数供给单元
750 加密处理单元
751 异或单元
752 非线性转换单元
753 线性转换单元
800 IC模块
801 CPU(中央处理单元)
802 存储器
803 加密处理单元
804 随机数生成器
805 传输/接收单元
900 智能手机
901 处理器
902 存储器
903 存储器
904 外部连接接口
906 相机
907 传感器
908 麦克风
909 输入设备
910 显示设备
911 扬声器
913 无线通信接口
914 天线开关
915 天线
917 总线
918 电池
919 辅助控制器。

Claims (20)

1.一种加密处理系统,包含:
加密处理电路,其被配置成对输入数据执行轮计算并且生成输出数据;以及
密钥调度电路,其被配置成将在所述加密处理电路中使用的密钥数据输出到所述加密处理电路,
其中由所述加密处理电路执行的每一轮计算包括由线性转换电路执行的线性转换处理,以及
所述线性转换电路根据轮变换来改变所述线性转换处理的线性转换模式。
2.根据权利要求1所述的加密处理系统,其中所述线性转换电路根据所述轮变换切换用于所述线性转换处理中的矩阵。
3.根据权利要求1所述的加密处理系统,其中所述线性转换电路根据所述轮变换在三个线性转换处理之间切换并且执行所述三个线性转换处理。
4.根据权利要求1所述的加密处理系统,
其中所述输入数据是由m*n分量形成的状态,其中每个分量包括至少一位,以及
其中所述线性转换电路被配置成执行将线性转换矩阵应用到所述状态的矩阵计算,并且被配置成根据所述轮变换来切换要应用的所述线性转换矩阵。
5.根据权利要求1所述的加密处理系统,
其中所述输入数据是由m*n分量形成的状态,其中每个分量包括至少一位,以及
其中所述线性转换电路被配置成执行所述轮计算中的一个矩阵计算,所述轮计算是列扩散计算和行扩散计算中的至少一个,在所述列扩散计算中通过以所述状态的每一列的分量为单位应用矩阵来执行所述线性转换,在所述行扩散计算中通过以所述状态的每一行的分量为单位应用矩阵来执行所述线性转换。
6.根据权利要求5所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用多个矩阵M0至Mk的矩阵计算执行所述线性转换处理,以及
所述线性转换电路根据所述轮变换来切换并执行列扩散计算和行扩散计算,在所述列扩散计算中以特定的顺序以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换,在所述行扩散计算中以特定的顺序以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换。
7.根据权利要求5所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用多种矩阵M0至Mk的矩阵计算执行所述线性转换处理,
所述线性转换电路根据所述轮变换切换并执行列扩散计算、第一行扩散计算和第二行扩散计算,
在所述列扩散计算中,以特定的顺序以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换,
在所述第一行扩散计算中,以特定的顺序A以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换,以及
在所述第二行扩散计算中,以不同于所述特定的顺序A的特定的顺序B以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换。
8.根据权利要求5所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用多个矩阵M0至Mk的矩阵计算执行所述线性转换处理,
所述线性转换单元根据所述轮变换切换并执行行扩散计算、第一列扩散计算和第二列扩散计算,
在所述列扩散计算中,以特定的顺序以所述状态的每一行的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一行来执行所述线性转换,
在所述第一列扩散计算中,以特定的顺序A以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换,以及
在所述第二列扩散计算中,以不同于所述特定的顺序A的特定的顺序B以所述状态的每一列的分量为单位将从所述矩阵M0至Mk选择的选择矩阵应用到每一列来执行所述线性转换。
9.根据权利要求1所述的加密处理系统,
其中所述输入数据是由4*4分量形成的状态,其中每个分量具有4位,以及
所述线性转换电路被配置成执行将线性转换矩阵应用到所述状态的矩阵计算,并且根据所述轮变换切换要应用的所述线性转换矩阵。
10.根据权利要求9所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用四个矩阵M0、M1、M2和M3的矩阵计算执行所述线性转换处理,以及
所述线性转换电路根据所述轮变换在三个矩阵计算中切换并执行,所述矩阵计算包括:
列扩散计算,其中以所述状态的每一列的分量为单位应用所述矩阵M0来执行所述线性转换,
第一行扩散计算,其中以所述状态的每一行的分量为单位以所述矩阵M0、M1、M2和M3的顺序应用每个矩阵来执行所述线性转换,以及
第二行扩散计算,其中以所述状态的每一行的分量为单位以不同于所述第一行扩散计算的所述顺序的顺序应用每个矩阵来执行所述线性转换。
11.根据权利要求10所述的加密处理系统,其中在所述第一行扩散计算中以所述状态的每一行的分量为单位应用的矩阵和在所述第二行扩散计算中以所述状态的每一行的分量为单位应用的矩阵的组合是总共四个矩阵中的至少三个矩阵的组合,其中两个矩阵在所述第一行扩散计算中应用到所述状态的两个任意行,以及两个矩阵在所述第二行扩散计算中应用到所述两个任意行。
12.根据权利要求9所述的加密处理系统,
其中所述线性转换电路被配置成通过其中使用四个矩阵M0、M1、M2和M3的矩阵计算执行所述线性转换处理,以及
所述线性转换电路根据所述轮变换在三个矩阵计算中切换并执行,所述三个矩阵计算包括:
行扩散计算,其中以所述状态的每一行的分量为单位应用所述矩阵M0来执行所述线性转换,
第一列扩散计算,其中以所述状态的每一列的分量为单位以所述矩阵M0、M1、M2和M3的顺序应用每个矩阵来执行所述线性转换,以及
第二列扩散计算,其中以所述状态的每一列的分量为单位以不同于所述第一列扩散计算的所述顺序的顺序应用每个矩阵来执行所述线性转换。
13.根据权利要求12所述的加密处理系统,其中在所述第一列扩散计算中以所述状态的每一列的分量为单位应用的矩阵和在所述第二列扩散计算中以所述状态的每一列的分量为单位应用的矩阵的组合是总共四个矩阵中的至少三个矩阵的组合,其中两个矩阵在所述第一列扩散计算中应用到所述状态的两个任意列,以及两个矩阵在所述第二列扩散计算中应用到所述两个任意列。
14.根据权利要求1所述的加密处理系统,
其中所述加密处理电路通过使用纯文本P作为输入数据来重复所述轮计算,输出密文C作为输出数据,以及
所述加密处理电路被配置成具有对合性,其中使用所述密文C作为所述输入数据通过以逆顺序设置所述轮计算的执行序列的数据转换处理,将所述纯文本P生成为所述输出数据。
15.根据权利要求1所述的加密处理系统,其中所述线性转换电路被配置成具有对合性,其中在从纯文本P生成密文C时在执行序列中的线性转换处理模式的转移序列与在从所述密文C生成所述纯文本P时在执行序列中的所述线性转换处理模式的转移序列匹配。
16.根据权利要求1所述的加密处理系统,其中所述密钥调度电路被配置成执行具有对合性的密钥供给处理,其中在从纯文本P生成密文C时的密钥供给序列与在从所述密文C生成所述纯文本P时的密钥供给序列匹配。
17.根据权利要求1所述的加密处理系统,其中当执行将密钥提供给所述加密处理电路的密钥供给处理时,所述密钥调度电路对供给密钥的部分通过常数执行计算,并且将是所述计算的结果的密钥数据输出到所述加密处理电路。
18.根据权利要求1所述的加密处理电路,
其中所述轮计算包括非线性转换处理,以及
执行所述非线性转换处理的S盒被配置成具有对合性,其中通过重新输入从所述输入值可获得的输出值来获得输入值。
19.一种在加密处理系统中执行的加密处理方法,所述处理方法包含:
用加密处理电路对输入数据执行轮计算并且生成输出数据;
用密钥调度电路将在所述加密处理电路中使用的密钥数据输出到所述加密处理电路
在所述执行步骤中,使所述加密处理电路在所述轮计算中通过线性转换电路执行线性转换处理;以及
在所述执行步骤中,使所述线性转换电路根据轮变换来执行线性转换模式。
20.一种用计算机可读指令编码的非暂时性计算机可读介质,所述指令在由处理器执行时使所述处理器执行方法,所述方法包含:
在加密处理电路中对输入数据执行轮计算并且生成输出数据;
在密钥调度电路中将在所述加密处理电路中使用的密钥数据输出到所述加密处理电路;
在所述执行步骤中,使所述加密处理电路在所述轮计算中通过线性转换电路执行线性转换处理;以及
在所述执行步骤中,使所述线性转换电路根据轮变换来执行线性转换模式。
CN201580015016.2A 2014-03-28 2015-02-23 加密处理设备、加密处理方法和程序 Expired - Fee Related CN106233660B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014068290A JP2015191106A (ja) 2014-03-28 2014-03-28 暗号処理装置、および暗号処理方法、並びにプログラム
JP2014-068290 2014-03-28
PCT/JP2015/000888 WO2015145964A1 (en) 2014-03-28 2015-02-23 Encryption processing device, encryption processing method, and program

Publications (2)

Publication Number Publication Date
CN106233660A true CN106233660A (zh) 2016-12-14
CN106233660B CN106233660B (zh) 2020-03-03

Family

ID=52697499

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580015016.2A Expired - Fee Related CN106233660B (zh) 2014-03-28 2015-02-23 加密处理设备、加密处理方法和程序

Country Status (5)

Country Link
US (1) US10205589B2 (zh)
EP (1) EP3123656B1 (zh)
JP (1) JP2015191106A (zh)
CN (1) CN106233660B (zh)
WO (1) WO2015145964A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112182610A (zh) * 2020-09-25 2021-01-05 深圳职业技术学院 一种图像加密方法、装置、设备及存储介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3089398B1 (en) * 2015-04-30 2017-10-11 Nxp B.V. Securing a cryptographic device
US10474927B2 (en) * 2015-09-03 2019-11-12 Stc. Unm Accelerated precomputation of reduced deformable models
CN105656625A (zh) * 2016-01-15 2016-06-08 衍嘉网络科技(上海)有限公司 数据加密传输方法及数据加密传输系统
CN106100826B (zh) * 2016-06-08 2019-06-07 大唐微电子技术有限公司 一种数据变换方法和装置
CN109150495B (zh) * 2018-06-11 2021-06-22 安徽工程大学 一种轮变换复用电路及其aes解密电路
CN108964875B (zh) * 2018-06-11 2021-03-05 安徽工程大学 普通轮变换运算单元、普通轮变换电路及aes解密电路
US10956584B1 (en) * 2018-09-25 2021-03-23 Amazon Technologies, Inc. Secure data processing
WO2020186125A1 (en) 2019-03-13 2020-09-17 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
CN115314202B (zh) * 2022-10-10 2023-01-24 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 基于安全多方计算的数据处理方法及电子设备、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050111659A1 (en) * 2003-09-30 2005-05-26 Taizo Shirai Cryptographic processing apparatus and cryptographic processing method, and computer program
EP1862991A1 (en) * 2005-03-25 2007-12-05 Sony Corporation Information processing device
EP1975908A1 (en) * 2006-01-17 2008-10-01 Sony Corporation Encryption/decryption device, encryption/decryption method, and computer program
CN101350038A (zh) * 2008-09-16 2009-01-21 中国人民解放军国防科学技术大学 一种异步分组密码算法协处理器的设计方法
CN101355423A (zh) * 2008-09-10 2009-01-28 四川长虹电器股份有限公司 流密码生成方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1661295B1 (en) 2003-09-05 2013-03-27 Telecom Italia S.p.A. Secret-key-controlled reversible circuit and corresponding method of data processing
US20060002548A1 (en) 2004-06-04 2006-01-05 Chu Hon F Method and system for implementing substitution boxes (S-boxes) for advanced encryption standard (AES)
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP5023624B2 (ja) * 2006-09-01 2012-09-12 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) * 2006-09-01 2012-07-04 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5682525B2 (ja) 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050111659A1 (en) * 2003-09-30 2005-05-26 Taizo Shirai Cryptographic processing apparatus and cryptographic processing method, and computer program
EP1862991A1 (en) * 2005-03-25 2007-12-05 Sony Corporation Information processing device
CN101176134A (zh) * 2005-03-25 2008-05-07 索尼株式会社 信息处理装置
CN101834719A (zh) * 2005-03-25 2010-09-15 索尼株式会社 加密处理装置用矩阵生成方法
EP1975908A1 (en) * 2006-01-17 2008-10-01 Sony Corporation Encryption/decryption device, encryption/decryption method, and computer program
CN101371286A (zh) * 2006-01-17 2009-02-18 索尼株式会社 密码处理装置和密码处理方法、以及计算机程序
CN101355423A (zh) * 2008-09-10 2009-01-28 四川长虹电器股份有限公司 流密码生成方法
CN101350038A (zh) * 2008-09-16 2009-01-21 中国人民解放军国防科学技术大学 一种异步分组密码算法协处理器的设计方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112182610A (zh) * 2020-09-25 2021-01-05 深圳职业技术学院 一种图像加密方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US10205589B2 (en) 2019-02-12
WO2015145964A1 (en) 2015-10-01
EP3123656A1 (en) 2017-02-01
JP2015191106A (ja) 2015-11-02
US20170118011A1 (en) 2017-04-27
EP3123656B1 (en) 2018-06-13
CN106233660B (zh) 2020-03-03

Similar Documents

Publication Publication Date Title
CN106233660A (zh) 加密处理设备、加密处理方法和程序
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US9031228B2 (en) Systems and methods for implementing block cipher algorithms on attacker-controlled systems
CN106850221B (zh) 信息加密、解密方法及装置
RU2449482C2 (ru) Устройство обработки шифрования, способ обработки шифрования и компьютерная программа
Moldovyan et al. A cipher based on data-dependent permutations
CN103503362B (zh) 数据处理装置、数据处理方法以及程序
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
WO2009093601A1 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
CN110166223A (zh) 一种国密sm4的快速软件实现方法
CA2827761A1 (en) Cryptographic processing device, cryptographic processing method, and program
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN103444125A (zh) 加密处理设备、加密处理方法和程序
CN104301096A (zh) Aes轮运算方法和电路
CN104219045A (zh) Rc4 流密码生成器
US10341090B2 (en) Cipher processing apparatus and cipher processing method
US20050147244A1 (en) Method for cryptographic transformation of binary data blocks
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
Bajaj et al. AES algorithm for encryption
WO2015146432A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US7142673B1 (en) Method for the cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks
JP6292107B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP5510587B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
CN112787820A (zh) 一种适用于硬件实现的轻量级认证加密解密实现方法

Legal Events

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

Granted publication date: 20200303

Termination date: 20210223

CF01 Termination of patent right due to non-payment of annual fee