HTTPS接口加密和身份认证

来源:互联网 发布:程序员的输入法 编辑:程序博客网 时间:2024/05/22 17:07

1.为什么要用HTTPS代替HTTP

HTTPS和HTTP的区别
1)https协议需要到CA申请证书,一般免费证书很少,需要交费
2)http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议
3)http使用80号端口,https使用443端口
4)http是一种无状态连接;HTTPS则是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

http为什么不安全
http协议没有任何的加密以及身份验证的机制,非常容易遭遇窃听、劫持、篡改,因此会造成个人隐私泄露,恶意的流量劫持等严重的安全问题

https如何保证安全
HTTPS是以安全为目标的HTTP通道,是HTTP的安全版。即HTTP下加入SSL层(传输层和应用层之间),用于安全的HTTP数据传输。

HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(HTTP和TCP之间)。这个系统最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面

2.HTTPS的加密原理

了解加密

对称加密
对称加密指加密和解密使用相同秘钥的加密算法。要求发送发和接收方在安全通信之前,商定一个秘钥。对称算法的安全性依赖于秘钥,泄漏秘钥意味着任何人都可以解密传输的消息。
优点:算法公开 计算量小 加密速度快 加密效率高
缺点:交易双方都使用同样秘钥,安全性得不到保证;每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担;虽能提供加密传输,但不能验证双方身份

非对称加密
这种加密生成公钥和私钥。公钥加密的数据要用私钥解密,私钥加密的数据要用公钥解密。这种算法很多,常用的是RSA
优点:相比于对称加密更加安全
缺点:CPU计算资源消耗非常大,一次完全TLS握手,秘钥交换使得非对称解密计算量占整个握手过程的90%以上。而对称加密的计算量只是非对称加密的0.1%,如果应用层数据也使用非对称解密,性能开销太大;对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是2048位,意味着待加密内容不能超过256个字节

身份认证(CA数字证书)
https协议中身份认证的部分是由数字证书来完成的,证书由公钥、证书主题、数字签名等内容组成,在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端对证书进行验证,并获取用于秘钥交换的非对称秘钥

数字证书作用:

  • 身份授权 确保浏览器访问的网站是经过CA验证的可信任网站
  • 分发公钥 每个数字证书都包含了注册者生成的公钥。在SSL握手时通过certificate消息传输给客户端

数字证书验证:
申请者拿到CA的证书并部署在网站服务器端,浏览器发起握手接收到证书后,如何确认这个证书就是CA签发的呢?怎样避免第三方伪造这个证书?答案就是数字签名(digital signature)。数字签名是证书的防伪标签,目前使用最广泛的是SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)数字签名

加密的详细过程

首先服务器端用非对称加密(RSA)产生公钥和私钥。然后把公钥交给数字证书,并进行包装发给客户端,当公钥到达客户端之后,客户端的TLS首先验证公钥是否有效(颁发机构,公钥有效期,CA数字签名),若存在问题则弹出警告框,提示证书存在问题。若证书没有问题,则客户端会用对称加密产生一个秘钥并用公钥加密后发送给服务器,这个秘钥就是以后用来通信的秘钥。这样服务器端收到公钥加密的秘钥就用自己的私钥解开公钥从而获得秘钥。这样客户端和服务器都获得了秘钥,信息交流相对是安全的

可将公钥私钥理解为锁、钥匙,只有服务器有这把锁的钥匙;将锁发送给客户端,客户端收到后生成秘钥,用锁锁住,再发送给服务器,服务器用钥匙打开锁获得秘钥。从而双方可以进行安全的通信

这里写图片描述

使用非对称加密仅仅获得一个用对称加密生成的秘钥

这是因为非对称加密的密码对(公钥私钥)生成和加密的消耗时间比较长,为了节省双方的计算时间,通常只用它来交换密钥,而非直接用来传输数据(具体可看上文非对称加密的缺点)

…未完待续

原创粉丝点击