亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

Linux下用数字签名验证二进制文件完整性:ELF签名实战脚本详解

数字签名核心要件

数据可被拦截篡改,接收文件真实性至关重要。用户A通过邮件发送二进制文件给用户B,B如何确信文件未被篡改?数字签名(DS)通过将数据绑定发送者唯一凭证提供可靠方案。

Linux下用数字签名验证二进制文件完整性:ELF签名实战脚本详解

64位ELF二进制签名实战实现

采用直接签名方案(无第三方仲裁),私钥签名、公钥证书验证。流程:

  1. 生成源二进制MD5哈希
  2. 创建私钥与自签名公钥证书
  3. 签名二进制:
    • 用私钥加密MD5哈希
    • 将加密哈希存入ELF新.sig段
    • 证书存入~/.ssh备后续验证

全流程可用openssl、objcopy、md5sum脚本化。下附自动化签名ELF脚本sign_elf.sh(文末附无行号源码)。

#!/bin/bash
KEY_DIR="$HOME/.ssh"
PRIVATE_KEY="$KEY_DIR/priv.key"
CERTIFICATE="$KEY_DIR/pub.crt"
SUBJECT="/C=RU/ST=Nizhni Novgorod/L=Nizhniy Novgorod/O=Auriga/OU=DEV/CN=www.auriga.com"
if [ "$#" = "0" ]; then echo "Usage: sign_elfs.sh [ELF files]"; exit 1; fi
[ ! -d "$KEY_DIR" ] && mkdir "$KEY_DIR"
# 生成私钥与证书
openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "$PRIVATE_KEY" -out "$CERTIFICATE" -days 365 -subj "$SUBJECT"
for ELF_BIN in "$@"; do
  ELF_BASE_NAME="${ELF_BIN##*/}"
  ELF_BIN_SIGNATURE="$ELF_BASE_NAME.sha256"
  ELF_BIN_MD5="$ELF_BASE_NAME.md5"
  if [ ! -f "$ELF_BIN" ]; then echo "Error: no such file $ELF_BIN"; exit 103; fi
  # 移除旧.sig段
  objcopy --remove-section=.sig "$ELF_BIN"
  # 添加512字节零填充.sig段
  rm -f dummy.txt && touch dummy.txt && truncate --size=512 dummy.txt
  objcopy --add-section .sig=dummy.txt --set-section-flags .sig=noload,readonly "$ELF_BIN"
  # 计算含.sig段的MD5
  md5sum "$ELF_BIN" | awk '{ print $1 }' > "$KEY_DIR/$ELF_BIN_MD5"
  # 私钥签名MD5哈希
  openssl dgst -sha256 -sign "$PRIVATE_KEY" -out "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5"
  # 可选即时验证
  openssl dgst -sha256 -verify <(openssl x509 -in "$CERTIFICATE" -pubkey -noout) -signature "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5"
  # 嵌入加密哈希到.sig段
  objcopy --update-section .sig="$KEY_DIR/$ELF_BIN_SIGNATURE" --set-section-flags .sig=noload,readonly "$ELF_BIN"
  # 显示.sig段内容供检查
  objdump -sj .sig "$ELF_BIN"
done
rm -f dummy.txt
ls -ls ~/.ssh

脚本关键步骤解析

第19行:证书生成

openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "$PRIVATE_KEY" -out "$CERTIFICATE" -days 365 -subj "$SUBJECT"

生成~/.ssh/priv.key(私钥)与~/.ssh/pub.crt(证书含公钥)。

循环处理每个ELF文件(第21行起)

移除旧.sig段,添加512字节占位段,计算MD5,私钥签名,可选验证,嵌入签名替换占位,完成签名ELF。

接收方可提取.sig段,用公钥证书解密,比对重新计算的文件哈希,验证完整性。

物联网技术

  1. 驾驭工业4.0:构建制胜数字化路线图的经验证实策略
  2. 神经网络加速X射线成像重建
  3. 成都Connext DDS用户组:真实反馈驱动产品路线图
  4. 驱动IoT协同:Bosch连接性CoC如何塑造互联未来
  5. 借助物联网为 AI 做好制造运营准备
  6. 数字孪生:解锁制造业智能边缘物联网——第二部分
  7. 预测性维护:借力工业 4.0 实现不间断生产
  8. 你的制造工厂准备好迎接物联网了吗?实战指南
  9. 数字保险:重塑购买与管理保单的五大趋势
  10. 西部数据推出面向工业物联网与边缘计算的坚固型 64 层 3D NAND 存储
  11. 西部数据发布面向工业物联网的坚固型 64 层 3D NAND 存储
  12. 云存储为何是物联网数据存储的必然选择