分布式账本技术中的密码学简介

2025-06-08

分布式账本技术中的密码学简介

密码学是分布式账本技术(例如区块链和其他以共识为导向的分布式网络)的支柱。如果您有兴趣构建去中心化应用程序,那么了解钱包生成和交易签名流程至关重要。这两者都严重依赖于底层加密协议。

除了分布式网络之外,加密技术也是网络安全的关键组成部分。随着网络犯罪的不断增加,以及网络攻击平均每个恶意软件攻击给企业造成的230万美元损失,确保网络安全达到标准变得越来越重要。正确使用加密技术,可以确保敏感信息的机密性,从而为您的企业节省大量成本。

现代密码学在数学上非常稳健,在保护银行账号和社会保障号等敏感信息方面发挥着至关重要的作用。虽然其中的数学原理可能很复杂,但即使不完全理解加密算法,也能理解其概念。

密码学的关键组成部分之一是密码。密码是用于隐藏(加密)和解密信息的算法。加密后的信息称为密文,解密后的信息称为明文。密码分为两种类型:对称密码和非对称密码。本文将深入探讨它们的区别并提供一些示例。

已知最早的密码:凯撒密码

已知最早的密码之一是凯撒密码(或称移位密码)。凯撒密码是一种对称密码,这意味着用于加密信息的密钥与用于解密信息的密钥相同。该密码的工作原理是将明文的当前字符映射到字母表中相邻且距离预定的字符(密钥)。例如,如果密钥是右旋转三圈,则“A”将映射到“D”。为了方便起见,完整的密钥映射如下所示。明文“CIRCERO”将被加密为“FLUFHUR”。

明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文:DEFGHIJKLMNOPQRSTUVWXYZABC

注意,字母表的环绕是通过模数运算建模的。我们可以用数学方法表示一个加密函数和一个对应的解密函数 En=(x + n) mod 26,以及一个对应的解密函数 Dn=(x - n)mod 26。这里有一个优秀的代码库,其中包含该算法用多种不同语言实现的代码。下面是一个用 JavaScript 编写的示例。

碳.png

一段时间以来,像移位密码这样的转置密码能够为敏感信息提供足够的保护。然而,枚举超过 26 个可能的密钥并非易事,这种密码很容易被破解。

区块链钱包中的密码

目前用于构建区块链等分布式账本的密码被称为非对称密码。非对称密码使用不同的密钥来加密和解密信息。这些密钥被称为公钥和私钥对。它们与对称密码不同,在对称密码中,用于加密信息的密钥也用于解密信息。

如果您对分布式账本领域有所了解,那么您很可能已经创建了一个钱包,其中包含一个用于保密的私钥,以及一个作为钱包地址的公钥。我们将介绍加密钱包如何使用非对称加密技术。

在非对称加密出现之前,远距离共享密钥是一项巨大的挑战。为了通过安全的通信信道共享私人信息,您和接收方需要共享密钥。您可以预见到“先有鸡还是先有蛋”的问题正在形成。如何安全地共享密钥?非对称加密解决了这个问题。

非对称加密的工作原理如下。假设 Alice 和 Bob 想要发送一条秘密消息,但又不想让窃听者 Eve 读取该消息。Alice 和 Bob 各自拥有一个公钥(任何人都可以查看)和一个私钥(只有相应公钥的所有者知道)。Alice 使用 Bob 的公钥加密她的消息,这样唯一可以解密信息的密钥就是 Bob 的私钥。Alice 将消息发送给 Bob。即使 Eve 可以截取该消息,如果没有 Bob 的私钥,她也无法读取其内容。然后,Bob 可以使用自己的私钥解密该消息,并读取 Alice 发送的秘密消息。

那么加密钱包如何利用这项技术呢?授权交易时,您需要证明您是钱包资金对应私钥的所有者。这可以通过数字签名算法来实现。
当用户授权交易时,他们必须证明自己是公钥对应资金私钥的所有者。由于公钥和私钥之间存在数学关系,用户可以使用私钥对交易进行签名,从而创建数字签名。数字签名不会泄露任何私钥信息,但可以通过对应的公钥进行验证。由此可以构建证明。

目前性能最佳的非对称加密算法是椭圆曲线算法,它使用比 RSA 更小的密钥提供快速、安全的加密。

对于对 RSA 或椭圆曲线数学感兴趣的读者来说,以下资源是极好的学习工具。

  • 椭圆曲线
  • RSA(里维斯特、沙米尔、阿德尔曼)
  • DSA(数字签名算法)
  • ECDSA(椭圆曲线数字签名算法)

下面列出了一些关于实现和可用加密库的资源。这些都是开源的,并且被广泛推崇并用于各种用途。

  • Crypto-js是一个很棒的 JavaScript 库,可以用来探索其他密码
  • elliptic是一个用于椭圆曲线加密(包括数字签名算法)的 JavaScript 库。
  • Cryptography是一个扩展的 Python 库,可以访问数字签名算法和最常用的密码。
  • OpenSSL通常被系统管理员用来生成 TSL 证书并执行各种加密功能。
  • Botan是 C++ 的加密库。
  • Bouncy Castle有一个 Java 和 C# 库,并且是 Java 加密扩展 (JCE) 的提供商。
鏂囩珷鏉簮锛�https://dev.to/0xjepsen/an-introduction-to-cryptography-in-distributed-ledger-technology-268l
PREV
使用 ASS(Anchor、Solana 和 Svelte)的全栈 Web3 加速指南 🍑
NEXT
可打印格式的超级方便的 VSCode 快捷方式!