随着互联设备、云计算、在线市场和社交平台推动现代社会大规模数字化转型,有效的网络安全已成为必需品而非可选项。而网络安全的核心在于…… 密码学, 确保信息安全的科学,使只有指定的各方才能阅读或验证信息。
密码学通过各种技术模糊数据含义,从而保障网络安全,同时确保在线操作的顺畅进行。它通过加密、哈希和数字签名等方法,确保信息的机密性、完整性和真实性。随着新技术的不断涌现,密码学方法持续增强安全系统,并保护全球个人、企业和政府的数据机密性、完整性和可用性。
这一点在区块链技术中体现得尤为明显。比特币、以太坊以及成千上万个其他区块链网络的运行都依赖于密码学。如果没有密码学,就无法在没有中央机构的情况下验证交易,无法防止任何人篡改历史记录,也无法证明数字资产的所有权。密码学并非区块链的单一功能,而是其他一切功能赖以构建的基础。
本指南面向希望用通俗易懂的语言了解密码学的初学者,具体介绍密码学在区块链中的工作原理、不同的类型和算法、如何抵御攻击以及随着量子计算成为现实世界关注的问题,密码学的未来发展方向。
另请参阅: 区块链中的数学和密码学原理
关键精华
- 密码学是一门利用数学技术保护信息的科学。在区块链中,它确保数据完整性、验证交易、控制访问权限,并使账本防篡改。
- 区块链中使用的三种主要加密方法是对称加密、非对称加密和哈希。每种方法都有其独特的用途。
- 非对称密码学,特别是椭圆曲线密码学(ECC),是区块链交易签名和钱包地址生成的基石。
- SHA-256 是比特币中使用的主要哈希函数。它将任何输入转换为固定的 256 位输出,是工作量证明挖矿和区块链接的基础。
- 数字签名同时提供身份验证、数据完整性和不可否认性,这三个特性是验证区块链交易而无需中央机构所必需的。
- Merkle 树允许高效地验证单个交易,而无需下载整个区块链,它使用分层哈希为每个区块生成一个根哈希。
- 区块链网络常见的加密攻击包括暴力破解、中间人攻击、重放攻击、女巫攻击和51%攻击。每种攻击都利用了网络的不同层级。
- 美国国家标准与技术研究院 (NIST) 于 2024 年 8 月最终确定了三项后量子密码学标准(CRYSTALS-Kyber、CRYSTALS-Dilithium 和 SPHINCS+)。专家调查显示,到 2030 年代末,具备密码学应用价值的量子计算机出现的概率将超过 50%。区块链社区现在就必须开始规划迁移事宜。
什么是密码学?通俗易懂的介绍
密码学一词源于希腊语“kryptos”(隐藏)和“graphia”(书写)。它是研究和实践在敌方可能拦截、篡改或伪造通信的情况下,如何保护通信和数据安全的技术。
从最基本的层面来说,密码学利用数学算法和密钥,将可读信息(称为明文)转换成不可读的加密形式(称为密文)。只有拥有正确密钥的一方才能逆转这种转换,恢复原始信息。这就是加密。但密码学的功能远不止于隐藏数据。它还能让你验证数据是否被篡改,确认消息的创建者或发送者,并证明特定方授权了特定操作,所有这些都无需依赖任何中央中介机构。
这些特性直接对应区块链网络的核心需求。区块链必须允许任何人验证交易数据未被篡改(完整性),确认交易是由资金的合法所有者发起的(认证),防止同一笔资金被重复使用(不可否认性),并且所有这些都无需银行、政府或其他中心机构介入解决纠纷。
密码学仅凭数学就使这一切成为可能。
一个简单的类比: 把密码学想象成一套锁箱和钥匙。对称密码学允许发送方和接收方使用同一把钥匙来锁定和解锁同一个锁箱。非对称密码学则允许每个人都拥有一把公钥来锁定锁箱,但只有拥有对应私钥的人才能打开它。哈希运算就像一台单向研磨机:输入数据后,你会得到一个唯一的输出,但你永远无法仅凭输出还原出原始输入。
密码学简史
密码学并非新概念。简单的密码已被使用了数千年,用于保护军事通信。尤利乌斯·凯撒曾将字母表中的每个字母移动固定位数来编码信息,这种方法如今被称为凯撒密码。古斯巴达人则使用斯库塔勒密码,将一条皮革缠绕在特定直径的杆子上,以此来揭示隐藏的信息。
20世纪50年代和60年代,早期的大型计算机使用简单的专有密码来保护隔离计算环境中的数据。随着70年代分布式网络的扩展,对可互操作的密码标准的需求变得至关重要。1976年,惠特菲尔德·迪菲和马丁·赫尔曼的开创性工作引入了公钥密码学的概念,解决了此前难以解决的问题:两个从未谋面的参与者如何在不安全的网络上安全地交换密钥。这项工作被广泛认为是现代密码学的起源。
20世纪80年代和90年代,数据加密标准(DES)得以标准化,并最终被高级加密标准(AES)所取代。进入21世纪,椭圆曲线密码学(ECC)得到广泛应用,它使用远小于RSA的密钥长度即可达到相同的安全性,因此对于移动设备和区块链节点等资源受限的环境而言,效率更高。
如今,密码学已成为互联网无形的基础设施。每次您在浏览器中看到挂锁图标、访问 HTTPS 网站、使用端到端加密的即时通讯应用或发送加密货币交易时,您都在受益于数十年的数学研究和标准化工作。
另请参阅: 理解加密货币的终极指南
为什么密码学对区块链至关重要
区块链本质上是一个分布式账本:一个在全球成千上万台计算机上复制的数据库,没有单一的所有者或中央服务器。这带来的挑战是巨大的。如何确保数据库的每个副本都完全相同?如何防止恶意参与者篡改历史记录或捏造欺诈交易?如何在没有银行账户的情况下验证数字资产的所有权?
传统数据库通过由可信的中央机构(例如银行、政府机构或公司IT部门)控制数据的读写权限来解决这些问题。区块链则用加密技术保障取代了这种可信机构。其数学原理本身就强制执行这些规则。
密码学在任何区块链网络中都发挥着六大基础性作用:
- 数据的完整性。 哈希函数 为每个数据块创建一个唯一的数字指纹。即使数据块中的一个字符发生改变,指纹也会完全改变,立即向网络上的每个节点发出篡改信号。
- 身份验证。 数字签名可以证明交易是由发送钱包的合法所有者发起的,而无需泄露控制这些资金的私钥。
- 不可否认。 一旦交易通过 私钥 经区块链确认后,发送方事后不能声称未授权。签名是授权的数学证明。
- 保密性。 公钥加密技术允许用户控制对敏感数据的访问,确保只有持有正确私钥的人才能解密用相应公钥加密的信息。
- 不变性。 使用哈希对区块进行加密链接,使得在不使每个后续区块无效并重新进行相关工作量证明的情况下,篡改历史记录在计算上是不可行的。
- 密钥管理。 密码学提供安全的机制来生成、分发、存储和撤销控制钱包访问权限的加密密钥。 聪明的合同以及网络节点。
区块链中使用的三种主要加密类型
1.对称加密
对称加密是最简单、最古老的加密方式。它使用同一个共享密钥来加密和解密数据。发送方用密钥加密数据,发送密文,接收方使用同一个密钥解密。这种方法速度快、计算效率高,非常适合加密大量数据。
目前应用最广泛的对称加密算法是高级加密标准 (AES),它是由美国国家标准与技术研究院 (NIST) 在 2001 年经过严格的公开竞赛后选定的。AES 使用 128 位、192 位或 256 位密钥对 128 位数据块进行加密。密钥越长,加密安全性越高。AES-256 被认为对传统计算机来说是无法破解的。其他常见的对称加密算法包括 ChaCha20 系列(用于现代 TLS 连接)和较早的三重 DES (3DES)(目前正在逐步淘汰)。
对称加密的根本局限在于密钥分发问题:如何在不被攻击者截获的情况下安全地与另一方共享密钥?在区块链的背景下,由于缺乏预先建立的安全通道,对称加密并不适用于交易签名或钱包访问。然而,对称加密在保护区块链系统中静态存储的数据以及加密私有或许可型区块链网络中节点间的通信方面发挥着重要作用。
对称加密的简要说明:
想象一下,你和朋友都拥有同一把日记本的密钥。你锁定日记本(加密数据),而你的朋友也拥有密钥,他可以解锁并阅读日记(解密)。安全性完全取决于对其他人保密密钥。问题是:你们如何才能在不被他人截获的情况下获得同一把密钥?
常用对称算法
| 算法 | 按键大小 | 块大小 | 状态 |
| AES(高级加密标准) | 128、192、256 位 | 128 bits | 现行标准,全球广泛采用。 |
| ChaCha20 | 256 bits | 流密码 | 一种现代、快速的 AES 替代方案。用于 TLS 1.3 和 WireGuard。 |
| 3DES(三重 DES) | 112或168位 | 64 bits | 旧版。正在逐步淘汰。不建议用于新系统。 |
| 河豚 | 32 到 448 位 | 64 bits | 较旧版本。在大多数应用中已被 AES 取代。 |
| DES(数据加密标准) | 56 bits | 64 bits | 已损坏,请勿使用。 |
2. 非对称加密(公钥密码学)
非对称加密解决了限制对称加密系统的密钥分发问题。它不再使用一个共享密钥,而是每个参与者都拥有一对数学上关联的密钥:一个可以自由分享给任何人的公钥,以及一个必须由其所有者绝对保密的私钥。用公钥加密的数据只能用对应的私钥解密,反之亦然。
这带来了两种强大的功能。首先,任何人都可以使用你的公钥加密消息并发送给你,而只有你才能用你的私钥解密。其次,你可以使用你的私钥加密消息(更准确地说,是加密消息的哈希值)来创建数字签名,从而证明你是消息的作者。任何拥有你公钥的人都可以验证该签名,确认它只能由相应私钥的持有者创建。
区块链几乎完全依赖非对称加密技术进行交易认证和钱包地址生成。您的区块链钱包地址由您的公钥生成。当您想要发送资金时,您需要使用私钥对交易进行签名。网络上的每个节点都可以使用您的公钥验证该签名,从而确认您是发送地址的合法所有者,而您无需透露您的私钥。
RSA(里维斯特-沙米尔-阿德曼)
RSA 是最古老、最广为人知的非对称加密算法,由 Ron Rivest、Adi Shamir 和 Leonard Adleman 于 1977 年开发。其安全性基于分解两个极大素数乘积的数学难度。对于足够长的密钥(满足当前安全要求至少需要 2048 位,长期安全建议使用 4096 位),传统计算机无法进行分解。
RSA 广泛用于保护网络流量(HTTPS)、电子邮件加密(PGP)和数字证书。然而,由于其密钥长度过大,无法满足区块链所需的高容量交易处理需求,因此很少直接用于主流区块链网络。此外,RSA 还容易受到运行 Shor 算法的量子计算机攻击,该算法可以在多项式时间内分解大型素数乘积。
椭圆曲线密码学(ECC)
椭圆曲线密码学(ECC)是大多数主流区块链网络(包括比特币和以太坊)使用的非对称加密标准。ECC 使用远小于 RSA 的密钥长度即可达到与 RSA 同等的安全性,因为其数学基础(椭圆曲线离散对数问题,即 ECDLP 的求解难度)比 RSA 的质因数分解问题更难破解。
256 位 ECC 密钥提供的安全性与 3072 位 RSA 密钥大致相当。这意味着 ECC 操作速度更快、内存占用更少,并且更适用于区块链节点和硬件钱包等资源受限的环境。比特币使用名为 secp256k1 的特定椭圆曲线,而以太坊则根据应用场景使用 secp256k1 和 Curve25519。基于 ECC 构建的标准签名算法称为 ECDSA(椭圆曲线数字签名算法)。
区块链密钥对的工作原理:
您生成一个 256 位随机数。这就是您的私钥:务必绝对保密。使用 secp256k1 椭圆曲线,您可以从私钥推导出对应的公钥。然后,通过一系列哈希函数,您可以从公钥推导出您的钱包地址。任何人都可以向您的地址发送资金。只有您的私钥持有者才能签署交易来使用这些资金。
Diffie-Hellman 密钥交换
1976年发布的Diffie-Hellman (DH)密钥交换协议是第一个允许双方在不安全信道上建立共享密钥而无需事先通信的实用方法。其工作原理是:双方约定一组公开的数学参数,各自生成一个私有随机数,交换由这些私有随机数计算出的公共值,并利用模幂运算的巧妙数学性质独立地得出相同的共享密钥。
双方都不会直接传输共享密钥。即使观察者截获了公开值,也无法推导出共享密钥,因为这需要解决离散对数问题。椭圆曲线Diffie-Hellman (ECDH) 变体应用了相同的原理,并利用椭圆曲线数学,在密钥长度大大缩短的情况下提供了相同的安全性。ECDH 被广泛应用于区块链协议中,用于在节点之间建立安全的通信通道。
公钥基础设施 (PKI)
公钥基础设施 (PKI) 是一套策略、流程、硬件、软件和标准,用于大规模地创建、管理、分发、存储、使用和撤销数字证书和公钥/私钥对。PKI 使互联网能够信任与域名关联的公钥确实属于合法的网站运营商,其信任链根植于证书颁发机构 (CA),而 CA 的公钥则预装在浏览器和操作系统中。
在区块链网络中,公钥基础设施 (PKI) 的概念以去中心化的方式应用。没有中央证书颁发机构。相反,区块链协议本身,在加密证明和经济激励机制的支持下,建立起信任。您的钱包公钥是其在网络上的身份标识,而区块链账本则记录了该身份标识所拥有的资产。
另请参阅: 跨链互操作性:释放区块链的潜力
3.哈希函数
哈希函数是第三类,或许也是对区块链至关重要的加密工具。哈希函数接受任意大小的输入,并生成一个固定大小的输出,称为哈希值、摘要或指纹。与加密不同,哈希是一个单向过程:您可以计算任何输入的哈希值,但无法仅凭哈希值还原原始输入。
区块链中使用的加密哈希函数必须满足五个关键特性:
- 确定性的。 相同的输入在每台机器上每次都会产生相同的输出。这对于达成共识至关重要:如果两个节点对相同的区块数据进行哈希运算,它们必须得到相同的哈希值。
- 原像电阻(单向)。 给定一个哈希值,从计算上来说,找到生成该哈希值的原始输入是不可行的。
- 雪崩效应。 即使输入数据发生最小的变化(例如翻转一个比特),也会产生完全不同的哈希输出。这使得篡改检测能够即时可靠地进行。
- 抗碰撞性。 计算上不可能找到两个不同的输入,它们产生相同的哈希输出。
- 计算速度快。 哈希值必须计算迅速,以便节点能够在网络规模上高效地验证交易和区块。
区块链中最广泛使用的哈希算法是 SHA-256(256 位安全哈希算法),由美国国家安全局开发,并由美国国家标准与技术研究院 (NIST) 标准化。它是比特币区块链和工作量证明挖矿机制的核心算法。以太坊使用 Keccak-256(SHA-3 的一种变体)进行地址生成和内部协议操作。BLAKE3 是一种更新、更快的替代方案,正受到新兴区块链项目的关注。
SHA-256 示例(雪崩效应):
输入:“你好”
Hash: 185f8db32921bd46d35cc2e586c20eea06c8f3eff0d8b4a7a5a1e0ef7cbfd88
输入:“hello”(仅更改了大小写)
Hash: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
一次字符变化,却产生了两个完全不同的 256 位输出。
应避免使用已弃用的哈希算法:
MD5 和 SHA-1 已不再被认为是安全的加密算法。实践证明,它们都容易受到碰撞攻击。美国国家标准与技术研究院 (NIST) 已于 2011 年弃用 SHA-1。任何新的安全关键型系统都不应使用这两种算法。区块链应用应始终使用 SHA-256、SHA-3 或 BLAKE3。
这三种类型如何在区块链中协同工作
单独了解每种密码学技术固然有用,但区块链的安全性源于这三种系统如何相互协作,形成环环相扣的多层结构。以下完整展示了每一层在单个比特币交易中的作用:
- 你决定发送比特币。你的钱包软件会生成一条交易记录,其中包含发送方地址、接收方地址和金额。
- 使用 SHA-256 对交易数据进行哈希处理,生成一个固定长度的摘要,该摘要代表交易的唯一指纹。
- 您使用私钥通过 ECDSA 算法对该哈希值进行签名。生成的数字签名会附加到交易中。这证明您已授权该交易,而无需泄露您的私钥。
- 签名后的交易会被广播到网络。每个接收到该交易的节点都可以使用你公开的公钥验证签名,并独立地对交易数据进行重新哈希处理,以确认签名有效且数据未被篡改。
- 有效的交易会被收集到一个区块中。区块头包含前一个区块的哈希值(用于创建区块链)、区块中所有交易的默克尔根哈希值、时间戳以及用于挖矿的随机数字段。
- 矿工们竞相寻找一个随机数(nonce),使得区块头哈希值低于当前难度目标(即哈希值前导零的数量足够多)。这就是工作量证明(PoW)的计算过程。找到一个有效的随机数很难,但验证它却很简单。
- 获胜的矿工会广播完整的区块。其他节点会验证区块哈希值、所有交易签名以及默克尔根。如果一切正常,该区块就会被添加到它们各自的区块链副本中。
- 新区块的哈希值会被整合到下一个区块的区块头中,从而将它们永久链接起来。任何对过去交易的修改都会改变区块哈希值,破坏链式连接,并需要重新进行所有后续的工作量证明。由于整个网络都在不断扩展链,因此大规模地进行这种操作在经济上是不可行的。
数字签名:区块链授权机制
数字签名值得更深入的解释,因为它是一种加密机制,直接控制着谁可以在区块链上转移资金。理解数字签名就是理解区块链安全的核心。
数字签名是使用签名者的私钥对文档或交易的哈希值进行加密的结果。它同时证明了三件事:
- 验证: 只有持有相应私钥的人才能生成此签名。它无需签名者泄露任何秘密信息即可证明其身份。
- 完整性: 签名包含特定数据的哈希值。如果在签名后数据的任何部分被更改,哈希值也会随之改变,从而使签名失效。这使得一旦有人在授权后篡改交易数据,就能立即被检测到。
- 不可否认: 签署人事后不得否认签署过该文件。签名是授权的数学证据,任何一方均可独立验证。
数字签名的三个步骤
第一步:密钥生成。 签名者使用诸如ECDSA之类的加密算法生成一对匹配的公钥和私钥。私钥是一个大的随机数。公钥则利用所选椭圆曲线的性质,从该随机数数学推导而来。私钥保密,公钥公开共享。
第二步:签字。 为了签署交易,钱包软件会先对交易数据进行哈希处理(比特币使用 SHA-256 算法),然后使用私钥和哈希值作为输入,应用 ECDSA 签名算法。输出结果就是数字签名,通常是 ECDSA 算法中的两个数字 r 和 s,它们共同构成签名。该签名会被附加到交易记录中。
步骤 3:验证。 任何希望验证签名的一方,均可获取交易数据,自行对其进行哈希处理,然后使用发送方的公钥和签名值(r 和 s)应用 ECDSA 验证算法。该算法输出 true(签名有效)或 false(签名无效)。有效结果确认该交易已获得与公钥对应的私钥持有者的授权,并且交易数据自签名以来未被修改。
数字签名类比:
想象一下,你写了一张支票,并在上面盖上你的个人蜡封。任何知道你的蜡封样式的人(你的公钥)都可以验证支票是你签的。但只有你拥有制作你专属蜡封的戒指(你的私钥)。如果有人在你签名后篡改了支票上的金额,蜡封就会失效(哈希值改变,签名失效),所有人都能看到支票被篡改过。
默克尔树:高效且可验证的交易组织
默克尔树 区块链是一种加密数据结构,区块链网络利用它来组织、汇总和高效地验证每个区块内的大量交易。它由拉尔夫·默克尔于1979年发明,并以他的名字命名。
该结构的工作原理是:首先对每笔交易进行哈希运算,然后将这些哈希值两两配对,再对每对哈希值进行哈希运算,如此反复,直到只剩下一个哈希值。这个最终的哈希值,称为默克尔根,以数学上紧凑的形式表示了所有交易。默克尔根包含在区块头中,成为区块哈希的一部分。
区块中的交易:
TX-A、TX-B、TX-C、TX-D
第一级(叶子哈希):
TX-A 哈希值 TX-B 哈希值 TX-C 哈希值 TX-D 哈希值
级别 2(配对哈希):
哈希(哈希(TX-A) + 哈希(TX-B)) 哈希(哈希(TX-C) + 哈希(TX-D))
默克尔根:
Hash(Hash(AB) + Hash(CD)) <– 代表所有 4 笔交易的单个值
Merkle树结构为区块链网络提供了三个重要功能:
高效验证。 要证明某个特定交易包含在已确认的区块中,您无需下载整个区块。您只需要交易本身、区块头中的默克尔根,以及从该交易到默克尔根路径上的一小段同级哈希值(称为默克尔证明或默克尔路径)。对于包含数千笔交易的区块,这通常只有几十字节。轻量级钱包(SPV 客户端)使用默克尔证明来验证交易,而无需运行完整节点,从而使移动加密货币钱包能够在资源有限的设备上安全运行。
防篡改检测。 更改区块中的任何交易都会改变其哈希值,进而改变其上一级交易对的哈希值,如此往复,最终改变默克尔根。由于默克尔根嵌入在区块头中并被纳入区块哈希值,因此更改任何交易都会使整个区块的工作量证明失效。篡改行为会被立即检测到。
并行验证。 由于默克尔树允许独立生成和检查各个交易证明,网络节点可以同时验证区块的不同部分,从而提高大规模区块验证的效率。
另请参阅: 理解共识算法:综合指南
区块链系统中的加密最佳实践
了解密码学理论是一回事,要在真正的区块链系统中安全地实现它,则需要遵循既定的最佳实践,这些实践是通过学术研究和来之不易的实践经验总结出来的。
密钥生成和随机性
非对称密钥对的安全性仅取决于用于生成私钥的随机性。如果使用弱随机数生成器或可预测的随机数生成器生成私钥,攻击者可以猜测或重构该私钥,从而完全控制关联的钱包。区块链钱包必须使用基于真实熵的加密安全伪随机数生成器 (CSPRNG),通常来自现代设备中的硬件随机数生成器。现实世界中,许多钱包被盗事件都是由于密钥生成随机性不足造成的,尤其是在早期基于 Web 的钱包和存在缺陷的 Android Java SecureRandom 类实现中。
钥匙存储和保护
私钥是区块链钱包的主凭证。谁控制了私钥,谁就控制了关联钱包中的所有资产。密钥存储必须体现这一特性。软件钱包使用从口令派生的密钥(该密钥本身使用 Argon2 或 scrypt 等内存密集型算法进行加固,以防止暴力破解)对磁盘上的私钥进行加密。硬件钱包将私钥存储在防篡改的硬件安全模块中,即使在签署交易时,这些模块也绝不会将原始私钥暴露给主机。助记词(种子短语)提供了一种人类可读的备份,可以从中确定性地重新生成私钥。
切勿重复使用随机数
在 ECDSA 签名算法中,每个签名都需要一个唯一的随机数,称为 nonce(通常用 k 表示)。如果使用同一个 nonce 对两条不同的消息进行签名,而这两条消息又使用了相同的私钥,那么攻击者只要观察到这两个签名,就可以通过数学方法推导出私钥。这并非理论上的担忧:2013 年,Android SecureRandom 实现中的一个漏洞导致比特币钱包中 nonce 被重复使用,造成私钥被盗和重大经济损失。现代钱包使用确定性 nonce 生成(RFC 6979)来彻底消除 nonce 重复使用的风险。
使用标准化库
加密算法必须在代码层面正确实现才能提供理论上的安全保障。例如,在实现椭圆曲线运算时,哪怕一个细微的错误都可能彻底破坏系统的安全性。区块链开发者必须使用经过充分测试和同行评审的加密库,而不是从零开始实现算法。自行编写加密算法是开发者最危险的做法之一。诸如 libsecp256k1(比特币核心使用)、OpenSSL 和 libsodium 等标准库都经过了广泛的安全审查,远比任何自定义实现安全得多。
证书和钥匙轮换
长期有效的加密密钥会随着时间的推移积累风险。泄露、疑似泄露或老化的密钥应进行轮换:用新密钥替换旧密钥,并撤销或弃用旧密钥。在区块链环境中,密钥轮换通常意味着为每笔交易生成一个新的钱包地址,这已经是使用 BIP32 和 BIP39 标准的现代 HD(分层确定性)钱包的默认行为。为每笔交易使用新地址可以提高隐私性,并降低单个公钥的泄露风险。
区块链网络的常见加密攻击
了解区块链密码技术如何被攻击与了解其工作原理同等重要。安全性并非孤立存在的属性;它是相对于其必须抵御的攻击而言的。
蛮力攻击
暴力破解攻击试图通过系统地尝试所有可能的值来猜测密码、私钥或哈希原像,直到找到正确的值为止。对于现代加密密钥而言,暴力破解在计算上是不可行的:一个 256 位的私钥可能的值比可观测宇宙中的原子数量还要多。即使动用地球上所有的计算能力,暴力破解一个比特币私钥所需的时间也比宇宙的年龄还要长。
然而,对于用于加密存储私钥的弱密码,暴力破解攻击仍然有效。攻击者一旦获取加密的密钥库文件,就可以利用GPU高速尝试常用密码和字典单词。防御措施则是使用长且随机生成的密码短语,以及Argon2或scrypt等内存密集型密码哈希算法,这些算法显著增加了每次尝试的成本。
中间人 (MitM) 攻击
中间人攻击是指攻击者秘密拦截并可能篡改双方之间的通信,而双方原本以为彼此正在直接通信。在区块链领域,中间人攻击可能使攻击者在交易广播之前拦截该交易,替换为不同的接收地址,并将修改后的交易转发到网络。
区块链中针对中间人攻击的防御措施包括:对节点间点对点通信进行端到端加密;对所有交易进行数字签名(任何修改都会使签名失效);以及使用硬件钱包,在安全屏幕上显示收款人地址,以便用户在签名前进行验证。用户在发送大额款项之前,尤其是在与新交易对手进行首次交易时,也应通过多种渠道验证收款人地址。
重播攻击
重放攻击是指对已签名的有效交易进行欺诈性重复或复制。在区块链中,这种情况最常发生在硬分叉期间。当区块链分裂成两条链时(例如 2016 年的以太坊和以太坊经典,以及 2017 年的比特币和比特币现金),一条链上有效的交易在另一条链上也可能有效,因为两条链共享相同的交易历史记录。攻击者如果观察到一条链上的交易,就有可能在另一条链上重放该交易。
解决方案是重放保护,其实现方式是在每笔交易中包含一个链特定的标识符,这样一来,在一条链上签名的交易在任何其他链上都无效。管理良好的硬分叉会将重放保护作为新网络协议的强制性功能。
西比尔攻击
女巫攻击是指创建大量虚假身份(节点),从而对点对点网络获得不成比例的影响力。该术语源自一本关于一位被诊断患有分离性身份障碍的患者的书籍。在区块链中,女巫攻击者会创建许多看似独立参与者的节点,但实际上它们都由同一实体控制。这些虚假节点可用于将合法节点与网络的其他部分隔离(例如Eclipse攻击),操纵网络流量,审查特定交易,或扭曲治理系统中的投票机制。
工作证明 和 权益证明共识机制 这些机制旨在通过使影响力与稀缺资源(计算能力或质押资金)成正比,而非与身份数量成正比,来缓解女巫攻击。在工作量证明网络中,如果这些虚假节点总共没有增加任何哈希率,那么创建一百万个虚假节点身份并不会带来任何额外的影响力。
51%攻击
当单个实体或协同组织控制了区块链网络超过一半的总算力(工作量证明机制)或质押资本(权益证明机制)时,就会发生 51% 攻击。这种程度的控制使攻击者能够主导区块生成过程,并有可能操纵区块链。
攻击者若拥有多数控制权,便可重组近期区块,撤销先前已确认的交易,从而实现双重支付:即用一笔随后从区块链中删除的交易支付商品或服务。他们还可以阻止特定交易的确认,有效地审查特定地址。然而,即便拥有 51% 的控制权,他们也无法从不受其控制的钱包中窃取资金、凭空创造加密货币,或篡改攻击开始前已确认的交易。
对于像比特币这样规模庞大、发展成熟的网络而言,51%攻击需要耗费数百亿美元用于专用硬件和电力,而且攻击本身也会摧毁被攻击网络的价值。规模较小、总算力较低的区块链网络则确实非常脆弱,其中一些已经遭受过成功攻击,例如2019年和2020年的以太坊经典。
长度扩展攻击
长度扩展攻击利用某些哈希函数(包括未经授权使用的 SHA-256)的数学特性,允许攻击者在不知道原始输入的情况下,仅凭已知哈希输出即可计算出以原始输入开头的更长消息的哈希值。这种攻击方式可被利用于使用哈希值作为消息认证码的应用程序中,攻击者可以通过伪造消息来生成有效的哈希值。
比特币协议通过使用双重 SHA256(将 SHA-256 的输出再次通过 SHA-256 哈希处理)来生成区块哈希,并在需要消息认证的地方使用 HMAC(基于哈希的消息认证码)而非原始哈希函数,以此来防御这种漏洞。基于区块链系统进行开发的开发者应该意识到这种漏洞,并在他们的应用程序中使用专门设计的 HMAC 或现代哈希函数,例如 SHA-3(SHA-3 的设计本身就避免了长度扩展漏洞)。
近期区块链安全事件的实际规模:
2025年2月,Bybit交易所遭黑客攻击,约49.9万枚以太币通过被攻破的多重签名钱包被盗,造成约1.5亿美元的损失。2022年3月,Ronin大桥遭黑客攻击,损失达625亿美元。2023年3月,Euler Finance闪电贷攻击,损失约197亿美元。这些事件并非区块链核心加密技术的故障,而是由于运行安全漏洞、智能合约漏洞以及针对密钥持有者的社会工程攻击所致。SHA-256和ECDSA等核心加密原语仍然完好无损。
密码学与共识机制的关系
密码学和共识机制是区块链安全的两大基石,二者密不可分。共识机制确立了网络中所有参与者就同一交易历史版本达成一致的规则。密码学则提供了使这些规则可执行和可验证的工具。
在比特币等工作量证明(PoW)系统中,共识过程是一个密码学难题。矿工必须反复对区块头数据进行哈希运算(仅改变 nonce 字段),直到找到一个低于当前目标阈值的哈希值,这意味着哈希值必须以指定数量的前导零开头。由于哈希函数会产生不可预测的输出,因此找到有效 nonce 的唯一方法是尝试数十亿种可能性。这种计算投入就是工作量证明中的“工作”,也正是这种计算投入使得篡改历史在经济上难以承受。
在以太坊等权益证明(PoS)系统中,数字签名是达成共识的主要加密工具。验证者使用其私钥对提议的区块进行签名,从而创建每个验证者参与情况的可审计、不可否认的记录。惩罚机制利用加密证明来检测和惩罚签署冲突区块(歧义区块)的验证者,确保不诚实行为会导致验证者质押的抵押品被自动没收。
这两个系统都完全依赖于密码学原语才能运行。如果移除哈希函数、数字签名或密钥对,共识机制就失去了赖以建立的密码学基础。
另请参阅: 哈希函数如何保护您的数据:全面概述
零知识证明:区块链的隐私保护密码学
零知识证明(ZKP)是区块链应用密码学领域中最强大且发展最快的方向之一。零知识证明是一种密码学方法,通过这种方法,一方(证明者)可以在不泄露除该陈述本身真实性之外的任何信息的情况下,使另一方(验证者)相信某个陈述为真。
经典的例子就是证明你知道密码,而无需实际透露密码。在区块链中,零知识证明(ZKP)使交易发送方能够在不透露实际余额的情况下证明其拥有足够的资金来支付款项。它使用户能够在不披露个人文件的情况下证明其符合KYC要求。它还允许验证复杂的计算是否已正确执行,而无需验证者重新执行计算。
两大类零知识证明系统已得到区块链的广泛应用:
- ZK-SNARKs 零知识简洁非交互式知识论证(zk-SNARK)能够生成非常简洁且易于验证的证明。Zcash 首创了这项技术,用于私密交易,如今它已被广泛应用于以太坊二层扩容方案中,例如 zkSync Era 和 Polygon zkEVM。其主要局限在于,早期的 zk-SNARK 构造需要可信的设置仪式,如果该仪式遭到破坏,则存在一定的理论漏洞。
- zk-starks 零知识可扩展透明知识论证(STARK)是一种较新的技术,无需可信设置,并且完全依赖哈希函数来保证其安全性,因此具有后量子时代的抗性。StarkWare 的 Starknet 平台使用 STARK 作为其以太坊二层网络的基础。但缺点是 STARK 证明比 SNARK 证明更大,每个证明需要更多的带宽和存储空间。
零知识证明代表了区块链加密创新的前沿,它催生了新一代私密、可扩展且符合监管规定的应用程序,而这些应用程序仅靠早期的加密工具是无法实现的。
量子计算威胁与后量子密码学
区块链密码学面临的最重大长期挑战是量子计算机的潜在发展。量子计算机利用量子力学的原理,以远超传统计算机的速度进行某些类型的计算。其中,有两种量子算法与区块链密码学尤为相关。
绍尔算法
1994年开发的Shor算法可以在足够强大的量子计算机上,以多项式时间解决支撑RSA和椭圆曲线密码学安全性的数学难题(素数分解和离散对数)。这意味着,运行Shor算法的量子计算机理论上可以从公钥推导出私钥,或者伪造数字签名,从而彻底破坏ECDSA和RSA的安全保证。
这是区块链面临的最严重的量子威胁,因为它直接攻击了用于授权交易的机制。所有使用 ECDSA 或 RSA 签名的区块链,包括比特币和以太坊,都将容易受到运行 Shor 算法的足够强大的量子计算机的攻击。专家调查显示,到 2030 年代末,能够破解 256 位 ECC 的密码学相关量子计算机 (CRQC) 的概率将超过 50%;而根据 Mosca 和 Piani 在 2024 年的分析,这种可能性甚至可能在 2030 年代中期就已出现。
格罗弗算法
Grover 算法能够将暴力搜索问题的求解速度提升至二次方级。对于具有 n 位安全性的哈希函数,Grover 算法能够有效地将其安全性降低到大约 n/2 位,从而抵御量子攻击。这意味着 SHA-256 的量子安全性将从 256 位降至约 128 位。虽然这是一个显著的降低,但 128 位的安全性在计算上仍然难以实现:目前的专家共识是,SHA-256 和 SHA-3 仍然能够抵御已知的量子技术,而 SHA-384 或 SHA-512 则能够为最高安全级别的应用提供足够的额外安全裕度。
NIST后量子密码学标准
密码学界多年来一直在为应对量子威胁做准备。2024年8月,美国国家标准与技术研究院(NIST)最终确定了其首批三项后量子密码学(PQC)标准,完成了始于2016年公开国际竞赛的制定过程:
- FIPS 203(ML-KEM,基于 CRYSTALS-Kyber): 一种用于建立共享秘密的关键封装机制。其安全性基于模块格中问题的复杂性,而模块格被认为能够抵抗经典攻击和量子攻击。
- FIPS 204(ML-DSA,基于 CRYSTALS-Dilithium): 一种数字签名算法,是区块链应用中ECDSA最直接的后量子替代方案。它也基于模格问题。
- FIPS 205(SLH-DSA,基于 SPHINCS+): 一种无状态的基于哈希的数字签名方案,其安全性完全依赖于哈希函数的抗碰撞性,无需任何公钥密码技术。这使其成为后量子时代最保守的选择,因为其安全假设最为清晰易懂。
根据 NIST IR 8547 中发布的过渡时间表,量子安全漏洞算法(RSA、ECDSA、ECDH)将于 2035 年前从 NIST 标准中弃用。高风险系统预计将提前迁移。NIST 建议各组织现在就开始应用这些标准,以便在截止日期前完成系统迁移。
区块链迁移挑战
将区块链网络迁移到后量子加密算法并非简单的软件更新。这涉及到替换基础协议级加密,而这需要社区共识和协调的硬分叉,并存在链分裂的巨大风险。此外,后量子签名方案的签名大小也比当前的 ECDSA 签名更大:Dilithium2 签名约为 2,420 字节,而 ECDSA 签名约为 72 字节。这会增加区块大小、带宽需求和存储成本。
Vitalik Buterin 已公开概述了以太坊在量子技术突然突破时的应急方案:通过硬分叉冻结受损地址,并允许合法用户使用 STARK 迁移到量子安全钱包。比特币社区也讨论了基于主根的迁移路径和 Schnorr 签名调整,作为迈向后量子架构的步骤。两个社区传递的信息一致:威胁真实存在,时间线不确定,必须立即开始准备。
不同类型区块链网络中的密码学
并非所有区块链都以完全相同的方式使用密码学。网络类型(公有网络、私有网络或联盟网络)决定了哪些密码学工具最为重要以及它们的配置方式。
公共区块链
像比特币和以太坊这样的公共区块链对所有人开放。任何用户都可以创建钱包,任何节点都可以参与共识,任何开发者都可以部署智能合约。在这种环境下,整个安全模型必须完全依赖于密码学保证,因为没有可信的成员列表,也没有中央机构来裁决纠纷。每笔交易都必须经过密码学签名。每个区块都必须经过密码学链接。任何所有权声明都必须能够被任何节点验证,而无需任何特权访问。因此,公共区块链大量使用非对称加密(用于交易签名)、哈希函数(用于区块链接和挖矿)、默克尔树(用于高效验证)以及零知识证明(用于隐私和扩展)。
私有区块链和许可型区块链
私有区块链(例如基于 Hyperledger Fabric 或 R3 Corda 构建的区块链)将参与者限制在已知的、预先批准的实体。由于所有参与者都经过身份验证并同意网络条款,因此其信任模型有所不同。密码学的作用也略有转变:不再那么重视无需许可的工作量证明挖矿,而是更加重视基于公钥基础设施 (PKI) 的身份验证(X.509 证书)、用于保护部分参与者之间数据机密性的通道级加密,以及可以选择性地与监管机构或审计人员共享的加密审计跟踪。对称加密在保护许可型网络中静态数据和传输中的数据方面发挥着更大的作用。
财团区块链
联盟区块链介于公有链和私有链之间。一组特定的组织共同管理网络,参与者需要获得准入资格,但无需完全公开。贸易融资网络和银行间结算系统就是典型的例子。联盟区块链中的加密工具通常结合了私有网络的基于 X.509 证书的身份认证机制和公有链设计中的部分透明工具(例如哈希链接区块、数字签名审计跟踪)。
区块链密码学的未来
区块链的加密格局正在多个方面同时快速发展。了解该领域的发展方向有助于开发者和投资者评估区块链系统的长期安全性和可行性。
同态加密
同态加密 (HE) 是一种特殊的加密形式,它允许直接对加密数据执行计算,生成的加密结果在解密后与对原始明文执行相同计算的结果完全一致。这意味着区块链网络可以处理和验证加密数据上的交易,而无需任何参与者看到实际涉及的值。全同态加密 (FHE) 几十年来一直是活跃的研究领域,但其计算成本仍然很高,难以实际部署。部分同态加密和半同态加密方案已经在特定的区块链应用中得到探索,尤其是在医疗保健数据管理和金融隐私领域。
阈值签名和多方计算
阈值签名方案 (TSS) 允许将私钥分散到多个参与方,只有达到预设阈值(例如,5 个参与方中的 3 个)的参与方合作才能生成有效签名。任何单一参与方都不会持有完整的私钥,从而消除了导致个人密钥管理风险极高的单点故障。多方计算 (MPC) 在此基础上进行了扩展,允许多个参与方联合计算加密运算,且任何参与方都无法获知其他参与方的私钥输入。这两种技术越来越多地应用于机构托管解决方案和去中心化自治组织 (DAO) 治理中,以分散对高价值钱包的控制权。
基于格和基于哈希的签名
随着后量子时代迁移的开始,基于格和基于哈希的签名方案将逐步取代区块链基础设施中的 ECDSA。基于格的方案(例如 CRYSTALS-Dilithium)在签名大小和计算效率之间取得了良好的平衡。基于哈希的方案(例如 SPHINCS+)则提供了最大的保守性,其安全性完全依赖于哈希函数的抗碰撞性,这是密码学中最易于理解的假设。挑战在于如何在过渡期间管理更大签名规模带来的性能权衡,尤其是在高吞吐量区块链网络中。
零知识应用持续增长
零知识证明将继续从目前在交易隐私和二层扩展方面的应用扩展到更广泛的用途:基于零知识证明的身份凭证允许用户在不泄露个人数据的情况下证明遵守法规;基于零知识证明的 DAO 治理投票系统,在保护个人投票秘密的同时允许公开验证汇总结果;以及用于链下机器学习推理的计算完整性零知识证明,这些证明将提交给链上验证系统。
结语
密码学并非……的特征 blockchain技术它是区块链技术赖以存在的基石。如果没有对称和非对称加密来保护数据机密性和验证身份,如果没有哈希函数来创建防篡改的指纹,将区块链接在一起并支持共识机制,如果没有数字签名来授权交易和确保不可否认性,如果没有默克尔树来实现跨数百万个节点的高效验证,就不会有区块链。
对于初学者来说,最关键的理解是:区块链无需中央可信机构即可被信任,因为密码学数学会强制执行规则。没有银行会验证你的交易;签名会。没有服务器会检查你的余额;哈希链接的账本会。没有任何机构可以阻止篡改;累积的工作量证明和哈希函数的雪崩效应可以。
随着计算能力的不断发展,量子计算机日益成为切实存在的长期威胁,区块链的加密基础也必须随之演进。美国国家标准与技术研究院 (NIST) 于 2024 年发布的后量子标准为此提供了路线图,区块链社区也已开始规划迁移路径。这一过渡过程将十分复杂,必须谨慎管理,但该领域的发展历程表明,尽早识别威胁并制定数学上稳健的应对措施,是应对威胁、防患于未然的有效方法。
另请参阅: 加密货币与区块链:你需要了解什么
对于初学者而言,理解密码学并不需要精通椭圆曲线的数学原理或 SHA-256 压缩函数的复杂细节。它需要的是掌握这些工具的基本特性:易于计算且不可逆的单向函数;公钥用于识别身份、私钥用于授权的密钥对;以及任何环节的更改都会使下游所有环节失效的加密链。掌握了这些概念,任何区块链系统的安全架构都将变得清晰易懂,并可以根据其自身情况进行评估。









