安全领域的技术目的
但是归根结底,都是为了保障如下3个方面:
-
窃听风险(eavesdropping):第三方可以获知通信内容。
解决方案: 对信息进行加密和解密 -
篡改风险(tampering):第三方可以修改通信内容。
解决方案:使用数字摘要 对关键明文进行hash校验 -
冒充风险(pretending):第三方可以冒充他人身份参与通信。
解决方案:使用数字签名 1.专门请求发送公钥,2. 公钥打包成数字证书保管在第三方公信机构.
技术结构
相关概念
加密解密技术
- 对称加解密:
加密和解密使用的是同一个密钥,(最常见的对称加密算法是DES) - 非对称加解密:
加密和解密使用的是两个不同的密钥(最常用的非对称加密算法是RSA)
一个叫作公开密钥(publickey)另一个叫私有密钥(privatekey)
公钥相当于 锁头 专门用于 上锁 , 私钥相当于 钥匙 专门负责 开锁.
其实公钥和私钥并没有什么不同之处。只是公开密钥对外公开,任何人均可获取,而私有密钥则由自己保存
因此私钥也可以认为是个人身份的证明。
数字摘要(digest)
就是用Hash函数生成一段明文的hash 字符串。
“数字摘要“叫”数字指纹“可能会更贴切一些。
Hash函数 可以拾取明文的部分或者全部内容进行计算,返回结果为固定长度。
算法
摘要算法 :
包含有Hash算法何散列算法
常见的算法有: md5,sha1,sha224,sha256,sha384,sha512。
“对称密钥”的加密算法
主要有DES、TripleDES、RC2、RC4、RC5和Blowfish等。
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
“非对称密钥”的加密算法
主要有 : RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
“数字签名”(signature)
经过加密的数字摘要,就是人们所说的“数字签名”!一般用私钥,对摘要加密
数字签名的生成和验证过程 有3步骤:
H–铭文的Hash计算生成数字摘要
E–加密数字摘要
D–解密数字摘要
数字签名有两种功效:
- 能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
- 数字签名能确定消息的完整性。
数字证书认证机构
(英语:Certificate Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
数字证书(digital certificate)
也就是公开密钥认证(英语:Public key certificate),又称公开密钥证书、公钥证书、、数字认证、身份证书(identity certificate)、电子证书或安全证书,是用于 公开密钥基础建设的电子文件,用来证明公开密钥拥有者的 身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及 数字证书认证机构(发行者)对这份文件的 数字签名,以保证这个文件的整体内容 正确无误。
证书链
CA下发给网站的证书都是一个证书链,也就是一层一层的证书,浏览器需要用上级CA的公钥才能解密签名, 公钥来自于证书链该层的上级CA的证书.
证书链由多个证书一层一层组成的,从根证书开始,到下级CA,一层一层,最后一层就是网站证书除了最底层的网站证书的公钥是给用户加密报文外,其他层证书中的公钥均用于解密底层的证书指纹签名。最高层的根证书是自签名的,也就是自己颁发给自己,所以它的公钥不仅用来解密下层的签名,也用来给自己的签名解密。
安全套接层 ssl
SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层.
它是在上世纪90年代中期,由网景公司设计的.
是基于HTTP标准并对TCP传输数据时进行加.
用到了了上述所有技术,SSL建立通信的过程分为两个阶段:握手阶段和传输阶段。
- 在握手阶段使用的是非对称加密 , 例如:数字证书
- 在传输阶段使用的是对称加密, 因为非对称加密慢
安全传输层协议(TLS)
该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
TLS(传输层安全)是更为安全的升级版 SSL。
在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1
由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。
TLS记录协议
位于TLS握手协议的下面,在可靠的传输协议(如TCP/IP)上面。
私有――对称加密用以数据加密(DES 、RC4 等)。对称加密所产生的密钥对每个连接都是唯一的,且此密钥基于另一个协议(如握手协议)协商。记录协议也可以不加密使用。
可靠――信息传输包括使用密钥的 MAC 进行信息完整性检查。安全哈希功能( SHA、MD5 等)用于 MAC 计算。记录协议在没有 MAC 的情况下也能操作,但一般只能用于这种模式,即有另一个协议正在使用记录协议传输协商安全参数。
TLS 握手协议
提供的连接安全具有三个基本属性:
1.可以使用非对称的,或公共密钥的密码术来认证对等方的身份。该认证是可选的,但至少需要一个结点方。
2.共享加密密钥的协商是安全的。
ssl与tsl 区别
- TLS与SSL连接过程无任何差异,
- TLS对随机数算法也进行了增强
- SSL与TLS两者所使用的算法是不同的,SSL使用的是MAC哈希算法,TLS使用的是RFC-2104定义的HMAC算法,但是安全度是相同的!
- TLS与SSL的两个协议工作方式与SSL一样!
- TLS和SSL不能共用,因为在认证证书时TLS指定必须与TLS之间交换证书,因为TLS与SSL所使用的加密算法是不同的,所以不能把TLS与SSL一并使用!
- TLS增加了许多新的报警代码,比如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)
- SSL所使用的版本为3.0,版本号也为3.0.x(x代表未知数因为SSL还在更新),而TLS版本为1.0,但版本号却为SSL3.1.0!
HTTPS
HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证(确认客户端连接的目标主机是否是真实正确的主机)的网络协议。
如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。
HTTPS的主要缺点就是性能问题。造成HTTPS性能低于HTTP的原因有两个:
- 对数据进行加解密决定了它比HTTP慢。
- 另外一个重要原因的是HTTPS禁用了缓存。
HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一.
传输流程
加密明文流程
1 对称法加密明文
A> 用 密钥 加密 明文 --> 密文发送 给B -->B 接受密文 -->用密钥 解密后提取密文
缺点:
1_ C 偷取了密钥, 结果是C 可以看到明文
2 非对称法加密明文
A> 用 “B给A的公钥” 加密 明文 --> 密文发送 给B -->B 接受密文 -->用私钥 解密后提取密文
风险:
1_ C 获取到了 “B给A的公钥” ,并用该公钥加密明文, 给B发了一封密文, 假冒A发出的密文
2_ C 用锁头2替换 “B给A的锁头1” , 然后拦截A发出的密文 , 用钥匙2解密密文
3 为什么在传输阶段使用对称加密,而不用非对称加密理解:
1_ B> 传锁头1给 A > A生成随机数 (密码箱) > 用锁头1加密随机数 (密码箱)后发给B >B收到后, 用钥匙1解锁 ,取得密码箱> B用随机数(密码箱) 加密明文 传给 A >A 知道密码箱 密码,所以直接 解密 密文
2_ B> 传锁头1给 A > A生成一对 (锁头2 和钥匙2) > 用锁头1加密 (锁头2)后发给B >B收到后, 用钥匙1解锁 ,取得锁头2> B用锁头2 加密明文 传给 A >A 用 钥匙2 解密 密文
3_ 用 1_ 不用 2_ 因为 已经足够安全, A 没必要再生成非对称秘钥 那样速度慢很多
https ssl传输通信流程
1)证明客户端是有效合法的
2)证明服务器是有效合法的
3)传输阶段
4) ssl传输流程细节补充
SSL在握手时会先发送一段内容:
(1)客户端可以支持的SSL最高版本号
(2)生成32字节的随机数 用于 后续的对称式加密
(3)确定会话的会话ID
(4)客户端可以支持的密码套件列表 例如:
SSL_DHE_RSA_WITH_DES_CBC_SHA
(5)客户端可以支持的压缩算法列表
当服务器收到客户端发来的请求通信消息后会作出回应消息
回应消息如下
(1)一个SSL版本号。取客户端支持的最高版本号(向客户端请求客户端所支持的最高SSL版本号)和服务端支持的最高版本号中的较低者。(双方都能支持的SSL最高版本)
(2)生成主秘密的32字节的随机数。(客户端一个、服务端一个)
(3)会话ID
(4)从客户端的密码套件列表中选择的一个密码套件
(5)从客户端的压缩方法的列表中选择的压缩方法
附件
概念
概念
加密、数字摘要、数字证书、SSL、HTTPS及SSH免密登录***
https://blog.csdn.net/ZCF1002797280/article/details/51859452
Java Security:Java加密框架(JCA)简要说明
https://www.cnblogs.com/f1194361820/p/4262507.html
看图片 读故事:轻松理解数字签名和数字证书 ***
https://blog.csdn.net/plean/article/details/51024566
一文看懂https如何保证数据传输的安全性的 **
https://blog.csdn.net/m0_37907797/article/details/81283328
SSL与TLS的区别 **
https://blog.csdn.net/bjbz_cxy/article/details/77850182
Https 建立安全连接的过程(SSL原理)
https://blog.csdn.net/xiaopang_yan/article/details/78709574
https://blog.csdn.net/ustccw/article/details/76691248
HTTPS研究(2)—分解HTTPS连接建立过程
https://blog.csdn.net/sinat_31828101/article/details/50500596
https原理:证书传递、验证和数据加密、解密过程解析
https://blog.csdn.net/clh604/article/details/22179907