基于区块链的软件知识产权认证系统的设计与实现
在全球互联网大潮下,软件运用到各行各业。软件传播成本低廉,创新成果容易被复制,使得软件知识产权侵权盗版现象严重,造成开发者财产损失。目前,国内外大多数提供软件知识产权证明和信息追溯服务的应用系统都依赖于中心机构,这些应用系统受传统信任模型的影响,恶意用户或为利益相互妥协的多方可能能够篡改数据。此外,在维权的过程中,第三方机构提供的服务给软件开发方带来了服务费用和时间成本。
针对如何保证软件知识产权在互联网上进行可靠的认证与存证,本文设计 并实现了基于区块链技术的软件知识产权认证系统。系统凭借区块链技术去中 心化、不可篡改、可追溯、多方维护的特性,以绑定时间戳的方式存储认证信 息,保证软件知识产权认证信息能够安全存证、多方共享。
本文基于Vue框架和Spring Boot框架实现前端Web平台和后端业务服务,维护系统良好扩展性,以应对快速扩展的业务需求。利用LDAP和Fabric CA实现联盟链节点的用户信息管理和身份认证。开发证书工具客户端,实现软件加密生成软件证书,保证软件制品不会泄露。采用基于Hyperledger Fabric和IPFS协议的区块链应用程序解决方案,解决区块链数据膨胀问题,搭建联盟链网络,实现软件知识产权全网公证,信息不可篡改。通过TiDB数据库缓存IPFS文件数据,降低数据查询耗时,加快服务响应速度。最欢采用Docker部署系统各个服务,Kubernetes集群管理容器的调度,扩展,负载均衡。
本系统已经在公司部署。公司测试节点结合阿里云和腾讯云部署的两个Fabric共识节点对系统进行测试。测试结果表明系统能够基于联盟链提供可靠的软件知识产权认证与存证服务。同时在100tps的交易吞吐量下,系统联盟链仍能维持良好的可用性。系统联盟链网络中,每个节点都拥有完整一致的账本,账本数据由所有参与方共同维护,不会被利益群体恶意篡改。最终,用户能够不依赖于第三方机构,在联盟链网络中对软件知识产权进行全网认证并在任意节点准确追溯知识产权信息。
关键词: 知识产权保护、软件产权认证、数字签名、联盟链、星际文件系统、链码
2 技术介绍
2.1 EEA和Fabric对比
目前比较成熟的联盟链方案包括Hyperledger Fabric和EEA(企业以太坊联 盟)。 EEA是在Hyperledger Fabric 之后推出的,力求引领基于以太坊的标准区块链设计,其技术基础是摩根大通开源的Quorum平台,在效率方面要高于Fabric。联盟链项目想要发展成为领域生态圈,扩展性设计是必须要考虑的问题。EEA基于以太坊,理论上节点扩展性是没有限制的,但是缺乏实际项目支撑,而Fabric的节点扩展性可以满足目前大多数落地项目的要求,同时可以 支持较多的客户端。
对比两个方案的共识机制,EEA支持Raft和IBFT,Hyperledger Fabric支持PBFT,如表1所示。PBFT 是基于消息传递的共识机制,和IBFT一样都是基于拜占庭容错的共识算法,BFT的变体。Raft强调可用性和最终一致性,效率非常高,但是在安全性方面较差,防欺诈通常只能事后检查。
表1 EEA和Fabric共识机制对比
在智能合约方面,Quorum的智能合约方案基本沿袭了以太坊公链思路。Hyperledger Fabric的chainwxxxcode-style设计是一个开创性的智能合约设计框架,同 时chainwxxxcode-style基于Docker容器执行,满足区块链和容器之间低耦合设计。
EEA是由三十几家创始成员组成,大多是银行机构。Quorum目前也是被应用在金融领域,在其他领域缺乏有效的案例,无法评估其稳定性。Hyperledger Fabric是由Linux基金会管理的开源项目,成熟且完整,有大量的国际化落地应用支撑,尽管在理论设计上,效率和扩展性都比不上EEA,但也能够满足本系统的应用场景和需求,其稳定性才是最为契合工程应用需求的特性。
结合上述的技术分析以及目前两个方案的发展状况,本系统基Hyperledger Fabric开源项目搭建联盟链。
2.2 工程技术选型
Vue生态:从狭义的角度来看,Vue是一套前端框架,但从广义的角度,它是一 套Web应用前端构建通用解决方案,包含自己的技术生态体系。本系统平台是以Vue作为前端的技术体系。
微服务:微服务架构实现了部署和更新服务的简易性,简化运维人员复杂的手工配置和处理工作。动态地发现和绑定服务提供系统模块之间的低耦合设计,提高系统可维护性。本系统采用的是基于Spring Boot结合Kubernetes实现的微服务架构方案。参考Spring Cloud组成架构,基于Spring Boot实现服务内部的对外接口,通过Docker容器部署运行。采用Kubernetes集群代Spring Cloud集成的服务注册中心,实现对应用实例的注册、管理、发现、访问。
Spring Boot:本系统使用Spring Boot作为后端框架。Spring Boot作为目前最常用的Java后端框架。其提供良好的REST风格接口设计,简化了配置,自带servlet容器可以独立运行,自动管理依赖包,支持各种主流工具,对开发人员屏蔽底砇实现。这些优化设计使得Sprint Boot框架能够开箱即用,减少开发人员在项目配置和管理上的时间成本,提高开发效率。
IPSF:本系统通过IPFS去中心化的P2P分布式文件存储网络,将大量超媒体文件存储在区块链外,根据文件内容生成唯一加密哈希值。区块链不再需要存储相关的业务数据库中的数据,转而存储业务数据在IPFS中对应的内容相关hash值,以此来解决区块链的存储能力问题。
TiDB: 本系统是通过XML文件的形式存储链外数据到IPFS网络中。考虑到 从IPFS读取文件并解析成数据对象的效率问题,系统采用TiDB作为缓存数据库,对用户所需的业务数据进行存储,方便用户再次查询。
LDAP: 本系统是采用联盟链方案而不是公有链,节点参与方是管理机构或者软件 开发企业。这些机构或公司内部已经使用LDAP实现了统一身份管理,为方便部署区块链节点,同时保护各节点的用户隐私,本文使用LDAP存储用户信息,
并结合Fabric CA完成用户在系统中的区块链访问权限认证。
本系统平台通过使用工业界成熟的框架和开源技术,包括Fabric、IPFS、Vue、Spring Boot、LDAP等,构建具有良好扩展性并能支持需求快速扩展的系统。包括前端交互平台、证书工具、基于微服务架构设计的籓端服务和依赖Fabric开源项目实现的底砇区块链服务。最终实现区块链技术在软件知识产权领域的实践应用。
3 工程实现与设计
3.1 需求分析
图1 系统用例图
根据对系统涉众的特性分析,得出系统相关用例,如图 1所示。系统涉众包括软件开发方,软件需求方和证书工具。软件开发方主要进行软件知识产权认证,产权查询,产权版本管理,区块链数据查询,软件证书生成,软件验证。软件需求方主要进行软件验证和区块链数据查询。证书工具子系统提供证书生成服务和软件验证服务。
3.2 总体架构
图 2 系统架构图
本系统是基于区块链的分布式应用,图 2描述了系统的整体架构。系统整体采用了P2P的网络拓扑结构,每个系统节点由前端、服务端、数据层三部分构成。前端采用Vue框架、Axios异步编程框架、Vuex中心化状态管理插件、ElementUI开源组件,实现系统的视图展示和用户交互。服务端采用Spring Boot实现业务服务,包括证书服务、产权认证服务、产权版本管理服务、链外 文件存储服务、区块链服务、用户管理服务。其中,证书服务由证书工具客户 端提供,支持离线服务。用户管理服务基于LDAP协议实现,由节点所属机构内部管理节点用户。数据层包括IPFS节点,Fabric节点,TiDB节点。IPFS节点用来管理链外数据,数据以文件的形式存储到IPFS网络。Fabric节点用来管理链上数据,由区块链账本、Fabric CA和chainwxxxcode-style链码组成。区块链账本用来保存所有的链上交易数据,所有节点账本数据相同。Fabric CA结合LDAP完成用户身份认证和区块链访问权限管理。chainwxxxcode-style是Fabric独特的智能合约实现方式,自动执行数据上链更新账本和获取账本授权数据。TiDB节点作为系统的缓存数据库,缓存IFPS中被访问的文件数据,提高系统数据查询响应速度。
3.3 证书生成模块
证书工具模块主要是实现软件与证书之间的转换,以证书来代替真实软件
在系统中传输。同时能通过证书来验证软件的真实性和未被篡改。
考虑到系统模块解耦,软件证书的生成和验证可以单独作为一个客户端工 具独立运行。如果以静态服务的形式集成到前台系统会造成项目文件过大,首 页加载速度低下。该服务会带来客户端浏览器压力。如果以后端服务的形式集 成,违背了对用户软件隐私保护的目的,同时对软件制品的类型就有了条件限 制,不利于维护平台的业务扩展性。作为一个独立的客户端工具使用,不仅对 系统屏蔽了软件制品的真实实体,保护了软件开发方的资产隐私,同时还可以 离线使用。
用户使用证书工具进入证书生成交互界面。输入用户名后,需要提供用户 的私钥文件,如果用户已经使用LDAP验证过,证书工具会调用LDAP服务获取用户私钥。证书中不需要包含公钥,软件认证服务可以使用文件中的用户信
息从LDAP获取。指定好软件制品文件路径和证书生成路径后,证书工具会获
取软件文件并对文件进行MD5加密,生成与内容对应的唯一hash 值。之后使用用户私钥对MD5散列值进行RSA加密生成用户数字签名。其作用是在软件产权认证信息上链时,通过用户公钥解密用户签名获得加密的hash,对比软件hash,验证软件证书是否被篡改,保证网络传输中信息没有被篡改。以XML 的格式保存用户签名、散列hash、时间戳、用户信息、加密算法,生成证书文件并写入到指定路径。
3.4 软件知识产权认证模块
软件产权认证即软件知识产权的确权,通过区块链保证软件产权信息的安 全性、不可篡改,所有授权节点的产权认证信息都会被区块链记录下来。区块 链每个节点都有完整的产权认证信息账本,可以随时追溯软件知识产权的所属 方,并且真实可信。软件产权认证模块的主要功能包括两个部分:(1)软件开发 方对自己开发的软件进行知识产权认证,上传软件证书,将软件产权认证信息 上链存证。(2)软件更新迭代时,软件开发方更新该软件的产权信息,上传新的 证书,将软件产权更新信息记录到链上。
由于系统基于区块链技术进行数据存储,区块链只允许“增和查”的服务, 不提供对账本已有数据进行更新。因此系统对于软件产权信息的更新设计是把 软件产权的新版本作为新的产权认证记录提交到链上,通过Leaf生成的标识来追溯软件版本的变更过程。
软件产权认证的具体流程分为五个步骤。首先,查看登陆用户在授权节点Fabric CA里的身份权限,是否生成证书允许用户访问区块链。接着,选择软件认证的服务类型,可以是认证新软件,可以是更新已有软件知识产权的版本。软件开发方填写产权认证所需的软件相关信息。如果软件开发方选择的是更新产权版本就会自动保留上一个版本的部分信息,包括软件名,软件描述等,用户可以更改这些信息。然后,软件开发方必须上传软件证书到IPFS文件存储网络,获取IPFS根据文件内容生成的hash 地址。开发方可以根据情况选择是否上传软件制品。完成上传提交认证表单。其次,后端认证服务从LDAP获取用户公钥,通过上传证书返回的hash值从IPFS里获取证书文件,解析证书文件得到用户私钥加密的数字签名。使用用户公钥对数字签名进行RSA解密,对比解密后的hash 值和证书里存的软件hash值是否一致。如果不一致反馈给用户出现了网络拦截,有人试图修改产权信息。最欢,将软件相关的业务信息以XML文件的形式存到IPFS网络,利用Leaf生成软件产权id,作为该软件的标识。将id、证书hash、用户信息、以及业务信息hash 通过智能合约存储到区块链上。
3.5 数据上链服务
数据上链过程模型如图3所示,在获取到CA权限后,1.Fabric Client加入channel通道,区块链服务发起交易提案。2. 交易提案发送给一系列背书节点(Endorser)。背书节点校验通过后,运行相应的智能合约模拟交易执行并对状态变化结果签名。返回背书结果3.当获得预定条件的背书结果后,区块链服务通过Fabric Client向排序节点广播交易。4.排序节点对未打包的交易进行排序生成区块,广播给记账节点。5. 记账节点检查交易签名,交易结构是否完整。校验交易是否符合背书策略,执行区块中的合法交易,更新账本状态。
图3 数据上链过程模型
3.6 软件知识产权版本管理模块
考虑到软件具有一定使用周期,需要迭代更新的特性,随着软件迭代,软 件知识产权也需要更新认证信息。对软件知识产权的管理包括:管理软件知识 产权所有版本变更,查看用户所有的软件产权,搜索特定的软件产权等服务。
软件知识产权版本更新:由于区块链不提供更新的功能,系统将新状态下的产权信息存储到区块链上来记录产权的变更。
软件产权信息查询:根据查询条件获取用户的已有软件知识产权最新版本信息。 产权历史版本追溯:通过区块链记录软件知识产权的所有历史版本产权信息,可以准确追溯到每个历史版本的变更信息。
3.7 区块链账本查询服务
图4 区块链账本查询服务流程图
如图4所示,从区块链账本获取软件知识产权数据要经过四个步骤。在从CA获取到身份证书后,区块链服务模块通过Fabric Client发起交易提案,经过背书节点验证并模拟执行智能合约返回结果。Fabric client从背书结果中直接获取到查询结果,区块链服务通过数据映射将账本数据转换为系统内部软件产权实体对象。然后版本管理服务以区块链数据中的hash值为id查询TiDB缓存,获取链外存储的产权实体业务信息,未查询到缓存则通过hash去IPFS获取文件并解析出软件实体业务属性,同时写入到TiDB作为缓存。最终将完整的软件知识产权信息返回。
4 总结与展望
本文实现了软件知识产权认证系统,解决软件知识产权认证过程中存在的存证、效率和信任问题。 涉及的技术有Hyperledger Fabric、IPFS星际文件系统、Vue 框架、Spring Boot框架等本系统目前已经部署在公司。结合阿里云和腾讯云上部署的共识节点,对系统进行功能测试与性能测试。测试结果表明利用区块链技术实现知识产权认证和存证服务的可行性,可用性。 本系统已经可以稳定上线运行,但联盟链节点数量较少。系统将进一步邀 请更多相关软件管理机构作为验证者节点参与到联盟链当中,并授权可信任的 软件开发方作为参与者加入到联盟链,提高联盟链的稳定性、安全性和区块链 账本记录在维权时的法律效力。
在业务方面,系统平台将进一步应用到软件众包领域,实现对软件产权分配和众包协同开发。目前软件产权的所属方是参与节点以公司为单位授权的用户,实际开发中,会出现越来越多众包协同开发的情况。结合相关众包技术,平台将进一步实现软件知识产权依据开发者贡献进行产权分配,依靠区块链技 术记录各个开发方的产权占比,通过智能合约实现产权变现后按自动分配,防 止众包开发者的权益受到侵害。同时平台业务广度将向软件产权交易变现方向延伸,促进认证的软件产权在平台实现快速变现,打造去中心化共同维护的一站式软件知识产权服务平台。
在性能方面,系统将使用更加高效的区块链共识算法,来降低节点数量增长后共识过程的延迟。同时优化系统存储策略和缓存策略,维持系统良好的可用性和可扩展性。
评论