https什么是保密通讯


我自己也在上信息安全这们课,主要是之前一直不清楚保密通讯的过程和细节,今天仔细研读了各种大牛的精彩博文后,自己按照自己的理解整理了一下,话题是 https怎么做到安全的?

参考文章: http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html(软一峰,数字签名是什么)

                     http://baike.baidu.com/view/14121.htm?fr=aladdin  (百度百科https)                 

我们接下来分析所用到的几个角色在互联网中都能大致找到对应的角色:
                    A 对应的是客户端

                    B 对应的是服务端

                    C 对应的是恶意的第三方

                    D 对应的是 证书授权中心(CA)


首先,要明确一点,要保证通讯双方之间的保密通讯:
    比如A 和B 通讯,那么 A 发给B的信息,必须要B的公钥加密,B对于A发给他的信息,必须要用自己的私钥加密,
同理, 如果 B 发给A的信息,必须要用A的公钥加密,A对于B发给他的信息,必须要用自己的私钥加密,
那么也就是说,如果B 有A 的公钥, A有B 的公钥,那么我们就可以保证通讯是保密的, 因为任何一方发送的信息都要通过另一方
的私钥来解密,就算别人盗取了他们的公钥也没用。

那么 A 和 B 怎么获取对方的公钥呢?

    如果A 是服务端, B 是客户端, 那么我们需要在双方建立安全通讯是, B 有 A 的公钥, 然后用A 的公钥,把自己的公钥加密,发给B
就行了。
但是,A 如何获取B 的公钥呢?
    一般的想法可能就是,B将自己的公钥通过不安全的协议发给A(这里要明确一点,所谓的安全通讯的前提是双方都已经有了相互的公钥,在这之前所有的通讯都是不安全的)。但是,我们要知道,在不安全的情况下,任何数据都有可能被窃取。我们假想下下面这个场景:
    B 将自己的公钥发给A, 但是C 在中途窃取了B的公钥,然后自己的公钥发给了A,A还是认为这个公钥是B的,其实不是了,A将自己的公钥用C的公钥加密,发给B,但是又被C截获了,然后C用B的公钥加密的自己的公钥,发给B,这样B获取的C的公钥,但是B认为这是A的公钥,以后如果AB之间建立通讯,如果C能截获,那么信息都会流过C,B 发给A的信息,但却是用C的公钥加密的,C肯定能解密啊, A发送到B的信息,却是用C的公钥加密的,这样的话,被C截获后,,肯定也能解密啊,这样,所谓的安全荡然无存在
    我们刚刚假想的情景出现的情况是源于:B通过不安全的协议直接发送自己的公钥给A 的假设下,如果这一步我们也能保证安全,那么我们就可以做到整个过程安全了,不是吗? 妈蛋,要你说啊,重点是怎么做到呢?

好了,现在是时候引出数字签名了:
    我们的一切问题就是源于我们担心A 接受到所谓服务端B的公钥并不是真正B的公钥,那么有没有办法来最大可能地保证这确实就是B的公钥呢? 我们如果有个你信任的人D,来给这个所谓的B的公钥做担保,说,这就是B的公钥,那么是不是就行了(前提是你要百分之百信任D这个人),如果我们信任D, 那么B要让A相信,他要找到D,说,你给我证明下我的身份是真的,那么D 就会用自己的私钥给B的公钥加密,作用一张证书,如果B要发送自己的公钥给A,直接发送这张证书, 如果我们有D的公钥的话,就可以解密这张证书并且确认是不是由D颁发的,如果是的话,我们就可以信任解密后的那把公钥不会存在安全问题,就是B的公钥。
    
咦,不对啊,你哪里来的D的公钥啊,你不也是需要获取D的公钥吗? 这样的思路下,你会发自肺腑的来一句:你他妈都我呢?
    恩,接下来就是浏览器了的作用了(我们一般来说是通过浏览器上网的是吧),浏览器会有这些可信任机构,就是有一个D的列表(就是说D不唯一,可能是任何一个权威的认证机构),我们会有这些受信任机构的公钥,如果A 收到来自B的所谓的证书,A能够通过遍历这个列表找到某一项能够解密,那么就行了,我们就相信他了。如果找不到的话,哈哈,那浏览器会弹出一个用户体验很差的警告框,跟你说你现在正在跟你说你可能会被欺骗。

ps一下:不同浏览器的D的列表不一定相同,所以,你可能在火狐上能正常使用12306,在谷歌可能就会被警告了.

     其实到这里,我们还可以继续纠结: 那我们怎么信任浏览器呢? 浏览器是怎么获得这受 信任的机构列表呢?再说了不同浏览器的D的列表有不一样,我安装这个浏览器时如果也别欺骗了呢? 这样的深究其实没有多大意义,因为网络的存在就意味着信息泄漏的风险会一直相随,起码在量子计算机时代到来之前吧。

   本人计算机科班,但是起步比较晚,希望通过分享来学习更多的知识,大家请尽情吐槽与纠错,谢谢。







 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值