实例解析数字证书原理 - 图文(2)

2019-09-01 10:29

―黑客‖->―客户‖:你好,我是服务器 {你好,我是服务器}[黑客自己的私钥|RSA] //客户收到―黑客‖用私钥加密的信息后,是可以用―黑客‖发给自己的公钥解密的,从而会误认为―黑客‖是―服务器‖ 因此―黑客‖只需要自己生成一对公钥和私钥,然后把公钥发送给―客户‖,自己保留私钥,这样由于―客户‖可以用黑客的公钥解密黑客的私钥加密的内容,―客户‖就会相信―黑客‖是―服务器‖,从而导致了安全问题。这里问题的根源就在于,大家都可以生成公钥、私钥对,无法确认公钥对到底是谁的。 如果能够确定公钥到底是谁的,就不会有这个问题了。例如,如果收到―黑客‖冒充―服务器‖发过来的公钥,经过某种检查,如果能够发现这个公钥不是―服务器‖的就好了。 为了解决这个问题,数字证书出现了,它可以解决我们上面的问题。先大概看下什么是数字证书,一个证书包含下面的具体内容: ? ? ? ? ? ?

证书的发布机构 证书的有效期 公钥

证书所有者(Subject) 签名所使用的算法 指纹以及指纹算法

证书的内容的详细解释会在后面详细解释,这里先只需要搞清楚一点,数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。至于是如何判断的,后面会在详细讨论数字证书时详细解释。现在把前面的通信过程使用数字证书修改为如下: 2.5 第五回合: ―客户‖->―服务器‖:你好

―服务器‖->―客户‖:你好,我是服务器,这里是我的数字证书 //这里用证书代替了公钥

―客户‖->―服务器‖:向我证明你就是服务器

―服务器‖->―客户‖:你好,我是服务器 {你好,我是服务器}[私钥|RSA]

注意,上面第二次通信,―服务器‖把自己的证书发给了―客户‖,而不是发送公钥。―客户‖可以根据证书校验这个证书到底是不是―服务器‖的,也就是能校验这个证书的所有者是不是―服务器‖,从而确认这个证书中的公钥的确是―服务器‖的。后面的过程和以前是一样,―客户‖让―服务器‖证明自己的身份,―服务器‖用私钥加密一段内容连同明文一起发给―客户‖,―客户‖把加密内容用数字证书中的公钥解密后和明文对比,如果一致,那么对方就确实是―服务器‖,然后双方协商一个对称加密来保证通信过程的安全。到这里,整个过程就完整了,我们回顾一下: 2.6 完整过程:

6

step1: ―客户‖向服务端发送一个通信请求 ―客户‖->―服务器‖:你好 step2: ―服务器‖向客户发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由―服务器‖持有 ―服务器‖->―客户‖:你好,我是服务器,这里是我的数字证书 step3: ―客户‖收到―服务器‖的证书后,它会去验证这个数字证书到底是不是―服务器‖的,数字证书有没有什么问题,数字证书如果检查没有问题,就说明数字证书中的公钥确实是―服务器‖的。检查数字证书后,―客户‖会发送一个随机的字符串给―服务器‖用私钥去加密,服务器把加密的结果返回给―客户‖,―客户‖用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是―服务器‖。 ―客户‖->―服务器‖:向我证明你就是服务器,这是一个随机字符串 //前面的例子中为了方便解释,用的是―你好‖等内容,实际情况下一般是随机生成的一个字符串。 ―服务器‖->―客户‖:{一个随机字符串}[私钥|RSA] step4:验证―服务器‖的身份后,―客户‖生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,―客户‖会用公钥加密后发送给―服务器‖,别人截获了也没用,因为只有―服务器‖手中有可以解密的私钥。这样,后面―服务器‖和―客户‖就都可以用对称加密算法来加密和解密通信内容了。 ―服务器‖->―客户‖:{OK,已经收到你发来的对称加密算法和密钥!有什么可以帮到你的?}[密钥|对称加密算法] ―客户‖->―服务器‖:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[密钥|对称加密算法] ―服务器‖->―客户‖:{你好,你的余额是100元}[密钥|对称加密算法] …… //继续其它的通信 2.7 其它问题: 上面的过程已经十分接近HTTPS的真实通信过程了,完全可以按照这个过程去理解HTTPS的工作原理。但是我为了方便解释,上面有些细节没有说到,有兴趣的人可以看下这部分的内容。可以跳过不看,无关紧要。 【问题1】 上面的通信过程中说到,在检查完证书后,―客户‖发送一个随机的字符串给―服务器‖去用私钥加密,以便判断对方是否真的持有私钥。但是有一个问题,―黑客‖也可以发送一个字符串给―服务器‖去加密并且得到加密后的内容,这样对于―服务器‖来说是不安全的,因为黑客可以发送一些简单的有规律的字符串给―服务器‖7

加密,从而寻找加密的规律,有可能威胁到私钥的安全。所以说,―服务器‖随随便便用私钥去加密一个来路不明的字符串并把结果发送给对方是不安全的。 〖解决方法〗

每次收到―客户‖发来的要加密的的字符串时,―服务器‖并不是真正的加密这个字符串本身,而是把这个字符串进行一个hash计算,加密这个字符串的hash值(不加密原来的字符串)后发送给―客户‖,―客户‖收到后解密这个hash值并自己计算字符串的hash值然后进行对比是否一致。也就是说,―服务器‖不直接加密收到的字符串,而是加密这个字符串的一个hash值,这样就避免了加密那些有规律的字符串,从而降低被破解的机率。―客户‖自己发送的字符串,因此它自己可以计算字符串的hash值,然后再把―服务器‖发送过来的加密的hash值和自己计算的进行对比,同样也能确定对方是否是―服务器‖。 【问题2】

在双方的通信过程中,―黑客‖可以截获发送的加密了的内容,虽然他无法解密这个内容,但是他可以捣乱,例如把信息原封不动的发送多次,扰乱通信过程。 〖解决方法〗

可以给通信的内容加上一个序号或者一个随机的值,如果―客户‖或者―服务器‖接收到的信息中有之前出现过的序号或者随机值,那么说明有人在通信过程中重发信息内容进行捣乱,双方会立刻停止通信。有人可能会问,如果有人一直这么捣乱怎么办?那不是无法通信了?答案是的确是这样的,例如有人控制了你连接互联网的路由器,他的确可以针对你。但是一些重要的应用,例如军队或者政府的内部网络,它们都不使用我们平时使用的公网,因此一般人不会破坏到他们的通信。 【问题3】

在双方的通信过程中,―黑客‖除了简单的重复发送截获的消息之外,还可以修改截获后的密文修改后再发送,因为修改的是密文,虽然不能完全控制消息解密后的内容,但是仍然会破坏解密后的密文。因此发送过程如果黑客对密文进行了修改,―客户‖和―服务器‖是无法判断密文是否被修改的。虽然不一定能达到目的,但是―黑客‖可以一直这样碰碰运气。 〖解决方法〗

在每次发送信息时,先对信息的内容进行一个hash计算得出一个hash值,将信息的内容和这个hash值一起加密后发送。接收方在收到后进行解密得到明文的内容和hash值,然后接收方再自己对收到信息内容做一次hash计算,与收到的hash值进行对比看是否匹配,如果匹配就说明信息在传输过程中没有被修改过。如果不匹配说明中途有人故意对加密数据进行了修改,立刻中断通话过程后做其它处理。 3. 证书的构成和原理 3.1 证书的构成和原理

8

之前已经大概说了一个证书由什么构成,但是没有仔细进行介绍,这里对证书的内容做一个详细的介绍。先看下一个证书到底是个什么东西,在windows下查看一个证书时,界面是这样的,我们主要关注一下Details Tab页,其中的内容比较长,我滚动内容后后抓了三个图,把完整的信息显示出来:

里面的内容比较多——Version、Serial number、Signature algorithm 等等,挑几个重要的解释一下。 ◆Issuer (证书的发布机构) 指出是什么机构发布的这个证书,也就是指明这个证书是哪个公司创建的(只是创建证书,不是指证书的使用者)。对于上面的这个证书来说,就是指\这个机构。 ◆Valid from , Valid to (证书的有效期) 也就是证书的有效时间,或者说证书的使用期限。过了有效期限,证书就会作废,不能使用了。 ◆Public key (公钥) 这个我们在前面介绍公钥密码体制时介绍过,公钥是用来对消息进行加密的,第2章的例子中经常用到的。这个数字证书的公钥是2048位的,它的值可以在图的中间的那个对话框中看得到,是很长的一串数字。 ◆Subject (主题) 这个证书是发布给谁的,或者说证书的所有者,一般是某个人或者某个公司名称、机构的名称、公司网站的网址等。对于这里的证书来说,证书的所有者是Trustwave这个公司。

◆Signature algorithm (签名所使用的算法) 9

就是指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名(第1.5节中解释过数字签名)。

◆Thumbprint, Thumbprint algorithm (指纹以及指纹算法) 这个是用来保证证书的完整性的,也就是说确保证书没有被修改过,这东西的作用和2.7中说到的第3个问题类似。其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。注意,这个指纹会使用

\这个证书机构的私钥用签名算法(Signature algorithm)加密后和证书放在一起。

注意,为了保证安全,在证书的发布机构发布证书时,证书的指纹和指纹算法,都会加密后再和证书放到一起发布,以防有人修改指纹后伪造相应的数字证书。这里问题又来了,证书的指纹和指纹算法用什么加密呢?他们是用证书发布机构的私钥进行加密的。可以用证书发布机构的公钥对指纹和指纹算法解密,也就是说证书发布机构除了给别人发布证书外,他自己本身也有自己的证书。证书发布机构的证书是哪里来的呢???这个证书发布机构的数字证书(一般由他自己生成)在我们的操作系统刚安装好时(例如windows xp等操作系统),这些证书发布机构的数字证书就已经被微软(或者其它操作系统的开发机构)安装在操作系统中了,微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认就安装在操作系统里面了,并且设置为操作系统信任的数字证书。这些证书发布机构自己持有与他自己的数字证书对应的私钥,他会用这个私钥加密所有他发布的证书的指纹作为数字签名。

3.2 如何向证书的发布机构去申请证书

举个例子方便大家理解,假设我们公司\花了1000块钱,向一个证书发布机构\为我们自己的公司\申请了一张证书,注意,这个证书发布机构\是一个大家公认并被一些权威机构接受的证书发布机构,我们的操作系统里面已经安装了\的证书。\在给我们发布证书时,把

Issuer,Publickey,Subject,Validfrom,Valid to等信息以明文的形式写到证书里面,然后用一个指纹算法计算出这些数字证书内容的一个指纹,并把指纹和指纹算法用自己的私钥进行加密,然后和证书的内容一起发布,同时\还会给一个我们公司\的私钥给到我们。我们花了1000块钱买的这个证书的内容如下:

×××××××××××××××证书内容开始××××××××××××××××× Issuer :SecureTrust CA Subject : ABC Company

10


实例解析数字证书原理 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:化学与化工系学生会年度工作考评自评材料 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: