↓ 跳过正文
  1. Posts/

从哈希到可编辑区块链:把区块链的核心概念讲明白

METEOR
作者
METEOR
记录技术探索、研究笔记与生活思考。

很多人第一次接触区块链时,会记住“不可篡改”四个字,却不一定知道这四个字是怎样实现的。再往前一步,就会遇到几个容易混淆的概念:哈希为什么会因为一点改动而完全不同?哈希碰撞是不是一定代表系统不安全?陷门又是什么?

这篇文章把这些概念串成一条线:哈希函数 → 区块链的链式结构 → 哈希碰撞 → 变色龙哈希 → 可编辑区块链。

一句话理解区块链 #

区块链是一种由多个节点共同保存和校验的、使用密码学保护的链式账本。数据被打包进区块,区块按顺序连接;区块一旦确认,历史记录通常只能追加,不能直接修改。

它依赖三件事:

  • 分布式保存:不是一台服务器保存唯一副本,而是多个节点各自保存账本。
  • 密码学校验:哈希、数字签名等机制帮助节点发现数据是否被改动。
  • 共识机制:节点按照规则确认哪些区块可以加入账本。

所以,“不可篡改”不是说物理上绝对不能改,而是说:一旦修改历史数据,伪造者必须同时通过哈希校验、节点验证和共识规则,现实成本通常非常高。

哈希:数据的数字指纹 #

哈希函数可以把任意长度的输入,计算成固定长度的摘要。例如,SHA-256 会输出 256 位结果,通常写成一串十六进制字符。

可以把它理解成文件的“数字指纹”:

1
2
H("hello world")  = b94d27b9...
H("hello worle")  = fdbae57d...

上面只把最后一个字母改了,但输出看起来完全不同。这是密码学哈希的雪崩效应:输入只改变一位,输出中也会有大量比特随机翻转。

雪崩效应的意义是让人无法根据输出的局部变化猜出输入改了哪里,同时让篡改很容易被检测出来。

区块为什么能连成一条链 #

一个区块通常包含交易或其他记录、时间戳,以及区块头信息。区块头会保存前一个区块的哈希值:

1
区块 A  --Hash(A)-->  区块 B  --Hash(B)-->  区块 C

假设有人修改了区块 A 中的一笔记录:

  1. A 的内容变了,Hash(A) 发生巨大变化;
  2. B 中保存的仍是旧的 Hash(A),因此链接校验失败;
  3. B 的区块内容也无法保持原来的链条关系,后面的 C、D 等区块会继续受到影响。

这就是传统区块链“修改一个历史区块,会引起连锁失效”的直观原因。攻击者不只要重新计算后续区块,还要让其他节点接受这条伪造链。

哈希碰撞到底是什么 #

哈希碰撞指两段不同的输入得到相同的哈希输出:

$$M_1 \ne M_2,\quad H(M_1)=H(M_2)$$

从数学上说,输入空间通常是无限的,而输出空间是固定的,所以碰撞一定存在。这可以由鸽巢原理直接推出。

但在工程上,重要的是“能不能在可接受的时间内主动找到碰撞”。SHA-256 的设计目标就是让攻击者几乎无法构造出实用碰撞。也就是说,碰撞在理论上存在,并不代表系统容易被碰撞攻击。

因此要区分两件事:

  • 普通密码哈希的碰撞:通常是需要避免的安全问题。
  • 变色龙哈希的可控碰撞:经过授权后主动生成,是一种设计出来的功能。

陷门是什么 #

陷门可以理解为一把特殊的秘密钥匙。没有这把钥匙时,某个问题在计算上很难解决;持有钥匙后,解决同一个问题就变得容易。

在可编辑区块链中,陷门通常属于变色龙哈希的密钥材料。它不是让任何人都能修改区块,而是让被授权的一方可以在保持哈希值不变的情况下,把旧消息替换成新消息。

变色龙哈希:允许授权的“同指纹替换” #

变色龙哈希(Chameleon Hash)是一种带陷门的哈希原语。它同时具备两种看似矛盾的性质:

  • 没有陷门的人,仍然很难构造碰撞;
  • 持有陷门的人,可以把不同消息适配成相同的哈希值。

标准定义通常包括四个算法:

  1. Setup:生成公共参数;
  2. KeyGen:生成公钥和陷门密钥;
  3. Hash:根据消息和随机数计算哈希;
  4. Adapt:持有陷门的一方,把旧消息对应的随机数调整为新随机数,使新旧消息的哈希保持一致。

形式上可以写成:

$$CH(pk,m_1,r_1)=CH(pk,m_2,r_2)=h$$

其中 $m_1 \ne m_2$,但哈希结果仍然是同一个 $h$。注意,通常不是“只改消息、哈希自动不变”,而是需要使用陷门计算配套的新随机数。

可编辑区块链怎样工作 #

传统区块链使用普通哈希连接区块,历史数据一改,后面的链就会失效。可编辑区块链则在特定位置使用变色龙哈希:

  1. 原始区块内容 $m_1$ 和随机数 $r_1$ 计算出哈希 $h$;
  2. $h$ 被写入区块头,并被后续区块引用;
  3. 当出现合法的删除、修正或脱敏请求时,经过授权的编辑方把内容改为 $m_2$;
  4. 编辑方使用陷门计算新的随机数 $r_2$;
  5. 新旧内容仍满足 CH(pk,m₁,r₁) = CH(pk,m₂,r₂) = h。

这样,区块内容可以被修订,后续区块引用的哈希仍然有效。

这并不意味着任何人可以偷偷改账。一个可靠的可编辑区块链还需要身份认证、审批策略、编辑日志和审计机制,明确记录“谁在什么时间、因为什么原因、修改了什么内容”。

为什么需要可编辑区块链 #

传统区块链的永久保存能力适合存证,却可能与现实中的数据治理要求发生冲突:

  • 用户要求删除个人敏感信息;
  • 业务发现链上记录录入错误;
  • 链上出现不应公开保存的非法或违规内容;
  • 数据法规要求数据主体拥有更正或删除权。

可编辑区块链试图在两者之间取得平衡:保留区块链的可验证性和审计能力,同时允许经过严格授权的有限修订。

三种常见实现思路 #

1. 基于变色龙哈希 #

用变色龙哈希替换部分普通哈希,编辑时通过陷门维持链式摘要不变。这是研究最广泛的一类方案,但陷门管理和权限控制很关键。

2. 双链或多链 #

主链保留原始记录,修正链记录后续编辑结果。读取数据时按照规则解释两条链。它更容易表达修改历史,但会增加存储和查询开销。

3. 基于共识投票的重写 #

由节点投票决定是否接受一次历史修订,必要时切换到新的链。它适合重大事件,通常不适合频繁的细粒度编辑。

最大风险:陷门不能由一个人随意掌握 #

如果一个管理员独占完整陷门,他理论上可以修改很多历史内容,这会形成新的单点风险。常见的解决思路是使用 Shamir 秘密共享:

  • 把陷门拆成多个份额,交给不同机构;
  • 设置 $(k,n)$ 门限,至少 $k$ 个机构同意才能执行编辑;
  • 单独一个机构拿到自己的份额,也无法完成修改。

再配合多方审批、身份签名和不可编辑的审计日志,可以降低滥用风险。

传统区块链与可编辑区块链 #

对比项传统区块链可编辑区块链
历史数据默认不可修改允许受控修订
主要摘要普通密码哈希常使用变色龙哈希
修改权限原则上不提供需要授权和审计
优点结构简单,篡改成本高更容易满足纠错、脱敏和合规要求
新风险脏数据可能永久存在陷门泄露或权限滥用

最后用五句话记住它们 #

  1. 哈希是数据指纹,输入稍微变化,输出通常会发生巨大变化。
  2. 区块链把前一区块的哈希写进后一区块,因此历史篡改会产生连锁校验失败。
  3. 哈希碰撞是不同输入得到相同输出;普通哈希要求碰撞难以构造。
  4. 陷门是让特定持有者可以解决某个困难问题的秘密钥匙。
  5. 变色龙哈希利用陷门产生可控碰撞,使可编辑区块链能够在授权、可审计的前提下修订历史数据。

可编辑区块链的关键,不是把区块链变成一个谁都能修改的数据库,而是把“修改”变成一种有权限、有条件、有记录、可追责的系统操作。

相关文章