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的主要内容,如果未能解决你的问题,请参考以下文章

ios 如何去掉 ssl pinning

Xcode SSL pinning 信任锚证书

NSURLConnection sendSynchronousRequest + SSL Pinning

iOS SSL Pinning 没有使用 AFNetworking 的证书?

SSL pinning - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书

如何在 SFSafariViewController 上实现 SSL Pinning?