这是与我以前的问题相同的随机梯算法。它计算f(g,n,r)=n*g或g^n (取决于组表示法),其中g是组的生成器。假设n=5882353。这可以计算为
((((((((((1*2*2+1)*2+1)*2*2*2+1)*2+1)*2+1)*2*2*2*2*2*2+1)*2+1)*2+1)*2+1)*2+1)*2*2*2*2+1
(((((((1*3*3+2)*2+1)*2+1)*3*3+2)*2+1)*3*2*3*2+1)*2*2+1)*2*2*2*3*2+1
((((((1*3+2)*3*3+2)*2*3+1)*3+2)*2*3*2*3+1)*2*2+1)*3*2*2*2*2+1
((((((((1*3*3+2)*3*3*3+1)*3+2)*3+1)*3+2)*3*3*3+1)*3+2)*3+2)*3+1还有约215,000种表示n的其他方法,即乘以2或3,加上1或2,取决于r. r是0到1之间的一个数字,以a/b表示,其中b的位数至少是n的78.8%,目的是使Eve在观察侧频道时很难找出n是什么。有r号的名字吗?如果没有,你能推荐一个吗?
发布于 2022-10-03 19:02:27
使用影响中间值(但不影响最终结果)的辅助输入的技术称为未定义未定义。辅助输入可以称为“盲参数”,或者其他取决于在计算中如何使用的变量,例如,如果在乘法中使用“盲因子”。当盲是按位操作完成时,通常被称为掩蔽。
盲是密码计算中避免侧信道攻击的一种常用技术。盲参数通常是随机的,但并非总是随机的--在某些情况下,确定性盲是有用的(例如,从私钥和签名操作中的消息导出的盲因子)。随机盲只有当侧通道不能在一个跟踪中显示所有秘密数据时才有帮助,但这是一个常见的情况。
(请注意,我不擅长攻击--以下是我作为一名后卫的经验,专家来找我说:“嘿,我们在你的产品中找到了这个侧通道”,我想找个办法消除这条通道。)
在我看来,这里提出的致盲战略看上去不太好。读取一个指数的位数是一个非常著名的边信道,用一个大指数分解成一个可变的乘法序列并不能消除这个边信道。在许多平台上,运行在同一台机器上的代码可以以合理的精度测量单个跟踪中的指数。即使在更好的孤立平台上(例如,远程攻击),通过观察许多痕迹,对手也可以了解因素的分布,这可能足以用实际可行的跟踪数重建指数。
通常,在计算中添加噪声只是对侧信道攻击的有限防御。它迫使对手观察更多的计算实例,但只有当侧信道受限时,这才是一个很好的防御,因此一个无噪声的计算需要大量的时间来攻击,而噪声导致攻击时间变得不切实际。即使一个计算实例泄露秘密信息,噪声也于事无补。
你在重新发明一个著名的轮子,而你的轮子非常正方形。我强烈建议您浏览有关攻击和指数化实现的文献,并查看现有的密码库是如何做到的。避免定时侧信道的较好方法不是随机化(使定时依赖于秘密输入和辅助秘密的组合),而是使操作的定时完全独立于秘密输入。
发布于 2022-10-03 17:55:23
有r号的名字吗?
我用这个词来形容这将是令人眼花缭乱的因素
现在,对于modexp操作,对指数进行盲化的标准方法是Coron盲,也就是说,计算g^x \bmod p的方法是选择一个随机的r并计算:
(其中q是子群的大小;如果在有限域上进行幂运算,那么q = p-1)。
如果q的二进制表示法中没有0's和1's的长字符串,那么这在一个适度的k中很好;如果有这么大的字符串,它可以工作,但它更复杂。在任何情况下,您可能想要考虑这一点,或者作为您的技术的替代或补充。
发布于 2022-10-05 01:51:37
有几种算法“使用”随机数(S)的方式对结果没有显著的影响:
在密码学之外,
https://crypto.stackexchange.com/questions/102099
复制相似问题