主页 > imtoken钱包最新官网下载 > #1 比特币密码学原理

#1 比特币密码学原理

imtoken钱包最新官网下载 2023-05-02 05:34:53

0 先

本文对应肖老师课程P2

如何创建比特币账户_比特币怎么转账至境外账户_比特币账户能查到吗

比特币怎么转账至境外账户_如何创建比特币账户_比特币账户能查到吗

1 哈希函数

比特币中的哈希函数是密码学哈希函数(password hash function),是哈希函数(hash function)的一种。

接下来我会带大家回顾一下函数的定义(1.1),然后简单介绍一下哈希函数的基本性质(1.2),接下来我会跟着老师的视频讲讲哈希函数的性质在三个比特币:

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

1.1 功能

该函数具有映射定义

对于集合 A 中的任意一个数 x,在集合 B 中都有一个唯一确定的数 y 与之对应。

请注意:

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

1.2 哈希函数是一个函数

本质上,哈希函数可以理解为一种特殊的函数。 它首先符合函数的映射定义。

我们将 y=H(x) 记录为哈希函数,其中 x 成为输入值,y 成为哈希值。

哈希函数的特殊性体现在:

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

SHA256加密过程

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

1.3 比特币使用的哈希函数的三大属性之一:抗碰撞性

Collision resistance,即防碰撞。

① 首先要知道什么是碰撞(collision)

对于函数f(x),存在x1≠x2,使得f(x1)=f(x2),即碰撞

②什么是抗碰撞,即防碰撞。

我们很难手动找到(即穷举法除外)一组x1≠x2,使得f(x1)=f(x2)

需要注意的是,抗碰撞并不是没有碰撞。 以SHA256为例,其输出空间为2^256。 如果我们的输入空间是2^256+1,必然会发生碰撞。 事实上,如果我们的输入空间达到2^130次,就有99%的几率发生碰撞。 关于这个数学问题,我们称之为“生日碰撞问题”。 想简单了解的同学可以看看李永乐老师的视频。

比特币怎么转账至境外账户_如何创建比特币账户_比特币账户能查到吗

如果想深入了解它的推理过程,可以看看这篇文章:

③抗碰撞性能的作用

以上两种情况,由于哈希冲突是无法人为造成的,如果坏人想要更改软件安装包或者你上传的文件,那么获取到的哈希值必然会发生变化。

④抗碰撞性不是永恒的

(这段是我自己写的,如有错误请指出)

中国著名密码学家王小云教授发现了一种算法,人为制造了散列函数MD5的散列碰撞,影响了MD5函数的安全性。

我想稍微谈谈这个……为什么人为制造散列冲突时函数安全性会大大降低。 下面以上面的软件安装包为例。 不法分子在软件安装包中植入密码后,新安装包的哈希值与安装包不一致。 进行修改(如添加一些无用的内容),使新安装包的哈希值与原安装包一致,利用抗碰撞原理,让网友无法检测到软件被修改。 所以我想说安全性大大降低了。

如果无法人为制造哈希碰撞,坏人只能使用brute-force暴力破解,而这种工作量之大,根本不可能。

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

1.4 比特币使用的哈希函数的三个属性中的第二个:隐藏属性

①隐匿财产的含义

隐藏属性,大家可以理解为单向。 即对于函数y=H(x),给定输入x,很容易得到哈希值y。 但是给定哈希值y比特币账户能查到吗,很难找到输入x。 通俗的说,除了brute-force蛮力解法(exhaustive),函数是解不出来的。

②隐匿财产成立的前提

③隐匿财产的作用

隐藏性+抗碰撞性的结合,可以实现数字承诺或密封信封的数字等价。

老师举例:某股票大师预测某只股票第二天会涨停。 但他不能提前公布,因为他的猜测会影响股市。 他要把他的猜想放在一个“密封的信封里”。 这时候,他可以这样做:把他的猜测 x 求出哈希值 y。 然后他可以发布散列值。 这时候由于隐藏属性的单向性,韭菜们无从得知这位大神到底写了什么。 并且由于抗碰撞性,第二天收盘后比特币账户能查到吗,专家没有办法根据收盘后的结果找到一个x',也就是它的哈希值y'=y,即他无法改变他的猜测。

在实际操作中需要注意的是,由于只有几只股票,即输入空间非常有限,那么不法分子就可以使用暴力破解的方式进行暴力破解,这样躲就不再躲了. 所以上面说了输入空间一定要足够大。

那么这位大神要做什么呢? 他可以在他的猜测后面加上一个随机数 nonce。 比如大师猜的是“恒通光电和恒力股份”,那么大师就在最后拼出一个随机数“恒通光电和恒力股份1234567890”,取全希腊值。

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

1.5 比特币使用的哈希函数的三个属性中的第三个:puzzle friendly

所谓puzzle friendly,就是对于哈希函数来说,它的输出是不可预测的,没有捷径可以找到特定范围内的哈希值的输入x。 ()

比如我要求SHA256函数的哈希值,前60位全为0。 我没有别的办法,只能一一测试。

比特币怎么转账至境外账户_如何创建比特币账户_比特币账户能查到吗

3个签名

这节课老师主要讲了两件事,一是如何用比特币生成账户,二是简单提到了非对称加密系统。 因为这部分老师讲的比较浅,但是后面的内容其实需要对数字签名的内涵有更深入的理解,所以这里写的稍微多一些。

下面我附上了两个视频,分别是妈咪说的非对称加密的数学原理(主要是前半部分),以及好奇猫的数字签名。 其中妈咪说的很深入,尤其是ecc曲线那一边,真的很难懂,大家不要太灰心。 好奇猫的数字签名还是很通俗易懂的,大家可以2倍速看看。

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

3.1 比特币账户管理

① 如何开设比特币账户

如果你想在比特币中开立一个账户(账户地址),你只需要创建一对公钥和私钥。

随机数生成器生成私钥 ➡️从私钥(ECC)创建公钥 ➡️从公钥(2 哈希)创建账户地址

比特币账户能查到吗_比特币怎么转账至境外账户_如何创建比特币账户

(盗图)也可以用这张图来解释,其中地址的公钥需要两次hash运算

其中,公钥可以公开,大家转账到你的账户地址,汇到你的账户地址。

如果你想了解私钥是如何通过ECC生成公钥的,它的安全性以及涉及到的数学问题,你可以看下面的视频(相信我,你看不懂)

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

②生成公钥和私钥的过程需要一个好的随机源

为了防止坏人疯狂生成私钥,从而生成公钥,从而生成地址,达到攻击的目的(如果找到与某人地址相同的地址,就可以获得此人的私钥),比特币生成私钥密钥生成,需要非常好的随机源和非常大的输出空间。 并且在从私钥生成公钥的过程中要求有一个非常好的随机源(要看懂这句话还是要看上面妈咪说的视频,虽然看不懂)

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

3.2 对称加密算法

使用相同的密钥进行加密和解密是一种对称加密系统。

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

(盗图)对称加密系统,注意使用相同的秘钥K

对称加密系统的缺点:

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

3.3 非对称加密算法:加密通信

在非对称加密系统中,有一对公钥和私钥。 公钥分发给发送方加密明文,私钥保存在本地供接收方解密。具体过程如下图所示

比特币怎么转账至境外账户_如何创建比特币账户_比特币账户能查到吗

(盗图,来自微信公众号“泽平宏”,非对称加密过程)

这种方式的好处是公钥可以任意分发,只要私钥保管好即可。

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

3.4 非对称加密算法:数字签名

在比特币系统中,真正使用非对称加密系统的其实是数字签名。 想深入了解数字签名的同学可以观看这个视频(简单易学):

比特币账户能查到吗_比特币怎么转账至境外账户_如何创建比特币账户

①数字签名的步骤如下图所示:

如何创建比特币账户_比特币怎么转账至境外账户_比特币账户能查到吗

(原创)剧情:小江偷偷向小雨瞥了一眼

小江用哈希算法对情书进行加密,得到哈希值y

小江用自己的私钥对哈希值y进行签名,得到签名后的哈希值y

小江把情书和签名的哈希值y给了小雨

小鱼对情书进行哈希运算,得到哈希值y

小鱼用公钥对签名后的哈希值y进行解密,得到哈希值y'

小鱼比较y和y'的值是否相等

如果它们相等,请解释两件事:

其实网上任何人都可以做这种操作,防止小江渣男否认情书内容,或者否认情书是他签的。

②比特币本质上是一种数字签名

比特币账户能查到吗_比特币怎么转账至境外账户_如何创建比特币账户

摘自中本聪的“比特币:点对点电子现金系统”

比特币账户能查到吗_如何创建比特币账户_比特币怎么转账至境外账户

图片来自中本聪的《Bitcoin: A Peer-to-Peer Electronic Cash System》,翻译好像是李笑来

看图,我们就能明白老师上课讲的内容了。 对于一笔交易,必须使用发起人的私钥进行签名,每个人都可以使用发起人的公钥来验证交易。

比特币怎么转账至境外账户_如何创建比特币账户_比特币账户能查到吗

结尾

第一堂课的内容对于大家深入了解区块链技术非常重要。 希望大家认真看老师的视频和我的文章。

如有任何问题,欢迎站内来信交流(优先),或发邮件至:sam.jiang@sjtu.edu.cn(如有较多问题)