一种基于分布式身份的软件授权系统及方法
技术领域
本发明属于软件授权技术领域,尤其涉及一种基于分布式身份的软件授权系统及方法。
背景技术
目前,市场流行的软件授权发证方式通常是通过使用设备出厂ID的哈希值、版本号、MAC值等物理属性来绑定证书,而在软件虚拟化场景中通常不存在可以用来绑定的设备物理属性,物理设备频繁切换的场景中则面临着授权证书频频失效和频繁重申请的问题,因此该方法通常不适用于软件虚拟化场景和物理设备频繁切换场景。如何寻找设备物理属性的替代属性成为困难问题。理所当然的思路是将软件授权与设备的物理属性解耦,从而指向其他的标识符标准,以此避免虚拟机任务迁移和复制引发的授权失效问题,更好地适应软硬件虚拟化和应用虚拟化移动性等特性。但是软件属性通常容易被复制,如何找到一个适合应用迁移的非物理属性的绑定标准,又能抵抗授权证书的复制和共谋,是当前面临的主要挑战。
通过上述分析,现有技术存在的问题及缺陷为:现有软件授权发证方式通常是通过使用设备出厂ID的哈希值、版本号、MAC值等物理属性来绑定证书,而在软件虚拟化场景中通常不存在可以用来绑定的设备物理属性,物理设备频繁切换的场景中则面临着授权证书频频失效和频繁重申请的问题,因此该方法通常不适用于软件虚拟化场景和物理设备频繁切换场景。而软件属性通常可复制,进一步导致了软件虚拟化场景“无属性可绑”的尴尬境地。
解决以上问题及缺陷的难度为:如何找到一个替代的物理属性来绑定证书,或者使非物理属性能防复制和防转让是当前面临的主要挑战。
解决以上问题及缺陷的意义为:在无物理属性可用或无法使用物理属性的情况下,寻求基于软件属性颁发授权证书的替代产品,设计和实现一种基于分布式身份的软件授权系统及方法,解决现有软件属性的弊端(可复制、可转让性)以实现更廉价、更灵活、更便捷和细粒度的软件授权。
发明内容
针对现有技术存在的问题,本发明提供了一种基于分布式身份的软件授权系统及方法,尤其涉及一种基于区块链的基于分布式身份的软件授权系统及方法。
本发明是这样实现的,一种基于分布式身份的软件授权系统,所述基于分布式身份的软件授权系统包括:软件授权模块、数据存证模块、授权验证模块和授权撤销模块;
软件授权模块,包括用户或设备身份标识符创建、授权证书签发两个子模块,此外系统支持二次授权机制和临时授权机制;
数据存证模块,授权方为所颁发的授权证书生成哈希摘要并写入签名,以完成存证创建并存至区块链上;
授权验证模块,系统分别支持通过链上和链下两种认证方式;其中链下模式可以更好与已有业务系统结合,支持应用快速上链;
授权撤销模块,当授权证书更新或到期时,则需要进行凭证撤销;当授权证书更新时,软件授权方调用授权证书控制合约,更改原凭证的撤销属性,然后调用存证智能合约,更新凭证Hash值、签名值及更新时间等属性,对应的存证并以事件的方式记录上链,记录新块高。
进一步,所述基于分布式身份的软件授权系统,还包括:
在授权开始时,软件使用方可以实时向软件授权方进行身份凭证的申请,颁发授权证书时,系统对凭证的存证存储至区块链,软件验证模块对所提交的身份凭证进行链上查验以确定凭证的真实性、有效性和完整性。
进一步,所述基于分布式身份的软件授权系统角色包括:软件使用方、软件授权方和软件验证系统;其中,所述软件授权方负责颁发授权证书,可以是软件开发者或者其他开发者授权的实体;所述软件使用方负责申请授权证书,是购买授权证书的主体;所述软件验证系统负责验证授权证书。
进一步,所述软件授权模块,包括:
身份标识符创建:当软件使用方申请授权证书时,系统为使用方创建用户或设备身份标识符并设置相应的属性参数,该标识符是全局唯一的。软件授权通常需要绑定用户的唯一身份标识符或唯一属性,并通过身份标识符注册合约将身份文档信息记录于链上。
授权证书签发:获得身份标识符之后,软件使用方提供其身份标识符及其其他唯一属性的签名,授权方核验后,为授权证书添加凭证授权时间、软件相关属性、使用方自身属性和授权方的签名信息,完成授权证书的创建和签发。
二次授权机制:针对公司打包购买软件场景,软件授权方作为主授权中心,可以为购买方颁发主证书,并授予主证书和该购买方二次授权的权利,提供二次授权机构的身份标识符、主证书链接摘要、授权有效期和最大发证数量属性。二次授权证书必须采取链上验证的模式,同时验证主证书摘要、二次授权证书签发机构、证书有效期和该机构已签发数量。
临时授权机制:购买公司可以作为子授权中心为外包人员,即软件使用方颁发临时授权证书,因此系统必须具备证书撤销功能,撤销模块将在后文详细论述。临时授权证书一般以天/周为有效期单位,并在凭证中添加临时凭证标志,且占用最大发证数量指标,但是一旦临时授权证书被销毁或撤销,则在子授权机构有效期内可以重新颁发授权凭证。
进一步,所述授权验证模块,包括:
链下模式中,系统只需提供验证授权证书的签名、有效期、是否撤销等条目来判断授权证书的真伪。适用于安全需求较低的场景或者离线/应急场景。
链上模式中,通过智能合约可自动化完成凭证使用的全流程管理。输入软件授权证书,系统通过验证授权证书的签名、有效期、是否撤销等条目,来判断授权证书的真伪,然后将凭证反向构造存证,向区块链查询和比较存证来证明所持凭证的一致性。适用于安全需求较高的场景。
进一步,所述授权撤销模块,包括:
授权撤销基于辅链的撤销方法,撤销具体包括(临时)证书撤销、证书更新、证书过期等情况。如果(临时)证书撤销,则以软件授权方为单位,将撤销凭证上辅链。当授权证书更新时,软件授权方调用授权证书控制合约,更改原凭证的撤销属性,然后调用存证智能合约,更新证书的哈希存证、签名值及更新时间等属性,对应的存证并以事件的方式记录上链,记录新块高。如果授权证书到期,则无需上链。
进一步,所述基于分布式身份的软件授权系统的系统目标,包括:
隐私保护机制:系统支持软件使用方以隐私保护的方式提供自身属性,基于承诺和零知识证明技术,使用方可以向验证方证明并使其相信自己知道或拥有某一消息而无需揭露该消息。具体实施包括:软件使用方将其自身的属性转换成离散模型值,生成密码承诺声明,并将其身份标识符和密码承诺的签名发送给软件授权方;软件授权方基于零知识证明的技术验证承诺的真实性,并颁发相应的授权证书。
不可转让机制:系统需要保证每个软件使用方只对应一个唯一的身份标识符,每个注册身份标识符用户需要通过KYC验证是一项验证用户身份的流程,如果存在已注册的身份标识符,则系统不再为用户注册新的身份标识符。该设置使得用户身份标识具有抗女巫攻击的能力。
同理,对于使用方的唯一独特属性,系统也维护一张目标用户独特属性的秘密共享表,在颁发软件授权证书前,需要先检查表中这些属性是否存在已发布的凭证。软件授权系统需要确保一个唯一的特殊属性只颁发一个唯一对应的凭证,从而实现抗女巫攻击。使系统具有抗女巫攻击的能力能够确保身份标识符和凭证的唯一性和不可转让性。只有确认使用方的声明属性是唯一的,系统才会向他发布新的抗女巫攻击的证书或者主证书。
本发明的另一目的在于提供一种应用所述的基于分布式身份的软件授权系统的分布式软件授权方法,所述分布式软件授权方法包括以下步骤:
步骤一,在授权开始时,软件使用方调用IdService服务的createId()接口,并调用身份注册智能合约,生成身份标识符ID、公私钥等属性并注册到链上,其中ID及其公钥、认证方式等属性文档以存证的形式记录在Fisco Bcos区块链的区块中。接着软件使用方需要提供和绑定其电子身份证eID或KYC认证属性并记录在案,这些属性通过零知识证明算法存储于链上(或第三方可信机构中),且任何其他人均可验证;注册完毕后,使用方提供身份标识符ID和可验证属性申请授权证书,然后软件授权系统调用CredentialService服务中的CreateCredential()接口,选择适合的证书模板,添加证书主体、授权时间、软件相关属性、使用方相关属性(如eID属性)和授权方的签名信息,完成授权证书的创建和签发。
步骤二,颁发授权证书时,授权方调用EvidenceService服务的CreateEvidence()接口,将所生成的证书基于哈希算法生成一份哈希存证;然后调用存证智能合约将所生成的存证存至区块链上。
步骤三,授权验证中,链下认证方式时,系统调用CredentialService服务中的VerifyCredential()接口,验证证书的存在性和合法性,比较证书签名的合法性、签名主体的权威性、证书主体的一致性、证书是否在有效期内、是否被撤销等。链上方式认证时,除了检验进行链下检验,还需调用EvidenceService服务的CreateEvidence()接口将使用方所提供的授权证书反向构造存证,并调用VerifyEvidence()接口,和链上对比,以验证授权证书是否被篡改。
步骤四,当授权证书撤销或更新时,软件授权方调用CredentialService服务中的RevokeCredential()接口,并调用凭证撤销控制合约将撤销证书上辅链;如果授权证书更新,则在辅链撤销的同时,调用授权证书控制合约,更改原凭证的版本属性和撤销属性,然后调用存证智能合约,更新凭证Hash值、签名值及更新时间等属性,对应的存证并以事件的方式记录上主链,记录新块高。
本发明的另一目的在于提供一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以应用所述的基于分布式身份的软件授权系统。
本发明的另一目的在于提供一种计算机可读存储介质,储存有指令,当所述指令在计算机上运行时,使得计算机应用所述的基于分布式身份的软件授权系统。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的基于分布式身份的软件授权系统。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的基于区块链的基于分布式身份的软件授权系统,致力于以一种低成本的方式,提升软件授权的便利性和安全性。本发明旨在提供一种低廉、安全、高效的基于区块链的基于分布式身份的软件授权系统,以适用于软件虚拟化场景和物理空间频繁切换的场景。
针对软件虚拟化场景和物理空间频繁切换场景,本发明设计了一个具有标识符唯一、细粒度授权、凭证不可共享不可转让的基于分布式身份的软件授权系统,同时兼容原始的物理属性链接解决方案,可解决由于设备转换导致的授权失效、临时授权、防止授权共享等问题。本发明的主要技术模块包括:软件授权模块、数据存证模块、授权验证模块、授权撤销模块。在授权开始时,软件使用方可以实时向软件授权方进行身份凭证的申请,颁发授权证书时,系统对凭证的存证存储至区块链,软件验证模块对所提交的身份凭证进行链上查验以确定凭证的真实性、有效性和完整性。
针对虚拟环境下的软件授权的动态性、细粒度属性等需求,本发明设计将软件授权证书链接设备软件唯一标识符属性,同时兼容软件授权与设备的物理属性绑定场景,设计了一个具有标识符唯一、细粒度授权、凭证不可共享不可转让的基于分布式身份的软件授权系统,同时支持临时授权、二次授权等操作。本发明通过提高身份创建的代价、属性-凭证唯一性策略,以解决非授权用户之间非法共享授权证书等问题,提供了一种更低成本、全新、安全、高效的基于分布式身份的软件授权系统。同时,该系统的认证方式便捷、认证成本低廉。另外,相较于现有技术,本发明还具有以下积极效果:
技术层面:一是该系统是基于区块链的去中心化的软件授权系统,摆脱了授权证书对机器物理属性的依赖,尤其适合适用于虚拟环境下的软件授权,完美解决了由于物理空间频繁切换而导致的授权证书失效问题;二是人、机、物均可拥有全局唯一的身份标识符,可以打造出兼容原始物理属性的授权证书;三是支持隐私授权证书,且授权证书秘密而可验证,任何第三方无法通过软件授权证书推测出软件使用方的真实属性信息;四是具有很强的可移植性和广泛适用性,支持多授权中心或分层发证,不完全依赖于特定的机构或企业;五是具有可撤销能力,对于作废或过期软件授权证书可实现链上撤销和查询。
流程层面:一是极大降低了软件授权管理的成本,允许在不同开发商之间复用和推广,只需在系统中展示软件凭证即可;二是极大提高了软件授权证书验证的便捷度,无需所有软件厂商专门开发软件授权模块,无需任何专有设备,随时随地可向软件授权方申请授权证书并由软件验证系统进行准入验证;三是极大简化了软件授权证书的申请流程,每个实体尽可申请基于自身唯一的身份属性的软件授权证书。
效果层面:基于区块链的软件授权系统可为软件使用方提供唯一的身份标识符,在此基础上颁发授权证书,尤其适用于虚拟环境下的软件授权,完美解决了由于物理空间频繁切换而导致的授权证书失效问题;此外,授权证书可在线申请和在线使用,方便快捷、无需特殊终端;对于软件授权方来说,有效降低了软件授权管理的基础设施成本,拓宽了授权证书的使用范围,使所发行之凭证不可伪造、不可复制、不可转让;对于授权验证系统来讲,接入区块链基础设施的成本更低,软件授权验证方便,保证了授权证书的权威性和不可篡改性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的分布式软件授权方法流程图。
图2是本发明实施例提供的基于分布式身份的软件授权系统模块流程图。
图3是本发明实施例提供的软件授权模块示意图。
图4是本发明实施例提供的授权验证模块示意图。
图5是本发明实施例提供的授权撤销模块示意图。
图6是本发明实施例提供的主授权中心和子授权中心的关系示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种基于分布式身份的软件授权系统及方法,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的分布式软件授权方法包括以下步骤:
S101,在授权开始时,软件使用方实时向软件授权方进行身份凭证申请,通过软件授权模块创建括用户或设备身份标识符,并进行授权证书签发;
S102,颁发授权证书时,通过数据存证模块利用授权方为所颁发的授权证书生成哈希摘要并写入签名,以完成存证创建并存至区块链上;
S103,授权验证中,系统通过授权验证模块利用链上和链下两种认证方式对所提交的身份凭证进行查验,以确定凭证的真实性、有效性和完整性;
S104,当授权证书更新时,软件授权方通过授权撤销模块调用授权证书控制合约,更改原凭证的撤销属性,然后调用存证智能合约,更新凭证Hash值、签名值及更新时间等属性,对应的存证并以事件的方式记录上链,记录新块高。
如图2所示,本发明实施例提供的基于分布式身份的软件授权系统包括:软件授权模块、数据存证模块、授权验证模块和授权撤销模块。
软件授权模块,包括用户或设备身份标识符创建、授权证书签发两个子模块,此外系统支持二次授权机制和临时授权机制;
数据存证模块,授权方为所颁发的授权证书生成哈希摘要并写入签名,以完成存证创建并存至区块链上;
授权验证模块,系统分别支持通过链上和链下两种认证方式;其中链下模式可以更好与已有业务系统结合,支持应用快速上链;
授权撤销模块,当授权证书更新或到期时,则需要进行凭证撤销;当授权证书更新时,软件授权方调用授权证书控制合约,更改原凭证的撤销属性,然后调用存证智能合约,更新凭证Hash值、签名值及更新时间等属性,对应的存证并以事件的方式记录上链,记录新块高。
下面结合实施例对本发明的技术方案作进一步描述。
实施例1
如图2所示,本发明提供了一种基于区块链的基于分布式身份的软件授权系统,该系统包括软件授权模块、数据存证模块、授权验证模块、授权撤销模块。在授权开始时,软件使用方可以实时向软件授权方进行身份凭证的申请,颁发授权证书时,系统对凭证的存证存储至区块链,软件验证模块对所提交的身份凭证进行链上查验以确定凭证的真实性、有效性和完整性。
在该技术方案中,系统角色包括软件使用方、软件授权方和软件验证系统。其中软件授权方负责颁发授权证书,可以是软件开发者或者其他开发者授权的实体;软件使用方负责申请授权证书,是购买授权证书的主体;软件验证系统负责验证授权证书。
(1)软件授权模块
如图3所示,软件授权模块包括用户(设备)身份标识符创建、授权证书签发两个子模块,此外系统支持二次授权机制和临时授权机制。
身份标识符创建:当软件使用方申请授权证书时,系统为使用方创建用户(设备)身份标识符并设置相应的属性参数,该标识符是全局唯一的。软件授权通常需要绑定用户的唯一身份标识符或唯一属性,并通过身份标识符注册合约将身份文档信息记录于链上。
授权证书签发:获得身份标识符之后,软件使用方提供其身份标识符及其其他唯一属性的签名,授权方核验后,为授权证书添加凭证授权时间、软件相关属性、使用方自身属性和授权方的签名信息,完成授权证书的创建和签发。
二次授权机制:针对公司打包购买软件等场景,软件授权方作为主授权中心,可以为购买方颁发主证书,并授予主证书和该购买方二次授权的权利,提供二次授权机构的身份标识符、主证书链接摘要、授权有效期、最大发证数量等属性,值得注意的是,二次授权证书必须采取链上验证的模式,同时验证主证书摘要、二次授权证书签发机构、证书有效期、该机构已签发数量等,以防止凭证超发、监管缺失等现象。
主授权中心和子授权中心的关系如图6所示。
临时授权机制:目前市场上大都存在业务外包的情况,然而外包公司往往实力较弱,无力购买正版软件,外包公司使用盗版软件违约,也会间接对主公司的业务造成影响,带来不必要的麻烦。针对这种情况及其他相似场景,购买公司可以作为子授权中心为外包人员(即软件使用方)颁发临时授权证书,因此系统必须具备证书撤销功能,撤销模块将在后文详细论述。临时授权证书一般以天/周为有效期单位,并在凭证中添加临时凭证标志,且占用最大发证数量指标,但是一旦临时授权证书被销毁或撤销,则在子授权机构有效期内可以重新颁发授权凭证。
(2)数据存证模块
在数据存证模块中,授权方为所颁发的授权证书生成哈希摘要并写入签名,以完成存证创建并存至区块链上。
(3)授权验证模块
如图4所示,在授权验证模块中,系统分别支持通过链上和链下两种认证方式。其中链下模式可以更好与已有业务系统结合,支持应用快速上链。
链下模式中,系统只需提供验证授权证书的签名、有效期、是否撤销等条目来判断授权证书的真伪。适用于安全需求较低的场景或者离线/应急场景。
链上模式中,通过智能合约可自动化完成凭证使用的全流程管理。输入软件授权证书,系统通过验证授权证书的签名、有效期、是否撤销等条目,来判断授权证书的真伪,然后将凭证反向构造存证,向区块链查询和比较存证来证明所持凭证的一致性。适用于安全需求较高的场景。
(4)授权撤销模块
如图5所示,当授权证书更新或到期时,则需要进行凭证撤销。如果(临时)证书撤销,则以软件授权方为单位,将撤销凭证上辅链。当授权证书更新时,软件授权方调用授权证书控制合约,更改原凭证的撤销属性,然后调用存证智能合约,更新凭证Hash值、签名值及更新时间等属性,对应的存证并以事件的方式记录上链,记录新块高。如果授权证书到期,则无需上链,只需进行有效期校验即可,如果使用方擅自修改有效期,则证书对应的哈希值也将随之改变,校验仍无法通过。
隐私保护机制:系统支持软件使用方以隐私保护的方式提供自身属性,基于承诺和零知识证明技术,使用方可以向验证方证明并使其相信自己知道或拥有某一消息而无需揭露该消息。具体实施如下,软件使用方将其自身的属性转换成离散模型值,生成密码承诺声明,并将其身份标识符和密码承诺的签名发送给软件授权方。软件授权方基于零知识证明的技术验证承诺的真实性,并颁发相应的授权证书。
不可转让机制:目前为止,软件使用方之间私钥共享或凭证共谋问题都相当严重,例如网络上公开或转售破解序列号、出售软件授权证书等。为了解决这个问题,系统需要保证每个软件使用方只对应一个唯一的身份标识符,每个注册身份标识符用户需要通过KYC验证(Know your customer)是一项验证用户身份的流程,如果存在已注册的身份标识符,则系统不再为用户注册新的身份标识符。该设置使得用户身份标识具有抗女巫攻击的能力。
同理,对于使用方的唯一独特属性,系统也维护一张目标用户独特属性的秘密共享表,在颁发软件授权证书前,需要先检查表中这些属性是否存在已发布的凭证。软件授权系统需要确保一个唯一的特殊属性只颁发一个唯一对应的凭证,从而实现抗女巫攻击。使系统具有抗女巫攻击的能力能够确保身份标识符和凭证的唯一性和不可转让性。只有确认使用方的声明属性是唯一的,系统才会向他发布新的抗女巫攻击的证书或者主证书。
使系统具有抵抗女巫攻击的能力有助于阻止凭证传输。每个用户只能获得一个主证书,根据人类的利己性和博弈的利益,从而阻碍了销售或转让。类似地,如果检测到证书滥用,可以通过其他威慑措施(如撤销滥用的证书)加以辅助解决。
技术层面:一是该系统是基于区块链的去中心化的软件授权系统,摆脱了授权证书对机器物理属性的依赖,尤其适合适用于虚拟环境下的软件授权,完美解决了由于物理空间频繁切换而导致的授权证书失效问题;二是人、机、物均可拥有全局唯一的身份标识符,可以打造出兼容原始物理属性的授权证书;三是支持隐私授权证书,且授权证书秘密而可验证,任何第三方无法通过软件授权证书推测出软件使用方的真实属性信息;四是具有很强的可移植性和广泛适用性,支持多授权中心或分层发证,不完全依赖于特定的机构或企业;五是具有可撤销能力,对于作废或过期软件授权证书可实现链上撤销和查询。
流程层面:一是极大降低了软件授权管理的成本,允许在不同开发商之间复用和推广,只需在系统中展示软件凭证即可;二是极大提高了软件授权证书验证的便捷度,无需所有软件厂商专门开发软件授权模块,无需任何专有设备,随时随地可向软件授权方申请授权证书并由软件验证系统进行准入验证;三是极大简化了软件授权证书的申请流程,每个实体尽可申请基于自身唯一的身份属性的软件授权证书。
效果层面:基于区块链的软件授权系统可为软件使用方提供唯一的身份标识符,在此基础上颁发授权证书,尤其适用于虚拟环境下的软件授权,完美解决了由于物理空间频繁切换而导致的授权证书失效问题;此外,授权证书可在线申请和在线使用,方便快捷、无需特殊终端;对于软件授权方来说,有效降低了软件授权管理的基础设施成本,拓宽了授权证书的使用范围,使所发行之凭证不可伪造、不可复制、不可转让;对于授权验证系统来讲,接入区块链基础设施的成本更低,软件授权验证方便,保证了授权证书的权威性和不可篡改性。
实施例2
如图2所示,本发明实施例提供的基于区块链的基于分布式身份的软件授权系统的具体模块包括软件授权模块、数据存证模块、授权验证模块和授权撤销模块。具体实施如下。
(1)软件授权模块
如图3所示,软件授权模块又包括软件使用方/设备的唯一标识符创建、授权证书签发、链上存证创建三个部分。具体为:
1)身份标识符创建
① 软件使用方/设备向软件授权系统申请授权证书;
② 系统为软件使用方/设备进行KYC验证,创建唯一身份标识符,调用身份注册合约,创建全局唯一的身份标识符,将标识符及其相关属性以哈希摘要或密码承诺的形式公开于链上,达到公开可验证的效果。身份标识符具体格式为did:auth:method-specific-id,例如did: auth:0xb553545a02667804,其中did表示分布式身份标识符协议,auth表示方法的标识符,最后一个字段表示唯一的特殊标识地址,可通过公钥的哈希值转换生成。
2)授权证书签发
授权证书又分为公开授权证书和隐私授权证书。公开授权证书签发过程中,首先由软件使用方申请软件授权凭证,并提供其设备/身份唯一标识符及唯一属性声明和签名,软件授权方核验身份及属性后,根据软件授权证书的模板,添加其有效期、使用方标识符、唯一属性、自签名及授权方的签名信息,完成公开授权证书的创建和签发。
与公开授权证书不同的是,隐私授权证书中,软件使用方所提供的唯一身份标识符及其属性,将基于密码承诺技术将相关属性转换成离散对数模型,软件授权方基于零知识证明技术验证其唯一属性。软件授权方和其他第三方都无法获知其属性的真实内容,例如提供了设备的mac地址。
(2)数据存证模块
数据存证模块中,软件授权方将所颁发的软件授权证书生成哈希摘要并签名,通过存证智能合约上传至区块链上。值得注意的是,用户的身份标识符及相关属性以身份文档的形式存储在链上,必须是公开或隐私可验证的;其次,软件授权证书不上链,由软件使用方自行存储;软件授权方将授权证书制作成摘要并上链存证。
(3)授权验证模块
如图4所示,授权验证模块中,软件使用方购买软件授权证书并接入软件激活验证系统。软件使用方提供自身唯一的身份标识符和授权证书,软件系统收到授权证书后,先执行链下验证,分别验证授权证书的签名者、所有者及其属性、有效期、判断是否被撤销等相关信息。如果系统具有更强的安全需求,则进一步将授权证书线上验证,将授权证书基于哈希摘要或密码承诺反向构造存证,然后向区块链查询和比较摘要存证来证明所持授权证书的真实有效性。
(4)授权撤销模块
如图5所示,授权撤销分为授权过期撤销和授权证书更新。软件授权方调用授权撤销智能合约更改凭证相应的授权属性,然后身份颁发方调用存证智能合约,更新凭证的Hash值、签名值、有效期等属性并存证上链。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。