# 技术
# 分享
作者 / 橱柜扫地僧
在加密算法中,我们时常会看到一种新型的算法 ChaCha20 ,现在我们来看看它的特点和应用场景。
Salsa20 是一种流加密算法,由 Daniel J. Bernstein 提交到 eSTREAM。它创建在基于 add-rotate-xor(ARX) 操作的伪随机函数之上——32位模加、异或(XOR)和循环移位操作。Salsa20 映射一个 256 位密钥、一个 64 位 nonce 以及一个 64 位流位置到一个 512 位的输出(也存在一个128位密钥的版本)。这使 Salsa20 具有了不同寻常的优势,用户可以在恒定时间内寻求输出流中的任何位置。它可以在现代x86处理器中提供约每4–14次循环周期一字节的速度,并具有合理的硬件性能。它没有注册专利,并且 Bernstein 还撰写了几篇对常见架构优化的公有领域实现。Salsa20已被提交到 eSTREAM。一个相关的密码算法 ChaCha,具有类似的特点,但有不同的循环移位函数,已在 2008 年由 Bernstein 发布。
ChaCha20
Google 选择了带有 Bernstein 的 Poly1305 消息认证码的 ChaCha20 作为一个 OpenSSL 中 RC4 的替代品,用以完成互联网的安全通信。Google 最初实现了 https (TLS/SSL)流量在 Chrome 浏览器(Android手机版)与 Google 网站之间的通信。不久之后,Google 在 TLS 中采用它,ChaCha20 和 Poly1305 算法也以 [email protected] 成为 OpenSSH 中的一个新密码包。后来,通过编译时选项避免它依赖于 OpenSSL 也成为可能。
ChaCha20 也被用在 OpenBSD 和NetBSD 操作系统中的 arc4random 随机数生成器,替换已经脆弱的 RC4,在 DragonFly BSD 中内核的 CSPRNG 子程序中也是如此。ChaCha20 已经在 RFC 7539 中标准化。它在 IKE 和 IPsec 中的使用已在 RFC 7634 中标准化。在 RFC7905 中,Chacha20-Poly1305 已经被加入 TLS 扩展标准。
ChaCha20-Poly1305 优势
Google 推出新的加密套件并在所有移动端的 Chrome 浏览器上优先使用原因:
-
ChaCha20-Poly1305 避开了现有发现的所有安全漏洞和攻击;
-
ChaCha20-Poly1305 针对移动端设备大量使用的ARM芯片做了优化,能够充分利用 ARM 向量指令,在移动设备上加解密速度更快、更省电;
-
更加节省带宽,Poly1305 的输出是 16 字节,而 HMAC-SHA1 是 20 字节,可以节省 16% 的 overhead 消耗。
使用
主流的加密方式有两种:aes-256-cfb 和 rc4-md5 前者加密强度高,但系统开销会更大一点,后者加密解密速度比前者快得多,但安全性不够,虽目前使用还算正常。加密强度高会增加一些额外的系统开销,现在的电脑手机之类的设备性能已经很强了,增加的这个负担在日常使用中基本很难察觉。只是在电脑或一些性能较强的手机平板之类设备上使用,我推荐使用 aes-256-cfb,但如果是用在路由器上,因为很多路由器 CPU 速度都在 500MHz 以下,性能并不强,使用 aes-256-cfb 多出来的那点性能开销在路由器上可能会构成一个影响性能的大问题,所以,之前使用在路由器上的加密方式一般都选 rc4-md5。
因为在路由器等性能不强的设备上使用 aes 加密方式会影响性能,使用 rc4-md5 又加密强度不够,所以人们创造了 Salsa20 这个加密算法,它比前辈 rc 加密算法速度更快而加密强度更高,后来,Google 又在这个算法的基础上开发了 chacha20 这个更快加密更强的算法。
基本上,它现在算是性能不强的设备使用最佳的算法了。
分享一个研究成果,请使用 Base64 解码:
c3NyOi8vZGpBdGRXc3hMbk4xWTJ4dmRXUXViR2wyWlRvME5ETTZZWFYwYUY5aFpYTXhNamhmYzJoaE1UcGhaWE10TWpVMkxXTm1ZanB3YkdGcGJqcFZNMVpxWWtjNU1WcEROWGRqYlRndlAyOWlabk53WVhKaGJUMVphbEV3VFVkSk1FeHRNWEJaTTBwMll6STViV1JETldwaU1qQW1jSEp2ZEc5d1lYSmhiVDFPUkhCNlpGZE9jMkl6Vm10TWJrSjVZbmNtY21WdFlYSnJjejAyU1hWNE5WcDFPVWxQVXpod2RXRldjR2xDT0VsR1RqRlJNbmgyWkZkUmRXTklTblkxV1ZkT05reFROVFZaVjNNMU5YVkxOa2x4UXpVMFN6VkpUMkY2Y1U5WFIycFBiVU5uVDJsMmRDMWxaMmRXYkhaa1J6UW1aM0p2ZFhBOVZUTldSR0pIT1RGYVF6VjNZMjA0
点击底部「阅读原文」即可打开
Base64 在线解码工具!