Android 数据加密及安全网络通信杂谈(一)

Android 数据加密及安全网络通信杂谈
前言:本人多年从事软件开发,发现大多数程序员(其中包括不少是资深的)、CTO、PM们对信息安全的了解几乎为零!很多时候,项目负责人在不得不面对信息安全需求时,随意指派某个程序员(通常还是入行时间最短、技术经验最少的那位)负责与信息安全有关的代码。
另外,即使是信息安全行业的专业公司,技术队伍也是良莠不齐,对信息安全的综合认识水平。。。。总的来说,在下表示不~敢~恭~维~。
随着移动设备功能的日益丰富及使用普及程度的飙升,很多软件产品从方案设计之初到上线发布都暴露出对信息安全认识不足或数字安全技术应用不当的情况,千疮百孔状况频频是普遍现象。
数据加密及安全网络通信是信息安全领域中技术含量最高的领域,尤其是其中的公共密钥基础设施(PKI)规范,内容繁杂晦涩,将其恰当运用于软/硬件产品并非易事,往往会出现产品使用极不方便而漏洞百出被轻易破解的尴尬局面。
作为移动/手持设备的两大操作系统之一的 Android,其版本的升级通常也伴随着其安全模块的变迁,其中API的变迁,大量底层细节的变更导致很多应用 App 难以适应多版本的要求。Android 的安全模块涵盖多个方面,内容较多,本文仅针对其中的加密(cryptographic)和安全网络通信(SSL)范畴说一说本人的一些看法。


1、Android 的 Java 安全框架,具体实现被称为 JCE 及 JSSE,Java 体系从面世至今已颇有年头了,其安全框架的内容一直保持得很稳定,相关书籍、文档很丰富,本文不打算讨论它,Android 选择了 Java 为主要开发语言,很自然也继承了 JCE 和 JSSE,但细看之下还是有些差异:
Service Provider:“原版”的 Java 版本中,Service Provider 多数是 Sun 和 IBM 的作品,而 Android 选用了3个开源项目的代码:Harmony、Bouncy Castle、OpenSSL。
Harmony:是一个比较复杂的 Java 项目,Android 只用了其中 Security、xnet 的一部分代码,其 Provider 仅提供 SSL/TLS 的支持,另外的部分代码用于 X.509 数字证书对象的解释等等。Harmony 的代码已多年没有更新了,所以 Android 的这部分代码也一直没有变动,4.0 之后,增加了一个“AndroidCAStore”还是挺实用的。
Bouncy Castle:是 Android 中功能最丰富的 Service Provider,没有之一(但不提供 SSL/TLS 的直接支持),而且 Android 版本的升级同时也采用当时最新的 Bouncy Castle 版本的代码。早期的 Android 版本沿用 Bouncy Castle 的包名前缀 org.bouncycastle.*,从 3.0 开始,包名前缀改为 com.android.org.bouncycastle.*,这样的改动不影响 JCE 的兼容性,却为应用软件开发者采用“原版”的 Bouncy Castle 提供了方便。
OpenSSL:是 C 语言编写的著名开源项目,Android 通过 JNI 将其封装为一个 “AndroidOpenSSL”,早期的版本仅用于对 WebView 提供 https 支持(而且是仅用于单向 SSL),后来逐渐丰富,到了 4.2,已支持大多数常用的加密算法,4.4之后则更为丰富,大有取代 B
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值