系统自带命令可验证文件完整性与来源可信性:windows用sfc /scannow和get-authenticodesignature,linux用rpm -va或debsums配合gpg,通用方法为哈希比对;需严格核验证书有效期、用途及信任链。
直接用系统自带命令就能判断文件有没有被改过、是不是官方正版。关键看两件事:文件内容是否一致(完整性),以及来源是否可信(数字签名)。不同系统方法不同,但都不需要额外装软件。
Windows:用sfc和PowerShell快速查
系统级文件被篡改,优先运行管理员权限的命令:
- sfc /scannow:扫描所有受保护的系统文件,自动修复损坏或被替换的文件。执行后看输出里有没有“发现损坏”或“已修复”字样。
-
Get-AuthenticodeSignature:验证任意.exe、.sys、.msi等文件的数字签名。例如:
Get-AuthenticodeSignature "C:\Windows\System32\calc.exe"
关注返回的Status字段——只有显示Valid才算真正有效;NotSigned表示没签名,Revoked说明证书已被吊销,都不能信。 - 驱动文件还要多看一层:在设备管理器里打开驱动属性 → “驱动程序详细信息” → 找到.sys文件 → 右键“属性”→“数字签名”→点“详细信息”,确认“签名状态”为正常,且“签名者”是硬件厂商(如Intel、AMD、NVIDIA)或微软。
Linux:rpm/debsums + GPG组合验证
包管理器安装的系统文件,优先用发行版原生命令检查:
- CentOS/Rocky Linux:sudo rpm -Va,会列出所有被修改的文件(开头带S、M、5等标记的行),重点关注/etc/和/usr/bin/下的核心二进制文件。
- Ubuntu/Debian:sudo debsums --all --changed,只显示校验和不匹配的已安装文件,结果清晰直接。
- 下载的独立文件(比如脚本、tar包),用GPG验证数字签名更可靠:
先导入发布者公钥(如gpg --import key.asc),再运行
gpg --verify file.tar.gz.asc file.tar.gz
输出含“Good signature from”且指纹匹配,才说明文件既完整又来自可信发布者。
通用技巧:哈希值比对最直观
官网提供MD5/SHA256值时,本地算一遍就能确认下载过程没出错:
- Windows(PowerShell):
Get-FileHash -Algorithm SHA256 .\setup.exe - Linux/macOS:
sha256sum setup.exe 或 shasum -a 256 setup.exe - 注意:SHA256比MD5更抗碰撞,优先采用;比对时要一字不差,包括空格和换行。
别跳过的细节:签名有效性不止看“正常”二字
哪怕显示“此数字签名正常”,也得再确认三点:
- 证书有效期:当前日期必须落在“有效期从…至…”范围内;
- 用途匹配:驱动文件必须含“Kernel Mode Code Signing”增强型密钥用法;
- 证书链可信:在“证书路径”页里,每一级都要显示“此证书正确到根证书”,不能出现红色警告图标。











