谷歌推出铁线蕨 (Adiantum) 加密算法保护所有安卓设备
智能手机对我们来说已经成为日常生活不可或缺的东西,同时手机中可能也存储着我们个人大量的私密内容。
如果手机不慎丢失或者落入不法者手里那么可能带来安全风险,因此将智能手机进行安全加密也是有必要的。
现在不少中高端安卓设备已使用高强度的AES 算法提供存储加密, 但低端设备性能较弱不适合使用AES算法。
Chacha20-Poly1305算法:
在HTTPS加密领域中使用 Chacha20 算法可以解决硬件加密不可用的情况, 并且该算法的安全性也非常的好。
早在2014年谷歌就选择Chacha20 / Poly1305进行验证,目前上述算法已经用于HTTPS连接的TLS密码套件。
同时Chacha20-Poly1305算法也成为了 RFC7539 标准, 该算法极大地提高了缺乏AES硬件支持的设备速度。
Chacha20在存储领域的加密难题:
尽管Chacha20 算法非常优秀,但磁盘和文件加密领域依然存在调整,存储领域里数据被组织成扇区来存储。
扇区存储通常为4096 字节,当文件系统向设备请求读取或写入扇区时, 加密层会拦截并在明文密文间转换。
这意味着加密转换必须在4096字节的明文和4096字节的密文之间转换,而RFC7539要求密文必须大于明文。
因为随机数密码和消息完整性信息还需要额外占用极少的空间,虽然可以将其存储到其他扇区但会降低效率。
在使用AES 加密算法的情况下传统的磁盘加密解决方案是使用XTS或者CBC-ESSIV操作模式且长度是保留的。
安卓系统本身已经支持使用AES-128-CBC-ESSIV用于全盘加密,AES-256-XTS 算法用于基于文件的加密等。
但是在设备性能不足的情况下没有广泛的替代性方案可以完成在低端 ARM 处理器上完成快速加密解密操作。
这意味着用户在日常使用时可能遇到加载应用程序缓慢的情况,这也就是加密解密性能不足带来的技术问题。
铁线蕨加密算法( Adiantum ):
为解决这个安全问题谷歌开发和设计名为铁线蕨 Adiantum 加密算法在长度保留模式下使用ChaCha20算法。
这种基于以往算法进行的改进在ARM Cortex-A7上4096字节扇区的铁线蕨加解密每个字节仅有10.6 个周期。
铁线蕨算法与AES-256-XTS 算法进行对比其速度提高5倍,这意味着即便设备使用全盘加密基本不影响性能。
与XTS和CBC-ESSIV操作模式不同的是铁线蕨算法使用真正的宽块模式,明文任意位置改变都不能改变密文。
同理密文任意位置改变也不能改变明文,这个工作原理主要使用Poly1305算法的键控散列和NH函数完成的。
关于铁线蕨算法:
铁线蕨算法的主要目的在于平等的为所有安卓设备提供加密服务,而不是只有中高端设备才能享受加密服务。
铁线蕨的维多利亚花语代表着真诚和自由裁量权,谷歌认为用铁线蕨这个名称来描述这个加密算法非常合适。
当然尽管铁线蕨算法还是新的算法,但谷歌表示该公司对于该算法的安全性抱有很高的信心、也足够的安全。
谷歌公司的研究人员发布的多篇论文已经证实铁线蕨算法的安全性,有兴趣的研究者可以点击这里查看算法。