首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >掩蔽对阻止侧通道攻击有效吗?

掩蔽对阻止侧通道攻击有效吗?
EN

Stack Overflow用户
提问于 2015-01-09 17:28:30
回答 1查看 429关注 0票数 5

我在用一些比金的公钥密码。使用按位掩蔽以确保所访问的计算、定时和内存地址与数据值无关是否安全?

这种技术是否容易受到基于指令定时、功率、射频发射或其他我不知道的东西的侧通道攻击?(作为参考,我知道RSA致盲、EC Montgomery梯子、缓存刷新等技术。)

简单代码示例(C/C++):

代码语言:javascript
复制
uint a = (...), b = (...);
if (a < b)
    a += b;

现在翻译成使用固定时间掩蔽:

代码语言:javascript
复制
uint a = (...), b = (...);
uint mask = -(uint)(a < b);
a = ((a + b) & mask) | (a & ~mask);

注意,a < b为0或1,掩码为0x00000000或0xFFFFFFF。

同样,对于高级别操作(C++):

代码语言:javascript
复制
Integer x = (...);
if (x.isFoo())
    x.doBar();

以下是一个可以接受的安全翻译?

代码语言:javascript
复制
Integer x = (...);
uint mask = -(uint)x.isFoo();  // Assume this is constant-time
Integer y(x);                  // Copy constructor
y.doBar();                     // Assume this is constant-time
x.replace(y, mask);            // Assume this uses masking
EN

回答 1

Stack Overflow用户

发布于 2015-01-11 12:11:13

在代码中使用掩蔽或其他技术可能是粗略的,因为编译器进行了您通常不知道的各种优化。你在最初的文章中提到的一些方法要好得多。

作为一个普遍的经验法则,使用众所周知的密码库,因为他们应该加强对侧通道的攻击。如果不能做到这一点,您通常可以转换信息,对其进行处理,然后将结果转换回来。这在公钥密码学中尤其有效,因为它通常是同态的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27865974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档