本学期的调研报告是密码学在区块链中技术中的应用,我们知道区块链与密码学息息相关,对区块链的安全保护有很大的影响,而我将从本学期学到的密码学的知识同区块链技术相联系,探讨一下密码学在区块链中的应用。
一、密码学与区块链
(一)问题背景
随着数字化时代的到来,我们处理和共享的数据量越来越庞大,而且这些数据具有高度的价值和隐私性。这也使得网络安全问题变得越来越重要。同时,不同国家和地区的法律法规不尽相同,很多政治和商业上的收益都需要进行跨境支付和交易。然而,这些跨境交易通常需要很多中介机构和第三方信任机构参与,从而加大了交易的成本和不确定性。
(二)问题分析
在这种背景下,区块链和密码学技术应运而生,通过去中心化和分布式账本的方式,解决了传统中心化信任机构的瓶颈问题。区块链技术可以确保交易的隐私性、安全性和不可篡改性,降低交易成本,提高交易效率。密码学作为区块链技术中的一个重要组成部分,可以为交易提供安全的认证和加密,确保交易的合法性和完整性。
然而,在当前的区块链和密码学技术中,仍然存在一些问题。例如,区块链性能的瓶颈、区块链平台的不稳定性、密码学算法的安全性等。而解决这些问题需要更多领域内专家的加入,共同推进技术的发展和改进。
经过一学期的学习,我们可以知道密码学分为为古典密码学和现代密码学。古典密码学主要关注信息的保密书写和传递,以及与其相对应的破译方法。现代密码学不只关注信息保密问题,还同时涉及信息完整性验证(消息验证码)、信息发布的不可抵赖性(数字签名)、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。总而言之,现代密码学是互联网安全的基石,密码学在区块链中担当了保护数据安全的重要角色。
经过资料的查询,区块链中的密码学与安全技术包括:密码学知识和安全技术。而密码学知识包括Hash算法和加密解密算法;安全技术包括消息认证与数字签名、数字证书、PKI体系、Merkle树结构、布隆过滤器、同态加密。我就对非对称密码、数字签名和散列函数对密码学在区块链中的应用做出我的调研报告。
二、非对称加密的应用
区块链技术中所使用的非对称加密,如RSA和ECC,使区块链中的交易更加安全。每个人都有一个公钥和一个私钥。公钥可以自由分享,但是私钥是保密的。当发送交易时,使用接收方的公钥进行加密,接收方可以使用其私钥进行解密,确保数据在传输中的隐私性和完整性。
- 非对称加密场景应用
数字签名:区块链技术依靠数字签名来验证交易和数据的合法性,而非对称密码体制是实现数字签名的核心算法之一。这种体制利用公钥和私钥来加密和解密信息,私钥只有信息的发送者才有,而公钥则公开发布,这样就能够确保只有发送者才能签署合法的交易和数据。区块链中的交易需要进行数字签名来认证其合法性和真实性,非对称密码体制可以确保签名的唯一性和难以伪造性
身份验证:非对称密码体制可以用于身份验证,以确保只有授权用户才能进行区块链上的交易。
受限密钥管理:区块链中的所有节点都是全匿名的,因此使用非对称密码体制可以限制特定的节点访问和操作某些信息。比如,可以使用非对称密码体制创建一个受限公钥列表,只有列表中的公钥才能访问和修改特定的信息。使用非对称密码体制可以更安全地管理密钥,例如使用公钥加密数据和使用私钥进行解密,可以提高数据的机密性和保密性。
区块链钱包:非对称密码体制可以用于区块链钱包的验证和加密,保障用户资产的安全和机密性。
安全通信:在区块链中,对等节点之间的通信需要进行加密和解密。非对称密码体制可以提供更安全的通信方式,因为加密和解密过程中不需要共享密钥。这种方法能够防止中间人攻击和密码破解。
区块链治理:非对称密码体制可以用于区块链治理中,例如选举节点和决策投票等,以确保投票的公正性和匿名性。
密码货币:非对称密码体制通常用于加密和验证密码货币的交易信息。比特币和以太坊就是这种体制的应用案例。
(二)非对称密码对区块链的影响
总的来说,非对称密码体制是区块链安全和隐私保护的核心技术之一。它能够确保区块链中交易和数据的完整性、可靠性和机密性。
安全性提升:区块链技术使用非对称密码可以提高数据和交易的安全性,保障区块链网络的安全。非对称密码体制可以防止类似51%攻击这样的攻击,因为攻击者很难获得足够的私钥来控制超过50%的节点。
认证和验证:非对称密码体制可以用于身份认证、数字签名和信息验证等问题,保障区块链上的信息的真实性和可信度。因为只有授权的用户才能够用私钥进行数字签名,并且其他人可以使用公钥验证签名的正确性,能够有效避免信息被篡改和伪造。
去中心化:区块链技术结合非对称密码体制可以保障去中心化特性。区块链采用了一种分布式账本技术,也就意味着不同的节点要进行合法验证和交易,需要进行公钥/私钥加密和解密。而非对称加密机制则可以保障数据的安全和用户的安全。
非对称密码体制在区块链中的应用可大大提高网络数据的安全性和可靠性,并为分布式网络提供了一种有效的身份验证和加密机制。
(三)非对称加密技术是构建区块链应用的基石
非对称加密技术在信息化系统中始终扮演着关键角色,成为构建信息化系统诸多核心功能的基础。在区块链系统中,非对称加密技术除了用于用户标识、操作权限校验,还用于数字资产地址的生成、资产所有权的标识和数字资产的流转。具体来说,基于非对称加密技术的数字签名可以构建公私钥对以标识用户身份;可以基于公钥生成加密资产地址,以公私钥对检验资产所有权;可以用私钥对操作签名,用公钥校验用户的操作权限;还可以用接收方公钥对传输数据加密,接收方用私钥解密并读取数据。
区块链中的“人”、“财”、“权”和“数据”都依靠非对称加密技术来标识,相应的职能和权限也需要依靠非对称加密技术来保障和实现,因此可以说,非对称加密技术是构建区块链应用并促进其发展的基石。
三、数字签名
区块链中的每个交易都需要进行数字签名,以确保交易的真实性和完整性。数字签名是使用私钥来对交易进行签名,而验证签名的人可以使用公钥。这样可以确保交易是由授权的人所发起的,并且不会进行篡改。
(一)数字签名场景应用
身份认证:数字签名可以用于区块链的身份认证,例如每个用户可以使用自己的私钥对交易进行签名,证明该交易是由其本人发起,并防止其他人冒充。
数字资产转移:在区块链中,数字签名可以证明资产的所有权,并确保资产的转移是真实和有效的。例如,转移加密货币时,通过数字签名确认所有权并验证转移的有效性。
消息加密:数字签名可以用于消息加密和认证,确保消息的机密性和完整性。例如,在区块链中,数字签名可以确保只有特定的人可以读取和发送消息。
合约验证:在区块链中,数字签名可以用于验证智能合约的有效性。智能合约通常会要求特定的条件得到满足后才可执行,通过数字签名可以验证这些条件是否满足。
总之,数字签名在区块链中具有非常广泛的应用,可以保证数据的完整性、不可变性、真实性等多个方面。
- 工作原理
在我们进行数字资产交易时,资产的转出会生成一段防伪的字符串,这串字符串就是数字签名。主要用来验证交易的发出方以及交易过程中信息不被篡改,确认用户身份以及保障信息无法抵赖。
数字签名通过数字摘要技术(Hash加密)把交易信息缩短成固定长度的字符串(哈希值),然后通过私钥对信息加密,通过公钥进行解密验证。
1.数字签名的流程
一段需发送的数据经过Hash计算生成一份摘要;摘要通过发送者私钥进行加密;发送者将使用私钥加密后的摘要和整个信息,生成一段待发送的数据包,数字签名则为经过私钥加密后的加密摘要;接收者使用之前一样的Hash算法对整个信息计算得出摘要;接收者再过发送者公钥对两个摘要进行加密计算;接收者通过发送者公钥对数字签名进行解密;两者进行比较即可验证。
2.签名工作机制
A要转给B一笔比特币,A首先要做的就是将该笔交易的信息进行数字摘要,也就是Hash加密,缩短为一段字符串,也就是哈希值。然后通过A自己的私钥对摘要内容进行加密,形成数字签名。完成以上步骤后,A就需要将交易信息以及数字签名一起广播给记录账本的人(也就是矿工)。
矿工收到信息后,就会用A的公钥进行验证,来这笔交易是否为A发出,交易信息是否正确,交易信息有没有被改。如果一切确认无误,矿工就会将其打包发出。
在B收到交易后,使用公钥进行验证这笔交易是不是A发出的。然后将信息内容进行Hash运算得到一个哈希值,再与A传输过来的摘要进行对比,查看是否吻合,以确保交易信息没有被篡改
四、散列函数
区块链中广泛使用的散列函数如SHA-256、RIPEMD-160等,用于将交易数据转换为固定长度的哈希值。这有助于减少数据的存储和传输大小,同时也保护了数据的隐私性和安全性。由于哈希值是唯一的,任何人都不能更改哈希值,因此可以避免数据的篡改问题。
- 散列函数的应用
1. 区块链交易的验证:在区块链中,每个区块都包含了自己的hash值,由之前区块的hash值和本区块的数据计算得出。这个hash值要符合一定的条件,才会被接受为有效的新区块。因此,利用散列函数,可以验证新生成的区块是否有效、是否被篡改或者重新排序,从而保证区块链的数据不可篡改。
2. 密码学中的应用:在密码学中,散列函数通常用于生成消息摘要,将任意长度的数据输入到散列函数中生成一个固定长度的摘要,这个摘要相当于数据的指纹,可以用于数据的特征描述、验证、存储等用途,例如比特币协议中就使用了SHA256算法进行消息的摘要计算以保证交易的合法性与正确性。
3. 区块链上的加密与验证:散列函数可以用于在区块链上加密和验证相关的信息。例如,在以太坊上,使用散列函数计算智能合约的地址,确保其不可篡改。同时,还可以使用散列函数来计算账户的地址,确认交易发起人是否授权合法。
总之,在区块链中,散列函数是非常重要的组成部分,其应用范围十分广泛,可以确保数据的安全性、不可变性和真实性。
(二)散列的基本概念
散列(hash)函数是区块链所利用的技术中的最为基础的部分了,也是非常重要的部分之一。一个好的散列函数在一个密码体系中的地位也十分重要。Filecoin作为新一代的区块链,在散列函数的采用上也十分大胆。其中Posaidon就是比较新的散列算法。
经过这一学期的学习对于散列(Hash)有了一定的熟悉。Hash表是一种基本的数据结构,而这种数据结构是依靠hash函数来进行索引和访问的。由于Hash函数在寻址上具有很高的效率上的优势,算法复杂度基本上是O(1)。因此,Hash函数被广泛应用与数据库和其他数据处理系统中。
简单来说,散列函数就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。通常输入的数据长度要大于运算得出的散列值,同时因为这个散列值一定程度上可以代表原数据,因此也被成为摘要。工程师比较熟悉的 md5 就是使用最为广泛的 hash 函数,一般用来验证数据的完整性。
因为散列值是一个固定长度,比如说md5sum的输出是128位,也就是16字节,那么这个散列值的所有可能性就是 2^128。这个范围和IPv6的地址范围差不多。
一个 hash 函数可以由以下特性来进行评估:
均匀度(Uniformity):前面提到了一个散列值的空间,那么一个hash函数对于一个输入的运算结果落到这个散列值空间中的概率最好是均等的。这样可以降低碰撞率(不同的输入得出相同结果的比率)
效率(Efficiency):hash函数本身的计算复杂度也是一个考量因素。在很多场合,要求快速响应,因此最好计算简单。但是太简单的hash函数在均匀性上可能不理想,因此这里需要考虑一些权衡
确定性(Deterministic):对于固定的输入,输出固定。这也是一般函数的特征用于密码学的散列函数。
对于区块链从业者而言,很多时候使用hash函数的场合并不是用于索引或检索数据(尽管这种情况也很普遍),通常可以看见的是用来进行单向计算和验证。比如说在比特币中采用 SHA256 来进行选举运算获得出块权,以及采用SHA256 和 RIPEMD-160 来从私钥计算公钥和地址。
除了hash函数的一般性特性只要,用于密码学的 hash 函数有更严格的要求:
单向性:从数据求散列值很容易,但不能倒推。或者倒推十分困难,理论上不可行
无相关性:要求在输入有一点点改变的情况下,要产生完全不同的输出。这样,从散列值完全不能看出数据之间的相关性
唯一性:不能通过不同的数据产生相同的hash值。这里说的不能是基本上不能人为实现,也就是说概率极小;此特性也可以成为碰撞安全性。
前面提到的 md5 散列函数,在区块链系统中完全没有被采用,其主要原因就是在碰撞安全性不能满足要求,密码学界在2007年就发现了其碰撞破解的办法,而最新的发现其双块攻击在普通计算机上就可以很快实现。而广泛使用的SHA256函数的碰撞安全性是 md5 的 2^64 倍。
(二)Feistel算法
Feistel 算法本来是一个对称密码算法,采用数据块链式加密的方式。没有太高的复杂度。为什么会用来作为hash函数呢?在2005年,有人就发现采用Feistel算法可以实现一个完全散列均匀的分布,而且满足随机性。因此,这个刚好切合 SDR 中exp parents node的选取规则。
基于Feistel算法的hash函数,又成为F-Hash。Filecoin采用F-Hash来为SDR过程中的每一个节点计算找寻父节点,这些父节点随机分布,没有规律,同时,这些父节点又完全均匀地分布在整个sector的空间中。这简直就是使用F-Hash的最佳场合。
区块链中广泛使用的散列函数如SHA-256、RIPEMD-160等,用于将交易数据转换为固定长度的哈希值。这有助于减少数据的存储和传输大小,同时也保护了数据的隐私性和安全性。由于哈希值是唯一的,任何人都不能更改哈希值,因此可以避免数据的篡改问题。
总之,区块链技术的安全性得益于密码学的可靠性,这使得区块链成为高度保护隐私和数据安全的地方。因此,将来随着数字化的发展,密码学将继续扮演着区块链中的重要角色。