揭秘SHA-1落幕与SHA-3崛起:区块链加密算法演变之路

创始人
2024-12-17 05:10:46
0 次浏览
0 评论

区块链密码算法是怎样的?

谷歌安全博客发布。
经过两年的联合研究和大量计算的努力,研究人员在他们的研究网站上公布了两个内容不同但相同SHA-1消息摘录的SHAtteredPDF文件,这意味着经过理论研究早已提前认识到了SHA的风险——1算法已经警告,SHA-1算法的实际攻击案例也已经出现,这也标志着SHA-1算法终于走到了生命的尽头。

NIST于2007年正式宣布将在全球范围内推广新的下一代加密哈希算法并举办SHA-3竞赛。
新的哈希算法将称为SHA-3,并将作为扩展现有FIPS180-2标准的新安全哈希标准。
算法提交于2008年10月截止。
NIST在2009年和2010年举行了两轮会议,通过两轮评选选出了进入最后一轮的算法。
获胜算法将于2012年公布。
整个公开竞争过程仿照高级加密标准AES招标过程。
2012年10月2日,Keccak被选为NISTSHA-3命名竞赛的获胜者。

Keccak算法是SHA-3的候选算法,于2008年10月提交。
Keccak使用创新的“海绵引擎”对消息文本进行哈希处理。
其设计简单,便于硬件实现。
Keccak可以抵抗最小复杂度为2n的攻击,其中N是哈希值的大小。
它有很大的安全边际。
到目前为止,第三方加密分析尚未揭示Keccak的任何严重弱点。

KangarooTwelve算法是最近提出的Keccak算法的变体。
其计算轮数减少到12轮,但与原算法相比,其功能没有调整。

零知识证明

在密码学中,零知识证明(ZKP)是一方用来向另一方证明他们在没有A的情况下知道给定消息x的一种方法揭示与x相关的其他内容的策略,其中前者称为证明者,后者称为验证者。
想象一个场景,系统中的所有用户都有所有文件的备份,用自己的私钥加密它们,并将它们在系统中公开。
假设用户Alice希望在某个时刻向用户Bob提供她的一些文件。
现在的问题是,爱丽丝如何才能让鲍勃相信她确实发送了正确的文件?一个简单的解决方案是爱丽丝将她的私钥发送给鲍勃。
Alice不想选择这种策略,因为Bob可以轻松获取Alice文件的所有内容。
零知识证明就是可以解决上述问题的解决方案。
自由知识证明主要基于复杂性理论,并在密码学领域有广泛的理论扩展。
在复杂性理论中我们主要讨论哪些语言可以用于零知识证明应用,而在密码学中我们主要讨论如何构造不同类型的零知识证明方案并使其足够优秀和高效。

环签名群签名

1.群签名

在群签名方案中,群中的每个成员都可以匿名代表整个消息。
该小组签署了该消息。
与其他数字签名一样,群签名是可公开验证的,并且只能被验证使用单个组公钥进行验证。
群签名的大致流程:

(1)初始化时,群管理器设置群资源并生成相应的群公钥(GroupPublicKey)和群私钥(GroupPrivateKey)。
群组公钥适用于整个系统中的所有用户Public,如群组成员、验证人等。

(2)成员加入当用户加入群组时,群组管理员颁发群组证书(GroupCertificate)给群组成员。

(3)签名:群组成员使用收到的群组证书对文件进行签名,生成群组签名。

(4)验证。
同时,验证者只能使用群公钥验证收到的群签名的准确性,而无法确定群中的正式签名者。

(五)披露。
群组管理员可以使用群组私钥来跟踪群组用户生成的群组签名,并揭示签名者的身份。

2.环签名

2001年,三位密码学家Rivest、Shamir和Tauman首先提出了环签名。
它是一种简化的群签名,只有环成员,没有管理者,不需要环成员之间的协作。
在环签名方案中,签名者首先选择一组临时签名者,其中包括签名者。
然后,签名者可以使用自己的私钥和签名集中其他人的公钥来独立生成签名,而无需其他人的帮助。
签署团体的成员可能不知道他们是其中的一部分。

环签名方案由以下部分组成:

(1)密钥生成。
为环中的每个成员生成密钥对(公钥PKi,私钥SKi)。

(2)签名。
签名者使用自己的私钥和所有n个环成员(包括他自己)的公钥来生成消息m的签名a。

(3)签名验证。
验证者使用环签名和消息来检查签名是否由环成员签名。
如果有效则接受,否则丢弃。

环签名满足以下属性:

(1)无条件匿名性:攻击者即使获得了环成员的私钥,也无法确定是哪个环成员生成了签名。
,概率不超过1/n。

(2)正确性:签名必须经过其他人的验证。

(3)不可伪造性:环中的其他成员无法伪造真实签名者的签名。
即使外部攻击者获得了有效的环签名,他也无法伪造消息m的签名。

3.环签名与群签名的比较

(1)匿名性。
它是一个个人代表一个团体签名的系统,验证者可以验证签名是由该团体的成员签署的,但不知道它是哪个成员,以确保签名者的匿名性。

(2)可追溯性。
对于群签名来说,群管理员的存在保证了签名的可追溯性。
组管理员可以撤销签名以揭示真正的签名者。
环签名本身不能透露签名者,除非签名者本人希望透露签名或添加其他信息。
提出了一种可验证的环签名方案,其中真实签名者希望验证者通过透露他所拥有的秘密信息来确认他的身份。

(三)管理体系。
群签名由群管理员管理,而环签名不需要管理。
签名者需要做的就是选择一组可能的签名者,获取他们的公钥,然后发布该组。

链桥教育在线旗下学说创新区块链技术工作站是教育部学校规划建设发展中心“智慧学习工坊2020——学说创新工作站”认定的唯一“区块链技术”中国的。
专业”试点工作场所。
专业基地立足于为学生提供多元化成长路径,推进产学研一体化人才培养模式改革,构建应用型、综合性人才培养体系。

区块链里的加密是什么意思(区块链加密算法是什么)

相同的。

签名问题无法解决,即双方互相攻击。
A始终不承认他发送的消息。
例如,A向B发送了一条错误消息,给B造成了损失。
但A否认该消息不是他自己发送的。

流程(3)中,没有办法解决交互两方之间的相互攻击问题。
这是什么意思?可能A发送的消息对于节点A来说是无效的,随后A否认该消息不是他发送的。

为了解决这个问题,引入了签名。
这里我们将(2)-4中的加密方法与消息签名结合起来。

上图中,我们使用节点A的私钥对其发送的摘要信息进行签名,然后添加签名+原文,然后使用B的公钥进行加密。
B得到密文后,首先使用B的私钥解密,然后使用A的公钥解密摘要。
仅当两个摘要的内容相同时才进行比较。
这样既避免了防篡改问题,又规避了双方攻击的问题。
由于A签署了信息,因此无法否认。

为了解决非对称数据加密时的性能问题,通常会采用混合加密。
这里我们需要引入对称加密,如下图:

我们在加密数据时,使用双方共享的对称密钥进行加密。
对称密钥不得通过网络传输,以免泄露。
这里的共享对称密钥是根据自己的私钥和对方的公钥计算出来的,然后用对称密钥来加密数据。
对方收到数据时,也计算对称密钥并解密密文。

上述对称密钥是不安全的,因为A的私钥和B的公钥一般在短期内是固定的,所以共享的对称密钥也是固定的。
为了提高安全性,最好的方法是为每次交互生成临时共享对称密钥。
那么我们如何在每次交互过程中生成随机对称密钥而不广播它呢?

那么,如何生成一个随机共享密钥进行加密呢?

对于发送节点A来说,每次发送都会生成一个临时的非对称秘钥对,然后根据节点B的公钥和临时的非对称私钥可以计算出对称秘钥(KA-KeyAgreement算法)。
然后使用对称密钥来加密数据。
这里共享密钥的过程如下:

对于节点B,当接收到传输的数据时,分析节点A的随机公钥,然后计算对称密钥(算法KA)。
使用节点A的随机公钥和节点B本身的私钥。
然后使用对称密钥对数据进行加密。

对于上述加密方式,还存在很多问题,比如如何避免重放攻击(在消息中添加Nonce),以及彩虹表等问题(参考KDF机制来解决)。
由于时间和能力有限,我暂时忽略它。

那么应该使用什么类型的加密呢?

主要是根据要传输的数据的安全级别。
不重要的数据实际上可以明文和选定的密文。
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也在曲线上。
*

那么如何计算kgG呢?如何计算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曲线相交于三个点(可能是两个点)

文章标签:
SHA-3 ECC
热门文章
1
新加坡区块链行业薪资福利揭秘:高薪与职业... 区块链工程待遇如何?新加坡的区块链公司表现如何?1.薪资。在新加坡的一家区块链公...

2
揭秘区块链发票:与传统电子发票的五大关键... 区块链发票有什么好处(区块链发票是什么样子的)区块链电子发票涉及的主要角色有:1...

3
深入解析:区块链智能合约原理与核心技术 区块链智能合约的原理1、智能合约的原理是基于区块链技术实现点对点的直接连接。这种...

4
揭秘区块链:去中心化时代的信任与价值创新 区块链技术特点区块链技术具有去中心化、开放、自由、安全、匿名等特点。区块链本质上...

5
Filecoin/IPFS挖矿攻略:算力... Filecoin挖矿原理解析,怎样计算矿机算力和选择矿机?FileCoin/IP...

6
区块链钱包搭建指南:从基础到应用 如何搭建区块链钱包通道(如何搭建区块链钱包通道)区块链钱包开发、数字货币钱包ap...

7
EsportsChain(TMD):全球... 国际区块链竞赛有哪些(国际区块链平台)全球首个区块链电竞商业链平台——电竞链(T...

8
探索BitBlue与Swap:揭秘数字货... 比特蓝是什么意思?BitBlue又称BitcoinBlue,是一种基于区块链技术...

9
揭秘区块链:五大核心特性与广泛应用 区块链的特性包括哪些(区块链的特性包括哪些内容)区块链技术的特点1.区块链技术的...

10
USDT详解:不同版本互操作性与市场风险... 持仓币种笔记1——USDT(Tether)如果T是ETH地址(地址以0x开头),...