SSL/TLS协议详解:密钥生成与SESSION管理
需积分: 48 178 浏览量
更新于2024-08-09
收藏 2.4MB PDF 举报
"深入理解typescript的SSL/TLS协议以及OpenSSL编程实践"
在SSL/TLS协议中,密钥管理是保障通信安全的关键环节。本文将详细探讨SSL中的密钥信息,包括预主密钥、主密钥、对称密钥和MAC密钥的生成过程,以及SESSION信息的管理。
1. 预主密钥(Pre-Master Secret)
预主密钥是主密钥的生成基础,由客户端生成。在SSLv3中,这个过程发生在`ssl3_send_client_key_exchange`函数中,客户端使用服务器的公钥对一个随机生成的预主密钥进行加密,然后发送给服务器。这确保了即使在网络中被截取,攻击者也无法解密预主密钥,因为缺乏私钥。
2. 主密钥(Master Secret)
主密钥由预主密钥、客户端随机数和服务器随机数共同计算得出,确保了客户端和服务端生成的主密钥相同。在不同的SSL/TLS版本中,生成主密钥的函数有所不同,例如在SSv3中使用`ssl3_generate_master_secret`,而在TLSv1中使用`tls1_generate_master_secret`。主密钥存储在SESSION数据结构中,用于后续对称密钥和MAC密钥的生成。
3. 对称密钥和MAC密钥
对称密钥(包括初始化向量IV)以及读写MAC密钥都是基于主密钥、客户端随机数和服务端随机数生成的。在SSLv3中,这些密钥的生成位于`ssl3_generate_key_block`函数中,而分配则在`ssl3_change_cipher_state`中进行。对称密钥用于加密和解密数据,MAC密钥用于生成消息认证码,以验证消息的完整性和来源。
4. SESSION
当客户端和服务端建立新的SESSION时,服务器会生成一个唯一的SESSION ID,并通过哈希表缓存SESSION信息,然后在Server Hello消息中发送给客户端。此ID在SSLv2中是16字节,而在SSLv3和TLSv1中扩展到32字节。客户端在请求SESSION重用时,会在Client Hello消息中携带此ID,允许服务器查找并恢复先前的会话状态,从而提高连接速度。
关于OpenSSL编程,赵春平在《江南计算技术研究所》中提到,他通过替换Globus中的openssl实现,深入理解了openssl的底层机制,包括对称算法和非对称算法。他强调了学习openssl过程中遇到的挑战,以及编写书籍来记录和分享这些知识的重要性。书中详细介绍了如何使用openssl进行asn1模块的剥离,以及如何通过编写和调试程序来学习openssl的各种函数。
通过以上内容,我们可以了解到SSL/TLS协议中的密钥管理和OpenSSL编程的基本概念,这对于理解和实现安全网络通信至关重要。同时,赵春平的经历也提醒我们,持续学习和实践对于专业技能的提升是不可或缺的。
2018-03-29 上传
2017-11-02 上传
2019-08-30 上传
2017-10-06 上传
2018-03-13 上传
2021-03-30 上传
2021-05-26 上传
2021-03-21 上传
2021-03-19 上传
龚伟(William)
- 粉丝: 32
- 资源: 3911
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载