Poly1305-AES:最先进的消息认证代码
D.J.伯恩斯坦
身份验证器和签名
最先进的消息-身份验证代码
为什么Poly1305-AES比其他消息认证代码更好?
如何在自己的软件中使用Poly1305-AES?
Poly1305-AES是如何实施的?
我在哪里可以了解更多关于Poly1305-AES的信息?
Poly1305-AES速度表
AES定时可变性一览
AES定时可变性图
Athlon的Poly1305-AES
奔腾Pro/II/III/M的Poly1305 AES
AIX下PowerPC的Poly1305-AES
MacOS X下PowerPC的Poly1305-AES
UltraSPARC的Poly1305-AES
带有IEEE浮点的通用计算机的Poly1305-AES
8051的Poly1305-AES
使用GMP和OpenSSL的Poly1305-AES
Poly1305-AES是一种最先进的密钥消息认证码适用于各种应用。Poly1305-AES计算16字节身份验证器任何长度的消息,使用16字节的nonce(唯一消息编号)和一个32字节的密钥。攻击者无法修改或伪造消息如果消息发送方与每条消息一起发送认证器消息接收者检查每个验证器。
Poly1305-AES讨论有一个邮件列表。要订阅,请发送一条空消息到poly1305-subscribe@list.cr.yp.to.
为什么Poly1305-AES比其他消息认证代码更好?
Poly1305 AES具有几个有用的功能:
- 如果AES是安全的,则保证安全性。有一个定理可以保证安全差距极小(对于16n字节的消息,每次伪造尝试次数为n/2^(102))即使是长期钥匙(2^64条消息)。攻击者破解Poly1305-AES的唯一方法是破解AES。
- 密码可替换性。如果AES出现任何问题,用户可以从Poly1305-AES切换到Poly1305-AnotherFunction,具有相同的安全保证。
- 速度非常快。我的Poly1305-AES软件只需要3843次Athlon循环,5361个奔腾III周期,5464奔腾4周期,4611个奔腾M周期,8464 PowerPC 7410周期,5905次PowerPC RS64 IV循环,5118次UltraSPARC II循环,或5601 UltraSPARC III循环验证1024字节消息上的验证器。Poly1305-AES提供一致的高速,不仅仅是一个受欢迎的CPU的高速。
- 每消息开销低。我的Poly1305-AES软件只需要1232奔腾4周期,1264 PowerPC 7410周期,或1077 UltraSPARC III循环验证64字节消息上的验证器。Poly1305-AES提供一致的高速,不仅仅是长消息的高速传输。大多数竞争功能都是为长消息设计的不要注意短包性能。
- 关键灵活性。Poly1305-AES可以在缓存中同时容纳数千个密钥,并且即使在密钥超出高速缓存时也保持快速。Poly1305-AES提供一致的高速,不仅仅是单关键基准测试的高速。几乎所有竞争功能都为每个键使用一个大表;随着键的数量增加,这些函数会丢失缓存并显著减慢速度。
- 并行性和增量。Poly1305-AES可以利用额外的硬件为了减少长消息的延迟,并且可以以低成本重新计算,只需对长消息进行少量修改。
- 没有智力优势的主张。我不知道任何与Poly1305-AES相关的专利或专利申请。
有保证的安全性、密码可替换性和并行性由标准多项式求值-Wegman-Carter-MAC框架提供。在这个框架内,hash127-AES以牺牲每个键的大表为代价实现了极高的速度。Poly1305 AES的最大优势在于关键的灵活性:极高的速度,无任何按键扩展。
其他标准MAC比Poly1305-AES慢,安全性差。明确地,HMAC-MD5速度较慢,没有可比的安全保证;CBC-MAC-AES的速度慢得多,安全保障也较弱。HMAC-MD5和CBC-MAC-AES在2^64条消息内都是可断的。我并不是说任何人都会进行这次袭击;我是说每个人都对CBC的标准安全级别感到满意应满足Poly1305-AES更高的安全级别。
如何在自己的软件中使用Poly1305-AES?
我的斋戒聚乙烯1305图书馆属于公共领域。您可以并且应该将其包含在您自己的程序中,而不是努力链接到共享库;编译后的代码在6到10 KB之间,具体取决于CPU。要开始使用,请下载并解压缩聚乙烯1305图书馆:
wget公司https://cr.yp.to/mac/poly1305aes-20050218.tar.gzgunzip<poly1305aes-20050218.tar.gz |焦油-xf-
编译库(确保为您的平台使用适当的编译器选项,例如-m64米用于UltraSPARC)了解其结构:cd poly1305aes-20050218env CC=“gcc-O2”制造
将库文件复制到项目中:cp`cat FILES.lib`您的项目/cat生成文件.lib>>您的项目/生成文件
对于任何将使用Poly1305-AES的C程序,修改程序以包含聚乙烯1305。小时;也修改您的生成文件将程序链接到聚乙烯1305。一并声明程序依赖于聚乙烯1305。一和聚1305aes。小时.在程序内部,生成32字节Poly1305-AES密钥,首先生成32个秘密随机字节来自加密安全来源:克朗[0],克朗[1], ...,克朗[31].然后打电话
poly1305aes灯(kr)
创建32字节Poly1305-AES密钥克朗[0],克朗[1], ...,克朗[31].稍后,发送消息米[0],米[1], ...,米[len-1]具有16字节的随机数编号[0],n[1], ...,编号[15](其中必须每条消息都不同!),呼叫
poly1305aes认证(a、kr、n、m、len)
计算16字节身份验证器a[0],答[1], ...,a[15].收到经过身份验证的消息后a[0],答[1], ...,a[15],编号[0],编号[1], ...,编号[15],米[0],米[1], ...,米[len-1],呼叫
poly1305aes _验证(a、kr、n、m、len)
验证验证器。接受消息,如果poly1305aes_验证返回非零;否则就把它扔掉。不要生成或接受超过GB的消息。如果您需要发送大量数据,无论如何,你无疑是在把数据分成小数据包;安全性要求每个数据包都有一个单独的身份验证器。
请确保设置谷歌网页确定您的程序并说明它是“由Poly1305-AES提供动力”
Poly1305 AES实现是如何工作的?
有兴趣编写您自己的Poly1305-AES实现吗?看看Poly1305 AES是否可以从AltiVec中受益?在没有C链接的语言中使用Poly1305-AES?检查Poly1305-AES测试载体?建造Poly1305-AES电路?将Poly1305-AES计算技术应用于其他功能?Poly1305-AES最简单的C实现是poly1305测试,它依赖于GMP和OpenSSL。我建议从顶部开始:阅读poly1305aes_test_verify。c(c)然后慢慢往下走。
其他语言的测试实现:
然后,您可以继续进行认真的实施:
如果你想达到更好的速度,确保你了解所有不同的情况由我的速度表.你可能想从我的散文上最佳案例基准和现实世界之间的差异。我设计了Poly1305-AES软件,以及底层的Poly1305AES函数,提供一致的高速在广泛的应用领域。在某些情况下,轻微的加速通常意味着在其他情况下,速度会大幅放缓;进行权衡的Poly1305-AES实现可能对某些应用程序有用,但它充其量只是一种替代品,而不是替代品。
我在哪里可以了解更多关于Poly1305-AES的信息?
共有四篇论文:
-
[聚1305]第18页。(PDF格式)D.J.伯恩斯坦。Poly1305-AES消息验证码。《Fast Software Encryption 2005会议录》即将出版。文件编号:0018d9551b5546d97c340e0dd8cb5750。网址:https://cr.yp.to/papers.html#poly1305。日期:2005.03.29。取代:(PDF格式)
(PS)
(DVI)2004.11.01.(PDF格式)
(PS)
(DVI)2005.01.13.
这篇论文给出了Poly1305-AES的完整定义,解释了Poly1305-AES的设计决策,讨论Poly1305-AES的安全性,并解释如何快速计算Poly1305-AES。
-
[安全知识]第17页。(PDF格式)
(PS)
(DVI)D.J.伯恩斯坦。Wegman-Carter-Shoup验证器的安全边界更强。Eurocrypt 2005年会议记录,即将出版。文件编号:2d603727f69542f30f7da2832240c1ad。网址:https://cr.yp.to/papers.html#securitywvcs。日期:2005.02.27。取代:(PDF格式)
(PS)
(DVI)2004.10.19.(PDF格式)
(PS)
(DVI)2004.10.27.
本文证明了这种身份验证器的安全性最多(略多于)2^64条消息。Shoup之前的工作仅限于少量消息,通常低于2^50。
-
[排列]第10页。(PDF格式)
(PS)
(DVI)D.J.伯恩斯坦。更强大的排列安全边界。文件编号:2f843f5d86111da8df8a14 ef9ae1a3fb。网址:https://cr.yp.to/papers.html排列。日期:2005.03.23。
本文给出了相同安全界的一个新证明。新证据将以前的证据纳入(1) 通常的韦格曼·卡特安全边界(2)替换均匀随机函数的一般方法具有均匀随机排列。以前的技术版本仅限于少得多的消息。
-
[缓存计时]第37页。(PDF格式)
(PS)D.J.伯恩斯坦。AES上的缓存攻击。文件编号:cd9faae9bd5308c440df50fc26a517b4。网址:https://cr.yp.to/papers.html#cachetiming。日期:2005.04.14。取代:(PDF格式)
(PS)
(DVI)2004.11.11.取代:(PDF格式)
(PS)
(DVI)2004.11.21.
本文讨论AES软件中的定时泄漏。这是所有AES用户的问题,不仅仅是Poly1305-AES用户。
我还将就Poly1305-AES进行三次演讲:2005.02.15,强调消息认证码的结构;2005.02.21,强调最佳案例基准与现实世界之间的差异;2005.05,强调安全约束证明。