掘金 后端 ( ) • 2024-03-13 18:09

theme: channing-cyan

密码学概述

区块链起源于密码学,可以说区块链的核心,以及安全性、不可篡改性的来源很大一部分都是基于密码学实现的。

密码学相信对大家来说都有接触过,但是不搞安全的同学可能没有深入学习过,密码学是网络安全、信息安全等专业的奠基学科。按照时间分类,我们可以把密码学分为古典密码学和现代密码学。

古典密码学主要是通过一些移位对应、字母重排、替换字母、或者简单的其他方法进行加密的。比如a-> i, b->u 进行一个简单的加密,在现代计算机面前显然是没有任何安全性的。

现代密码学除了关注信息的保密性和可传递性,还涉及到了信息的完整性、不可抵赖性,以及防攻击性等等。

区块链中的密码学

哈希算法

哈希也被称为散列算法,指的是对一个任意的输入,都能给出一个定长的字符串,它能够代表一段数据的唯一特征,类似于人类的指纹,所以在后端开发中我们也会使用哈希算法对某些数据进行加密,通过这个哈希值来保证数据的唯一性。

在前文我们已经说过,每一个区块链中的区块都有一个值previous hash,这个值指向的是当前区块的上一个区块。

同时,在一个区块中会使用哈希树(Merkle Tree)来组织交易数据,以确保数据的完整性,提高效率。

以一个长度为4的交易作为例子,哈希树的构建方式如下

  • 将4个交易按顺序排列,作为树的叶子结点
  • 对每两个相邻的交易数据进行哈希操作,得到它们的哈希值
  • 将得到的哈希值组成新的一层节点,再次进行两两哈希操作

这就保证了树的根节点作为区块头的一部分,存储在区块链上。这个头的值是对所有交易数据进行哈希计算得到的,因此任何一个交易数据的变化都会导致树头结点的变化。

非对称加密

区块链中的参与者通过会使用椭圆曲线算法生成一堆公私钥对组合,公钥对外公开,私钥自己持有。通过公钥对数据进行加密,私钥对数据进行解密。因为私钥是自己持有的,并且不需要在网络中进行传递,这样就能够验证身份的唯一性、保证身份的安全性。

包括区块链的数字钱包也用到了这个技术,数字资产通常存储在加密货币钱包中,这些钱包使用非对称加密来保护用户的私钥,私钥进行签署交易,公钥用于接收资产。

同时,私钥会用于生成数字签名,而相应的公钥用于验证这个数字签名。区块链中的交易通常都包含数字签名,以验证交易的真实性和完整性。其他参与者可以使用发送者的公钥验证数字签名,确保交易没有被篡改,并且确实是由合法的私钥签名生成的。

在白皮书中,因为数字签名的唯一性,数字签名还用来防止double-spending问题,通过数字签名来确保交易的唯一性,避免同一份资金被重复使用。

推荐阅读

当说到云原生时,我们究竟在谈论什么? - 掘金

不太熟悉Git? 不妨看看这篇文章 - 掘金

一文搞定常见分布式事务实现 - 掘金

你真的理解分布式理论吗? - 掘金

深入了解异地多活 - 掘金

02.K8S架构详解 - 掘金

01.你为什么需要学习K8S - 掘金