公钥加密、加密Hash散列、Merkle树……区块链的密码学你知多少?

公钥加密、加密Hash散列、Merkle树......区块链的密码学你知多少?

公钥加密、加密Hash散列、Merkle树......区块链的密码学你知多少?

大家都知道区块链是比特币的基础技术,但区块链技术的核心是什么?

它是密码学。

密码学是区块链技术的核心。所有交易信息都被编码到块中,而区块链是由连接在一起的块形成的结构。

密码技术历史悠久,主要经历三个发展阶段:经典密码,机械密码和现代密码。随着历史的发展,密码学不断发展,密码学成为科学。今天,我们必须看看它。 区块链技术中的密码学与我们过去学到的密码学有什么区别?它的作用在哪里?

什么是加密?

密码学是阻止第三方查看私人数据的学科的发展。现代密码学结合了数学,计算机科学,物理,工程和其他学科。一些重要的术语定义如下:

加密:将文本编码为不可读的格式。

解密:将令人困惑的信息转换为其原始形式。

密码密码:用于执行加密或解密的算法,通常是一组可实现的,明确定义的步骤。

[密码学]以前是加密的同义词,加密是将信息从可读格式转换为无意义信息的过程。加密技术的历史可以追溯到古埃及,并且历史悠久。例如,Caesar Cipher Caesar Cipher是Caesar用来与将军安全通信的着名密码。密码将消息中的每个字母移动一定距离(移至2),A变为C,B变为D,依此类推。 (http://practicalcryptography.com/ciphers/caesar-cipher/)

区块链技术以多种不同方式加密钱包,交易,安全和隐私保护协议。本文将讨论与区块链技术相关的一些关键加密主题,包括公钥加密,哈希散列和Merkel树。

公钥加密

公钥加密(也称为非对称加密)是一种使用一对密钥(公共和私有)进行加密的密码系统。公钥可以广泛分发,但私钥仅为其所有者所知。密钥始终成对创建,每个公钥必须具有相应的私钥。公钥加密通常用于安全地加密两台或两台计算机之间的消息。任何人都可以使用某人的公钥来加密信息,但一旦信息被加密,该消息只能使用相应的私钥解密。假设Alice想要向Bob发送加密消息,其工作原理如下:

Alice使用Bob的公钥来加密消息;

Alice将加密的消息发送给Bob。如果被第三方截获,第三方只能看到随机数字和字母;

Bob使用他的私钥来解密和读取收到的消息;

此过程可以通过以下图表表示:

资料来源:韦尔斯利学院

公钥加密是区块链技术的重要组成部分,也是钱包和交易的基础技术。当用户在区块链上创建钱包时,会生成公钥 - 私钥对。

钱包的地址或其在区块链上的表示是由公钥生成的数字和字母的组合。由于区块链技术本身的性质,该地址对所有人公开,可用于检查钱包中的余额或将代币发送给它。

区块链上的交易只是一条广播信息,其实质是“从我的钱包中删除X 代币并将X 代币保存到另一个钱包”。确认后,交易将不可更改地写入分类帐,余额将更新。

但是,此交易消息需要发送到钱包的密钥签名才有效。在广播消息之后,任何人都可以使用钱包的公钥来确保来自私钥的数字签名是真实的。在将事务(即消息)添加到区块链之前,这是块验证器假定的角色。

加密的哈希哈希

加密散列散列是区块链技术的另一个基本要素。它直接保证了区块链的不变性,这是区块链最重要的特性之一。

哈希是计算机科学中的一个术语,意思是输入任意长度的字符串,然后生成固定长度的输出。无论Hash散列函数输入是3个还是10个字符,其输出长度始终相同。

加密的哈希散列函数具有以下主要功能:

确定性:无论为函数赋予特定输入多少次,它总是会得到相同的输出;

不可逆性:无法根据函数的输出确定输入;

抗冲击性:没有两个输入可以获得相同的输出;

加密散列哈希函数的另一个重要特征是改变输入中的任何数据位将极大地改变输出。例如,111111和111112的哈希散列输出将是绝对唯一的,并且彼此之间没有连接。

用于加密散列散列函数的最广泛使用的用例是密码存储。大多数网站不存储用户的原始密码,它们存储用户密码的哈希值,并在用户访问给定站点并输入密码时检查哈希值是否匹配。如果黑客入侵他们的数据库,他们只能访问不可逆的密码哈希哈希。

那么,加密散列哈希如何实现区块链技术的不变性呢?答案是每个新数据块包含前一个块中所有数据的哈希哈希输出。

想象一下刚刚添加了第1000块的区块链。来自块999的数据作为散列散列函数输出存在于第1000个块中。然而,块999中包含的数据是块998中的数据的散列散列,其又包含块997中的数据的散列散列。

这样,从第1000个块到第1个块的回溯因此通过加密的散列散列连接。其结构如下所示:

这一直是确保区块链中的数据不可变的原因。如果有人想要更改前一个块中的一些数据,它不仅会更改块数据的哈希散列输出,还会更改后面的每个块。网络上的矿工和节点立即注意到生成的散列散列与链的版本不匹配并拒绝更改。

供参考:比特币使用称为SHA-256的加密哈希哈希函数,以太坊使用名为keccak256的加密哈希哈希函数。

区块链的简化版,省略了一些重要信息。图中有三个向上箭头,表示每个块事务存储在Merkle根中,Merkle根是Merkle树的根节点。

树中的节点组称为子树,没有子树的节点(其下没有数据的节点)称为叶节点。

Merkle树(或哈希哈希树)是一种树,它使用加密的哈希哈希函数来存储哈希输出(而不是每个节点中的原始数据)。每个叶节点由其原始数据的加密哈希哈希组成,并且每个父节点是其子哈希哈希组合的哈希哈希。

Merkle根只是Merkle树的根(顶部)节点,Merkle根表示其左右子树组合的哈希哈希输出。下图是具有4个叶节点的Merkle树。

每个叶节点表示事务A,B,C和D的数据的哈希散列,然后哈希A和哈希B被组合并散列以生成哈希(A,B),并且在哈希(C)中生成哈希(C)。同样的方式。 ,D)。最后,将Hash(AB)和Hash(CD)组合起来找到哈希哈希(哈希(A,B),哈希(C,D)),最终形成树的Merkle根。

那么为什么Merkle树对区块链技术很重要呢?

使用Merkle根并应用加密的散列散列函数的性质,可以快速确定给定块中的事务是否已被篡改并识别被篡改的特定事务。

如果已确认块中的单个事务已被更改,则Merkle根最终将与“正确的”Merkle根不同,并且更改非常明显。

Merkle树还允许用户验证他们的事务是否包含在块中,而无需下载整个区块链。简单的支付证明技术可以扫描Merkle树中的所有分支,并检查特定事务是否已经散列到树中。如果区块链技术在每个块中不包含Merkle根,则不太可能达到这种效率水平。

下图显示了区块链中有4笔交易的Merkle树

结论

密码学是区块链技术内部工作的重要组成部分。公钥加密是区块链钱包和交易的基础。加密的哈希散列函数为区块链提供了相同的特性。 Merkle树在组织交易时提高了区块链的效率。

微信扫一扫,分享到朋友圈

公钥加密、加密Hash散列、Merkle树……区块链的密码学你知多少?
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close