HTTPS原理——SSL 与数字证书

第一章 为什么网络是不安全的

计算机世界是基于网络的,根据目前网络的结构和实现,数据包在世界各地的路由器之间游荡,任何人都可以获得你的发送的数据包,从而获得你发送的数据。局域网内就更方便了,只要你开个Sniffer在那里监听,别人QQ聊天的信息一览无余啊~为什呢?我来简单解释一下计算机网络是如何传输数据的。

现实生活中,如果你请快递帮你寄东西,一般情况下,快递会把东西送到目的地,而不是其他地方。路由器就像是快递,在Internet上负责送数据。但和真实的快递不同的是,路由器会把你要发送的信息广播给离目的地更近的路由器,可能是一个路由器,也可能是多个路由器(别问我为啥,我不想深入了,有兴趣自己查资料)。这样你的信息就变成多份的了。复制虚拟的信息不值钱那~现实生活中的快递可不能复制你要寄的东西。一般情况下,只有一份数据会被目的计算机接收到,其他的拷贝在网络上游荡一段时间以后就被抛弃了。但是,这给黑客们有了很多可乘之机。他们在网络上监听很多垃圾信息,过滤掉没用的,留下他们感兴趣的,然后就可以偷窥别人隐私了。

正是因为网络有这样的问题,人们就发明了很多加密通信的手段,来保证自己的通信的内容不会被泄露。SSL和数字证书就是用来干这个的。

第二章 信息安全的基本概念

在解释SSL和数字证书之前,我觉得有必要解释一下几个有关信息安全的基本概念。

第一节 安全的定义

如果说两个人之间的通信是安全的,那么如何定义这个安全呢?

  1. 保密性(Confidentiality)
    保密性应该很容易理解,就是只有你自己和你允许的人能看到相关的信息。这和物理文件的保密性是一样的。

  2. 完整性(Integrity)
    所谓完整性就是你的信息没有被破坏或者篡改过。举个例子比如网络聊天,保证对方收到的信息就是你发出的信息也是信息安全的一部分。

  3. 可获得性(Availability)
    可获得性是指你自己在需要的时候能够访问到信息或者保证对方能够收到你的信息。

通常,我们平时说的“安全”往往只包括第一点,保密性。其实后面两点也是很重要的,特别是在信息安全领域。如果没有完整性和可获得性,光保密又有什么用呢?回到我们的主题,SSL和数字证书主要关注的是前两点。至于可获得性就需要涉及到硬件,管理等等了。

第二节 认证与授权

现在的问题是,我们如何保证上面所定义的“安全”?通常,有以下两个方法:

  1. 认证(Authentication)
    认证是证明你就是那个你所声称的那个人。举个例子,你说你是张三,然后去机场登机,机场工作人员怎么知道你就是张三呢?你必须出示你的身份证或者护照,这样就可以证明你就是那个你所声称的张三。在信息安全领域也一样,比如你想去google查看zhlmmc的邮件,然后google会问你要zhlmmc的密码,因为只有zhlmmc知道zhlmmc帐户的密码,如果你能说出那个密码,那么你就是zhlmmc,google就会把zhlmmc的邮件返回给你。有些文章把这个过程称为Identification。

  2. 授权(Authorization)
    授权是指一个系统里面有很多用户,有些用户能做某些事情,有些用户不能做某些事情。比如Linux,很多用户可以同时通过认证而登录到Linux主机,但是只有root才能修改或删除系统文件,普通用户只能修改自己的home。

这里每一点都可能涉及很多不同的技术来保证过程的顺利进行。“授权”跟业务逻辑的牵扯比较大,SSL和数字证书更多的关注第一点。

第三章 加密与算法

加密是保护信息安全的常用手段之一。对信息的加密是需要加密算法的,如果加密算法被破解了,那么一切免谈。不过,基本上,要破解一个加密算法是非常非常困难的。至少,目前流行的加密算法还是安全的,所以我们也就不必考虑这个问题了。

第一节 散列(Hash)

经常用bt下载的人应该很熟悉这个。这就是MD5啊~虽然Hash不只是MD5,常见的还有SHA1。不过MD5最流行所以一般大家说的hash就是它了。值得一提的是,山东大学的王小云在2005年的时候发了一篇“ How to Break MD5 and Other Hash Functions”引起了信息安全界的轰动。虽然我没仔细研读过这篇paper,不过我相信按照paper里面的说法要破解MD5还是很费劲的,要不早就出乱子了。所以我们就不考虑这个问题了。那么究竟什么是MD5呢?我来简单解释一下。

Hash就是一个工具,能把任意大小的文档变成一个 固定大小(MD5是32个字符)的字符串。并且,这个过程是 不可逆的,也就是说,没有任何办法从那个字符串得到原来那个文档。还有很重要的一点是, 任意两个文档(哪怕极其相似)得到相同字符串的概率几乎等于0。现在你有一个10000字的文章,发给你的朋友,那你的朋友怎么判断他收到的文章一个标点符号都没有少呢?你在发送文章的同时把这个文章的Hash字符串也发过去,这样你的朋友收到文章以后,根据收到的文章重新计算一遍这个字符串,如果这个字符串和你发过去的一样,那就证明你朋友收到的文章是和你发送的一模一样。

第二节 对称加密(Symmetric Cryptography)

所谓加密就是把一段能看懂的东西通过某种变换变成看不懂的东西。当然这种变换是可逆的,否则加密有什么用啊!这里所说的“变换”就是加密算法。目前我们所说的加密算法基本上都是基于密钥的。加密算法不能单独工作,必须有密钥配合。就像现实生活中的锁,同一型号的锁的原理都一样,但是每把锁都有各自的钥匙,用来开锁和关锁。 加密的算法是公开的,但密钥是保密的。自己“发明”加密算法是很愚蠢的,除非你是密码学专家。历史上有很多使用自己发明的加密算法的笑话,往往你发明的算法都是自以为是,其实很容易破解的拉。而目前流行的加密算法都是经过时间和众人检验的,一般情况下,只要密钥不泄露,那就是安全的。有一点要说明的是,虽然我

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值