数字签名相关概念
数字签名如何工作?
签名原理:
通过哈希函数取得需要加密数据的哈希值(具有唯一性的数据指纹,数据任何内容被篡改都会导致不同的哈希),通过签名者的私钥加密散列值,得到数字签名,将数字签名附加到数据,即得到被签名的数据。
验证原理:
分离签名和数据,通过与签名方相同的哈希函数得到数据的哈希值,并通过签名者的公钥解密散列值,得到签名方的哈希值,将两个值进行比对,即可确认文件是否被篡改。
数字签名与电子签名的差别
电子签名本质是文档中的注释,但除了可以更改的签名外观之外,没有有关创建者的其他可识别信息,也无法验证文档是否修改。
数字签名使用复杂的加密算法来创建一个唯一的标识符,该标识符与文档内容和创建者信息相关联。任何对文档内容的修改都会导致数字签名验证失败,并且保证了签名者身份的唯一性和合法性。
什么是数字证书
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份,因此数字证书又称为数字标识。数字证书的格式一般采用X.509国际标准,一般会包含证书公钥,用户信息,公钥有效期限,发证机构的名称,数字证书的序列号,发证机构的数字签名等。
数字证书对网络用户在交流中的信息和数据以加密或解密的形式进行传递,保证了信息和数据的完整性和安全性。
支持 PKCS12 证书
PKCS #12 是RSA 实验室发布的称为公钥加密标准 (PKCS)的标准系列之一。ComPDFKit 支持使用带有“.p12”或“.pfx”文件扩展名的证书进行签名。
证书链的概念
证书链(Certificate Chain),也称为信任链(Trust Chain)或证书路径(Certificate Path),是一组数字证书的有序集合,用于验证一个数字证书的真实性和可信度。只有当整个证书链上的证书都有效时,才会认定当前证书合法。
以下是证书链中的一些概念:
根证书
证书链的起点是根证书。根证书是由可信的证书颁发机构(Certificate Authority,CA)颁发的顶级证书,通常由操作系统或应用程序内置。这些根证书用于建立信任的根基,因为它们被视为绝对可信的。
中间证书
中间证书也称为颁发者证书或子证书。它们由根证书颁发机构颁发,并用于颁发终端实体的证书。中间证书形成了证书链的中间环节。
终端实体证书
终端实体证书是数字签名的主体(通常是个人、服务器或设备)的证书。它们由中间证书颁发机构颁发,包含了公钥和相关身份信息。
信任建立
通过证书链建立,信任被传递从根证书到终端实体证书。如果根证书被信任,那么终端实体证书也会被信任,因为它们之间的信任链是连续的。
数字证书认证机构 Certificate Authority(CA)
数字证书认证机构是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
CA 中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA 是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。
数字签名是否需要 CA
可以不必。在无需第三方公证的情况下无需使用 CA,我们可以使用自签名证书。在 ComPDFKit 中,可以手动设置信任自签名证书,这对于互信的双方进行文件签署和检验非常有用。但由于没有数字证书认证机构进行认证,自签名数字身份证无法保证身份信息的有效性,它们在某些用例中可能不被接受。
如何确认数字证书的创建者身份
Subject 包含了证书持有者的身份信息,通常包括 C(国家)、ST(省份)、L(地区)、O(组织)、OU(单位)、CN(通用名)等字段。这些信息标识了证书持有者是谁。
DN (Distinguished Name) 是 Subject 的完整表示,是证书持有人的唯一标识符。它包含了 Subject 字段中的所有信息,并以层次结构的方式组织这些信息。
X.509标准规定要通过指定的字符串格式来描述DN,例如:
CN=Alan, OU=RD Department, O=ComPDFKit, C=SG, [email protected]