概述

PKI(Public Key Infrastructure)是一种遵循标准的利用公钥加密技术为电子商务提供一套安全基础平台的技术和规范。它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说, PKI 是利用公钥理论和技术建立的提供安全服务的基础设施。

  • 作用

    • 通过加密技术和数字签名保证信息安全,主要应用在SSL/HTTPS、IPsecVPN、部分远程访问VPN
  • 组成

    • 公钥加密技术

    • 数字证书

    • CA(Certificate Authority)

    • RA

信息安全三要素

  • 机密性

    • 使用对方的公钥加密
  • 完整性

  • 身份验证/操作的不可否认性

    • 使用自己的私钥加密摘要(摘要是指非对称算法加密后的密文,再用散列算法得出的hash值),客户端通过服务器的公钥解密确认数据没有被篡改过(但无法保证合法性,因为服务器的公钥可能在一开始就被篡改,CA就是用来解决此问题的)

公钥加密技术

  • 作用

    实现对信息加密、数字签名等安全保证

  • 密匙

    一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。

加密算法

对称加密算法

加密和解密都是使用的同一个密钥。每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。而且秘钥一旦丢失就会被破解,因为算法都是公开的

常见的有DES、3DES、AES

非对称加密算法

加密使用的密钥和解密使用的密钥是不同的。 公钥密码体制就是一种非对称加密算法。

公钥和私钥为互相加解密关系

常见非对称算法:RSA、DH

  • RSA算法

    • 通信双方各自生产一对公私钥

    • 双方各自交换公钥

    • 使用对方的公钥加密后对方使用私钥解密,公私钥不可互相逆推

  • RSA算法原理

    • 选择一对不同的、足够大的素数p,q

    • 计算n=p*q

    • 计算f(n)=(p-1)*(q-1),同时对p,q严格保密

    • 找一个与f(n)互质的数e作为公钥指数,且1<e<f(n)

    • 计算私钥指数d,使得d满足(d*e) mod f(n) = 1

    • 公钥KU=(e,n),私钥KR=(d,n)

    • 加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:C=M^e mod n。

    • 解密过程为:M=C^d mod n。


数字签名

  • 假设A为发送方,B为接收方

  • A将RSA加密后的密文通过hash散列算法求出摘要

  • 将摘要通过RSA算法的私钥进行加密,加密后的密文称为数字签名

  • B通过A的公钥对数字签名解密,验证密文的hash值

就算密文被篡改也没用,数字签名通过私钥进行加密,黑客只能通过公钥加密原文,无法通过私钥加密摘要,但前提是公钥是合法的,这就需要数字证书和CA了


数字证书

如何保证客户端所持有的公钥就是某合法服务器声明的公钥?如果不能保证这一点,那么客户端发送的信息就有可能存在被窃听的危险,因为用此公钥加密的数据可以被其对应的私钥拥有者获取,而该私钥并不在客户端所认为的服务器上。

数字证书包含信息

  1. 使用者的公钥值

  2. 使用者标识信息(如名称和电子邮件地址)

  3. 有效期(证书的有效时间)

  4. 颁发者标识信息

  5. 颁发者的数字签名

1和5很重要,前者用于对数字签名解密,后者用于确认前者的合法性。客户能用CA的公钥解开数字签名,那么服务器的公钥就是合法的(前提是CA公钥没有被篡改,虽然CA公钥不在网络上传输,但也有本地被黑客入侵的风险)

证书格式遵循X.509标准


认证过程

以HTTPS为例

  • 服务器向CA中心申请证书,CA负责核实服务器的真实性,并在证书里内置服务器域名证书使用者信息

  • 客户浏览器或操作系统里内置有权威CA的公钥信息(即CA公钥不需要在网络中传输)

  • 客户请求服务时,服务器把自己申请的数字证书和 内容的数字签名 密文、数字签名一同发给客户

  • 客户收到信息后在本地CA列表里查找CA公钥对数字证书解密,拿到真正的签名公钥,再用该公钥去解密数字签名,拿到HASH值去对比完整性

漏洞

CA的公钥是存储在本地计算机列表的,如果手动往列表里面导入了不可信的CA公钥,那么CA就可以仿冒,失去了权威性。