廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!

文章目录
  1. 1. ��、引言
    1. 1.1. 1.1 问题的引入
    2. 1.2. 1.2 第一次解决——加密
    3. 1.3. 1.3 加密存在的问题
    4. 1.4. 1.4 第二次解决——证书授权中心
  2. 2. 二、数字签名 Digital Signature
  3. 3. 三、证书授权中心 CA
    1. 3.1. 3.1 证书链 Certificate Chain
    2. 3.2. 3.2 自建CA问题
  4. 4. 四、证书类型
  5. 5. 参考资料
  • http://www.bewindoweb.com/274.html

    ��、引言

    1.1 问题的引入

    客户端A、B、C都想要下载服务器S的某个文件,但文件传输过程中会经过许多不可靠的节点,应该如何保证A、B、C的请求不被篡改,且保证A、B、C收到的是没有被篡改的文件呢?

    1.2 第一次解决——加密

    服务器S做了一对密钥,私钥自己保留,并把公钥发送给客户端A、客户端B、客户端C保存。

    这样,客户端A可以用公钥对请求进行加密,密文为““&A2*XVqzp346(??=””;服务器S收到后用私钥解密,明文为“客户端A想要下载资源文件”;中间节点没有私钥,无法解密这个请求,也就无法篡改了。

    此时,服务器S需要把资源文件传给客户端A,需要保证安全性,于是服务器S决定使用“数字签名(Digital Signature)”:将资源文件用Hash函数生成“摘要(Digest)”,然后用私钥对这个摘要加密,生成数字签名。中间节点一旦修改任意的数据,摘要就会发生变化,而新的摘要需要用私钥加密,中间节点无法生成新的摘要,也就无法篡改了。

    例如服务器S生成摘要“MD5-1234567”,加密后为数字签名“Xzpqp190&)DVsz”;将资源文件和数字签名一起发给客户端,客户端收到后用资源文件生成摘要“MD5-1234567”,用公钥解密数字签名,得到服务器S发送的摘要“MD5-1234567”,如果两个摘要一样,则文件确实是服务器S发出的。

    1.3 加密存在的问题

    不可靠节点U通过某种方式去掉了服务器S的真公钥,并自己生成了一对假公钥,把假公钥发送给客户端A。当服务器S传递文件的时候,不可靠节点U解开资源文件,并加入木马病毒,重新用自己的私钥签名,发送给客户端A。客户端A用U的假公钥解开验证,一切正常,误以为是服务器S传递过来的真文件。

    1.4 第二次解决——证书授权中心

    服务器S去一个权威机构“证书授权中心(Certificate Authority)”,将服务器的信息、服务器S的公钥一起用CA私钥加密,生成“数字证书(Digital Certificate)”。

    服务器S把通过认证的证书发给客户端,客户端用CA公钥解密和验证后得到服务器S公钥,保证服务器S公钥不会被篡改。

    二、数字签名 Digital Signature

    数字签名(Digital Signature),就是只有信息的发送者才能产生的别人无法伪造的一段数字串。常见的数字签名手段就是Hash算法,如MD5、SHA256,原理也很简单,将数据通过哈希函数映射到一段字符串上,一旦改动了数据,字符串也会变化,不产生变化的概率极低,也就是所谓的“不可抵赖性”。

    MD5在我中学时期很火,各大下载站为了保证自己的下载内容没有被注入木马,通常都会在网站上挂着MD5校验值。现在木马已经很少了,而且SHA256更安全用得更多一些。

    三、证书授权中心 CA

    证书授权中心(Certificate Authority,CA),���为一个受信任的第三方,承担公钥合法性校验的责任。

    3.1 证书链 Certificate Chain

    CA如果直接颁发数字证书,一旦CA的私钥泄漏,所有的证书都将无效。

    因此CA设立了三级证书,分别是根证书(Root Certificates)、中间证书(Intermediates Certificates)、终端用户证书(End-user Certificates)。

    • 根证书的私钥通常存放在断网的环境里,隔离保护;根证书通常除了提供官方下载渠道下载,还会和其他厂商合作,比如Windows操作系统,Chrome浏览器,让其内置这张证书。
    • 中间证书可能会有多级,比如二级中间证书、三级中间证书等。终端用户证书只能由这些二级CA、三级CA颁发,这样一旦某个中间CA的私钥泄漏,根CA重新颁发一张证书即可。中间CA的私钥一旦泄漏,也意味着各大浏览器都会标记这家CA颁发出的终端用户证书不安全,这家公司将会倒闭。
    • 终端用户证书则是我们平时使用到的服务器证书。

    剩下的问题就是这么多级证书如何做校验?

    根证书-中间证书-终端用户证书形成了证书链(Certificate Chain),当校验的时候,根据颁发机构ID一级一级往上提取证书,然后一级一级根据公钥校验证书合法性。

    我们可以看看比较出名的公司使用的什么证书(通过点击浏览器小绿锁就可以看到了):

    百度用的Globalsign根CA。

    中国建设银行用的DigiCert。

    github用的DigiCert。

    google用的GlobalSign。

    3.2 自建CA问题

    如果只是自己使用,当然可以自己搭建CA给自己签发证书,但浏览器一般都会提示“不安全”,因为这个证书不是权威机构颁发的。

    四、证书类型

    证书一共有三种类型:域名型证书DV(Domain Validation SSL Certificate)、企业组织型证书OV(Organization Validation SSL Certificate)、增强型证书EV(Extended Validation SSL Certificate)。

     对比项  DV  OV  EV 
     审核内容 域名 域名、组织信息 域名、组织信息、第三方数据库 
     签发周期 几分钟~几小时 2~5天  5~7天
     赔付保障 少 一般 多
     浏览器表现 绿锁 绿锁  绿锁+组织信息 
     证书详情 显示域名  显示组织名  显示组织名
     用途 个人站点 一般企业网站 金融等要求较高的企业网站
     收费 千元级 万元级 万元级

    例如,随便找的一个个人博客的DV��书:

    百度的OV证书:
    随便找的一个EV证书网站,会在浏览器显示公司信息:

    参考资料

    1、《【web安全】X.509数字证书的结构与解析》

    2、《证书链-Digital Certificates》

    3、《What is the SSL Certificate Chain?》

    4、《域名型(DV),企业型(OV),增强型(EV)三种SSL证书之间的区别》

    5、《DV型和OV型证书的区别》



科学上网(翻墙)教程!

更多精彩内容,请扫描二维码关注公众号:轮子工厂,公众号内回复:

1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本计算机类经典书籍;
3.回复【开发工具】:获取几大主流编程语言的开发工具~
4.回复【内推】:可帮你内推到大厂工作。
文章目录
  1. 1. ��、引言
    1. 1.1. 1.1 问题的引入
    2. 1.2. 1.2 第一次解决——加密
    3. 1.3. 1.3 加密存在的问题
    4. 1.4. 1.4 第二次解决——证书授权中心
  2. 2. 二、数字签名 Digital Signature
  3. 3. 三、证书授权中心 CA
    1. 3.1. 3.1 证书链 Certificate Chain
    2. 3.2. 3.2 自建CA问题
  4. 4. 四、证书类型
  5. 5. 参考资料