密码学和P2P网络,不学习一下吗?

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

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

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

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

 

密码学和P2P网络,不学习一下吗?

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

 

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

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

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

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

 

密码学和P2P网络,不学习一下吗?

完整的助记词列表请访问http://www.ikoding.com/tutorial/101.html查看。

 

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,一定要要备份好其中一个或者全部,并进行验证确保备份的私钥(助记词)正常可用。对于大部分人来说,将助记词抄在纸上放在一个安全的地方是比较好的解决方案。

P2P网络

P2P(peer to peer)网络是一种分布式的应用架构。P2P网络中每一个节点彼此对等,各个节点共同提供服务,不存在任何特殊节点。P2P网络中不存在任何服务器、中心化服务及层级结构,P2P网络具有天生的伸缩性、去中心化和开放的特点。

节点之间可以直接进行资源(CPU、存储、带宽)的使用,而不需要中心服务器的协调。各个节点既是资源的供应者也是消费者,传统C/S(客户端服务器)架构下资源的供应者和消费者是分离的。

P2P网络架构既是区块链去中心化核心特性的反映,也是该特性的基石。

 

密码学和P2P网络,不学习一下吗?

除了区块链之外,规模最大也最成功的P2P技术应用是在文件分享领域,Napster是该领域的先锋,BitTorrent是其架构的最新演变,国内的迅雷、快播都是P2P技术的领导者。