区块链核心概念之密码学

in #cn6 years ago

这篇文章有点偏技术,大家可以根据自己的实际情况进行选择性的阅读,如果这些内容你都能理解,恭喜你密码学应用你已经过关了。

密码学是属于数学和计算机学科的分支,是专门研究密码算法和密码破译的技术学科。对于大多人来说我们不需要过多了解密码算法的实现原理,只需要懂得密码算法应用即可。
在密码学中,常用的密码算法有哈希(HASH)、对称加密、非对称加密。

哈希也称为散列算法、摘要,是对一段数据进行密码计算,形成一个定长的字符串,由于哈希可以代表一段数据的唯一特征,有点类似我们人类的指纹,所以大家也经常把哈希称为数字指纹,常用的算法有SHA256。
sha.png

上图例子中可以看出,不管输入的字符串有多大,最终输出的都是一个定长的字符串。

在区块链中,哈希有两个主要用途,一个用途是用来对区块头进行哈希运算,确保数据不可篡改,另一个是用来高效的查找交易数据。

区块链是一个基于哈希指针构建的一个有序的,反向链接的交易块链表,也就是说在区块链中每个区块都通过哈希指针连接到前一个区块上。在区块链中使用通过SHA256算法对区块头进行二次哈希计算而得到的数字指纹,产生的32位字节哈希值被称为区块哈希值。当其中一个区块链数据发生变化后,需要更改之后所有儿子的区块哈希值,一旦一个区块有很多代以后,这种瀑布效应将保证该区块不会被改变,除非强制重新计算该区块所有后续的区块。正是因为这样的重新计算需要耗费巨大的计算量,所以一个长区块链的存在可以让区块链的历史不可改变,这就是区块链数据不可篡改特性的根本。

data.png

由于每个区块都包含了大量的交易数据,随着时间的增长区块的高度不断增加导致交易信息查找变得异常低效,因此在区块链中采用了梅克尔树(merkle tree )的方式来组织区块内的交易数据。在区块的头部存储了父区块链的哈希值、时间戳、随机数、挖矿难度值和一个梅克尔树根,梅克尔树是自下而上构建的,通过不断的两个两个计算节点的哈希值直到头部只有一个梅克尔树根,通过数学算法可以很方便的验证区块中的交易数据。

mekletree.png

对称加密的加密密钥和解密密钥是相同的。比如说我们用1234对一段数据进行加密处理,解密的时候用1234来解密。由于对称加密的使用了相同加密密钥对数据进行加密,因此加密效率非常高,但由于使用了相同的密钥导致对称加密的安全性不高。在实际使用中,由于很难保证密钥在传输、保存过程中不被截获,因此对称加密的安全性比较低。常用的加密算法有DES、AES、 SM4。

非对称加密是由椭圆曲线算法生成的一对公私钥对组成,公钥是对外公开,任何人都可以获取,私钥是自己持有,不需要给任何人看。由于公钥是对外公开的,我们可以用接收者的公钥对数据进行加密,只有持有公钥对应私钥的人才能进行数据解密。反过来,如果使用私钥对数据加密,用公钥进行解密,我们称为签名。由于私钥是由自己持有,公钥是对外公开的,因此采用私钥加密公钥解密的方式,可以验证身份的唯一性,确定某段数据已经得到某个特定组织、个人的认可,或者确定某段数据由某个组织、个人持有。常用的算法有RSA、SM2。

在实际对数据进行加密时,一般会采用数字信封技术,即用对称加密算法对数据进行加密,用非对称加密算法对对称加密密钥加密,这样既可以提升加密效率,又可以有效保护数据的安全。

在数字信封中,信息发送方采用对称密钥来加密信息内容,然后将此对称密钥用接收方的公开密钥来加密(这部分称数字信封)之后,将它和加密后的信息一起发送给接收方,接收方先用相应的私有密钥打开数字信封,得到对称密钥,然后使用对称密钥解开加密信息。这种技术的安全性相当高。数字信封主要包括数字信封打包和数字信封拆解,数字信封打包是使用对方的公钥将加密密钥进行加密的过程,只有对方的私钥才能将加密后的数据(通信密钥)还原;数字信封拆解是使用私钥将加密过的数据解密的过程。

Snipaste_2018-05-05_09-45-26.png

数字签名也称为电子签名,目前应用的比较多的电子签章技术就是使用的数字签名技术,表面是在一个电子文档上放了一个图片,实际上背后是对文档内容和图片算了一次哈希,使用私钥对哈希进行签名。验证的时候重新对文档进行哈希运算,再用公钥解密出原来的哈希进行比对,如果哈希相同则表明文档没有发生改变,反之,则表示文档已经被篡改。

需要说明的是在比特币设计中,数据不可篡改性使用的是基于共识算法的链状数据结构来保证的,签名是用来确定数据的持有者。由于没有账户的概念,要表示某个交易属于某个人,是使用这个人的私钥对交易数据进行签名。因此,区块链世界里,私钥是非常重要的,一定要保存好。在实际应用中,私钥有三种表现形式,分别是私钥、助记词和KeyStore。

私钥是由64位十六进制的字符组成的一段定长的随机数。

例如:5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss

助记词是明文私钥的另一种表现形式, 最早是由 BIP39 提案提出, 其目的是为了帮助用户记忆复杂的私钥 (64位的哈希值)。助记词一般由12、15、18、21个单词构成, 这些单词都取自一个固定词库, 其生成顺序也是按照一定算法而来, 所以用户没必要担心随便输入 12 个单词就会生成一个地址。

下面是助记词的部分内容,总共有2048个单词,如果不小心记错单词的字母,可以查看下面的列表验证单词的正确性。

data1.png

完整的助记词列表请访问https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt查看。

keystore 文件是钱包存储私钥的一种文件格式 (JSON)。它使用用户自定义密码加密,以起到一定程度上的保护作用, 而保护的程度取决于用户加密该钱包的密码强度, 如果类似于 123456 这样的密码, 是极为不安全的。

下面是keystore的文件格式:

{“version”:3,”id”:”b7467fcb-3c8b-41be-bccf-73d43a08c1b7”,”address”:”540f18196da5a533fa36577a81de55f0a2f4e751”,”Crypto”:{“ciphertext”:”78ed11b8b6bf29b00f52b42b8542df0e4a6ac078e626af7edcf885c3b68154a4”,”cipherparams”:{“iv”:”4516579601d96695fe30ace985a9066f”},”cipher”:”aes-128-ctr”,”kdf”:”scrypt”,”kdfparams”:{“dklen”:32,”salt”:”6276cfda7d40872352c801db5871e5a3368a8d0994cea39ed936760db78d1cdc”,”n”:1024,”r”:8,”p”:1},”mac”:”d889a5dc609c3f312a41394cc47640676d2612501a6f8c837ed55598158336db”}}

不管是私钥、助记词还是keystore,一定要要备份好其中一个或者全部,并多次验证确保备份的私钥正常可用。对于大部分人来说,将助记词抄在纸上放在一个安全的地方是比较好的解决方案。

以上内容来自我编写的《走进区块链》,这本书囊括了区块链历史、核心技术、应用场景、技术现状及机会等内容,规划了15节课,4大模块,分别是看懂区块链、区块链应用探索、区块链大厦的基石、区块链实践。

1、 看懂区块链
这部分我们会讲到区块链的历史、区块链的本质、区块链的特点、区块链技术架构及核心技术。通过区块链历史的学习让大家了解到技术从来都不是一蹴而就的,为大家全面理解区块链技术打下坚实的基础;在讲解区块链概念时使用通俗易懂的语言让大家搞懂区块链技术的本质、特点、分类及架构,从不同视角深挖区块链,让大家彻底理解区块链;在讲解核心技术时会用通俗易懂的语言深入浅出的讲解分布式、密码学、共识机制、P2P网络等概念。

2、 区块链探索
这部分我们讲到区块链的应用原则,区块链与大数据、人工智能、物联网、云计算等技术之间的关系,同时结合区块链在金融、互联网社交、共享经济、游戏、新能源方面的案例使学员清晰的认识到区块链世界里到底有哪些机会,区块链应用率先会在哪些领域出现?哪些行业会被区块链颠覆?哪些领域存在着巨大的创业机会?

3、 区块链大厦的基石
这部分我们会讲到现在主流的区块链公链比特币、以太坊、EOS以及区块链在物联网行业的公链IOTA和区块链存储的最佳解决方案IPFS,最后会对现在主流的联盟链超级账本以及其它竞争币、竞争链进行对比分析,让大家对区块链技术发展现状和区块链的未来有一个客观、全面的了解,为大家进入区块链世界提前做足功课。

4、 区块链实战
这部分会讲到普通人怎样过抓住区块链世界里的机会。每个人可以结合自身情况选择合适的事情,参与到区块链世界中来。如果你爱好写作,可以选择一个合适内容创作平台,成为平台早期用户赚取红利;如果你喜欢投资,可以选择一些主流币种用闲钱去投资;如果你是一个程序员,可以学习智能合约开发,加入到区块链公司中去;如果你是一个企业家,可以将区块链应用到自己的企业业务中来,提高企业的竞争力;如果你是一个媒体工作者,可以选择从事区块链媒体相关工作;如果你熟悉硬件运维,可以成为公链的矿工;如果你是一个互联网创业者,可以选择区块链行业创业,这里的机会比传统互联网更多,如果你是……

往期内容:
抓住区块链世界里的机会
中本聪到底是谁?他到底是怎样发明了比特币?为什么说这个世界需要EOS?
再谈区块链
区块链的分类
区块链技术架构
区块链核心概念之分布式
区块链核心概念之共识机制

Sort:  

Free Daily Upvote and Get 0.1 Steem Just To Sign up!
http://affiliatemarketer.website

学习了。。还是不懂。。。

没事看不懂没关系,后面我还会讲到。这篇文章是最难的,后面的都比较简单。

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 61178.84
ETH 2749.48
USDT 1.00
SBD 2.45