比特币的加密技术终将被破解

2019-09-16     东音社


区块链与密码、数字签名、哈希函数等加密技术息息相关,对安全加密技术的要求较高。无论是加密技术,还是加密通信协议,攻击者一直在提高攻击手段,加密技术的安全性随着时间的流逝不断降低。即使最初区块链使用了安全加密技术,经过一段时间后,加密技术也会不堪一击,随时可能成为攻击的对象。

以比特币的签名方式为例,现有的ECDSA(密钥长度256位)和哈希函数SHA-256技术至少会使用到2030年以后,而比特币的新币发行至少持续到2140年,之后作为货币继续使用的可能性也很大。

NationalInstitute of Standards and Technology, SP 800-57 Part 1 Rev. 4, Recommendationfor Key Management, Part 1: General. , NIST, 2016.

区块链技术长期使用后,外界对签名方式、哈希函数的攻击也愈演愈烈。在威胁到来之前,我们需要及时更新签名方式和哈希函数。这两种技术应用在区块链的各个角落,需要逐一进行考量。本章以比特币模型为范例,介绍交易中的数字签名技术、哈希链使用的哈希函数技术,并具体介绍了两种技术的转移方法。

数字签名与哈希链的作用


如表10-1所示,数字签名与哈希链的作用各不相同,在安全受到威胁和技术转移时,它们的应对方法也有所不同。



表10-1 数字签名与哈希链的功能和威胁

更新数字签名技术是未来交易的保护伞,而升级哈希链技术是交易和区块记录的有力保障。下面我们将依次介绍数字签名、哈希链的转移问题。

数字签名转移面临的课题


在交易过程中,如果数字签名技术不堪一击,攻击者甚至不用窃取签名密钥也可以顺利猜出密码。一旦这种攻击成为现实,就算用户安全保管签名密钥,也将变得毫无意义。在这种事态发生前,我们必须及时改变签名方式,或者增加密钥长度。

区块链的系统软件、管理签名密钥的软硬件(如钱包等)需要与更新后的签名方式、密钥长度一一对应。不过,升级签名方式和密钥后,系统运行的负荷加大,交易增多,区块变大,可能会影响区块链的扩展性。

用户使用软件生成新的签名密钥后,需要重新将密钥与加密货币关联起来。很多用户可能会错过升级签名密钥,或者根本没有意识到事情的重要性,从而继续使用原密码,面临巨大风险。

为了帮助这些用户,区块链、钱包软件以及各种硬件和业界社区论坛应当提供适当指导。



《拷问区块链》

哈希链安全性降低的风险


下面我们来了解一下哈希函数转移对哈希链的影响。哈希链的升级将波及整个网络,所以一定要格外慎重。

区块链使用了数字签名生成(签名运算前的处理)技术、交易和签名密钥(匹配的验证密钥)ID和签名密钥的生成技术,交易的哈希树、区块的哈希链等都使用了哈希函数。

在原来数据的基础上,哈希函数生成新的数值(哈希值),一般来说,主要具有以下特征:

・同一数据得出同一哈希值,不同数据得出不同哈希值。

·无法从哈希值推导原始数据。

以比特币使用的SHA-256哈希函数为例,只要输入数据即可得到256位(32字节)的固定长度哈希值。人们无须比较数据大小,根据哈希值就可以判断数据的同一性,哈希值也是数据检索的关键。哈希函数具有安全性和高效性等特点,除了区块链技术外,其在多个领域都有广泛的应用。

工作量证明(POW)利用了哈希函数的上述特征,前提是为获得小于某个数值的哈希值,用户不得不进行大量计算。

哈希函数可以防止人们篡改数据,安全可靠。安全的哈希函数具有原像计算困难性、第二原像计算困难性、冲突困难性等诸多特性。对于每一个特性来说,当安全性降低时,系统面临的威胁各不相同,譬如可以从哈希值推测原数据,或者输入不同的数据却生成了同一哈希值等。如果出现不同数据生成统一哈希值的情况,作为确认数据一致性的重要手段,哈希函数就失去了可信性。

对区块链来说,其安全性降低后,攻击者可能都不用修改交易的哈希树和区块的哈希链,就可以直接篡改交易记录或区块(考察篡改交易数据时,如果交易之间存在关联,如数字签名的连锁等,需要将这种关系纳入考虑)。

如果这些假设成立,区块链历经时间锤炼、成功保持不变的优势就会大打折扣。在哈希函数变脆弱,以上威胁成为现实之前,我们需要先行升级原有的哈希函数。

哈希函数的转移线索——长期签名技术


以比特币为例,图10-1简要介绍了从交易开始到哈希链生成的过程。经过多重哈希函数处理,其实每个环节都有可能出现哈希值的冲突,产生威胁,过程较为复杂。



图10-1 区块链中的哈希链生成

为了简洁地概括重点,我们首先来了解一下长期签名技术,一起思考一下区块链面临的难题。

长期签名技术以“欧洲电信标准化协会(European Telecommunications Standards Institute,以下简称ETSI)”为中心,是标准化PKI数字签名领域的重要技术 ,可以保障数字签名附带电子数据(电子签名格式)长期有效。举例来说,如果将税务文件、合同、医疗信息等视作需要处理的数字签名数据,数据种类不同,法律规定的保存时间也各不相同,作为日后出现纠纷时的重要证据,这些信息往往需要长期保存。

这种情况下,使用数字签名时,我们需要注意两个问题:一是证明谁在什么时间生成了数字签名;二是确保长期保存后,数字签名也具有法律效力。

第1点,关于“谁”的问题, PKI认证机构根据签名本人和签名密钥之间的关联(官方密钥证明)进行授权。而关于“什么时间生成”的问题,如图10-2所示,第三方机构——时间戳记部门逐一标注时间戳(关联数字签名和时间信息)。



图10-2 长期签名的存在证明(时间戳)

尽管区块链的实际处理和模型有所不同,但对比图10-1(区块链模型)和图10-2可以理解为:“电子数据”相当于“交易”,“存在证明(时间戳Token)”相当于“区块的哈希值”,为生成存在证明而输入的“时刻信息”相当于“前一个区块的哈希值”(区块链中,哈希链的意义与时间戳提供严格的时刻证明不同,是保障数据顺序的有力证明)。

长期有效的保障


长期签名的另一个重要特征就是“长期有效性的保障”,这是区块链哈希函数转移的关键。随着时间的流逝,数字签名和哈希函数(生成存在证明)的安全性逐渐下降,很有可能出现伪造数字签名和存在证明的情况。面对这些威胁,通过有效性延长的结构,使用长期签名技术后,即使长时间之后签名方式和哈希函数可能面临风险,仍然可以验证其有效性(PKI的情况下,不仅涉及哈希函数和署名方式的安全问题,还需要考虑官方密钥证书的有效期等,当然长期签名已经包括相应对策)。

面对风险,最基本的思路如下:在数字签名、数字签名对象的电子数据、数字签名的存在证明面临威胁前,用更安全的哈希函数重新建立关联(图10-3)。而对于新关联来说,只要不产生威胁,过去的数字签名、存在证明(过去得到的部分)依然有效。而一旦出现原有的电子数据、数字签名、时间戳Token被伪造的情况,也都可以通过新函数生成的哈希值进行检测。

综上所述,因为签名数据的存在证明离不开第三方机构的时间戳Token,相对单一,所以很容易解决;但是对区块链来说,为了保障存在证明真实可靠,需要各节点生成数据,组成系列哈希链条。必须充分考虑到两者的不同,对症下药,寻找适合的转移方法,下面我们就来了解一下区块链技术的要点。



图10-3 长期签名的有效性延长

区块链哈希函数转移的注意要点


正如分析长期签名概念时提到的那样,转移的重点是用新的哈希函数强化哈希链,而哈希链是过去交易和数字签名的存在证明。图10-3中,首先向哈希函数输入电子数据和签名信息,将区块链中的全部交易数据(包括数字签名)、时刻信息看作一个整体。换句话说,只要将区块链全部原封不动地转移到新的哈希函数上,就可以建立一个新链。

不过这一方法可能并不现实。结合比特币的实际情况来说,2017年11月,区块链的容量约为140G字节。假设2030年左右进行哈希函数转移,那时的容量预计将达到800G字节(单调递增的情况下)。按照常规的区块验证方法,相当于每个节点需要完成800G字节的哈希计算,这是一种低效验证。而如果委托特定的节点或机构进行验证,又破坏了去中心化的意义。

此外,选择哪个阶段的区块链作为输入对象也很有讲究,需要确定某一时刻的区块链状态(哈希转移前的状态),需要超出软件的范畴,由用户社区投票决定。

所以,整合哈希链、进行转移的方法看起来简单,却包括了多种问题。

有人说,可不可以不一次性完成转移,分别将单独的交易信息、特定的区块内容输入新函数之中,接下来再分批转移。如果采用这一方法,随着新块(基于新的哈希函数)的产生,过去的交易和区块生成的哈希值会逐渐融合(如图10-4)。新区块产生的同时,逐渐使用新的哈希函数去强化过去的交易和区块,最终完成全部交易和区块转移。这种方法的优点是,可以避免一次性转移时的投票问题。

不过,在逐渐转移的过程中,需要预估哪个时刻之前的交易和区块、大约可在什么时间前完成转移,储存在新区块内的过去交易和区块的单位等。此外,如何在转移过程中保持区块顺序、顺利完成转移,也是需要考虑的重要问题。从旧区块中读取信息,输入新的哈希函数,这一过程中,如果排除特定交易和区块,或者改变排列顺序,就会损坏过去存在证明的功能。如果有兴趣,各位读者可以参考“Long-term public blockchain:Resilience against Compromise ofUnderlying Cryptography”,文中详细介绍了区块转移的方法。

Masashi Satoand Shin’ichiroMatsuo,“Long-termpublic blockchain: Resilience against Compromise of Underlying Cryptography”, ICCCN 2017 Workshop on Privacy,Security and Trust in Blockchain Technologies, 2017.



图10-4 区块链哈希函数依次转移图示

实际转移中的注意事项——PKI


转移哈希函数和数字签名时,即使有了强大技术支撑,转移工作可能也并不一定顺利。先于区块链,PKI领域已经开始尝试这种转移。在公开密钥证书、数字签名、时间戳等方面,由于传统的哈希函数(SHA-1)和签名密钥(RSA1024位)安全性不断降低,PKI开始向安全性更高的SHA-2函数和RSA2048位以上的密钥转移,目前还在进行之中。下面我们就来简单了解一下PKI转移带来的启示。

首先,要明确方针。比如考虑到政府的奖励标准,探讨原有方式的用途、使用寿命等。

其次,按照上述方针,具体开展转移。这一过程包括:认证机构重新发行证明(密钥的再发行),更新系统、应用程序和中间件,改变设置。如果使用了上述长期签名技术,还需要更新原有签名数据等。

转移工作会影响到很多系统和部门。为保持系统正常运转,顺利进行转移,政府机构、认证机构、时间戳的服务提供者、评价认定机构、系统和应用程序及中间件的供应商应当密切合作,献言献策,调整课题,妥善解决。

实际转移中的注意事项——区块链


区块链也面临着同样的问题。区块链技术的提供者、普通用户、交易所经营者、区块链智能合约的服务提供者……需要与利益关系方协调具体的转移方针,明确实际操作内容,进行适当调整。

尤其像比特币这样的公链,此前已经因为扩展性的问题闹得议论纷纷,实际转移过程中,调整方向肯定会面临诸多困难。

数字签名和哈希函数的转移是保护用户资产安全的必要措施。实际转移时,区块链系统可能会受到巨大冲击,为顺利完成转移,必须慎重地讨论方针和政策。

那么单以比特币等公链为例,为升级签名方式和哈希函数,究竟需要经过怎样的流程呢?下面我想通过两个例子,与大家共同了解一下具体流程。

例一,已经掌握不法攻击手法,必须尽早进行转移。为保证新签名方式和哈希函数一一对应,必须统一更新软件,替换掉不兼容的节点,也就是所谓的“硬分叉”方法。不兼容软件更新的节点将无法继续进行交易或生成区块。

比特币、以太坊已经有过先例,不管如何注意,“硬分叉”的转移方式始终存在着新旧系统并存的风险。由于没有成功更新软件,可能有用户将直接失去加密资产。

例二,攻击手段尚未知晓,还在犹豫是否转移的阶段。这种情况下,最好是保持与现有软件的兼容性,实现共通使用,也就是“软分叉”的方法。

不应该一刀切掉已有的数字签名和哈希链,直接换成新的哈希函数,应该像长期签名那样,利用新的哈希函数,保障数字签名和哈希链的有效性。

长期签名以第三方机构作为担保,转移起来比较简单。但在区块链体系中,问题的关键是谁来担保。希望学界可以解决这一问题,尽量避免硬分叉,采用软分叉的方法进行转移。

数字签名和哈希函数的转移是保护用户资产的必要措施,但是转移也会给区块链整个系统带来巨大冲击。为顺利完成转移工作,必须慎重地讨论方针和政策。

文章来源: https://twgreatdaily.com/zh-hans/qrRsOW0BJleJMoPMhWii.html