网站 团队,淄博建设公司网站,iis网站没有属性,不需要验证码的注册网站#x1f4fa; B站#xff1a;博主个人介绍 #x1f4d8; 博主书籍-京东购买链接*#xff1a;Yocto项目实战教程 #x1f4d8; 加博主微信#xff0c;进技术交流群#xff1a; jerrydev 工具篇#xff1a;嵌入式与边缘设备常用安全工具速通 本篇只讲“工具怎么用、输出…B站博主个人介绍博主书籍-京东购买链接*Yocto项目实战教程加博主微信进技术交流群jerrydev工具篇嵌入式与边缘设备常用安全工具速通本篇只讲“工具怎么用、输出怎么看、结果怎么验证”。不展开算法推导也不绑定任何特定平台Jetson、RK、NXP、Qualcomm、Raspberry Pi 都适用。在安全工程里最怕的不是“不会某个算法”而是你生成了东西但不知道它是什么私钥还是证书、哈希还是签名。你执行了命令但不知道输出意味着什么通过还是失败、覆盖范围是什么。你做了保护但没法给出可验收的证据无法复现、无法定位。所以本篇的定位是把常用安全工具当作“工程验证工具箱”让你能在命令行里把安全结论落成证据。1 工具清单总览下面是一份最常用、最值得写进书里的工具清单。你可以把它当作“工具地图”。任务最常用工具你要得到的证据文件是否被改sha256sum / openssl dgst哈希值是否一致文件来源是否可信opensslsign/verify验签通过/失败证书/密钥到底是什么opensslx509/pkey/ file类型、长度、格式做一个加密分区验证cryptsetup/dev/mapper 是否出现、是否能挂载做只读镜像防篡改验证veritysetupverify 是否通过、篡改是否能发现看二进制结构hexdump / xxd关键字段是否如预期搜索泄露信息strings / grep是否出现证书、路径、明文关键字快速排错lsblk / blkid / dmesg / journalctl设备、映射、错误日志你会发现真正能让你“心里有底”的不是理论而是这些可重复的检查动作。2 使用工具的三条“工程规则”很多人学工具只记参数导致遇到问题就卡住。更有效的方式是遵守三条规则每个命令都要能回答“输入是什么、输出是什么”。每个输出都要能给出“如何验证对不对”的下一步。每套流程都要能复现命令、文件、版本、路径要固定。建议你在项目里建一个目录例如security-lab/ keys/ certs/ samples/ scripts/ notes/把所有示例产物与命令记录下来你会很快形成自己的“安全实验室”。3 sha256sum最常用的文件指纹工具3.1 它解决什么问题给文件计算SHA-256 哈希摘要你可以把它理解为文件指纹。文件内容改了一个字节摘要就会变化。它适合做下载文件校验镜像对比生成 manifest 清单它不适合直接做证明来源可信哈希没有身份3.2 最常用的 3 个用法用法 1 计算文件哈希sha256sum firmware.bin输出通常是hash firmware.bin你要看的就是hash。用法 2 校验多个文件是否匹配sha256sum -c manifest.txtmanifest.txt 里是类似这样的内容hash1 kernel.img hash2 rootfs.squashfs输出会告诉你每个文件OK或FAILED。用法 3 用于生成清单sha256sum kernel.img rootfs.squashfsmanifest.txt这是后续“签名清单”最常见的起点。3.3 常见问题文件路径不对你以为算的是 A其实算了 B。文件在计算过程中被修改尤其是日志文件或正在写入的镜像。最简单的排查方式ls-l firmware.binstatfirmware.bin确认文件大小与修改时间是否稳定。4 OpenSSL最强的通用安全工具箱OpenSSL 的定位可以用一句话概括它既是密码学库也是命令行工具。在嵌入式/边缘设备中我们更常用它的命令行能力算摘要dgst生成/查看密钥genpkey/pkey生成/查看证书req/x509签名与验签dgst -sign/-verify生成随机数rand4.1 openssl dgst摘要与签名验签4.1.1 计算 SHA-256等价于 sha256sumopenssl dgst -sha256 firmware.bin输出类似SHA2-256(firmware.bin) hash和 sha256sum 的哈希应当一致。4.1.2 生成 HMAC带密钥的完整性KEYtest_keyopenssl dgst -sha256 -hmac$KEYconfig.bin适用于配置文件防篡改小数据授权文件校验4.1.3 文件签名与验签最常用# 生成 RSA 私钥openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out sign_key.pem# 导出公钥openssl pkey -in sign_key.pem -pubout -out verify_pub.pem# 对固件签名openssl dgst -sha256 -sign sign_key.pem -out firmware.sig firmware.bin# 验签openssl dgst -sha256 -verify verify_pub.pem -signature firmware.sig firmware.bin你得到的“工程证据”是验签通过说明firmware.sig与firmware.bin匹配并且使用的是对应公钥。验签失败说明文件被改、签名被改或公钥不匹配。注意验签通过并不自动意味着“来源可信”。来源可信取决于verify_pub.pem 的可信性这个话题属于平台启动链或密钥管理章节。4.2 openssl pkey看懂密钥文件新手最常见的问题是这是私钥还是公钥这是 RSA 还是 ECC密钥长度是多少用下面命令即可openssl pkey -in sign_key.pem -text -noout你要关注的字段Key typeRSA/ECKey size3072/4096 或 P-256导出公钥openssl pkey -in sign_key.pem -pubout -out verify_pub.pem4.3 openssl req / x509证书与 CSR 的基本操作如果你只想写“工具篇”证书部分建议只讲如何生成 CSR如何自签开发验证如何查看证书内容4.3.1 生成 CSR证书请求openssl req -new -key sign_key.pem -out device.csr4.3.2 自签证书用于开发验证openssl req -x509 -new -key sign_key.pem -days365-out device.crt4.3.3 查看证书内容openssl x509 -in device.crt -text -noout你要看Subject / IssuerValidity有效期Public Key Info4.4 openssl rand生成随机数据openssl rand -hex3232表示 32 字节-hex输出为 hex方便拷贝和保存用途生成测试用密钥生成 nonce/随机种子测试生产环境里随机数质量与密钥存储是大话题本篇只讲工具用法。4.5 OpenSSL 常见排错证书解析失败检查 PEM/DER 格式验签失败确认签的是同一个文件、同一种哈希算法、没有换行或编码变化OpenSSL 3.x 算法不可用可能涉及 provider这个属于环境问题可在书中单独给一个 FAQ5 cryptsetup磁盘/分区加密卷管理工具5.1 它解决什么问题cryptsetup 用于管理LUKS/dm-crypt加密卷。你可以把它理解为负责初始化加密卷格式LUKS 头负责解锁并创建映射设备/dev/mapper/name真正加解密由内核 dm-crypt 完成5.2 最小可复现示例开发验证警告luksFormat 会清空目标分区。# 假设 /dev/sdb1 是测试分区sudocryptsetup luksFormat /dev/sdb1# 解锁创建映射设备sudocryptsetupopen/dev/sdb1 secure_volume# 在映射设备上创建文件系统sudomkfs.ext4 /dev/mapper/secure_volume# 挂载sudomount/dev/mapper/secure_volume /mnt# 写入测试文件echohello|sudotee/mnt/test.txtsync# 卸载并关闭sudoumount/mntsudocryptsetup close secure_volume5.3 你要拿到的证据open成功后是否出现/dev/mapper/secure_volume能否mkfs与mount关闭后 mapper 是否消失辅助排查命令lsblk blkidsudocryptsetup status secure_volume5.4 常见问题选错设备把系统盘格式化极其危险文件系统建在 /dev/sdb1 而不是 mapper 上逻辑错误忘记 close导致资源占用6 veritysetup只读系统镜像防篡改验证6.1 它解决什么问题veritysetup 是 dm-verity 的用户态工具用来为只读镜像生成校验元数据哈希树在挂载或验证前检查镜像是否被篡改它的价值是你可以用非常明确的方式证明镜像只要被改校验一定失败。6.2 最小示例验证篡改可检测准备一个测试镜像ddif/dev/zeroofrootfs.imgbs1Mcount32生成 verity 元数据veritysetupformatrootfs.img rootfs.verity验证veritysetup verify rootfs.img rootfs.verity模拟篡改改 1 个字节printf\x01|ddofrootfs.imgbs1seek10count1convnotrunc veritysetup verify rootfs.img rootfs.verity你应当看到篡改前 verify 通过篡改后 verify 失败6.3 你要拿到的证据“篡改 1 字节必失败”这一点非常关键适合作为验收条款。7 hexdump 与 xxd把二进制看明白二进制文件里经常包含LUKS 头证书/公钥片段固件头magic、版本号、长度、偏移7.1 常用命令hexdump -C firmware.bin|headxxd -g1-l256firmware.bin你通常要看文件开头的 magic 字段某段偏移处是否符合预期7.2 一个实用小技巧配合 grep 搜索二进制中的可见字符串strings -n8firmware.bin|grep-icert8 strings快速发现“是否泄露了不该出现的东西”strings 的作用非常朴素但非常实用从二进制里提取可读字符串典型用途检查是否把测试密钥、证书、路径、域名、账号等打进了固件检查编译信息与版本信息是否暴露常用命令strings -n8app.bin|headstrings -n8app.bin|grep-iBEGINstrings -n8app.bin|grep-ipassword9 file识别文件类型新手强烈建议掌握很多“看不懂”的问题用 file 一下就清楚。filesign_key.pemfiledevice.crtfilefirmware.bin它可以帮你快速判断这是 PEM 还是 DER这是证书还是私钥这是 ELF 还是 raw 镜像10 一套最小可交付的“工具验证流程”如果你想把工具篇写得更像“工程教材”建议在结尾给一个完整的闭环练习。10.1 练习目标对一个更新包做完整性与来源验证10.2 练习材料firmware.bin模拟固件sign_key.pem / verify_pub.pem签名密钥对10.3 发布侧sha256sum firmware.binmanifest.txt openssl dgst -sha256 -sign sign_key.pem -out manifest.sig manifest.txt10.4 设备侧openssl dgst -sha256 -verify verify_pub.pem -signature manifest.sig manifest.txt sha256sum -c manifest.txt10.5 验收点篡改 firmware.bin 任意 1 字节必须失败替换 manifest.txt 必须失败这就是你后续写“启动链与 OTA 安全”时最常复用的工具闭环。11 常见问题速查11.1 为什么我用 openssl 和 sha256sum 算出来不一样不是同一个文件路径文件在计算时被修改命令选的算法不一致sha256 vs sha111.2 cryptsetup 能用但性能很差是否启用了加密加速不在工具层讨论但你可以先用工具确认“功能正确”再到平台章看性能与加速。11.3 veritysetup verify 通过了就安全了吗它证明镜像内容没被改但不加密也不证明来源。12 小结本篇只讲工具但你应该已经形成一个非常实用的能力用 sha256sum/openssl 把文件一致性与签名验签做成证据用 cryptsetup 把“存储保密性”做成可复现流程用 veritysetup 把“篡改可检测”做成验收条款用 hexdump/xxd/strings/file 快速定位二进制与产物类型问题B站博主个人介绍博主书籍-京东购买链接*Yocto项目实战教程加博主微信进技术交流群jerrydev