1. 区块链的密码技术有
密码学技术是区块链技术的核心。区块链的密码技术有数字签名算法和哈希算法。
数字签名算法
数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由SHA-1产生的消息哈希:为了验证一个签名,要重新计算消息的哈希,使用公钥解密签名然后比较结果。缩写为DSA。
数字签名是电子签名的特殊形式。到目前为止,至少已经有 20 多个国家通过法律 认可电子签名,其中包括欧盟和美国,我国的电子签名法于 2004 年 8 月 28 日第十届全 国人民代表大会常务委员会第十一次会议通过。数字签名在 ISO 7498-2 标准中定义为: “附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。数字签名机制提供了一种鉴别方法,以解决伪造、抵赖、冒充和篡改等问题,利用数据加密技术、数据变换技术,使收发数据双方能够满足两个条件:接收方能够鉴别发送方所宣称的身份;发送方以后不能否认其发送过该数据这一 事实。
数字签名是密码学理论中的一个重要分支。它的提出是为了对电子文档进行签名,以 替代传统纸质文档上的手写签名,因此它必须具备 5 个特性。
(1)签名是可信的。
(2)签名是不可伪造的。
(3)签名是不可重用的。
(4)签名的文件是不可改变的。
(5)签名是不可抵赖的。
哈希(hash)算法
Hash,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,其中散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,但是不可逆向推导出输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
哈希(Hash)算法,它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。
以比特币区块链为代表,其中工作量证明和密钥编码过程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),这种方式带来的好处是增加了工作量或者在不清楚协议的情况下增加破解难度。
以比特币区块链为代表,主要使用的两个哈希函数分别是:
1.SHA-256,主要用于完成PoW(工作量证明)计算;
2.RIPEMD160,主要用于生成比特币地址。如下图1所示,为比特币从公钥生成地址的流程。
2. 区块链的故事 - 9 - RSA 算法
RSA
迪菲与赫尔曼完美地解决了密钥分发的难题,从此,交换密钥就很简单了,爱丽丝与鲍勃完全可以可以在村头大喇叭里喊话,就能够交换出一个密钥。但加密的方式,依然是对称加密的。
DH 协议交换密钥虽然方便,但依然有一些不尽人意的麻烦处,爱丽丝还是要与鲍勃对着嚷嚷半天,二人才能生成密钥。当爱丽丝想要交换密钥的时候,若是鲍勃正在睡觉,那爱丽丝的情书,还是送不出去。
迪菲与赫尔曼在他们的论文中,为未来的加密方法指出了方向。 通过单向函数,设计出非对称加密,才是终极解决方案。 所谓非对称加密,就是一把钥匙用来合上锁,另一把钥匙用来开锁,两把钥匙不同。锁死的钥匙,不能开锁。开锁的钥匙,不能合锁。
麻省理工的三位科学家,他们是罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman),他们读了迪菲与赫尔曼的论文,深感兴趣,便开始研究。迪菲与赫尔曼未能搞定的算法,自他们三人之手,诞生了。
2002 年,这三位大师因为 RSA 的发明,获得了图灵奖。 但不要以为 RSA 就是他们的全部,这三位是真正的大师,每一位的学术生涯都是硕果累累。让我们用仰视的目光探索大师们的高度。
李维斯特还发明了 RC2, RC4, RC 5, RC 6 算法,以及著名的 MD2, MD3, MD4, MD5 算法。他还写了一本书,叫 《算法导论》,程序员们都曾经在这本书上磨损了无数的脑细胞。
萨莫尔发明了 Feige-Fiat-Shamir 认证协议,还发现了微分密码分析法。
阿德曼则更加传奇,他开创了 DNA 计算学说,用 DNA 计算机解决了 “旅行推销员” 问题。 他的学生 Cohen 发明了计算机病毒,所以他算是计算机病毒的爷爷了。他还是爱滋病免疫学大师级专家,在数学、计算机科学、分子生物学、爱滋病研究等每一个方面都作出的卓越贡献。
1976 年,这三位都在麻省理工的计算机科学实验室工作,他们构成的小组堪称完美。李维斯特和萨莫尔两位是计算机学家,他们俩不断提出新的思路来,而阿德曼是极其高明的数学家,总能给李维斯特和萨莫尔挑出毛病来。
一年过后,1977 年,李维斯特在一次聚会后,躺在沙发上醒酒,他辗转反侧,无法入睡。在半睡半醒、将吐未吐之间,突然一道闪电在脑中劈下,他找到了方法。一整夜时间,他就写出了论文来。次晨,他把论文交给阿德曼,阿德曼这次再也找不到错误来了。
在论文的名字上,这三位还着实君子谦让了一番。 李维斯特将其命名为 Adleman-Rivest-Shamir,而伟大的阿德曼则要求将自己的名字去掉,因为这是李维斯特的发明。 最终争议的结果是,阿德曼名字列在第三,于是这个算法成了 RSA。
RSA 算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开,用作加密密钥。
例如,选择两个质数,一个是 17159,另一个是 10247,则两数乘积为 175828273。 乘积 175828273 就是加密公钥,而 (17159,10247)则是解密的私钥。
公钥 175828273 人人都可获取,但若要破解密文,则需要将 175828273 分解出 17159 和 10247,这是非常困难的。
1977 年 RSA 公布的时候,数学家、科普作家马丁加德纳在 《科学美国人》 杂志上公布了一个公钥:
114 381 625 757 888 867 669 235 779 976 146 612 010 218 296 721 242 362 562 842 935 706 935 245 733 897 830 597 123 563 958 705 058 989 075 147 599 290 026 879 543 541
马丁悬赏读者对这个公钥进行破解。漫长的 17 年后,1994 年 4 月 26 日,一个 600 人组成的爱好者小组才宣称找到了私钥。私钥是:
p:3 490 529 510 847 650 949 147 849 619 903 898 133 417 764 638 493 387 843 990 820 577
q:32 769 132 993 266 709 549 961 988 190 834 461 413 177 642 967 992 942 539 798 288 533
这个耗时 17 年的破解,针对的只是 129 位的公钥,今天 RSA 已经使用 2048 位的公钥,这几乎要用上全世界计算机的算力,并耗费上几十亿年才能破解。
RSA 的安全性依赖于大数分解,但其破解难度是否等同于大数分解,则一直未能得到理论上的证明,因为未曾证明过破解 RSA 就一定需要作大数分解。
RSA 依然存在弱点,由于进行的都是大数计算,使得 RSA 最快的情况也比普通的对称加密慢上多倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。
RSA 还有一个弱点,这个在下文中还会提及。
在密码学上,美国的学者们忙的不亦乐乎,成果一个接一个。但老牌帝国英国在密码学上,也并不是全无建树,毕竟那是图灵的故乡,是图灵带领密码学者们在布莱切里公园战胜德国英格玛加密机的国度。
英国人也发明了 RSA,只是被埋没了。
60 年代,英国军方也在为密码分发问题感到苦恼。1969 年,密码学家詹姆斯埃利斯正在为军方工作,他接到了这个密钥分发的课题。他想到了一个主意,用单向函数实现非对称加密,但是他找不到这个函数。政府通讯总部的很多天才们,加入进来,一起寻找单向函数。但三年过去了,这些聪明的脑袋,并没有什么收获,大家都有些沮丧,这样一个单项函数,是否存在?
往往这个时候,就需要初生牛犊来救场了。科克斯就是一头勇猛的牛犊,他是位年轻的数学家,非常纯粹,立志献身缪斯女神的那种。 虽然年轻,但他有一个巨大优势,当时他对此单向函数难题一无所知,压根儿不知道老师们三年来一无所获。于是懵懵懂懂的闯进了地雷阵。
面对如此凶险的地雷阵,科克斯近乎一跃而过。只用了半个小时,就解决了这个问题,然后他下班回家了,并没有把这个太当回事,领导交代的一个工作而已,无非端茶倒水扫地解数学题,早点干完,回家路上还能买到新出炉的面包。他完全不知道自己创造了历史。科克斯是如此纯粹的数学家,后来他听闻同事们送上的赞誉,还对此感到有些不好意思。在他眼里,数学应该如哈代所说,是无用的学问,而他用数学解决了具体的问题,这是令人羞愧的。
可惜的是,科克斯的发明太早了,当时的计算机算力太弱,并不能实现非对称的加解密。所以,军方没有应用非对称加密算法。詹姆斯与科克斯把非对称加密的理论发展到完善,但是他们不能说出去,军方要求所有的工作内容都必须保密,他们甚至不能申请专利。
军方虽然对工作成果的保密要求非常严格,但对工作成果本身却不很在意。后来,英国通讯总部发现了美国人的 RSA 算法,觉得好棒棒哦。他们压根就忘记了詹姆斯与科克斯的 RSA。通讯总部赞叹之余,扒拉了一下自己的知识库,才发现自己的员工科克斯早已发明了 RSA 类似的算法。 官僚机构真是人类的好朋友,总能给人们制造各种笑料,虽然其本意是要制造威权的。
科克斯对此并不介怀,他甚至是这样说的:“埋没就埋没吧,我又不想当网红,要粉丝干嘛?那些粉丝能吃?” 原话不是这样的,但表达的意思基本如此。
迪菲在 1982 年专程去英国见詹姆斯,两人惺惺相惜,真是英雄相见恨晚。可惜詹姆斯依然不能透漏他们对 RSA 的研究,他只告诉了迪菲:“你们做的比我们要好。” 全球各国的科学家们,可以比出谁更好,但全球各国的官僚们,却很难比出谁更颟顸,他们不分高下。
区块链的故事 - 1
区块链的故事 - 2
区块链的故事 - 3
区块链的故事- 4
区块链的故事 - 5
区块链的故事 - 6
区块链的故事 - 7
区块链的故事 - 8
3. 区块链的加密技术
数字加密技能是区块链技能使用和开展的关键。一旦加密办法被破解,区块链的数据安全性将受到挑战,区块链的可篡改性将不复存在。加密算法分为对称加密算法和非对称加密算法。区块链首要使用非对称加密算法。非对称加密算法中的公钥暗码体制依据其所依据的问题一般分为三类:大整数分化问题、离散对数问题和椭圆曲线问题。第一,引进区块链加密技能加密算法一般分为对称加密和非对称加密。非对称加密是指集成到区块链中以满意安全要求和所有权验证要求的加密技能。非对称加密通常在加密和解密进程中使用两个非对称暗码,称为公钥和私钥。非对称密钥对有两个特点:一是其间一个密钥(公钥或私钥)加密信息后,只能解密另一个对应的密钥。第二,公钥可以向别人揭露,而私钥是保密的,别人无法通过公钥计算出相应的私钥。非对称加密一般分为三种首要类型:大整数分化问题、离散对数问题和椭圆曲线问题。大整数分化的问题类是指用两个大素数的乘积作为加密数。由于素数的出现是没有规律的,所以只能通过不断的试算来寻找解决办法。离散对数问题类是指基于离散对数的困难性和强单向哈希函数的一种非对称分布式加密算法。椭圆曲线是指使用平面椭圆曲线来计算一组非对称的特殊值,比特币就采用了这种加密算法。非对称加密技能在区块链的使用场景首要包含信息加密、数字签名和登录认证。(1)在信息加密场景中,发送方(记为A)用接收方(记为B)的公钥对信息进行加密后发送给
B,B用自己的私钥对信息进行解密。比特币交易的加密就属于这种场景。(2)在数字签名场景中,发送方A用自己的私钥对信息进行加密并发送给B,B用A的公钥对信息进行解密,然后确保信息是由A发送的。(3)登录认证场景下,客户端用私钥加密登录信息并发送给服务器,服务器再用客户端的公钥解密认证登录信息。请注意上述三种加密计划之间的差异:信息加密是公钥加密和私钥解密,确保信息的安全性;数字签名是私钥加密,公钥解密,确保了数字签名的归属。认证私钥加密,公钥解密。以比特币体系为例,其非对称加密机制如图1所示:比特币体系一般通过调用操作体系底层的随机数生成器生成一个256位的随机数作为私钥。比特币的私钥总量大,遍历所有私钥空间获取比特币的私钥极其困难,所以暗码学是安全的。为便于辨认,256位二进制比特币私钥将通过SHA256哈希算法和Base58进行转化,构成50个字符长的私钥,便于用户辨认和书写。比特币的公钥是私钥通过Secp256k1椭圆曲线算法生成的65字节随机数。公钥可用于生成比特币交易中使用的地址。生成进程是公钥先通过SHA256和RIPEMD160哈希处理,生成20字节的摘要成果(即Hash160的成果),再通过SHA256哈希算法和Base58转化,构成33个字符的比特币地址。公钥生成进程是不可逆的,即私钥不能从公钥推导出来。比特币的公钥和私钥通常存储在比特币钱包文件中,其间私钥最为重要。丢掉私钥意味着丢掉相应地址的所有比特币财物。在现有的比特币和区块链体系中,现已依据实践使用需求衍生出多私钥加密技能,以满意多重签名等愈加灵敏杂乱的场景。
4. 区块链和比特币(一)
区块链(Blockchain)是一种很早就被学界提出但近几年才被比特币带火的一个概念。比特币是基于区块链技术的一种实现,比特币是一种加密货币,或者叫数字货币也可以。我们先以比特币入手谈谈比特币是怎么利用区块链技术的。
假设06年世界杯决赛期间,两个互相不认识的足球迷碰到了,意大利打法国,法国球迷说我们法兰西有齐达内肯定赢你们意大利,意大利球迷不服气说我们意大利是战无不胜的,不信咱俩赌100欧元。现实世界里,怎么办呢?
我之前讲过我们搞计算机的,90%以上的时间都在处理异常情况,如果人类都很讲信用的话,那这个世界可能就不是现在这样了。秦国当年许给楚怀王那600里地就不是6里了,说不定统一中国的就是楚国了呢也说不定。如果把钱交到第三方手里,万一第三方也跑了怎么办?把钱私吞了。所以现实的陌生世界单靠一颗善良的心是靠不住的,必须有手段稳稳地保证这个承诺,法律契约等。如今很通用的做法是第三方要找权威机构,比如政府,银行等,要么找个有头有脸的人或组织,归根结底还是找个有公信力的机构或人。但一般情况下这个第三方肯定会“雁过拔毛”,收取一定比例的手续费。
那么到底还有没有办法来解决这个难题呢?这就是比特币最初设计的一个初衷,解决两个陌生人之间的信任问题。
加密算法 + 多人记账
首先说加密算法,这里又要我之前提过的非对称加密,即公钥私钥。每个人都可以有一对或多对公钥私钥,但一个公钥只能有对应的私钥,反之亦然。其原理就是两个非常大的质数(p和q)相乘得一个数字(n),如果要根据公钥破解私钥的话理论上必须暴力破解,算出这个数字是由哪两个大质数相乘得来的。目前世界上没有公布可以破解1024位以上的私钥,所以采用1024或者2048甚至更长的私钥是非常安全的。
那么有了公钥私钥,我作为个人就可以用私钥加密,然后发布公钥,任何人都可以用我的公钥解密来确定这就是我本人发布的东西。同理别人给我的转账我也可以用他的公钥解密,从而判断这个就是某人的身份,这也叫数字签名。原理都是一样的,都是加密算法,利用数学欧拉公式,质数相乘等原理得到的。这是个非常伟大的算法,叫RSA,由3个数学家提出,我们普通人只要理解到公钥私钥的概念和用处就好了。
之前传统模式里,银行或者政府机构都有自己单独的账本,比如张三转给了李四100块,那账本里怎么记?张三的账户里扣除100, 李四的账户里增加100,对吧?
多人账本也是一样的道理,只不过从之前的中心化机构变成了分布式,去中心化的多个机构甚至个人。好比李白给杜甫转了100两银子,以前是财政部记账,区块链里则是唐太宗,杨玉环,张小静,贺知章等多个人一起记账,记到李太白转给了杜子美100两银子,以此为证,后面附有李白的印章。这样一来,有了多个账本,想要篡改那就难于登天了,李白可以放心的转给杜甫并且不担心他会篡改金额或者抵赖。
这样做就可以解决开始提到的球迷打赌的问题,但还有个问题,别人为什么要帮我们记账?
答案是有报酬,这符合人性,不然谁肯帮忙记一笔跟自己没关系的账呢?
但最终记账的人有且只有一个,不然就要乱套了。
有好处的前提下,如何保证哪一个人来记账呢?这里要涉及到一个数学知识,每个要记账的人,其实也就是所谓的矿工他在记账钱必须要解一个数学问题,这个数学问题没有取巧的办法,只能通过把数字带入公式里硬算,算法就是一个Hash(哈希)算法,类似于算一串数字出来,矿工只可以猜,除此之外别无他法。而且目前比特币里这个猜到的概率是万亿分之一,大概一台普通计算机要持续不断的猜一年才可以猜出来这个数字。
但世界上有成千上万台计算机,它们如果一起算的话速度会快很多,因为从概率上讲肯定会有一个计算机算出来,现实情况也确实如此。看个比特币真实的例子。
除此之外,还可以看到Miner(挖矿人)是谁, 这个块里包含了多少比交易(Number of Transactions)。
如果这个矿工是个别有用心的人,他在算出来后,私自篡改转账记录和金额怎么办?
A. 篡改交易记录 / 金额
前面我们介绍了公私钥加密技术,矿工本身理论上是没有发款人或收款人的私钥的,所以他篡改过的交易记录在用正确的公钥解密的时候会出错,最终被认定为非法(这里作者本人不太确定是在什么时间点做的鉴定,但确定这个记录是可以被证伪的)。
B. 删除交易记录
假设一个场景,张三要在北京4环买一个两室一厅的房子,但张三不想出这钱还想白占房子,想到了一种偷鸡摸狗的办法就是篡改交易记录。理论上,在张三付款后,这个记录产生但并未确认,记录需要等到一个解出谜题的矿工来做,假设这个矿工是他自己人,他让矿工把这条记录抹掉,没有问题。但做法有几种:
众所周知比特币挖矿需要很长一段时间,因为要做提到很麻烦的数学题,现在这个周期大概是10分钟所有,这是基于全世界几十万矿机同时满负荷工作的前提下。也就是说每十分钟有上万笔交易会被统一确认并放到一个不可改变的区块里,并且这几十万台矿机同时更新自己本地的记录。
2.1 如果这笔交易刚生成,房东看到了,然后下一秒就把产权过户给张三,那么张三如果想篡改这个付款记录他必须满足几个条件:
成功的难度取决于在篡改的记录之后有多少块被确认过的区块。如果只有一个,那么太简单了,因为区块链算法默认矿工在发布新的区块时,采用第一个收到且较长的区块。所以这次修改后就一劳永逸,因为所有的账本都会背同步,但也有一个问题,就是这次同步会被记录,如果房东查不到账,张三最终还是会被抓起来的。如果有很多个,比如张三转账完后,房东在确认转账后1小时才做的产权过户,那么张三就必须篡改之前差不多6块左右的区块信息,这个很麻烦,因为每一个区块都会指向上一个区块,并且每个区块都会有一个摘要(Hash),这是当前区块所有交易记录的汇总。所以如果试图修改一个很久前的区块,那么后面的区块的摘要都会变掉,这就是哈希树(MerkleTree)。其他节点是可以报告区块链被篡改的信息的。这就要涉及到最重要的一点,经常有人提到的51%算力,就是说如果张三拥有了超过50%的账本都承认这次修改,那么其他节点按照算法设计也会承认这次修改。不过,先不谈世界上基本没人可以同时做到以上两点,就算做到了,如果有人对此有疑问,依然可以把系统强制修复,之前以太坊就出过类似的问题,结局是以太坊篡改了整个区块,追回了被盗取的财产。 以太坊分叉事件 。
以上只是粗浅的介绍了应用区块链技术实现的比特币的特征,它可以很好的实现公开,公正,中立和平等。世界上任意两个陌生人可以依赖比特币或者其他区块链技术实现互相信任。
5. 【深度知识】区块链之加密原理图示(加密,签名)
先放一张以太坊的架构图:
在学习的过程中主要是采用单个模块了学习了解的,包括P2P,密码学,网络,协议等。直接开始总结:
秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。
如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。
2、无法解决消息篡改。
如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。
1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。
2、同样存在无法确定消息来源的问题,和消息篡改的问题。
如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。
1、当网络上拦截到数据密文2时, 由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。
2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。
如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。
1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。
2、当B节点解密得到密文1后, 只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。
经两次非对称加密,性能问题比较严重。
基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:
当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要, 之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1, 比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。
在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。
无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。
在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢? 有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。
为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。
在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后 对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。
为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:
在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。
以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?
那么如何生成随机的共享秘钥进行加密呢?
对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥 和 临时的非对称私钥 可以计算出一个对称秘钥(KA算法-Key Agreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:
对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥 与 B节点自身的私钥 计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。
对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入 Nonce ),再比如彩虹表(参考 KDF机制解决 )之类的问题。由于时间及能力有限,故暂时忽略。
那么究竟应该采用何种加密呢?
主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。
密码套件 是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。
在整个网络的传输过程中,根据密码套件主要分如下几大类算法:
秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。
消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。
批量加密算法:比如AES, 主要用于加密信息流。
伪随机数算法:例如TLS 1.2的伪随机函数使用MAC算法的散列函数来创建一个 主密钥 ——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。
在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。
握手/网络协商阶段:
在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等
身份认证阶段:
身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。
消息加密阶段:
消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。
消息身份认证阶段/防篡改阶段:
主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC :Elliptic Curves Cryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成 公钥、私钥的算法。用于生成公私秘钥。
ECDSA :用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。 主要用于身份认证阶段 。
ECDH :也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。 主要用于握手磋商阶段。
ECIES: 是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH), H-MAC函数(MAC)。
ECC 是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。 ECDSA 则主要是采用ECC算法怎么来做签名, ECDH 则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。 ECIES 就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。
<meta charset="utf-8">
这个先订条件是为了保证曲线不包含奇点。
所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:
所有的非对称加密的基本原理基本都是基于一个公式 K = k G。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法 就是要保证 该公式 不可进行逆运算( 也就是说G/K是无法计算的 )。 *
ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。
我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据k G计算出我们的公钥K。并且保证公钥K也要在曲线上。*
那么k G怎么计算呢?如何计算k G才能保证最后的结果不可逆呢?这就是ECC算法要解决的。
首先,我们先随便选择一条ECC曲线,a = -3, b = 7 得到如下曲线:
在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如2 2 = 2+2,3 5 = 5+5+5。 那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。
曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。
现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。
ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。
那么P+Q+R = 0。其中0 不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。
同样,我们就能得出 P+Q = -R。 由于R 与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。
P+R+Q = 0, 故P+R = -Q , 如上图。
以上就描述了ECC曲线的世界里是如何进行加法运算的。
从上图可看出,直线与曲线只有两个交点,也就是说 直线是曲线的切线。此时P,R 重合了。
也就是P = R, 根据上述ECC的加法体系,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0
于是乎得到 2 P = -Q (是不是与我们非对称算法的公式 K = k G 越来越近了)。
于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。
假若 2 可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。
那么我们是不是可以随机任何一个数的乘法都可以算呢? 答案是肯定的。 也就是点倍积 计算方式。
选一个随机数 k, 那么k * P等于多少呢?
我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描 述成二进制然后计算。假若k = 151 = 10010111
由于2 P = -Q 所以 这样就计算出了k P。 这就是点倍积算法 。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。
至于为什么这样计算 是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:
我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了 整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?
ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:
在曲线上选取一个无穷远点为基点 G = (x,y)。随机在曲线上取一点k 作为私钥, K = k*G 计算出公钥。
签名过程:
生成随机数R, 计算出RG.
根据随机数R,消息M的HASH值H,以及私钥k, 计算出签名S = (H+kx)/R.
将消息M,RG,S发送给接收方。
签名验证过程:
接收到消息M, RG,S
根据消息计算出HASH值H
根据发送方的公钥K,计算 HG/S + xK/S, 将计算的结果与 RG比较。如果相等则验证成功。
公式推论:
HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG
在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C = A+C+B = (A+C)+B。
这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考 Alice And Bob 的例子。
Alice 与Bob 要进行通信,双方前提都是基于 同一参数体系的ECC生成的 公钥和私钥。所以有ECC有共同的基点G。
生成秘钥阶段:
Alice 采用公钥算法 KA = ka * G ,生成了公钥KA和私钥ka, 并公开公钥KA。
Bob 采用公钥算法 KB = kb * G ,生成了公钥KB和私钥 kb, 并公开公钥KB。
计算ECDH阶段:
Alice 利用计算公式 Q = ka * KB 计算出一个秘钥Q。
Bob 利用计算公式 Q' = kb * KA 计算出一个秘钥Q'。
共享秘钥验证:
Q = ka KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'
故 双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。
在以太坊中,采用的ECIEC的加密套件中的其他内容:
1、其中HASH算法采用的是最安全的SHA3算法 Keccak 。
2、签名算法采用的是 ECDSA
3、认证方式采用的是 H-MAC
4、ECC的参数体系采用了secp256k1, 其他参数体系 参考这里
H-MAC 全程叫做 Hash-based Message Authentication Code. 其模型如下:
在 以太坊 的 UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。
首先,以太坊的UDP通信的结构如下:
其中,sig是 经过 私钥加密的签名信息。mac是可以理解为整个消息的摘要, ptype是消息的事件类型,data则是经过RLP编码后的传输数据。
其UDP的整个的加密,认证,签名模型如下:
6. 区块链中的私钥和公钥
公开密钥(public key,简称公钥)、私有密钥(private key,简称私钥)是密码学里非对称加密算法的内容。顾名思义,公钥是可以公开的,而私钥则要进行安全保管。
私钥是由随机种子生成的,公钥是将私钥通过算法推导出来。 由于公钥太长,为了简便实用,就出现了“地址”,地址是公钥推导出来的。这些推导过程是单向不可逆的。也就是地址不能推出公钥,公钥不能推出私钥。
从中我们可以看出,公钥与私钥是成对存在的。它们的用处用16个字来概括: 公钥加密,私钥解密;私钥签名,公钥验签。
公钥加密,私钥解密。也就是用公钥加密原数据,只有对应的私钥才能解开原数据。这样能使得原数据在网络中传播不被窃取,保护隐私。
私钥签名,公钥验签。用私钥对原数据进行签名,只有对应的公钥才能验证签名串与原数据是匹配的。
可以用锁头,钥匙来比喻公钥,私钥。锁头用来锁定某物品,钥匙来解锁该物品。钥匙所有者是物品的所有者。事实上就是这样,公私钥对奠定了区块链的账户体系及资产(Token等)的所有权,区块链的资产是锁定在公钥上的,私钥是用来解锁该资产然后使用。比如说我要转让资产给你,就是我用我的私钥签名了一笔我转让资产给你的交易(含资产,数量等等)提交到区块链网络里,节点会验证该签名,正确则从我的公钥上解锁资产锁定到你的公钥上。
我们看到了私钥的作用了吧,跟中心化记账系统(支付宝、微信支付等)的密码一样重要,拥有私钥就拥有了资产所有权,所以我们千万要保管好私钥,不能泄露。
7. 第4课 区块链中的密码学 学习总结
这是加入公Ulord深度学习第四课,杨博士给大家主讲区块链中的密码学问题,本期课程令让我弄懂了一个一直困扰着我的关于公钥和私钥的问题,他们之间到底是什么关系?再这次学习中我得到了答案,现在我把我学习到的内容跟大家分享一下。
区块链里的公钥和私钥,是非对称加密里的两个基本概念。
公钥与私钥,是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥是非公开的部分。公钥通常用于加密会话,就是消息或者说信息,同时,也可以来用于验证用私钥签名的数字签名。
私钥可以用来进行签名,用对应的公钥来进行验证。通过这种公开密钥体制得到的密钥对能够保证在全世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密数据,则必须用它对应的另一个密钥来进行解密。
比如说用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密,就必须要对应的公钥才能解密,否则无法成功解密。另外,在比特币的区块链中,则是通过私钥来计算出公钥,通过公钥来计算出地址,而这个过程是不可逆的。
8. 【猫说】打开比特币钱包的两把钥匙:私钥、公钥
如果不了解区块链,不知道公钥、私钥这些最基本的概念,拥有钱包对币圈新人来讲,就好像拿手指头去捅鳄鱼的脑袋,风险极高。此文谨献给币圈新朋友,帮助大家梳理比特币钱包的基本常识。
区块链观察网在 《区块链是什么》 一文中提到过,在区块链世界里,每个人都拥有两把独一无二的虚拟钥匙:公钥和私钥。
“公钥”,可以简单理解为银行卡,这是可以发给交易对方看的,银行卡号则相当于比特币转账中要用到的“地址”。
讲得专业一点,公钥就是一个65字节的字符串,多长呢?130个字母和数字堆在一起。公钥太长的话,第一交易起来忒麻烦,第二干嘛非得暴露公钥的真实内容呢,这就好像把自己的银行卡拿出来到处给人看。因此,我们现在看到的地址,就是经过摘要算法生成的、更短一点的公钥。
对方知道你的地址才能给你打钱;而且,任何人有了你的地址,都能在Blockchain.info官网查询这个钱包地址交易了多少次(No. Transactions),收过多少个比特币(Total Received),以及钱包里还剩下多少个比特币(Final Balance),如下图:
“私钥”,就像打死不能告诉别人的银行卡密码。它是一串256位的随机数。因为让非IT用户去记住这个满屏0 和 1的二进制私钥是特别不人道的事儿,所以对这一大串私钥进行了处理,最后私钥就以5 / K / L 开头的字符串呈现在我们面前。
公钥、私钥、地址之间的关系是:
1)私钥 → 公钥 → 地址
私钥生成唯一对应的公钥,公钥再生成唯一对应的地址;
2)私钥加密,公钥解密
也就是说,A使用私钥对交易信息进行加密(数字签名),B则使用A的公钥对这个数字签名进行解密。
其中,私钥是极度私密的东西。如果你把私钥发给别人,现在就开始写一部长篇小说吧,名字都帮你想好了,就叫《永别了,比特币》。
如果是李笑来老师(网传拥有数十万个BTC)这类币圈大佬,强烈建议使用冷钱包(离线钱包),分开储存;电视里的富豪在银行有自己的保险箱,有条件的话也可以参考。
当时,上述方法是安全系数最高的做法。但作为韭菜接班人,暂且假设我们最初只用闲置资金、持有少量的比特币,比如,小于5个。那么,动辄上千成本、操作复杂的冷钱包就有点杀鸡用牛刀了;因此,区块链观察网把选择范围限定在交易所和轻钱包2项:
在交易平台上买了(极少量)比特币,可以先不提出来,继续存在交易所。这种方式最适合币圈新手。在没有深入了解每种加密货币背后的故事之前,鲜嫩的我们总是充满了好奇,而放在交易所的比特币,可以直接进行币币交易,交易简单快捷,不用经数字钱包导来导去;另一方面,平台上币种齐全,可以满足我们的尝鲜心理,方便随时小试牛刀。
而且像火币、币安(已被墙)这些大型交易所,不仅安全等级比某些专为收割韭菜而生的小平台高很多,而且操作简单,很快就能上手,只需保管好自己的账号、密码就行了(再安全一级的话,开启谷歌二次验证),其他的就交给平台。
值得注意的是,存在交易所上的资产并不完全属于自己,更确切地说是借给平台的,我们在资产那一栏看到的数字,相当于平台向我们借钱而打的白条。此外,交易平台本身不是去中心化的,如果安全措施不到位,用户的账号密码有可能被黑客拿到。
轻钱包是相对于“全节点”钱包来说的。
全节点钱包,比如 Bitcoin-Core(核心钱包),运行时需要同步所有区块链数据,占用相当大内存空间(目前至少50GB以上),完全去中心化;
轻钱包虽然也依赖比特币网络上其他全节点,但其仅仅同步跟自己有关的交易数据,基本实现去中心化的同时,也提升了用户体验。
根据不同的设备类型,我们把轻钱包分为:
1)PC钱包:适用于电脑桌面操作系统(如Windows/MacOS/Linus);
2)手机钱包:适用于安卓、iOS智能手机,比如比太钱包(以太也有PC端);
3)网页钱包:通过浏览器访问,比如上文提过的blockchain网页版。
轻钱包操作比较简单,一般是免费获取。申请钱包的时候,系统会生成一个私钥。准备敲黑板!
1)不要截图、拍照存在手机里;
2)不要把私钥信息发给任何人;
3)最好手写(几份)抄下,藏在你觉得最安全的地方。
总之一句话,谁掌握了钱包的私钥,谁就拥有钱包的绝对控制权。私钥只要掌握在你的手里,比特币就绝不会丢。
最后多说几句,作为普通投资者,我们需要做的并不多:
1)走点心,不要把手机弄丢了,毕竟丢了对手机里的比特币钱包有风险;
2)不要手痒删掉设备上的钱包应用,除非你决定再也不用这个钱包了,否则后期很麻烦;
3)设置复杂的密码(原因见第1点),并用心去记牢,这是私钥弄丢以后留的一手。
对于记不住密码,又懒得科学备份私钥的朋友,咱还是把钱存在银行里吧。
9. 区块链在技术层面有哪几种属性
区块链技术起源于化名为“中本聪”(Satoshi Nakamoto)的学者在2008年发表的奠基性论文《比特币: 一种点对点电子现金系统》。狭义来讲, 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链网络的技术属性主要在于:匿名性、去中心化、不可篡改、分布式存储、多备份、数据加密等。匿名性是指在区块链网络中任何一个用户在交易的过程中,发送的交易数据中都不包含任何和个人信息有关的数据,用户和用户之间通过地址进行交易,而且地址理论上可以无限生成。去中心化是指通过多节点共同决策达成共识的方法,将原本的单一管理决策方案转换成多方共同商量决策,并且区块链网络中的所有节点拥有平等的数据控制权利和义务,任何节点都可以访问区块链网络中存储的数据,访问的过程可以同步并发执行。不可篡改是指区块链除创世区块以外,之后的每一个区块中都包含有上一个区块中数据的唯一哈希值,然后通过唯一的哈希值将各个区块进行串联。一旦其中某一个节点的区块数据被更改,此区块生成的哈希值也会改变。在区块连接的过程中,后面的区块无法找到其前区块哈希值所对应的区块,区块链也就被迫断开,该节点所保存的数据就不再被其他节点承认,变得没有价值。分布式存储和多备份的概念和现在数据库的分布式存储不同。区块链的分布式存储不仅是将数据存储在不同的地理位置和物理设备上,每个设备中都有完整的账本数据,而不是数据碎片,通过使用 Merkle 树技术在一定程度上解决数据冗余的问题。数据加密主要是指通过非对称加密的方式对数据使用公钥进行加密私钥进行解密或者私钥加密公钥解密。这种加密方式在数据传输的过程中,数据中不必包含数据解密的密钥,而是通过接收方手中的密钥完成解密操作,排除数据传输过程中被截取所带来的信息安全隐患。
吴超人会飞
帖子数1.0千获赞数20
rollup扩容是什么
什么叫数字人民币
什么是RBF内存池
比特币网络的运行逻辑
阅读作者更多精彩帖子
最佳回答
转载bitsbetter海盗王2021-08-0510:17:0810楼:囤币是屯在链上,只需要一个确认安全的私钥和对应的地址,地址才是真钱包。一般所谓的“钱包”都是私钥包。bitsbetter海盗王2021-08-0511:15:3112楼:把私钥放在别人提 ...
来源
比特币是一种货币。SaifedeanAmmous写了一本名为《比特币标准》的书,他在书中设定了一系列测试,以明确货币必须具有哪些特质,并将其分为三个主要类别:货币必须具有这些特质:第一点是具有价值存储功能(即保值、 ...
来源
10. 一文读懂,XFS中你必须掌握的密码与区块链理论术语
人们对于事物的深刻认知,不是像“如何将大象放进冰箱?”那般,只回答“打开冰箱,把大象放进去,关上冰箱”那么简单。 任何事物都需要一个抽丝剥茧,化整为零的认知过程。 特别是一个新兴的概念和事物,更需要更加细致的了解。
XFS系统是一个分布式文件系统,但它并不是一个单一的框架结构,他 是密码学、区块链、互联网等多种技术手段结合的一个有机整体 ,因此,想要更详细的了解它,我们必须知道一些专业术语的概念。
1.加密网络
加密网络简单来说就是一个公共区块链。在区块链技术诞生之前,互联网网络中的数据传输其实是没有任何加密手段的,黑客一旦截取的其中的数据,那么除非那段数据本身就是密文,否则那些数据就直白地暴露在黑客眼前。
加密网络便是通过区块链技术,由区块链各个节点维护,任何人都可以无需许可加入,更重要的是,整个网络中运转的数据是加密的。XFS系统便是一个典型的加密网络。
2.哈希算法
哈希算法是区块链中用以确保数据完整性和安全性的一个特殊程序。哈希算法采用的是名为“哈希函数”数学关系,结果输出被称为“加密摘要”。加密摘要的特点是任意长度的数据输入后,返回的都是一个唯一且固定长度的值。
哈希函数具备:
基于这些特性,它在保证加密安全时也被用于防篡改,因为即使对散列函数的数据输入进行微小更改也会导致完全不同的输出。这也成为了现代密码学和区块链的主力。
3.分布式账本
区块链就是一个分布式账本,但这个账本不仅仅可以记录交易信息,还可以记录任何数据交互。每个分类帐交易都是一个加密摘要,因此无法在不被检测到的情况下更改条目。这样使得区块链使参与者能够以一种去中心化的方式相互审计。
4.私钥和公钥
私钥和公钥是区块链通过哈希算法形成加密后生成的一组用于解密的“钥匙”。通过对私钥加密,形成公钥,此时,原始信息只能通过私钥进行查看,由用户自己保存,公钥就如同一个房屋地址,用于进行数据交互,是可以公开的。反之,如果对公钥加密,形成私钥,那么就会形成不可篡改的数字签名,因为这个公钥上的签名只有私钥拥有者才能进行创建。
1.节点
节点是一个区块链网络的最基础建设,也是区块链网络和现实连接的物理设备。单个节点拥有许多的功能,例如缓存数据、验证信息或将消息转发到其他节点等。
2.点对点(P2P)网络
区块链所构建的便是去中心化后节点与节点之间的数据交互。传统的互联网数据传输是一种客户端—服务器—客户端的中心辐射模式。点对点网络则更符合“网”这个词,在这个网络中,每个节点都在单一通信协议下运行,以在它们之间传输数据,避免了因为服务器单点故障而引发的网络崩溃。
3.共识验证
区块链的共识验证解决了大量分散的节点意见不统一的问题,以“少数服从多数”的哲学依据,在区块链网络中,更多的节点认可便意味着“共识”,通常而言,区块链网络中超过51%的节点认可的便会被采用和认可。
4.复制证明和时空证明
这两个证明在XFS系统中都可以总称为存储证明。XFS系统的核心功能之一是数据存储,因此,为了证明存储的有效性,便通过复制证明验证数据是否存在节点存储空间中,并通过时空证明验证时间上的持续性。存储提供方如果在储存有效期内能持续提交存储证明,那么他便会获得由XFS系统提供的奖励。
5.冗余策略和纠删码
这是XFS用来平衡数据存储量的两个方式。冗余策略将数据通过多副本的方式备份,确保数据在损坏或丢失后能找回。
纠删码则是确保数据在复制、传输时不会产生过多备份,节省存储空间、提高传输效率。
6.文件分片协议
XFS将文件切分为N个细小的碎片存储在节点当中,这些碎片只要有任意 M个碎片即可恢复出数据,这样只要不同时有 N-M+1 个节点失效就能保证数据完整不丢失。
7.智能合约
XFS中的智能合约是一段程序代码,由于是基于区块链生成的,因此同样继承了区块链不可篡改、可追溯等特点,它能保证双方执行结果的确定性,这也使得XFS网络中的数据交互变得更加可信。
8.Dapp
即去中心化APP,同普通的APP一样具备更加方便快捷的网络接入端口,唯一不同的便是它抛弃了传统APP中心化的特点,这使得Dapp中的数据是归属于用户自身,不用担心隐私泄露、大数据杀熟等问题。
XFS系统是一个开放性平台,用户可以自由的在其中使用、设计、创作各种Dapp。
结语
关于XFS中的理论术语基于篇幅原因是很难详细展开细讲的,这其中涉及到了更多的互联网和区块链专业知识。但通过上面这些简单的解释,相信大家对XFS系统也有了一个比较立体的认知,那么,我们便期待打破传统中心化存储弊端,开船全新存储时代的XFS新一代分布式文件系统吧。