什么是区块链?,在区块链中一般使用什么加密算法

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

什么是区块链?,在区块链中一般使用什么加密算法

一、区块链加密用什么算法(区块链加密方式)

区块链的加密技术

数字加密技能是区块链技能使用和开展的关键。一旦加密办法被破解,区块链的数据安全性将受到挑战,区块链的可篡改性将不复存在。加密算法分为对称加密算法和非对称加密算法。区块链首要使用非对称加密算法。非对称加密算法中的公钥暗码体制依据其所依据的问题一般分为三类:大整数分化问题、离散对数问题和椭圆曲线问题。第一,引进区块链加密技能加密算法一般分为对称加密和非对称加密。非对称加密是指集成到区块链中以满意安全要求和所有权验证要求的加密技能。非对称加密通常在加密和解密进程中使用两个非对称暗码,称为公钥和私钥。非对称密钥对有两个特点:一是其间一个密钥(公钥或私钥)加密信息后,只能解密另一个对应的密钥。第二,公钥可以向别人揭露,而私钥是保密的,别人无法通过公钥计算出相应的私钥。非对称加密一般分为三种首要类型:大整数分化问题、离散对数问题和椭圆曲线问题。大整数分化的问题类是指用两个大素数的乘积作为加密数。由于素数的出现是没有规律的,所以只能通过不断的试算来寻找解决办法。离散对数问题类是指基于离散对数的困难性和强单向哈希函数的一种非对称分布式加密算法。椭圆曲线是指使用平面椭圆曲线来计算一组非对称的特殊值,比特币就采用了这种加密算法。非对称加密技能在区块链的使用场景首要包含信息加密、数字签名和登录认证。(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个字符的比特币地址。公钥生成进程是不可逆的,即私钥不能从公钥推导出来。比特币的公钥和私钥通常存储在比特币钱包文件中,其间私钥最为重要。丢掉私钥意味着丢掉相应地址的所有比特币财物。在现有的比特币和区块链体系中,现已依据实践使用需求衍生出多私钥加密技能,以满意多重签名等愈加灵敏杂乱的场景。

什么是区块链加密算法?

区块链加密算法(EncryptionAlgorithm)

非对称加密算法是一个函数,通过使用一个加密钥匙,将原来的明文文件或数据转化成一串不可读的密文代码。加密流程是不可逆的,只有持有对应的解密钥匙才能将该加密信息解密成可阅读的明文。加密使得私密数据可以在低风险的情况下,通过公共网络进行传输,并保护数据不被第三方窃取、阅读。

区块链技术的核心优势是去中心化,能够通过运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。

区块链的应用领域有数字货币、通证、金融、防伪溯源、隐私保护、供应链、娱乐等等,区块链、比特币的火爆,不少相关的top域名都被注册,对域名行业产生了比较大的影响。

区块链的密码技术有

密码学技术是区块链技术的核心。区块链的密码技术有数字签名算法和哈希算法。

数字签名算法

数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由SHA-1产生的消息哈希:为了验证一个签名,要重新计算消息的哈希,使用公钥解密签名然后比较结果。缩写为DSA。

?

数字签名是电子签名的特殊形式。到目前为止,至少已经有20多个国家通过法律认可电子签名,其中包括欧盟和美国,我国的电子签名法于2004年8月28日第十届全国人民代表大会常务委员会第十一次会议通过。数字签名在ISO7498-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所示,为比特币从公钥生成地址的流程。

区块链:防篡改的哈希加密算法

同学A和B在教室里抛硬币,赌谁打扫卫生,正面朝上,则A打扫,反面朝上,则B打扫,这个策略没有什么问题。

然而,如果把情景迁移到网络聊天室,A和B同样进行抛硬币的游戏,估计B就不会答应了,因为当A抛了硬币,B不论是猜

正面还是反面,A都可以说B猜错了。

怎么解决这个问题呢?要不先给抛硬币的结果加密,B再猜?这个方法可以试一下。

假设任意奇数代表硬币正面,任意偶数代表反面。A想一个数375,然后乘以一个258,把其结果告诉B为96750,并声明A想的375为密钥,由他保管。

在接下来验证结果时,A可以谎称258为他想的数,375为密钥,A还是立于不败之地。那如果A事先把密钥告诉B呢?B可以直接算出原始数字,失去了保密作用。

这种知道加密方法就知道了解密方法显然行不通,那有没有一种方法,知道了加密方法仍然无法恢复原文呢?

显然是有的,在加密过程中加入不可逆运算就OK了。A设计新的加密方式:

假设A想的数是375,进行加密:

B拿到结果120943,但他几乎不能根据120943反算出密匙375。

如果B想要验证A是否说谎:

终于可以抛硬币了……

这种丢掉一部分信息的加密方式称为“单向加密”,也叫哈希算法。

有个问题:

这个是有可能的,但可以解决,就是增加上述算法的难度,以致于A很难很难找到。

根据以上表述,一个可靠的哈希算法,应该满足:

密码学中的哈希函数有3个重要的性质,即抗碰撞性、原像不可逆、难题友好性。

碰撞性,就是指A同学事先找出一奇一偶使得哈希结果一致,在计算上是不可行的。

首先,把大空间桑拿的消息压缩到小空间上,碰撞肯定是存在的。假设哈希值长度固定为256位,如果顺序取1,2,…2256+1,这2256+1个输入值,逐一计算其哈希值,肯定能找到两个输入值使得其哈希值相同。

A同学,看到这里时,请不要高兴的太早。因为你得有时间把它算出来,才是你的。为什么这么说呢?

根据生日悖论,如果随机挑选其中的2130+1输入,则有99.8%的概率发现至少一对碰撞输入。那么对于哈希值长度为256为的哈希函数,平均需要完成2128次哈希计算,才能找到碰撞对。如果计算机每秒进行10000次哈希计算,需要约1027年才能完成2128次哈希计算。

A同学,不要想着作弊了,估计你活不了这么久。当然如果计算机运算能力大幅提升,倒是有可能。

那么完整性还用其他什么用途呢?

用来验证信息的完整性,因为如果信息在传递过程中别篡改,那么运行哈希计算得到的哈希值与原来的哈希值不一样。

所以,在区块链中,哈希函数的抗碰撞性可以用来做区块和交易的完整性验证。

因为一个哈希值对应无数个明文,理论上你并不知道哪个是。就如,4+5=9和2+7=9的结果一样,知道我输入的结果是9,但能知道我输入的是什么数字吗?

如果,对消息m进行哈希计算时,在引入一个随机的前缀r,依据哈希值H(r||m),难以恢复出消息m,这代表该哈希函数值隐藏了消息m。

所以,B同学,根据结果想反推出原数据,这是不大可能的事,就犹如大海里捞针。

难题好友性,指没有便捷的方法去产生一满足特殊要求的哈希值。是什么意思呢,通俗的讲,就是没有捷径,需要一步一步算出来。假如要求得到的哈希结果以若干个0开头,那么计算找到前3位均为0的哈希值和找到前6位均为0的哈希值,其所需的哈希计算次数是呈一定数量关系。

这个可以怎么用呢?在区块链中,可以作为共识算法中的工作量证明。

主要描述了哈希函数的3个重要性质:抗碰撞性、原像不可逆、难题友好性。

因为这些重要性质,区块链中的区块和交易的完整性验证、共识算法的工作量证明等功能用哈希函数来实现。

[1].邹均,张海宁.区块链技术指南[M].北京:机械出版社,2016.11

[2].长铗,韩锋.区块链从数字货币到信用社会[M].北京:中信出版社,2016.7

[3].张健.区块链定义未来金融与经济新格局[M].北京:机械工业出版社,2016.6

区块链技术的六大核心算法

区块链技术的六大核心算法

区块链核心算法一:拜占庭协定

拜占庭的故事大概是这么说的:拜占庭帝国拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。

在这个分布式网络里:每个将军都有一份实时与其他将军同步的消息账本。账本里有每个将军的签名都是可以验证身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些将军。尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。

由此,在一个分布式的系统中,尽管有坏人,坏人可以做任意事情(不受protocol限制),比如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等等。但是,只要大多数人是好人,就完全有可能去中心化地实现共识

区块链核心算法二:非对称加密技术

在上述拜占庭协定中,如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。谁都可以发起进攻的信息,但由谁来发出呢?其实这只要加入一个成本就可以了,即:一段时间内只有一个节点可以传播信息。当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。

在如今看来,非对称加密技术完全可以解决这个签名问题。非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的”公钥”和”私钥”。公钥和私钥一般成对出现,如果消息使用公钥加密,那么需要该公钥对应的私钥才能解密;同样,如果消息使用私钥加密,那么需要该私钥对应的公钥才能解密。

区块链核心算法三:容错问题

我们假设在此网络中,消息可能会丢失、损坏、延迟、重复发送,并且接受的顺序与发送的顺序不一致。此外,节点的行为可以是任意的:可以随时加入、退出网络,可以丢弃消息、伪造消息、停止工作等,还可能发生各种人为或非人为的故障。我们的算法对由共识节点组成的共识系统,提供的容错能力,这种容错能力同时包含安全性和可用性,并适用于任何网络环境。

区块链核心算法四:Paxos算法(一致性算法)

Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。节点通信存在两种模型:共享内存和消息传递。Paxos算法就是一种基于消息传递模型的一致性算法。

区块链核心算法五:共识机制

区块链共识算法主要是工作量证明和权益证明。拿比特币来说,其实从技术角度来看可以把PoW看做重复使用的Hashcash,生成工作量证明在概率上来说是一个随机的过程。开采新的机密货币,生成区块时,必须得到所有参与者的同意,那矿工必须得到区块中所有数据的PoW工作证明。与此同时矿工还要时时观察调整这项工作的难度,因为对网络要求是平均每10分钟生成一个区块。

区块链核心算法六:分布式存储

分布式存储是一种数据存储技术,通过网络使用每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在网络中的各个角落。所以,分布式存储技术并不是每台电脑都存放完整的数据,而是把数据切割后存放在不同的电脑里。就像存放100个鸡蛋,不是放在同一个篮子里,而是分开放在不同的地方,加起来的总和是100个。

区块链技术中的哈希算法是什么?

1.1.简介

计算机行业从业者对哈希这个词应该非常熟悉,哈希能够实现数据从一个维度向另一个维度的映射,通常使用哈希函数实现这种映射。通常业界使用y=hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。

区块链中哈希函数特性:

函数参数为string类型;

固定大小输出;

计算高效;

collision-free即冲突概率小:x!=y=hash(x)!=hash(y)

隐藏原始信息:例如区块链中各个节点之间对交易的验证只需要验证交易的信息熵,而不需要对原始信息进行比对,节点间不需要传输交易的原始数据只传输交易的哈希即可,常见算法有SHA系列和MD5等算法

1.2.哈希的用法

哈希在区块链中用处广泛,其一我们称之为哈希指针(HashPointer)

哈希指针是指该变量的值是通过实际数据计算出来的且指向实际的数据所在位置,即其既可以表示实际数据内容又可以表示实际数据的存储位置。下图为HashPointer的示意图

HashPointer在区块链中主要有两处使用,第一个就是构建区块链数据结构。了解区块链的读者应该知道区块链数据结构由创世区块向后通过区块之间的指针进行连接,这个指针使用的就是图示的HashPointer.每个区块中都存储了前一个区块的HashPointer。这样的数据结构的好处在于后面区块可以查找前面所有区块中的信息且区块的HashPointer的计算包含了前面区块的信息从而一定程度上保证了区块链的不易篡改的特性。第二个用处在于构建MerkleTree.MerkleTree的各个节点使用HashPointer进行构建,关于区块链数据结构以及MerkleTree的内容我们在后续文章中进行进一步介绍。

哈希还在其他技术中有所应用例如:交易验证以及数字签名等等。

2.加密算法

2.1简述

加密简单而言就是通过一种算法手段将对原始信息进行转换,信息的接收者能够通过秘钥对密文进行解密从而得到原文的过程。按照加密方和解密方秘钥相同与否可以将加密算法大致分为三种子类型:

对称加密

对称加密的加密解密方使用相同的秘钥,这种方式的好处在于加解密的速度快但是秘钥的安全分发比较困难,常见对称加密算法有DES,AES,...

非对称加密

非对称加密体系也称为公钥体系,加解密时加密方拥有公钥和私钥,加密方可以将公钥发送给其他相关方,私钥严格自己保留。例如银行的颁发给个人用户的私钥就存储在个人的U盾里;非对称加密中可以通过私钥加密,他人能够使用公钥进行解密,反之亦然;非对称加密算法一般比较复杂执行时间相对对称加密较长;好处在于无秘钥分发问题。常见的其他非对称加密算法有RSA,ECC,区块链中主要使用ECC椭圆曲线算法。

对称加密与非对称加密的结合

这种方式将加密过程分为两个阶段,阶段一使用非对称加密进行秘钥的分发使得对方安全地得到对称加密的秘钥,阶段二使用对称加密对原文进行加解密。

2.2数字签名

数字签名又称之为公钥数字签名,是一种类似于写在纸上的物理签名。数字签名主要用于数据更改的签名者身份识别以及抗抵赖。数字签名包含三个重要特性:

只有自己可以签署自己的数字签名,但是他人可以验证签名是否是你签发;

数字签名需要和具体的数字文档绑定,就好比现实中你的签名应该和纸质媒介绑定;

数字签名不可伪造;

依赖非对称加密机制可以较容易实现上述三种特性。

首先,需要生成个人的公私钥对:

(sk,pk):=generateKeys(keysize),sk私钥用户自己保留,pk公钥可以分发给其他人

其次,可以通过sk对一个具体的message进行签名:

sig:=sign(sk,message)这样就得到了具体的签名sig

最后,拥有该签名公钥的一方能够进行签名的验证:

isValid:=verify(pk,message,sig)

在区块链体系中每一条数据交易都需要签名,在比特币的设计过程中直接将用户的公钥来表征用户的比特币地址。这样在用户发起转账等比特币交易时可以方便的进行用户交易的合法性验证。

2.3数字证书和认证中心

2.3.1数字证书(DigitalCertificate)

数字证书又称“数字身份证”、“网络身份证”是经认证中心授权颁发并经认证中心数字签名的包含公开秘钥拥有者及公开秘钥相关信息的电子文件,可以用来判别数字证书拥有者身份。

数字证书包含:公钥、证书名称信息、签发机构对证书的数字签名以及匹配的私钥

证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,签发此证书的CA仍保留此证书的副本,以备日后解决可能引起的纠纷。

2.3.2认证中心(CertificateAuthority)

认证中心一般简称CA,CA一般是一个公认可信的第三方机构,其作用主要是为每个用户颁发一个独一无二的包含名称和公钥的数字证书。

2.4常见加密算法的对比

二、在区块链中一般使用什么加密算法

在区块链中,一般使用两种主要的加密算法:

公钥/私钥加密算法:这种加密算法使用一对公钥和私钥。公钥可以公开分发,而私钥需要保密。只有拥有私钥的人才能解密使用公钥加密的数据。这种加密方法被广泛用于数字签名和身份验证,因为它可以确认数据的来源和完整性。在区块链中,私钥用于确认交易者的身份,而公钥则被广播给网络中的其他节点以验证交易的有效性。

RSA算法:这是一种常用的公钥/私钥加密算法,由Ron Rivest、Adi Shamir和 Leonard Adleman于1978年发明。它是一种非对称加密算法,也就是说,用于加密的密钥和用于解密的密钥是不同的。

ECDSA(椭圆曲线数字签名算法):这是一种基于RSA算法的改进版,使用椭圆曲线密码学,使得签名过程更快速且更安全。在区块链中,ECDSA被用于验证交易的数字签名。

拓展知识:

哈希函数是一种将任意长度的数据(如文本、数字等)转换为固定长度(通常为256位或512位)的摘要的方法。它们非常快且非常安全,因为改变数据中的一小部分(即使是微小的改变)会导致哈希结果的变化非常大,甚至不可逆。这种特性使得哈希函数在区块链中被广泛使用,如区块的merkle树结构、交易的数字签名以及密码学钱包的存储等。

比特币区块链主要使用SHA-256作为其哈希函数,这是由David Chaum和Mayra P. Chilomchik在1997年引入的一种算法。SHA-256提供了一种非常安全的方式来创建区块链并确保交易的安全性。此外,区块链中的Merkle树结构也是基于SHA-256的哈希函数来创建的。

以上两种加密算法和哈希函数在区块链中都扮演着非常重要的角色,它们保证了交易的安全性、完整性和匿名性,同时也确保了区块链网络的去中心化和不可篡改性。

同时,由于区块链中的数据是以区块的形式不断增长的,这些加密算法还被用于创建区块头和区块间的链接,进一步提高了区块链的性能和安全性。

三、区块链如何加密数据(区块链如何加密数据)

区块链以什么方式保证网络中数据的安全性

区块链保证网络中数据的安全性的方式:

在区块链技术中,数字加密技术是其关键之处,一般运用的是非对称加密算法,即加密时的密码与解锁时的密码是不一样的。简单来说,就是我们有专属的私钥,只要把自己的私钥保护好,把公钥给对方,对方用公钥加密文件生成密文,再将密文传给你,我们再用私钥解密得到明文,就能够保障传输内容不被别人看到,这样子,加密数据就传输完毕啦!

同时,还有数字签名为我们加多一重保障,用来证明文件发给对方过程中没有被篡改。由此可见区块链的加密技术能够有效解决数据流通共享过程中的安全问题,可谓是大有施展之处。

区块链的密码技术有

密码学技术是区块链技术的核心。区块链的密码技术有数字签名算法和哈希算法。

数字签名算法

数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由SHA-1产生的消息哈希:为了验证一个签名,要重新计算消息的哈希,使用公钥解密签名然后比较结果。缩写为DSA。

?

数字签名是电子签名的特殊形式。到目前为止,至少已经有20多个国家通过法律认可电子签名,其中包括欧盟和美国,我国的电子签名法于2004年8月28日第十届全国人民代表大会常务委员会第十一次会议通过。数字签名在ISO7498-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所示,为比特币从公钥生成地址的流程。

【深度知识】区块链之加密原理图示(加密,签名)

先放一张以太坊的架构图:

在学习的过程中主要是采用单个模块了学习了解的,包括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算法-KeyAgreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:

对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥与B节点自身的私钥计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。

对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入Nonce),再比如彩虹表(参考KDF机制解决)之类的问题。由于时间及能力有限,故暂时忽略。

那么究竟应该采用何种加密呢?

主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。

密码套件是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。

在整个网络的传输过程中,根据密码套件主要分如下几大类算法:

秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。

消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。

批量加密算法:比如AES,主要用于加密信息流。

伪随机数算法:例如TLS1.2的伪随机函数使用MAC算法的散列函数来创建一个主密钥——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。

在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。

握手/网络协商阶段:

在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等

身份认证阶段:

身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。

消息加密阶段:

消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。

消息身份认证阶段/防篡改阶段:

主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。

ECC:EllipticCurvesCryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成公钥、私钥的算法。用于生成公私秘钥。

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算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。

metacharset="utf-8"

这个先订条件是为了保证曲线不包含奇点。

所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:

所有的非对称加密的基本原理基本都是基于一个公式K=kG。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法就是要保证该公式不可进行逆运算(也就是说G/K是无法计算的)。*

ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。

我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据kG计算出我们的公钥K。并且保证公钥K也要在曲线上。*

那么kG怎么计算呢?如何计算kG才能保证最后的结果不可逆呢?这就是ECC算法要解决的。

首先,我们先随便选择一条ECC曲线,a=-3,b=7得到如下曲线:

在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如22=2+2,35=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

于是乎得到2P=-Q(是不是与我们非对称算法的公式K=kG越来越近了)。

于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。

假若2可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。

那么我们是不是可以随机任何一个数的乘法都可以算呢?答案是肯定的。也就是点倍积计算方式。

选一个随机数k,那么k*P等于多少呢?

我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描述成二进制然后计算。假若k=151=10010111

由于2P=-Q所以这样就计算出了kP。这就是点倍积算法。所以在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上的例子说明如何生成共享秘钥,也可以参考AliceAndBob的例子。

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=kaKB=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-basedMessageAuthenticationCode.其模型如下:

在以太坊的UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。

首先,以太坊的UDP通信的结构如下:

其中,sig是经过私钥加密的签名信息。mac是可以理解为整个消息的摘要,ptype是消息的事件类型,data则是经过RLP编码后的传输数据。

其UDP的整个的加密,认证,签名模型如下:

区块链技术如何保障信息主体隐私和权益

隐私保护手段可以分为三类:

一是对交易信息的隐私保护,对交易的发送者、交易接受者以及交易金额的隐私保护,有混币、环签名和机密交易等。

二是对智能合约的隐私保护,针对合约数据的保护方案,包含零知识证明、多方安全计算、同态加密等。

三是对链上数据的隐私保护,主要有账本隔离、私有数据和数据加密授权访问等解决方案。

拓展资料:

一、区块链加密算法隔离身份信息与交易数据

1、区块链上的交易数据,包括交易地址、金额、交易时间等,都公开透明可查询。但是,交易地址对应的所用户身份,是匿名的。通过区块链加密算法,实现用户身份和用户交易数据的分离。在数据保存到区块链上之前,可以将用户的身份信息进行哈希计算,得到的哈希值作为该用户的唯一标识,链上保存用户的哈希值而非真实身份数据信息,用户的交易数据和哈希值进行捆绑,而不是和用户身份信息进行捆绑。

2、由此,用户产生的数据是真实的,而使用这些数据做研究、分析时,由于区块链的不可逆性,所有人不能通过哈希值还原注册用户的姓名、电话、邮箱等隐私数据,起到了保护隐私的作用。

二、区块链“加密存储+分布式存储”

加密存储,意味着访问数据必须提供私钥,相比于普通密码,私钥的安全性更高,几乎无法被暴力破解。分布式存储,去中心化的特性在一定程度上降低了数据全部被泄漏的风险,而中心化的数据库存储,一旦数据库被黑客攻击入侵,数据很容易被全部盗走。通过“加密存储+分布式存储”能够更好地保护用户的数据隐私。

三、区块链共识机制预防个体风险

共识机制是区块链节点就区块信息达成全网一致共识的机制,可以保障最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉,可以抵御恶意攻击。区块链的价值之一在于对数据的共识治理,即所有用户对于上链的数据拥有平等的管理权限,因此首先从操作上杜绝了个体犯错的风险。通过区块链的全网共识解决数据去中心化,并且可以利用零知识证明解决验证的问题,实现在公开的去中心化系统中使用用户隐私数据的场景,在满足互联网平台需求的同时,也使部分数据仍然只掌握在用户手中。

四、区块链零知识证明

零知识证明指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的,即证明者既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄漏出去,即给外界的“知识”为“零”。应用零知识证明技术,可以在密文情况下实现数据的关联关系验证,在保障数据隐私的同时实现数据共享。

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/23688.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年03月27日
下一篇 2025年03月27日

相关推荐

  • 区块链赚钱app2024,什么叫vds区块链,区块链vc是什么意思

    一、区块链前十公司有哪些国内的大型区块链公司都有哪些?国内的大型区块链公司有新晨科技、银江股份、文化长城、广电运通、恒生电子等。1、新晨科技公司现主营是应用软件开发业务、软硬件系统集成业务和专业技术服务业务。近年新晨科技在创新方面尝试较为大胆,公司在云计算

    2025-04-30 22:00:01
    2 0
  • 区块链技术概念股一览,a股有哪些公司属于区块链

    一、a股有哪些公司属于区块链区块链上市公司有哪些区块链上市公司有壹桥股份(002447)、易见股份(600093)、四方精创(300468)、飞天诚信(300386)、新国都(300130)等。壹桥股份(002447)全资子公司壕鑫互联推出了竞斗云,是第一家将区块链技术运用到游戏领域的公司。易见股份(600

    2025-04-30 22:00:01
    2 0
  • 区块链技术未来在财务应用中的前景,如何入账区块链

    一、区块链对未来财务会造成什么影响1.区块链在支付领域:金融机构特别是跨境金融机构之间的对账清算、结算等成本较高,也涉及了很多手工流程;区块链技术应用可以降低金融机构间的对账成本及争议解决成本,显著提高支付领域的效率,同时金融机构更容易处理小额跨境支付业务,

    2025-04-30 21:55:01
    3 0
  • 区块链的定义,区块链由什么诞生,区块链的概念是由谁提出来的

    一、区块链发明者 区块链发明者是谁1、2008年由中本聪第一次提出了区块链的概念,在随后的几年中,区块链成为了电子货币比特币的核心组成部分:作为所有交易的公共账簿。2、通过利用点对点网络和分布式时间戳服务器,区块链数据库能够进行自主管理。为比特币而发明的区块链使

    2025-04-30 21:00:01
    3 0
  • 区块链开发,国产区块链公链有哪些

    一、区块链怎么解决版权区块链能否应用在版权领域?3月8日,全国政协委员徐念沙建议,加强数字藏品版权保护,相关机构协同国家区块链创新应用在版权领域的试点单位,共同探索数字藏品版权的登记、维权机制,并对交易平台的区块链算法应用、交易产生的数据进行监督管理。易保全

    2025-04-30 21:00:01
    3 0
  • 区块链技术介绍,区块链系统应具备的性质是什么

    一、区块链系统应具备的性质是什么1,区块链是一个放在非安全环境中的分布式数据库(系统)。2,区块链采用密码学的方法来保证已有数据不可能被篡改。3,区块链采用共识算法来对于新增数据达成共识。具有以上三个性质的系统,就是区块链。未来的金窝窝,将着力于以区块链技术

    2025-04-30 21:00:01
    3 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载