2013-02-26 80 views
5

我想在CTR模式下使用nVidia CUDA实现AES-256。我已经成功编写了用于密钥扩展的CPU代码,现在我需要实现实际的AES-256算法。根据维基百科,我看到的一些代码,特别是this PDF(第9页),AES轮可以实现为一系列表查找。我的问题是如何生成这些表格?我知道我需要4 KB来存储这些表,这不是问题。我花了一整天的时间试图找到这些表没有成功。 PDF我发布了提到查询表T0,T1,T2和T3的链接,但我不知道这些是什么。它还提到了四键,五键,六键和七键,但我也不明白这些索引指的是什么。生成AES(AES-256)查找表

最接近我来搞清楚如何生成这些查找表是从this project。代码里面有写着留言:(?它是一个矩阵乘法或别的东西)

Te0[x] = S [x].[02, 01, 01, 03]; 
Te1[x] = S [x].[03, 02, 01, 01]; 
Te2[x] = S [x].[01, 03, 02, 01]; 
Te3[x] = S [x].[01, 01, 03, 02]; 

不过,我不能完全肯定我知道那是什么符号表示。我唯一认识到的是混合列部分常量矩阵,以及S盒矩阵。

[编辑]现在有人指出 - 查找实现如何实际上更慢?在这里实施没有查找表的AES是明智的吗?

+0

我想如果你看起来很辛苦,那实际上只有S-box才能用查表来实现。 – trumpetlicks 2013-02-26 16:53:56

+0

你确定吗?我打开了前面提到的实现,它完全依赖于查找表。甚至有一个项目仅对所有操作使用**查找表。我并不需要这些,我需要每个操作一个查找表。这绝对有可能,我只需要找出如何。 – user2007674 2013-02-26 17:02:19

+1

你意识到你所说的是一个2 ^(256 + 128 + 128)* 128位大的表。密钥为256,数据为128,CTR为128。这是完整的输入到输出查询(这是什么使AES难以逆转)。虽然目前我还没有读过你的参考文档,但它可以依靠100%的查找,并且只能查找SBOX。 SBox代表Substitution,根据定义它将成为查询表。 – trumpetlicks 2013-02-26 17:26:34

回答

2

T表是对矩阵形式的AES轮变换的直接描述。要构建它们,请参阅原始Rijndael NIST proposal,第5.2.1节。

+0

非常有用的链接到源参考! – Anders 2017-05-19 16:08:05