区块链安全事件漫谈

作者: 小小亮FLY | 来源:发表于2019-01-17 17:12 被阅读579次

    最近简书掀起了区块链之风,大有人人都需学区块链的趋势。借此机会谈谈区块链安全相关的知识。带大家了解一下,区块链安全的重要性。

    区块链安全是一个不容忽视的问题,它虽然不能为区块链创造利益,但是却可以让区块链大厦瞬间坍塌。简书币改和Fountain进行合作,而Fountain的token 便是FTN。2018年12月24日FTN在交易所(币虎、满币)上市交易。12月26便遭到了黑客攻击。黑客利用该合约批量转账中存在的整数溢出漏洞向黑客受控账户"增发"了大量的ERC20 Token。据说因为及时关闭了交易,损失并不大。如果损失太大的话,或许FTN价格就直接归零了,简书的币改也不用改了。还好此次事件爆发在早期,从另一个角度看是此黑客拯救了Fountain。

    目前FTN是在以太坊公链上实现的代币,只是一个智能化合约,代码也都是可见的。
    被攻击时的Fountain合约代码
    关键代码段:

            for (i = 0; i < investorsLength; i ++) {
                r = investors[i];
                if (r == address(0) || r == owner) continue;
                investorsCount ++;
                totalAmount += amounts[i];//需要改这里
            }
            require(totalAmount > 0);
            require(canMint(totalAmount));
    

    攻击后修改过的Fountain 2 合约代码
    关键代码:

            for (i = 0; i < receiveLength; i ++) {
                r = receivers[i];
                if (r == address(0) || r == owner) continue;
                receiverCount ++;
                totalAmount = totalAmount.add(amounts[i]); //改的这里
            }
            require(totalAmount > 0);
            require(canPay(msg.sender, totalAmount));
    

    话说自从某公司开始杀程序猿祭天之后,后面公司纷纷效仿,程序员从此变成了一个高危行业,写出这段代码的不知道是否被祭天了。

    下面是区块链相关的一些安全事件

    2013年11月,澳大利亚广播公司报道,当地一位18岁的青年称,自己运营的比特币银行被盗,损失4100个比特币。
    2014年3月,美国数字货币交易所Poloniex被盗,损失12.3%的比特币。
    2014年Mt.gox盗币案——85万枚,价值120亿美元。
    2015年1月,Bitstamp交易所盗币案——1.9万枚比特币,当时价值510万美元。
    2015年2月,黑客利用比特儿从冷钱包填充热钱包的瞬间,将比特儿交易平台冷钱包中的所有比特币盗走,总额为7170个比特币,价值1亿美元。
    2016年1月1日,Cryptsy交易平台失窃1.3万比特币,价值1.9亿美元。
    2016年8月1日,全球知名比特币交易平台Bitfinex盗币案——约12万枚,价值18亿美元。
    2017年3月1日,韩国比特币交易所yapizon被盗3831枚比特币,相当于该平台总资产的37%,价值5700万美元。
    2017年6月1日,韩国数字资产交易平台Bithumb被黑客入侵,受损账户损失数十亿韩元。
    2017年7月1日,BTC-e交易所盗币案——6.6万枚,价值9.9亿美元。
    2017年11月22日Tether宣布被黑客入侵,价值3100万美元的比特币被盗。2017年11月23日,Bitfinex发生挤兑3万比特币瞬间被提走。

    除了代码方面的漏洞外,还有一些常见的攻击:
    女巫攻击(Sybil Attack)
    在P2P网络中,单一节点具有多个身份标识,通过控制系统的大部分节点来削弱冗余备份的作用。
    Fountain在白皮书中也提到了如何应对女巫攻击

    为应对针对奖励池的女巫攻击,目前比较常见的抑制方法是:
    1.较高的注册认证门槛;
    2.在受到社区处罚后,参与内容发布时,必须质押部分 FP;
    3.设置准备金制度(即总财富值相同情况下,注册账号越多,占用的准备金越多,从而使得可用的财富值越小)。
    对于以上三种方式,Fountain 将全部采用,以有效抵御女巫攻击。目前每个用户的准备金将设置为10个 FP。为了提供更加友好的用户体验,在正式上线后,新用户注册时将获得由基金会借出的10个 FP 作为初始储备金。一段时间后这笔储备金将被收回,新用户可以利用这段时间参与社区交互,来获得足够的奖励以承担未来的储备金。

    体验了下简书android测试版APP 4.4.0-beta,首次进去填好年龄后,已经开始送10简书钻借钻了。

    日蚀攻击(Eclipse Attack):
    攻击者模仿所有其他节点的入流量和出流量,达到将受害者与网络上的其他节点隔离的目的。

    双花攻击:
    通俗点说就是一份钱当两份花。当算力超过51%时候可以发起这种攻击。某些算力比较低的公链容易遭受这种攻击,据说以太经典最近遭受了多次双花攻击。

    另外个人用户也要注意账户的安全性,尤其有注意保护私钥。
    区块链中涉及一些密码学的东西,有些人可能不大了解,下面简单介绍一下。
    非对称加密:非对称加密中有一密钥对(公钥和私钥),公钥是公开的,私钥是非公开的。公钥和私钥是不同的,公钥加密的内容,私钥可以进行解密。私钥加密我们一般称为签名,类似于手写的签名或者盖章。在电子签名法中规定:可靠的电子签名与手写签名或盖章具有具有同等的法律效力。如果你使用电脑版的网银,应该会有一个类似于U盘的东西(我们姑且称为USBKey吧)使用前要插到电脑上,如农行的K宝等。每次进行转账等关键交易的时候都需要输入密码,此时执行的操作是 使用私钥对关键数据进行签名,然后发送到银行网银服务器。银行用用户的公钥进行解密,如果可以进行正确的解密则是有效签名。
    非对称加密的话,一般互联网公司采用的是RSA加密算法,而银行则正在慢慢的向国密话改进,使用的是SM2。据说是RSA-1024 被某国破解,而采用RSA-2048运算速度过慢,为了安全则基于椭圆曲线算法搞出来一套国密算法。
    下面图解是以RSA为例

    公钥加密、私钥解密 私钥签名、公钥验签

    相关文章

      网友评论

        本文标题:区块链安全事件漫谈

        本文链接:https://www.haomeiwen.com/subject/trsidqtx.html