PKI概论
用户通过网络将数据发送给接收者时,可以利用PKI提供的以下3种功能来确保数据传输的安全性。
1.将传输的数据加密。
2.接收者计算机会验证收到的数据是否是由发件人本人发来的,即认证(authentciation)
3.接收者计算机还会确认数据的完整性,也就是检查数据在传输的过程种是否被篡改。
PKI根据公开密钥加密(public key cryptography)来提供上述服务,而用户需要拥有以下的一组密钥来实现这些服务。
公钥:用户的公钥(public key)可以公开给其他用户
私钥:用户的私钥(private key)是该用户私有的,且存储在用户的计算机内,只有他能够访问。
用户需要通过向证书颁发机构(CA)申请证书的方法来拥有与使用这一组密钥。
1.公钥加密法
数据被加密后,必须通过加密才能获取相关的内容。PKI使用公钥加密(public key encryption)机制来对数据进行加密与解密。发件人利用收件人的公钥将数据加密,而收件人利用自己的私钥将数据解密。
举例说明,A必须先获取B的公钥,才可以利用此密钥来将电子邮件加密,而因为B的私钥只存储在它自己的计算机内,所以只有它的计算机可以将此邮件解密,所以B可以解读邮件的内容。其他用户即使拦截这封邮件,也无法读取邮件的内容,因为他们没有A的私钥,无法解密。
2.公钥验证
发件人可以利用公钥验证(public key authentication)来将待发送的数据进行“数字签名”,而收件人计算机在收到数据后,便能够通过此数字签名来验证数据是否确实由发件人发出,同时还会检查数据是否被篡改。
发件人是利用自己的私钥对数据进行签名的,而收件人计算机会利用发件人的公钥来验证此份数据。
由于邮件经过A的私钥签名,而公钥与私钥是一对的,因此收件人B必须取得发件人A的公钥后,才可以利用此密钥来验证这封邮件是否有由A本人发送过来的,并检查邮件是否被篡改。
数字签名是如何产生的?如何用来验证用户身份的?
1.发件人的电子邮件经过消息哈希算法(hash algorithm)的运算处理后,产生一个消息摘要。(message digest)
2.发件人的电子邮件软件利用发件人的私钥将此消息摘要加密,所使用的加密方法为公钥加密算法,加密后的结果被称为数字签名。
3.发件人的电子邮件软件将原电子邮件和数字签名一并发给收件人。
4.收件人的电子邮件软件会将收到的电子邮件和数字签名分开处理。
电子邮件重新经过消息哈希算法的运算处理后,产生一个新的消息摘要。
数字签名经过公钥加密算法的解密处理后,可得到发件人传来的原消息摘要。
5.新消息摘要与原消息摘要应该相同,否则表示这封电子邮件被篡改或是冒用发件人身份发来的。
网站安全连接
安全套接层(SSL)是一个以PKI为基础的安全性通信协议,若要让网站拥有SSL安全连接功能,就需要为网站向证书颁发机构申请SSL证书(Web服务器证书),证书包含公钥,证书有效期,发放证书的CA,CA的数字签名等数据。
在网站拥有SSL证书之后,浏览器与网站可通过SSL安全连接来通信,也就是将URL路径中的http改为https。
建立SSL安全连接时,会建立一个双方都同意的会话密钥(session key),并利用此密钥来将双方所传送的数据加密,解密并确认数据是否被篡改。
1.客户端浏览器利用http://long.com来连接网站时,客户端会先发出Client Hello信息给Web服务器
2.Web服务器会响应Server Hello信息给客户端,此信息内包含网站的证书信息(内含公钥)
3.客户端浏览器与网站双方开始协商SSL连接的安全等级。
4.浏览器根据双方同意的安全等级来创建会话密钥,利用网站的公钥将会话密钥加密,将加密后的会话密钥发送给网站。
5.网站利用自己的私钥来将会话密钥解密。
6.浏览器与网站双方相互之前传送所以数据,都会利用这个会话密钥进行加密和解密。
证书颁发机构概论
无论是电子邮件保护还是SSL网站安全连接,都需要申请证书才可以使用公钥和私钥来执行数据加密与身份验证的操作。证书就好像是机动车驾驶证,必须是拥有机动车驾驶证(证书)的对象才能开车(使用密钥)。而负责发放证书的机构被称为CA。
用户或网站的公钥和私钥是怎么产生的?在申请证书时,需要输入姓名,地址与电子邮箱等数据,这些数据会被发送到一个称为加密服务提供者(CSP)的程序,此程序已经被安装在申请者的计算机中或此计算机可以访问的设备中。
CSP会自动创建一对密钥:一个公钥和一个私钥。CSP会将私钥存储到申请者计算机的注册表中,并将证书申请数据与公钥一并发给CA。CA检查这些数据无误后,会利用CA自己的私钥对要发放的证书进行签名,并发放此证书。申请者收到证书后,将证书安装到其计算机上。
证书内包含了证书的颁发对象(用户或计算机),证书有效期,颁发此证书的CA与CA的数字签名(类似机动车驾驶证上的盖章),以及申请人的姓名,地址,电子邮箱,公钥等数据。
CA的信任
在PKI架构下,当用户利用某CA发放的证书来发送一封经过签名的电子邮件时,收件人的计算机应该要信任由此CA发放的证书,否则收件人的计算机会将此电子邮件视为有问题的邮件。
同样,客户端利用浏览器连接SSL网站时,客户端计算机也必须信任发放SSL证书给此网站的CA,否则客户端浏览器会弹出警告信息。
AD CS(Active Directory)的CA种类
企业根CA
它需要AD域,可以将企业根CA安装到域控制器成员服务器。它发送证书的对象仅限于域用户,当域用户申请证书时,企业根CA会从Active Directory中得知该用户的账户信息并以此决定该用户是否有权限申请所需证书。企业根CA主要应该用于发放证书给从属CA,虽然企业根CA还可以发放保护电子邮件安全,网站SSL安全连接等证书,但发放这些证书的工作最好交给从属CA来负责。
企业从属CA
企业从属CA也需要Active Directory域,企业从属CA适合用来发放保护电子邮件安全,网站SSL安全连接等证书。企业从属CA必须从其父CA(如企业
CA)取得证书之后,才能正常工作。企业从属CA也可以发放证书给下一层的从属CA。
独立根CA
独立根CA类似于企业根CA,但它不需要Active Directory域,扮演独立根CA角色的计算机可以是独立服务器,成员服务器或域控制器。无论是否为域用户,都可以向独立根CA申请证书。
独立从属CA
独立从属CA类似于企业从属CA,但它不需要Active Directory域,扮演独立从属CA角色的计算机可以是独立服务器,成员服务器或域控制器。无论是否为域用户,都可以向独立从属CA申请证书。