从https看认证和加密

HTTPS(Hyper Text Transfer Protocol over SSL)

为啥要有HTTPS

有人说我HTTP用的很好,为啥要HTPPS。还得搞服务器,还得申请证书的。是的,为啥呢?
大家都说过悄悄话吧,首先防止的要是旁边有人或者隔墙有耳。一般吐槽上司鄙视同事的话还好,但像古代谋反啥的可能要用到加密和认证技术了。认证是不让坏人听到,加密目的是听到也不知道我们说的啥。

认证

相必大家都看过古装剧,要谈大事的时候首先使个眼色,然后让所有人都退下。这就是认证了,不通过认证不告诉你。但网络上可不能像当面看附近有没有人,不过别急。相必大家也看过里面的圣旨吧,那上面的要盖玉玺的。这个玉玺印就是认证。告诉大家,这的确是皇上对你们说的。
可以看到,认证有两个作用。1.确认说话的人是谁。2.不是这个人不跟他说。

加密

上面说了旁边有人,那隔墙有耳呢。相信也看过很多谍战片吧,比如我说送衣服过来就是意思快来救我。
这就是暗语了,也就是今天要说的加密。更形象的是里面破解电报的密码本,就相当于秘钥。而不是说拿到密码本就行,还要一点时间来研究出来加密算法,一般很快。这种也就是对称加密。

SSL(Secure Sockets Layer 安全套接层)

很明显我们要说的是Https,从名字我们也知道最主要是SSL.因为https对于就相当于http不直接用socket进行tcp通信,而是在tcp上面封装一层实现认证和加密,使得通信安全。所以叫做Secure Sockets Layer。什么?你不知道socket是啥。那还不去百度!

SSL认证实现

从上面的例子我们很明显的看到,说话之前先要认证说话人身份。网上也就是玉玺印认证喽,大家发现一个问题没。我一个平头百姓怎么会认识玉玺印,怎么知道你的印是真的假的。ok,这就引出了我们的CA机构。

CA机构

因为平头百姓不具备鉴别能力,所以CA机构说,来来来,我帮你鉴别。当然鉴别费用是免不了的了。这里玉玺印就不贴切了,因为CA机构不光服务皇帝,所以从CA机构申请的证书,相当于它刻的古代画家都有的印章。所以CA机构先确认你确实是那个画家,才会给你刻印章。

数字证书

这里的印章就是所说的数字证书了,说白了就是证明你是谁。现在的操作系统装的时候就带了CA机构的数据证书,你给CA机构钱,它再给你子证书。这时候把子证书放在服务器,所有的浏览器就知道你不是坏人了。当然你说我厉害,自己认证行不行。当然可以了,就是下面的自定义证书。

自定义证书

自定义证书就是自己搞认证,也就是自己做CA。听起来很厉害的样子嘛,其实也简单。就是学CA把自己的根证书给所有客户端,使他们能认识你就行了。很明显,你要能控制客户端才行,浏览器你是没法跟他玩了。想跟它玩,你就得交钱给操作系统做真CA了。

认证客户端

大家发现了没,上面说的都是客户端对服务器的认证,服务器要怕客户端是坏人怎么办。毕竟黑客要么装服务端骗用户,要么装用户骗服务端。一般服务端没那么好骗,所以SSL中客户端认证是可选项。实现了也就是https的双向认证了,那么怎么实现呢,从上面很容易看到,认证是根证书对子证书的认证。要对客户端认证,只要把根证书放服务器,弄个子证书给客户端就行了。甚至你可以给每个客户端发不同的子证书,类似银行U盾就是给每个用户发的子证书。当然U盾用的应该不是https协议的X.509 证书,但原理是一样的。

SSL加密实现

好了,我们认证了对方是好人要说话了,但还要防止别人偷听啊,也就是加密。加密分为对称加密和非对称加密。

对称加密

这种很好理解,就是根据密码本也就是秘钥,找到密文(加密后的文字)和原文的对应关系。根据对应关系来进行加密和解密,至于像DES,AES具体怎么加密解密的,原理是啥。这里就不说了,因为我也不清楚啊。那么既然有对称加密为啥还要啥非对称的呢。一来呢,对称的不安全啊。一搞到秘钥,你说啥我都清楚了。二来,我是在网上啊,不可能十万八千里给你送秘钥吧。就算真跑来送秘钥,难道你访问个网站还要客服跑来送秘钥,然后填上秘钥访问啊。有人说qq传啊,问题qq就没人监听吗,就算腾讯加密做的好,问题是它怎么加密的?这问题当然难不住人类了,非对称加密出现了。

非对称加密

公钥与私钥
那么它是怎么解决的呢?现在问题不就在于一个密码本不安全吗,我现在两个,一个叫a钥,一个叫b钥,他们是对应的,也就是说a钥加密的得用b钥才能知道啥意思,同样b钥加密的得用a钥才能解密。我把a钥私藏着,把b钥告诉大家,所有人都可以用b钥加密跟我说话,但解密只能用我私藏的a钥,也就是所有人跟我说话只有我知道啥意思。这里的a钥就是私钥,b钥就是公钥,所以非对称加密也叫公钥加密。
互相通信
上面看到所有人跟我说话都只有我知道,可是我要跟其中一个人聊天啊,如何保证我说的话只有他知道呢。其实也简单,反过来就行,他也生成一个公钥发过来自己藏个私钥。
与数字证书关系
数字证书中包含了公钥、组织名称和有效期等一些信息,比如我们像CA申请证书时需要先生成公钥和私钥,然后把公钥和公司信息发给CA,CA审查通过后给你证书。

SSL简化版握手协议

1.客户端:我想和你秘密安全的的通话,我这里的对称加密算法有DES,AES,非对称算法有RSA,摘要算法有MD5和SHA。
2.服务器:我们用DES-RSA-SHA这对组合好了。这是我的证书,里面有我的信息和公钥,你拿去验证一下我的身份(把证 书发给A)。
3.客户端:我根据CA的根证书确认数字证书各项信息,没有问题。我生成了一份消息,你根据它可以得到对称加密的秘钥。消息用你证书里的公钥加密了,下面用里面的秘钥加密和我通信。
4.服务器:我用私钥解析出你的秘钥了,注意,“*******”这是我用你秘钥加密的的密文。给你。

可以看到,这里并没有像上面的**“互相通信”**说的两个人都有个公私钥对,这里只服务器有私钥。而后面的通信是用的对称加密。上面说的秘钥传输问题的解决,采用的是公钥加密传给服务器。双向SSL也是用的对称秘钥传输数据,也就是这里的非对称加密只是用于对称秘钥的传输。为啥不直接用非对称加密传输数据呢?因为非对称加密虽然安全,但他加密和解密太复杂。如果数据信息也用非对称加密,卡的要死。

具体版可以看阮一峰的这个,不过这里对于SSL的三个随机数解释不对,这里的随机数是为了防止重放攻击。前两个随机数是明文传输,不存在增加随机的能力。

完整性

除了秘密性,SSL握手协议所定义的共享的MAC密钥来生成报文的鉴别码,使用了hash算法,来保证没有出错或篡改。不在本文讨论之列。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值