数据安全基础-RSA算法

分类: AUTOMATION 发布于:

不对称加密应用方案

什么是根证书(Root certificate)

https://en.wikipedia.org/wiki/Root_certificate

CA(Certificate Agent)

存放 A、B 数字证书的代理机构,在数字证书里包含有各自的RSA公钥与加密算法)

什么是认证(Authentication)

认证是安全通信的前提,如何认证出了问题,在通信的两端出现了错位的情况,也就是说A的目标通信对象可以被C替代,则后续的安全设施都形同虚构。

从这个角度讲,认证就是验证通信对方是否持有私钥

A与B的安全通信认证过程如下:

1) A向CA请求B的数字证书。

2) CA把B的证书作为参数生成一个HASH, 生成一个数字签名(Digital Signature).

3) CA把数字签名附在B的数字证书之后,即 B的数字证书 + CA 数字签名,发给A

4) A 拥有CA的公钥,可以解密CA的数字签名(CA用自己的私钥加密后的摘要),得到hash,同时对接收到的B的数字证书做hash运算,如果一致,则认为此证书安全有效,这个过程成为证书的数据完整性保护(Data Integrity)


以上是A获取B的公钥的过程。

https://en.wikipedia.org/wiki/Public-key_cryptography

公钥的性质之一是可以解密私钥加密后的数据(公钥和私钥其实可以互解密,数学原理上是一个大数分解成2个大的素数,在数学上,两个大的素数地位是平等的)

5) A 请求认证B, B用自己的私钥加密自己的身份(在apache/nignx中有对应的设置) 发给A, 由于A已经从CA处取到了B的公钥,所以A可以解密B的加密报文。解密成功A与B的认证阶段工作结束。

总结,这种加密算法的过程是

1) 你用私钥加密的数据只能用你的公钥解密。

2) 你的公钥存放在CA(证书发放结构,通常需要付费)里

3) 证书本身的传输也需要类似的加密。

4) 由3引发的问题是证书结构的证书(公钥)是谁发放的?这个是个死循环,最终需要一个根证书。根证书是由自己签名,不需要再验证的证书。