PKI概述
- 名称:Public Key Infrastructure,公钥基础设施。
- 作用:通过加密技术、数字签名和数字证书保障信息的安全。
- 组成:加密技术、数字证书、CA、RA等。
- 应用领域:
- SSL/TLS/HTTPS
- IPsecVPN
- 部分远程访问VPN
信息安全三要素
机密性、完整性、身份验证/操作的不可否认性。
PKI组成
加密技术
对信息加密、数字签名等安全保障。
散列函数(hash):把任意长度的输入消息数据转化成固定长度的输出数据的一种密码算法。常用于生成摘要。
消息验证代码:验证数据完整性,即数据没有被篡改。
非对称加密:双方各自产生一对公私钥,并各自交换公钥,用对方提过的公钥加密,用自己的私钥解密(公钥和私钥互相加解密关系,但不可互相逆推)。
数字签名:结合散列函数,用私钥对摘要加密,公钥解密。验证消息真实性。
伪随机函数(PRF):生成任意数量的伪随机数据。
数字证书
包含了用于签名和加密数据的公钥的电子凭证,是PKI的核心元素。用于保证公共密钥的合法性,格式遵循X.509标准,并由权威公正的第三方机构(即CA)签发。
数字证书包含的信息包括但不限于:
- 使用者的公钥值
- 使用者的标识信息(如名称和电子邮件地址)
- 有效期(证书的有效时间)
- 颁发者标识信息
- 颁发者的数字签名
数字证书的种类如下:
认证中心(CA)
数字证书的申请及签发机关,CA必须具备权威性。
数字证书注册中心(RA)
负责数字证书申请者的信息录入、审核及证书发放等工作。
加密传输流程(20210427更新)
下面,用一个简单的加密传输流程,演示PKI对信息加密的安全保障应用。
- A试图向B发送信息
- A发送公钥abc给CA,向权威机构CA申请证书
- CA为A颁发证书,并用自己的私钥666为A的公钥abc签名
- A和B交换公钥,同时A将自己的证书发送给B
- B对权威机构CA足够信任,获取到CA的公钥999
- B用公钥999解开A证书的签名,比对证书中的公钥与A发送过来的公钥是否相同,若相同,则可以验证确实是A的公钥。
- A通过RSA算法用B的公钥123对数据进行加密
- A对已经加密的数据进行哈希算法,获取到摘要
- A用自己的私钥cba通过RSA算法对摘要进行加密,得到签名
- A将签名放到加密数据的末尾,一并发送至B
- 先前B已经确认A的公钥属于A本人无误
- B收到数据后,用A的公钥abc对签名进行解密,若解密成功,得到摘要,则可验证数据完整未被破坏。
- B用自己的私钥321解开加密的数据。
总结(取自知乎):
你只要想,既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
PKI实验流程
环境
- HTTPS服务器:Windows 2008
- 客户机:Windows 7
- 桥接到虚拟网络VMnet1
实验步骤
- 为两台虚拟机配置IP地址
- 安装IIS服务,建立站点,配置DNS服务器(使用域名),并用客户机访问http网址进行初步验证
- 安装CA组件
- 打开IIS,生成证书申请文件
- 向CA申请证书:打开网页
http://x.x.x.x/certsrv
并向CA发送web服务器申请文件 - CA颁发证书
- 在Web服务器上下载并完成安装
- 在Web服务器上启用SSL443
- 要求用户必须使用443访问,不能使用80访问