数字签名和数字证书
数字签名
类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性和来源。
A 发给 B 一个文件。A 先对文件进行摘要,然后用自己的私钥进行加密,将文件和加密串都发给 B。B 收到后文件和加密串,用 A 的公钥来解密加密串,得到原始的数字摘要,跟对文件进行摘要后的结果进行比对。如果一致,说明该文件确实是 A 发过来的,并且文件内容没有被修改过。
多重签名
n 个持有人中,收集到至少 m 个($$n\ge{}m\ge{}1$$)的签名,即认为合法,这种签名被称为多重签名。
其中,n 是提供的公钥个数,m 是需要匹配公钥的最少的签名个数,
群签名
环签名
环签名由 Rivest,shamir 和 Tauman 三位密码学家在 2001 年首次提出。环签名属于一种简化的群签名。
签名者首先选定一个临时的签名者集合,集合中包括签名者自身。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的其他成员可能并不知道自己被包含在其中。
数字证书
数字证书用来证明某个公钥是谁的。
对于数字签名应用来说,很重要的一点就是公钥的分发。一旦公钥被人替换,则整个安全体系将被破坏掉。
怎么确保一个公钥确实是某个人的原始公钥?
这就需要数字证书机制。
顾名思义,数字证书就是像一个证书一样,证明信息和合法性。由证书认证机构(Certification Authority,CA)来签发。
数字证书内容可能包括版本、序列号、签名算法类型、签发者信息、有效期、被签发人、签发的公开密钥、CA 数字签名、其它信息等等。
其中,最重要的包括 签发的公开密钥
、CA 数字签名
两个信息。因此,只要通过这个证书就能证明某个公钥是合法的,因为带有 CA 的数字签名。
更进一步地,怎么证明 CA 的签名合法不合法呢?
类似的,CA 的数字签名合法不合法也是通过 CA 的证书来证明的。主流操作系统和浏览器里面会提前预置一些 CA 的证书(承认这些是合法的证书),然后所有基于他们认证的签名都会自然被认为合法。
后面章节将介绍的 PKI 体系提供了一套完整的证书管理的框架。