今年Google I/O开发者大会上的主角无疑就是Android N了——虽说这款系统到现在都还没有正式定名,仅以“N”代称,但预计今年秋季我们就能看到Android N上线。本周,谷歌又宣布Android N将不会再采用Cryto Provider。
众所周知,Android系统在架构上,比较靠上层的位置,运行的是个类似Java虚拟机的东西。绝大部分应用都是跑在这个虚拟机上的。所以Android系统也使用Java加密体系架构(Java Crytography Architecture,以下简称JCA),开发人员也正是基于JCA,在代码中编写和管理加密操作。
JCA是Java平台的重要组成部分,可以与各种类型的算法协同工作,提供基本的加密框架,如证书、数字签名、消息摘要和密钥对产生器 。
所谓的JCA究竟是啥呢?简单地说, 如果Android应用开发者希望他开发的应用能够实现加密,也就需要用到JCA中的算法,具体是通过加载Provider类实现的 (Provider又是个啥呢?我们其实可以简单地将其理解为一个类,开发者需要从中选择所需的加密算法)
Android本身支持绝大部分JCA Provider,比如OpenSSL,BC,HarmonyJSSE,DRLCertFactory等等。
以前的Android系统中,这里我们提到的Crypto就是Provider之一。Cryto支持多种算法,比如SHA1PRNG,SHA1withDSA,DSA和SHA-1。如果你对加密算法稍有了解应该就知道,这些算法现如今已经比较弱了,显得不够安全。
Android软件工程师Sergio Giro表示:
“在Android N系统中,我们完全弃用了SHA1PRNG算法和Cryto Provider。”
实际上,可能很多开发者先前都会考虑采用SHA1PRNG算法:开发者可以借此进一步利用用户密码,将较小的密钥扩展为更大的加密密钥,这是加密密钥的进一步“衍生”。 但Giro表示:“SHA1PRNG算法不够安全。”因此,他仍旧建议开发人员,如果要“衍生”的话,还是可以考虑采用更强的算法,比如AES算法。
由于弃用Cryto Provider令很多应用需要重写,为了帮助这些开发者做应用更新,Android官方团队给出了一系列的建议,有需要的同学可以 点击这里 查看。
* 参考来源: Softpedia ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)