目录
零知识证明
安全多方计算
Hash算法
MD5信息摘要算法
安全散列算法sha-256
非对称加密
RSA算法
ECC (Error correcting code)
对称加密
DES数据加密标准
3DES三重数据加密算法
AES高级加密标准
数字签名
椭圆曲线数字签名
共识算法
授权拜占庭容错算法(dBFT)
实用性拜占庭容错算法(PBFT)
Kafka共识机制
Raft共识机制
Pow(工作量证明)
Pos(权益证明机制)
股份授权证明机制(DPoS)
基于区块链和物联网的追溯技术
Lora(远距离无线电)
RFID
物联网传感器
Merkle 可信树
什么是状态通道?
预言机
IPFS技术
零知识证明
零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。
安全多方计算
在分布式网络中,多个参与实体各自持有秘密输入,各方希望共同完成对函数的计算,且每个参与实体除计算结果外均不能得到其他参与实体的任何输入信息。在无可信第三方情况下,安全地进行多方协同计算。
预备知识:
散列函数
散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。
散列存储方法
散列存储,又称hash存储,是一种力图将数据元素的存储位置与关键码(key值)之间建立确定对应关系的查找技术。
散列值
是由单词Hash翻译过来的,有时也直接音译为“哈希”,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。
MAC函数(消息认证码(带密钥的hash函数))
MAC是指消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。
Hash算法
MD5信息摘要算法
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
安全散列算法sha-256
SHA256算法使用的哈希值(散列值)长度是256位(32字节)。
非对称加密
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
RSA算法
RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK 。
正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
ECC (Error correcting code)
椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大素数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。
对称加密
对称加密算法在加密和解密时使用的是同一个秘钥;
DES数据加密标准
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
3DES三重数据加密算法
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。
由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法
AES高级加密标准
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
高级加密标准算法从很多方面解决了令人担忧的问题。实际上,攻击数据加密标准的那些手段对于高级加密标准算法本身并没有效果。如果采用真正的128位加密技术甚至256位加密技术,蛮力攻击要取得成功需要耗费相当长的时间。
数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
使用非对称加密算法让信息的发送者使用私钥加密别人无法伪造的密文。
椭圆曲线数字签名
共识算法
预备知识:
什么是拜占庭错误?
一般地,把出现故障( crash 或 fail-stop,即不响应)但不会伪造信息的情况称为“非拜占庭错误”( non-byzantine fault)或“故障错误”( Crash Fault);伪造信息恶意响应的情况称为“拜占庭错误”( Byzantine Fault),对应节点为拜占庭节点。
处理非拜占庭错误的算法有:paxos、RAFT和其变种
处理拜占庭错误算法有:PBFT、pow算法
授权拜占庭容错算法(dBFT)
授权拜占庭容错算法,是基于持有权益比例来选出专门的记账人(记账节点),然后记账人之间通过拜占庭容错算法(即少数服从多数的投票机制)来达成共识,决定动态参与节点。dBFT(Delegated Byzantine Fault Tolerance)可以容忍任何类型的错误,且专门的多个记账人使得每一个区块都有最终性、不会分叉。
实用性拜占庭容错算法(PBFT)
PBFT(Practical Byzantine Fault Tolerance)共识算法可以在少数节点作恶(如伪造消息)场景中达成共识,它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别,在一个由(3f+1)个节点构成的系统中,只要有不少于(2f+1)个非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误。
在Hyperledger fabric 中设计成PBFT 共识可插拔模组、央行数字货币。
Kafka共识机制
虽然在Hyperledger Fabric中Kafka被称为共识(Consensus),但是其核心是交易排序服务以及额外的崩溃容错能力。
无需竞争,Kafka 集群的排序服务节点根据交易请求分发到不同分区处理。集群中客户端和服务器端通过SSL ( Secure sockets layer) 数据加密、通过SASL ( Simple authentication and security layer) 用户认证。网络共识由Kafka 集群实现,具有较高的吞吐量。
在Hyperledger fabric 中设计成Kafka 可插拔模组。
Raft共识机制
Raft是实现分布式共识的一种算法,主要用来管理日志复制的一致性。它和Paxos的功能是一样,但是相比于Paxos,Raft算法更容易理解、也更容易应用到实际的系统当中。而Raft算法也是联盟链采用比较多的共识算法。
它保证了在一个由N个节点构成的系统中有(N+1)/2个节点正常工作的情况下的系统的一致性,比如在一个5个节点的系统中允许2个节点出现非拜占庭错误,如节点宕机、网络分区、消息延时。Raft相比于Paxos更容易理解,且被证明可以提供与Paxos相同的容错性以及性能,其详细介绍可见官网及动态演示。
在Hyperledger fabric 和FISCO BCOS 的区块链系统中设计为可插拔的Raft 模组。
Pow(工作量证明)
POW共识机制的基本原则是,必须通过一定的工作量才能获得投票权和记账权力,从而达到全网共识。也就是说你必须完成一定的工作量,你才有话语权。比如说在比特币挖矿中,你想获得记账权,就必须贡献自己的计算机算力,这样就有效的防止一些人注册多个僵尸账号影响投票结果,因为僵尸账号没有实际设备支持,是不可能获得投票权力的。
工作量证明机制即对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时必须满足的要求。在基于工作量证明机制构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。工作量证明机制具有完全去中心化的优点,在以工作量证明机制为共识的区块链中,节点可以自由进出。大家所熟知的比特币网络就应用工作量证明机制来生产新的货币。然而,由于工作量证明机制在比特币网络中的应用已经吸引了全球计算机大部分的算力,其他想尝试使用该机制的区块链应用很难获得同样规模的算力来维持自身的安全。同时,基于工作量证明机制的挖矿行为还造成了大量的资源浪费,达成共识所需要的周期也较长,因此该机制并不适合商业应用。
Pos(权益证明机制)
2012年,化名Sunny King的网友推出了Peercoin,该加密电子货币采用工作量证明机制发行新币,采用权益证明机制维护网络安全,这是权益证明机制在加密电子货币中的首次应用。与要求证明人执行一定量的计算工作不同,权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。因此,PoS机制并没有从根本上解决PoW机制难以应用于商业领域的问题。
股份授权证明机制(DPoS)
股份授权证明机制是一种新的保障网络安全的共识机制。它在尝试解决传统的PoW机制和PoS机制问题的同时,还能通过实施科技式的民主抵消中心化所带来的负面效应。
股份授权证明机制与董事会投票类似,该机制拥有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。基于DPoS机制建立的区块链的去中心化依赖于一定数量的代表,而非全体用户。在这样的区块链中,全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行。同时,区块链中的全体节点具有随时罢免和任命代表的权力。如果必要,全体节点可以通过投票让现任节点代表失去代表资格,重新选举新的代表,实现实时的民主。
股份授权证明机制可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。然而,该共识机制仍然不能完美解决区块链在商业中的应用问题,因为该共识机制无法摆脱对于代币的依赖,而在很多商业应用中并不需要代币的存在。
基于区块链和物联网的追溯技术
Lora(远距离无线电)
LoRa是一种线性调频扩频调制技术,它的全称为远距离无线电(Long Range Radio),因其传输距离远、低功耗、组网灵活等诸多优势特性都与物联网碎片化、低成本、大连接的需求不谋而合,故而被广泛应用于物联网各个垂直行业中。
在低功耗广域物联网(LPWAN)领域内,分立着两大阵营:授权频谱阵营中以NB-IoT技术为首,其在国内外运营商、设备商、模组和芯片厂商等产业生态的力推之下风风火火的进行,并入主 “东宫”成为5G的一部分;非授权频谱阵营中以LoRa技术马首是瞻,它的发展历程则像是灰姑娘的逆袭,在国内的发展几经坎坷之后,在全球生态伙伴的努力下最终发展成为全球的事实标准。
RFID
物联网传感器
Merkle 可信树
Merkle 可信树是为了解决多重一次签名中的认证问题而产生的,Merkle 可信树结构具有一次签名大量认证的优点,在认证方面具有显著的优势。如今,Merkle 可信树的树形结构已经被广泛应用到了信息安全的各个领域,比如证书撤销、源组播认证、群密钥协商等等。并且基于 Merkle 可信树的数字签名方案在安全性上仅仅依赖于哈希函数的安全性,且不需要太多的理论假设,这使得基于 Merkle 可信树的数字签名更加安全、实用。
区块链100篇之第九篇–默克尔树(Merkle Tree)_&jalins&的博客-CSDN博客_默克尔树中本聪在他的创世论文中一个概念,就是SPV,中文意思是简单支付验证,从这里我们可以看出SPV指的是“支付验证”而不是“交易验证”,那这两者有什么区别吗?简单的说就是支付验证只需验证该笔交易是否被确认过了,而交易验证是需要验证该笔交易是否满足一些条件如“余额”是否足够,还有该笔交易有没有存在双花等等一些问题,只有一切都没什么问题后该笔交易才算验证通过,可以看出交易验证要比支付验证更加复杂,所以它一般…https://blog.csdn.net/weixin_37504041/article/details/80474636″ />默克尔树(Merkle Tree)是什么意思? – 币界网默克尔树于1979年由美国计算机科学家拉尔夫·默克尔(Ralph Merkle)提出,本质上是一种树状数据结构,由数据块、叶子节点、中间节点和根节点组成。所以,一组合,就叫“Merkle Tree”。
https://www.528btc.com/college/160040685669793.html
但在默克尔树里,数据被拆分成多个小块,形成了多个分支,可以根据具体情况对部分数据进行校验,无需校验整个数据,从而提高数据校验的灵活性和效率。
什么是状态通道?
首先,先看一下什么是状态机。状态机是一个很简单的概念,维持着世上很多软件的各种表现形式,可以总结为:f(state, action) => state’,也就是说,这个函数采用当前的状态和一次操作(即更改状态的方法),并返回执行完该操作之后的状态。
以太坊是一个全球化的基于交易的状态机,在链上的每一步操作都会产生最新的状态。不同的是,状态通道是在链外进行状态维护。
状态通道听起来就像是“支付通道”的延伸,这也是这项技术一直被低估和忽视的原因,一个隐私、效率、信任最小化、安全性和模块化的广义通道是我们要建设的重要基础设施之一。
状态通道本质上是通过在不同用户之间或用户和服务之间建立一个双向通道,为不同实体之间提供状态维护服务。它允许把区块链上的许多操作在链外进行管理,等完成链外操作后多方签名确认后,才将最终结果上链。其实可以把状态通道理解成一个执行特殊操作的智能合约,一个专门建立双向通道,在一定条件下进行状态保持的智能合约。
预言机
在计算复杂度理论与可计算性理论中,预言机(英语:oracle machine),又称谕示机,是一种抽象电脑,用来研究决定型问题。可以被视为一个多了个黑盒子(预言者)的图灵机,这个黑盒子的功能是可以在单一运算之内解答特定问题。预言者可以解答的问题,根据给定可以是任何复杂度类之内的问题。甚至可以使用不可判定问题,像是停机问题。
IPFS技术
星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。
IPFS(InterPlanetary File System,星际文件系统)是一个将现有的成功系统分布式哈希表(Distributed Hash Tables (DHTs))、BitTorrent、版本控制系统Git、自认证文件系统(Self-Certified Filesystems – SFS)与区块链相结合的文件存储和内容分发网络协议。这些系统的综合优势给它带来的显著特性:
1.永久的、去中心化保存和共享文件 (区块链模式下的存储DHTs)
2.点对点超媒体:P2P 保存各种各样类型的数据(BitTorrent)
3.版本化:可追溯文件修改历史(Git – Merkle DAG默克尔有向无环图))
4.内容可寻址:通过文件内容生成独立哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间