传统方案在软件前端做防篡改限制。看起来有效,但如果有人直接修改数据库,软件完全不知道。 我们的做法不同——哈希链在数据层,数据自己证明自己。
当有人绕过应用层直接修改数据库时,两种方案的表现截然不同
应用层的校验逻辑只检查"数据格式是否正确"。当 DBA 直接用 SQL 修改了数据库中的记录, 应用层重新读取时,数据格式依然合法,校验通过。软件以为数据是正常的。 审计员看到的也是"正常"的记录——篡改永远不会被发现。
哈希链在数据层。修改任何一条记录,它的哈希值变了,后续所有记录的 prev_hash 都对不上。 不需要软件参与——任何人拿到数据库文件,用独立工具扫描哈希链, 都能发现哪条记录被改过、从哪个位置开始断裂。
传统方案中,数据完整性依赖软件。没有软件,数据就是"裸数据",无法验证。 PharmaCFR 的哈希链写在数据里——数据离开软件,依然自带完整性证明。