RSA与SSL浅析

HTTPS = HTTP + SSL

HTTP协议是明文传输的,也就是说当数据包使用HTTP协议进行传输的时候,如果数据包中途被截下来了,那么里面的数据(明文)就会完全暴露。因此,如果数据包里面存放着用户的帐号和密码,就可以认为用户的帐号和密码已经泄漏了。
HTTPS协议则使用了SSL对数据进行加密,即使数据被拦截下来,如果没有解密的密钥,也无法得知用户的数据。

RSA

RSA是一种非对称加密的算法,所谓非对称加密算法,就是用于加密解密的密钥有两个,即公钥和私钥,用公钥加密过的数据,只有私钥才能解密,用私钥加密过的数据,只有公钥才能解密。(对称加密算法就是说用于加密解密的只有一个密钥,密钥既能加密数据,又能解密数据)
公钥是可以公开的,别人知道也无所谓,私钥则要存储在安全的地方,不能泄漏。

考虑一下在客户端与服务器之间RSA的应用场景。

  • 客户端向服务器发送数据
    • 因为服务器的公钥是公开的,所以客户端很容易就能获取得到服务器的公钥。客户端利用服务器的公钥加密数据,这些数据只有存储在服务器的私钥才能解密。
  • 服务器向客户端发送数据
    • 服务器在向客户端发送数据的时候,除了用私钥加密以外,还要生成一个数字签名。
    • 什么是数字签名?服务器会使用hash函数对向客户端发送的数据生成一个摘要(digest),然后用服务器的私钥加密这一个digest,得到的就是数字签名了。
    • 当客户端拿到服务器发送的数据后,对数据使用相同的hash函数加密一遍,和用公钥解密的digest进行对比,如果核对一致则说明中途传输的数据没有被篡改。
  • 考虑第三种情况,如何确保你拿到的服务器公钥确实是正确的服务器的公钥呢? 即有人将其他的服务器的公钥给了客户端,使客户端误以为自己在跟正确的服务器进行交互。(攻击者可以在代理服务器层拦截客户端的请求,再重定向到自己的服务器)
    • 这时候我们需要一个权威的第三方机构(CA)确认这一个公钥确实是真实的服务器的公钥,服务器将自己的公钥和一些私人信息发给CA,CA用自己的私钥将这些数据加密之后就是数字证书(SSL证书)。
    • 当服务
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值