文章目录
参考
RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
RFC 7468 - Textual Encodings of PKIX, PKCS, and CMS Structures
目的
普及密码学数字证书相关的基础知识。
约定
如无特别指出,此篇文章讨论的数字证书均指X509 V3公钥证书,X509均指X509 V3.
文章思路脑图
数字证书基础
定义
数字证书 是一个由证书颁发中心数字签名的包括公钥密钥拥有者信息以及公开密钥的文件,类似于身份证,身份证上面有持卡人的身份信息如地址,头像,有效期等,并且身份证一般由政府相关部门颁发。无论是计算机世界的数字证书还是现实生活的身份证,其主要目的都是用来鉴别个体的身份。
用途
- 可用于浏览器与站点 https网站用TLS协议认证双方身份,建立安全通讯通道.
- 可产生软件签名,确保软件来源及其真实性.
- 可用于设备或者其他个体身份鉴定.
- 其他…
工作原理
数字证书的核心关键是依赖于数字签名技术,数字签名保证了源数据即被签名数据来源的真实性以及源数据的完整性,故数字证书本身所包含的公钥信息与公钥持有人信息可有效杜绝伪造篡改。
数字签名
在很多初步学习或者了解密码学的人眼里,数字签名就是单纯的加密。实际上数字签名在采用非对称密钥进行加密之前,还使用了摘要算法进行对源数据的摘要计算。我们分别先简单了解下摘要算法与非对称密钥。
摘要算法基础
我们平常所用或者所见过的MD5,SHA-1,SHA256等都是摘要算法中的一种,摘要算法又叫散列函数,又叫hash函数,是一种单向不可逆函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么.这种散列函数的输入数据,通常被称为消息(message),而它的输出结果,经常被称为消息摘要(message digest)或摘要(digest).
一个理想的密码散列函数应该有四个主要的特性:
— 对于任何一个给定的消息,它都很容易就能运算出散列数值。
— 难以由一个已知的散列数值,去推算出原始的消息。
— 在不更动散列数值的前提下,修改消息内容是不可行的。
— 对于两个不同的消息,它不能给与相同的散列数值
我们在这里只需要知道,由散列函数特性可知,一个消息只有唯一的一个摘要,修改消息内容的同时用同样的散列函数,摘要也会发生变化.利用这些特性,可以用于数字签名,消息认证码,用户登录密码对比等场景.
非对称密钥基础
详见wiki介绍,直接贴过来:
公开密钥密码学(英语:Public-key cryptography,也称非对称式密码学