零点课堂 | 主流区块链攻击底层逻辑(1)

区块链技术近年来快速发展,其价值得到越来越多认可的同时,技术与应用方面的安全挑战也逐渐凸显。

本文研究了针对区块链技术与应用的攻击方式及安全事件,提出了包括基础设施层、密码算法层、节点通讯层、共识协议层、运行平台层、智能合约层和系统应用层的七层安全模型,并针对模型各层对应的具体风险点,提出了解决方案。此外还探讨了区块链数据隐私问题。

区块链安全

根据区块链的技术特征,其安全模型可以由七层架构组成,自下而上分别包括:基础设施层、密码算法层、节点通讯层、共识协议层、运行平台层、智能合约层和系统应用层。各层分别从各自层面应对相应的安全风险,实现区块链系统的整体安全。

其中,基础设施层包含了区块链在其上运行所需的基础软硬件,如操作系统;密码算法层包含了区块链实现中所需要的密码学技术,如非对称加密算法、数据摘要算法等;节点通信层包含了节点之间的通讯传输机制;共识协议层主要包含了各类共识协议;运行平台层包含了智能合约运行环境,如EVM虚拟机;智能合约层主要包含各类部署在区块链上的业务合约;系统应用层指基于智能合约,结合传统IT技术构建的可被最终用户访问的各类应用。

各层之间面临着不同的安全风险:

· 基础设施层主要面临黑客通过传统安全漏洞进行攻击的风险;
· 密码算法层主要面临密码学算法本身在加密强度、前提假设等方面存在的问题,以及其代码实现过程中存在漏洞的风险;
· 节点通讯层主要面临节点传播与验证机制的风险,以及因为点对点组网(主要在公链中使用)而形成的网络拓扑特征、消息传送时间不确定、网络分裂等因素带来的攻击;
· 共识协议层因共识和激励机制的不同而面临不同类型的攻击风险;
· 运行平台层主要面临区块链运行平台本身实现过程中存在的漏洞带来的风险,比如虚拟机逃逸等;
· 智能合约层主要面临的多种攻击风险有:Solidity语言漏洞、时间戳依赖攻击等;

· 系统应用层安全风险主要集中在用户节点、数字资产钱包以及交易平台上。

1. 基础设施层

区块链节点服务器仍存在被黑客植入木马、窃听网络通信、DDOS攻击等安全风险。虽然区块链技术本身能够在一定程度上抵御少数节点被恶意控制所造成的破坏,但如果因为底层系统漏洞使得黑客可以轻易控制大部分节点,整个区块链网络仍会面临较大危险。

这方面因为与传统IT系统的安全攻击与防护没有太大的差异,所以本文不展开做详细的阐述。

2. 密码算法层

加密算法是保证区块链的安全性和不可篡改性的关键,为区块链的信息完整性、认证性和不可抵赖性提供了关键保障。

根据被破译的难易程度,不同的密码算法具有不同的安全等级。不存在绝对的安全,如果破译密文的代价大于加密数据的价值,那么可以认为“安全的”;如果破译密文所需的时间比加密数据的时间更长,那也可以认为是“安全的”。

区块链技术大量依赖了密码学的研究成果,如非对称算法和哈希(Hash)算法。这些密码算法目前是相对安全的,但并非绝对安全。

一是存在对密码学算法的攻击方法,如作用于散列函数的穷举攻击、碰撞攻击、长度扩展攻击。

穷举攻击是指是对截获到的密文尝试遍历所有可能的密钥,直到获得了一种从密文到明文的可理解的转换;或使用不变的密钥对所有可能的明文加密直到得到与截获到的密文一致为止。

碰撞攻击是指攻击者找到算法的弱点,瓦解它的强抗碰撞性,使攻击者能在较短的时间能寻找到值不同但hash相同的两个值。

长度扩展攻击是指针对某些允许包含额外信息的加密散列函数的攻击手段。在已知密文hash和密文长度的情况下,推导出密文与另一消息拼接后计算出来的hash。

二是算法实现过程中可能存在后门和漏洞,威胁到区块链系统的安全性。比如,所采用的密码算法本身虽然没有安全漏洞,但算法库的实现存在错误,这类代码编程过程中形成的漏洞,有可能成为区块链实践中黑天鹅安全事件爆发的诱因,例如:OpenSSL就曾因代码编写错误出现密钥安全漏洞。

三是未来可能作用于多种密码学算法的量子攻击。随着量子计算机算力提升,使得穷举时间复杂度大大降低,目前多种加密算法面临被瓦解的风险。

因此,为在密码算法层防范安全风险,应当注意以下几点。

第一,尽量采用经过安全认证的硬件密码机或算法库,来保证密码算法和密钥管理方面的安全性。

第二,应充分考量随着时间的推移支持迁移到新算法的可行性。计算机计算能力变得更快,这变相降低了现有算法的强度,当前一般通过增加密钥长度的方式以抵消其带来的风险。不排除未来出现安全性更高、速度更快、计算和存储资源要求更少的优异特性的新算法的可能。

第三,充分考量密钥管理的重要性。区块链系统包含的各种密钥和Hash值等数据需要得到有效保护和管理,以保证区块链系统自身不受损害。密钥的安全至关重要,其管理系统应包括密钥创建、密钥派生、密钥分发、密钥存储和安全审计等安全性管理功能。

第四,充分考量在用户丢失密钥、密钥过期或受到其他危害时使用区块链的例外程序。密钥或私钥的盗窃风险可以通过限制密钥的有效期和使用量来缓解。实践中,某些区块链系统因没有设计任何方法来替换被盗用的密钥,导致用户损失。

第五,加密算法应当在安全性和计算成本之间有所折衷。在应用环境中,应根据特定行业所需的保护级别,选择合适的密码算法和密钥长度。要特别注意的是,虽然目前依赖现有的密码算法的加密算法和密钥长度可以满足当前的安全需求,但需要充分考虑量子计算的发展在未来可能带来的影响。

本文由 零点财经 作者:tao 发表,其版权均为 零点财经 所有,文章内容系作者个人观点,不代表 零点财经 对观点赞同或支持。如需转载,请注明文章来源。
分享生成图片
58

发表回复

零点课堂 | 主流区块链攻击底层逻辑(1)

2021-06-24 10:21:57

区块链技术近年来快速发展,其价值得到越来越多认可的同时,技术与应用方面的安全挑战也逐渐凸显。

本文研究了针对区块链技术与应用的攻击方式及安全事件,提出了包括基础设施层、密码算法层、节点通讯层、共识协议层、运行平台层、智能合约层和系统应用层的七层安全模型,并针对模型各层对应的具体风险点,提出了解决方案。此外还探讨了区块链数据隐私问题。

区块链安全

根据区块链的技术特征,其安全模型可以由七层架构组成,自下而上分别包括:基础设施层、密码算法层、节点通讯层、共识协议层、运行平台层、智能合约层和系统应用层。各层分别从各自层面应对相应的安全风险,实现区块链系统的整体安全。

其中,基础设施层包含了区块链在其上运行所需的基础软硬件,如操作系统;密码算法层包含了区块链实现中所需要的密码学技术,如非对称加密算法、数据摘要算法等;节点通信层包含了节点之间的通讯传输机制;共识协议层主要包含了各类共识协议;运行平台层包含了智能合约运行环境,如EVM虚拟机;智能合约层主要包含各类部署在区块链上的业务合约;系统应用层指基于智能合约,结合传统IT技术构建的可被最终用户访问的各类应用。

各层之间面临着不同的安全风险:

· 基础设施层主要面临黑客通过传统安全漏洞进行攻击的风险;
· 密码算法层主要面临密码学算法本身在加密强度、前提假设等方面存在的问题,以及其代码实现过程中存在漏洞的风险;
· 节点通讯层主要面临节点传播与验证机制的风险,以及因为点对点组网(主要在公链中使用)而形成的网络拓扑特征、消息传送时间不确定、网络分裂等因素带来的攻击;
· 共识协议层因共识和激励机制的不同而面临不同类型的攻击风险;
· 运行平台层主要面临区块链运行平台本身实现过程中存在的漏洞带来的风险,比如虚拟机逃逸等;
· 智能合约层主要面临的多种攻击风险有:Solidity语言漏洞、时间戳依赖攻击等;

· 系统应用层安全风险主要集中在用户节点、数字资产钱包以及交易平台上。

1. 基础设施层

区块链节点服务器仍存在被黑客植入木马、窃听网络通信、DDOS攻击等安全风险。虽然区块链技术本身能够在一定程度上抵御少数节点被恶意控制所造成的破坏,但如果因为底层系统漏洞使得黑客可以轻易控制大部分节点,整个区块链网络仍会面临较大危险。

这方面因为与传统IT系统的安全攻击与防护没有太大的差异,所以本文不展开做详细的阐述。

2. 密码算法层

加密算法是保证区块链的安全性和不可篡改性的关键,为区块链的信息完整性、认证性和不可抵赖性提供了关键保障。

根据被破译的难易程度,不同的密码算法具有不同的安全等级。不存在绝对的安全,如果破译密文的代价大于加密数据的价值,那么可以认为“安全的”;如果破译密文所需的时间比加密数据的时间更长,那也可以认为是“安全的”。

区块链技术大量依赖了密码学的研究成果,如非对称算法和哈希(Hash)算法。这些密码算法目前是相对安全的,但并非绝对安全。

一是存在对密码学算法的攻击方法,如作用于散列函数的穷举攻击、碰撞攻击、长度扩展攻击。

穷举攻击是指是对截获到的密文尝试遍历所有可能的密钥,直到获得了一种从密文到明文的可理解的转换;或使用不变的密钥对所有可能的明文加密直到得到与截获到的密文一致为止。

碰撞攻击是指攻击者找到算法的弱点,瓦解它的强抗碰撞性,使攻击者能在较短的时间能寻找到值不同但hash相同的两个值。

长度扩展攻击是指针对某些允许包含额外信息的加密散列函数的攻击手段。在已知密文hash和密文长度的情况下,推导出密文与另一消息拼接后计算出来的hash。

二是算法实现过程中可能存在后门和漏洞,威胁到区块链系统的安全性。比如,所采用的密码算法本身虽然没有安全漏洞,但算法库的实现存在错误,这类代码编程过程中形成的漏洞,有可能成为区块链实践中黑天鹅安全事件爆发的诱因,例如:OpenSSL就曾因代码编写错误出现密钥安全漏洞。

三是未来可能作用于多种密码学算法的量子攻击。随着量子计算机算力提升,使得穷举时间复杂度大大降低,目前多种加密算法面临被瓦解的风险。

因此,为在密码算法层防范安全风险,应当注意以下几点。

第一,尽量采用经过安全认证的硬件密码机或算法库,来保证密码算法和密钥管理方面的安全性。

第二,应充分考量随着时间的推移支持迁移到新算法的可行性。计算机计算能力变得更快,这变相降低了现有算法的强度,当前一般通过增加密钥长度的方式以抵消其带来的风险。不排除未来出现安全性更高、速度更快、计算和存储资源要求更少的优异特性的新算法的可能。

第三,充分考量密钥管理的重要性。区块链系统包含的各种密钥和Hash值等数据需要得到有效保护和管理,以保证区块链系统自身不受损害。密钥的安全至关重要,其管理系统应包括密钥创建、密钥派生、密钥分发、密钥存储和安全审计等安全性管理功能。

第四,充分考量在用户丢失密钥、密钥过期或受到其他危害时使用区块链的例外程序。密钥或私钥的盗窃风险可以通过限制密钥的有效期和使用量来缓解。实践中,某些区块链系统因没有设计任何方法来替换被盗用的密钥,导致用户损失。

第五,加密算法应当在安全性和计算成本之间有所折衷。在应用环境中,应根据特定行业所需的保护级别,选择合适的密码算法和密钥长度。要特别注意的是,虽然目前依赖现有的密码算法的加密算法和密钥长度可以满足当前的安全需求,但需要充分考虑量子计算的发展在未来可能带来的影响。