【发布时间】:2019-11-14 06:45:09
【问题描述】:
有没有办法将包含 e 的缓冲区归零? G。之后的私钥 使用它们并确保编译器不会将归零代码删除为 没用过?有件事告诉我一个简单的:
copy(privateKey, make([]byte, keySize))
不能保证留在那里。
【问题讨论】:
-
为什么编译器会删除不是空操作的代码?这个具体的例子会破坏很多东西。
-
@NathanVērzemnieks 不确定你的意思。 C 编译器一直这样做,这是一个已知问题。例如,请参阅this article。
-
啊,这很有趣!不是我以前遇到过的。我很好奇 - 而不是试图推断假设的编译器可能会或可能不会做什么,并欺骗他们认为使用了归零缓冲区,为什么不实际使用它呢?比如说,将它传递给一个将其字节值添加到全局计数器的函数,然后如果计数器值非零,则发生恐慌。当然,这会增加一些计算量,但对于大多数目的来说,它似乎应该是相对微不足道的。
标签: security go cryptography