软件级双轨逻辑中的S盒运算的实现方法技术

技术编号:18530088 阅读:57 留言:0更新日期:2018-07-25 14:53
本发明专利技术旨在提出一种软件级双轨逻辑中的S盒运算的实现方法,包括:将所述S盒运算的原始输入拆分为N个部分,N为大于0的整数;使用所述原始输入被拆分后的前N‑1个部分来进行前N‑1级查表,每级查表的输出结果是下一级查表的表地址;以及通过使用第N个部分进行第N级查表,得到所述S盒运算的输出结果。上述方法所实现的S盒运算的运算速度较快且需要的存储空间较小。

【技术实现步骤摘要】
软件级双轨逻辑中的S盒运算的实现方法
本专利技术涉及芯片的加密方法,尤其涉及软件级双轨逻辑下的S盒运算的实现方法。
技术介绍
任何密码设备在运行时都会散发出各种形式的信息,如功耗、电磁辐射、声音、运行时间等。这些信息可被收集和分析,并且以此方式恢复出密码设备的秘密信息。这种攻击叫做旁路攻击。旁路攻击是针对加密算法来实现的,不针对某个特定的算法。因此,即使某个加密算法在数学上或在理论上被证明是安全的,它在实际应用中仍然有可能会被旁路攻击攻破。事实上,加密算法的常规实现方法通常无法抵抗旁路攻击。旁路攻击中一种常见的方法是功耗分析,它通过分析设备所散发的功耗来恢复该设备的秘密信息。其中,根据功耗曲线的直接特征来进行分析的方法被称为简单功耗分析(SimplePowerAnalysis,SPA)。根据大量的功耗曲线的统计特征来分析并计算出秘密信息的方法被称为差分功耗分析(DifferentialPowerAnalysis,DPA)。在CMOS电路中,寄存器产生的功耗取决于其比特翻转的个数,也就是取决于其原值与新值之间的汉明距离。因此,可以计算密码设备运行时的中间值,并且根据“寄存器产生的功耗取决于其比特翻转的个数”,来估计密码设备运行时的功耗大小。其中,中间值是指从给定输入到得出输出之间所有的运算过程中的中间值。双轨逻辑是抵抗功耗分析的硬件实现方法。具体的,采用两个物理比特表示一个逻辑比特,即可以用两个物理比特“01”表示一个逻辑比特“0”,用两个物理比特“10”表示一个逻辑比特“1”,并且规定任何数值的改变需先从原值变为预充电状态(即数值“00”),然后再转变成新值。这样,所有的数值改变所产生的功耗均相同,攻击者就无法根据功耗大小来区分不同的运行值了。上述方法的缺陷是芯片的面积会翻倍,这对轻量级密码设备而言是巨大的代价。某些加密算法是在可编程的密码设备中通过软件来实现的,如CPU卡。这些加密算法可通过软件的形式来实现双轨逻辑。软件级双轨逻辑是指在软件编程中模拟硬件双轨逻辑的实现方式,关键在于不仅需要保证输入和输出的数据符合双轨逻辑,还要确保运算过程中的中间值的安全性。因此,软件级双轨逻辑通常采用查表的方式来实现。S盒运算是对称加密算法中的基本操作,基本的运算过程是对于一个输入数据,以一个特定的对应的数据作为结果进行输出。一个n比特输入、m比特输出的S盒运算是定义了一种从{x|0≤x≤2n-1,x∈Z}到{x|0≤x≤2m-1,x∈Z}的映射。每个加密算法定义了自己的S盒运算的数据对应关系,并且不同的加密算法所定义的S盒通常也不同。而对于S盒运算这样的输入与输出之间没有明显逻辑关系的操作,其查表实现需要消耗大量的存储空间。
技术实现思路
本专利技术旨在提供一种运算速度较快且需要存储空间较小的S盒运算的实现方法。本专利技术提出一种软件级双轨逻辑中的S盒运算的实现方法,包括:将所述S盒运算的原始输入拆分为N个部分,N为大于0的整数;使用所述原始输入被拆分后的前N-1个部分来进行前N-1级查表,每级查表的输出结果是下一级查表的表地址;以及通过使用第N个部分进行第N级查表,得到所述S盒运算的输出结果。优选地,所述原始输入和所述输出结果均是双轨编码的。优选地,所述查表所使用的表满足以下要求:(1)同一级的所有表的地址具有相同的汉明重量;(2)表的地址是该表的大小的整数倍;以及(3)表的的大小是2的整数次幂。优选地,被拆分后的所述N个部分中的每一个是双轨编码的;并且所述N个部分是以下各项中的一个或多个:单个逻辑比特、多个相邻逻辑比特的依次排列、不相邻逻辑比特之间的组合。附图说明包括附图是为提供对本公开内容的进一步的理解。附图示出了本公开内容的实施例,并与本说明书一起起到解释本公开内容原理的作用。在结合附图并阅读了下面的对特定的非限制性本公开内容的实施例之后,本公开内容的技术方案及其优点将变得显而易见。其中:图1示出了根据本专利技术的一个实施例的方法流程图。具体实施方式参考在附图中示出和在以下描述中详述的非限制性实施例,更完整地说明本公开内容的多个技术特征和有利细节。并且,以下描述忽略了对公知的原始材料、处理技术、组件以及设备的描述,以免不必要地混淆本公开内容的技术要点。然而,本领域技术人员能够理解到,在下文中描述本公开内容的实施例时,描述和特定示例仅作为说明而非限制的方式来给出。在任何可能的情况下,在所有附图中将使用相同的标记来表示相同或相似的部分。此外,尽管本公开内容中所使用的术语是从公知公用的术语中选择的,但是本公开内容的说明书中所提及的一些术语可能是公开内容人按他或她的判断来选择的,其详细含义在本文的描述的相关部分中说明。此外,要求不仅仅通过所使用的实际术语,而是还要通过每个术语所蕴含的意义来理解本公开内容。本专利技术提出一种软件级双轨逻辑下的S盒运算的实现方法,输入和输出数据均经由双轨编码。在运算过程中,所有操作数据、中间值的汉明重量都与明密文以及密钥的数据内容无关,即算法执行时产生的功耗与算法所涉及的数据没有任何关联性,攻击者也就无法通过功耗分析得到加密算法的密钥。其中,汉明重量是指二进制数据中比特“1”的个数。同时,上述方法与常规的S盒运算软件级双轨逻辑实现相比,运算速度较快且所需的存储空间较小。在一个实施例中,用两个物理比特“01”表示一个逻辑比特“0”,用两个物理比特“10”表示一个逻辑比特“1”。在另一个实施例中,也可以用两个物理比特“01”表示一个逻辑比特“1”,用两个物理比特“10”表示一个逻辑比特“0”。假设S盒运算的输入记为I,输出记为R,则有R=S(I)。此处,S表示S盒运算从输入到输出的变换。若用dr()表示双轨编码变换,则本方法所实现的运算SD满足:dr(R)=SD(dr(I))。其中,SD表示双轨逻辑下的S盒运算从输入到输出的变换。在一个优选的实施例中,将S盒拆分为多个子S盒,而S盒的相关运算也将通过多级查表得到最终结果。如图1所示,假设原始输入为I,输入的长度为L个逻辑比特。将原始输入拆分为N个部分(N为大于0的整数)(101),分别记为I1,I2,...,IN,这N个部分的长度分别为L1,L2,...,LN个逻辑比特。拆分后的每个部分I1,I2,...,IN仍然是双轨编码的。多级查表的逻辑如下:R1=S1(I1)R2=R1(I2)…RN=RN-1(IN)这里的R1~RN-1为前N-1级查表的结果,而RN为最终的输出。S1表示第一级查表时所用的表。原始输入被拆分后的前N-1个部分分别用于前N-1级查表,查表的输出结果是下一级查表的表地址(102);最后,通过使用第N个部分进行第N级查表,得到S盒运算的输出结果(103)。在整个运算过程中,S盒运算的输入、输出数据是经双轨编码的。虽然查表操作中表的地址数据与密码数据无关,但是如果攻击者能够探知到使用了不同的表,也就相当于探知得到部分数据信息。因此表的地址应当满足以下两个条件:1.同一级的所有表的地址具有相同的汉明重量。这样,同一级的表地址读取所产生的功耗信息就不会存在差异,从而使攻击者无法获取有用信息。2.表的地址是该表的大小的整数倍,并且表的大小是2的整数次幂。这样,当表的地址加上作为偏移地址的输入数据时,由于输入数据是双轨编码的,寻址时的实际地址本文档来自技高网
...

【技术保护点】
1.一种软件级双轨逻辑中的S盒运算的实现方法,包括:将所述S盒运算的原始输入拆分为N个部分,N为大于0的整数;使用所述原始输入被拆分后的前N‑1个部分来进行前N‑1级查表,每级查表的输出结果是下一级查表的表地址;以及通过使用第N个部分进行第N级查表,得到所述S盒运算的输出结果。

【技术特征摘要】
1.一种软件级双轨逻辑中的S盒运算的实现方法,包括:将所述S盒运算的原始输入拆分为N个部分,N为大于0的整数;使用所述原始输入被拆分后的前N-1个部分来进行前N-1级查表,每级查表的输出结果是下一级查表的表地址;以及通过使用第N个部分进行第N级查表,得到所述S盒运算的输出结果。2.如权利要求1所述的方法,其特征在于,所述原始输入和所述输出结果均是双轨编码的。3.如权利要...

【专利技术属性】
技术研发人员:顾星远
申请(专利权)人:上海华虹集成电路有限责任公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1