当前位置:首页 > 物联网 > 区块链
[导读] 在区块链领域中,安全方面的考虑压倒了软件中所有其他要考虑因素。如果实现不了安全, 其他任何方面做得再好也于事无补。 区块链被证明分散的, 可信任的事务工作, 但许多区块链的安全漏洞仍然存

在区块链领域中,安全方面的考虑压倒了软件中所有其他要考虑因素。如果实现不了安全, 其他任何方面做得再好也于事无补。

区块链被证明分散的, 可信任的事务工作, 但许多区块链的安全漏洞仍然存在。

安全漏洞存在于设计阶段、编码阶段和操作阶段。同样,区块链有可能受到黑客的攻击。
 

区块链安全漏洞

智能合约的存在就像钻石一样是永恒存在的,只要它们被部署的区块链继续被使用。因此,所有的漏洞和区块链安全漏洞也会像智能合约一样存在。

通常, 每个区块链提供其自己的编程语言来实现智能合约。

智能合约的编程语言

区块链会利用他们自己的语言来开发智能合约。

例如,以太坊平台包含了编写智能合约的可靠语言。创作者设计的是一种坚固的图灵机完整语言。

图灵机完整的语言实质上允许程序员实现底层系统所能做到的任何事情。因此, 这就给程序员提供了代码中实现循环的能力, 这可能会导致区块链引发安全漏洞。

图灵机完整语言

图灵机完整语言非常的复杂, 但正是这种复杂性往往会招致 bug 和漏洞。

比特币网络也有一种编程语言,它称之为脚本。脚本的目的不是为了增强安全性。

给程序员的选项越少,区块链安全漏洞进入系统的可能性就越小。

为了尽量减少将错误代码发布到链外的风险, 程序员必须了解智能合约编程中固有的常见缺陷和反模式。(反模式表示错误的编程实践)。

DAO黑客:可重入性问题

可重入性问题在被编写到智能合约中的区块链安全漏洞中可能排在最高的位置。可重入性通过对同一事务的多个支出来消耗一个帐户。处理退款的用例适合这种利用,但是如果不在设计和编码阶段解决,这种缺陷就会影响到所有事务。

在迄今为止最臭名昭著的加密货币攻击之一中,DAO黑客就利用了可重入性。没有组织领导决定如何运行DAO(分散的自治组织),使他们能够对投资的项目进行投票。

它在第一个月筹集了超过1.5亿美元的资金。2016年6月17日,黑客从该组织的“重入性”漏洞中抽走了5000万美元。从以太经典(ETC)到以太币(ETH)的硬叉导致了解决这次黑客攻击所产生问题的所有努力。

反模式易陷入可重入性

代码脆弱的可重入性逻辑看起来是这样的:

处理支付()的函数

(1) 检查交易的有效性、收款人和账户余额;

(2) 处理交易;

(3) 更新系统状态,以显示已处理了事务;

乍一看,逻辑看起来是正确和完整的,但缺陷在于步骤3之前执行步骤2的顺序。

对函数的第一次调用将继续处理步骤2,而对同一事务的另一次调用则可以输入该函数。由于状态信息仍处于初始状态,尚未在步骤3中处理,因此第二个调用将检查为要处理的有效事务。

因此,该系统第二次为同一义务支出货币。黑客在状态正确设置之前,将多个事务快速地发送到函数中。

治疗可重入性

对算法的这一修改纠正了上面的问题:

处理支付()的函数

(1) 检查交易的有效性、收款人和账户余额;

(2) 更新系统状态以显示已处理了事务;

(3) 处理交易;

代码必须说明所有必要的异常处理,并且它还必须说明所有逻辑依赖项。

Overflow

Overflow是程序员需要注意的另一个常见的安全缺陷。

一些编程语言提供了强类型,而其他语言提供了弱类型。例如,强类型语言不允许程序员将字符串数据分配给数值变量,弱类型语言允许执行此类操作。

强类型语言实施范围有很大的限制。如果一个数组是十个元素,程序员就不能尝试访问第十一个元素。弱类型语言允许这样的行为,但会导致崩溃。如果一个变量所允许的最大值是99,并且为它赋值100,那么运行它时就会看到它崩溃!

因此,Overflow是黑客常使用的手段。如果黑客向智能合约提供了一个超出代码处理范围的参数,就会产生崩溃结果。这样的崩溃助长了多重攻击。崩溃可能触发拒绝服务攻击(DDoS攻击),这时,关于系统内部的重要信息有时会在错误消息中显示出来。

在web应用程序中,黑客经常用自己的恶意代码填充内存,因此,当程序崩溃并进入内存中的一个随机点时,恶意代码就会执行。

弱类型语言提供了强大的功能和动态灵活性,但它们也需要更严格的设计和测试来抵抗攻击。

大量的安全问题困扰着软件世界。随着新技术的出现,出现了新的威胁。除了上面提到的漏洞外,这些明显的缺陷只是许多其他区块链安全漏洞中的一些。

糟糕的密码系统制造了很多麻烦。密码学确保隐私,当隐私被破坏时,一切都会被破坏。IOTA团队犯了一个错误,在产品的初始版本中从头编写自己的密码库。滚动自己来加密所固有的问题是,所有复杂的软件都包含错误。

建立的密码库在经过学术界的审查后仍然存在,并且随着时间的推移,证明它是可靠的。

在钱包的世界里,随机数生成必须是真正随机的。特别是在加密货币出现的初期,一些钱包就不能满足这一要求。

加密货币要求地址必须是唯一的。唯一性来自一个随机数生成器,并且随机数生成器需要一个种子来开始这个过程。如果种子不是真正随机的,系统就会失败。

一个坏的随机性的结果意味着同一地址被多次创建。想象一下,钱包将地址X分配给某人A,然后稍后某个时候将地址X分配给某人B。当付款到达地址X时它只适用于一个人。那么到底哪个人会得到钱?

当黑客找出用于创建种子的算法时,会出现另一个随机性不好的问题。黑客为自己重新生成种子,并拥有系统。

安全永无止境

安全是一场永无止境的战斗,即使程序员、架构师和测试人员从代码中删除了所有漏洞,操作漏洞依然存在。

在一个工作环境的证明中,如果坏的参与者控制了网络的51%,那么完整性就会被破坏。博弈论为这种攻击提供了缓解。但是51%的攻击摧毁了货币的价值,所以攻击者只是伤害了他们自己。

区块链生活在互联网上,和互联网一样,也和黑客有同样的接触。例如,假设您从一个网站上的交换器中购买代币。注射式攻击、跨站点编写脚本、网络钓鱼攻击以及所有其他传统网站攻击都占上风。

结语

正如程序员要防范错误一样,程序员也必须在开发中考虑到安全性。虽然存在一些帮助程序员完成任务的工具,但是程序员必须首先了解他们自己的漏洞以防止它们。

分散式应用安全项目(DASP)希望成为区块链安全性信息和资源的存储库。他们在开放的Web应用安全项目(OWASP)上对自己进行了一些建模。年度OWASP前10名明确列出了目前存在的主要网页应用程序漏洞。DASP前10名希望为区块链提供同等的资源。

并非所有的攻击都是事先知道的。零日攻击定义了黑客在其他人之前就知道的漏洞。所以程序员在设计和实现软件时必须像攻击者一样去思考。如果您没有在代码中找到漏洞,那么希望寻找利润的黑客来替你找到它们。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭