移动互联网的普及,越来越多(duō)的移动应用(yòng)陷入安(ān)全门,各种信息泄露、盗号风波层出不穷。越来越多(duō)的黑客盯上了移动应用(yòng),而SD 卡中(zhōng)以明文(wén)存放的个人信息,数据库中(zhōng)未加密存储的用(yòng)户名(míng)和密码,收集的分(fēn)析并以明文(wén)方式发到遠(yuǎn)程服務(wù)器,这些情况都使得黑客攻击更容易。
正确使用(yòng)Cryptography 工(gōng)具(jù),能(néng)保护我们的敏感数据,确保隐私和数据完整。另一方面,加密难用(yòng)且容易误用(yòng)。这里给大家推荐下目前移动应用(yòng)适用(yòng)的加密工(gōng)具(jù)。
Bouncy Castle
Legion of the Bouncy Castle是一个来自澳大利亚的公(gōng)益团體(tǐ),他(tā)们编写了Bouncy Castle这个广泛使用(yòng)的类库。该库既提供了一个轻量级的密码學(xué)API,也是一个Java密码扩展的提供者。安(ān)卓平台已经内置了一个精(jīng)简过的老版本 Bouncy Castle(同时為(wèi)了适配安(ān)卓平台也做了一些细小(xiǎo)的改动)。结果就是任何在应用(yòng)程序中(zhōng)构建和使用(yòng)最新(xīn)版本BouncyCastle类库的尝试都将导致类加载冲突。
Spongy Castle
SpongyCastle背后的动机是允许安(ān)卓开发者在应用(yòng)程序中(zhōng)使用(yòng)任意版本的BouncyCastle类库。SpongyCastle就是对最新(xīn)版本的BouncyCastle进行了简单地重新(xīn)打包;所有(yǒu)的org.bouncycastle.*包重命名(míng)為(wèi)了org.spongycastle.*,所有(yǒu)Java安(ān)全API提供者的名(míng)字由BC改為(wèi)了SC。
OpenSSL
OpenSSL是一个实现了SSL和TLS协议以及通用(yòng)密码库的开源工(gōng)具(jù)包。OpenSSL已经被移植到了很(hěn)多(duō)平台,包括安(ān)卓。做為(wèi)一个替代方案,你也可(kě)以从源码构建,然后绑定到应用(yòng)程序中(zhōng)。这些工(gōng)具(jù)包并没有(yǒu)实现任何奇特的加密功能(néng),也没有(yǒu)尝试替代任一上述的密码學(xué)库;相反它们基于这些类库构建,唯一的目的是使得使用(yòng)加密功能(néng)更简单更安(ān)全。
与通用(yòng)密码學(xué)库相反,这些工(gōng)具(jù)包通常只支持一部分(fēn)算法、模式、结构、参数。对于通用(yòng)加密工(gōng)具(jù)需要设定的部分(fēn),这些工(gōng)具(jù)包為(wèi)你提供了合理(lǐ)的默认值,以防你知道想要什么,但是不知道如何使用(yòng),或者只在乎最终有(yǒu)个安(ān)全的解决方案。让我们检查几个这类工(gōng)具(jù)包以便来更好的理(lǐ)解它们的运行规则。
Keyczar
Keyczar是一组开源工(gōng)具(jù)包,最初由两位谷歌安(ān)全团队成员开发,用(yòng)Java,Python和C++语言实现,并支持对称加密和费堆成加密两种鉴权方式。Keyczar提供安(ān)全的默认设定,包括算法,秘钥長(cháng)度和模式,秘钥循环和版本化,初始向量和授权码自动生成,支持國(guó)际化。该工(gōng)具(jù)包基于JCE构建,使用(yòng)了Spongy Castle的安(ān)全提供程序。
AeroGear Crypto
AeroGear Crypto是AeroGear提供的一个小(xiǎo)的Java库。它支持可(kě)认证的对称加密,椭圆曲線(xiàn)加密,基于密码的秘钥推导。它也提供了算法的显式设定。AeroGear Crypto在android平台依赖Spongy Castle,在其他(tā)平台上依赖Bouncy Castle。该库在iOS、Windows Phone和Cordova 上同样可(kě)用(yòng)。
Conceal
為(wèi)了能(néng)够快速并使用(yòng)很(hěn)少内存对SD卡上的大型文(wén)件实现加密和认证,脸谱开发出了Conceal。Conceal既可(kě)以进行认证,也可(kě)以进行加密,同时默认也提供了密钥管理(lǐ)功能(néng)。它使用(yòng)的是 OpenSSL,不过仅包含自己需要的那部分(fēn),因此其大小(xiǎo)仅為(wèi)85KB。Conceal站点上公(gōng)布的结果显示它优于Bouncy Castle。
下表对上面所介绍的加密库做了总结。上文(wén)介绍的所有(yǒu)的库可(kě)以让加密方面的新(xīn)手安(ān)全地进行加密,不过高级开发人员可(kě)以不使用(yòng)这些默认做法,可(kě)以按照自己的意愿指定所有(yǒu)的加密细节(就像他(tā)们在使用(yòng)其他(tā)加密库那样)。这里需要提出的是,新(xīn)手在加密这一安(ān)全环节,可(kě)以使用(yòng)移动应用(yòng)的加密服務(wù),比如爱加密、云安(ān)全等,可(kě)以有(yǒu)效且全面的保护移动应用(yòng)安(ān)全。
加密库 | 开发公(gōng)司 | 许可(kě)证 |
AeroGear Crypto | AeroGear | Apache 2.0 |
Conceal | BSD | |
Keyczar | —— | Apache 2.0 |
如果你是一个移动应用(yòng)开发者,你得花(huā)时间和精(jīng)力使你的应用(yòng)程序便于使用(yòng),功能(néng)丰富,抓人眼球,但是,你不要忘了改善你应用(yòng)的安(ān)全性。 如果你不懂怎么着手,或者担心做不对,那就从文(wén)中(zhōng)提到的工(gōng)具(jù)包中(zhōng)选择一个,以便能(néng)够开始。不管你决定选用(yòng)哪个加密工(gōng)具(jù)都好,都应避免自己实现加密算法和加密协议; 应该只使用(yòng)那些广泛应用(yòng)的,普遍认可(kě)的,经受考验的算法和协议。