给初学者的 6 个 Android 加密工具

原创 2015年07月09日 08:54:17
 

越来越多的黑客盯上了移动应用,每天都会增加,因为移动应用中有黑客感兴趣的东西,如用户数据。硬编码(Hard-coded,注,固定写死,不能修改的)安全秘钥,SD 卡中以明文存放的个人信息,数据库中未加密存储的用户名和密码,收集的分析(analytics)并以明文方式发到远程服务器,这些情况都使得攻击更容易(得手)。

给初学者的 Android 加密工具

正确使用Cryptography 工具,能保护我们的敏感数据,确保隐私和数据完整。另一方面,加密难用且容易误用( cryptography is hard to use and easy to misuse)。 注意容易被破解的加密方式(broken cryptography) (如,使用不安全算法,或硬编码秘钥到二进制包),请查阅列表2014年,移动领域10大风险。因此,从中得到什么教训?不用加密不可取,不能正确加密同样不可取 (不提耗费的时间)。

为了能在安卓平台上开发出安全的应用,接下来我们将介绍如何能既简单又安全地进行加密。

首先,概括性地介绍一些常见的可集成到安卓应用中的加密库。加密库是包含诸如加密算法、填充方式和散列函数等工具的加密工具集合。

Bouncy Castle

充气城堡军团(Legion of the Bouncy Castle)是一个来自澳大利亚的慈善团体,他们编写了Bouncy Castle 这个广泛使用的类库。该库既提供了一个轻量级的密码学 API,也是一个 Java 密码扩展(JCE)的提供者。安卓平台已经内置了一个精简过的老版本 Bouncy Castle(同时为了适配安卓平台也做了一些细小的改动)。结果就是任何在应用程序中构建和使用最新版本 BouncyCastle 类库的尝试都将导致类加载冲突。

Spongy Castle

Spongy Castle 背后的动机是允许安卓开发者在应用程序中使用任意版本的 BouncyCastle 类库。SpongyCastle 就是对最新版本的 BouncyCastle 进行了简单地重新打包;所有的 org.bouncycastle.* 包重命名为了 org.spongycastle.*,所有 Java安全 API 提供者的名字由 BC 改为了 SC。

OpenSSL

OpenSSL 是一个实现了 SSL 和 TLS 协议以及通用密码库的开源工具包。OpenSSL 已经被移植到了很多平台,包括安卓。做为一个替代方案,你也可以从源码构建(使用安卓 NDK),然后绑定到应用程序中。

现在我们假设出于应用程序的目的,你想要加密一些数据。你会使用哪个加密算法,AES 还是 DES?你的秘钥多长,128 还是 256 比特?你会使用哪种加密模式,ECB 还是 CBC?如果你对所有这些问题都没有答案,也没有好的理由,那么你可能发现你正处在一个微妙的位置,虽然你拥有所有你想要的工具,但是你一点儿都不确定使用哪个、如何使用。

这正是傻瓜密码学工具包发挥作用的场景。这些工具包并没有实现任何奇特的加密功能,也没有尝试替代任一上述的密码学库;相反它们基于这些类库构建,唯一的目的是使得使用加密功能更简单更安全。

与通用密码学库相反,这些工具包通常只支持一部分算法、模式、结构、参数。对于通用加密工具需要设定的部分,这些工具包为你提供了合理的默认值,以防你知道想要什么,但是不知道如何使用,或者只在乎最终有个安全的解决方案。让我们检查几个这类工具包以便来更好的理解它们的运行规则。

Keyczar

Keyczar 是一组开源工具包,最初由两位 Google Security Team(谷歌安全团队)成员开发。 它用 Java,Python 和 C++ 语言实现。它支持对称加密和费堆成加密两种鉴权方式。Keyczar 提供安全的默认设定,包括算法,秘钥长度和模式,秘钥循环和版本化,初始向量(vector)和授权码自动生成,支持国际化。该工具包基于JCE构建,( here),使用了Spongy Castle的安全提供程序。

AeroGear Crypto

AeroGear Crypto 是 AeroGear 提供的一个小的 Java 库。 它支持可认证的对称加密,椭圆曲线加密,基于密码的秘钥推导。它也提供了算法的显式设定。AeroGear Crypto 在 android 平台依赖Spongy Castle,在其他平台上依赖 Bouncy Castle。该库在 iOS,Windows Phone 和 Cordova 上同样可用。

Conceal

为了能够快速并使用很少内存对SD卡上的大型文件实现加密和认证,脸谱开发出了 Conceal。Conceal既可以进行认证,也可以进行加密,同时默认也提供了密钥管理功能。它使用的是 OpenSSL,不过仅包含自己需要的那部分,因此其大小仅为 85KB。Conceal 站点上公布的结果显示它优于 Bouncy Castle。

下表对上面所介绍的加密库做了总结。请注意:上面介绍的所有的库可以让加密方面的新手安全地进行加密,不过高级开发人员可以不使用这些默认做法,可以按照自己的意愿指定所有的加密细节(就像他们在使用其他加密库那样)。

加密库 开发公司 许可证
AeroGear Crypto AeroGear Apache 2.0
Conceal Facebook BSD
Keyczar Apache 2.0

总结(To sum up)

如果你是一个移动应用开发者,你得花时间(精力)使你的应用程序便于使用,功能丰富,抓人眼球,但是,你不要忘了改善你应用的安全性。 如果你不懂怎么着手,或者担心做不对,那就从文中提到的工具包中选择一个,以便能够开始。不管你决定选用哪个加密工具都好,都应避免自己实现加密算法和加密协议; 应该只使用那些广泛应用的,普遍认可的,经受考验的算法和协议。

版权声明:本人博客,供大家分享学习,有需要的话,可以转载!

给初学者的 Android 加密工具

越来越多的黑客盯上了移动应用,每天都会增加,因为移动应用中有黑客感兴趣的东西,如用户数据。硬编码(Hard-coded,注,固定写死,不能修改的)安全秘钥,SD 卡中以明文存放的个人信息,数据库中未加...
  • michael_ouyang
  • michael_ouyang
  • 2016年03月06日 22:44
  • 371

给初学者的 Android 加密工具

越来越多的黑客盯上了移动应用, 每天都会增加,因为移动应用中有黑客感兴趣的东西,如 用户数据 。 硬编码( Hard-coded,注,固定写死,不能修改的)安全秘钥,SD 卡中以明文存放的个人信息,数...
  • a369414641
  • a369414641
  • 2015年07月15日 14:55
  • 293

Android RSA加密解密的 工具类的使用

RSA 比较特殊,我们首先要生成私钥和公钥,然后在加密的时候,使用私钥加密,在解密的时候使用公钥解密。 //RSA 的初始化,获得私钥和密钥 public void rsa...
  • Rodulf
  • Rodulf
  • 2016年03月22日 21:26
  • 2859

Android初级教程:对文件和字符串进行MD5加密工具类

转载请注明出处: 之前写过一篇博文,是针对字符串进行md5加密的。今天对其进行改进,加入针对某个文件,进行md5加密,并获取加密后的值。并把两个功能封装成了工具类,如果有需要这个算法的,可直接使用。...
  • qq_32059827
  • qq_32059827
  • 2016年08月13日 16:50
  • 2162

Android 中对称加密算法DES,DESede,AES的加密和解密 的工具类的使用

DES,DESede,AES 是 对称加密的算法的工具类的使用。 注意密码的长度使不同的,DES是8个字节的长度的密码,DESede是24个字节的长度的密码,AES 是 16个字节的密码 加密...
  • Rodulf
  • Rodulf
  • 2016年03月22日 21:02
  • 2234

适合C++初学者的几个开发工具

好多人开始学编程,总是找不到称手的开发工具,为此,遭受过同样境地的我为大家介绍几个常用软件,希望会对大家以后的编程起到事半功倍的作用。 C++初学者可以考虑使用Dev C++,界面简单易于上手。后续开...
  • qwm8777411
  • qwm8777411
  • 2013年05月16日 23:23
  • 1029

【Android工具类】DES加密时代的终结者——AES加密算法

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992    在前面的两篇文章中,我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了如何才...
  • bz419927089
  • bz419927089
  • 2014年11月15日 10:16
  • 8182

Android 初学者之不对称加密工具类RSAHelper

package com.asiainfo.atmobile.security; public interface SecurityInter { public String encrypt(St...
  • CSTO_SUN
  • CSTO_SUN
  • 2013年12月18日 16:09
  • 1821

Android初学者的疑惑与“死板”的Android初学之路

今天11点多的时候刷新了一下自己的博客,发现已经被CSDN授予了“博客专家”称号。作为一个自学的一年多的大二学生来讲,这对我真是莫大的鼓励,真是感谢CSDN!在此,也是分享一下自己的经历,希望能够给初...
  • Double2hao
  • Double2hao
  • 2016年06月12日 16:59
  • 3051

新手程序员编程必不可少的八大工具

对于程序员来说,编程是一个相当耗费时间和经历的过程,而在这个过程中,一个称手而高效的工具就显得非常重要。加上近期有不少小伙伴在问一些方方面面的工具,所以今天就总结了一些新手编程能用上的工具一一介绍给小...
  • EGEFCXzo3Ha1x4
  • EGEFCXzo3Ha1x4
  • 2018年01月05日 00:00
  • 912
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给初学者的 6 个 Android 加密工具
举报原因:
原因补充:

(最多只允许输入30个字)