浅析数字证书和数字签名 | LSABLOG

首页 » NetworkSec » AWD » 正文

浅析数字证书和数字签名

0x00 前言

看了网上不少关于这类的文章,百花齐放,各有优缺,本人对这方面也有些地方不甚了解,故有此文以记录总结。

 

0x01 加密算法与哈希简介

1. 加密算法:

1.1 对称加密:加解密用相同密钥。大量密钥管理困难,但是加密速度块。

如:DES、3DES、AES、RC4、IDEA等

1.2 非对称加密:分为公/私钥,公钥加密只能私钥解密,反之亦然。公钥公开,私钥自藏。安全性高密钥管理方便但是加密速度慢。

如:RSA、DSA、Diffie-Hellman、ECC等

2. 哈希算法:
用来生成摘要,原数据发生变化,哈希值必然变化,不可逆,几乎不可能找到不同数据哈希值相同的情况(不包括md4,md5哈)。

如:MD5、SHA-1、SHA-256、MAC、CRC等

 

0x02 概览数字签名和数字证书

以Alice,Bob,doug为例子

公钥公开所以这里每个人都有其他两人的公钥。

Alice给Bob写情书,先对情书(iloveu)进行hash成摘要,在用Alice的私钥加密摘要,这就形成了数字签名,Alice把情书,自己的公钥和签名一起发给Bob。

Bob收到情书后,用Alice的公钥解密摘要,解密成功则说明发送者的确是Alice,再对情书进行hash成摘要,与刚刚解密成功的摘要比对,一样则说明情书内容没被篡改。

但是doug也喜欢Alice,并且是顶级hacker,他截获了Alice给Bob的情书,修改了情书内容(ihateu),并生成hash摘要,再用自己的私钥加密摘要形成签名,再把情书,自己的公钥和签名发给Bob。

此时Bob还以为公钥是Alice的,因为他不懂MITM,gg。

N年后,Bob对Alice说,我不确定公钥是不是你的,你快去CA搞个证书,于是Alice去CA开了个证书,内容包括

Subject Name: Alice的信息,国家,地点,域名等

Issuer Name: 证书颁发机构信息

Public Key: Alice的公钥

Signature algorithm : 采用的摘要算法

Valid before/after: 证书有效时间

FingerPrints: 证书的签名, 由颁发机构用自己的私钥加密, 用颁发机构的公钥可以解密签名获得证书的摘要, 如果这个摘要与用户计算出的摘要一致,那么这个证书就是可以信任的。

这就是数字证书,以后Alice给Bob发情书,数字签名和数字证书就ok了,Bob用CA公钥就可以解密数字签名进行验证,就确定了Alice真实的公钥即证书包含的公钥。

附上网上找的比较形象的图:

 

0x03 数字签名

用途1:验证发送方身份

用途2:数据完整性验证

签名过程:计算摘要->私钥加密

验证过程:公钥解密的摘要1->计算数据摘要2->比较摘要1和摘要2是否相同

 

0x04 数字证书

用途:证明发送方身份的确是发送方(证明我是我……),包含发送方公钥。

由第三方权威机构CA颁发,网站(https)和软件都可以有数字证书。
浏览器会验证https网站的证书是否有问题,如颁发机构是否有效、证书中的域名和访问的域名是否一致、证书是否过期、是否被吊销等。

安装软件时如果没有数字签名操作系统会有风险提示。

CA颁发的数字证书无法伪造,因为证书包括了CA用自己的私钥(统一密钥对)加密证书摘要形成的签名(CA私钥泄漏除外),那我们去哪里找CA的公钥来验证呢?

原来CA自己也有自己生成的数字证书(根证书),里面就有CA的公钥,这些CA的数字证书已经被操作系统开发机构安装在操作系统或内置在浏览器中了,微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的CA,把这些CA的证书默认就安装在操作系统里面了,并且设置为操作系统信任的数字证书。这些CA自己持有与他自己的数字证书对应的私钥,他会用这个私钥加密所有他发布的证书的摘要作为数字签名。

所以,浏览https网站时,浏览器会读取网站的数字证书中的 Issuer Name,再从受信任的证书中找是否有这个机构,如果没有,则说明证书不可信,给出警告;如果有,则用公钥解密进行验证。

Win7操作系统内置证书如下图:

 

0x05 用例

  • 先来看看数字签名和数字证书是如何运用在HTTPS中的。

浏览器去请求一个https的网站,接着网站返回自己的数字证书,浏览器在受信任的证书中寻找这个机构的证书,如下图为火狐浏览器的受信任证书

如果数字证书记载的域名与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

//下图为网上找的ie浏览器警告

如果是不受信任的证书,浏览器警告如下图

//下图为网上找的ie浏览器警告

如果数字证书是受信任的,则取出网站的公钥,进行后续的握手协商。

  • 再来看看数字签名和数字证书在软件上的运用

以360安装包为例:

右图就是信任证书链,就是信任上一个证书,下面的证书都可以信任。

如果软件的数字签名无效,则可能被捆绑木马,被篡改。

证书受信任的话操作系统会弹出如下图

最后对根证书来张合影

 

0x05 结语

由于时间仓促和本人才疏学浅,可能有些细节会遗漏或不太详细,欢迎共同交流!

 

0x06 参考资料

 

https://www.zhihu.com/question/52493697

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

http://www.jianshu.com/p/94d3e512953d

http://www.cnblogs.com/hanganglin/p/6538291.html

http://www.cnblogs.com/jeffreysun/archive/2010/06/24/1627247.html

http://codefine.co/1455.html

https://irgb.github.io/HTTPS_TLS_Certificate/

 

 

Comment