信息处理装置、信息处理方法和程序
技术领域
本公开涉及信息处理装置、信息处理方法和程序。更具体地,本公开涉及用于实现对大量数据的加密处理的提速的信息处理装置、信息处理方法和程序。
背景技术
随着信息社会的发展,用于安全地保护信息的信息安全技术的重要性增加。密码术是信息安全技术的一个构成要素,目前密码术用在各种产品和系统中。
例如,通过诸如互联网等网络积极地执行通信,并且诸如PC、移动电话、RFID等各种设备以及各种传感器连接到网络以进行通信。在这种环境下,为了实现在保护个人隐私的同时提高便利度的网络社会,是使用信息安全技术是不可或缺的,并且需要的是能够提高安全性并且高速执行处理的密码术。
已经使用了以下的系统:服务器收集从个人拥有的终端发送的信息或者通过安装在房屋中的传感器获取的信息,并且该系统针对服务器收集的信息执行各种数据处理或分析。
具体地讲,存在如下的系统:通过在房屋或办公室内安放传感器来管理功耗的系统、用于通过在独居老人的房屋中安放传感器来进行健康和安全管理的服务、通过在道路上或汽车中安放传感器而用于交通拥堵检测和疏导的运输系统等。
在许多情况下,在这种系统中收集的数据包括关于个人隐私的信息,为了保护隐私,期望对数据进行加密。然而,安装有现有技术的、不是针对小型硬件安装而设计的轻量级密码算法的密码算法的硬件,具有大的模块规格,并且难以被安装在如RFID或传感器等小型 设备上。另外,难以以低成本实现设备,功耗大,并且电池更换频率增加,因此从可操作性的角度看,存在许多问题。
同时,对适合于对具有受限的硬件规模或存储器资源的设备或需要节省能量的设备的硬件安装的轻量级密码术(lightweight cryptography)的需求日益增加。
响应于这种需要,正在对轻量级密码术进行研究和开发,近来,提出了一些从小型硬件安装的角度看来优异的新的轻量级的块密码术(lightweight block cryptography)。作为代表性例子的是PRESENT、CLEFIA、KATAN、Piccolo等。
据此,轻量级密码术的国际标准化在进展,在国际标准化组织(ISO)和国际电工委员会(IEC)的联合技术委员会中,在执行信息安全技术的国际标准化的委员会ISO/ICE JTC 1/SC 27中,轻量级密码术的国际标准ISO/IEC 29192的标准化在进展。
作为轻量级密码术之一的轻量级块密码(lightweight block cryptogram)的许多示例对于小型硬件安装而言是最佳的。
也就是说,为了在硬件安装时实现小尺寸,用具有四位的多个小S盒(S-box)并且经常用于位运算的“轻”轮函数(round function)重复的结构来设计轻量级块密码的许多例子。
轻量级密码的这种结构不能利用被持续开发的通用处理器,并且在PC或服务器中安装软件时一般出现低速的问题。
作为在PC或服务器中安装软件的处理的一个示例,可以使用利用连接到网络的设备进行的云计算,但是跨虚拟机(Cross VM)侧信道(side-channel)攻击也可能对云造成威胁(NPL1)。云可以具有多个用户共享一个服务器的多租户系统,用户的虚拟机VM彼此分开,但诸如存储器或缓存等物理设备被共享。跨VM侧信道攻击是缓存持续受到共享组相联缓存(set associative cache)的“恶意VM”攻击并且通过缓存的延迟反应而检测另一VM的接入来提取密钥的一种攻击。如上所述,当在软件安装的状态下在云上执行加密处理时,对这种侧信道攻击的抵抗性也是本公开的目的。
现有技术文献
非专利文献
NPL1:Thomas Ristenpart,Eran Tromer,Hovav Shacham,Stefan Savage,“Hey,You,Get Off of My Cloud:Exploring Information Leakage in Third-Party Compute Clouds(嘿,请离开我的云:探索第三方计算云中的信息泄露)”,ACM CCS'09,2009年11月9日至13日
NPL2:Eli Biham,“A Fast New DES Implementation in Software(用软件进行的快速新DES实现)”,FSE'97,1997
发明内容
技术问题
本公开是依据这种情形形成的,本公开的目的在于提供用于实现对大量数据的加密处理的提速的信息处理装置、信息处理方法和程序。
另外,在本公开的一个示例中,在使用可以在通用处理器上运行的软件(程序)执行加密处理的情况下,本公开的目的在于提供用于高速执行处理的信息处理装置、信息处理方法和程序。
问题的解决方案
根据本公开的第一方面,提供了一种信息处理装置,所述信息处理装置包括:通信单元,其接收数据发送设备发送的加密数据;以及数据处理单元,其执行通过所述通信单元接收的加密数据的解密处理,其中,所述数据处理单元具有根据定义解密处理顺序的程序执行数据处理的构造,并且所述数据处理单元根据所述程序执行:通过针对作为解密处理对象的加密数据执行位片处理来生成位片表达数据的数据变换处理,通过针对加密数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于所述解密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的解密处理,以及通过针对所述解密处理的结果执行 所述位片处理的逆变换,来生成对应于所述加密数据的平文数据的数据逆变换处理。
另外,在本公开的信息处理装置的一个实施例中,所述通信单元接收所述加密数据和所述加密数据的发送设备的设备ID,所述数据处理单元基于所述设备ID从存储单元选择性获取对应于各加密数据项的密码密钥,或者基于所述设备ID用预定运算提取对应于各加密数据项的密码密钥,通过在所述密钥变换处理中针对密码密钥执行所述位片处理来生成所述位片表达密钥。
另外,在本公开的信息处理装置的一个实施例中,所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的解密处理,所述位片表达数据块单位由在所述解密处理中构成所述位片表达数据的各加密数据项的相同次序的位或每n位的位构成,其中n是2的幂。
另外,在本公开的信息处理装置的一个实施例中,所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
另外,根据本公开的第二方面,提供了一种信息处理系统,所述信息处理系统包括:发送终端,其生成并且发送加密数据;以及服务器,其接收所述多个发送终端发送的多个加密数据项,其中,所述服务器包括数据处理单元,所述数据处理单元根据定义解密处理顺序的程序执行数据处理,并且所述数据处理单元根据所述程序执行:通过针对作为解密处理对象的多个加密数据项执行位片处理来生成位片表达数据的数据变换处理,通过针对多个加密数据项的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于所述解密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的解密处理,以及通过针对所述解密处理的结果执行所述位片处理的逆变换来生成对应于所述多个加密数 据项的平文数据的数据逆变换处理。
另外,在本公开的信息处理系统的一个实施例中,多个发送终端发送所述加密数据和所述加密数据的发送设备的设备ID,所述服务器的所述数据处理单元基于所述设备ID从存储单元选择性获取对应于各加密数据项的密码密钥,或者基于所述设备ID用预定运算提取对应于各加密数据项的密码密钥,通过在所述密钥变换处理中针对密码密钥执行所述位片处理,来生成所述位片表达密钥。
另外,在本公开的信息处理系统的一个实施例中,所述服务器的所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的所述解密处理,所述位片表达数据块单位由在所述解密处理中构成所述位片表达数据的各加密数据项的相同次序的位或每n位的位构成,其中n是2的幂。
另外,在本公开的信息处理系统的一个实施例中,所述服务器的所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
另外,根据本公开的第三方面,提供了一种信息处理装置,所述信息处理装置包括:通信单元,其针对数据接收设备发送加密数据;以及数据处理单元,执行生成通过所述通信单元发送的多个加密数据项的处理,其中,所述数据处理单元具有根据定义密码处理顺序的程序执行数据处理的构造,并且所述数据处理单元根据所述程序执行:通过针对作为密码处理对象的多个平文数据项执行位片处理来生成位片表达数据的数据变换处理,通过针对多个平文数据项的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于加密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的密码处理,以及通过针对所述密码处理的结果执行所述位片处理的逆变换来生成对应于所述多个平文数据项的多个加密数据项的数据逆变换处理。
另外,在本公开的信息处理装置的一个实施例中,所述数据处理单元基于所述加密数据被发送到达的发送目的地的设备ID从存储单元选择性获取对应于各平文数据的密码密钥,或者基于所述设备ID用预定运算提取对应于各加密数据项的密码密钥,通过在所述密钥变换处理中针对密码密钥执行所述位片处理来生成所述位片表达密钥。
另外,在本公开的信息处理装置的一个实施例中,所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的所述加密处理,所述位片表达数据块单位由在所述密码处理中构成所述位片表达数据的各平文数据的相同次序的位或每n位的位构成,其中n是2的幂。
另外,在本公开的信息处理装置的一个实施例中,所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
另外,根据本公开的第四方面,提供了一种信息处理系统,所述信息处理系统包括:服务器,其生成并且发送多个加密数据项;以及多个接收终端,其接收所述服务器发送的加密数据,其中,所述服务器包括数据处理单元,所述数据处理单元根据定义密码处理顺序的程序执行数据处理,并且所述数据处理单元根据所述程序执行:通过针对作为密码处理对象的多个平文数据项执行位片处理来生成位片表达数据的数据变换处理,通过针对平文数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于所述密码处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的密码处理,以及通过针对所述密码处理的结果执行所述位片处理的逆变换来生成对应于多个平文数据项的多个加密数据项的数据逆变换处理。
另外,在本公开的信息处理系统的一个实施例中,所述服务器的所述数据处理单元基于各接收终端的设备ID从存储单元选择性获取 对应于各平文数据的密码密钥,或者基于所述设备ID用预定运算提取对应于各平文数据的密码密钥,通过在所述密钥变换处理中针对密码密钥执行所述位片处理来生成所述位片表达密钥。
另外,在本公开的信息处理系统的一个实施例中,所述服务器的所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的所述加密处理,所述位片表达数据块单位由在所述加密处理中构成所述位片表达数据的各平文数据的相同次序的位或每n位的位构成,其中n是2的幂。
另外,在本公开的信息处理系统的一个实施例中,所述服务器的所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
另外,根据本公开的第五方面,提供了一种在信息处理装置中执行的信息处理方法,所述方法包括:通信步骤,使得通信单元接收多个数据发送设备发送的加密数据;以及数据处理步骤,使得数据处理单元对通过所述通信单元接收的多个加密数据项执行解密处理,其中,所述数据处理步骤根程序,包括:通过针对作为解密处理对象的多个加密数据项项执行位片处理来生成位片表达数据的数据变换处理,通过针对加密数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于解密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的密码处理,以及通过针对所述解密处理的结果执行所述位片处理的逆变换来生成对应于多个加密数据项的多个平文数据项的数据逆变换处理。
另外,根据本公开的第六方面,提供了一种在信息处理装置中执行的信息处理方法,所述方法包括:数据处理步骤,使得数据处理单元执行多个加密数据项的生成处理;以及通信步骤,使得通信单元向多个数据发送设备的每个发送所述数据处理单元生成的多个加密数据 项的每个,其中,所述数据处理步骤根据定义密码处理顺序的程序包括:通过针对作为加密处理对象的平文数据执行位片处理来生成位片表达数据的数据变换处理,通过针对多个平文数据项的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于所述加密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的密码处理,以及通过针对所述密码处理的结果执行所述位片处理的逆变换来生成对应于所述多个平文数据项的多个加密数据项的数据逆变换处理。
另外,根据本公开的第七方面,提供了一种致使信息处理装置执行信息处理的程序,所述程序包括:使得数据处理单元输入多个发送器用各个密码密钥生成的加密数据;使得所述数据处理执行:通过针对作为解密处理对象的多个加密数据项执行位片处理来生成位片表达数据的数据变换处理,通过针对多个加密数据项的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于所述解密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的解密处理,以及通过针对所述解密处理的结果执行所述位片处理的逆变换来生成对应于多个加密数据项的多个平文数据项的数据逆变换处理。
另外,根据本公开的第八方面,提供了一种致使信息处理装置执行信息处理的程序,所述程序包括:使得数据处理单元执行多个加密数据项的生成处理的数据处理步骤;以及使得通信单元向多个数据发送设备的每个发送所述数据生成单元生成的多个加密数据项的每个的通信步骤,其中所述数据处理步骤包括:通过针对作为加密处理对象的多个平文数据项的每个执行位片处理来生成位片表达数据的数据变换处理,通过针对平文数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,输入所述位片表达密钥以生成用于所述加密处理的各轮的轮密钥的密钥编排处理,针对所述位片表达数据应用所述轮密钥的密码处理,以及通过针对所述密码处理的结果执行所述位片处理的逆变换来生成对应于多个平文数据项的多个加密数据项的数 据逆变换处理。
另外,本公开的程序是例如针对可以执行各种程序代码的信息处理装置或计算机系统由记录介质提供的程序。由信息处理装置或计算机系统的程序执行单元执行这种程序,从而执行根据程序进行的处理。
将参照下面的示例或附图,通过具体实施方式使本公开的其它目的、特征或优点清楚。另外,本说明书中的系统是多个装置的逻辑集合结构,而不限于具有使各个结构在同一壳体中的装置的系统。
本发明的有益效果
根据本公开的一个示例,实现了例如使用云计算处理用软件(程序)进行轻量级密码的密码处理的提速。
具体而言,多个用户终端或传感器发送以各个加密密钥通过轻量级密码算法加密的数据,服务器接收加密数据并且根据定义解密处理顺序的程序执行数据处理。可以通过针对作为解密对象的多个加密数据项执行位片处理来生成位片表达数据,以基于各加密数据项的加密密钥生成位片表达密钥,以基于位片表达密钥生成轮密钥,以执行包括位片表达数据的块单位的运算和移动处理和使用轮密钥进行的运算的解密处理,以通过针对解密处理结果对数据进行逆变换而生成对应于多个加密数据项的多个平文数据项。
另外,在根据本公开的一个示例的解密处理中,通过存储在寄存器中的位片表达块单位的运算或移动处理来执行处理,并且可以高速地执行对大量数据的处理。具体而言,在因特尔核i7870处理器中执行密码算法[PRESENT(80位的密钥长度)]的情况下,实现11.06个周期/字节的高速,在执行密码算法[Piccolo(80位的密钥长度)]的情况下,实现5.59个周期/字节的高速。具体地讲,Piccolo的速度超过6.92个周期/字节,6.92个周期/字节是本技术已知的同一平台(因特尔核i7920)下的高级加密标准(AES)的速度记录。
另外,由于根据本公开的一个示例的位片安装中是在不参照表格的情况下通过逻辑运算计算S-box,因此可以增加抵抗侧信道攻击 (诸如,缓存攻击或跨虚拟机攻击)的耐久性。另外,关于云计算处理中用软件进行加密处理的提速,可以用较少数量的周期完成加密处理,这导致云或数据中心的功耗降低。
另外,在根据本公开的一个示例的系统中,不需要在云或计算中心中导入用于加密处理的专用硬件,因此延展性提高。
另外,可以使用在现有技术中难以使用的用云进行的轻量级密码,因此促进了传感器中的轻量级密码的安装并且可以以低成本和低功耗实现传感器网络。
附图说明
[图1]图1是阐明可应用本公开的处理的系统的一个示例的示图。
[图2]图2是阐明可应用本公开的处理的系统的操作示例的示图。
[图3]图3是阐明构成可应用本公开的处理的图1和图2中示出的系统的服务器中执行的处理的一个示例的示图。
[图4]图4是阐明构成可应用本公开的处理的图1和图2中示出的系统的服务器中执行的处理的顺序示例的示图。
[图5]图5是阐明构成可应用本公开的处理的图1和图2中示出的系统的服务器中执行的处理的顺序示例的示图。
[图6]图6是阐明密码处理算法PRESENT的处理顺序的示图。
[图7]图7是阐明本公开的密码处理的处理顺序的示图。
[图8]图8是阐明通过密钥数据的密钥变换处理得到的位片表达密钥数据(bit slice expression key data)的生成处理示例的示图。
[图9]图9是阐明通过数据的变换处理得到的位片表达数据的生成处理示例的示图。
[图10]图10是示出密钥编排处理(key scheduling process)的寄存器存储数据的一个示例的示图。
[图11]图11是示出密钥编排处理的寄存器存储数据的一个示例 的示图。
[图12]图12是阐明密钥编排处理的顺序的流程图的示图。
[图13]图13是示出阐明在密钥编排处理中执行的轮密钥生成更新处理的详细处理顺序的流程图的示图。
[图14]图14是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图15]图15是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图16]图16是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图17]图17是阐明密钥编排处理的非线性变换处理(Sbox)的逻辑命令序列的示图。
[图18]图18是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图19]图19是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图20]图20是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图21]图21是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图22]图22是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图23]图23是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图24]图24是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图25]图25是示出密钥编排处理的寄存器存储数据和处理示例的示图。
[图26]图26是示出密钥编排处理的寄存器存储数据和处理示例 的示图。
[图27]图27是示出阐明密钥编排处理的顺序的流程图的示图。
[图28]图28是示出阐明在密钥编排处理中执行的非线性变换处理(Sbox)的预计算处理的详细顺序的流程图的示图。
[图29]图29是示出阐明在密钥编排处理中执行的非线性变换处理(Sbox)的预计算处理的详细顺序的流程图的示图。
[图30]图30是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图31]图31是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图32]图32是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图33]图33是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图34]图34是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图35]图35是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图36]图36是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图37]图37是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图38]图38是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图39]图39是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图40]图40是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图41]图41是示出非线性变换处理(Sbox)的预计算处理的寄 存器存储数据和处理示例的示图。
[图42]图42是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图43]图43是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图44]图44是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图45]图45是示出非线性变换处理(Sbox)的预计算处理的寄存器存储数据和处理示例的示图。
[图46]图46是示出阐明轮密钥生成更新处理的顺序的流程图的示图。
[图47]图47是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图48]图48是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图49]图49是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图50]图50是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图51]图51是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图52]图52是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图53]图53是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图54]图54是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图55]图55是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图56]图56是示出轮密钥生成更新处理的寄存器存储数据和处理示例的示图。
[图57]图57是示出阐明密码处理的详细顺序的流程图的示图。
[图58]图58是示出用于执行密码处理单元执行的密码处理的硬件构造示例的示图。
[图59]图59是阐明在执行密码处理时的寄存器存储数据和数据处理示例的示图。
[图60]图60是阐明在执行密码处理时的数据处理示例的示图。
[图61]图61是示出阐明密码处理中执行的线性变换处理的详细顺序的流程图的示图。
[图62]图62是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图63]图63是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图64]图64是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图65]图65是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图66]图66是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图67]图67是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图68]图68是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图69]图69是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图70]图70是阐明在执行在密码处理中执行的线性变换处理时的寄存器存储数据和处理示例的示图。
[图71]图71是示出用于执行密码处理的装置构造示例的示图。
具体实施方式
下文中,将参照附图详细描述根据本公开的信息处理装置、信息处理方法和程序。将按照以下次序进行描述。
1.可应用本公开的构造的系统的一个示例
2.轻量级块密码算法“PRESENT”
3.信息处理装置(密码处理装置)的构造和处理顺序的概况
4.密钥变换处理和数据变换处理
5.密钥编排处理(密钥编排处理示例1)
6.密钥编排处理(密钥编排处理示例2)
6-1非线性变换(Sbox)的预计算处理
6-2轮密钥的产生和更新处理
7.密码处理
8.信息处理装置和密码处理装置的构造示例
9.本公开的构造的总结
[1.可应用本公开的构造的系统的一个示例]
例如,假设从诸如个人拥有的移动电话或智能电话等通信终端、安装在多种产品中的RFID、或安放在房屋中的传感器收集信息的结构来执行服务器中的处理。
用于执行密码处理算法的小型硬件能够以被安装在信息发送方的多个装置中,以快速地产生和发送加密数据。
然而,服务器必须接收多个终端或传感器发送的大量的加密数据并且执行解密处理。另外,还假设存在服务器必须生成将被发送到多个终端的多个加密数据项的情况。
预期在将来,对大量的、覆盖范围广的大数据进行收集、分析和使用的必要性逐渐增加。
认为在处理这种大量数据时使用云计算是有效的。例如,通过在分析从多个终端或传感器收集的大量的加密数据时使用云计算,在网络上的服务器的通用处理器中能运行的软件被用于执行密码处理(包 括加密处理和解密处理两者)。
最重要的一点是以低成本和低功耗将硬件安装在RFID或传感器中,并且最好的选择是用轻量级密码执行加密处理,但是如上所述,将在云上的服务器的通用处理器中运行的一般的软件安装中执行轻量级密码的处理是缓慢的。
当使用连接到网络的多个信息处理装置执行处理时,云计算是有利的,但当打算通过在连接到网络的所有装置上安装用于执行特定的密码处理算法的硬件来加速处理时,从成本的角度看,云计算是不利的。
在收集大量的加密数据以将数据上传至具有云构造的服务器并且用云对数据执行分析的情况下,期望执行使用能在多个成本低的服务器上执行的软件(程序)来执行处理的扩展方法。
如上所述,例如,在使用云计算等技术执行密码处理的情况下,必须执行使用软件(程序)的密码处理(加密处理和解密处理)。然而,如上所述,存在的问题是,轻量级密码中根据软件的密码处理的处理速度降低,需要实现处理速度提高的方法。
存在各种密码算法,存在作为基本技术的一个示例的、被称为块密码的算法。在块密码的一般软件安装中,利用表参考来安装用于执行非线性变换处理的Sbox,因此存在缓存攻击的危险。缓存攻击是侧信道攻击中的一种,是利用由于存在或不存在缓冲命中而导致的存储器访问时间差异来提取加密密钥的计时攻击(timing attack)。
例如,本公开的构造将解决这种问题。将参照图1和后续的附图描述可应用本公开的构造的系统示例。
作为可应用本公开的构造的系统,例如,存在图1中示出的网络系统。
图1示出传感器网络20和云10,在传感器网络20中,多个终端节点彼此连接,云10由用于收集终端节点的发送数据以执行数据处理的网络连接服务器组构成。
终端节点包括:例如用户拥有的如PC、移动电话、智能电话或 平板终端等便携式终端、安放在房屋或办公室内的功耗检测传感器、安放在独居老人的房屋内用于收集安全和健康管理信息的传感器或护理设备、安放在道路上或汽车中用于检测和疏导交通拥堵的终端或传感器、或各种其它设备。
另外,下文中,构成终端节点的各种设备将被统一描述为传感器。所述传感器包括上述的各种设备。
构成终端节点的传感器将各种信息项发送到由用于执行数据处理的网络连接服务器组构成的云10。
另外,在许多情况下,例如,发送数据通过中继节点等被提供给构成云10的网络连接服务器。
在许多情况下,这样的系统收集的数据包括例如个人的隐私或保密信息,为了防止数据泄露,数据被加密发送。
传感器对发送数据执行加密并且发送加密数据。用于执行轻量级密码算法的专用硬件例如被安装在传感器中,传感器使用此执行加密。至于用于此加密的密码密钥,例如,使用的是由各传感器保持在存储器中的各自的密码密钥或者可以按预定运算从传感器ID中提取的密钥。
传感器的数量是巨大的,如图2中所示,各传感器将传感器ID附加到加密数据并且将加密数据发送到云。
在图2中示出的示例中,终端节点A、B和C被示出为数据发送节点的代表性示例。各节点使用作为特有的节点密钥的密码密钥对发送数据执行加密以生成由加密数据构成的块(例如,64位),将作为各传感器(终端节点)的标识符的传感器ID附加到生成的加密数据,并且发送加密数据。
还从除了图示为代表性示例的传感器A至C之外的多个传感器向云上的服务器(例如,图2中示出的服务器S 30)发送大量的加密数据。
另外,在随后将描述的示例中,各传感器生成的加密数据的数据长度被描述为加密处理所使用的轻量级块密码算法的块长度的一个 块。一个块是例如具有如64位的特有位的数据。各传感器通过执行使用特有传感器密钥(例如,80位)的加密处理来生成具有64位的加密块并且发送加密块。
各传感器生成的加密数据的数据不限于一个块,可以是多个块。各传感器发送各加密数据项和传感器ID之间具有明确关系的数据。另外,在需要各块的数据次序信息的情况下,例如,表示数据次序的序列号或时间戳被包括在数据中,它们被作为块属性信息附加到数据并且被发送。
另外,在传感器网络例如被以树结构进行管理的情况下,来自传感器(即终端节点)的发送数据被从传感器(终端节点)发送到中继节点,然后被发送到被设置为中继节点的主机节点的根节点,并且被从根节点发送到云上的服务器。
(云上的服务器中的处理的概况)
接下来,将描述在参照图1和图2描述的网络系统中由收集传感器(终端节点)的发送数据以执行处理的云上的服务器执行的处理的概况。
云上的服务器收集多个传感器(终端节点)发送的多个加密数据块并且使用可以在通用处理器上运行的软件(程序)执行密码处理。例如,服务器执行解密多个加密数据的处理。或者,传感器执行将被发送到各终端节点的多个加密数据的生成处理等。
服务器执行位片密码处理,作为使用软件(程序)的密码处理(包括加密处理和解密处理)。
另外,在下面的描述中,“密码处理”包括数据的加密处理和解密处理。
位片密码处理(包括加密处理和解密处理)是Biham在1997年提出的处理,这表明相比于现有技术的软件安装,通过位片安装更快速地安装某个种类的密码算法。
位片密码处理例如具体在NPL 2“Eli Biham的“A Fast New DES Implementationin Software(用软件进行的快速新DES实 现)”,FSE',1997”中公开。在最基础的位片安装中,通过以位为单元从作为密码处理对象的多个数据块的头部截取数据,并且设置由从各数据块截取的具有相同次序的位或每n位的位的数据项的组合构成的新块(位片表达数据块)来执行处理,其中,n是2的幂,如2、4、8、16、64、128等。
例如,将参照图3描述在整体地解密各传感器发送的各加密数据的情况下的位片解密处理示例。
图3示出表明图2中示出的服务器S 30的(A)保持数据和(B)密码处理顺序(解密)的示图。
图3(A)中示出的服务器的保持数据中的密码密钥31是作为各传感器(终端节点)的特有密钥的、先前保持在服务器S 30中的数据。
传感器ID 32和解密数据33的各数据是通过网络从各传感器接收的数据。
可以基于传感器ID选择应用于各加密数据项的加密处理的密码密钥。
图3(B)是示出服务器S 30的密码处理单元50中执行的处理的示图。另外,附图中示出的密码处理单元50是由具有程序执行功能的CPU等构成的数据处理单元,并且通过根据定义预定的密码算法的序列的程序执行数据处理来执行密码处理(加密处理和解密处理)。也就是说,密码处理单元执行使用软件(程序)的密码处理。
图3(B)示出对通过网络从各传感器接收的加密数据执行解密处理的情况的处理示例。
服务器首先使用添加在加密数据33中的传感器ID 32选择用于解密的各密码密钥31。云上的服务器保持各服务器中使用的密码密钥作为与传感器ID关联的管理数据。可供选择地,可以用预定运算从各传感器ID提取各传感器的特有密码密钥。
在服务器中,如图3(B)中所示,各传感器的密码密钥31按与各传感器生成的加密数据33的各块对应的顺序布置。
当之前被定义为位片密码处理的处理单元的具有预定块数的加密数据33和密码密钥31被组合时,执行根据位片密码处理进行的数据解密处理。
如上所述,在位片密码处理中,通过以位为单元从作为密码处理对象的各数据块的头部截取数据,并且设置由各块的具有相同次序的位或每n位的位的数据项的组合(位片表达数据块)来执行处理,这里,n是2的幂,诸2、4、8、16、64、128等。
首先,服务器根据构成从多个传感器接收的加密数据33的多个加密数据块生成多个位片表达数据块,诸如,其中只有1位次序的数据项被组合的块(位片表达数据块)、其中只有2位次序的数据项被组合的块(位片表达数据块)、其中直到后续最后一位为止只有相同比特位置的数据项被组合的块(位片表达数据块)。
通过这样做,服务器根据构成加密数据33的多个加密数据块生成多个位片表达数据块。
另外,对用于生成加密数据33的密码密钥31也执行相同的处理,也就是说,生成与多个密钥数据项对应的多个位片表达密钥块。
另外,例如,密码密钥31中的每个是由80位的密钥数据构成的密码密钥块,并且关于密码密钥31,设置由各密码密钥块的具有相同次序的位或每n位的位的数据的组合(位片表达密钥块),其中,n是2的幂,诸如2、4、8、16、64、128等。
这个块变换处理是作为图3(B)中示出的密码处理单元50中示出的步骤S11中的密钥变换处理(密钥变换)和步骤S21中的数据变换处理(数据变换)执行的处理。
执行使用位片处理生成的位片表达块作为处理单元的处理,并且执行根据预定的密码算法进行的处理。
在本公开的装置中,使用位片表达块作为处理单元进行的运算(AND(与)、OR(或)、XOR(异或)等)、寄存器存储数据的移位处理、或诸如混排(shuffling)等比特位置的转置处理被作为软件(程序)的应用处理执行,以执行根据预定的密码算法的处理。
针对基于通过密码处理单元50中的步骤S11的密钥变换处理(密钥变换)生成的多个密码密钥31的位片密钥数据,执行步骤S12中的密钥编排处理(密钥编排),生成轮密钥。
同时,在步骤S21中的数据变换处理(数据变换)中,通过针对从传感器接收的多个加密数据项33进行位片处理,生成位片加密数据块。这个位片块被设置为后续步骤S22中的密码处理(数据处理)步骤中的密码处理(密码处理或解密处理)的处理对象。
在步骤S22中的密码处理(数据处理)中,针对基于步骤S21中的数据变换处理(数据变换)中的加密数据生成的位片表达数据块,执行使用轮密钥进行的密码处理,在本文中是对加密数据进行的解密处理。
在该密码处理步骤中,例如,根据软件(程序)执行根据诸如与轮密钥的加法(XOR)处理、线性变换处理或非线性变换处理等预定的密码算法进行的处理。
另外,在步骤S12中的密钥编排处理(密钥编排)中,生成在该轮运算的各轮中使用的轮密钥。
在后续的步骤S23中,针对作为步骤S22中的密码处理(数据处理)的结果得到的块组,执行数据逆变换处理(数据变换-1)。通过该处理,执行将经位片处理的块返回到原始块的处理。用该处理,生成与从传感器发送的加密数据33对应的平文数据(plain text data)70.
图4和图5示出在服务器中执行的处理的两个顺序示例。
图4中示出的流程图是示出在组合了具有预定数量块的加密数据项之后,基于添加在加密数据中的传感器ID执行准备各块的解密密钥的步骤的情况的顺序的流程图。
图5中示出的流程图是示出每当各密文数据块到达时基于添加在加密数据中的传感器ID执行准备各块的解密密钥的步骤的情况的顺序的流程图。
首先,将描述图4中示出的流程的各步骤的处理。
首先,在步骤S31中,接收从节点发送的加密数据块。这是图3(A)中示出的传感器ID 32和加密数据33的组合数据。
接下来,在步骤S32中,判定是否接收到被事先定义为处理单元的具有预定块数的加密数据。在加密数据的数目没有达到预定块数时,处理返回到步骤S31并且继续进行接收处理。
在加密数据的数目达到预定块数的情况下,处理前进至步骤S33,使用添加在加密数据中的传感器ID选择各加密数据项的密码密钥(=解密密钥)。
最后,在步骤S34中,一组对应的加密数据和密码密钥被输入到密码处理单元50,以执行根据位片密码处理的解密处理。
图5中示出的流程是每当密文数据块到达时执行处理的顺序。
首先,在步骤S41中,接收从节点发送的加密数据块。这是图3(A)中示出的传感器ID 32和加密数据33的组合数据。
接下来,在步骤S42中,使用添加在加密数据中的传感器ID选择各加密数据项的密码密钥(=解密密钥)。
接下来,在步骤S43中,判定是否接收到事先被定义为处理单元的具有预定块数的加密数据。在加密数据的数目没有达到预定块数时,处理返回到步骤S41并且继续进行接收处理。
在加密数据的数目达到预定块数的情况下,处理前进至步骤S44,一组对应的加密数据和密码密钥被输入到密码处理单元50,以执行根据位片密码处理的解密处理。
另外,在上述的处理示例中,已经描述了从传感器接收多个加密数据项并且在服务器中执行解密处理的示例,但是例如在生成将被发送到多个用户终端等的加密数据的情况下,服务器通过针对多个平文数据项应用位片密码处理,生成多个加密数据。也可以通过使用图3中示出的密码处理单元50的构造执行该密码处理。
在执行加密处理的情况下,输入由平文数据形成的多个块和对应于各平文数据的密码密钥以执行处理,生成多个加密数据项。
例如,基于加密数据被发送到达的发送目的地的设备ID,从存 储单元选择性获取对应于各平文数据项的密码密钥,通过针对从存储单元选择性获取的密码密钥进行位片处理,生成位片表达密钥。
另外,通过使用基于平文数据的位片表达数据块和基于密码密钥的位片表达密钥块,根据图3(B)中示出的密码处理单元50中示出的处理顺序执行加密处理,生成并且输出加密数据。
如上所述,密码处理单元50执行的位片密码处理被作为能在通用处理器上运行的软件(程序)进行的处理来执行。也就是说,在诸如没有用于特定密码算法的专用硬件构造的PC等设备中,通过执行定义随后将描述的密码处理算法的执行顺序的软件(程序),执行处理。
根据软件(程序)执行的处理包括例如:使用寄存器中存储的位片表达块数据运行块数据项之间的运算(AND(与)、OR(或)、XOR(异或)等)、寄存器中存储的数据的移位处理、诸如混排等的比特位置的移动和转置处理等。
在包括例如64位寄存器的处理器根据软件(程序)执行密码处理的情况下,密码处理可以被作为相互并行地处理64个块的单指令多数据流(SIMD)型并行处理来执行。在基本的位片安装方法中,可以针对处理器的位宽度执行并行处理。在密码算法中经常使用的比特位置的转置可以通过零成本的寄存器的重命名处理来实现,并因此实现了处理的提速。
另外,可以在位片密码处理中经受并行处理的块的数量根据密码算法或位片安装算法、处理器架构、或所使用的寄存器的大小而变化,例如,8、16、32、64、128等可以被设置为并行处理块的数量。
另外,在位片密码处理中,由于经受并行处理的密文块彼此独立,因此只要块与密钥数据块关联,从多个传感器接收的块可以被混合或者这些块可以按任意次序布置而不管被接收次序如何。不论以异步方式从多个传感器接收的加密感测数据的次序如何都能够执行解密处理的功能也是使用位片密码处理的该系统的优点。
在该位片型密码处理中,非线性变换处理(Sbox)是作为处理速度的主要影响因素的要素。重要的一点是用少的逻辑运算(命令)表达该非线性变换处理以实现处理的提速。
另外,由于近年来处理器同时发出多个命令,因此如果对寄存器相依性的限制减少并且通过以尽可能少的周期数量执行的命令系列来表达命令,则可以实现处理的提速。
[2.轻量级块密码算法“PRESENT”]
接下来,将描述作为本公开中执行的密码处理算法的一个示例的轻量级块密码算法“PRESENT”。
在本公开的装置中,作为使用位片进行的密码处理,例如,执行“PRESENT”,“PRESENT”是对应于64位的块大小和80位和128位的密钥长度的轻量级块密码算法。
将参照图6描述根据轻量级块密码算法“PRESENT”进行的密码处理顺序的概况。
如图6中所示,在轻量级块密码算法“PRESENT”中,输入例如具有64位的平文块和具有80位的密码密钥。
首先,基于具有80位的密码密钥生成具有64位的轮密钥并且执行下面的处理。
(步骤S71)对具有64位的平文块和具有64位的轮密钥执行加法处理(异或运算:XOR)。
(步骤S72)另外,针对相加结果执行非线性变换处理(SboxLayer)。
(步骤S73)另外,针对非线性变换结果执行线性变换处理(PLayer)。
步骤S71至S73中的处理(也就是说,与轮密钥的加法处理、非线性变换处理和线性变换处理)被设置为1个单元的轮运算,重复地执行该轮运算。例如,重复地执行31轮,在最后一轮之后,再次执行与轮密钥的运算,以生成并且输出密文。
另外,顺序地执行基于输入的密钥数据的更新处理(更新),执 行生成各轮中使用的轮密钥(64位)的处理。
本公开的信息处理装置例如通过使用通过位片处理生成的位片表达数据块作为处理单元,按照软件(程序)执行根据图6中示出的轻量级块密码算法“RPRESENT”的密码处理。具体而言,实现按照定义诸如块间运算(AND、OR、XOR等)的处理、寄存器存储数据的移位处理、或比特位置的转置处理等的软件(程序)进行的密码处理。
[3.信息处理装置(密码处理装置)的构造和处理顺序的概况]
将参照图7描述执行根据本公开的“PRESENT”的密码处理的信息处理装置(密码处理装置)的构造和处理顺序。
图7是阐明信息处理装置100的构造和处理的示图。
信息处理装置100可以由例如PC等构成,并且可以被构造为不包括根据特定算法执行密码处理的专用硬件作为必要构造的装置。
信息处理装置将用于执行密码处理的软件(程序)存储在存储器中并且执行根据程序的处理以执行密码处理。
图7中示出的信息处理装置100的密码处理单元110由例如由具有程序执行功能的CPU等构成的数据处理单元和存储数据、各种参数和程序的存储器(RAM、ROM、寄存器等)构成,数据处理单元(CPU等)根据程序执行图示的步骤S111至S112和步骤S121至S123中的处理,以执行密码处理。
另外,下文中,将描述输入平文数据82和密码密钥81作为输入数据80,并且生成并输出加密数据91作为输出数据90的密码处理示例。
另外,如上所述,在加密平文数据以生成加密数据的密码处理和解密加密数据以生成平文数据的解密处理二者中,密码处理单元110根据附图中示出的步骤S111和S112和步骤S121至S123执行密码处理。
下文中,将描述执行密码处理的情况的示例作为加密处理和解密处理的代表性示例。
输入数据80是多个密码密钥81和多个平文数据项82。
密码密钥和平文数据项以一对一方式关联。也就是说,用密码密钥a加密平文数据a、用密码密钥b加密平文数据b、用密码密钥c加密平文数据c、…、用密码密钥N加密平文数据N。密码处理单元110输入N个密码密钥和平文数据项作为处理单元并且执行密码处理。
另外,平文数据项a、b和c中的每个由具有预定数据长度的数据块(例如,64位)构成。
以与上述相同的方式,密码密钥a、b和c中的每个也由具有预定数据长度的密钥数据块(例如,80位)构成。
另外,位大小是一个示例,可以针对数据或密钥设置各种位大小。
作为输出数据90生成的加密数据91是下面的数据,诸如,用密码密钥a加密的加密数据a、用密码密钥b加密的加密数据b、用密码密钥c加密的加密数据c、…、用密码密钥N加密的加密数据N。密码处理单元110生成并且输出N个加密数据项。
例如,N个加密数据项被通过图1或图2中示出的网络分别发送到N个传感器(终端节点),在各传感器中执行解密处理。另外,可以按相同方式设置用于加密的密钥和用于解密处理的密钥,作为输入数据在图7中示出的密码密钥例如被构造为保持在各传感器中的特有传感器密钥。
图7中示出的密码处理单元110执行的处理是下面的处理,诸如,步骤S111:密钥变换处理、步骤S112:密钥编排处理、步骤S121:数据变换处理、步骤S122:密码处理、步骤S123:数据逆变换处理。
密码处理单元110通过执行上述的步骤,使用位片密码处理实现根据轻量级块密码算法“PRESENT”的密码处理。
首先,将简要描述各处理的概况和所有处理的流程,然后将详细地描述各处理。
步骤S111中的密钥变换处理是生成由位片表达块构成的位片表达密钥数据的处理,所述位片表达块是密码密钥81(也就是说,由例如具有80位的密钥数据形成的多个密码密钥块)的具有相同次序的位或每n位的位的数据的组合,这里,n是2的幂,诸如2、4、8、16、64、128等。
步骤S121中的数据变换处理是生成由位片表达块构成的位片表达平文数据的处理,所述位片表达块是平文数据项82(也就是说,由例如具有64位的平文数据形成的多个数据块)的具有相同次序的位或每n位的位的数据的组合,这里,n是2的幂,诸如2、4、8、16、64、128等。
步骤S112中的密钥编排处理(密钥编排)是通过使用步骤S111中的密钥变换处理(密钥变换)中生成的位片表达密钥数据生成将用于密码处理的多个轮密钥的处理。
步骤S122中的密码处理(数据处理)是针对基于步骤S111中的数据变换处理(数据变换)中的平文数据生成的位片表达数据,执行使用轮密钥的密码处理的步骤。
根据软件(程序)执行根据使用构成通过位片处理生成的位片表达数据作为单元进行的、诸如与轮密钥的加法(XOR)处理、线性变换处理、或非线性变换处理等密码算法进行的处理。
在后续的步骤S123中,针对步骤S122中的密码处理(数据处理)的结果,执行数据逆变换处理(数据变换-1)。该处理是在位片处理之前将位片表达数据还原为对应于平文数据82的加密数据的组合的处理。用该处理,生成对应于平文数据82的加密数据91作为输出数据90。
下文中,将依次详细地描述各步骤中的处理。
[4.密钥变换处理和数据变换处理]
首先,将描述图7中示出的密码处理单元110的下面的处理,也就是说,步骤S111:密钥变换处理和步骤S121:数据变换处理。
首先,将参照图8描述步骤S111中的密钥变换处理。
步骤S111中的密钥变换处理是生成位片表达密钥块的处理,位片表达密钥块是图7中作为输入数据示出的密码密钥81(也就是说,由例如具有80位的密钥数据形成的多个密码密钥块)的具有相同次序的位或每n位的位的数据的组合,这里,n是2的幂,诸如2、4、8、16、64、128等。
图8示出作为密码密钥81(输入数据)的均具有80位的八个密钥数据项(a1)至(a8)。
在步骤S111中,位片表达密钥块根据均具有80位的八个密钥数据项(a1)至(a8)生成,并且被存储在信息处理装置中的构成存储器的寄存器(XMM寄存器(r0等)或通用寄存器(g0等))中。
图8中示出的(b1)至(b8)是作为步骤S111中的密钥变换处理的处理结果的寄存器存储数据项,也就是说,位片表达密钥块的存储数据项。这里,八个128位寄存器用作位片表达密钥块的存储区。
如图8的(b1)中所示,密码处理单元110例如将8位数据[0,0]存储在XMM寄存器r0中,在8位数据[0,0]中只收集了作为图8中示出的输入数据项的八个80位密钥数据项(a1)至(a8)的首位。
8位数据[0,0]是只由八个80位密钥数据的首位形成的组合,并且是一个位片表达块。
接下来,如图8的(b2)中所示,将8位数据[1,0]存储在XMM寄存器r1中,在8位数据[1,0]中只收集了输入数据项(a1)至(a8)的第二位。
接下来,如图8的(b3)中所示,将8位数据[2,0]存储在XMM寄存器r2中,在8位数据[2,0]中只收集了输入数据项(a1)至(a8)的第三位。
接下来,如图8的(b4)中所示,将8位数据[3,0]存储在XMM寄存器r3中,在8位数据[3,0]中只收集了输入数据项(a1)至(a8)的第四位。
接下来,如图8的(b1)中所示,将8位数据[0,1]存储在XMM寄存器r0中,在8位数据[0,1]中只收集了输入数据项(a1)至 (a8)的第五位。
如上所述,数据以四位为单位在XMM寄存器r0至r3中以八位为单元进行存储,输入数据项(a1)至(a8)(8×64=512位)的首个64位的数据被存储在四个XMM寄存器r0至r3中。
另外,输入数据项(a1)至(a8)的第65位和后续位的数据通过依次使用通用寄存器(g0至g3)或XMM寄存器(r4至r7)以八位为单元进行存储。
如图8的(b5)中所示,将8位数据[0,16]存储在XMM寄存器r4(或通用寄存器g0)中,在8位数据[0,16]中只收集了输入数据项(a1)至(a8)的第65位。
接下来,如图8的(b6)中所示,将8位数据[1,16]存储在XMM寄存器r5(或通用寄存器g1)中,在8位数据[1,16]中只收集了输入数据项(a1)至(a8)的第66位。
接下来,如图8的(b7)中所示,将8位数据[1,16]存储在XMM寄存器r6(或通用寄存器g2)中,在8位数据[1,16]中只收集了输入数据项(a1)至(a8)的第67位。
接下来,如图8的(b8)中所示,将8位数据[1,16]存储在XMM寄存器r7(或通用寄存器g3)中,在8位数据[1,16]中只收集了输入数据项(a1)至(a8)的第68位。
如上所述,密码处理单元110执行对八个80位密钥的位片处理并且将密钥存储在多个寄存器中。具体而言,例如,在信息处理装置100具有包括用于因特尔扩展SIMD命令的寄存器的八个XMM寄存器(r0至r7)或者四个XMM寄存器(r0至r3)和四个通用寄存器(g0至g3)的构造的情况下,通过使用寄存器以八位为单元分散并且存储位片数据。
图8中示出的各示例的各寄存器存储数据如下。
首先,作为输入数据的八个80位密钥数据块(a1)至(a8)的第1、第5、第9、…、第61位被存储在XMM寄存器r0中,八个80位密钥数据块(a1)至(a8)的第2、第6、第10、…、第62位 被存储在XMM寄存器r1中,八个80位密钥数据块(a1)至(a8)的第3、第7、第11、…、第63位被存储在XMM寄存器r2中,八个80位密钥数据块(a1)至(a8)的第4、第8、第12、…、第64位被存储在XMM寄存器r3中。
另外,作为输入数据的八个80位密钥数据块(a1)至(a8)的第65、第69、第73和第77位被存储在XMM寄存器r4(或通用寄存器g0)中,八个80位密钥数据块(a1)至(a8)的第66、第70、第74和第78位被存储在XMM寄存器r5(或通用寄存器g1)中,八个80位密钥数据块(a1)至(a8)的第67、第71、第75和第79位被存储在XMM寄存器r6(或通用寄存器g2)中,八个80位密钥数据块(a1)至(a8)的第68、第72、第76和第80位被存储在XMM寄存器r7(或通用寄存器g3)中。
如上所述,使用寄存器以四位为单位将输入数据的64位重复地存储在四个寄存器中。还使用寄存器以四位为单位将第65位和随后的位存储在另外四个寄存器中。
另外,图8中示出的任意寄存器存储数据[i,j]是作为八位密钥数据项(a1)至(a8)的相同次序的位的组合的位片表达块并且是8位的数据。
另外,在表示为寄存器存储数据的标识符的[i,j]中,i是八个80位密钥数据块(a1)至(a8)的各输入数据的从头部起以四位为单位被重复设置为0、1、2和3的参数,并且示出指示这四位单位中之中存储的是哪个位的变量。
j对应于指示从八个密钥数据项(a1)至(a8)的四位单位的数据中的四位单位的数据次序的参数。
例如,在以四位为单位从各输入数据的从头部起划分出数据的情况下,由于i被设置为四位单位的数据中的第一位中的0,i被设置为四位单位的数据中的第二位中的1,i被设置为四位单位的数据中的第三位中的2,i被设置为四位单位的数据中的第四位中的3,因此当[i,j]=[2,1]时的i=2指示四位单位的数据的第三位。
另外,当[i,j]=[2,1]时的j=1是指示从各输入数据的头部起的四位单位的数据开始的四位单位数据的次序的参数。
j被设置为第一的四位单位数据的0,j被设置为第二的四位单位数据中的1,j被设置为第三的四位单位数据中的2。
当[i,j]=[2,1]时,j=1,因此确认数据是第二的四位单位数据。
如上所述,在[2,1]中,例如,j是1,因此确认数据是第二的四位单位数据,i是2,因此确认数据是第二的四位单位的数据中的第三数据。
也就是说,确认块由从头部起的第七位的数据项的组合构成。
如上所述,在步骤S111中的密钥变换处理中,图7中示出的密码处理单元110生成由位片表达块[0,0]至[3,19]形成的位片表达密钥数据并且将位片表达密钥数据存储在寄存器中。
接下来,将参照图9描述步骤S121中的数据变换处理。
该数据变换处理是与参照图8描述的密钥变换处理相同的将数据变换成位片表达数据的处理。然而,与它的不同点在于,输入是八个64位平文数据项。
图9中示出的示例中的各寄存器存储数据如下。
作为输入数据项的八个64位数据块(a1)至(a8)的第1、第5、第9、…、第61位被存储在XMM寄存器r0中,八个64位数据块(a1)至(a8)的第2、第6、第10、…、第62位被存储在XMM寄存器r1中,八个64位数据块(a1)至(a8)的第3、第7、第11、…、第63位被存储在XMM寄存器r2中,八个64位数据块(a1)至(a8)的第4、第8、第12、…、第64位被存储在XMM寄存器r3中。
如上所述,使用寄存器以四位为单位将输入数据的64位重复地存储在四个寄存器中。
图9中示出的任意寄存器存储数据[i,j]是八个平文数据项(a1)至(a8)的相同次序的位的组合并且是8位的数据。
i是八个64位平文数据项(a1)至(a8)的各输入数据的从头部 起以四位为单位被重复设置为0、1、2和3的参数,并且示出指示存储的是这四位单位中哪个位的变量。
j是指示八个平文数据项(a1)至(a8)的四位单位的数据中的四位单位的数据次序的参数。
[5.密钥编排处理(密钥编排处理示例1)]
接下来,将详细描述图7中示出的密码处理单元110执行的步骤S112中的处理,也就是说,密钥编排处理。
步骤S112中的密钥编排处理(密钥编排)是通过使用步骤S111中的密钥变换处理(密钥变换)中生成的位片表达密钥块生成将在密码处理中使用的多个轮密钥的处理。
首先,如以上参照图8描述的,在步骤S111中,八个80位密钥的位片表达密钥数据项被分散和存储在寄存器中。
在步骤S112中,使用寄存器中存储的位片表达密钥数据项执行生成轮密钥的处理。
将参照图10和随后的附图详细描述生成轮密钥的处理。另外,图10和随后的附图示出图8中示出的各寄存器存储数据的数据表达式[i,j],如下所述地,用数字79至0简化和改写表达。[0,0]=79,[1,0]=78,[2,0]=77,[3,0]=76,[0,1]至[3,1]=75至72,[0,2]至[3,2]=71至68,…,[0,14]至[3,14]=7至4,[0,15]=3,[1,15]=2,[2,15]=1,以及[3,15]=0。
另外,在初始状态下,[0,0]=79是其中组合了八个80位密钥的第1位的8位数据。下文中,78、77、76、75、…和0对应于其中组合了八个80位密钥的第2、第3、第4、第5、…和最后1(第80)位的8位数据。
步骤S111中生成的位片表达密钥数据的寄存器存储数据如图10中所示。
如图10中所示,0至79的80位片块被分散和存储在寄存器中。
各块是由八个密码密钥的相同次序的位的组合形成的8位数据所 形成的块(位片表达块)。
如下文中将描述的,通过使用该块作为单元执行块单位的处理,能够在单次密码处理中执行与分别使用八个密钥进行的密码处理相同的处理。
在步骤S112中,使用存储在寄存器中的八个位片表达的80位密钥生成轮密钥。在密码处理算法“PRESENT”中,对应于轮数的32个轮密钥是必要的,并且在步骤S112中,使用寄存器中存储的位片表达数据生成32个轮密钥。
另外,通过下述处理生成的轮密钥是在块(位片表达块)单位的处理中使用的轮密钥。
例如,在图6中示出的通常的PRESENT算法中,在64位平文中使用的各轮的轮密钥具有64位,但使用图7中示出的位片数据执行密码处理的步骤S122中的密码处理被作为位片表达块单位的处理来执行。
也就是说,平文经受使用64个块为单元的密码处理,因此将在该密码处理中使用的轮密钥也是具有64个块的轮密钥。
在示例中,在一个密钥块(位片表达密钥块)中,存储八个原始密码密钥81的相同次序的位的数据,也就是说,八位。
将在本公开的位片密码处理中使用的轮密钥是具有64个块的轮密钥,也就是说,具有64×8位=512位的轮密钥。
以与上述相同的方式处理作为加密处理对象的平文,在图6中示出的正常PRESENT算法中,平文输入具有64位,但在本公开的位片密码处理中,输入位片表达数据的64个块(也就是说,具有64×8位=512位的64个块)来执行处理。
在步骤S112中,生成将在位片表达块之间的密码处理中使用的由64个块形成的32个轮密钥。
如图11中所示,生成的轮密钥被写入通过密钥指针(pt)指定的存储区(m0至m3)中。
图12示出步骤S112中执行的密钥编排处理的详细流程。
首先,在步骤S201中,设置输入数据和初始数据。
具体而言,输入存储在寄存器中的位片表达密钥数据作为输入数据。另外,设置指示用于写入生成的轮密钥的存储区的指针(pt)和生成的轮密钥的轮号Rn。在初始设置中,Rn被设置为0,随后Rn增至1、2、3、…和31,生成32个轮密钥。
在步骤S202中,判定Rn是否达到31。在Rn小于31的情况下,处理前进至步骤S203,指示用于写入生成的轮密钥的存储器地址的指针(pt)被更新。可以在保证轮密钥的存储区的同时更新指针(pt)。
在步骤S204中,执行轮密钥生成更新处理并且轮号Rn增加1。
随后,将描述该具体处理。
接下来,处理返回到步骤S202,判定Rn是否达到31。在Rn小于31的情况下,重复步骤S203和随后的处理。在步骤S202中,在判定Rn已经达到31的情况下,处理前进至步骤S204,执行将生成的轮密钥写入存储器中的处理。最后,在步骤S205中,读取生成的轮密钥并且处理转至执行密码处理。
图13示出步骤S203中执行的轮密钥生成更新处理的详细处理流程。
另外,如图11中所示,通过位片处理生成的位片表达密钥块被存储在寄存器r0、r1、r2、r3、r4、r5、r6和r7中。
首先,在图13中示出的流程图的步骤S221中,寄存器r1、r2、r3和r4被复制到寄存器r9、r10、r11和r8。
也就是说,如图14中所示,寄存器r1、r2、r3和r4被复制到寄存器r9、r10、r11和r8。
接下来,在步骤S222中,在寄存器r8中执行混排命令,执行寄存器8中存储数据的替换。
另外,在本公开的装置中执行的混排是以块为单位替换存储在一个寄存器中的数据以将数据存储在同一寄存器中的处理。也就是说, 这是以块为单位替换寄存器中的块单位的数据的处理。
例如,在寄存器r8中的存储数据是从头部起的以八位为单元的下列数据的情况下,[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]和[0,15],步骤S222中的移位处理被作为下面的移位处理来执行。
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,1]、[0,2]、[0,3]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]、[0,0]),也就是说,执行8位数据单位的左方向移位。
其结果是图15中示出的数据。
接下来,在步骤S223中,针对寄存器r9、r10、r11和r8中的存储数据,执行对应于预定非线性变换(Sbox逻辑命令序列)的运算处理。
如图16中所示,针对作为寄存器r9、r10、r11和r8中的存储数据项的块18、17、16和15执行的非线性变换(Sbox逻辑命令序列)的结果被存储在寄存器r8、r9、r10和r11中。非线性变换处理的结果是图16中示出的下列数据。
所述数据项是寄存器r8中的数据S0、r9中的数据S1、r10中的数据S2、r11中的数据S3,在示例中使用的非线性变换(Sbox逻辑命令序列)处理被作为执行例如寄存器之间的存储数据项间的、图17中示出的逻辑命令序列的运算处理来执行。
被示出为图17的逻辑命令序列的寄存器x3、x2、x1、x0和x4分别对应于图16中示出的寄存器r9、r10、r11、r8和r12。
另外,图16中示出的寄存器r12对应于图17中示出的逻辑命令序列中的寄存器x4,并且用作用于存储在运算处理中的中间数据等的临时区域。
接下来,在步骤S224中,寄存器r8、r9、r10和r11中的存储数据项向左边移位120位。
图18示出对寄存器r8、r9、r10和r11中的存储数据项向左120位移位的结果。
接下来,在步骤S225中,寄存器r5、r6和r7中的存储数据项向右移位8位,执行寄存器r4和由预定数据形成的MASK0的AND运算,以及寄存器r5、r6和r7和由预定数据形成的MASK1的AND运算。
另外,MASK的值不一定被保持在寄存器中。
如图19中所示,MASK0是其中只有八位数据单位的第二块至第四块中的位被设置为1并且其它位被设置为0的掩码。
如图19中所示,MASK1是其中只有八位数据单位的第二块至第五块中的位被设置为1并且其它位被设置为0的掩码。
如图19中所示,用与掩模数据项的AND处理,寄存器r4至r7的头部的八位数据项被改写为0。
接下来,在步骤S226中,执行寄存器r4、r5、r6和r7和寄存器r11、r8、r9和r10的异或运算(XOR),运算的输出被存储在寄存器r4、r5、r6和r7中。
图20示出异或运算(XOR)处理和处理结果的存储数据项。
作为异或运算(XOR)处理的结果,作为寄存器r11、r8、r9和r10的头部的8位数据项的步骤S223中的非线性变换处理(Sbox)的运算结果被存储在寄存器r4、r5、r6和r7的头部的八位中。
接下来,在步骤S227中,针对寄存器r0、r1、r2和r3执行混排命令,混排结果被存储在寄存器r0、r1、r2和r3中。
图21示出在混排处理之前和之后的寄存器r0、r1、r2和r3的存储数据项。
对于寄存器r0与寄存器r1、r2和r3,该混排处理中的数据重排的次序是不同的。各寄存器中的八位单位的数据项从头部起是[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]和[0,15]。
在步骤S227中的混排处理中,针对寄存器r0执行下面的设置。
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11])
另外,针对寄存器r1、r2和r3执行下面的设置。
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,11]、[0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10])
接着,在步骤S228中,寄存器r0、r1、r2和r3中的数据项被复制到寄存器r8、r9、r10和r11,执行寄存器r8和MASK2的AND处理和寄存器r9、r10和r11和MASK3的AND处理,处理的结果被存储在寄存器r8、r9、r10和r11中。
在图22中示出处理的处理结果。
另外,如图22中所示,MASK2是其中头部的32位是0并且后续的96位是1的掩码数据。
如图22中所示,MASK3是其中头部的40位是0并且后续的88位是1的掩码数据。
作为该处理的结果,寄存器r8的头部的32位被设置成0,寄存器r9、r10和r11的头部的40位被设置成0。
接下来,在步骤S229中,执行寄存器r4、r5、r6和r7和寄存器r11、r8、r9和r10的异或运算(XOR),运算的输出被存储在寄存器r4、r5、r6和r7中。
图23中示出该异或运算(XOR)处理。
接下来,在步骤S230中,针对寄存器r5、r6、r7和r4的右八位和寄存器r1的左八位执行作为预设的计数值的轮计数器值的异或运算(XOR)。
轮计数器被设置成根据轮数0至31的作为二进制表达形式的各计数值00000至11111。
例如,在生成具有轮数13的轮密钥的情况下,轮计数器被设置成作为二进制表达形式的指示13的01101的各计数值。
针对计数值01101,执行与寄存器r5、r6、r7和r4的右八位和寄存器r1的左八位的XOR运算。
另外,与轮计数器的计数值00000至11111的XOR运算的次序是从各寄存器的存储值的原始数据的高阶位开始的次序。在图24中示出的示例中,其次序是从大值开始的次序并且是38、37、36、35和34的次序。
也就是说,寄存器的次序是r5、r6、r7、r4和r1。
如图24中所示,从高阶位开始,针对计数值01101的第1位0执行寄存器r5中的右8位数据(图24中示出的寄存器r5中的[38])的XOR运算,针对计数值01101的第2位1执行寄存器r6中的右8位数据(图24中示出的寄存器r6中的[37])的XOR运算,针对计数值01101的第3位1执行寄存器r7中的右8位数据(图24中示出的寄存器r7中的[36])的XOR运算,针对计数值01101的第4位0执行寄存器r4中的右8位数据(图24中示出的寄存器r6中的[35])的XOR运算,针对计数值01101的第5位1执行寄存器r1中的左8位数据(图24中示出的寄存器r1中的[34])的XOR运算,各数据被更新。
另外,在该异或运算(XOR)中,可以使用如图25中所示的MASK4和MASK5。
MASK4是其中开始的120位被设置成0并且最后的8位被设置成1的掩码数据。
MASK5是其中开始的8位被设置成1并且最后的120位被设置为成0的掩码数据。
MASK4用于与寄存器r5、r6、r7和r4的XOR,MASK5用于与寄存器r1的XOR。
另外,在轮计数器的五位00000至11111中,即使当被设置成针对作为对象的与被设置为1的位对应的寄存器执行处理并且不针对与 被设置为0的位对应的寄存器执行处理时,也得到与步骤S230中的异或运算(XOR)相同的结果。
也就是说,在轮计数器的值例如是13=01101的情况下,针对从上述原始数据的高阶开始的寄存器次序r5、r6、r7、r4和r1,
由于只有轮计数器的第2、第3、第5位被设置成1,所以可以只针对r5、r6、r7、r4和r1执行寄存器r6和r7与MASK4的XOR运算和寄存器r1与MASK5的XOR运算。
作为步骤S230中的结果得到的寄存器r5、r6、r7、r4、r1、r2、r3和r0中的存储数据被设置为用于生成下一轮密钥的块。
存储在寄存器r5、r6、r7、r4、r1、r2、r3和r0中的块中的64个块被设置为下一轮的轮密钥。
下文中,使用更新后的寄存器存储块重复根据图13的流程进行的处理,生成32个轮密钥。
上文中,已经描述了根据图13中示出的流程图进行的详细处理,但轮密钥生成和更新处理可以被简化并且如图26地统一示出。
图26(A)是初始寄存器存储数据,在初始寄存器存储数据中,从高阶的79至0地布置图10中示出的多个寄存器中存储的80个块。
从初始设置的块中选择64个块作为初始轮密钥。
此后,针对作为图26(A)中示出的初始寄存器存储数据的80个块执行根据图13中示出的流程进行的处理。也就是说,执行参照图14至图25描述的处理来更新寄存器。
图26(B)统一示出寄存器更新处理。
寄存器更新处理被作为包括(a)诸如块单位的移位处理或混排处理等旋转处理、(b)块单位的非线性变换处理(Sbox)和(c)块与轮计数器(00000至11111)的异或运算中的各处理的处理来执行。
结果,设置在图26(B)的最下一级示出的寄存器更新后的数据,也就是说,用于生成下一轮密钥的数据。从寄存器的块的左边选择64个组并且将这些组设置为轮密钥。
此后,针对图26(B)的最下一级示出的寄存器更新后的数据重复地执行图26(B)的密钥更新以执行寄存器更新,顺序地生成轮密钥。
通过这样做,在图7中示出的步骤S112中的密钥编排处理中生成轮密钥。
[6.密钥编排处理(密钥编排处理示例2)]
接下来,将描述图7中示出的密码处理单元110中执行的步骤S112中的密钥编排处理的另一示例。
在上述的[5.密钥编排处理(密钥编排处理示例1)]中描述的密钥编排单元中,必须执行Sbox,也就是说,针对各轮执行非线性变换处理。这是针对参照图16和图17描述的四个块进行的非线性变换处理(Sbox)。
该非线性变换处理具有如图17中所示的大量运算步骤,因此增加了处理时间。
下文中,作为密钥编排处理示例2,将描述执行非线性变换处理(Sbox)的次数减小至2的方法。
图27示出表明通过处理示例的密钥编排单元执行的处理的流程。
该处理与以上参照图12描述的密钥编排处理之间的差异是针对第一轮和在第17轮前的步骤S252中和步骤S257之前执行非线性变换(Sbox)的预计算、和步骤S255和步骤S260中的轮密钥生成和更新处理的内容。
图27的流程的步骤S251中的处理是与图12的流程的步骤S201中的处理相同的处理。
图27的流程的步骤S254和S259中的处理是与图12的流程的步骤S203中的处理相同的处理。
图27的流程的步骤S256和S261中的处理是与图12的流程的步骤S205中的处理相同的处理。
图27的流程的步骤S262中的处理是与图12的流程的步骤S206中的处理相同的处理。
将省略对这些处理的描述,下文中,将描述与参照图12描述的密钥编排处理不同的处理。
(6-1.非线性变换(Sbox)的预计算处理)
图28和图29示出表明步骤S252和步骤S257中执行的非线性变换处理(Sbox)的预计算处理的详细顺序的流程。
如图30中所示,在初始状态下,位片表达密钥块79至0被存储在寄存器中。这与以上参照图10和图11描述的设置中相同。
例如,位片表达密钥块[79]是其中组合了八个80位密钥的第1位的8位数据。下文中,78、77、76、75、…和0对应于其中组合了八个80位密钥的第2、第3、第4、第5、…和最后1(第80)位的8位数据项。
根据图28和图29中示出的流程,将描述图27的流程的步骤S252和步骤S257中执行的非线性变换(Sbox)的预计算的详细顺序。
首先,在图28的流程中示出的步骤S281中,如图31中所示,寄存器r0、r1、r2和r3被复制到寄存器r12、r13、r14和r15,针对寄存器r12、r13、r14和r15执行混排命令。
对于寄存器,该混排处理中的重排的次序是不同的。
当在混排之前寄存器r12、r13、r14和r15中的数据的布置(与寄存器r0、r1、r2和r3中的相同)从左起被设置为[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]和[0,15]时,如下地设置各寄存器的混排。
寄存器r12和r13
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,1]、[0,2]、[0,3]、[0,4]、[0,6]、[0,7]、[0,8]、[0,9]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,0]、[0,0])
寄存器r14
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,1]、[0,2]、[0,3]、[0,4]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,15]、[0,0]、[0,0]、[0,0])
寄存器r15
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,10]、[0,11]、[0,12]、[0,13]、[0,15]、[0,0]、[0,0]、[0,0])
接下来,在步骤S282中,如图32中所示,寄存器r4、r5、r6和r7中的数据被存储在r8、r9、r10和r11中,寄存器r8经受右12字节逻辑移位并且寄存器r9、r10和r11经受右13字节逻辑移位。
接下来,在步骤S283中,如图33中所示,执行寄存器r12与MASK6的AND处理和寄存器r13、r14和r15与MASK7的AND处理。
MASK6是其中开始的96位被设置成0并且最后的32位被设置成1的掩码。
MASK7是其中开始的104位被设置成0并且最后的24位被设置成1的掩码。
接下来,在步骤S284中,如图34中所示,执行寄存器r8、r9、r10和r11与寄存器r12、r13、r14和r15的异或运算(XOR),运算的结果被存储在寄存器r12、r13、r14和r15中。
接下来,在步骤S285中,如图35中所示,针对寄存器r13、r14和r15执行混排命令。
当在混排之前寄存器r13、r14和r15中的数据的布置(与寄存器r0、r1、r2和r3中的相同)从左起被设置为[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]和[0,15]时,如下地设置各寄存器的混排。
寄存器r13
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11])
寄存器r14
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7])
寄存器r15
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11][0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3])
接下来,在步骤S286中,如图36中所示,寄存器r13和r15被复制到寄存器r9和r11。
接下来,在步骤S287中,如图37中所示,针对寄存器r13、r14、r15和r12的左64位执行字节单位的解包处理。
另外,本公开的处理中的解包处理是使用块作为最小单元从高阶或低阶选择的例如两个寄存器中存储的数据并且交替地将数据存储在这两个寄存器中的一个寄存器中的处理。
具体而言,例如,这是从两个寄存器选择各寄存器中存储的所有块中的一半块并且将这些块再存储在一个寄存器中的处理。
如图37中所示,执行交替地将寄存器r13和寄存器r14的左八个块(64位)以块(8位)为单元从左起存储在寄存器r13中的解包处理。
以与上述相同的方式,执行交替地将寄存器r15和寄存器r12的左八个块(64位)以块(8位)为单元从左起存储在寄存器r15中的解包处理。
接下来,在步骤S288中,如图38中所示,针对寄存器r9、r14、r11和r12的右64位执行以字节为单元的解包处理。
如图38中所示,执行交替地将寄存器r9和寄存器r14的右八个块(64位)以块(8位)为单元从右起存储在寄存器r9中的解包处理。
以与上述相同的方式,执行交替地将寄存器r11和寄存器r12的右八个块(64位)以块(8位)为单元从右起存储在寄存器r11中的解包处理。
接下来,在步骤S289中,如图39中所示,寄存器r13和r9被复制到寄存器r12和r14。
接下来,在步骤S290中,如图40中所示,针对寄存器r12和r15以及寄存器r14和r11的左64位,以8位块的两个单位的字为单位执行解包。
如图40中所示,执行交替地将寄存器r12和寄存器r15的左八个块(64位)以两个块(16位)的字为单位从左起存储在寄存器r12中的解包处理。
以与上述相同的方式,执行交替地将寄存器r14和寄存器r11的左八个块(64位)以两个块(16位)的字为单位从左起存储在寄存器r14中的解包处理。
接下来,在步骤S291中,如图41中所示,针对寄存器r13和r15以及寄存器r9和r11的左64位,以8位块的两个单位的字为单位执行解包。
如图41中所示,执行交替地将寄存器r13和寄存器r15的右八个块(64位)以两个块(16位)的字为单位从左起存储在寄存器r13中的解包处理。
以与上述相同的方式,执行交替地将寄存器r9和寄存器r11的右八个块(64位)以两个块(16位)的字为单位从左起存储在寄存器r9中的解包处理。
接下来,在步骤S292中,如图42中所示,针对寄存器r13、 r14和r9执行混排命令。
当在混排之前寄存器r13、r14和r9中的数据的布置(与寄存器r0、r1、r2和r3中的相同)从左起被设置为[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]和[0,15]时,如下地设置各寄存器的混排。
寄存器r13
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,1]、[0,2]、[0,3]、[0,0]、[0,5]、[0,6]、[0,7]、[0,4]、[0,9]、[0,10]、[0,11]、[0,8]、[0,13]、[0,14]、[0,15]、[0,12])
寄存器r14
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,2]、[0,3]、[0,0]、[0,1]、[0,6]、[0,7]、[0,4]、[0,5]、[0,10]、[0,11]、[0,8]、[0,9]、[0,14]、[0,15]、[0,12]、[0,13])
寄存器r9
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,3]、[0,0]、[0,1]、[0,2]、[0,7]、[0,4]、[0,5]、[0,6]、[0,8]、[0,11]、[0,9]、[0,10]、[0,15]、[0,12]、[0,13]、[0,14])
接下来,在步骤S293中,如图43中所示,求得寄存器r12、r13、r14和r9与MASK8、MASK9、MASK10和MASK11的AND并且将其存储在各寄存器中。
另外,MASK8是其中开始的64位被设置成0并且最后的64位被设置成1的掩码,MASK9是其中位从头部起被以32位为单元设置成0、1、0、1的掩码。
MASK10是其中从头部起的16位被连续设置成0并且后续的16位被连续设置成1并且交替出现的掩码,MASK11是其中从头部起的8位被连续设置成0并且后续的8位被连续设置成1并且交替出现 的掩码。
接下来,在步骤S294中,如图44中所示,执行针对寄存器r12、r13、r14和r9中的数据项的非线性变换处理(Sbox)。
非线性变换处理是以上参照图17描述的处理。
该非线性变换处理的结果被存储在寄存器r9、r14、r13和r12中。另外,当执行处理时,寄存器r8用作临时区域。
作为其结果得到的、各自具有图45中示出的从寄存器r9、r14、r13和r12的左边起的8位的16个块中存储的数据是16轮的非线性变换处理(Sbox)的结果。
另外,在Sbox的预计算中,在执行密钥更新处理之前,寄存器r9、r14、r13和r12被存储在寄存器r12、r13、r14和r15中。
另外,可以通过只是根据在程序上再读取寄存器的处理来执行寄存器的替换处理。
通过这样做,在图27中示出的步骤S252的Sbox的预计算中,生成将在1至16轮的轮密钥生成中使用的非线性变换处理(Sbox)的结果,在图27中示出的步骤S257的Sbox的预计算中,生成将在17至32轮的轮密钥生成中使用的非线性变换处理(Sbox)的结果。
在示例中,生成所有轮的轮密钥所需的非线性变换处理(Sbox)的结果可以仅仅通过执行两次非线性变换处理(Sbox)来生成。
(6-2.轮密钥的生成和更新处理)
接下来,将参照图46和后续的附图详细描述图27中示出的流程的步骤S255和步骤S260中的轮密钥生成和更新处理。
图46是示出图27中示出的流程的步骤S255和步骤S260中的轮密钥生成和更新处理的详细顺序的流程图。
根据图46中示出的流程,将描述图27的流程的步骤S255和步骤S260中执行的轮密钥生成和更新处理的详细顺序。
另外,开始生成和更新轮密钥之前的寄存器设置如图47中所示。
如图47中所示,位片表达中的密钥被存储在寄存器r0、r1、r2、r3、r4、r5、r6和r7中。
另外,通过(6-1.非线性变换(Sbox)的预计算处理)中描述的处理生成的预计算的非线性变换(Sbox)处理的结果被存储在寄存器r12、r13、r14和r15中。
首先,在图46的步骤S301中,如图48中所示,其中存储了非线性变换(Sbox)处理的结果的寄存器r12、r13、r14和r15被复制到寄存器r8、r9、r10和r11,并且执行与MASK5的AND处理。
另外,本文中,使用第一轮的Sbox值生成和更新轮密钥的处理示例将被描述为示例。
对于预计算的非线性变换处理(Sbox)值,使用寄存器r12、r13、r14和r15的左8位。
接下来,在步骤S302中,如图49中所示,寄存器r12、r13、r14和r15经受左8位逻辑移位。
接下来,在步骤S303中,如图50中所示,寄存器r5、r6和r7经受右8位逻辑移位,获得寄存器r4与MASK0的AND以及寄存器r5、r6和r7与MASK1的AND。
该处理是与图13的流程的步骤S225中的处理相同的处理。
寄存器r5、r6和r7中的存储数据项向右移位8位,执行寄存器r4与由预定数据形成的MASK0的AND处理和寄存器r5、r6和r7与由预定数据形成的MASK1的AND处理。
另外,MASK的值不一定被保持在寄存器中。
如图50中所示,MASK0是其中只有八位数据单位的第二块至第四块中的位被设置为1并且其它位被设置成0的掩码。
如图50中所示,MASK1是其中只有八位数据单位的第二块至第五块中的位被设置为1并且其它位被设置成0的掩码。
如图50中所示,用与掩码数据项的AND处理,寄存器r4至r7的头部的8位数据项被改写为0。
接下来,在步骤S304中,如图51中所示,执行寄存器r4、 r5、r6和r7与寄存器r11、r8、r9和r10的异或运算(XOR),运算的输出被存储在寄存器r4、r5、r6和r7中。
该处理是与图13的流程的步骤S226中的处理相同的处理。
作为异或运算(XOR)处理的结果,作为寄存器r11、r8、r9和r10的头部的8位数据项的、步骤S223中的非线性变换处理(Sbox)的运算结果被存储在寄存器r4、r5、r6和r7的头部的8位中。
接下来,在步骤S305中,如图52中所示,针对寄存器r0、r1、r2和r3执行混排命令,混排结果被存储在寄存器r0、r1、r2和r3中。
图52示出在混排处理之前和之后寄存器r0、r1、r2和r3的存储数据项。
该处理是与图13的流程的步骤S227中的处理相同的处理。
对于寄存器r0与寄存器r1、r2和r3,该混排处理中的数据重排的次序是不同的。各寄存器中的八位单位的数据项从头部起是[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]和[0,15]。
在步骤S305中的混排处理中,针对寄存器r0执行下面的设置。
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11])
另外,针对寄存器r1、r2和r3执行下面的设置。
([0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10]、[0,11]、[0,12]、[0,13]、[0,14]、[0,15])→([0,11]、[0,12]、[0,13]、[0,14]、[0,15]、[0,0]、[0,1]、[0,2]、[0,3]、[0,4]、[0,5]、[0,6]、[0,7]、[0,8]、[0,9]、[0,10])
接着,在步骤S306中,如图53中所示,寄存器r0、r1、r2和r3中的数据项被复制到寄存器r8、r9、r10和r11,执行寄存器r8 与MASK2的AND处理以及寄存器r9、r10和r11与MASK3的AND处理,处理的结果被存储在寄存器r8、r9、r10和r11中。
该处理是与图13的流程的步骤S228中的处理相同的处理。
另外,如图53中所示,MASK2是其中头部的32位是0并且后续的96位是1的掩码数据。
如图53中所示,MASK3是其中头部的40位是0并且后续的88位是1的掩码数据。
作为该处理的结果,寄存器r8的头部的32位被设置成0,寄存器r9、r10和r11的头部的40位被设置成0。
接下来,在步骤S307中,如图54中所示,执行寄存器r4、r5、r6和r7与寄存器r11、r8、r9和r10的异或运算(XOR),运算的结果被存储在寄存器r4、r5、r6和r7中。
该处理与图13的流程的步骤S229中的处理相同。
接下来,在步骤S308中,针对寄存器r5、r6、r7和r4的右八位和寄存器r1的左八位执行作为预设的计数值的轮计数器值的异或运算(XOR)。
该处理与图13的流程的步骤S230中的处理相同。
轮计数器被设置成根据轮数0至31的作为二进制表达形式的各计数值00000至11111。
例如,在生成具有轮数13的轮密钥的情况下,轮计数器被设置成作为二进制表达形式的指示13的01101的各计数值。
针对计数值01101,执行与寄存器r5、r6、r7和r4的右八位和寄存器r1的左八位的XOR运算。
另外,与轮计数器的计数值00000至11111的XOR运算的次序是从各寄存器的存储值的原始数据的高阶位开始的次序。在图24中示出的示例中,其次序是从大值开始的次序并且是38、37、36、35和34的次序。
也就是说,寄存器的次序是r5、r6、r7、r4和r1。
如图55中所示,从高阶位开始,针对计数值01101的第1位0 执行寄存器r5中的右8位数据(图55中示出的寄存器r5中的[38])的XOR运算,针对计数值01101的第2位1执行寄存器r6中的右8位数据(图55中示出的寄存器r6中的[37])的XOR运算,针对计数值01101的第3位1执行寄存器r7中的右8位数据(图55中示出的寄存器r7中的[36])的XOR运算,针对计数值01101的第4位0执行寄存器r4中的右8位数据(图55中示出的寄存器r6中的[35])的XOR运算,针对计数值01101的第5位1执行寄存器r1中的左8位数据(图55中示出的寄存器r1中的[34])的XOR运算,各数据被更新。
另外,在该异或运算(XOR)中,可以使用如图55中所示的MASK4和MASK5。
MASK4是其中开始的120位被设置成0并且最后的8位被设置成1的掩码数据。
MASK5是其中开始的8位被设置成1并且最后的120位被设置为成0的掩码数据。
MASK4用于与寄存器r5、r6、r7和r4的XOR,MASK5用于与寄存器r1的XOR。
另外,在轮计数器的五位00000至11111中,即使当被设置成针对作为对象的与被设置为1的位对应的寄存器执行处理并且不针对与被设置为0的位对应的寄存器执行处理时,也得到与步骤S230中的异或运算(XOR)相同的结果。
也就是说,在轮计数器的值例如是13=01101的情况下,针对从上述原始数据的高阶开始的寄存器次序r5、r6、r7、r4和r1,由于只有轮计数器的第2、第3、第5位被设置成1,所以可以只针对r5、r6、r7、r4和r1执行寄存器r6和r7与MASK4的XOR运算和寄存器r1与MASK5的XOR运算。
作为步骤S308中的结果得到的寄存器r5、r6、r7、r4、r1、r2、r3和r0中的存储数据被设置为用于生成下一轮密钥的块。
存储在寄存器r5、r6、r7、r4、r1、r2、r3和r0中的块中的64 个块被设置为下一轮的轮密钥。
下文中,使用更新后的寄存器存储块,重复根据图46的流程进行的处理,生成32个轮密钥。
如上所述,在(密钥编排处理示例2)中,可以将密钥编排处理示例1中所需的执行四次非线性变换处理(Sbox)减少至两次。
将考虑(密钥编排处理示例2)的处理的数量的减少效果。
上述两个密钥编排处理(即,(A)密钥编排处理示例1(根据图12和图13的流程进行的处理)和(B)密钥编排处理示例2(根据图27至图29和图46的流程进行的处理))之间的处理步骤的数量的比较如下。
(A)密钥编排处理示例1
在不进行Sbox预计算的情况下进行密钥更新处理所需的命令的数量如下。
密钥更新处理:1847(=57x 31+80)
(B)密钥编排处理示例2
在进行Sbox预计算的情况下进行密钥更新处理所需的命令的数量如下。
Sbox预计算+密钥更新处理:1411
(Sbox预计算:132(=66x 2),密钥更新处理:1289(39x 31+80))
如上所述,相比于(A)密钥编排处理示例1,(B)密钥编排处理示例2可以减少处理步骤的数量并且更快速地实现处理。
[7.密码处理]
接下来,将详细地描述通过图7中示出的密码处理单元110执行的步骤S122中的处理,也就是说,密码处理。
步骤S122中的密码处理(数据处理)是针对基于步骤S111中的数据变换处理(数据变换)中的平文数据生成的位片表达数据使用轮密钥执行密码处理的步骤。
根据软件(程序)执行使用构成通过位片处理生成的位片表达数 据的块作为单元的、根据诸如与轮密钥的加法(XOR)处理、线性变换处理、或进行的非线性变换等密码算法的处理。
参照图57和随后的附图详细地描述该密码处理。
图57中示出的流程图是示出通过图7中示出的密码处理单元110执行的步骤S122中的处理(也就是说,密码处理)的详细顺序的流程图。
在步骤S401中执行数据输入和初始设置。
具体而言,输入作为寄存器中存储的密码处理对象的平文数据的位片表达数据。
这是在图7的步骤S121中的数据变换处理中生成的数据并且是通过以上参照图9描述的平文数据82的变换处理生成的位片表达数据。也就是说,输入图9中示出的位片表达块[0,0]至[3,15]的64个块。
在示例中,图9中示出的位片表达块[0,0]至[3,15]是其中存储了作为密码处理对象的八个平文项的相同次序的位的块,并且分别是8位的数据项。
在步骤S401中,输入位片表达数据,执行将与密码处理的轮数的计数值对应的轮号Rn设置为0的初始设置和指示其中存储了轮密钥的存储区的密钥指针(pt)的初始设置。密钥指针(pt)代表写入存储区中的轮密钥的存储器地址。轮号Rn的初始值被设置成0,在完成各轮之后,Rn增加。
步骤S402至S404是各轮为单位的密码处理的处理,在步骤S402中,执行轮密钥加法,也就是说,轮密钥与输入平文数据(位片表达数据)的异或运算(addRoundKey),在步骤S403中,针对轮密钥加法的结果执行非线性变换处理(SboxLayer),在步骤S404中,针对非线性变换处理的结果执行线性变换处理(pLayer)。
另外,随后将详细描述这些处理。
在步骤S405中,确认处理轮是否到达最后一轮Rn=31。
在Rn小于31的情况下,步骤S402至S404中的处理被作为下 一轮处理来执行。
在步骤S405中,在判定轮到达最后一轮Rn=31的情况下,在步骤S406中输出密文。
针对输出密文执行图7中示出的步骤S23中的数据逆变换处理,输出密文被作为最终密文90输出。
图58示出例如用硬件构造执行图7中示出的密码处理单元110执行的步骤S122中的密码处理步骤的情况的构造示例。
图58示出两轮的三个处理,即(a)轮密钥加法(addRoundKey)、(b)非线性变换(SboxLayer)和(c)线性变换(pLayer)。
在多轮中重复地执行这三个处理的轮运算,并且输出密文。
在本公开的装置中,例如,在不使用如图58中所示的密码处理专用硬件的情况下,执行通过针对存储在寄存器中的位片表达数据的运算处理进行的轮运算或寄存器存储数据的移位处理,也就是说,图57中的流程中示出的步骤S402至S404中的三个处理,即,(a)轮密钥加法(addRoundKey)、(b)非线性变换(SboxLayer)和(c)线性变换(pLayer)。
下文中,将详细描述本公开的装置执行的各处理。
首先,将参照图59描述步骤S402中的密钥加法处理(addRoundKey)。
步骤S402中的轮密钥加法是轮密钥和输入的平文数据(位片表达数据)的异或运算(addRoundKey)。
轮密钥是用图7中示出的密码密钥81的输入、通过密钥处理单元110的步骤S111中的密钥变换处理和步骤S112中的密钥编排处理生成的轮密钥。
轮密钥生成处理是上述的[4.密钥变换处理和数据变换处理]、[5.密钥编排处理(密钥编排处理示例1)]和[6.密钥编排处理(密钥编排处理示例2)]中描述的处理。
轮密钥被存储在存储器中并且从密钥指针(pt)指示的区域获取 轮密钥。
作为密码处理对象的平文数据是图7中示出的平文数据82的位片表达数据,如在上述的[4.密钥变换处理和数据变换处理]中描述的。也就是说,平文数据是通过以上参照图9描述的处理存储在寄存器中的位片表达数据。
另外,在示例中,将在假设如图9中所示针对基于八个64位平文项(a1)至(a8)生成的位片表达数据执行密码处理的前提下进行描述。
图59示出存储在四个128位寄存器r0至r3中的位片表达数据。图59的[i,j]即寄存器存储数据是由图9中示出的八个平文项(a1)至(a8)的相同次序的位的组合形成的位片表达块。
由八个平文项(a1)至(a8)的第1位的组合形成的位片表达块被设置为[0,0],由八个平文项(a1)至(a8)的第2位的组合形成的位片表达块被设置为[1,0],由八个平文项(a1)至(a8)的第3位的组合形成的位片表达块被设置为[2,0],由八个平文项(a1)至(a8)的第4位的组合形成的位片表达块被设置为[3,0],由八个平文项(a1)至(a8)的第5位的组合形成的位片表达块被设置为[0,1],……,由八个平文项(a1)至(a8)的第63位的组合形成的位片表达块被设置为[2,15],由八个平文项(a1)至(a8)的第64位的组合形成的位片表达块被设置为[3,15],均由八位形成的位片块[0,0]至[3,15]被分散并且存储在四个寄存器r0至r3中。
图57的流程的步骤S402中的密钥加法处理被作为图59中示出的四个128位寄存器r0至r3的存储数据与存储在存储器中的轮密钥的异或运算(XOR)处理来执行。
经受异或运算(XOR)处理的平文和轮密钥都是8位片表达块的64块的数据。
以各寄存器(=128-位寄存器(16块的))为单位执行与指针(pt)指定的存储器位置中存储的轮密钥(128位(16块))进行的异或运算(XOR)处理。
对于轮密钥,使用用密钥指针(pt)指定的区域中的数据。
在针对一个寄存器(128位)的各异或运算(XOR)将密钥指针(pt)向前移动16个块(128位)的同时,执行与作为存储在四个寄存器r0至r3中的加密目标的平文数据的位片表达数据的异或运算(XOR),运算结果被存储在寄存器中。
接下来,将描述图57中示出的流程图的步骤S403中的处理。
步骤S403是针对步骤S402中的轮密钥加法处理的非线性变换处理(SboxLayer)。
非线性变换处理(SboxLayer)被作为其中存储有轮密钥加法结果的四个128位寄存器和一个临时寄存器的寄存器之间的运算处理来执行。
具体而言,如图60中所示,处理被作为寄存器之间的运算处理来执行。
通过运算处理来实现处理。
在图17中示出的寄存器x3、x2、x1、x0和x4中,寄存器x3至x0对应于其中存储了轮密钥加法结果的四个128位寄存器,并且寄存器x4对应于用作临时区域的寄存器。
非线性变换处理(SboxLayer)的结果被存储在四个128位寄存器(例如,寄存器r0至r4)中。
接下来,将描述图57中示出的流程图的步骤S404中的处理。
步骤S404中的处理是针对步骤S403中的非线性变换的结果进行的线性变换处理(pLayer)。
图61示出图示线性变换处理(pLayer)的详细顺序的流程图。
将依次描述图61中示出的流程图的各步骤中的处理。
另外,作为线性变换处理(pLayer)的处理对象的数据是步骤S403中的非线性变换的结果,步骤S403中的非线性变换的结果被存储在四个128位寄存器r0至r3中,如图62中所示。
首先,在步骤S451中,如图63中所示,针对寄存器r0、r1、r2和r3执行混排命令并且其结果被存储在寄存器r0、r1、r2和r3 中。
当在混排之前寄存器r0、r1、r2和r3中的数据的布置(与寄存器r0、r1、r2和r3中的相同)从左起被设置为[i,0]、[i,1]、[i,2]、[i,3]、[i,4]、[i,5]、[i,6]、[i,7]、[i,8]、[i,9]、[i,10]、[i,11]、[i,12]、[i,13]、[i,14]和[i,15]时(本文中,i={0,1,2,3}),如下地设置各寄存器的混排。
寄存器ri
i={0,1,2,3}
([i,0]、[i,1]、[i,2]、[i,3]、[i,4]、[i,5]、[i,6]、[i,7]、[i,8]、[i,9]、[i,10]、[i,11]、[i,12]、[i,13]、[i,14]、[i,15])→([i,0]、[i,4]、[i,8]、[i,12]、[i,1]、[i,5]、[i,9]、[i,13]、[i,2]、[i,6]、[i,10]、[i,14]、[i,3]、[i,7]、[i,11]、[i,15])
接下来,在步骤S452中,如图64中所示,寄存器r0和r2被复制到寄存器r4和r5。
接下来,在步骤S453中,如图65中所示,以双字为单位针对寄存器r0和r1和寄存器r2和r3的左64位执行解包命令。
如图65中所示,执行以双字(32位(四个块))为单位将寄存器r0和寄存器r2的左8个块(64位)从左起交替存储在寄存器r0中的解包处理。
以与上述相同的方式,执行以双字(32位(四个块))为单位将寄存器r2和寄存器r3的左8个块(64位)从左起交替存储在寄存器r2中的解包处理。
接下来,在步骤S454中,如图66中所示,以双字为单位针对寄存器r4和r1和寄存器r5和r3的右64位执行解包命令。
如图66中所示,执行以双字(32位(四个块))为单位将寄存器r4和寄存器r1的右8个块(64位)从左起交替存储在寄存器r4中的解包处理。
以与上述相同的方式,执行以双字(32位(四个块))为单位将寄存器r5和寄存器r3的右8个块(64位)从左起交替存储在寄 存器r5中的解包处理。
接下来,在步骤S455中,如图67中所示,寄存器r0和r4被复制到寄存器r1和r3。
接下来,在步骤S456中,如图68中所示,以四字为单位针对寄存器r0和r2和寄存器r4和r5的左64位执行解包命令。
如图68中所示,执行以四字(64位(八个块))为单位将寄存器r0和寄存器r2的左8个块(64位)从左起交替存储在寄存器r0中的解包处理。
以与上述相同的方式,执行以四字(64位(八个块))为单位将寄存器r4和寄存器r5的左8个块(64位)从左起交替存储在寄存器r4中的解包处理。
接下来,在步骤S457中,如图69中所示,以四字为单位针对寄存器r1和r2和寄存器r3和r5的右64位执行解包命令。
如图69中所示,执行以四字(64位(八个块))为单位将寄存器r1和寄存器r2的右8个块(64位)从左起交替存储在寄存器r1中的解包处理。
以与上述相同的方式,执行以四字(64位(八个块))为单位将寄存器r3和寄存器r5的右8个块(64位)从左起交替存储在寄存器r3中的解包处理。
作为图61中示出的流程的步骤S451至S457中的处理结果生成的寄存器r0、r1、r4和r3被设置成下一轮的输入,作为线性变换的结果。
图70示出图57的流程的步骤S404中的线性变换处理的输入和输出之间的对应。
如上所述,一轮运算由图57中示出的步骤S402中的轮密钥加法、步骤S403中的非线性变换和流程的步骤S404中的线性变换构成。
这轮运算处理的各处理的命令的数量如下。
(a)轮密钥加法(addRoundKey):4
(b)非线性变换(SboxLayer):20
(c)线性变换(pLayer):16
在图7中示出的密码处理单元110的步骤S122中,将根据图57中示出的流程进行的轮运算重复在密码算法中定义的预定次数(32)。接下来,在步骤S123中,针对这些处理结果执行数据逆变换处理。
步骤S123是针对步骤S122中的密码处理(数据处理)的结果进行的数据逆变换处理(数据变换-1),并且是将位片表达数据返回到与在位片处理之前的平文数据82对应的加密数据的组合的处理。该处理被作为以上参照图9描述的位片表达数据的生成处理的逆处理来执行。
用该处理,对应于平文数据82的加密数据91被作为输出数据90生成。
另外,在上述的示例中,为了用软件高效地执行作为密码算法的[PRESENT]的线性变换处理(pLayer),数据的位片表达被构造成将处理设置成以四位为间隔执行,如以上参照图9描述的。用该构造,例如,通过根据参照图61至图70进行的处理组合地执行因特尔扩展SIMD命令的混排和解包命令,可以针对各轮用16个命令执行线性变换(pLayer)。
另外,在密码算法[PRESENT]中,当执行对应于一轮的轮密钥的更新处理时,处理被设置成使用单个Sbox执行非线性变换处理。
关于此,根据上述的[6.密钥编排处理(密钥编排处理示例2)]中描述的构造,通过输入80位密钥执行处理的密钥编排单元可以通过执行非线性变换处理两次来生成32轮的轮密钥,可以用少量的命令执行轮密钥生成,因此快速地执行处理。
如上所述,本公开的信息处理装置可以在没有用于执行密码算法的专用硬件的信息处理装置(例如,诸如PC的信息处理装置)中快速地执行特定的密码算法的处理,例如上述的密码算法[PRESENT]。
[8.信息处理装置和密码处理装置的构造示例]
最后,将描述执行根据上述示例的密码处理的信息处理装置或密码处理装置的装置构造示例。信息处理装置包括例如以上参照图1至图5描述的服务器。
根据上述示例的密码处理可以在例如PC或服务器等设备中执行,所述设备包括由用于执行定义了密码处理算法的软件(程序)的CPU等构成的数据处理单元和用于存储程序或数据的存储器。
图71示出执行本公开的密码处理的信息处理装置或密码处理装置的构造示例。
中央处理单元(CPU)701用作根据存储在只读存储器(ROM)702或存储单元708中的程序执行各种处理的数据处理单元。例如,CPU根据上述顺序执行处理。
随机存取存储器(RAM)703存储CPU 701执行的程序或数据。例如,定义上述的密码处理顺序的程序被存储在其中。RAM还包括存储将用于上述各处理中的数据的寄存器和用作工作区的存储区。
CPU 701、ROM 702和RAM 703通过总线704彼此连接。
CPU 701通过总线704连接到输入和输出接口705,由各种开关、键盘、鼠标或麦克风构成的输入单元706和由显示器或扬声器构成的输出单元707连接到输入和输出接口705。例如,CPU 701按照从输入单元706输入的命令执行各种处理,并且将处理结果输出到输出单元707。
连接输入和输出接口705的存储单元708由例如硬盘构成,并且存储由CPU 701执行的程序或各种数据项。通信单元709通过网络(诸如,互联网或局域网)与外部设备通信。
例如,在以上参照图1至图5描述的服务器的情况下,通信单元709执行从多个用户终端或传感器接收加密数据的处理或者针对多个用户终端或传感器发送加密数据的处理。
连接输入和输出接口705的驱动器710驱动可移动介质711(诸 如,磁盘、光盘、磁-光盘或诸如存储卡等半导体存储器)并且执行数据的记录或读取。
另外,在上述的示例中,已经主要描述了加密作为输入数据的平文的密码处理,但是本公开的处理还可以应用于将作为输入数据的密文恢复成平文的解密处理,而不仅仅可以应用于将作为输入数据的平文加密的密码处理。
[9.本公开的构造的总结]
上文中,已经参照特定示例详细描述了本公开的示例。然而,本领域的技术人员当然可以在不脱离本公开主旨的范围内修改或替换示例。也就是说,已经用示例描述了本发明,示例不旨在限制本发明。为了确定本公开的主旨,必须参照权利要求书。
另外,根据本公开的一个示例,实现例如使用云计算处理用软件(程序)进行轻量级密码的密码处理的提速。
具体而言,多个用户终端或传感器将通过轻量级密码算法加密的数据与各个密码密钥一起发送,服务器接收加密数据并且根据定义解密处理顺序的程序执行数据处理。可以通过针对作为解密对象的多个加密数据项执行位片处理来生成位片表达数据,以基于各加密数据项的密码密钥生成位片表达密钥,以基于位片表达密钥生成轮密钥,以执行包括位片表达数据的块单位的运算和移动处理和使用轮密码术进行的运算的解密处理,以通过针对解密处理结果对数据进行逆变换而生成对应于多个加密数据项的多个平文数据项。
另外,在根据本公开的一个示例的解密处理中,通过存储在寄存器中的位片表达块单位的运算或移动处理来执行处理,并且可以高速地执行对大量数据的处理。具体而言,在因特尔核i7870处理器中执行密码算法[PRESENT(80位的密钥长度)]的情况下,实现11.06个周期/字节的高速。
另外,在上述的示例中,已经主要描述了密码算法[PRESENT(80位的密钥长度)]的执行处理示例,但本公开的处理还可以应用于其它算法。例如,在根据本公开的处理执行密码算法[Piccolo(80 位的密钥长度)]的情况下,实现5.59个周期/字节的高速。具体地讲,Piccolo的速度超过6.92个周期/字节,6.92个周期/字节是本技术已知的同一平台(因特尔核i7920)下的高级加密标准(AES)的速度记录。
另外,由于根据本公开的一个示例的位片安装中是在不参照的表格的情况下通过逻辑运算计算S-box,因此可以增加抵抗侧信道攻击(诸如,缓存攻击或跨虚拟机攻击)的耐久性。另外,关于云计算处理中用软件进行密码处理的提速,可以用较少数量的周期完成密码处理,这些导致云或数据中心的功耗降低。
另外,在根据本公开的一个示例的系统中,不必在云或计算中心中引入用于密码处理的专用硬件,因此延展性提高。
另外,可以使用在现有技术中难以使用的用云进行的轻量级密码,因此促进了传感器中的轻量级密码的安装并且可以以低成本和低功耗实现传感器网络。
另外,本说明书中公开的技术可以具有下面的构造。
(1)一种信息处理装置,所述信息处理装置包括:
通信单元,其接收数据发送设备发送的加密数据;以及
数据处理单元,其执行通过所述通信单元接收的加密数据的解密处理,
其中,所述数据处理单元具有根据定义解密处理顺序的程序执行数据处理的构造,并且
所述数据处理单元根据所述程序执行:
通过针对作为解密处理对象的加密数据执行位片处理来生成位片表达数据的数据变换处理,
通过针对加密数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,
输入所述位片表达密钥以生成用于所述解密处理的各轮的轮密钥的密钥编排处理,
针对所述位片表达数据应用所述轮密钥的解密处理,以及
通过针对所述解密处理的结果执行所述位片处理的逆变换,来生成对应于所述加密数据的平文数据的数据逆变换处理。
(2)根据(1)所述的信息处理装置,
其中,所述通信单元接收所述加密数据和所述加密数据的发送设备的设备ID,
所述数据处理单元
基于所述设备ID从存储单元选择性获取对应于各加密数据项的密码密钥,或者基于所述设备ID用预定运算提取对应于各加密数据项的密码密钥,
通过在所述密钥变换处理中针对密码密钥执行所述位片处理来生成所述位片表达密钥。
(3)根据(1)或(2)所述的信息处理装置,
其中,所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的解密处理,所述位片表达数据块单位由在所述解密处理中构成所述位片表达数据的各加密数据项的相同次序的位或每n位的位构成,其中n是2的幂。
(4)根据(1)至(3)中的任一项所述的信息处理装置,
其中,所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
(5)一种信息处理系统,所述信息处理系统包括:
发送终端,其生成并且发送加密数据;以及
服务器,其接收所述发送终端发送的加密数据,
其中,所述服务器包括数据处理单元,所述数据处理单元根据定义解密处理顺序的程序执行数据处理,并且
所述数据处理单元根据所述程序执行:
通过针对作为解密处理对象的加密数据执行位片处理来生成位片表达数据的数据变换处理,
通过针对加密数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,
输入所述位片表达密钥以生成用于所述解密处理的各轮的轮密钥的密钥编排处理,
针对所述位片表达数据应用所述轮密钥的解密处理,以及
通过针对所述解密处理的结果执行所述位片处理的逆变换来生成对应于所述加密数据的平文数据的数据逆变换处理。
(6)根据(5)所述的信息处理系统,
其中,所述发送终端发送所述加密数据和所述加密数据的发送设备的设备ID,
所述服务器的所述数据处理单元
基于所述设备ID从存储单元选择性获取对应于各加密数据项的密码密钥,或者基于所述设备ID用预定运算提取对应于各加密数据项的密码密钥,
通过在所述密钥变换处理中针对密码密钥执行所述位片处理,来生成所述位片表达密钥。
(7)根据(5)或(6)所述的信息处理系统,
其中,所述服务器的所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的所述解密处理,所述位片表达数据块单位由在所述解密处理中构成所述位片表达数据的各加密数据项的相同次序的位或每n位的位构成,其中n是2的幂。
(8)根据(5)至(7)中的任一项所述的信息处理装置,
其中,所述服务器的所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
(9)一种信息处理装置,所述信息处理装置包括:
通信单元,其针对数据接收设备发送加密数据;以及
数据处理单元,执行生成通过所述通信单元发送的加密数据的处 理,
其中,所述数据处理单元具有根据定义密码处理顺序的程序执行数据处理的构造,并且
所述数据处理单元根据所述程序执行:
通过针对作为密码处理对象的平文数据执行位片处理来生成位片表达数据的数据变换处理,
通过针对平文数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,
输入所述位片表达密钥以生成用于加密处理的各轮的轮密钥的密钥编排处理,
针对所述位片表达数据应用所述轮密钥的密码处理,以及
通过针对所述密码处理的结果执行所述位片处理的逆变换来生成对应于所述平文数据的加密数据的数据逆变换处理。
(10)根据(9)所述的信息处理装置,
其中,所述数据处理单元
基于所述加密数据被发送到达的发送目的地的设备ID从存储单元选择性获取对应于各平文数据的密码密钥,或者基于所述设备ID用预定运算提取对应于各加密数据项的密码密钥,
通过在所述密钥变换处理中针对密码密钥执行所述位片处理来生成所述位片表达密钥。
(11)根据(9)或(10)所述的信息处理装置,
其中,所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的所述加密处理,所述位片表达数据块单位由在所述密码处理中构成所述位片表达数据的各平文数据的相同次序的位或每n位的位构成,其中n是2的幂。
(12)根据(9)至(11)中的任一项所述的信息处理装置,
其中,所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每 n位的位构成,其中n是2的幂。
(13)一种信息处理系统,所述信息处理系统包括:
服务器,其生成并且发送加密数据;以及
接收终端,其接收所述服务器发送的加密数据,
其中,所述服务器包括数据处理单元,所述数据处理单元根据定义密码处理顺序的程序执行数据处理,并且
所述数据处理单元根据所述程序执行:
通过针对作为密码处理对象的平文数据执行位片处理来生成位片表达数据的数据变换处理,
通过针对平文数据的各密码密钥执行位片处理来生成位片表达密钥的密钥变换处理,
输入所述位片表达密钥以生成用于所述密码处理的各轮的轮密钥的密钥编排处理,
针对所述位片表达数据应用所述轮密钥的密码处理,以及
通过针对所述密码处理的结果执行所述位片处理的逆变换来生成对应于所述平文数据的加密数据的数据逆变换处理。
(14)根据(13)所述的信息处理系统,
其中,所述服务器的所述数据处理单元
基于各接收终端的设备ID从存储单元选择性获取对应于各平文数据的密码密钥,或者基于所述设备ID用预定运算提取对应于各平文数据的密码密钥,
通过在所述密钥变换处理中针对密码密钥执行所述位片处理来生成所述位片表达密钥。
(15)根据(13)或(14)所述的信息处理系统,
其中,所述服务器的所述数据处理单元执行使用位片表达数据块单位的运算处理和移动处理的所述加密处理,所述位片表达数据块单位由在所述加密处理中构成所述位片表达数据的各平文数据的相同次序的位或每n位的位构成,其中n是2的幂。
(16)根据(13)至(15)中的任一项所述的信息处理系统,
其中,所述服务器的所述数据处理单元使用位片表达密钥块单位的运算处理和移动处理来生成所述轮密钥,所述位片表达密钥块单位由在所述密钥编排处理中构成所述位片表达密钥的各密码密钥的相同次序的位或每n位的位构成,其中n是2的幂。
另外,在用于执行处理的程序和上述的装置和系统中执行的处理的方法也被包括在本公开的构成中。
另外,说明书中上述处理的顺序可以由硬件、软件或这二者的复合构造来执行。在用软件执行处理的情况下,其中记录了处理顺序的程序可以被安装在嵌入专用硬件中的计算机中的存储器中待执行,或者程序可以被安装在可以执行各种处理的通用计算机中待执行。例如,程序可以预先被记录在记录介质中。除了将来自记录介质的程序安装在计算机中之外,程序可以通过诸如局域网(LAN)或因特网等网络来接收,并且可以被安装在诸如内置硬盘的记录介质中。
另外,说明书中描述的各种处理不仅根据描述按时序执行,而是可以根据用于执行处理的装置的处理能力或根据需要并行地或分立地执行。另外,本说明书中的系统是多个装置的逻辑组件构造,不限于使各构造处于同一壳体中的装置。
附图标记
10 云
20 传感器网络
30 服务器
31 密码密钥
32 传感器ID
33 加密数据
70 平文数据
80 输入数据
81 密码密钥
82 平文数据
90 输出数据
91 加密数据
100 信息处理装置
110 密码处理单元
701 CPU
702 ROM
703 RAM
704 总线
705 输入和输出接口
706 输入单元
707 输出单元
708 存储单元
709 通信单元
710 驱动器
711 可移动介质