Network - SSL/TLS的基本概念
对称加密与非对称加密
公钥(公共密钥)----- 用来加密和验证签名,是给大家用的,在通信双方之间公开传递,在公用储备库中发布,也可通过电子邮件发布,或者通过网站提供下载等。私钥(私有密钥)----- 保密的,仅为自己所知,用来进行解密和签名;
密钥协商的形象化比喻
假设A与B通信,A是SSL客户端,B是SSL服务器端,加密后的消息放在方括号[]里,以突出明文消息的区别。双方的处理动作的说明用圆括号()括起。
A:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。
B:我们用DES-RSA-SHA这对组合好了。这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份
(把证书发给A)。
目前没有别的可说的了。
A:(查看证书上B的名字是否无误,并通过手头早已有的CA的证书验证了B的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了B的公钥的真实性)
(产生一份秘密消息,这份秘密消息处理后将用作加密密钥,加密初始化向量(IV)和hmac的密钥。将这份秘密消息-协议中称为per_master_secret-用B的公钥加密,封装成称作ClientKeyExchange的消息。由于用了B的公钥,保证了第三方无法窃听)
我生成了一份秘密消息,并用你的公钥加密了,给你(把ClientKeyExchange发给B)注意,下面我就要用加密的办法给你发消息了!
(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥)
[我说完了]
B:(用自己的私钥将ClientKeyExchange中的秘密消息解密出来,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了)
注意,我也要开始用加密的办法给你发消息了!
[我说完了]
A: [我的秘密是...]
B: [其它人不会听到的...]
参考信息
SSL/TLS协议运行机制的概述
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.htmlSSL/TLS原理详解
http://segmentfault.com/a/1190000002554673
OpenSSL 与 SSL 数字证书概念贴
http://segmentfault.com/a/1190000002568019
Linux的加密认证功能以及openssl详解
http://lanlian.blog.51cto.com/6790106/1281720
数据包分析
密码套件cipherSuite TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384“TLS” 自然是指TLS协议。“ECDHE” 是说使用带有短暂性密钥的椭圆曲线Diffie-Hellman密钥交换(也就是说要为每个会话创建新密钥并且事后也不会记下来)。“RSA”表明用RSA 非对称加密保护TLS握手的安全。“AES_128_GCM” 是说在密码块链接模式中用带有256位密钥的AES 非对称加密保护真正的数据交换。 “GCM”(伽罗瓦/计数器模式)。“SHA384” 表明用 SHA384位 安全哈希算法
SSL Tools
https://www.trustasia.com/tools/
http://web.chacuo.net/netsslcsr
协议概述
缩写 | 名称 | 默认端口 | 安全策略 | 描述 |
HTTP | Hyper Text Transfer Protocol(超文本传输协议) | TCP80 | HTTP 协议是明文的,传输内容会被嗅探和篡改。 | 客户端浏览器或其他程序与Web服务器之间的应用层通信协议 |
SSL/TLS | Secure Sockets Layer(安全套接层) Transport Layer Security(传输层安全) |
TCP443 | 1)认证用户和服务器,确保数据发送到正确的客户机和服务器;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。 |
SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议,在WEB上广泛应用。
IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security)。
从技术上讲,TLS1.0与SSL3.0的差别非常微小,例如SSL3.3对应TLS1.2,通常并列称呼。
SSL/TLS 可以强化一些常用应用层协议(比如:FTP、SMTP、POP、Telnet)的安全性。 SSL与TLS介于应用层和TCP层之间,在传输层对网络连接进行加密。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头,从而为网络通信及数据完整性提供安全支持。 |
HTTPS | HTTP over SSL | TCP443 | 实际上是在原有的 HTTP 数据外面加了一层 SSL 的封装。HTTP 协议原有的 GET、POST 之类的机制,基本上原封不动。 | 可以简单理解为“HTTP 协议”和“SSL/TLS 协议”的组合 |
Network - SSL/TLS的基本概念的更多相关文章
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...
- 聊聊HTTPS和SSL/TLS协议
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...
- 浅谈HTTPS和SSL/TLS协议的背景和基础
相关背景知识要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识.大致了解几个基础术语(HTTPS.SSL.TLS)的含义大致了解HTTP和TCP的关系(尤其是"短连接"和 ...
- 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
来自:编程随想 >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...
- 好程序员带你了解一下HTTPS和SSL/TLS协议的背景与基础
>> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其 ...
- 抓包分析SSL/TLS连接建立过程【总结】
1.前言 最近在倒腾SSL方面的项目,之前只是虽然对SSL了解过,但是不够深入,正好有机会,认真学习一下.开始了解SSL的是从https开始的,自从百度支持https以后,如今全站https的趋势越来 ...
- SSL/TLS 原理详解
本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...
- Android网络编程系列 一 JavaSecurity之JSSE(SSL/TLS)
摘要: Java Security在Java存在已久了而且它是一个非常重要且独立的版块,包含了很多的知识点,常见的有MD5,DigitalSignature等,而Android在Java Se ...
- [译]使用AES 256以达到SSL/TLS安全最大化
原文链接:https://luxsci.com/blog/256-bit-aes-encryption-for-ssl-and-tls-maximal-security.html 原文发表时间:201 ...
随机推荐
- a链接的onclick与js中的return false
在学习<javascript基础教程>第八版时,有一个小细节开始不是很明白,查了一些资料后,理了一下思路. 例子的html代码: <!DOCTYPE html> <htm ...
- 云笔记项目-AOP知识简单学习
在云笔记项目的过程中,需要检查各个业务层的执行快慢,如登录.注册.展示笔记本列表,展示笔记列表等,如果在每个业务层方法里都写一段代码用来检查时间并打印,不仅仅显得代码重复,而且当项目很大的时候,将大大 ...
- javaMail实现收发邮件(二)
JavaMail API常用类 JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.intern ...
- cdnbest如何在站点里开启强制缓存
在站点设置中如下图设置: 强制缓存有两种方式,一种是文件类型,一种是url方式
- 二十一、proxyDesign 代理模式
原理: 时序图: 代码清单: Printable public interface Printable { void setPrinterName(String name); String getPr ...
- Linux redhat 7 进入单用户模式
redhat 7 进入单用户模式修复系统故障 1.启动机器,grub界面选择第一个,按e 2.往下翻,找到Linux16 开头的那一行 3.将ro改为"rw init=/sysroot/b ...
- CentOS 特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
名称 说明 $0 脚本名称 $1-9 脚本执行时的参数1到参数9 $? 脚本的返回值 $# 脚本执行时,输入的参数的个数 $@ 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列 ...
- FortiGate日志中session clash
1.出现于:FortiGate v5.0和v5.2 2.出现原因 Session clash messages appear in the logs when a new session is cre ...
- 源码安装 odoo12 -- 问题记录
odoo12启动过程中遇到的问题,及解决办法:1.ImportError: No module named ‘win32service’pipenv install pypiwin32 2.Impor ...
- Linux module 添加到bashrc 和临时ifort编译器 以及python2和3的配置
第一步vim ~/.bashrc按键盘的i然后source /home/export/online1/bjpara/para/modules/scripts/cn-module.sh最后:x! bas ...