跨迪链征信数据加密存储及信用评分隐私计算方案的制作方法

文档序号:29632819发布日期:2022-04-13 16:24阅读:158来源:国知局
跨迪链征信数据加密存储及信用评分隐私计算方案的制作方法

1.本发明属于征信数据加密技术领域,具体为跨迪链征信数据加密存储及信用评分隐私计算方案。


背景技术:

2.就目前而言,参与到区块链交易中的数据对链参与者都是公开的;征信数据属于个人隐私,由相关个人或者权威机构拥有,其他不相关个人或者机构不能查看和修改;征信数据所属人可以随时查看本人征信数据,也可授权他人查看。同时,征信数据是属于不可篡改的存证数据,需要用技术手段确保征信数据无法被篡改。
3.计算个人信用评分卡需要用到征信数据,征信数据有泄露风险,同时,不同业务公司根据自己业务的需要,计算信用评分卡的算法不尽相同,而且属于商业机密。需要用技术手段解决保护评分算法和征信数据的泄漏。


技术实现要素:

4.本发明的目的在于提供跨迪链征信数据加密存储及信用评分隐私计算方案,以解决上述背景技术中提出的问题。
5.为了实现上述目的,本发明提供如下技术方案:跨迪链征信数据加密存储及信用评分隐私计算方案,包括以下步骤:
6.s1:通过身份验证流程的用户生成256为随机数作为私钥k;
7.s2:将私钥k拆分成24组11位,每组对应2048个汉字中的一个,组成共24个汉字的助记词组;
8.s3:通过私钥k计算得出公钥pk;
9.s4:将身份id和公钥pk上传区块链;
10.s5:隐私数据加密上传区块链;
11.s6:用户用私钥k解密区块链上的隐私数据。
12.优选的,所述身份验证流程包括有以下步骤:
13.s01:用户向身份验证方发送验证请求后,身份验证方生成随机数r,并采用公钥加密得到密文er,将密文er发送给用户;
14.s02:用户用私钥key解密er得到随机数r1,利用私钥加密r1得到er1并将er1发送至身份验证方;
15.s03:用公钥解密er1得到r1,对比r和r1,如果相同则验证通过,如果不相同则验证失败,将验证结果发送至用户。
16.优选的,所述公钥pk=g*k;
17.*为国密sm2椭圆曲线算法;
18.g为sm2定义的公开g点,坐标为g(x,y)。
19.优选的,所述助记词对应用户的私钥k,且所述助记词与私钥k之间可以相互推导。
20.优选的,所述s2中私钥k被分为24组,每组11位共构成264位,多余的8位用于校验。
21.优选的,包括以下步骤:
22.s1:可执行环境的证明;
23.s2:隐私合约的部署;
24.s3:隐私合约的调用。
25.优选的,所述可执行环境的证明包括以下步骤:
26.s01:用户生成一个随机挑战,将其发送到隐私合约环境,由隐私计算网关转发到enclave中;
27.s02:enclave对收到的随机挑战制作远程证明;
28.s03:enclave通过隐私计算网关输出远程证明;
29.s04:隐私计算网关会调用系统合约将远程证明写入区块链存证,系统合约中包含验证远程证明合法性的逻辑,通过验证的远程证明会被写入区块链存证。
30.优选的,所述远程证明包括有随机挑战、report、enclave签名、enclave证书。
31.优选的,所述隐私合约的部署包括有以下步骤:
32.s01:用户发起部署合约的请求,并把合约发送给隐私合约环境中的隐私计算网关;
33.s02:隐私计算网关在接收到用户部署请求后,把其中的合约送入enclave的evm中进行初始化;
34.s03:enclave初始化合约完成后,通知隐私计算网关;
35.s04:若enclave初始化合约成功,隐私计算网关会将合约通过链上系统合约存入区块链存证,链上的合约可用于合约逻辑的可靠性校验参照及合约的公共监管;
36.s05:隐私计算网关通知用户部署合约的事件状态。
37.优选的,所述隐私合约的调用包括有以下步骤:
38.s01:用户向隐私合约环境发起调用隐私合约的请求;
39.s02:隐私计算网关根据用户调用合约的请求构造一个区块链请求,这个区块链请求用于从链上读取对应的隐私合约和链上数据,隐私计算网关将这个请求发送到区块链;
40.s03:隐私计算网关从区块链上获取到隐私合约代码和需要的链上数据后,连同来自用户的链外数据一起,转发给enclave;
41.s04:将链上、链外数据作为参数执行隐私合约,若数据是密文,使用加密私钥解密数据;
42.s05:按需要选择是否对执行结果加密和打包执行结果,其中内容包括:隐私合约执行结果、隐私合约、链上及链外的参数;
43.s06:使用签名私钥对打包好的执行结果签名,enclave将执行结果与签名返回到隐私计算网关;
44.s07:隐私计算网关调用系统合约把执行结果与签名传到链上,系统合约会从链上获取enclave远程证明,从中提取出签名公钥,并对执行结果的签名进行验证,并从执行结果中提取隐私合约、链上数据部分,与区块链上的信息进行比对,如果这些验证都通过了,则系统合约执行成功,隐私合约的执行结果会被打包到区块中等待共识出块。
45.本发明的有益效果如下:
46.1、本发明通过以区块链技术为底层设施,设计了征信数据链上存储方案,完美解决保护征信数据的隐私和不可篡改性。为了防止征信数据泄漏,确保隐私数据可用不可见,设计发明了信用评分卡隐私计算方案,将区块链上征信敏感数据和隐私计算相结合,解决了敏感数据可用而不出库的问题。
47.2、本发明通过跨迪链隐私合约功能为区块链提供在合约中处理敏感数据的能力,达到保护数据隐私的同时保证合约执行过程的可靠性(包括合约逻辑、数据的完整性),跨迪链隐私合约采用可信计算技术,在可信执行环境中执行隐私合约,敏感数据以密文形式存在于区块链账本中,用户使用时在可信执行环境中解密,而可信执行环境外无法获得敏感数据明文,同时,可信执行环境的远程证明保证合约逻辑不被篡改,如此,达到敏感数据在区块链上的可用不可见,而数据处理流程仍然可以在区块链上公开验证的效果。
附图说明
48.图1为本发明的身份验证流程示意图;
49.图2为本发明加密储存方案的流程示意图;
50.图3为本发明可执行环境远程证明的流程示意图;
51.图4为本发明隐私合约部署的流程示意图;
52.图5为本发明隐私合约调用的流程示意图。
具体实施方式
53.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
54.如图1至图5所示,本发明实施例中,跨迪链征信数据加密存储及信用评分隐私计算方案,包括以下步骤:
55.s1:通过身份验证流程的用户生成256为随机数作为私钥k;
56.s2:将私钥k拆分成24组11位,每组对应2048个汉字中的一个,组成共24个汉字的助记词组;
57.s3:通过私钥k计算得出公钥pk;
58.s4:将身份id和公钥pk上传区块链;
59.s5:隐私数据加密上传区块链;
60.s6:用户用私钥k解密区块链上的隐私数据;
61.跨迪链首先通过身份证实名认证确定个人身份真实性,确定真实身份之后,随机生成一对公私钥,私钥由个人用户秘密保存,公钥和身份id绑定存于区块链上,通过身份id可以查询用户的公钥。
62.私钥k由256比特位组成,难于记忆和保管;将k分解为24组,每组为11位,11*24=264位,多余8位用作校验位,2^11=2048,每一组共有2048个数字,我们用2048个汉字与之一一对应,这样就得到了24个汉字序列组成的助记词;助记词对应个人私钥,两者可以互相推导。
63.个人私钥用作跨迪链上的个人数字身份,同时也是加密和解密链上个人隐私数据的钥匙。隐私数据加密时,通过个人私钥和一个随机数衍生出一个会话密钥,用会话密钥加密数据,同时将密文与随机数存于区块链中,以下是对加密的算法的整合:
64.(1)获取数据加密密钥sharedsecret,算法如下:
65.sharedsecret=sm3(privatekey*pubkey_of_creditchain,nonce)
66.privatekey为用户个人私钥
67.pubkey_of_creditchain为跨迪链的公钥
68.乘法定义为椭圆曲线乘法,此处采用的是国密sm2椭圆曲线算法
69.nonce为一个随机数
70.sm3为国密hash算法
71.跨迪链采用sm2椭圆曲线算法作为非对称算法,根据sm2算法,用户privatekey为一个256比特位的随机数r,公钥为椭圆曲线上的一个点的坐标p(x,y),sm2定义了一个公开的g点,坐标为g(x,y),公钥p可以通过如下算法得到:
72.p=g*r
73.此处乘法规则为椭圆曲线算法所定义的乘法规则。
74.所以,由私钥(随机数r)可以推出公钥p。由于椭圆曲线乘法没有逆运算,所以由公钥p和g无法推出随机数r。
75.加密密钥sharedsecret的算法如下:
76.s=privatekey*pubkey_of_creditchain;
77.而pubkey_of_creditchain=g*r1(r1为跨迪链官方私钥);
78.privatekey=r;
79.所以s=r*g*r1=g*r*r1
80.sharedsecret=sm3(s*nonce)
81.得到的sharedsecret为256位的sm3 hash值。
82.(2)加密隐私数据
83.cipherdata=base64_encode(sm2(data,sharedsecret));
84.sharedsecret为第一步得出的数据加密密钥;
85.sm2为国密sm2算法;
86.base64_encode为base64编码算法;
87.cipherdata为加密密文;
88.流程如下:
89.先基于sm2算法,用数据加密密钥sharedsecret加密隐私数据data,得到密文二进制数据,然后将密文二进制数据进行base64编码,转化为字符串形式cipherdata,便于区块链存储。
90.(3)加密数据上链
91.将如下字段上传到区块链上:id;pubkey;cipherdata;nonce。
92.id为用户身份id;
93.pubke为用户公钥;
94.cipherdata为加密后的密文;
95.nonce为第一步生成sharedsecret时用到的随机数;
96.将以上数据存于区块链中,返回所存的区块高度。
97.(4)数据解密
98.从区块链上取出密文数据cipherdata和随机数nonce,解密分为以下两种情况:
99.个人拥有私钥privatekey,解密查看自己的征信数据;
100.跨迪链官方私钥解密,官方在极少数必要的情况下,用官方私钥解密原始数据;
101.个人在拥有私钥privatekey的情况下,可以解密对应数据。
102.先计算出sharedsecret
103.sharedsecret=sm3(privatekey*pubkey_of_creditchain,nonce)
104.用国密算法sm2解密:
105.data=sm2(base64_decode(cipherdata),sharedsecret);
106.base64_decode为base64解码算法;
107.sm2为国密对称加密算法;
108.解密流程如下:
109.1.先将密文字符串cipherdata基于base64解码成二进制数据流cipherstrearm;
110.2.用密码sharedsecret将cipherstream基于sm2算法解密得到原文data。
111.跨迪链官方拥有的私钥可以解密数据:
112.先计算出sharedsecret;
113.sharedsecret=sm3(privatekey_of_creditchain*pubkey,nonce)
114.这里用到跨迪链官方的私钥privatekey_of_creditchain,该私钥由官方拥有;
115.pubkey为数据拥有者的公钥;
116.nonce为和密文一同存储在区块链上的随机数;
117.加密密钥sharedsecret的算法如下:
118.s=privatekey_of_creditchain*pubkey;
119.而pubkey=g*r(r为用户私钥);
120.privatekey_of_creditchain=r1;
121.所以s=r1*g*r=g*r*r1;
122.sharedsecret=sm3(s*nonce);
123.得到的sharedsecret为256位的hash值;
124.任何其他第三方无法解密数据
125.其他第三方因为没有用户的私钥privatekey或者跨迪链官方的私钥privatekey_of_creditchain,无法计算得出sharedsecret密钥,因此无法解密cipherdata。个人隐私数据得到了有效的保护。
126.所述身份验证流程包括有以下步骤:
127.s01:用户向身份验证方发送验证请求后,身份验证方生成随机数r,并采用公钥加密得到密文er,将密文er发送给用户;
128.s02:用户用私钥key解密er得到随机数r1,利用私钥加密r1得到er1并将er1发送至身份验证方;
129.s03:用公钥解密er1得到r1,对比r和r1,如果相同则验证通过,如果不相同则验证
primitives)远程证明模式中,intel会作为根ca为sgx硬件提供认证。
142.而跨迪链自定义信任根的远程证明对intel sgx dcap做了一些改动,将对intel的信任转移到对任意选定的ca机构的信任上。
143.在可信执行环境初始化阶段,可信硬件基于硬件固有密钥生成一对签名公私钥对和一对加密公私钥对,并向一个选定的ca机构申请证书。该证书中包含签名公钥和加密公钥。这个过程类似于硬件出厂时向intel注册信息。
144.所述可执行环境的证明包括以下步骤:
145.s01:用户生成一个随机挑战(任意随机字符串),将其发送到隐私合约环境,由隐私计算网关转发到enclave中;
146.s02:enclave对收到的随机挑战制作远程证明;
147.s03:enclave通过隐私计算网关输出远程证明;
148.s04:隐私计算网关会调用系统合约将远程证明写入区块链存证,系统合约中包含验证远程证明合法性的逻辑,通过验证的远程证明会被写入区块链存证。
149.所述远程证明包括有随机挑战、report、enclave签名、enclave证书。
150.所述隐私合约的部署包括有以下步骤:
151.s01:用户发起部署合约的请求,并把合约发送给隐私合约环境中的隐私计算网关;
152.s02:隐私计算网关在接收到用户部署请求后,把其中的合约送入enclave的evm中进行初始化;
153.s03:enclave初始化合约完成后,通知隐私计算网关;
154.s04:若enclave初始化合约成功,隐私计算网关会将合约通过链上系统合约存入区块链存证,链上的合约可用于合约逻辑的可靠性校验参照及合约的公共监管;
155.s05:隐私计算网关通知用户部署合约的事件状态。
156.所述隐私合约的调用包括有以下步骤:
157.s01:用户向隐私合约环境发起调用隐私合约的请求;
158.s02:隐私计算网关根据用户调用合约的请求构造一个区块链请求,这个区块链请求用于从链上读取对应的隐私合约和链上数据,隐私计算网关将这个请求发送到区块链;
159.s03:隐私计算网关从区块链上获取到隐私合约代码和需要的链上数据后,连同来自用户的链外数据一起,转发给enclave;
160.s04:将链上、链外数据作为参数执行隐私合约,若数据是密文,使用加密私钥解密数据;
161.s05:按需要选择是否对执行结果加密和打包执行结果,其中内容包括:隐私合约执行结果、隐私合约、链上及链外的参数;
162.s06:使用签名私钥对打包好的执行结果签名,enclave将执行结果与签名返回到隐私计算网关;
163.s07:隐私计算网关调用系统合约把执行结果与签名传到链上,系统合约会从链上获取enclave远程证明,从中提取出签名公钥,并对执行结果的签名进行验证,并从执行结果中提取隐私合约、链上数据部分,与区块链上的信息进行比对,如果这些验证都通过了,则系统合约执行成功,隐私合约的执行结果会被打包到区块中等待共识出块。
164.在合约调用阶段的第1、4步中,提到过隐私合约使用的数据可能是加密的。
165.链外加密数据
166.用户可以随机生成对称密钥作为会话密钥对数据加密,然后从区块链上获取enclave的加密公钥对会话密钥加密。用户调用隐私合约时传入的链外数据即为数据本身的对称加密密文和会话密钥的非对称加密密文。enclave使用时,使用加密私钥解密出会话密钥,再用会话密钥解密出数据。
167.区块链上加密数据
168.区块链上可能会有少量敏感数据的密文,这些密文首先是以与链外加密数据一样的处理方式上链的,enclave使用链上密文时与使用链外密文的方式相同。
169.在合约调用阶段的第5步中,提到过可以按需要对隐私合约的执行结果进行加密。这里有两个选择:
170.使用enclave的加密公钥加密
171.enclave随机生成一个对称密钥作为会话密钥,用于加密结果,再用enclave的加密公钥加密会话密钥;执行结果的密文就包含会话密钥密文和数据密文两部分。这种情况下,隐私合约的执行结果只能在后续的隐私合约调用中在enclave中使用,外部无法解密这个结果。
172.使用合约参数中传入的一个公钥加密
173.入参中的公钥可以是来自区块链上的数据,也可以是用户发送调用隐私合约的请求时带入的链外的用户公钥。enclave随机生成一个对称密钥作为会话密钥,用于加密结果,再用入参中的加密公钥加密会话密钥;执行结果的密文就包含会话密钥密文和数据密文两部分。这种情况下,隐私合约的执行结果可以被对应的加密私钥持有者解密使用。
174.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
175.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1