此前我一直对https/ssl如何保护数据不被监听有点疑问,因为服务器的证书是公开的,只能实行上行方向的数据加密,下行数据的加密我一直认为是浏览器会自动生成一个客户端的密钥对并将公钥发给服务器。今天仔细研究了https/ssl,发现其实并不像我想的那样,这里面既有非对称加密,又因为性能原因使用了对称加密。其原理大概是这样的:
客户端浏览器连接到https/ssl服务器,并发送ssl版本号等信息到服务器,协商此次连接使用的版本和参数
服务器根据客户端发来的协商数据和自身支持的特性返回客户端协商参数,并且将服务器的证书发送给客户端,服务器的证书里包括用于非对称加密的服务器的公钥
客户端收到服务器的证书,可以用于鉴别服务器身份,防止假冒的服务器。但最重要的用处是将一段由客户端浏览器随机生成的数据pre-master secret用服务器证书里的公钥进行加密,发给服务器。注意,因为这段加密的数据只由用服务器的私钥才能解密,所以pre-master secret不会被人监听到。
服务器收到加密后的pre-master secret数据后,用自己的私钥解密得到原始的pre-master secret,并使用一定算法得到对称加密的密钥master secret。
客户端也根据同样的算法得到master secret。
至此,客户端和服务器之间的上/下行数据传送使用对称加/解密,初始密钥为master secret。常用的对称加密算法有RC4,AES等。
经过这些步骤就可以保证https/ssl上下行数据不被监听并且加/解密速度也可以接受。
当我们设计自己的加密通信协议时完全可以照搬https/ssl这种方式,有时还可以简化掉证书的传递步骤。
另外https/ssl还支持客户端身份验证,这时就需要将客户端证书上传到服务器,但这个证书并不用来加密下行数据。
分享到:
相关推荐
这是一款二次元风格向的SSL证书自签工具源码,可随时随地签发SSL证书 运行环境: 你的 PHP 必须 >=5.6,且安装了 OpenSSL 扩展 所有文件都已本地化,大部分PHP默认开启OpenSSL 安装: 下载源码导入网站目录访问...
HTTPS(SSL)工作原理
ssl原理及应用 ssl原理及应用 ssl原理及应用 ssl原理及应用
SSL是Security Socket Layer的缩写,技术上称为安全套接字,可以简称为加密通讯协议。 当选择“SSL安全登录”后登录网站,用户名和密码会首先加密,然后通过SSL连接在 Internet 上传送,没有人能够读取或访问到您...
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
【解决漏洞-亲测好用】SSLTLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
SSL/TLS 原理介绍
Android SSL验证原理
SSL中间人攻击原理与防范,感兴趣的自己看
Windows Server 合规漏洞修复,修复Windows Server CVE-2016-2183 SSL/TLS协议信息泄露漏洞修复脚本,基于Windows PowerShell, 兼容Windows Server 2016/2019,防止Sweet32 生日攻击
本资源包含一个 openssl 工具安装包 Win32OpenSSL-1_1_0c.exe,一个 tomcat 进行配置 ssl 证书、完全 TLS v1.2、完全正向加密的 server.xml、startup.bat 配置文件。关于tomcat 进行配置 ssl 证书、完全 TLS v1.2、...
SSL在tomcat中的配置,网上有很多资料,但是都配置不成功,这个是我在一个项目配置总结的文档,很好,,绝对有用
ssl原理及应用实用.pdf
解决 SSL/TLS协议信息泄露漏洞(CVE-2016-2183) ps1 文件
本文档详细介绍了ssl的工作通信原理以及如果通过配置web容器建立ssl安全通信
https原理及tomcat配置https方法;SSL加密传输;请求路径https://...;客户端需安装证书...
CA加密网络安全HTTPSSSL安全传输协议SSL和TLS及WTLS的原理.docx