区块链用到的数字签名 区块链的数字签名是什么算法

皕利分享 120 0

本篇文章主要给网友们分享区块链用到的数字签名的知识,其中更加会对区块链的数字签名是什么算法进行更多的解释,如果能碰巧解决你现在面临的问题,记得关注本站!

你必须了解的,区块链数字签名机制

       区块链使用Hash函数实现区块链用到的数字签名了交易信息和地址信息的不可篡改区块链用到的数字签名,保证区块链用到的数字签名了数据传输过程中的完整性区块链用到的数字签名,但是Hash函数无法实现交易信息的 不可否认性 (又称拒绝否认性、抗抵赖性,指网络通信双方在信息交互过程中, 确信参与者本身和所提供的信息真实同一性 ,即所有参与者不可否认或抵赖本人的真实身份,以及提供信息的原样性和完成的操作与承诺)。区块链使用公钥加密技术中的数字签名机制保证信息的不可否认性。

       数字签名主要包括签名算法和验证算法。在签名算法中,签名者用其私钥对电子文件进行签名运算,从而得到电子文件的签名密文;在验证算法中,验证者利用签名者的公钥,对电子文件的签名密文进行验证运算,根据验证算法的结果判断签名文件的合法性。在签名过程中,只有签名者知道自己的私钥,不知道其私钥的任何人员无法伪造或正确签署电子文件;在验证过程中,只有合法的签名电子文件能有效通过验证,任何非法的签名文件都不能满足其验证算法。

       常用的数字签名算法包括RSA数字签名、DSA数字签名、ECDSA数字签名、Schnorr数字签名等算法。

      我们以RSA数字签名来介绍:可能人们要问RSA签名和加密有什么 区别 呢?加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说, 加密 是为了 防止信息被泄露 ,而 签名 是为了 防止信息被篡改 。

      例子:A收到B发的消息后,需要进行回复“收到”-- RSA签名过程 :

      首先: A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

      然后: A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。

      最后: B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。

       在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。

综上所述,来源于书本及网络,让我们了解的有直观的认识。

什么是数字签名?

数字签名是用于验证数字和数据真实性和完整性的加密机制。我们可以将其视为传统手写签名方式的数字化版本,并且相比于签字具有更高的复杂性和安全性。

简而言之,我们可以将数字签名理解为附加到消息或文档中的代码。在生成数字签名之后,其可以作为证明消息从发送方到接收方的传输过程中没有被篡改的证据。

虽然使用密码学保护通信机密性的概念可以追溯到古代,但随着公钥密码学(PKC)的发展,数字签名方案在20世纪70年代才成为现实。因此,要了解数字签名的工作原理,我们首先需要了解散列函数和公钥加密的基础知识。

哈希是数字签名中的核心要素之一。哈希值的运算过程是指将任意长度的数据转换为固定长度。这是通过称为散列函数的特殊运算实现的。经过散列函数运算而生成的值称为哈希值或消息摘要。

当哈希值与加密算法相结合,即使用加密散列函数的方法来生成散列值(摘要),该值可作为唯一的数字指纹。这意味着对于输入数据(消息)的任何更改都会导致有完全不同的输出值(散列值)。这就是加密散列函数被广泛用于验证数字和数据真实性的原因。

公钥加密或PKC是指使用一对密钥的加密系统:公钥和私钥。这两个密钥在数学上是相关的,可用于数据加密和数字签名。

作为一种加密工具,PKC相比于对称加密具有更高的安全性。对称加密系统依赖于相同的密钥进行加密和解密信息,但PKC则使用公钥进行数据加密,并使用相应的私钥进行数据解密。

除此之外,PKC还可以应用于生成数字签名。本质上,该过程发送方使用自己的私钥对消息(数据)的哈希值进行加密。接下来,消息的接收者可以使用签名者提供的公钥来检查该数字签名是否有效。

在某些情况下,数字签名本身可能包括了加密的过程,但并非总是这样。例如,比特币区块链使用PKC和数字签名,而并不像大多数人所认为的,这个过程中并没有进行加密。从技术上讲,比特币又部署了所谓的椭圆曲线数字签名算法(ECDSA)来验证交易。

在加密货币的背景下,数字签名系统通常包含三个基本流程:散列、签名和验证。

第一步是对消息或数据进行散列。通过散列算法对数据进行运算,生成哈希值(即消息摘要)来完成的。如上所述,消息的长度可能会有很大差异,但是当消息被散列后,它们的哈希值都具有相同的长度。这是散列函数的最基本属性。

但是,仅仅将消息进行散列并不是生成数字签名的必要条件,因为也可以使用私钥对没有进行过散列的消息进行加密。但对于加密货币,消息是需要经过散列函数处理的,因为处理固定长度的哈希值有助于加密货币的程序运行。

对信息进行散列处理后,消息的发件人需要对其消息进行签名。这里就用到了公钥密码学。有几种类型的数字签名算法,每种算法都有自己独特的运行机制。本质上,都是使用私钥对经过散列的消息(哈希值)进行签名,然后消息的接收者可以使用相应的公钥(由签名者提供)来检查其有效性。

换句话说,如果在生成签名时不使用私钥,则消息的接收者将不能使用相应的公钥来验证其有效性。公钥和私钥都是由消息的发送者生成的,但仅将公钥共享给接收者。

需要注意的是,数字签名与每条消息的内容相关联。因此,与手写签名所不同,每条消息的数字签名都是不同的。

让我们举一个例子说明下整个过程,包括从开始直到最后一步的验证。我们假设Alice向Bob发送一条消息、并将该消息进行散列得到哈希值,然后将哈希值与她的私钥结合起来生成数字签名。数字签名将作为该消息的唯一数字指纹。

当Bob收到消息时,他可以使用Alice提供的公钥来检查数字签名的有效性。这样,Bob可以确定签名是由Alice创建的,因为只有她拥有与该公钥所对应的私钥(至少这与我们所假设的一致)。

因此,Alice需要保管好私钥至关重要。如果另一个人拿到了Alice的私钥,他们就同样可以创建数字签名并伪装成Alice。在比特币的背景下,这意味着有人可以使用Alice的私钥,并可在未经她知晓的情况下转移或使用她的比特币。

数字签名通常用于实现以下三方面目标:数据完整性、身份验证和不可否认性。

数字签名可以应用于各种数字文档和证书。因此,他们有几个应用程序。一些最常见的案例包括:

数字签名方案面临的主要挑战主要局限于以下三方面因素:

简而言之,数字签名可以理解为是一种特定类型的电子签名,特指使用电子化的方式签署文档和消息。因此,所有数字签名都可认为是电子签名,但反之并非如此。

它们之间的主要区别在于身份验证方式。数字签名需要部署加密系统,例如散列函数、公钥加密和加密技术。

散列函数和公钥加密是数字签名系统的核心,现已在各种案例中使用。如果实施得当,数字签名可以提高安全性,确保完整性,便于对各类数据进行身份验证。

在区块链领域,数字签名用于签署和授权加密货币交易。它们对比特币尤为重要,因为数字签名能够确保代币只能由拥有相应私钥的人使用。

虽然我们多年来一直使用电子和数字签名,但仍有很大的发展空间。如今大部分的公文仍然还是基于纸质材料,但随着更多的系统迁移到数字化中,我们还会看到更多的数字签名方案。

区块链的密码技术有

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

数字签名算法

数字签名算法是数字签名标准的一个子集,表示了只用作数字签名的一个特定的公钥算法。密钥运行在由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所示,为比特币从公钥生成地址的流程。

区块链技术

背景:比特币诞生之后,发现该技术很先进,才发现了区块链技术。比特币和区块链技术同时被发现。

1.1 比特币诞生的目的:

①货币交易就有记录,即账本;

②中心化机构记账弊端——可篡改;易超发

比特币解决第一个问题:防篡改——hash函数

1.2 hash函数(加密方式)

①作用:将任意长度的字符串,转换成固定长度(sha256)的输出。输出也被称为hash值。

②特点:很难找到两个不同的x和y,使得h(x)=h(y)。

③应用:md5文件加密

1.3 区块链

①定义

区块:将总账本拆分成区块存储

区块链:在每个区块上,增加区块头。其中记录父区块的hash值。通过每个区块存储父区块的hash值,将所有的区块按照顺序连接起来,形成区块链。

②区块链如何防止交易记录被篡改

形成区块链后,篡改任一交易,会导致该交易区块hash值和其子区块中不同,发现篡改。

即使继续篡改子区块头中hash值,会导致子区块hash值和孙区块中不同,发现篡改。

1.4 区块链本质

①比特币和区块链本质:一个人人可见的大账本,只记录交易。

②核心技术:通过密码学hash函数+数据结构,保证账本记录不可篡改。

③核心功能:创造信任。法币依靠政府公信力,比特币依靠技术。

1.5如何交易

①进行交易,需要有账号和密码,对应公钥和私钥

私钥:一串256位的二进制数字,获取不需要申请,甚至不需要电脑,自己抛硬币256次就生成了私钥

地址由私钥转化而成。地址不能反推私钥。

地址即身份,代表了在比特币世界的ID。

一个地址产生之后,只有进入区块链账本,才能被大家知道。

②数字签名技术

签名函数sign(张三的私钥,转账信息:张三转10元给李四) = 本次转账签名

验证韩式verify(张三的地址,转账信息:张三转10元给李四,本次转账签名) = True

张三通过签名函数sign(),使用自己的私钥对本次交易进行签名。

任何人可以通过验证韩式vertify(),来验证此次签名是否有由持有张三私钥的张三本人发出。是返回true,反之为false。

sign()和verify()由密码学保证不被破解。·

③完成交易

张三将转账信息和签名在全网供内部。在账户有余额的前提下,验证签名是true后,即会记录到区块链账本中。一旦记录,张三的账户减少10元,李四增加10元。

支持一对一,一对多,多对已,多对多的交易方式。

比特币世界中,私钥就是一切!!!

1.6中心化记账

①中心化记账优点:

a.不管哪个中心记账,都不用太担心

b.中心化记账,效率高

②中心化记账缺点:

a 拒绝服务攻击

b 厌倦后停止服务

c 中心机构易被攻击。比如破坏服务器、网络,监守自盗、法律终止、政府干预等

历史 上所有有中心化机构的机密货币尝试都失败了。

比特币解决第二个问题:如何去中心化

1.7 去中心化记账

①去中心化:人人都可以记账。每个人都可以保留完整的账本。

任何人都可以下载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账。

②去中心化记账流程

某人发起一笔交易后,向全网广播。

每个记账节点,持续监听、持续全网交易。收到一笔新交易,验证准确性后,将其放入交易池并继续向其它节点传播。

因为网络传播,同一时间不同记账节点的交一次不一定相同。

每隔10分钟,从所有记账节点当中,按照某种方式抽取1名,将其交易池作为下一个区块,并向全网广播。

其它节点根据最新的区块中的交易,删除自己交易池中已经被记录的交易,继续记账,等待下一次被选中。

③去中心化记账特点

每隔10分钟产生一个区块,但不是所有在这10分钟之内的交易都能记录。

获得记账权的记账节点,将得到50个比特币的奖励。每21万个区块(约4年)后,奖励减半。总量约2100万枚,预计2040年开采完。

记录一个区块的奖励,也是比特币唯一的发行方式。

④如何分配记账权:POW(proof of work) 方式

记账几点通过计算一下数学题,来争夺记账权。

找到某随即数,使得一下不等式成立:

除了从0开始遍历随机数碰运气之外,没有其它解法,解题的过程,又叫做挖矿。

谁先解对,谁就得到记账权。

某记账节点率先找到解,即向全网公布。其他节点验证无误之后,在新区块之后重新开始新一轮的计算。这个方式被称为POW。

⑤难度调整

每个区块产生的时间并不是正好10分钟

随着比特币发展,全网算力不算提升。

为了应对算力的变化,每隔2016个区块(大约2周),会加大或者减少难度,使得每个区块产生的平均时间是10分钟。

#欧易OKEx# #比特币[超话]# #数字货币#

【区块链与密码学】第6-4讲:椭圆曲线的数字签名算法

1985年,Koblitz和Miller独立地提出了椭圆曲线公钥密码体制(ECC),安全性基于椭圆曲线群上的离散对数问题的难解性,该问题目前最好的解法是指数级时间的算法。

一般认为,RSA和DH密钥交换协议需用1024比特以上的模数才安全,但对ECC,只要160比特的模数就可达到同样级别的安全性。

椭圆曲线指的是由Weierstrass方程

所确定的曲线

有限域Fp上的椭圆曲线是由满足Fp上的方程  

的所有点和无穷远点 O 构成的集合

有时也记作 E。

设 P , Q 是E上的任意两点,连接 P , Q 交 E 于 R’ ,则称 R’ 关于x轴的对称点 R 为 P 与 Q 的和,记为:

P + Q = R

当 P 与 Q 重合时

R = P+Q = P+P = 2P

此时称之为 点倍运算

当 P 与 Q 关于x轴对称时,

定义 P 与 Q 的和为 O ,即:

P + Q = O

并称 O 为无穷远点

可以证明,有限域上的椭圆曲线在我们定义的加法运算下构成群。

既然构成群,就必然有零元和负元,这里的零元就为无穷远点 O , P 的负元就是它关于x轴的对称点,记为 –P 。

显然有

P+O =O+P=P

若P=(x, y),则 –P=(x, –y) 且 P+(–P)=O

已知 E(F) 上两点 P=(x1, y1), Q=(x2, y2) , 求 P+Q 。

解:设 P+Q=R =(x3, y3) ,

解得

当 P≠Q 时,

当 P=Q 时,

k(k2) 个相同的点 P 相加为

此时称之为点乘运算

称n为点 P 的阶,记为 n=ord(P) 。

由阶为n的点 P 在上述加法定义下生成的循环群 P 是椭圆曲线群 (E(F), +) 的一个n阶子群。

设E是有限域 F 上的椭圆曲线, G 是 E 的一个循环子群,点 P 是 G 的一个生成元,即 G={kP: k≥1}, 在已知 P , Q 的条件下,求解整数n,使得 nP=Q 的问题,称为椭圆曲线 E 上的离散对数问题。

今天的课程就到这里啦,下一堂课我们将学习基于椭圆曲线的数字签名算法中的SM2算法,带大家继续了解数字签名,敬请期待!

-- 完 --

关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。

【区块链与密码学】课堂回顾:

区块链与密码学系列文章合集

关于区块链用到的数字签名和区块链的数字签名是什么算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签: #区块链用到的数字签名

  • 评论列表

留言评论