本小节将介绍一些与数字证书相关的通用技术名词或原理。若已熟悉相关技术,可忽略本节内容;若尚不熟悉或对其中某部分不了解,可以阅读本小节进行了解。您也可以查阅更多专业资料以便深入了解。
加密与密钥
加密是保证数据传输安全性的一种手段,即使用密钥对明文数据进行加密处理,使其成为不可读的密文,密文通过密钥解密后可还原出明文。按照加解密使用的密钥是否相同,相同的称为对称加密,不同的称为非对称加密。数字证书的工作原理即为非对称加密。非对称加密使用到的两个不同的密钥通常被称为“公钥”和“私钥”。公钥加密的数据只能用私钥解密,同理,私钥加密的数据只能用公钥解密。私钥只能由使用者拥有与使用,不可泄漏,公钥可以公开给所有人。在本平台创建私有证书时系统会自动生成证书文件和私钥文件,对应的公钥即保存在证书文件中。
数字签名与数字证书
在数据收发过程中,若要保证数据安全,需要考虑两个问题:如何证明发送内容没有被篡改、如何证明内容确实来自真正想要通信的对方。
第一个问题,为了保证传输的数据内容不被篡改,发送数据方需要基于数据计算出一个“指纹”,并将“指纹”与数据一同发送出去。这个“指纹”其实是使用哈希算法计算出内容的哈希值,这个哈希值是唯一的,且无法通过哈希值推导出内容。接受数据方收到消息后,也基于数据计算出一个“指纹”,并与发送者发来的指纹进行比对。如果一致则认为内容没有被篡改,如果不一致则证明内容可能被篡改过。
在这个过程中,虽然确保了内容没有被篡改过,但是无法保证“内容+哈希值”整体没有被人替换过,于是还需要考虑第二个问题,保证没有篡改过的数据确实来自真正想要通信的对方。
确认身份的第一种手段就是 数字签名,即发送方使用私钥对“指纹”进行加密。同时发送方需要公布自己的公钥。这样接收方如果能用该公钥解密,就说明消息是由持有私钥的人发的。但如果有恶意者伪造了公钥,恶意者拿着自己的公钥和私钥仍然可以冒充发送方与接收方通信,因此还需要引入一个第三方权威机构来证明公钥确实是来自发送方的。
发送方将自己的公钥与身份信息发送给CA(数字证书认证机构),CA使用自己的私钥对发送方的公钥和身份信息等内容进行数字签名,并把“身份等信息+公钥+数字签名”打包成一个 数字证书。通信过程中发送方向接收方展示自己的数字证书,接收方使用CA的公钥(通常浏览器和操作系统中集成了权威CA的公钥)解密证书中的数字签名得到哈希值,再与计算出的哈希值对比,若一致则证明公钥确实来自真正的发送方而非恶意者冒充。此时接收方可以使用保存在证书中的发送方的公钥进行后续的通信。
至此,即可保证收到的数据确实来自正确的发送方且未被篡改过。
通常,向互联网上认可的权威CA机构申请证书是需要高昂费用的,因此有时需要使用私有证书,私有证书虽然在互联网上不受信任,但是可满足企业内部应用数据需要密码技术提供加密的需求。
数字证书与HTTPS
HTTPS是一种基于SSL协议的网站加密传输协议,网站安装数字证书后,可以使用HTTPS加密协议访问,实现了客户端与服务端之间的加密通信通道,防止传输数据被泄露或篡改。简单来说,HTTPS是HTTP的安全加强版,而想要使用HTTPS,则需先安装数字证书。