SSL Pinning原理
SSL(Secure Sockets Layer)Pinning是一种加强TLS(Transport Layer Security)信任的安全方法,它能有效防止中间人攻击。
中间人攻击是网络中一种比较常见的攻击。攻击者会伪造一个HTTPS站点,使用户认为自己正在与目标站点通信,但实际上,用户和攻击者建立了HTTPS连接。当用户输入数据时,攻击者会将用户的数据拦截并查看或篡改,然后再转发给目标站点。而目标站点也会将数据返回攻击者,最终似乎用户与目标站点完成了互动。
为了避免这种攻击,SSL Pinning的思路是,不仅要验证证书的有效性,还要检查证书提供的信息是否与预期一致。该方法需要客户端事先预置一份公钥或证书,然后使用该证书来验证服务器证书中的公钥。
下面,我们来详细了解一下SSL Pinning的原理:
一、证书锁定
SSL Pinning最核心的思路是证书锁定。在TLS层下,应用程序会针对所有证书实施校验,而证书则包含了公钥。应用程序会把证书保存在系统级的证书信任存储库中,这通常被称作“根证书”。
如果某个应用受到攻击时,攻击者可以使用伪造的根证书来创建虚假证书,那么这就会破坏整个TLS机制。为了避免这种情况,SSL Pinning会要求具有某些预置安全承诺的证书不得再次替换。
在移动应用中使用SSL Pinning的好处在于,移动应用使用的网络连接可以通过停用证书锁定,而对于Web应用,则不容易这样做,因为Web浏览器的分发渠道非常广泛。
二、公钥固定
如果你想让SSL Pinning发挥更加积极的作用,该做法就是通过固定特定公钥来定义“信任”,而不是钦定它们为 “根证书”中期望的信任级别。
当应用程序要连接服务器时,它使用装配系统中的证书来执行TLS握手。此时,应用程序会比较它收到的证书与预装的预期版本是否匹配。在大部分情况下,除非证书发生某种意外情况,否则应用程序将不会自动接受新证书。
如果你这样做,可以通过强制应用程序自己保存公钥或特定证书来强制其运行到某个比较新的证书版本。当我们固定公钥时,我们其实是在关注一个特定的密钥,而不是整个TLS信任链。
三、SSL Pinning都有哪些作用?
SSL Pinning带来了以下好处:
1.提高数据的保护性。
2.增强对证书的信任。
3.减少与交换服务器握手连带的不必要数据传输。
4.遵循更好的数据传输标准。
5.降低服务器压力。
四、总结
SSL Pinning是将加密协议和证书信任结合起来,形成的一种可靠的加密协议,可以有效地保护用户数据和信息的安全。这种技术不仅让密码通信更加安全,还可以加速通信和保护开发者的权利。
扫码咨询 领取资料