PKI 公钥基础设施 及 CA 认证原理 之 -- 基本概念
基础概念
PKI(Public Key Infrastructure)公钥基础设施 ,是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI 技术是信息安全技术的核心。
CA(Certification Authority) 认证中心:作为权威的、可信赖的、公正的第三方机构,CA中心主要职责是颁发 和 管理 数字证书。其中心任务是颁发数字证书,并履行用户身份认证的责任。
CA(Certification Authority) 证书:,指的是权威机构给我们颁发的证书。
密钥:就是用来加、解密用的文件或者字符串。密钥在非对称加密的领域里,指的是私钥和公钥,他们总是成对出现,其主要作用是加密和解密。常用的加密强度是:2048 bit。
RSA:即非对称加密算法。非对称加密有两个不一样的密码,一个叫私钥,另一个叫公钥,用其中一个加密的数据只能用另一个密码解开,用自己的都解不了,也就是说用公钥加密的数据只能由私钥解开。
数字证书:是由证书认证机构(CA)对证书申请者真实身份验证之后,用 CA 的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。实际上,数字证书就是经过CA认证过的公钥,除了公钥,还有其他的信息,比如:Email,国家,城市,域名等。
证书结构
最简单的证书包含:一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效期,颁发者(证书授权中心)的名称,该证书的序列号等信息,证书的结构遵循 X.509 v3 版本的规范。
证书的各字段解释:
版本:即使用 X.509 的版本,目前普遍使用的是 v3 版本(0x2)。
序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
签名算法:颁发者颁发证书使用的签名算法。
颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
公钥信息:用户对外公开的公钥以及公钥算法信息。
扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
签名:颁发者用私钥对证书信息的签名。
证书的编码格式
PEM (Privacy Enhanced Mail),通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为:.pem, .crt, .cer, 和 .key。内容为 Base64 编码的ASCII码文件,有类似"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"的头尾标记。
DER (Distinguished Encoding Rules),与 PEM 不同之处在于其使用二进制而不是Base64编码的ASCII。扩展名为:.der,但也经常使用 .cer 用作扩展名
证书签名请求CSR
CSR(Certificate Signing Request),它是向 CA 机构申请数字证书时使用的请求文件。
在生成请求文件前,我们需要准备一对对称密钥。私钥信息自己保存,请求中会附上公钥信息以及国家,城市,域名,Email 等信息,CSR 中还会附上签名信息。当我们准备好 CSR 文件后就可以提交给 CA 机构,等待他们给我们签名,签好名后我们会收到 crt 文件,即 CA证书。
注意:CSR 并不是证书。而是向权威证书颁发机构 CA 获得签名证书的申请。
保留好 CSR,当权威证书颁发机构颁发的证书过期的时候,你还可以用同样的 CSR 来申请新的证书,key 保持不变.
数字签名
数字签名就是"非对称加密+摘要算法",其目的不是为了加密,而是用来防止他人篡改数据。
其核心思想是:比如
A 要给 B 发送数据,A 先用摘要算法得到数据的指纹,然后用 A 的私钥加密指纹,加密后的指纹就是 A 的签名,
B 收到数据和 A 的签名后,也用同样的摘要算法计算指纹,然后用 A 公开的公钥解密签名,比较两个指纹,如果相同,说明数据没有被篡改,确实是 A 发过来的数据。
假设 C 想改 A 发给 B 的数据来欺骗 B,因为篡改数据后指纹会变,要想跟 A 的签名里面的指纹一致,就得改签名,但由于没有 A 的私钥,所以改不了,如果 C 用自己的私钥生成一个新的签名,B 收到数据后用 A 的公钥根本就解不开。
常用的摘要算法有 MD5、SHA1、SHA256。使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。
HTTP、HTTPS、SSL、TLS
HTTP 是一个网络协议,是专门用来传输 Web 内容,大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东东(图片、CSS 样式、JS 脚本)。
SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明 SSL 协议,就是为了解决这些问题。
TLS 是 SSL的 标准化,SSL 标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。
HTTPS 协议,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合。你可以把 HTTPS 大致理解为——“HTTP over SSL”或“HTTP over TLS”。
SSL 位于TCP/IP中的网络传输层,作为网络通讯提供安全以及数据完整性的一种安全协议,TLS 作为 SSL 协议的继承者,成为下一代网络安全性和数据完整性安全协议
SSL 共有3个版本:1.0、2.0、3.0;TLS也有1.0、2.0、3.0,通常我们说的 SSL/TLS 协议指的是SSL3.0 / TLS1.0的网络传输层安全协议
SSL/TLS协议分为两层
记录协议: 建议在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持
握手协议:建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等
共 0 条评论