验证镜像文件的原因

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.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、镜像文件的下载链接也都黑了,不然就一定能够确定下载的镜像文件的真假。

校验 CentOS 7 镜像文件的更多相关文章

  1. CentOS 7 镜像文件各个版本区别

    CentOS ISO 镜像文件的功能 引导安装 CentOS ISO 镜像文件包含有安装程序,官方称其为 Anaconda,用来引导安装 CentOS 提供 CentOS 的安装文件 镜像文件不一定包 ...

  2. 下载 CentOS 7 镜像文件

    CentOS 7 镜像文件的下载地址 CentOS 官网:https://www.centos.org/ 点击“Get CentOS Now” 点击想要下载的ISO镜像,(目前仅有“DVD ISO”和 ...

  3. centos ios镜像文件 安装详细

    1.挂载iOS镜像(先打开VM 选择虚拟机---->设置-->CD ---->使用ISO镜像文件 用浏览打开) 2.开始界面选择 3出现下面的界面 这是提示你是否扫描文件的完整性 我 ...

  4. centos 6.6 ios镜像文件 下载 官网和阿里云两种方式教你下载

    1百度一下:centos 打开打开官网.选择这一项 CET CENTOS 2选择 DVD ISO,双击下载 直接选择左键点击下载 这里需要迅雷 方法 二 打开 https://mirrors.aliy ...

  5. 从零开始构建一个centos+jdk7+tomcat7的docker镜像文件

    从零开始构建一个centos+jdk7+tomcat7的镜像文件 centos7系统下docker运行环境的搭建 准备centos基础镜像 docker pull centos 或者直接下载我准备好的 ...

  6. 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等

    一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...

  7. 初涉定制linux系统之——自动化安装Centos系统镜像制作

    最近碰到个需求:要在内网环境安装centos6.5系统并搭建服务,但由于自动部署脚本里安装依赖包使用的是yum安装,而服务器无法连接外网,实施人员也不会本地yum源搭建O__O "….. 本 ...

  8. 烂泥:CentOS6.5光盘以及ISO镜像文件的使用

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 学习CentOS有一段时间了,在平时使用过程中.系统镜像以及光盘使用的比较多,这篇文章就从实用的角度介绍相关有关光盘与镜像文件的使用. 因为物理机相关的 ...

  9. 攻城狮在路上(叁)Linux(二十四)--- linux设置开机挂载及镜像文件挂载

    虽然可以手动进行文件系统的挂载,但是每次都手动挂载就会很麻烦,开机挂载的目的就是实现文件系统的自动挂载. 一.开机挂载:/etc/fstab及/etc/mtab 主要是通过修改/etc/fstab文件 ...

随机推荐

  1. 使用MySQLMTOP监控MySQL性能

    一.服务器角色 服务器角色 172.18.35.29 10.160.22.14 (MySQL Master) 10.160.22.47 (MySQL Slave) 监控点 YES NO NO 被监控点 ...

  2. Qt的安装和使用中的常见问题(详细版)

    对于太长不看的朋友,可参考Qt的安装和使用中的常见问题(简略版). 目录 1.引入 2.Qt简介 3.Qt版本 3.1 查看安装的Qt版本 3.2 查看当前项目使用的Qt版本 3.3 查看当前项目使用 ...

  3. Java程序设计19——类的加载和反射-Part-A

    1 本文概要 本章介绍Java类的加载.连接和初始化的深入知识,并重点介绍Java反射相关的内容.本章知识偏底层点,这些运行原理有助于我们更好的把我java程序的运行.而且Java类加载器除了根加载器 ...

  4. Introduction to Razor Pages in ASP.NET Core

    https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/ 从ASP.NET Core 2.0.0版本之后,添加了新的特性Razor p ...

  5. 前端福利之个性化设置table的td宽度(总结)

    很多时候,我们在用到table时,都希望随意设置 每个单元格的宽度,而不希望单元格被内容撑开table的样式. 1.首先,设置table的宽度 width=“1000” 或者 width=“100%” ...

  6. Image 和byte[]之间的转换

    1.Image 转 byte[] public byte[] GetByteByImage(Image image) { byte[] bt = null; try { if (!image.Equa ...

  7. ZOJ3767 Elevator 2017-04-13 23:32 37人阅读 评论(0) 收藏

    Elevator Time Limit: 2 Seconds      Memory Limit: 65536 KB How time flies! The graduation of this ye ...

  8. View Pi's Status on WebBrowser

    1. install php and cgi support sudo apt-get install php5-common sudo apt-get install php5-cgi sudo a ...

  9. XEvent--Demo--使用XEvent来捕获在数据库DB1上发生的锁请求和锁释放

    --==============================================================--使用XEvent来捕获在数据库DB1上发生的锁请求和锁释放--=== ...

  10. 一.Jenkins的windows安装

    1,打开jinkens官网: https://jenkins.io/ ,点击 Download 进入下载界面 2,选择 Long-term Support 版本(推荐选择长期支持版本)->Win ...