Android 开发中的SSL pinning
Posted xiangzhihong8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 开发中的SSL pinning相关的知识,希望对你有一定的参考价值。
一、SSL
在日常的安全渗透过程中,我们经常会遇到瓶颈无处下手,这时候如果攻击者从APP进行突破,往往会有很多惊喜。但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测、root检测、APK加固、代码混淆、代码反调试、反脱壳、签名校验等等对抗机制。而测试人员对APP进行渗透的首步操作通常就是上burp或者Charles这类抓包工具进行抓包,查看请求记录里的域名及链接地址是否可以进一步利用。
我们都知道http协议传输的是明文信息,是可以直接捕获的,从而造成了数据泄露。为了防止中间人的拦截,出现了HTTPS加密机制。在HTTPS中,使用了证书+数字签名解决了抓包的问题,这里用到了两个概念:数字签名和数字证书。
- 数字签名:是发送方的明文经历了两次加密得到的两个东西组成,一个是hash ,一个是经过私钥加密。
- 数字证书:其实就是明文+数字签名。但是数字证书中的内容远不止这俩,还包括了权威机构的信息,服务器的域名,最重要的是有签名的计算方法,还有就是证书中还包括公钥,公钥用于发放给请求证书的客户端。
SSL(安全套接字层)又被称为TLS(数据层安全协议),是一种为网络通信提供数据完整性的一种安全协议。它位于TCP/IP协议与各种应用协议之间。SSL协议主要分为两个部分:Handshake Protocol和Record Protocol。
Handshake protocol是用来协商加密通信数据的密钥,Record Protocol定义传输内容的格式。事实上,HTTPS就是使用SSL/TLS协议进行加密传输,让客户端拿到服务器的公钥,然后客户端随机生
以上是关于Android 开发中的SSL pinning的主要内容,如果未能解决你的问题,请参考以下文章
NSURLConnection sendSynchronousRequest + SSL Pinning
iOS SSL Pinning 没有使用 AFNetworking 的证书?