首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是数字指纹、SHA算法、非对称加密,不能再通俗了(一)

什么是数字指纹、SHA算法、非对称加密,不能再通俗了(一)

文 | 李少主

李少主,比特币及区块链行业推广者,6年从业经验。

致力于数字货币的研究,欢迎有识之士共同探讨区块链!

主流币种的价格又被锤了回去,在这个时候正好静下心来钻研区块链的技术。有朋友在后台问题怎么买币,还有一些其他基础知识。今天通俗地解释一下区块链运作的基本原理,以比特币为例。

现在的互联网最大的问题是不可信。十多年前,长辈们让我们不要轻信网上的内容。当互联网成为基础设施后,我们反过来告诉长辈,不要轻信网上的内容。

区块链技术本质上要解决的问题就是信任。如果区块链技术得到普及,将填补目前的互联网在信任这一关键环节上的不足。

提到区块链,首先被提起的肯定是去中心化。每个人只需要一台电脑就可以有一份账本,当我们第一次使用比特币钱包的时候,系统会先同邻近节点下载完整的账本。目前这个账本已经有200多GB。

当每个人都有这个账本时,这个账本几乎是没有办法篡改的。对于攻击者来说,这种成本几乎无法承受。

那么,在这样一个网络中,比特币是怎么来的?我们要如何进行转账?我们一步一步来讲述其运行的过程。

第1步

二进制

首先要了解二进制这个概念。

我们通过网络发送的都是消息,无论是哪一种数字货币,实际上都是一串字符。计算机使用的是二进制,所以,这些信息,无论是数字、字母还是汉字,其实都可以转化为二进制。

一个英文字母或者数字对应8个比特,一个中文字符对应16比特。原始信息越长,二进制编码也越长。

比如,“A支付5元钱给B”,转化成二进制就是:

0100000111001010010111110011101101100000110101101000101000011100101001011000111111101101100101000010

二进制也可以转化为十进制,他们完全相等,

100000111001010080606408664086260086008422488464406842602666664446622202242228042826680682422068400

这个信息就是我们在网络上要传递的信息本身。但这个样子是不能传输的,这里还没有解决可信的问题。

第2步

数字指纹

原始信息不经过加密是不能传输的,这样的信息没有任何安全性可言。

在网络上,我们怎么确定收到的字符是真实而且完整的呢?

这里就需要数字指纹出场了。

刚才的一串二进制的数值,我们要经过一种手段,将其转换成另外一串数值,也就是“数字指纹”,并且

(1)长度固定

(2)只能从原文计算出数字指纹,反过来不能推算出原文

实际上,这另一串数值就是数字指纹。

第3步

SHA算法

这是可以做到的。1993年,美国国家安全局发布了SHA算法,全称是Secure Hash Algorithm。

比特币采用SHA-256算法,即生成的数字指纹固定长度是256位。

没必要深究其技术原理,只需要知道这个算法的特点是:无论原始信息是什么,输出的数字指纹都是256位数。这个256位的数值是二进制的。

这套算法是公开的,每个人都可以使用。

“A支付5元钱给B”使用SHA-256算法生成的数字指纹是:

1111011110111011001010011011101011011111000001011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

除了长度固定,这套算法的另一个特点是,只要原文改了任何一个字,生成的数字指纹就会发生巨大的变化。也就是说,完全没有任何规律,无法通过数字指纹反推原文。

SHA-256的缺点就是太长,不过二进制可以转换为十六进制。

刚才的数字指纹转换成十六进制就是

f7bb29badf05d41e60b1036d749f134a901c7a97daef7a1fe4e1e14471bd4833

有了数字指纹,比特币就要求,发出信息的一方要发送两个信息

(1)原始信息

(2)转换后的数字指纹

信息的接收方收到信息之后,把原始信息再生成一次数字指纹,和收到的数字指纹对比一下,就能够知道信息是否完整。

但是此时,我们仍然不能确保信息的真实性。因为还没有进行任何加密。这里还是明文传输,黑客随时可以进行拦截。

第4步

非对称加密

为了确保信息传输的安全,就需要进行加密。

在一些以早期的战争为背景的电影中经常出现“密码本”这个词,比如电影《风声》。电影里李冰冰饰演的密码专家李宁玉在破解的就是这个密码本。

充当密码本的可以是普通的书籍。只要找到了对方用来加密的是哪一本书,就能破解对方的情报。而且还可以伪造错误情报发出去。所以每过一段时间,密码本要进行更换。

如何加密,就如何解密,这叫做“对称加密”。

这种加密方式在现在早就很不安全。所以密码学家们找到了另一种加密方法,加密是一种方法,解密是另一种方法,也就是常说的“非对称加密”。

不管密码学家具体怎么弄的吧,反正非对称加密早就已经使用了几十年。

比特币采用的加密算法叫做“椭圆曲线算法”,也被称为“ECC算法”。这种算法是1985年由两位美国人尼尔·库伯利兹(Neal Koblitz)和维克托·米勒(Victor Miller)分别独立提出的。

在这种算法下有私钥和公钥两个概念,私钥用来加密,公钥用来解密。

有了ECC算法,信息发送者随机生成一个私钥,然后根据私钥生成一个公钥。用私钥对数字指纹进行加密,得到密文。然后把原文、密文和私钥广播到整个比特币网络。

信息的接收者通过公钥对密文进行解密,得到了一个数字指纹。

他在利用SHA算法将原文生成另一个数字指纹。

这两个数字指纹进行对比,如果完全一致,就确认这条信息是合法的交易信息,否则抛弃该信息。

第5步

比特币账户

公钥实际上就是比特币账户的地址。

一个私钥可以生成无数个公钥,所以一个人其实可以拥有很多很多个比特币账户。

账户只是一串字符,不体验账户所有者的任何信息。这就确保了比特币的匿名性。

私钥才是比特币的唯一凭证,如果私钥丢失,就相当于永久丢失了自己的比特币,根本无法找回。全世界因此而丢失的比特币已经有上百万枚。

第6步

点对点传输

比特币是去中心化的,通过点对点传输技术(P2P)在节点之间传输信息。

每个人在第一次使用比特币钱包的时候都要下载最新的账本,如果账本发生了变化,也要从邻近的节点把最新的账本同步过来。

第7步

区块与区块链

以上所有技术是早就有的,而区块链则是中本聪的发明。

比特币是去中心化的,但是要保证每个节点拥有的账本一致则很难。如果每个节点的账本不一样,这个网络就无法使用。

中本聪给出的解决方案就是区块链。

中本聪把账本设计成一个一个数据包首尾相连而成的长链,每一个数据包就是区块,每一个区块都要包含前一个区块的信息。

这些区块都有唯一的编号,从0开始不断往后排列,不能重复或者中断。

这个编号被称为区块链的高度(height)。比特币的第一个区块链被称为“创世区块”。

在区块中包含的信息有:

前一个区块的数字指纹、固定信息、交易纪录、一个随机数值

每一个区块的大小是1M,大概能存储4000笔交易。

第8步

挖矿

要在比特币上增加一个区块是有条件的。比特币要求,新区块的数字指纹(SHA256)的前72位数必须是0。这样的数值是很难找的。

SHA算法算出来的数值是毫无规律的,如果想要在区块链上添加一个区块,就得先费力气去找这样一个前72位数都是0的SHA算法字符。

要找这样一个数没有任何捷径,只能一个一个去试。这样就给新的区块的增加提高了难度。

既然这么难,人们干嘛要吃力不讨好去使用比特币呢?

关键在于,如果找到了这个数值,并且把新的区块添加到区块链上,这台电脑就能获得比特币的奖励,还有这个区块中所有的手续费收入。

用金钱奖励激励用户争夺记账权。

找这个前72位是0的数值的过程就是“挖矿”。

由于没有任何规律,只能“暴力破解”,所以挖矿的设备算力越来越高。起初用笔记本就能挖出比特币,现在还在挖矿的都是拥有专业ASIC矿机的矿池。

对于区块链,如果有哪些不明白的概念,欢迎和李少主讨论。扫描下面的二维码就能加我的微信。也可以直接在公众号留言。

本文不作为投资建议

投资有风险,入市需谨慎

原创不易,欢迎点赞转发

李少主∣致力于区块链研究

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180514G1I68A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券