2024区块链数据层安全隐私保护设计指南.docx
-
资源ID:1202667
资源大小:315.27KB
全文页数:61页
- 资源格式: DOCX
下载积分:5金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2024区块链数据层安全隐私保护设计指南.docx
区块链数据安全与隐私保护设计指南目录1区块链数据概念和范畴81.1 区块链发展趋势81.2 区块链数据概念101.3 区块链数据范畴102区块链数据安全与隐私需求112.1 区块链数据保护安全需求112.2 区块链数据隐私保护需求122.3 区块链数据安全与隐私保护的联系133区块链数据格式143.1 区块链业务数据173.1.1 区块链头数据183.1.2 区块链块数据193.1.3 特殊区块链数据结构203.2 区块链支撑数据223.2.1 业务支撑数据223.2.2 网络支撑数据223.2.3 存储支撑数据22324应用支撑数据233.3 区块链身份数据234数据层安全与隐私保护264.1 数据安全与隐私保护总体框架264.2 接入层设计指南264.3 处理层设计指南274.3.1 数据加密274.3.2 匿名签名294.3.3 多重签名314.3.4 安全多方计算314.3.5 可验证计算324.3.6 零知识证明34437不经意访问354.4 展示层设计指南384.4.1 数据发布384.4.2 安全审计技术395区块链数据层测试指南405.1 性能测试405.1.1 数据处理吞吐量测试405.1.2 数据处理响应时间测试405.2 算法安全性测试415.2.1 密码算法安全性测试415.2.2 哈希算法安全性测试425.3 协议一致性测试425.3.1 主动测试435.3.2 被动测试445.4 协议安全性测试445.4.1 随机扰动测试(fuzzingtesting)465.4.2 协议语法变异测试465.4.3 基于有限状态机模型的错误注入测试475.5 匿名性测试475.5.1 输入输出关联分析485.5.2 IP地址关联分析495.5.3 业务流分析496区块链数据安全应用场景(举例)506.1 变色龙哈希函数构建可编辑区块链506.1.1 可编辑区块链的现实需求506.1.2 可编辑区块链的实现框架506.1.3 基于变色龙哈希函数的可编辑区块链方案526.1.4 可编辑区块链应用技术546.2 基于区块链+大数据风控的城市金融综合服务平台576.2.1 城市金融综合服务平台576.2.2 城市金融综合服务平台功能架构586.2.3 区块链数据安全保护技术596.3 基于区块链的司法存证方案626.3.1 区块链存证技术背景62632e签宝区块链司法存证方案636.3.3 司法存证中的数据安全保护641区块链数据概念和范畴1.l区块链发展趋势随着互联网技术的发展,计算机、大数据、人工智能、物联网和信息安全等技术对人们的工作和生活产生了深远的影响。互联网的快速普及促进了社会进步和国家经济发展。区块链技术于2008年由中本聪在比特币中首次提出之后,这十多年间处于快速发展的阶段。全球调查显示,有39%的企业高管表示已将区块链投入生产当中。区块链的应用正在跨行业蔓延,远远超出了其最初的金融科技应用范围,技术、媒体、电信、生命科学、健康医疗和政务等更多领域正在扩展和丰富各自的区块链计划。区块链作为数字时代的前沿技术,近年来逐渐成为中央和地方政府关注的重点,被视作具有国家战略意义的新兴产业,在2019年的全国两会上也被频繁提及。早在2016年,中国政府就开始了对于区块链技术的探索。区块链与5G、物联网、人工智能都成为了未来科技发展的重中之重。2016年12月,在国务院印发的十三五国家信息化规划中,就提出要强化战略性前沿技术超前布局,首次提及区块链技术。2017-2018年,国务院发布的指导意见中,有6份文件提及要明确发展及利用区块链技术。2019年,中央各部委出台区块链相关政策更是紧锣密鼓,在2019年IO月24日,中共中央政治局第十八次集体学习时,习近平在主持学习时强调,把区块链作为核心技术自主创新的重要突破口,明确主攻方向,加大投入力度,着力攻克一批关键核心技术,加快推动区块链技术和产业创新发展。2020年2月5日中央一号文件更是将区块链放在了人工智能、第五代移动通信网络、智慧气象等前列,体现了区块链产业在国家战略中的地位,也意味着中央对区块链产业的重视。此外,我国在此领域的专利申请比重由2014年的33.33%上涨到2018年的82.1%o以全球视野来看,我国在区块链技术领域占据了领先优势。区块链作为分布式数据存储、点对点传输、共识机制、加密算法等技术的集成应用,近年来已成为联合国、国际货币基金组织等国际组织以及许多国家政府研窕讨论的热点,产业界也纷纷加大投入力度。目前,区块链的应用已延伸到物联网、智能制造、供应链管理、数字资产交易等多个领域,将为云计算、大数据、移动互联网等新一代信息技术的发展带来新的机遇,有能力引发新一轮的技术创新和产业变革。,可以用来解决现有业务的一些痛点,实现业务模式的创新。在一定程度目前,区块链逐渐成为“价值互联网”的重要基础措施,各国都开始积极拥抱区块链技术,开辟国际产业竞争的新赛道,抢占新一轮产业创新的制高点,以强化国际竞争力。区块链有着分布式、点对点传输、透明、可追踪、不可篡改、数据安全等特点上解决了价值传输过程中完整性、真实性、唯一性的问题。区块链技术将继续加快在产业场景中的广泛应用,与实体经济产业深度融合,形成一批“产业区块链”项目,将会成为区块链技术的应用趋势。同时,企业应用将成为区块链的主战场,联盟链/私有链将成为主流方向。例如:阿里将区块链应用到了电子票据、医疗信息存证、公积金存缴证明等生活场景上;腾讯将区块链的应用更侧重于金融方面,区块链电子发票、区块链游戏等;百度作为互联网三大巨头,也有百度区块链引擎BBE、超级链等区块链产品。相比大企业,实际上中小企业更需要应用区块链来进行产业升级转型,以此来降低资金、时间、人工等成本并更快的获得市场认可取得更大的收益。目前,网络安全问题越发突出,而随着区块链的快速发展,也会让区块链的数据安全问题成为人们关注的焦点。在区块链迅速发展的背景下,中国顺应全球化需求,紧跟国际步伐,积极推动国内区块链的相关领域研究、标准化制定以及产业化发展。与对比特币等数字货币监管日益趋严的背景相比,针对区块链技术的支持与鼓励已在全球范围内达成共识,国内区块链技术也将在未来数年内得到国家与地方的政策支持。在政策与市场的双层驱动下,区块链相关产业有望脱虚入实,区块链技术加速探索可能的应用场景。1.2 区块链数据概念区块链数据是指对区块链中的事件进行记录并可以识别的抽象符号。主要包括区块、事务、实体、合约、账户、配置等数据对象。不同类别的数据对象功能不相同。这些区块链数据可以通过数标识符、中文名称、英文名称、数据类型、数据长度、数据说明、数据备注等属性来描述,且具有一定的格式规范。1.3 区块链数据范畴区块链数据主要包含以下数据对象:1)区块数据:区块链网络的底层链式数据,用于把一段时间内发生的事务处理结果持久化为成块链式数据结构。通常区块由区块头和区块体构成。区块头包含相关控制信息,区块体包含具体事务数据。2)事务数据:区块链系统上承载的具体业务动作的数据。事务包含非交易类型事务和交易类型事务。3)实体数据:描述事务静态属性的数据。包含发起方地址、接收方地址、交易额、交易费用、存储数据及实体数据备注。4)合约数据:描述事务动态处理逻辑的数据。是一套以计算机代码形式定义的承诺,以及合约参与方可执行承诺的协议。5)账户数据:描述区块链事务的发起者和相关方的数据。区块中记录的事务信息均被关联到相关账户上,每个区块链服务客户拥有多个账户使用区块链服务。6)配置数据:区块链系统正常运行过程中所需要的配置信息。包含共识协议版本号,软件版本号和网络通信底层对等节点配置信息等。2区块链数据安全与隐私需求2.1 区块链数据保护安全需求数据安全是区块链的基本安全目标。区块链作为一种分布式存储系统,需要存储包括交易、用户信息、智能合约代码和执行中间状态等数据。这些数据至关重要,是区块链安全保护的首要实体,主要包含以下五点基本需求:D保密性:规定了不同用户对不同数据的访问控制权限,仅有权限的用户才可以对数据进行相应的操作,信息不能被未授权的用户知晓和使用。具体要求区块链设置相应的认证规则、访问控制和审计机制。认证规则规定了每个节点加入区块链的方式和有效的身份识别方式。访问控制规定了访问控制的技术方法和每个用户的访问权限。审计监管是指区块链能够提供有效的安全事件监测、追踪、分析等一整套监管方案。2)完整性:指区块链中的任何书籍不能被未经过授权的用户实施伪造、修改、删除等非法操作。具体指用户发布的交易信息不可伪造,经过全网共识的区块不可篡改伪造,智能合约的状态变量、中间结果和最终输出不可伪造。区块链系统中一切行为不可抵赖。完整性在交易底层需要数字签名,哈希函数等密码组件支持,在共识层面上,数据的完整性依赖于共识安全。3)可用性:指数据可以在任何时间被有权限的用户访问和使用。区块链中的可用性包含以下四方面:首先,可用性要求区块链具备在遭受攻击时仍然具备能够提供可靠服务的能力。其次,可用性要求区块链受到攻击导致部分功能受损的情况下,具备短时间内修复和重构的能力。另外,可用性要求区块链可以提供无差别服务。最后,可用性需要保证用户的访问请求可以在有限时间内得到区块链网络响应,即需要区块链具有高吞吐量,低响应时延,可以提供稳定服务。4)不可抵赖性:指区块链协议通信双方在信息交互过程中,确信参与者本身,以及参与者所提供的信息的真实同一性,即所有参与者都不可能否认或抵赖本人的真实身份,以及提供信息、执行操作的真实痕迹。5)可控性:指对流通在区块链系统中的信息传播及具体内容能够实现有效控制的特性,即区块链系统中的任何数据信息要在一定传输范围和存放空间内可控。2.2 区块链数据隐私保护需求在信息系统中,隐私是指数据拥有方不想透露的初始数据或者数据隐含的特征。而区块链技术为了维护分布式节点之间的数据同步实并达成全网共识,需要公开全网的交易信息,这样会给用户带来严重的隐私问题,因此,为了保护用户隐私以及降低隐私泄露的风险,必须对一些敏感数据进行相应的处理。在区块链中,隐私保护主要是针对用户身份信息和交易信息两部分内容,区块链的其余信息(如配置数据,合约数据等)对于隐私保护的需求相对而言并不高。因此,区块链的隐私保护主要可以划分为身份隐私保护和交易隐私保护。D身份隐私保护:身份隐私是指区块链地址关联于用户身份的隐私关系。区块链地址是用户在区块链系统汇总使用的昵称。无论用户身份信息是怎样的,用户都不需要第三方参与来创建和使用地址。而当用户使用区块链地址参与区块链服务时,个人的敏感信息存在被泄露的可能。因此,区块链身份隐私保护要求用户的身份信息、物理地址、IP地址与区块链上的用户公钥、地址等公开信息之间是不关联的。任何未授权节点仅仅依靠区块链上公开的数据无法获取有关用户身份的任何信息,也不能通过网络监听,流量分析等网络技术对用户的身份和交易进行追踪。2)交易隐私保护:交易隐私是指保存在区块链中的交易记录以及其背后隐藏的信息。在金融领域中,各种业务往来会产生大量的交易记录,这些交易记录是十分隐私且重要的数据,通过用户消费的交易记录很有可能推断出用户的收入水平、生活状态等隐私信息,这会导致用户个人的敏感信息泄露。因此,交易隐私保护要求交易本身的数据信息对非授权节点匿名。在比特币中特指交易金额,交易的发送方公钥,接受地址等其他交易信息。任何未授权节点无法通过有效的技术手段获取交易相关的知识,在一些需要高隐私保护强度的区块链,还要求割裂交易与交易之间的关联性,即非授权节点无法有效推断出两个交易是否具有前后连续性,是否属于同一个用户等关联关系。2.3 区块链数据安全与隐私保护的联系区块链数据安全,是指在区块链中承载信息的数据的安全,保护区块链中数据安全就是需要保护包含区块数据、事务数据、交易数据、账户数据等采取不同的数据保障措施保证数据的安全。而目前,区块链发展迅速,区块链中的数据量逐步变大,数据的交互需求增多,数据安全与数据的使用呈现相伴相生的,只要有数据使用,就存在数据安全问题,而数据的使用是由业务所驱动。区块链隐私保护是更关注某些特定的数据元素,如身份隐私,是指用户身份信息和区块链地址间的关联关系,用户在使用区块链地址参与区块链业务时可能会泄露敏感信息导致被用于推测区块链地址对应的真实身份;又如交易隐私,是指区块链中存储的交易记录等信息,通常交易记录也能反映出一些敏感知识,泄露用户的隐私。3区块链数据格式区块链发展至今,按照区块链的开放程度主要分为公有链,联盟链,私有链三类,也是目前大众普遍接受的一个分类。在不同类型的区块链系统中,区块链的数据结构在细节上会存在差异,但在整体功能上基本是一致的。一般情况下,区块链体系架构由自下而上的数据层、网络层、共识层、激励层、合约层和应用层六层组成。其中,网络层包括分布式组网机制、数据传播机制和数据验证机制等:共识层主要封装网络节点的各类共识机制算法,是区块链系统的核心技术;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和实例,如搭建在以太坊上的各类区块链应用就是部署在应用层;而数据层主要描述区块链的物理存在形式,包含了区块链上从创世区块起始的区块数据、链式结构以及区块上的随机数、时间戳、公钥、私钥数据等,是整个区块链技术中最底层的数据结构。本章将从区块链数据服务的实体和面向的对象的角度,将区块链数据分为区块链业务数据、区块链支撑数据、区块链身份数据三大类,并进一步阐述区块链体系架构中数据层与其他各层的关联关系。区块链业务数据、区块链支撑数据和区块链身份数据之间的关系视图如图3.1所示。其中,业务数据和身份数据主要为区块链链上数据,而区块链支撑数据主要为区块链链下数据,部分数据由区块链链上数据提供完整性保障。图3.1区块链业务数据、支撑数据与身份数据区块链业务数据按具体的业务服务目标主要分为账本数据、共识数据、合约数据、应用数据。(1)区块链账本数据负责区块链系统的信息存储,包括收集交易数据,生成数据区块,对本地数据进行合法性校验,以及将校验通过的区块加到链上,将上一个区块的HaSh签名嵌入到下一个区块中组成块链式数据结构,使数据完整性和真实性得到保障,这正是区块链系统防篡改、可追溯特性的来源。账本数据有两种数据记录方式:基于资产和基于账户。基于资产的模型中,首先以资产为核心进行建模,然后记录资产的所有权,即所有权是资产的一个字段。基于账户的模型中,建立账户作为资产和交易的对象,资产是账户下的一个字段。(2)区块链共识数据服务于协调保障全网各个节点数据记录的一致性,区块链系统中的数据由所有节点独立存储,在共识机制的协调下,共识层同步各节点的账本,从而实现节点选举、数据一致性验证和数据同步控制等功能。(3)区块链合约数据服务于将区块链系统的业务逻辑以代码的形式实现、编译并部署,完成既定规则的条件触发和自动执行,最大限度的减少人工干预,主要内容包括智能合约代码、智能合约账户地址和数字资产描述等。(4)区块链应用数据服务于最终呈现给用户的部分,主要作用是调用智能合约层的接口,适配区块链的各类应用场景,为用户提供各种服务和应用。区块链支撑数据主要服务于实现区块链系统中信息的记录、验证和传播的基础组件部分。(1)网络发现:区块链网络系统由众多分散节点通过网络连接构成,网络发现支撑数据使得每个节点通过网络发现协议发现邻居节点,并与邻居节点建立链路。(2)数据收发:节点通过网络通信协议连接到邻居节点后,数据收发支撑数据协助节点完成数据交换、区块广播,消息共识以及数据同步等。(3)消息通知:消息通知相关数据为区块链中不同组件之间以及不同节点之间提供消息通知服务。交易成功之后,客户通常需要跟踪交易执行期间的记录和获取交易执行的结果,消息通知模块中消息的生成、分发、存储和其他功能都与消息通知数据密切相关。(4)数据存储:根据数据类型和系统结构设计,区块链系统中的数据使用不同的数据存储模式,存储模式包括关系型数据库(比如MySQD和非关系型数据库(比如LevelDB)0通常,需要保存的数据包括公共数据(例如:交易数据、事务数据、状态数据等)和本地的私有数据等。(5)密码库:区块链的多个环节都涉及到密码学算法。密码库数据为上层组件提供基本的密码学算法支持,包括各种常用的编码算法、哈希算法、签名算法、隐私保护算法等等。与此同时,密码库数据还涉及诸如密钥的维护和存储等方面的功能。区块链身份数据主要服务于系统管理、权限管理和节点管理三大类功能。权限管理是区块链技术的关键部分,尤其对于数据访问有更多要求的许可链而言,通过权限管理,可以确保数据和函数调用只能由相应的操作员操作。通过将权限列表提交给账本层,可以实现分散权限控制,如实现可编辑的区块链功能。节点管理的核心是对节点标识的识别,通常由以下技术实现:(I)CA认证,集中式颁发CA证书给系统中的各个应用程序,身份和权限由这些证书进行认证和确认;(2)PKl认证,身份由基于PKl的公私密钥对确认;(3)第三方身份验证,身份由第三方提供的认证信息确认。由于各种区块链具有不同的应用场景,因此节点管理各有差异,但是区块链身份数据的存储、管理、维护和更新是区块链系统管理、权限管理和节点管理最根本和最重要的组成部分。3.1 区块链业务数据一般的区块链数据结构可以分为区块头数据和区块块数据两部分内容。图3.2描述了区块链块数据与区块头结构之间的关系。图3.2区块链块数据与区块头数据关系3.1.1 区块链头数据在一般的区块链系统中,区块头数据按照不同功能可以划分为以下三组数据,如表3.1所示。第一组是用于连接前面区块、索引父区块哈希值的数据。第二组主要是描述区块信息以及显示区块状态信息的重要数据,如版本、区块序号、时间戳、区块生成时间、额外附加数据和难度等数据。第三组是与默克尔树相关的数据,用于快速归纳校验区块中的所有交易信息。区块链的大部分功能都由区块头实现。功能数据分组描述第一组连接前面区块、索引父区块哈希值的数据第二组描述区块信息以及显示区块状态信息的重要数据第三组与默克尔树相关的数据,用于归纳校验区块中的所有交易信息表3.1区块头功能数据分组以比特币区块链系统和以太坊区块链系统为例,表3.2和表3.3分别描述了比特币区块头和以太坊区块头的数据结构。功能数据分组字段描述第一组父区块哈希值引用区块链中父区块的哈希值第二组版本版本号,用于跟踪软件/协议的更新时间戳该区块产生的近似时间难度目标该区块工作量证明算法的难度目标Nonce用于工作量证明算法的计数器第三组Merkle根该区块中交易的默克尔树根的哈希值表3.2比特币区块头数据结构功能数据分组字段描述第一组ParentHash父区块的哈希值UncleHash叔区块列表哈希值Coinbase矿工接受奖励的地址Difficulty区块难度目标Number区块号,从0号开始算起第二组GasLimit理论Gas上限GasUsed区块内所有交易执行产生的gas总和Nonce随机数,工作量证明算法的计数器Time区块创建的时间Bloom交易收据日志组成的布隆过滤器Extra区块的附加数据第三组Root状态树的根哈希值TxHash交易树的根哈希值ReceiptHash收据树的根哈希值表3.3以太坊区块头数据结构3.1.2 区块链块数据区块链块数据,也被称为区块链体数据,其中主要的部分是该区块打包的所有交易记录。这些所有的交易将通过Merkle树的Hash过程产生一个唯一Merkle根值记入区块头。对于一般的区块链系统而言,一个区块链块数据中的交易可以分为五类数据,详情参照表3.4o字段描述版本/类型交易的类属或参照的版本规则输入信息交易输入的数量,哈希值,序号,交易单价、数量等输出信息交易的接收方地址,交易费用总量等附加数据与区块链交易相关的额外数据其他数据不同类型区块链支持功能的数据表3.4区块链块数据内容以比特币系统为例,每笔交易的详细信息如表3.5所示。参照字段描述版本/类型版本比特币交易参照规则输入信息输入计数器包含交易的输入数量输出位置索引被花费的UTXO的索引号,第一个为()交易哈希值指向被花费的UTXo所在的交易的哈希序列号固定值OXFFFFFFFF解锁脚本相关解锁脚本大小,需要满足的条件等输出信息总量用“聪”表示的比特值锁定脚本相关锁定脚本大小,需要满足的条件等其他数据锁定时间一个区块号或UNIX时间戳表3.5比特币块数据内容在以太坊系统中,块数据交易详情如表3.6所示。参照字段描述版本/类型TyPe交易类型,创建合约还是调用合约输入信息Nonce交易次数Value需要交易的以太坊数量Gasprice交易的gas价格GasLimit执行交易可使用的最大gas量输出信息R_Address交易接收方地址Gas交易付出的gas总量附加数据Data交易的附加数据其他数据VRS交易签名Init合约创建时的初始化代码附加数据Data与交易相关的附加数据表3.6以太坊块数据内容3.1.3 特殊区块链数据结构上述描述的比特币区块链系统和以太坊区块系统,这类公有链的区块结构一般分为区块头数据和区块块数据,而在联盟链的Fabric区块链系统中,区块的数据结构分为三部分,区块头(Header),区块数据(Data)和与当前区块相关的元数据(MetaData)。由于在联盟链中,各项交易的需求和面向的对象与私有链不同,因此FabHC区块链在数据结构上会存在差异。Fabric区块数据结构如表3.7o区块结构字段描述HeaderNumber区块编号PreviousHash上一个区块头的哈希值DalaHash上一个区块数据的哈希值DataType交易类型Version交易版本Timestamp时间戳Channel交易的通道TxId交易编号ChaincodeInfb链码信息ReadSet读取集WriteSet写入集Endorser_nodelnfo背书节点信息MetaDataCreator消息创建者身份Signature签名Configuration配置TxFlag交易标记表3.7FabriC区块结构内容FabriC区块头包含三个字段,当前区块号(number)、前一个区块头哈希(previous.hash)和当前区块的数据哈希(data_hash),其中daia_hash字段并非当前区块的哈希值,而只是当前区块数据体的哈希值。Fabric区块块数据Data包含展示交易信息的数据结构Envelope数据,此数据类型主要用于存储区块中的交易信息,交易信息主要包括两个字段,交易发送者的签名(signature)以及数据载荷(payload)oFabric区块元数据部分包含与当前区块相关的元数据内容,用于描述Data的相关信息,包含排序节点的MspId(Fabric区块链以发放证书的方式进行节点身份管理,Msp为成员管理服务提供商),最新的配置块信息,消息创建者的证书、公钥以及签名值。3.2 区块链支撑数据3.2.1 业务支撑数据支撑区块链协议执行的数据内容,如交易缓存池、状态前缀树、转账前缀树、回执前缀树等。业务支撑数据遭受安全威胁时,将破坏区块链协议的正常执行,降低区块链运行效率。3.2.2 网络支撑数据支撑区块链网络发现与节点连接的数据内容,如目录服务器地址,可连通节点地址和候选节点地址。例如比特币区块链中的tri表数据包和new表数据包,以太坊区块链中的网络状态前缀树。网络支撑数据遭受安全威胁时,将破坏区块链节点的连通能力,导致可能遭受隔离攻击和延时攻击等攻击。3.2.3 存储支撑数据支撑区块链临时信息存储和永久信息存储的组件数据内容,如以太坊保存着三种树,分别为状态树、交易树和收据树。状态数据存储:整个以太坊系统中只有一棵状态树,记录整个以太坊系统的所有账户状态。每个区块保存着一棵交易树,记录该区块的交易情况,一棵收据树用来记录该区块的交易收据。状态树采用Merkel-Patrica(MPT)W,而交易树和状态树采用MerkeI树。底层数据存储:以太坊中共有三个LevelDB数据库,分别是BIOCkDB、StateDB和ExtrasDBoBk)CkDB保存了块的主体内容,包括块头和交易;StateDB保存了账户的状态数据;ExtrasDB保存了收据信息和其他辅助信息。存储支撑数据遭受安全威胁时,将破坏所存储信息的真实性和完整性,降低各类交易验证和身份验证速度。3.2.4 应用支撑数据支撑区块链各类具体应用服务的组件,如可用的APl接口,合约调用指向的地址等。应用支撑数据遭受安全威胁时,将影响区块链应用服务的效果,甚至导致数字资产流失等后果。3.3 区块链身份数据在现实世界或者网络世界要证明自己身份需要提供政府出具的身份证或者是个人的社交账号,而在区块链中,要证明自己的身份需要依靠加密算法、数字签名和数字证书所形成的一个体系来证明身份。区块链的身份数据就是指在区块链中这类带有身份标识属性的数据。区块链身份的证明让区块链满足了公信力的需求,信任不是由政府或者第三方组织等掌控,而是建立在区块链上。区块链对身份数据的管理不是放在中央数据库中,而是利用用户的设备来存储和加密数据,并使用加密来连接多个虚拟网络中的数据块。这确保每个信息块存储所有记录的完整并确保副本准确,这些记录被更改或误用会被网络发现。区块链身份数据往往是跟用户的信息数据和交易转账等直接关联,区块链身份数据的一个体现是交易额存储的地址,就比如在比特币系统中的比特币地址;以太坊中的合约账户等提供了区块链交易额存储的地址。比特币地址是由公钥经过SHA-256哈希运算后,再通过RIPEMD-160哈希运算得到的,定长为160bit的地址。用户通过锁定脚本的方式将比特币锁定到某个比特币地址,持有该地址私钥的用户则相当于拥有拿到这些比特币的钥匙。比特币地址就相当于用户的钱包。通过图3.3来举例描述比特币地址的身份属性。用户A需要向用户B转账50BTC,其做法是将50BTC放入区块链并用锁定脚本将这笔钱锁定到用户B的比特币地址。用户B通过提供签名和公钥来获取和使用该比特币地址里面的比特币。用户R图33比特币地址示例同样,在以太坊智能合约里,先要构建数字身份认证服务,如以生物学信息或密码学标识的特有特征信息去构建的数字身份概念。有了数字身份才可以构建合约主体。智能合约里需要去除掉现实世界中如银行、房管所一类的中心化的登记机构,设法让合约里的权益和资产数字化。有了数字身份和资产数字化后,就可以构建两者的映射关系,也就可以使用数字身份去绑定数字化的资产,然后才可以使用代码的形式来执行。以太坊合约账户是在在以太坊区块链中,部署智能合约时生成由代码控制的账户。合约账户可以通过设置多重签名来体现合约账户的身份属性,如图3.4。合约账户要求一笔转账需要转账人用户A与用户C的签名,当用户A需要向用户B转账2()个ETH时,合约会通知用户C签名,批准签名后,用户B则可以得到这20个ETH。图3.4以太坊合约账户示例区块账户数据主要包括由PKl体系为账户生成的账户公私钥信息,账户拥有的资产说明以及数字证书等。区块链一系列交易的进行离不开账户,各个账户通过公私钥机制以及数字签名方式完成交易并通告全网。保证账户数据信息安全是区块链应用需要格外关注的。4数据层安全与隐私保护4.1 数据安全与隐私保护总体框架区块链隐私保护架构可以根据隐私保护的范畴分为区块链内容隐私保护、区块链身份隐私保护和区块链行为隐私保护。1)区块链内容隐私保护:个人、机构等实体不愿意被外部世界知晓的信息,包括敏感数据以及数据所表征的特性。2)区块链身份隐私保护:可识别的个人数据,以及可以直接定位到具体自然人的信息都属于隐私保护的范畴。3)区块链行为隐私保护:不会直接泄露用户隐私,但可以据此间接推断出个人行为轨迹、趋势或行为特征的信息内容也在区块链隐私保护架构之下。4.2 接入层设计指南接入层需要确保终端在接入区块链平台时经过严格的标识和认证,防止伪造和假冒,实现接入安全需要具有可靠的密钥管理机制,从而对实现并支持用户、节点接入过程中安全传输的能力,并能够阻断异常的接入;需考虑:1) 身份认证:需考虑应用用户的身份认证,防止身份伪造,确保用户仅访问其授权的资源;2) 访问控制:需考虑用户与系统资源的访问策略,严格限制用户访问的系统权限;3) WEB应用攻击防护:需考虑WEB应用可能面临的SQL注入、跨站脚本、信息泄露、恶意代码等攻击行为;4) APP安全:需综合考虑APP面临的移动安全问题,包括不安全传输、信息泄露、反编译等攻击行为。4.3 处理层设计指南4.3.1 数据加密要保证在公开信道上传输或在公共可访问区域内存储的消息不泄露给非目标用户,通常应采用数据加密技术。简单来说,数据加密技术是将要保护的消息,又称为明文,变换为非目标用户无法理解的形式,又称为密文。这一过程称为加密,加密过程中需要使用加密密钥。密文可由拥有解密密钥的目标用户还原为明文,非目标用户因为没有解密密钥,所以无法获得明文,从而保障了消息的机密性。根据加密密钥与解密密钥是否相同,数据加密算法可分为对称加密和非对称加密两类。对称加密中的两种密钥相同,而非对称加密密钥中的两种密钥不同,并且很难通过加密密钥计算出解密密钥。一般来说,对称加密的速度较快,适合加密大量数据。但是对称加密面临着密钥共享的困难,即消息的收发双方如何安全地共享加密/解密密钥。这一困难在互联网环境中尤为突出,用户无法在互联网的开放环境中直接秘密地传输加密/解密密钥。相对的,非对称加密速度较慢,但是不需要担心密钥共享的问题,因此通常用于在互联网环境中传输对称加密的密钥。1)对称加密a)对称加密算法流程:进行对称加密时,首先要生成密钥。加密时,加密方使用密钥对明文加密,得到密文;解密时,解密方使用密钥对密文解密,得到明文。b)分组模式:一般来说,对称加密使用的加密算法只能加密一定长度(称为分组大小)的明文(称为分组)。实际情况中,明文长度往往远大于分组大小。需要使用分组模式加密多个分组。c)CTR模式:加密过程:CTR模式为每个分组生成相应的掩码,每个分组再与相应的掩码进行异或操作,实现将明文加密成密文。生成掩码时,首先生成随机初始化向量ctr,对(ctr+i)加密的结果作为第i个分组的掩码,以此实现对所有分组加密。解密过程:解密方首先计算每个分组相应的掩码,再将掩码与密文异或即可得到明文。d) CBC模式:加密过程:CBC模式加密将明文从前向后加密。加密第i(i>1)个明文分组时,首先将第i个明文分组与第M个明文分组的加密密文异或,再使用加密算法将异或结果加密,作为密文。加密第1个明文分组时,首先将其与一个随机生成的初始化向量异或,再使用加密算法将异或结果加密,作为密文。解密过程:CBC模式将分组从后向前依次解密,解密第i(i>1)个密文分组时,首先使用密钥将其解密,再将解密结果与第M个密文分组异或,即可得到明文。解密第1个密文分组时,首先使用密钥将其解密,再将解密结果与初始化向量异或,即可得到第1个明文分组。e) OFB模式:加密过程:OFB模式与CTR模式类似。首先为每个分组生成相应的掩码,每个分组再与相应的掩码进行异或操作,实现将明文加密成密文。生成掩码时,首先生成随机初始化向量,以递归方式对其加密,递归加密i次作为第i个分组的掩码。以此实现对所有分组加密。解密过程:如加密过程,依次求出各分组对应的掩码,将掩码与对应密文异或,即可得到对应明文。2)非对称加密非对称加密中,加密密钥与解密密钥不同。加密密钥称为公钥,是公开的。解密密钥称为私钥,一般来说只有目标用户持有。这一特性使得通信双方不用秘密共享密钥。消息发送方可以使用公开可见的公钥加密明文。加密得到的密文只有持有私钥的接收方可以解密。进行非对称加密时,首先生成加密、解密所需密钥,即公钥Pk和私钥sk:加密时,加密方使用公钥Pk将明文加密成密文:解密时,解密方使用私钥Sk将密文解密成明文。4.3.2 匿名签名在隐私敏感安全应用中,用户既希望通过签名操作验证身份的合法性,使用签名操作的可追溯和不可抵赖功能,同时又希望在签名及验证过程中不泄露身份信息,让自己的身份既真实又不可公开。匿名签名机制是实现网络环境下隐私保护的主要技术途径。群签名和环签名可以给数字签名增加匿名性。在群签名和环签名中,成员可以以匿名的方式代表整个群体对消息签名,这个签名是可公开验证的。D群签名在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,且可以只用单个群公钥来验证。当签名存在争议时,群管理者可以确定签名者的身份。一个好的群签名方案应满足以下的安全性要求:a)匿名性:给定一个群签名后,对除了唯一的群管理员以外的任何人来说,确定签名者的身份是不可行的,至少在计算上是困难的。b)不关联性:在不打开签名的情况下,确定两个不同的签名是否为同一个群成员所签的是不可行的,至少在计算上是困难的。c)不可伪造性:只有群成员才能产生有效的群签名。其他任何人包括群管理员也不能伪造一个合法的签名。d)可跟踪性:群管理员在发生纠纷的情况下可以打开一个签名来确定出签名者的身份,而且任何人都不能阻止一个合法签名的打开。e)防陷害性:不论是群成员,还是管理员,都不能代表其他群成员对消息签名。f)抵抗联合攻击:即使一些群成员串通在一起也不能产生一个合法的不能被跟踪的群签名。群签名通常包含以下过程:在系统初始化时,生成群公钥和群私钥;当一个用户加入系统时,用户和群管理员使用规定的交互式协议,产生群员的私钥和成员证书,并使群管理员得到群成员的私有密钥;当群成员签名时,群成员使用自己的私钥对消息进行签名;验证签名时,验证者使用群公钥验证签名是否由群成员所生成;在需要时,群管理员可以根据签名和群私钥确定签名者的合法身份。2)环签名环签名和群签名相似,但相比于群签名,环签名中只有环成员,没有管理者。好的环签名方案应满足以下安全性要求:a)正确性:如果按照正确的签名步骤对消息进行签名,并且在传播过程中签名没被篡改,那么环签名满足签名验证等式。b)无条件匿名性:攻击者即使非法获取了所有可能签名