这个问题是由一些错误的Verilog引起的。由于有人草率地使用端口分配和输出语句,因此我拥有一个AES内核,该内核在与密钥相连的密钥调度中具有来自S-Box的一位。这是我对HDL的审核中发现的;但是,这是一个简单的错误。由于硬件的性质,我为密钥配置了AES-128,因此可以从密钥中获取10位信息,这是一个非常并行的实现(实际上是S-Box上平方模块的LSB密钥的最低字节)。这让我开始思考:

如果您是攻击者,并且可以观看AES-128的一个比特进行10轮攻击,那么您将选择哪个比特来恢复最有用的信息?我觉得这将是关键时间表中的一部分。

评论

我认为所有状态都意味着回合,而不仅仅是回合?

@forest是的,我当时正在考虑从中间数据中选线。仅供参考,图5:github.com/bpdegnan/aes/blob/master/aes-sbox/documentation / ...他们使用了我的描述,因此我必须验证Verilog

#1 楼


如果您是攻击者,并且可以观看AES-128的一个比特进行10轮攻击,那么您将选择哪个比特来恢复最有用的信息?我认为这将是关键计划中的一部分。


实际上,我希望内部状态位之一的泄漏将为攻击者提供更多信息。

密钥调度是静态的,因此,如果泄漏10位,那么,密钥中最多仍具有118位不确定性;

但是,如果泄漏了内部状态,则可以在每回合之后查看(说)内部状态位之一。这样做的好处是我们可以查看许多已知的明文/密文的位;这会产生更多的信息。 1轮之后,内部位是明文和33个密钥位的函数;通过查看许多纯文本,我们可以获得足够的信息来推断这33个关键位。

评论


$ \ begingroup $
我可能需要进一步研究。这是一条非常小的电路,老实说,他们本可以将其外包,这是一种利用,但我认为不是。
$ \ endgroup $
–b degnan
18/12/15在23:35

$ \ begingroup $
这是一个很好的答案,但是并不能真正解释这种攻击如何起作用。
$ \ endgroup $
–森林
18/12/16在4:30