[发明专利]一种智能合约安全增强方法有效
申请号: | 202010211696.8 | 申请日: | 2020-03-24 |
公开(公告)号: | CN111563237B | 公开(公告)日: | 2023-08-08 |
发明(设计)人: | 闫文添;高健博;吴振豪;张家硕;任立峰;王昭;李青山;陈钟 | 申请(专利权)人: | 博雅正链(北京)科技有限公司;北京大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李珉 |
地址: | 100037 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 智能 合约 安全 增强 方法 | ||
1.一种智能合约安全增强方法,其特征在于:包括以下步骤:
步骤1、获取一份智能合约的原始字节码,并恢复智能合约原始字节码的控制流图,标记所有JUMP/JUMPI指令跳转的目的地址及其入栈指令、JUMP/JUMPI指令的位置以及跳转目的地址和跳转指令之间的前后位置关系;
步骤2、在智能合约原始字节码中寻找可插入替换字节码的位置并标记插入位置的地址;
步骤3、用户选择四种地址混淆模式中的任意一种进行字节码替换,根据选择的不同地址混淆模式生成不同的基础替换字节码;
所述四种地址混淆模式分别为:
地址混淆模式1:使用memory存取获得跳转地址;
地址混淆模式2:使用storage存取获得跳转地址;
地址混淆模式3:使用sha3()函数计算获得跳转地址;
地址混淆模式4:使用外部合约调用获得返回值作为跳转地址;
当用户选择地址混淆模式1时,其基础替换字节码为:“[**][**]604052604051”;
当用户选择地址混淆模式2时,其基础替换字节码为:“[**][**]604055604054”;
当用户选择地址混淆模式3时,其基础替换字节码为:
“60ff6050526001606f20600f1660099004[**][**]02”;
当用户选择地址混淆模式4时,其基础替换字节码为:
“[**][**]61007d60048073bde95422681e4c3984635af2f2f35f8c44a4ddc973ffffffffffffffffffffff ffffffffffffffffff1690602001909190505060008173ffffffffffffffffffffffffffffffffffffffff16638dde08406000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000 000000000000028152600401602060405180830381600087803b15156102c65a03f115155050506040518051905090509190505016”;
其中,[**]表示需要进行混淆的跳转地址和入栈操作指令的字节码;
步骤4、重构基础替换字节码和原始字节码中所有的跳转目的地址和跳转指令,恢复智能合约字节码正常的控制流图;
步骤5、在基础替换字节码中插入混淆后的跳转地址,并将插入后的基础替换字节码插入到重构后的原始字节码中,生成新的智能合约字节码,增强智能合约的安全性。
2.根据权利要求1所述的一种智能合约安全增强方法,其特征在于:所述步骤2的具体方法为:
在智能合约原始字节码对应的指令序列中,将匹配到的每一组{EQ-PUSH*-JUMPI}指令序列作为待替换的目标代码,用于对智能合约的字节码控制流图进行混淆。
3.根据权利要求1所述的一种智能合约安全增强方法,其特征在于:所述步骤4的具体方法为:
步骤4.1、依次判断步骤1中的每个JUMP/JUMPI指令跳转的目的地址与步骤2中的插入位置地址的前后关系,如果跳转的目的地址在插入位置之后,则跳转目的地址加上插入代码的字节长度,得到新的跳转目的地址;否则JUMP/JUMPI指令跳转的目的地址不变;
步骤4.2、再依次判断步骤4.1得到的每个JUMP/JUMPI指令跳转的目的地址是否发生进位,如果发生进位则根据新的跳转目的地址长度修改对应的入栈操作指令,同时按字节补齐字节码;否则入栈操作指令不变;
步骤4.3、最后依次判断步骤4.1得到的每个JUMP/JUMPI指令跳转目的地址所指向位置之前是否有其他的跳转目的地址发生进位,如果发生进位则根据新的跳转目的地址长度修改对应的入栈操作指令,并按字节补齐跳转目的地址;否则入栈操作指令不变。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于博雅正链(北京)科技有限公司;北京大学,未经博雅正链(北京)科技有限公司;北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010211696.8/1.html,转载请声明来源钻瓜专利网。