基本概念
CIA三要素:机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)
机密性:防止信息泄露给未经授权的用户或实体
完整性:消息没有被篡改或损坏
可用性:确保信息和资源在需要时可供访问和使用,不受意外中断、拒绝服务攻击等因素的影响
数字签名和数字证书主要用于确保消息的完整性,下面用几个例子来帮助理解。
信息加密
Alice 使用 Bob 的公钥加密消息并发送给 Bob,Bob 使用自己的私钥解密消息。在这个过程中,如果有中间人尝试截获消息,由于没有 Bob 的私钥,无法获取消息内容。然而,中间人可以截获 Alice 发送的消息,并篡改其内容后再次发送给 Bob,破坏了消息的完整性。
数字签名
Alice 想要向 Bob 发送一条重要的消息,为确保消息的完整性和真实性,她使用了数字签名。
- Alice 对消息使用哈希函数,计算得到一个摘要;
- Alice 使用私钥对摘要进行加密,得到数字签名;
- Alice 将消息和数字签名一起发送给 Bob;
- Bob 使用 Alice 的公钥对数字签名进行解密,得到摘要;
- Bob 使用哈希函数计算接受到的消息的摘要,将计算结果与解密结果进行比较,如果两者一致,则说明消息没有被篡改;否则,说明消息被篡改了。
在这个过程中,如果中间人用自己的签名伪造了一个数字签名,并将 Alice 的公钥换成了自己的,仍然能够伪造消息。
数字证书
上面的例子中 Bob 无法确定公钥是属于 Alice 的,于是要求 Alice 找可信三方(证书认证机构,CA)为公钥做认证。
- CA 用自己的私钥加密得到证书;
- Alice 用自己的私钥对消息进行签名;
- Alice 将消息、签名和证书一起发送给 Bob;
- Bob 用 CA 公钥解密证书,得到 Alice 公钥;
- Bob 使用 Alice 公钥解密签名得到摘要;
- Bob 计算消息摘要,并于解密结果比较,如果两者一致,则说明消息没有被篡改;否则,说明消息被篡改了。