信息安全技术 区块链合约安全技术测评标准湖南.docx
- 文档编号:23199537
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:44
- 大小:49.94KB
信息安全技术 区块链合约安全技术测评标准湖南.docx
《信息安全技术 区块链合约安全技术测评标准湖南.docx》由会员分享,可在线阅读,更多相关《信息安全技术 区块链合约安全技术测评标准湖南.docx(44页珍藏版)》请在冰豆网上搜索。
信息安全技术区块链合约安全技术测评标准湖南
湖南省市场监督管理局发布
信息安全技术
区块链合约安全技术要求
目次
前 言
本标准按照GB/T1.1—2009《标准化工作导则第1部分:
标准的结构和编写》给出的规则起草。
本标准由湖南省区块链和分布式记账技术标准化技术委员会(筹)提出。
本标准由湖南省委网络安全和信息化办公室归口。
本标准起草单位:
国防科技大学、湖南链信安科技有限公司、湖南天河国云科技有限公司、长沙红岸科技有限公司、湖南旭顺科技有限公司等。
本标准主要起草人:
谭林、杨征、谭霜、梁亮、丁兆云、汪武、陈昕、尹海波、李旷、钟稳、梁琪、聂璐璐、黄帅、李财、聂朗、姜载乐、殷新文、丁雅琪、沈浪、张祥、宋姝、舒旭东、刘齐平、吴金彪、武洋、郑婷婷、胡钦、汪帅国、邹曼瑜等。
本标准为首次制订。
引 言
本标准规定了区块链合约安全技术测评指标要求,有助于加强合约层的安全性,规范智能合约的设计和开发,有助于区块链合约的审计,保证区块链合约层的资源安全、访问控制安全和审计安全,促进区块链技术健康发展。
本标准制定了区块链合约安全测评的主要内容包括合约可扩展性测评要求及合约可交互性测评要求、合约可终止性测评要求、合约确定性测评要求以及合约可审计性测评要求和合约安全性测评要求等项6测评要求。
区块链合约安全技术测评要求
1 范围
本标准规定了区块链合约安全技术测评要求。
本标准规定了区块链合约安全技术测评指标要求。
通过对智能合约代码分析,规定区块链合约安全技术测评要求的主要内容包括代码安全规范、合约安全验证、攻击解决方案、安全监测手段、开发标准和规范、代码审计标准和规范、漏洞奖励机制等。
本标准适用于测评机构从区块链网络安全技术的角度对区块链安全进行的测评工作,也适用于区块链技术开发者参考使用。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。
凡是注日期的引用文件,仅注日期的版本适用于本文件。
凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
[1]GB/T25069-2010信息安全技术术语
[2]GB/T5271.15-2008信息技术词汇第15部分:
编程语言
[3]GB/T31496.1-2016信息安全技术信息安全保障指标体系及评价方法第1部分:
概念和模型
[4]GB/T31496.2-2016信息安全技术信息安全保障指标体系及评价方法第2部分:
指标体系
[5]GB/T36618-2018信息安全技术金融信息服务安全规范
[6]GB/T33561-2017信息安全技术安全漏洞分类
[7]GB/T20270-2006的《信息安全技术网络基础安全技术要求》
[8]GB/T20271-2006的《信息安全技术信息系统通用安全技术要求》
[9]GB/T20272-2006的《信息安全技术操作系统安全技术要求》
[10]GB/T22240-2008的《信息安全技术信息系统安全等级保护定级指南》
[11]GB17869-1999的《计算机信息系统安全保护等级划分准则》
3 术语和定义
GB/T25069-2010、GB/T5271.15-2008、GB/T31496.1-2016、GB/T31496.2-2016、GB/T36618-2018、GB/T33561-2017和GB/T20270-2006界定的以及下列术语和定义适用于本文件。
为了便于使用,以下列出了某些术语和定义。
下列术语和定义适用于本文件。
3.1
区块链Blockchain
是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构,并通过密码学等方式保证数据不可篡改和不可伪造的去中心化的互联网公开账本。
3.2
共识机制consensusmechanism
指形成共同认识或达成一致意见的运作方式、方法和规则。
区块链共识机制保证了以去中心化方式维护分布式数据库数据的一致性。
区块链中常用的共识机制主要包括:
工作量证明机制、权益证明机制、股份授权证明机制和验证池机制等。
3.3
共识算法consensusalgorithms
用于保证系统中不同节点数据在不同程度下的一致性和正确性的算法。
根据区块链类型的不同划分,共识算法主要可以分为两大类。
一类是用于公链场景的共识算法,主要包括工作量证明算法POW、股权证明算法POS和委托权益证明算法DPOS。
另外一类是用于联盟链场景的共识算法,主要包括拜占庭容错算法PBFT和RAFT等。
3.4
时间戳timestamp
是一个字符序列,唯一地标识某一刻的时间点。
区块链中的时间戳,是某一时间内发生的所有事件在区块链数据库中进行唯一的、不可更改的记录。
3.5
哈希算法hash
即哈希函数。
它是一种单向密码体制,是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。
3.6
非对称加密算法asymmetricencryptionalgorithms
用于公钥和私钥对数据的存储和传输的加密和解密的一种算法。
其在区块链的应用场景主要包括信息加密、数字签名和登录认证等。
区块链系统中,涉及到非对称加密算法主要有RSA、D-H、ECC(椭圆曲线加密算法)等。
3.7
智能合约smartcontracts
由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的一段计算机代码,是现实世界中合约和规则的算法实现。
3.8
缓冲区溢出BufferOverflow
为某特定数据结构分配的内存空间边界之外写入数据时,即会发生缓冲区溢出。
3.9
线程安全ThreadSafe
在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。
3.10
函数可重入FunctionReentrant
某函数被调用,没有执行完成,又一次被调用
3.11
跨函数资源共享ResourceSharingAcrossFunctions
两个函数使用到了相同的状态变量,攻击者可以在调用一个函数后引发自身的fallback函数,在fallback函数中调用另外一个函数进行攻击。
3.12
整数溢出IntegerOverflow
整数溢出漏洞包括上溢和下溢,上溢时指已经达到类型能表示的最大值后,再增加的话就会溢出,从一个很大的值变为0,下溢是指已经是类型能表示的最小值,继续减小的话,就会变成一个很大的值。
3.13
gas限制和循环GasLimitandLoop
在智能合约中,每一步操作都是要求用户以gas的形式支付相应的代价。
对于非固定次数的循环,要特别小心gas的限制。
如循环次数依赖一个存储的变量等。
如果在循环的执行过程中gas消耗完,那么整个执行都会被回滚掉。
3.14
短地址攻击ShortAddressAttack
短地址攻击是利用虚拟机在参数长度不够时自动在右方补0的特性,通过去除钱包地址末位的0,达到将转账金额左移放大的效果。
3.15
阻塞Block
阻塞即进程/线程的请求不能立即得到应答,进程/线程需要等待。
3.16
秘密信息SecretInformation
为了执行特定安全功能策略,只能由授权用户或被评对象安全功能知晓的信息。
3.17
可信系统TrustedSystem
指一种封闭、可控的计算系统,其任何操作行为总是和预期保持一致。
3.18
预言机oracle
是一种链外数据服务。
4 缩略语
下列缩略语适用于本文件。
D-H:
迪菲-赫尔曼密钥交换(Diffie–Hellmankeyexchange)
DDoS:
分布式拒绝服务(DistributedDenialofService)
DoS:
拒绝服务(DenialofService)
ECC:
椭圆曲线密码学(EllipticCurveCryptography)
HTTP:
超文本传输协议(HyperTextTransferProtocol)
DAPP:
分布式应用(DecentralizedApplication)
LValues:
左值(LeftValues)
5 等级测评概述
5.1 等级测评方法
等级测评实施的基本方法是针对特定的测评对象,采用相关的测评手段,遵从一定的测评规程,获取需要的证据数据,给出是否达到特定级别安全保护能力的评判。
本标准中针对每一个要求项的测评就构成一个单项测评,针对某个要求项的所有具体测评内容构成测评实施。
单项测评中的每一个具体测评实施要求项(以下简称“测评要求项”)是与安全控制点下面所包括的要求项(测评指标)相对应的。
在对每一要求项进行测评时,可能用到访谈、核查和测试三种测评方法,也可能用到其中一种或两种。
根据调研结果,分析等级保护对象的业务流程和数据流,确定测评工作的范围。
结合等级保护对象的安全级别,综合分析系统中各个设备和组件的功能和特性,从等级保护对象构成组件的重要性、安全性、共享性、全面性和恰当性等几方面属性确定技术层面的测评对象,并将与其相关的人员及管理文档确定为管理层面的测评对象。
测评对象可以根据类别加以描述,包括源代码、智能合约引擎、智能合约接口、软件开发包和智能合约审计工具等。
等级测评活动中涉及测评力度,包括测评广度(覆盖面)和测评深度(强弱度)。
安全保护等级较高的测评实施应选择覆盖面更广的测评对象和更强的测评手段,可以获得可信度更高的测评证据,测评力度的具体描述参见附录A。
每个级别测评要求都包括合约可扩展性测评、合约可交互性测评、合约可终止性测评、合约确定性测评、合约可审计测评和合约安全性测评6个部分
5.2 单项测评和整体测评
等级测评包括单项测评和整体测评。
单项测评是针对各安全要求项的测评,支持测评结果的可重复性和可再现性。
本标准中单项测评由测评指标、测评对象、测评实施和单元判定结果构成。
整体测评是在单项测评基础上,对等级保护对象整体安全保护能力的判断。
整体安全保护能力从纵深防护和措施互补二个角度评判。
6 第一级测评要求
6.1 合约可扩展性测评要求
6.1.1 合约的运行环境
6.1.1.1 评价单元(L1-ECS-01)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适运行环境。
b)测评对象:
运行环境。
c)测评实施:
合约应该至少拥有以下合适运行环境种的一种:
1)具有一种新的编译器,将智能合约语言翻译到虚拟机。
2)具有一种改造的编译器,将智能合约语言翻译到虚拟机。
3)改造现有的虚拟机,将智能合约语言通过改造的编译器翻译到虚拟机。
4)改造现有的虚拟机,将智能合约语言通过新的编译器翻译到虚拟机。
5)具有合适的沙箱(容器)环境,可以支持智能合约的运行。
d)单元判定:
如果1)-5)的测评内容至少有一项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.1.2 合约的开发语言
6.1.2.1 评价单元(L1-ECS-02)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适的开发语言。
b)测评对象:
合约代码。
c)测评实施:
合约应该至少支持以下一种或多种编程语言:
1)Solidity。
2)Java。
3)Go。
4)C++。
5)Nodejs。
6)根据虚拟机自己设计的一款合适的开发语言。
d)单元判定:
如果1)-6)的测评内容至少有一项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.2 合约可交互性测评要求
6.2.1 合约预言机
6.2.1.1 评价单元(L1-ECI-01)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种单向数字代理,可以查找和验证外部世界的数据的预言机。
b)测评对象:
合约扩展。
c)测评实施:
预言机应该包括以下关键功能:
1)从链外的数据源收集数据。
2)使用签名消息在链上传输数据。
3)将数据放入智能合约的存储空间,使数据可用。
d)单元判定:
如果1)-3)的测评内容项都满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.2.2 合约交互接口
6.2.2.1 评价单元(L1-ECI-02)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适的与通用应用程序交互的接口。
b)测评对象:
合约扩展。
c)测评实施:
合约应该至少提供以下一种或多种编程语言的接口(api):
1)Javasdk。
2)Pythonsdk。
3)Gosdk。
4)PHPsdk。
d)单元判定:
如果1)-4)的测评内容至少有一项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.3 合约可终止性测评要求
6.3.1 合约状态机
6.3.1.1 评价单元(L1-ECT-01)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适的确保合约不同状态暴露不同功能的状态机。
b)测评对象:
合约存储。
c)测评实施:
合约的状态机应该具有以下几个功能:
1)支持合约的生命周期需要经历的所有阶段。
2)支持合约的所有阶段的所有方法。
3)阶段转换应当明确定义并对所有人公开。
d)单元判定:
如果1)-3)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.3.2 合约资源控制
6.3.2.1 评价单元(L1-ECT-02)
该测评单元包括以下要求:
a)测评指标:
合约是否具有有效的资源管理模式防止合约浪费运算资源和存储资源。
b)测评对象:
合约设计模式。
c)测评实施:
合约的资源控制应具有以下几个功能:
1)具有线性逻辑,资源只能且必须被使用一次。
2)能够对资源进行合理的调配和部署。
3)资源可以在有限时间内被释放。
4)合约必须在有限时间内完成运行。
d)单元判定:
如果1)-4)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.3.3 合约访问控制
6.3.3.1 评价单元(L1-ECT-03)
该测评单元包括以下要求:
a)测评指标:
合约是否具有默认的属性权限和访问控制机制。
b)测评对象:
合约设计模式。
c)测评实施:
合约的访问控制应具有以下几个功能:
1)属性权限应该具有类似public、protect、private的分级。
2)只有是public类型时,才可以通过合约地址进行访问。
3)合约内部要访问internal和private类型的属性和方法时,直接访问即可,合约外部无法访问private类型的属性和方法。
d)单元判定:
如果1)-3)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.4 合约确定性测评要求
6.4.1 合约共识算法
6.4.1.1 评价单元(L1-CCA-01)
该测评单元包括以下要求:
a)测评指标:
是否具有确保相同合约在每个节点执行都相同以及合约执行后账本状态统一改变的共识算法。
b)测评对象:
合约设计模式。
c)测评实施:
合约的共识算法应具有以下几个功能:
1)应该能让分布式的区块链系统达成一致。
2)应该使分布式的区块链系统具有较好的容错性。
3)应该具有较高的共识效率。
4)应该使分布式的区块链系统具有较好的并发性。
d)单元判定:
如果1)的测评内容全部满足,且2)-4)至少满足一项,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.4.2 合约设计模式
6.4.2.1 评价单元(L1-CCA-02)
该测评单元包括以下要求:
a)测评指标:
智能合约的设计模式是否支持确定性,即程序的行为总是确定的,对于相同的输入能保证相同的输出。
b)测评对象:
合约设计模式。
c)测评实施:
智能合约的设计模式应该满足以下几点确定性的要求:
1)合约的设计应该能保持合约程序运行的确定性。
2)合约的设计应该使逻辑扁平,没有条件状态变化。
3)合约的设计应该能让程序片段被正确的文档化,复用。
4)合约的设计应该能够根据需求和实现来推断。
d)单元判定:
如果1)-4)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.5 合约可审计性测评要求
6.5.1 合约审计接口
6.5.1.1 评价单元(L1-ECA-01)
该测评单元包括以下要求:
a)测评指标:
是否提供了合约部署、发布、运行的审计接口。
b)测评对象:
合约测试。
c)测评实施:
智能合约的审计接口应该满足以下几个标准:
1)合约应该具有测试部署接口。
2)合约应该具有测试发布接口。
3)合约应该具有测试运行接口。
d)单元判定:
如果1)-3)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.5.2 合约形式化验证
6.5.2.1 评价单元(L1-ECA-02)
该测评单元包括以下要求:
a)测评指标:
是否提供了合约常规的形式化验证检测。
b)测评对象:
合约测试。
c)测评实施:
智能合约的形式化验证应该包括以下几项:
1)合约代码规范检测。
2)合约函数调用检测。
3)合约业务逻辑安全检测。
4)合约溢出检测。
5)合约异常可达检测。
d)单元判定:
如果1)-5)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.6 合约安全性测评要求
6.6.1 合约抗攻击性
6.6.1.1 评价单元(L1-CSA-01)
该测评单元包括以下要求:
a)测评指标:
合约是否能够抵御常见的恶意攻击。
b)测评对象:
合约测试。
c)测评实施:
智能合约应该能抵御以下几种常见的恶意攻击:
1)call注入攻击。
2)无线操作攻击。
3)单函数和跨函数重入攻击。
4)针对签名的重放攻击。
5)分叉攻击。
6)女巫攻击。
d)单元判定:
如果1)-6)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
6.6.2 合约防篡改性
6.6.2.1 评价单元(L1-CCA-02)
该测评单元包括以下要求:
a)测评指标:
合约执行后的结果是否放在由防篡改网路序列构成的执行体系中。
b)测评对象:
合约测试。
c)测评实施:
智能合约执行后的结果在多少个块之后无法篡改:
1)0—6。
2)6—10。
3)>10。
d)单元判定:
如果1)-3)的测评内容任意一项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7 第二级测评要求
7.1 合约可扩展性测评要求
7.1.1 合约的运行环境
7.1.1.1 评价单元(L1-ECS-01)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适运行环境。
b)测评对象:
运行环境。
c)测评实施:
合约应该至少拥有以下合适运行环境种的两种及以上:
1)具有一种新的编译器,将智能合约语言翻译到虚拟机。
2)具有一种改造的编译器,将智能合约语言翻译到虚拟机。
3)改造现有的虚拟机,将智能合约语言通过改造的编译器翻译到虚拟机。
4)改造现有的虚拟机,将智能合约语言通过新的编译器翻译到虚拟机。
5)具有合适的沙箱(容器)环境,可以支持智能合约的运行。
d)单元判定:
如果1)-5)的测评内容至少有两项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.1.2 合约的开发语言
7.1.2.1 评价单元(L2-ECS-02)
该测评单元包括以下要求:
a)测评指标:
合约是否具有两种及以上合适的开发语言。
b)测评对象:
合约代码。
c)测评实施:
合约应该至少支持以下两种或多种编程语言:
1)Solidity。
2)Java。
3)Go。
4)C++。
5)Nodejs。
6)根据虚拟机自己设计的一款合适的开发语言。
d)单元判定:
如果1)-6)的测评内容至少有两项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.1.3 合约的通证标准
7.1.3.1 评价单元(L2-ECS-03)
该测评单元包括以下要求:
a)测评指标:
合约是否为代币发行提供一个特征与接口的共同标准。
b)测评对象:
合约扩展。
c)测评实施:
合约应该支持以下常见通证的任一种:
1)支付类通证。
2)实用类通证。
3)资产类通证。
d)单元判定:
如果1)-3)的测评内容项满足任意一项,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.2 合约可交互性测评要求
7.2.1 合约预言机
7.2.1.1 评价单元(L2-ECI-01)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种单向数字代理,可以查找和验证外部世界的数据的预言机。
b)测评对象:
合约扩展。
c)测评实施:
预言机应该包括以下关键功能:
1)从链外的数据源收集数据。
2)使用签名消息在链上传输数据。
3)将数据放入智能合约的存储空间,使数据可用。
4)接受来自Dapp的查询。
5)解析查询。
d)单元判定:
如果1)-5)的测评内容项都满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.2.2 合约交互接口
7.2.2.1 评价单元(L2-ECI-02)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适的与通用应用程序交互的接口。
b)测评对象:
合约扩展。
c)测评实施:
合约应该至少提供以下两种种或多种编程语言的接口(api):
1)Javasdk。
2)Pythonsdk。
3)Gosdk。
4)PHPsdk。
d)单元判定:
如果1)-4)的测评内容至少有两项满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.3 合约可终止性测评要求
7.3.1 合约状态机
7.3.1.1 评价单元(L2-ECT-01)
该测评单元包括以下要求:
a)测评指标:
合约是否具有一种合适的确保合约不同状态暴露不同功能的状态机。
b)测评对象:
合约存储。
c)测评实施:
合约的状态机应该具有以下几个功能:
1)支持合约的生命周期需要经历的所有阶段。
2)支持合约的所有阶段的所有方法。
3)阶段转换应当明确定义并对所有人公开。
4)状态与状态之间的更新反应时间不超过1秒。
d)单元判定:
如果1)-4)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.3.2 合约资源控制
7.3.2.1 评价单元(L2-ECT-02)
该测评单元包括以下要求:
a)测评指标:
合约是否具有有效的资源管理模式防止合约浪费运算资源和存储资源。
b)测评对象:
合约设计模式。
c)测评实施:
合约的资源控制应具有以下几个功能:
1)具有线性逻辑,资源只能且必须被使用一次。
2)能够对资源进行合理的调配和部署。
3)资源可以在有限时间内被释放。
4)合约必须在有限时间内完成运行。
d)单元判定:
如果1)-4)的测评内容全部满足,则符合本测评单元指标要求,否则不符合本测评单元指标要求。
7.3.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息安全技术 区块链合约安全技术测评标准湖南 信息 安全技术 区块 合约 测评 标准 湖南