简介
今天的互联网是一个存在高度威胁的环境。特别是,供应链攻击,即攻击者攻击软件下载和更新的过程,现在很频繁。因此,在安装和使用它之前,完全验证您下载的任何软件都是很重要的。
对于OpenWrt,这样做需要了解提供您安装的二进制文件的Web服务器的组织结构。以x86-64的21.02.0版本为例,其结构为:
https://downloads.openwrt.org/releases/21.02.0/ - 21.02.0版本发布的所有文件
https://downloads.openwrt.org/releases/21.02.0/packages/ - 21.02.0 版本发布的所有包
https://downloads.openwrt.org/releases/21.02.0/targets/ - 21.02.0版本发布的所有固件
https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/ - x86架构64位系统的所有包,其中包含一个表,其中包含一些简短的文件名、SHA256散列、文件大小和每个固件文件的创建日期
https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums - 所有文件的SHA256的校验和,内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/4ba0e2a956f2cf72b9f9a32f869eaf37.png)
https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums.asc -由21.02.0签名私钥创建的sha256sums文件的分离GPG签名。
注:什么是GPG签名?
GPG或GNU Privacy Guard是一套加密软件。 它可用于加密或签署数据和通信,以确保其真实性。
这种类型的加密基于密钥对。 公钥存在于密钥服务器(例如keyserver.ubuntu.com)上,私钥保密。 使用公钥,可以validation私钥所做的签名。 同样,知道某人的公钥将允许您加密只能由相应密钥的持有者读取的消息。
21.02.0签名密钥将验证sha256sums.asc文件中的签名。sha256sums.asc文件中的签名验证了sha256sums文件的完整性。SHA256sums文件中的SHA256散列验证了64目录中单个文件的完整性。
为了完全验证一个固件文件,需要下载如下文件:
需要验证的固件
该固件的sha256sums文件
sha256sums.asc文件
公钥
操作步骤如下:
用公钥校验sha256sums文件.
根据sha256sums文件中的hash值校验固件.
如果签名检查失败或SHA256散列不匹配,则不下载的固件。否则可能损害你的路由器,或它可能是恶意的网络勒索软件。
Linux系统操作示例
公钥下载网址:https://openwrt.org/docs/guide-user/security/signatures
# Download filescd/tmp curl --progress-bar-o openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz \ curl --progress-bar-o sha256sums \ https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums curl --progress-bar-o sha256sums.asc \ https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums.asc
# Import GPG public key gpg --receive-keys 88CA59E88F681580
# Check GPG public key fingerprint gpg --fingerprint 88CA59E88F681580
# Verify GPG signature gpg --status-fd1--with-fingerprint--verify sha256sums.asc sha256sums 2>&1|grep-e Good
# Verify SHA256 checksums sha256sum --ignore-missing-c sha256sums 2>/dev/null |grep-e OK |