哈希要卡在三个时间点
哈希是证明「这份数据从头到尾没变过」的唯一手段,但只在某一个时刻算一次意义有限。规范做法是在三个节点各核对一次:采集完成时(源盘与镜像各记一次)、分析结束时(复核镜像与镜像副本)、证据返还或归档前(再次复核)。任何一次结果与记录不一致,都要暂停流程先查清原因,而不是继续往下走。
基本信息
| 时机 1 | 采集完成:源设备与镜像各记录一次,方向与范围写清楚 |
|---|---|
| 时机 2 | 分析结束:复核镜像文件本身,确认分析过程未改动证据 |
| 时机 3 | 归档或返还前:复核存储介质上的镜像副本,确认长期保存未损坏 |
| 常用算法 | SHA-256(新流程首选);MD5 仅作为与旧记录兼容的补充 |
| 记录要素 | 哈希值、算法、时间、执行人、被校验对象的完整路径与大小 |
| 复核方式 | sha256sum -c 清单文件,批量比对并保留输出 |
典型使用场景
- 交付证据时说明镜像自采集以来未被修改
- 判断归档介质是否发生静默损坏(位衰减)
- 排除「分析结果差异是否来自证据改动」这一可能性
- 多份副本之间做一致性比对
- 为报告附录提供可复核的校验清单
- 长周期案件中途交接时,确认接手到的仍是原始副本
记录与复核
记录与复核
# 采集完成:镜像与源设备分别计算,追加写入清单(带时间与执行人注释)
sha256sum /evidence/sdb.dd | tee -a /evidence/hashes.txt
# 源设备仍可读时补记一次;已归还则只能依赖当时记录
sha256sum /dev/sdb | tee -a /evidence/hashes.txt
# 分析结束时复核镜像(清单里只保留镜像行,避免把设备路径也拿去校验)
sha256sum -c /evidence/hashes.txt --ignore-missing
# 归档介质上的副本再核对一次
sha256sum /mnt/archive/sdb.dd
# 把复核输出一并存档,作为过程记录
date -u; hostname; sha256sum -c /evidence/hashes.txt --ignore-missing | tee -a /evidence/hash_recheck.log校验清单要素
| 要素 | 作用 | 缺失后果 |
|---|---|---|
| 哈希值与算法 | 唯一标识数据内容 | 无法判断算法不一致时是否为同一份数据 |
| 被校验对象路径与大小 | 避免把设备与镜像混在一起比对 | 校验对象错位,复核结论无意义 |
| 校验时刻(UTC) | 把校验行为放入时间线 | 无法证明是何时校验的 |
| 执行人 | 责任归属与交接依据 | 出了问题无法追溯 |
| 工具与版本 | 不同实现或参数可能产生差异 | 结果不一致时无法排除工具因素 |
只写不验证的哈希清单没有实际意义。每次复核都要留下带时间与执行人的输出记录,并在清单里注明哪些是对源设备、哪些是对镜像文件。
源设备的哈希在采集后通常无法复测(设备已归还或已改写),必须在现场当场记录。若源设备容量大、时间紧张,可先只记录采集范围(起止扇区)与镜像哈希,并在报告里如实说明未做源侧校验。