基于区块链的数字身份的实现方法及系统与流程

文档序号:20770078发布日期:2020-05-15 19:34阅读:519来源:国知局
基于区块链的数字身份的实现方法及系统与流程

本公开涉及区块链技术领域,尤其涉及一种基于区块链的数字身份的实现方法及系统。



背景技术:

现有的身份管理是基于中心化的身份管理,如居民身份证,大多由国家或地区行政单位予以发放和管理,是用于证明持有人身份的法定证件,即本申请中的“物理身份”。

物理身份目前的局限性在于:当下社会环境,身份验证的应用场景无处不在,从政府行政单位到银行等金融机构再到生活中的线上购物、寄送快递、使用各类app、wep网站等,很多都要用户提供姓名和身份证号以验证用户身份的合法性和有效性来提供更加全面的服务。对于用户来说,多次提供个人信息到各个平台和机构,无疑增加了隐私泄露的概率,因而个人信息的安全和使用效率都有较大的优化空间。



技术实现要素:

本公开提供了一种基于区块链的数字身份的实现方法及系统,其技术目的是:通过智能合约将用户的物理身份和数字身份进行映射并写入到区块链,最大程度提高用户信息的隐私性和安全性。

本公开的上述技术目的是通过以下技术方案得以实现的:

一种基于区块链的数字身份的实现方法,包括身份构建和身份验证;

所述身份构建包括:

创建钱包账户,所述钱包账户包括私钥和公钥,所述公钥推导出第一钱包地址,所述私钥由用户持有;

用户将身份信息发送给认证机构,所述身份信息包括物理身份信息和数字身份信息,所述物理身份信息包括身份证号和身份证照片,所述数字身份信息包括所述第一钱包地址、经过哈希的第一身份证号摘要和第一人脸特征信息摘要;

所述认证机构验证所述物理身份信息,验证通过后认证机构将所述数字身份信息通过智能合约写入区块链,同时建立第一身份证号摘要、第一人脸特征信息摘要、物理身份信息以及第一钱包地址四者之间的对应关系;

所述身份验证包括:

用户对自己的身份证号哈希得到第二身份证号摘要,然后通过所述私钥对所述第二身份证号摘要进行签名获取签名信息,然后用户将第二身份证号摘要、签名信息和第一钱包地址提供给第三方;

所述第三方进行验签,获得公钥,由公钥得到第二钱包地址,若第二钱包地址与所述第一钱包地址一致,则该用户的数字身份合法;

第三方调用智能合约并使用第一钱包地址在区块链上查询到存储的第一身份证号摘要,若第一身份证号摘要与第二身份证号摘要一致,则该用户的数字身份有效。

进一步地,若用户忘记所述私钥,则重新创建钱包账户,得到第三钱包地址、经过哈希的第三身份证号摘要和第三人脸特征信息摘要;

通过所述第三身份证号摘要查询区块链上是否存在钱包地址,若不存在则构建数字身份,将第三钱包地址、第三身份证号摘要和第三人脸特征信息摘要写入区块链;

若区块链上存在钱包地址,所述钱包地址与所述第三钱包地址若一致则更新数字身份,将第三钱包地址、第三身份证号摘要和第三人脸特征信息摘要写入区块链;

所述钱包地址与所述第三钱包地址若不一致,则重置身份,使第三钱包地址、第三身份证号摘要和第三人脸特征信息摘要一一对应且将其写入区块链。

进一步地,所述身份验证还包括第二人脸验证,所述第三方获取用户当前照片后,请求所述认证机构进行第二人脸验证得到第二人脸特征信息摘要;第三方调用智能合约并使用第一钱包地址在区块链上查询到存储的第一人脸特征信息摘要,若第一人脸特征信息摘要与第二人脸特征信息摘要一致,则人脸验证通过。

进一步地,所述认证机构对所述物理身份信息的验证包括身份证号验证和第一人脸验证,所述第一人脸验证即所述认证机构请求获取用户当前照片,然后将用户当前照片与所述身份证照片进行对比验证。

进一步地,所述第三方验签的参数为第二身份证号摘要和签名信息;所述认证机构为唯一的且拥有在区块链上的读、写权限;所述第三方至少为一个且只有读权限。

一种基于区块链的数字身份的实现系统,包括身份构建模块和身份验证模块;

所述身份构建模块包括:

钱包创建单元,创建钱包账户,所述钱包账户包括私钥和公钥,所述公钥推导出第一钱包地址,所述私钥由用户持有;

第一发送单元,用户将身份信息发送给认证机构,所述身份信息包括物理身份信息和数字身份信息,所述物理身份信息包括身份证号和身份证照片,所述数字身份信息包括所述第一钱包地址、经过哈希的第一身份证号摘要和第一人脸特征信息摘要;

第一验证单元,所述认证机构验证所述物理身份信息;

写入单元,所述物理身份信息验证通过后认证机构将所述数字身份信息通过智能合约写入区块链,同时建立第一身份证号摘要、第一人脸特征信息摘要、物理身份信息以及第一钱包地址四者之间的对应关系;

所述身份验证模块包括信息获取单元、第二发送单元和第二验证单元,其中:

所述信息获取单元,用户对自己的身份证号哈希得到第二身份证号摘要,然后通过所述私钥对所述第二身份证号摘要进行签名获取签名信息;

所述第二发送单元,用户将第二身份证号摘要、签名信息和第一钱包地址发送给第三方;

所述第二验证单元又包括:

验签单元,所述第三方进行验签,获得公钥,由公钥得到第二钱包地址;

地址验证单元,若第二钱包地址与所述第一钱包地址一致,则该用户的数字身份合法;

数字身份验证单元,第三方调用智能合约并使用第一钱包地址在区块链上查询到存储的第一身份证号摘要,若第一身份证号摘要与第二身份证号摘要一致,则该用户的数字身份有效。

进一步地,所述身份构建模块还包括:

地址查询单元,若用户忘记所述私钥,则使用所述钱包创建单元重新创建钱包账户,得到第三钱包地址、经过哈希的第三身份证号摘要和第三人脸特征信息摘要,然后所述地址查询单元通过所述第三身份证号摘要查询区块链上是否存在钱包地址;

地址对比单元,若区块链上存在钱包地址,对比所述钱包地址与所述第三钱包地址是否一致。

进一步地,所述第二验证单元还包括:

照片获取单元,第三方获取用户当前照片;

第二人脸验证单元,所述第三方获取用户当前照片后,请求所述认证机构的第二人脸验证单元进行第二人脸验证得到第二人脸特征信息摘要;

然后第三方调用智能合约并使用第一钱包地址在区块链上查询到存储的第一人脸特征信息摘要,若第一人脸特征信息摘要与第二人脸特征信息摘要一致,则人脸验证通过。

进一步地,所述第一验证单元包括:

身份证号验证单元;

第一人脸验证单元,所述第一人脸验证单元请求获取用户当前照片,然后将用户当前照片与所述身份证照片进行对比验证。

进一步地,所述验签单元的参数为第二身份证号摘要和签名信息;所述认证机构为唯一的且拥有在区块链上的读、写权限;所述第三方至少为一个且只有读权限。

本公开的有益效果在于:本发明通过认证机构的设置,在源头上可以保证用户身份信息的合法性和有效性,且认证机构是唯一的,不会将用户身份信息对外公开。当任何第三方请求验证用户身份时,第三方收到的用户身份信息是被哈希过的身份摘要,不会直接体现用户的真实身份信息,最大程度的保护了用户信息,使其身份信息被泄露的风险降至最低。

附图说明

图1为本公开身份构建的流程示意图;

图2为本公开身份验证的流程示意图;

图3为本公开身份重建的流程示意图;

图4为本公开系统示意图。

具体实施方式

下面将结合附图对本公开技术方案进行详细说明。在本公开的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含指明所指示的技术特征的数量,仅用来区分不同的组成部分。

本公开所述的数字身份实现的方法主要包括身份构建和身份验证这两个步骤,图1为身份构建的流程示意图,图2为身份验证的流程示意图。如图1所示,用户创建钱包账户,由公钥得到了钱包账户,然后用户将钱包账户、身份证号、身份证照片和身份证号摘要发送给认证机构,然后认证机构对用户的物理身份信息进行验证(即对身份证号和身份证照片进行验证)。首先验证身份证号,验证通过则进行人脸验证;人脸验证时认证机构请求采集用户摄像头获取用户当前照片,然后将用户当前照片与身份证照片进行比对(提取人脸特征信息进行比对),若用户当前照片与身份证照片的人脸特征信息一致,则人脸验证通过。最后认证机构调用智能合约将用户的数字身份信息(身份证号摘要、人脸特征信息摘要)写入区块链,并建立身份证号摘要、人脸特征信息摘要以及钱包地址之间的一一对应关系,同时认证机构保存用户的物理身份信息(身份证号、身份证照片或人脸特征信息),该物理身份信息也与钱包地址成对应关系。

如图2所示,第三方需要对用户进行身份验证时,用户将钱包地址、身份证号摘要和签名信息(对身份证号摘要签名所得)发送给第三方。第三方首先开始验证用户数字身份的合法性,第三方通过验签获得公钥,由公钥推导出钱包地址,比较推导出的钱包地址和用户传送的钱包地址是否一致,不一致则验证失败结束验证,一致则说明数字身份合法。然后第三方对数字身份的有效性进行验证,第三方调用智能合约并使用钱包地址查询区块链上的数字身份信息(身份证号摘要、人脸特征信息摘要),若查询到的身份证号摘要和用户传来的身份证号摘要一致,则该数字身份合法。数字身份验证完成后,第三方可自由选择是否对用户进行人脸验证,若需要进行人脸验证,第三方请求采集用户摄像头获取用户当前照片,然后第三方调用认证机构的人脸验证功能对用户进行人脸验证,认证机构的人脸验证过程不再赘述。

身份构建的具体实施例如下:

(1)每个钱包账户都由一个密钥对(私钥和公钥)定义,钱包地址则由公钥推导而来,用户持有私钥,钱包地址公开。通过32字节256位的伪随机数生成秘钥随机种子(即2的256次方种,暴力破解基本不可能),随机种子再通过secp256k1^5(椭圆曲线算法)生成私钥(32字节),然后通过ecdsa-secp256k1(椭圆曲线数字签名算法)对私钥签名,将私钥映射成公钥,该公钥(65字节)的组成格式为前缀+x公钥+y公钥。使用keccak-256哈希算法计算公钥(非压缩公钥)的哈希值(32字节),钱包地址可取哈希过的公钥的后20字节。

(2)用户将身份信息发送给认证机构,身份信息则包括物理身份信息和数字身份信息,物理身份信息又包括身份证号、身份证图片和人脸特征信息,数字身份信息包括钱包地址、哈希后的身份证号摘要和人脸特征信息摘要。

(3)认证机构对用户身份信息进行验证,根据用户提供的身份证号验证用户身份的合法性、有效性。然后认证机构请求采集用户摄像头,获取用户当前照片,验证用户人脸信息是否通过(将用户当前照片和身份证图片进行对比),人脸验证通过则用户身份信息验证通过。

(4)认证机构将用户数字身份写入区块链,认证机构将用户的钱包地址、身份证号摘要、人脸特征信息摘要通过智能合约写入区块链,建立起钱包地址、身份证号摘要以及人脸特征信息摘要之间的对应关系,同时保存用户的人脸特征信息,建立与钱包地址的对应关系。

身份构建完成后,第三方需要对用户的身份进行验证时,其具体实施例如下:

(1)用户通过keccak-256对自己的身份证号进行哈希得到身份证号摘要,然后通过ecdsa-secp256k1使用私钥对身份证号摘要进行签名,获取身份证号摘要的签名信息,最后将身份证号摘要、签名信息、钱包地址发送给需要验证用户身份的第三方。

(2)第三方将接收到的用户的身份证号摘要、签名信息、钱包地址后,将身份证号摘要和签名信息作为参数,使用ecdsa_verify-secp256k1进行验签,验签通过后可以获得公钥,再由公钥推导出钱包地址,对比推导出的钱包地址与用户发送的钱包地址是否一致,一致则确认该数字身份的合法性。

(3)第三方调用智能合约验证用户身份信息:第三方调用智能合约将钱包地址作为键查询区块链上存储的用户的数字身份信息,即身份证号摘要和人脸特征信息摘要。对比查询到的身份证号摘要与用户传送过来的身份证号摘要是否一致,一致则确认该数字身份的真实性,否则该数字身份是造假的。

当第三方需要验证用户人脸信息时,第三方请求采集用户摄像头,获取用户当前照片,然后第三方请求认证机构的第二人脸验证单元,参数是用户的钱包地址和用户当前照片,认证机构的第二人脸验证单元提取用户当前照片的特征,得到人脸特征信息,对人脸特征信息进行哈希,得到人脸特征信息摘要并与查询到的人脸特征信息摘要进行对比,确定物理身份和数字身份的一致性。

认证机构亦可以通过云端人脸识别系统获取用户的照片,将已获取的用户当前照片和用户人脸特征信息作为参数,验证人脸识别是否通过,然后将人脸验证结果返回给其他平台。

图4为本公开系统示意图,该系统包括身份构建模块和身份验证模块,身份构建模块又包括钱包创建单元、第一发送单元、第一验证单元、写入单元、地址查询单元和地址对比单元;身份验证模块包括信息获取单元、第二发送单元和第二验证单元;其中,第一验证单元包括身份证号验证单元和第一人脸验证单元;第二验证单元又包括验签单元、地址验证单元、数字身份验证单元、照片获取单元和第二人脸验证单元。为了将第二身份证号摘要、签名信息和第一钱包地址生成二维码发送给第三方,身份验证模块还可以设置一个二维码生成单元,该二维码单元根据已有信息生成可识别的二维码。本公开系统的工作流程参考本公开方法,不再赘述。

另外,由于用户数字身份的私钥由用户自己持有,若用户丢失私钥,就代表用户数字身份丢失,此时用户可以重新生成数字身份并将身份信息发送给认证机构重新认证,智能合约则会进行判断,若用户新传入的钱包地址与区块链上保存的不一致,则会自动作废原有的身份,重置原有身份的所有信息(身份证号摘要、人脸特征信息摘要),同时生效新的身份。

身份重置的具体流程如图3所示,用户重新构建数字身份(钱包地址、身份证号摘要、人脸特征信息摘要),然后使用身份证号摘要为参数查询区块链上是否存在对应的钱包地址,若不存在,则将用户身份验证后重新写入区块链;若区块链上存在对应的钱包地址,则要对比新的钱包地址与查询到的钱包地址是否一致,一致则更新数字身份,不一致则重置身份,重置身份证号摘要对应的钱包地址,重置钱包地址对应的数字身份信息,然后将重置后的数字身份写入区块链。

本公开的数字身份上链是通过智能合约的方式实现,实现原理如下:

1)通过智能合约创建映射,用于存储链上身份:

1.1)idinfos:映射:key为地址,value为数字身份信息结构体;

1.1.1)idinfo:结构体;

1.1.1.1)属性为身份证号摘要,人脸特征信息摘要;

1.2)idnumberhashs:映射:key为hash后的身份证号,value为地址;

1.2.1)用于保证链上数字身份的唯一性;

2)构造函数:

2.1)owner:当前智能合约创建者,拥有所有读写权限(即:认证机构);

3)添加权限控制:

3.1)setonlyowner:函数修改器,即只有合约创建者才可以写入区块链;

3.2)get:没有权限控制,即所有人都可以访问(即:第三方平台等);

4)调用智能合约创建数字身份,参数:

4.1)required:地址类型参数,即要给哪一个地址添加数字身份;

4.2)required:字节类型参数,即当前地址对应的身份证号摘要;

4.3)required:字节类型参数,即当前地址对应的人脸特征信息摘要;

4.4)智能合约内部判断是单纯新建数字身份,还是重置原有身份后新建;

4.4.1)即判断当前链上是否有地址所对应的身份,没有即为新建;

4.4.2)如果有会继续进行判断原有地址是否和新传入的地址一致;

4.4.3)不一致重置原有身份后构建新身份;

5)调用智能合约查询数字身份:

5.1)参数:required:地址类型参数,即要获取的数字身份;

5.1.1)查询数字身份信息所有内容;

5.1.1.1)返回值:字节类型、字节类型当前地址对应的人脸特征信息摘要和身份证号摘要;

5.1.2)查询人脸特征信息摘要;

5.1.2.1)返回值:字节类型,人脸特征信息摘要;

5.1.3)查询身份证号摘要;

5.1.3.1)返回值:字节类型,身份证号摘要。

综上,用户的物理身份信息(身份证号、身份证照片),只需要在身份核实时向认证机构提供一次,认证通过后,物理身份只在认证机构保留一份,区块链上保存的则是用户的数字身份信息;同时,认证机构是唯一的,且只有认证机构有在区块链上写的权利,用户的隐私不会被泄漏。

通过二维码用于身份验证,第三方平台通过识别二维码获取参数更加便捷高效;第三方通过验签后得到钱包地址,再通过智能合约直接调用区块链上用户的数字身份进行验证;第三方平台需要对用户进行人脸识别时,可直接调用认证机构来进行人脸认证。通俗来讲,本发明实现了“你需要证明你是本人,但是你以外的其他任何人无法知道你本人是谁”,极大的提高了用户信息的隐私性和安全性。

以上为本公开示范性实施例,本公开的保护范围由权利要求书及其等效物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1