用共享随机比特进行掩码的制作方法

文档序号:9332644阅读:712来源:国知局
用共享随机比特进行掩码的制作方法
【专利说明】用共享随机比特进行掩码
【背景技术】
[0001] 密码系统的硬件实现容易受到侧信道攻击影响。侧信道攻击不使用蛮力或密码系 统算法中的理论弱点,而是依赖于从密码系统的物理实现获得的信息来击败密码系统。例 如,电磁泄漏可被分析并被使用来击败密码系统。为了阻碍侧信道攻击,密码系统的内部操 作可以用随机比特来进行掩码。使用一阶掩码,内部操作用一个随机比特进行掩码。这样 的一阶掩码提供了一些保护,但通常不被认为是对很敏感的信息足够有力。使用二阶掩码, 内部操作用两个或更多个随机比特进行掩码。二阶掩码提供了被认为对大多数信息足够的 安全性。三阶和更高阶掩码提供了甚至更强的安全性,但是可能在计算上昂贵。

【发明内容】

[0002] 提供本
【发明内容】
是为了以精简的形式介绍将在以下详细描述中进一步描述的一 些概念。本
【发明内容】
并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用 于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部 分中所提及的任何或所有缺点的实现。
[0003] 非线性变换可包括多个不同非线性逻辑操作。两个或更多这些非线性逻辑操作可 用相同随机比特来进行掩码。
【附图说明】
[0004] 图1示出了根据本发明的一实施例的示例密码方法。
[0005] 图2示意性地示出了根据本公开的一实施例的用于执行示例性非线性变换的逻 辑。
[0006] 图3示出根据本发明的一个实施例,可被用于对非线性操作进行掩码的示例随机 比特集合。
[0007] 图4示出了根据本方面的一实施例的用于确定随机比特的共享的示例方法。
[0008] 图5A示意性示出根据本发明的一实施例的二阶掩码实现的经掩码的和 (MaskedAnd)操作。
[0009] 图5B示出了来自图5A的经掩码的和操作的示例输入和输出。
[0010] 图6示意性示出根据本发明的各实施例的配置用于机器生成随机比特和机器掩 码非线性操作的示例计算机系统。
【具体实施方式】
[0011] 被掩码为二阶或更高阶的非线性变换可使用很大数量的随机比特。例如,直到现 在,相信高级加密标准(AES)算法的二阶掩码的实现使用超过一万七千个随机比特来处理 128比特的数据块。这可导致很高的计算上的开销(例如,高的门计数,高能耗,和/或长的 运行时间)。
[0012] 如在此讨论的,随机比特的数量可被大幅减少而无需牺牲保护。这通过有策略地 将相同随机比特重新用于对不同操作进行掩码来实现。如在此使用的,术语"随机比特"被 用来指被以使得预先确定值不切实际的方式分配了值的比特。该值可被随机地、伪随机地, 或以使得识别所分配的值的模式不切实际的方式来分配。如以下详述的,被分配了一次特 定值的随机比特可被用于对一个以上的操作进行掩码。换言之,分配给随机比特的值(例 如O或1)仅生成一次,并且这个值可被不同操作重新使用或共享。这与其中没有共享且为 每个操作生成新随机值(例如O或1)的方法相反。当用作与信号或操作有关的名词时,术 语"掩码"指被用于对信号或操作进行随机化的随机比特的非空集合。
[0013] 在此描述的随机比特的共享可被用来减少用于执行各种不同非线性变换的随机 比特的总数量。被掩码为t阶的高级加密标准算法被提供,作为一非限制性示例。然而,可 以理解参考高级加密标准算法描述的比特共享可被应用到不同非线性变换而无需偏离本 发明意指的范围。
[0014] 图1示出了 AES算法100的示例数据流。AES算法基于Galois字段GF(2s),亦称 二进制字段,并被不可约多项式x s+x4+X3+X+l (首数2)来定义。AES算法100使用长度为 128、192或256比特的密码密钥来处理128比特的数据块。算法包括两个部分:主数据路 径和密钥扩展单元(未示出)。密钥扩展单元使用密码密钥来生成128比特长度的子密钥 集合,称为密钥次序表。主数据路径是128比特宽的,并迭代以生成该示例算法中的密码结 果。
[0015] 如图1所示,AES算法100可在105以未加密的输入或明文128比特数据块开始。 在110,AES算法将明文转换成4*4的矩阵,以下称为"状态"。术语"状态"可指该未加密的 4*4矩阵或任何由AES算法100生成的中间4*4矩阵。4*4矩阵的每个元素包括一个字节。 在115, AES算法包括状态的AddRoundKey (添加轮回密钥)转换。AddRoundKey转换将状 态与称为RoundKey (轮回密钥)的第一 128比特子密钥进行XOR合成。AES算法100可接 着将Round(轮回)号设为1。
[0016] AES算法100接着迭代一定数量的轮回,每个轮回120包括4个转换。在125,状态 经历SubByte (子字节)转换,在130,状态经历ShiftRows (换行)转换,在135,状态经历 MixColumns (混列)转换,并且在140,状态经历AddRoundKey转换。每个轮回取长度为128 比特的一个数据块,并使用来自每个轮回的密钥次序表的唯一子密钥来生成长度为128比 特的一个新数据块。以此方式,每个新生成的数据块作为下一轮回的输入,在最后一个轮回 的情况下,作为密码结果。不同的轮回使用不同的子密钥但具有相同基础结构。
[0017] 子字节转换包括16字节替代。每个字节替代是包括乘法逆元转换和仿射转换的 非线性变换。替代也可以被作为S-Box查找操作来执行。状态的每个字节以此方式经历字 节替代。子字节转换及其掩码在下文中参考图2和-5来更详细地描述。
[0018] ShiftRows转换包括4*4状态的每一行的循环左移。状态的行1 一 4分别通过0 - 3字节的偏移来左移。
[0019] MixColumns转换在状态的4个独立列上操作,其中每个列被当做多项式来对待。 每个列与固定多项式{03}X 3+{01}x2+{01}X+{02}(以x4+l为模)相乘。
[0020] 在140,状态经历利用来自密钥进度表的新子密钥的AddRoundKey转换。
[0021] 在145, AES算法100将轮回数加1。如果轮回数小于或等于(Nr-I),AES算法100 回到125并发起转换的另一个轮回120。如果轮回数等于Nr,AES算法100前进到最后的轮 回150。Nr根据密码密钥的长度来确定。对于128比特的密码密钥,Nr等于10。对于192 比特的密码密钥,Nr等于12。对于256比特的密码密钥,Nr等于14。
[0022] 最后的轮回150包括三个转换。在155,状态经历SubBytes转换,在160,状态经 历ShiftRows转换,在165,状态经历AddRoundKey转换。最后的轮回150省略了轮回120 的MixColumns转换。在165的AddRoundKey转换之后,在170, AES算法100输出最终的经 加密的数据块,或密文。
[0023] 解密算法(未示出)可被用来从由AES算法100生成的密文输出中恢复初始 明文输入。AES算法100中的转换可以被逆,并逆实现来解密密文。解密算法可以以 将密文变换到4*4矩阵开始,接着用从唯一密钥次序表中选择的RoundKey来进行该状 态的AddRoundKey转换。解密的密钥次序表可包括用于加密的相同子密钥,但阶次为 逆。解密算法可接着迭代(Nr-I)个轮回,每个轮回包括InvShiftRows (逆换行)转换、 InvSubBytes (逆子字节转换)、AddRoundKey转换,和InvMixColumns (逆混列)转换。每 个轮回取长度为128比特的一个数据块,并使用来自每个轮回的密钥进度表的唯一子密钥 来生成长度为128比特的一个新数据块。解密算法的最后轮回包括InvShiftRows转换、 InvSubBytes
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1