主页 > imtoken钱包官方苹果 > 密码学、数字签名和比特币

密码学、数字签名和比特币

imtoken钱包官方苹果 2024-01-17 05:12:01

“让我们创造一片新大陆,将那些物质的控制者拒之门外,他们为了跟随我们,进入我们的领地,会耗尽无穷无尽的资源。”

要了解比特币中的数字签名,您必须首先了解一点密码学。

01

来自密码学

对间谍电影感兴趣的人可能听说过密码学,这是一门应用数学来加密和解密数据的科学。 使用这门科学,我们可以确保只有消息的接收者才能看到消息的内容。

具体来说,我们将明文按照一定的加密算法用密钥加密成密文,然后接收方使用加密算法和密钥从密文中解密出明文。

在传统密码学中,发送方和接收方使用的加密算法和密钥是相同的,所以这种加密算法被称为“对称加密算法”。

历史上一个著名的对称加密算法就是凯撒算法。 据传说,它曾被 Julius Caesar 用来保护军事信息。

凯撒的算法很简单。 假设发送方和接收方约定密钥为4,发送方将明文中的每个字母替换为字母表中与其相距三位的字母,即A变为E比特币地址格式,B变为F,“HELLO ”变成“LIPPS”。

这种加密方式看似很简单,通常攻击者可以从语言学的角度找出重复的字母,并推导出密钥。

但这种移位算法经过一代又一代密码学家的改进,最终在二战期间演变成德国的恩尼格玛密码(Enigma)。

马斯克叫停比特币买车 比特币跳水_比特币分叉影响比特币总量_比特币地址格式

Enigma是二战德军使用的机械加解密机。 其加密原理是基于“双工移位置换法”。

当同一个字母在明文中处于不同的位置时,可以用不同的字母代替,同一个字母在密文中的不同位置可以代表明文中的不同字母。 这使得Enigma生成的密文在没有计算机的时代很难破译。

目前广泛使用的对称加密算法是 AES(高级加密标准),由美国国家标准技术研究院于 2001 年制定。使用 128 位密钥的 AES 算法被认为足以抵抗暴力攻击。

比特币地址格式_比特币分叉影响比特币总量_马斯克叫停比特币买车 比特币跳水

对称加密算法可以保护机密信息不被窥探,但这种算法要求发送方和发送方拥有相同的密钥。

在某些情况下,发送方和接收方无法共享密钥。 例如,当发送方和接收方处于可能被监视的环境中时,他们发送密钥的通道可能被拦截,导致密文被破译。

于是一些密码学家开始研究如何在不安全的通道上交换密钥。

02

Diffie-Hellman 密钥交换协议

为了安全地交换密钥,Whitfield Diffie 和 Martin Hellman 于 1976 年发布了 Diffie-Hellman 密钥交换协议。

比特币地址格式_比特币分叉影响比特币总量_马斯克叫停比特币买车 比特币跳水

简而言之,假设 Alice 想向 Bob 发送一个密文。 为了让 Bob 能够解密,Alice 还需要将密钥发送给 Bob。

首先,Alice 和 Bob 各自选择一个足够大的素数 x, y。

然后 Alice 和 Bob 就两个数 g 和 n 达成一致,这两个数可以公开给所有人。

Alice 计算 g^x mod n 并将结果通知 Bob,Bob 计算 g^y mod n 并将结果通知 Alice。

这样双方都知道密钥是g^(xy) mod n = (g^y mod n)^x mod n = (g^x mod n)^y mod n。

使用这个对称密钥,Alice 和 Bob 可以安全地加密通信。

比特币分叉影响比特币总量_马斯克叫停比特币买车 比特币跳水_比特币地址格式

要破解这个密钥,攻击者必须试验 g^(x*y) mod n 的所有可能值。 当n为至少600位的质数时,可以保证对称密钥的安全性。

交换协议解决了如何在不安全的通道上交换密钥的问题。 但它要求发送方和接收方必须同时在线才能生成对称密钥。 另外,在交换协议中也不能保证与 Alice 交换密钥的确实是 Bob,而不是其他人。

03

公钥加密算法

公钥加密算法,又称非对称加密算法。

该算法的加密过程需要两把钥匙,一把用于加密,一把用于解密。 用其中一个密钥加密明文得到的密文,只能用对应的另一个密钥解密,才能得到原来的明文。 因为加密和解密需要两个不同的密钥,所以称为非对称加密。

虽然这两个密钥在数学上是相关的,但知道其中一个并不能用来计算另一个。

其中一个可以公开,称为公钥,可以任意发布; 未公开的密钥为私钥,必须由用户严格保管,不能提供给任何人,也不需要透露给对方进行通信。

公钥加密算法的关键在于公钥和私钥的生成,因此公钥和私钥通常是根据数学问题来设计的。 三个常用的问题是:质因数分解、离散对数和椭圆曲线问题。

例如广泛使用的RSA算法就是基于大整数的因式分解问题设计的。

比特币地址格式_马斯克叫停比特币买车 比特币跳水_比特币分叉影响比特币总量

下面演示一个简化版的RSA加解密过程:

Alice 随机选择两个素数(实践中使用足够长的素数)p = 11 和 q = 13。

比特币分叉影响比特币总量_马斯克叫停比特币买车 比特币跳水_比特币地址格式

p和q的模为n = p * q = 143,其欧拉函数值为r = (p-1)*(q-1) = 120。

接下来是公钥私钥生成。 公钥是从小于r的数中选出一个与r互质的数,例如e=7。私钥是e关于r的逆元。

根据扩展欧几里得算法可以计算出私钥d=103,可以验证e * d = 7 * 103 = 721,721与1约120全等。

此时,对于 Alice 来说,她的公钥是 (n, e),她的私钥是 (n, d)。

当Bob要给Alice发送信息时,Bob首先需要获得Alice的公钥,然后Bob开始对信息进行加密。

假设要发送的信息为m = 9(实际上,双方按照约定的格式将信息转换为小于n且与n互质的整数)。

那么加密后的密文就是c = m^e mod n = 9^7 mod 143 = 48。

爱丽丝用她的私钥解密密文。 c^d mod n = 48^103 mod 143 = 9。

当攻击者获得Alice的公钥(n, e)和密文c时,无法直接获得私钥(n, d)。 获得 d 的最简单方法是将 n 分解为 p 和 q。 只要人类无法改进分解极大整数的算法,使用足够长(4096 位或更多)RSA 公钥加密的消息就可以被认为是不可破解的。

当然,实际使用比理论要复杂得多。 例如,非对称加密通常比对称加密算法更复杂,性能更差。 一般采用对称加密算法生成密文,然后采用非对称加密算法对对称密钥进行加密。

此外,为了防止中间人攻击,公钥加密算法需要由可靠的第三方机构颁发的数字证书来证明公钥拥有者的身份。 .

公钥加密算法除了用于加密之外,还有一个重要的应用:数字签名。

04

马斯克叫停比特币买车 比特币跳水_比特币分叉影响比特币总量_比特币地址格式

电子签名

通过以上密码学知识的铺垫,我们对常见的加密算法有了初步的了解。

考虑以下场景。 如果你给你的朋友发消息,你如何证明你是消息的发送者,又如何保证消息在途中不被第三方修改?

中本聪在设计区块链网络时也遇到了这个问题:每个节点产生的交易都必须发送给其他节点。 那么接收节点如何判断交易中记录的交易信息是发送节点发送的呢?

在这种情况下,可以使用公钥加密算法对发送的信息生成数字签名,接收方可以通过数字签名判断信息是否可信。

使用公钥加密算法进行数字签名的步骤与加密和解密的步骤略有不同。

马斯克叫停比特币买车 比特币跳水_比特币分叉影响比特币总量_比特币地址格式

假设 Alice 想给 Bob 发送消息。 Alice 生成公钥-私钥密码对,然后公布公钥,然后用私钥加密消息的哈希值,随消息一起发送给 Bob。

Bob收到消息后,可以用Alice公布的公钥解密,得到消息的哈希值,可以表明消息的​​发送者是Alice。

然后将解密后的哈希值与接收到的哈希值进行比较,检查消息是否被中间的第三方篡改。

数字签名是一种用于识别数字信息所有权的技术,也可以提供对数字信息完整性的验证。

05

比特币系统中的数字签名

马斯克叫停比特币买车 比特币跳水_比特币地址格式_比特币分叉影响比特币总量

比特币中使用的公钥加密算法是椭圆曲线密码算法 (ECDSA)。

当比特币钱包生成一个新的比特币地址时,它实际上生成了一对使用椭圆曲线密码学的公钥和私钥。

公钥和私钥对保存在生成​​的钱包文件中。 生成地址时,通常会要求你设置钱包密码,并尽量备份,保证钱包安全。

比特币系统就像一个巨大的支付账本。 它不记录每个地址有多少钱,它记录每个地址的每笔转账记录。

因此,如果你想知道一个地址中有多少比特币,你需要遍历整个区块链,找到与这个地址相关的所有转账记录,然后计算余额。

马斯克叫停比特币买车 比特币跳水_比特币地址格式_比特币分叉影响比特币总量

创建转账记录时,需要将转账信息发送给其他节点,包括私钥对转账记录的签名结果和未经哈希处理的公钥。

其他节点收到你的转账信息后,会解析出你的公钥,验证数字签名是否有效。

只有在验证数字签名有效后,接收节点才会将转账记录添加到区块的 Merkle 树中比特币地址格式,并执行工作量证明过程。

因此,拥有一个地址对应的私钥,就完全拥有了该地址对应的比特币的所有权。 保管好您的私钥非常重要,任何时候都不要在网络上发送您的私钥。

ETH在线课程

3月23日开课,全部课程仅需368元

课程内容如下:

马斯克叫停比特币买车 比特币跳水_比特币地址格式_比特币分叉影响比特币总量

详情请加入中国区块链技术社区-区块极客,详情我们希望打造中国最大的区块链技术社区。

马斯克叫停比特币买车 比特币跳水_比特币地址格式_比特币分叉影响比特币总量