比特币给我们的是一个坚定的承诺:程序将严格按照规定执行。
Andreas M. Antonopoulos
公钥/私钥加密技术
密码学 是将信息变成只有特定人才能读取的秘密的实践。
- 加密 是将信息转换为编码形式的过程,这样只有拥有正确密钥的人才能读取。
- 解密 是将编码信息还原为可读内容的过程。
在传统密码学中,想要私下交流的两个人必须首先共享同一个密钥,类似于共享密码。一个人用这个密钥加密消息后发送,另一个人用同样的密钥解密并阅读。
这种系统的问题在于双方必须已经共享了密钥。如果其他人获得了这个密钥,他们就能读取任何被截获的消息。
比特币用一种不同的方法解决了这个问题,这种方法叫做公钥加密,用户无需提前共享密钥。
公钥/私钥加密技术解决了共享秘密的问题。每个人不再需要共享密码,而是拥有两把密钥:一把公钥和一把私钥。
如果李明想给小华发送信息,他可以使用小华的公钥。只有小华才能用自己的私钥解锁。即使有人截获了消息,没有私钥也无法读取或使用。
在比特币中,这套系统被用来创建数字签名。数字签名证明了私钥持有者批准了这笔交易,就像在文件上签名一样。这使得比特币交易在无需信任第三方的情况下也能安全且可验证。
比特币交易涉及将比特币的所有权从一个地址转移到另一个地址。
加密用于确保只有真正持有比特币的人才有权将自己的资金发送给他人。这保证了他们的财产不会被恶意分子窃取。
作为额外的保护措施,每一笔比特币交易都会自动获得一个唯一的数字签名。这个独特的数字签名由防篡改技术驱动,帮助网络验证比特币的真正所有者,而不是其他人,已经发起了这笔交易。
每个用户都有两把密钥:一把私钥,它是保密的,还有一把公钥,可以与他人共享。这把私钥 起到身份识别和所有权证明的作用,确认:“这个地址属于我,我对它有控制权。”
比特币交易是如何运作的
- 创建交易:用户通过指定收款地址和要发送的比特币数量来发起一笔比特币交易。
- 生成数字签名:发送方使用自己的数字签名,通过私钥生成一个独特的签名代码,用于验证交易的真实性。
- 广播交易:签名后的交易被广播到比特币网络,表示比特币所有权将从发送方转移到接收方。
- 网络验证:比特币网络中的节点接收到交易,并使用收款方的公钥 来验证交易签名的真实性。同时,他们使用发送方的 公钥来验证数字签名。
- 比特币网络上的确认:如果验证成功,交易将被添加到账本中,这个账本作为所有交易的安全、透明记录。一旦确认,比特币的所有权就会正式从发送方转移到接收方。
该数字签名,由发送方的私钥生成,证明了该交易是比特币所有者授权的。比特币网络随后可以验证这个证明并记录该交易。
哈希算法解释
请不要被接下来的技术术语和数学概念吓倒。我们理解并不是每个人都喜欢数学,但你可能会惊喜地发现,即使是最复杂的想法,只要稍加努力也能理解。
一个函数就像一台机器,可以把一些信息变成新的东西。你给函数的信息叫做输入。函数产生的新信息叫做输出。函数帮助计算机完成任务和解决问题。
什么是函数?
函数是一组指令,接收一个输入并产生一个输出。你可以把它想象成一道菜谱:你按照步骤用特定的食材操作,总能得到可预期的结果。
在比特币中,函数被用来处理和验证交易。当有人发送比特币时,密码学函数帮助检查交易是否有效,确认发送方有足够的资金,并更新比特币账本上的余额。一旦验证并被加入区块,这笔交易就成为区块链上永久记录的一部分。
什么是单向函数?
单向函数是一种特殊的函数,在一个方向上很容易计算,但反过来却极其困难。例如,把食材搅拌成奶昔很容易,但你无法把奶昔还原成原来的食材。
比特币的安全性依赖于单向函数。它们被用于公钥和私钥加密,让人们可以公开公钥,同时保守私钥的秘密。即使公钥是公开的,也无法从中推导出私钥。这正是比特币交易安全的原因。
什么是哈希函数?
一个哈希函数就像一个秘密编码机。它接收一条消息并把它变成一串代码。
哈希在比特币交易中的工作原理
在比特币中,每一笔交易在被加入区块链之前都会被转换成哈希。哈希是交易的唯一数字指纹。如果有人试图更改哪怕一小部分交易内容,哈希值都会完全改变。这让网络很容易检测到篡改行为。
哈希在比特币安全中的作用
哈希帮助保护比特币网络,使交易易于验证且无法被悄悄篡改。因为每笔交易都有自己独特的哈希,网络可以迅速发现是否有内容被更改。
哈希函数接收数据并将其转换为一串固定长度的数字和字母,这被称为哈希。相同的输入总会产生相同的哈希,但即使输入有极小的变化,结果也会完全不同。这个特性让计算机能够检查数据是否被更改。
哈希就像为数字数据创建指纹。它是将一条数字信息转换为固定长度代码的过程,这个代码作为唯一标识符。就像指纹可以识别一个人,哈希可以识别一条数字信息。
这个输出,也就是哈希,无论原始信息有多长,长度总是一样的。比特币使用几种特定类型的哈希函数,叫做SHA-256和RIPEMD160。
下面是几个例子:
- 字符串的 SHA256 哈希值你好,世界
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
- 字符串的 SHA256 哈希值hello world。
7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87- 请注意,输入的微小变化会导致输出与第一个完全不同
- 可下载 iso 文件的 SHA256 哈希值Ubuntu 18.10
7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765- 这个输入是一个巨大的文件,但输出仍然是相同的固定长度
你也可以把哈希想象成乐谱,它捕捉了一段音乐的精髓。就像乐谱是旋律的独特表现一样,哈希值是数据的独特表现。
通过将一段音乐的乐谱与实际演奏进行比较,音乐家可以判断演奏是否准确。同样,通过比较接收到的数据的哈希值与原始哈希值,可以判断数据在传输过程中是否被篡改。
就像音乐表演中哪怕是微小的偏差也会让其听起来不同一样,即使对原始数据做出极小的更改,也会导致不同的哈希值。这使得哈希成为确保比特币交易完整性和真实性的有力工具。
通过对公钥进行哈希编码,可以将信息转换为固定长度、不可读的格式,从而提升安全性。比特币使用 SHA-256 和 RIPEMD160 算法生成公钥地址。生成的输出作为公钥的唯一标识符,并有助于确保账本中交易的完整性和安全性。通过这种方式加密信息,未经授权的人更难访问和篡改数据。
哈希函数的特性
- 确定性:相同的原料总是能做出相同的果昔。同样,相同的数据总是会产生相同的哈希值。
- 原像不可逆性:如果你只有果昔,你无法知道用了哪些具体水果。同理,如果你只有哈希值,你无法还原出原始数据。
- 雪崩效应:哪怕只改变一点点原料,做出来的果昔也会完全不同。在哈希中,数据的微小变化会产生完全不同的哈希值。
- 抗碰撞性:要找到两组不同的原料却做出完全相同的果昔是极其困难的。同样,两份不同的数据产生相同哈希值的概率极低。
- 验证速度快:做果昔很快,而且很容易判断结果是不是果昔。哈希函数计算速度快,任何人都能轻松验证。
活动:生成 SHA 256 哈希值
想知道哈希是如何工作的吗?扫描二维码,立即为你选择的任何单词、句子或输入生成 SHA256 哈希。哈希函数就像数字指纹:它们是单向的,一旦哈希就无法还原。试试看,亲自体验一下吧!