校验 CentOS 7 镜像文件

验证镜像文件的原因

CentOS Vault(http://vault.centos.org/)页脚的镜像站链接上有段英文,指出页脚的镜像站链接不受 CentOS 团队的监控,除此之外还有一个原因就是镜像文件下载的过程中也有可能被篡改,通过文件校验可以保证你下载的镜像文件是完整、未被篡改的。

Tips:下面是我参考https://wiki.centos.org/TipsAndTricks/sha256sum总结出来的校验方法,因为处理镜像文件一般都是在windows环境下,所以这里我只介绍windows环境下校验镜像文件的方法。

文件校验(1)

首先需要对文件校验有一定认识,参考百度百科的部分介绍:

每个文件都可以用 MD5 验证程序算出一个固定的 MD5 码来。软件作者往往会事先计算出他的程序的 MD5 码并帖在网上。因此,在网上看到某个程序下载旁注明了 MD5 码时,可以把它记下来,下载了这个程序后用 MD5 验证程序计算你所下载的文件的 MD5 码,和你之前记下 MD5 码比较,就知道你下的是不是原版了,如果两者相同,那么你所下载的是原版。如果计算出来的和网上注明的不匹配,那么你下载的这个文件不完整,或是被别人动过手脚。

Tips:文件校验除了使用MD5,还使用sha1、sha256、sha512等算法。关于计算工具,这里我推荐MD5 & SHA Checksum Utility,下载链接:https://raylin.wordpress.com/downloads/md5-sha-1-checksum-utility/

 

校验CentOS 7.4 Everything镜像

MD5 & SHA Checksum Utility是一个可以直接运行的程序。

将CentOS 7.4镜像直接拖入这个工具,或者点击Browse选择。

大概几分钟之后就可以计算出CentOS 7.4镜像的MD5、SHA1、SHA256、SHA512值,左侧可以取消选中不需要计算的的值,减少计算时间。

打开CentOS Vault的CentOS 7.4目录,虽然CentOS Vault的ISO不能够下载(点击会跳转到镜像站),但是sha1.sum.txt、sha1sum.txt.asc等文本文件是可以下载的。

这里也不用下载下来,直接点击就可以在浏览器中打开你想要验证方式的txt文档。这里我选择的是sha256的校验方式,将sha256sum.txt中CentOS-7-x86_64-Everything-1708.iso前面那串无规律的数字(也就是Everything的sha256值)复制。

粘贴至红框处,点击Verify。

校验成功,如图所示

校验失败,如图所示

Tips:sha1的校验方式类似。

这里不使用美国镜像站中的sha256sum.txt文件文件,是因为美国镜像站不由CentOS团队维护,而CentOS Vault是由 CentOS 团队维护的,权威性更高。

文件校验(2)

百度百科文件校验 的后半部分:

不过这种方式(MD5)依旧有漏洞,第三方截获到文件之后,将修改后的文件同md5码一起放出来,接收方拿到文件后,依旧无法鉴别。正式基于此,MAC(消息校验码)诞生了,MAC是发送方和接收放约定的一个特定的数值串,当发送方发送文件时,将文件内容加上MAC一起进行HASH计算(MAC不随文件一同发送),此时第三方尽管截获到此文件,由于没有MAC,因此无法再计算出正确的HASH值。当接受拿到文件时,将文件同自身拥有的MAC一起进行校验对比HASH值,即可判定文件是否是发送方发过来的原文件。

Tips:也就是说单通过sha256校验CentOS镜像文件并不完全可靠,但是CentOS也没有使用MAC(消息验证码),而是采用了数字签名的方式,增强对CentOS镜像文件的校验。

一般情况下镜像文件通过sha256进行校验就可以了,了解数字签名完全是我出于对sha256sum.txt.asc这个文件的好奇,这部分涉及的东西要完整的写出来可能需要好几篇文章,加上镜像文件校验这部分实际很少有人去做,所以这里我就略讲,根据我文章中涉及的关键词去百度,很快就应该就能基本理解数字签名涉及的技术。推荐参考:https://blog.csdn.net/21aspnet/article/details/7249401#http://www.ruanyifeng.com/blog/2013/07/gpg.htmlhttps://www.gnupg.org/howtos/zh/index.html

OpenPGP

OpenPGP是一个标准,实现这个标准的软件有很多个,Windows、Linux、MAC的客户端都有,建议以Linux的客户端“GPG”为关键词百度,会搜索出较多的内容,OpenPGP主要有加解密和数字签名两个功能。

加解密

OpenPGP软件(比如GPG)能够根据一些算法生成公钥和私钥(也叫密钥对),密钥对实际上就是两个文本文件,可以通过复制粘贴传播。公钥加密后的文件只能由对应的私钥解密,通过私钥可以推导出公钥,但是通过公钥无法推导出私钥。

eg:总司令把公钥复制给每一个将军,每个将军都安装上OpenPGP软件,将军将需要汇报的军情通过OpenPGP软件使用公钥进行加密,再通过邮件发送给总司令,总司令收到邮件后,将加密后的军情通过OpenPGP软件使用私钥解密后阅读。只有拥有私钥才能够解密文件,否则看到的就是一堆乱码,所以即使间谍有OpenGPG软件,截获了公钥和邮件,也无法看懂军情。如果总司令还需要和副司令分享军情,只需要把私钥复制给副司令一份,副司令也安装上OpenPGP软件,让将军发邮件的时候抄送给副司令,这样两位司令就都可以阅读军情了。

数字签名

数字签名是用私钥签名 ,公钥校验。私钥是作者独有的,作者用私钥计算出作品的一个唯一值(数字签名),附加到作品的旁边(或者是添加到作品末尾)提供下载,用户把作品、数字签名、公钥下载下来,再用公钥校验作品和数字签名。

同一件作品,不同私钥计算出的数字签名不同,某一个私钥的数字签名只能由对应的公钥才能成功校验,作品一旦被修改过,公钥必然无法校验成功。也就是说作品、数字签名、公钥三者任意一者不对应,用户都无法校验成功。单是使用公钥去校验作品和数字签名能否对应,也存在MD5那种校验方式的缺陷,有可能黑客修改作品后,用黑客的私钥签名,下载到的作品、数字签名、公钥都是黑客的,所以数字签名还引用了公钥验证。公钥认证又有两种方式,一种是作者去一些官方认证机构(CA),认证公钥,用户把下载到的公钥再去和CA服务器的公钥对比,另一种是通过公钥的一个唯一ID(指纹),去和作者确认,OpenPGP采用的是第二种公钥认证方式。

sha256sum.txt.asc数字签名校验

CentOS 并不是直接对镜像文件进行数字签名,而是对CentOS的sha*sum.txt进行数字签名,只要证明sha*sum.txt是完整的,再通过文件校验(1)的sha*值对比法就能证明镜像文件是完整的。

sha256sum.txt下面有一个sha256sum.txt.asc,它也是一个文本文档,也可以点击直接在浏览器中打开,它就是用来校验sha256sum.txt的完整性。

1.下载sha256sum.txt.asc

Tips:直接点击sha256sum.txt.asc会在浏览器中打开该文件,需要右键链接另存为。

2.安装OpenPGP的windows客户端——gpg4win

有兴趣了解到这一步的人,动手能力应该都不错了,就不介绍怎么下载安装gpp4win了。

3.下载证书(也就是公钥)

前往CentOS官网下载 CentOS 7 证书:https://www.centos.org/keys/,也是需要右键“链接另存为”才能够下载。

4.导入证书(公钥)

安装gpg4win后,桌面会有这个图标,打开即可。

这里一定要选择任意文件,才可以看到刚才在CentOS下载的证书(公钥)。

  

 4.核对证书

 百度一个在线文本对比工具

将导入证书的指纹与 CentOS 官网提供的证书指纹,导入文本对比工具对比,如果是一致的,就说明你导入本地的证书(公钥)是CentOS官方的证书。

5.开始校验

选择下载下来的sha256sum.txt.asc

 这样就代表,校验成功。

将sha256sum.txt.asc用记事本打开

设置自动换行,方便查看。

这里我添加了一个大写字母A,同样的方法再次校验

这样就代表校验失败,说明文件被修改过。

sha256sum.txt.asc校验镜像文件的逻辑

对比sha256sum.txt.asc和sha256sum.txt,sha256sum.txt.asc除了一些分隔符,主要就是多了一段无规律的字符串,这段无规律的字符串就是数字签名。这里CentOS采用的是将数字签名结合在原文件下面的方式,还有一种方式是原文件和数字签名分开提供下载。通过成功校验sha256sum.txt.asc,说明下载到本地的sha256sum.txt.asc中红圈部分的内容是未被篡改的,之后再结合用文件校验(1)的方法,采用sha256值校验镜像文件,这时候sha256值校验就应该用下载到本地的sha256sum.txt.asc文件的sha256值,因为通过校验sha256sum.txt.asc只是说明了本地这个sha256sum.txt.asc红圈部分的内容是未被修改的,而不能说明网页中打开的sha256sum.txt.asc是未被篡改的,存在浏览器中查看的sha256sum.txt.asc是被黑客篡改过的可能。

对于数字签名和原文件分开的方式,就需要将两者都下载下来,一起导入校验程序。

指纹是证书(公钥)的唯一ID,通过比对指纹,可以确定下载的证书是正确的。如果没有比对,那就和文件校验(1)的缺陷一样,有可能公钥、原文件、数字签名三者都被篡改了。CentOS采用的是在官网公布证书的指纹,除非黑客把官网黑了,放上自己证书的指纹,并且把公钥、sha256sum.txt.asc、镜像文件的下载链接也都黑了,不然就一定能够确定下载的镜像文件的真假。

posted @ 2019-04-16 12:36  YogurtWu  阅读(3048)  评论(1编辑  收藏  举报