CN114499896B - 一种基于区块链的实名认证方法及系统 - Google Patents
一种基于区块链的实名认证方法及系统 Download PDFInfo
- Publication number
- CN114499896B CN114499896B CN202210381578.0A CN202210381578A CN114499896B CN 114499896 B CN114499896 B CN 114499896B CN 202210381578 A CN202210381578 A CN 202210381578A CN 114499896 B CN114499896 B CN 114499896B
- Authority
- CN
- China
- Prior art keywords
- information
- block
- block chain
- node
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Abstract
本发明公开一种基于区块链的实名认证方法及系统,该方法包括:当客户端接收到新增信息时根据随机数、用户信息、签名公钥和第一签名值生成第一组织数据并上传至区块链平台;区块链平台将验证成功的第一组织数据保存至区块链内存池,提议节点根据第一组织数据组成提议块并向全网广播;区块链平台的节点验证提议块成功时根据第一组织数据生成区块信息并提交至区块链上,将与区块信息对应的可验证凭证通过客户端保存到硬件设备中;当客户端接收到需要实名认证的信息时使用硬件设备对其进行签名得到第二签名值,将第二签名值和硬件设备中的可验证凭证发送给区块链平台;如可验证凭证与区块链上的区块信息匹配则节点将第二签名值上传至区块链平台上。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种基于区块链的实名认证方法及系统。
背景技术
电子合同的显著特点之一是缔约双方包括自然人,需要验证合同的完整性、签名的合法性、签名者(自然人)身份的真实性以及合同内容与签名者身份的一致性。目前个人数字证书尚未普及,劳动者(自然人)未持有数字证书是普遍情况。在疫情防控的背景下,服务平台(例如电子合同平台)难以对未持有数字证书的自然人核验法定身份,提供电子合同服务可能面临法律风险,如何在不见面的情况下,对待签劳务合同的员工的身份进行认证是亟待解决的一个问题。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种基于区块链的实名认证方法及系统。
第一方面,本发明提供了一种基于区块链的实名认证方法,包括:
步骤S1:当客户端接收到用户的触发信息时判断所述触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到所述用户信息时执行步骤S2,如为需要实名认证的信息则执行步骤S9;
步骤S2:所述客户端生成随机数并根据所述随机数、所述用户信息和从硬件设备中获取的签名公钥生成第一拼接数据,使用所述硬件设备对所述第一拼接数据进行签名得到第一签名值;
步骤S3:所述客户端根据所述随机数、所述用户信息、所述签名公钥和所述第一签名值生成第一组织数据并上传至区块链平台;
步骤S4:所述区块链平台接收所述第一组织数据并对所述第一组织数据进行验证,如验证成功则执行步骤S5,如验证失败则给所述客户端返回错误信息;
步骤S5:所述区块链平台将所述第一组织数据保存至区块链内存池,所述区块链平台中的提议节点从所述区块链内存池中获取所述第一组织数据并根据所述第一组织数据组成提议块,向全网广播提议块;所述区块链平台包括至少三个节点,每个节点轮流作为提议节点;
步骤S6:所述区块链平台中的每个节点对所述提议块进行验证,如验证成功则执行步骤S7,否则通过区块链平台给所述客户端返回包含错误信息的第一数据,执行步骤S8;
步骤S7:所述区块链平台中的每个节点根据所述提议块中的第一组织数据生成区块信息并提交至区块链上,生成与所述区块信息对应的可验证凭证,将包含所述可验证凭证和成功信息的第一数据通过所述区块链平台发送给所述客户端,执行步骤S8;
步骤S8:所述客户端判断所述第一数据中是否包含成功信息,是则将所述第一数据中的可验证凭证保存到硬件设备中,否则报错;
步骤S9:所述客户端使用硬件设备对所述需要实名认证的信息进行签名得到第二签名值,将所述第二签名值和所述硬件设备中的可验证凭证通过区块链平台发送给节点;
步骤S10:所述区块链平台中的任一节点判断接收到的所述可验证凭证与区块链平台上的区块信息是否匹配,是则执行步骤S11,否则通过所述区块链平台给所述客户端返回错误信息;
步骤S11:所述区块链平台中的当前节点将接收到的第二签名值上传至所述区块链平台上,通过所述区块链平台给所述客户端返回成功信息;
所述步骤S6包括:
步骤S61:所述区块链平台中的每个节点根据所述提议块中的用户信息查询本地数据库中是否保存有对应的身份证哈希值,是则执行步骤S62,否则通过所述区块链平台给所述客户端返回的包含错误信息的第一数据,执行步骤S8;
步骤S62:所述区块链平台中的每个节点将所述用户信息、所述签名公钥、所述第一签名值、所述身份证哈希值写入当前节点的本地数据库中,执行步骤S7。
第二方面,本发明提供了一种基于区块链的实名认证系统,包括客户端和区块链平台,所述区块链平台包括至少三个节点,每个节点轮流作为提议节点,所述区块链平台中的每个节点对所述提议节点广播的数据进行验证;所述客户端包括:第一判断模块、生成签名模块、组织上传模块、第二判断模块,所述每个节点包括:获取组成模块、第二验证模块、生成发送模块、第三判断模块、接收上传模块;
所述第一判断模块,用于当接收到用户的触发信息时判断触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到用户信息时触发所述生成签名模块,如为需要实名认证的信息则触发签名发送模块;
所述生成签名模块,用于生成随机数并根据所述随机数、所述用户信息和从硬件设备中获取的签名公钥生成第一拼接数据,使用所述硬件设备对所述第一拼接数据进行签名得到第一签名值;
所述组织上传模块,用于根据所述随机数、所述用户信息、所述签名公钥和所述第一签名值生成第一组织数据并上传至区块链平台;
所述区块链平台用于接收所述第一组织数据并对其进行验证,如验证成功则将所述第一组织数据保存至区块链内存池,如验证失败则给所述客户端返回错误信息;
所述获取组成模块,用于从所述区块链内存池中获取所述第一组织数据并根据所述第一组织数据组成提议块,向全网广播所述提议块;
所述第二验证模块,用于对接收到的所述提议块进行验证,如验证成功则触发所述生成发送模块,否则通过所述区块链平台给所述客户端返回包含错误信息的第一数据,触发所述第二判断模块;
所述生成发送模块,用于根据所述提议块中的第一组织数据生成区块信息并提交至区块链上,生成与所述区块信息对应的可验证凭证,将包含所述可验证凭证和成功信息的第一数据通过所述区块链平台发送给所述客户端,触发所述第二判断模块;
所述第二判断模块,用于判断接收到的所述第一数据中是否包含成功信息,是则将所述第一数据中的可验证凭证保存到硬件设备中,否则报错;
所述签名发送模块,用于使用硬件设备对所述需要实名认证的信息进行签名得到第二签名值,将所述第二签名值和所述硬件设备中的可验证凭证通过区块链平台发送给节点;
所述第三判断模块,用于判断接收到的所述可验证凭证与区块链平台上的区块信息是否匹配,是则触发所述接收上传模块,否则通过所述区块链平台给所述客户端返回错误信息;
所述接收上传模块,用于将接收到的第二签名值上传至区块链平台上,通过所述区块链平台给所述客户端返回成功信息;
所述第二验证模块包括:
第一查询单元,用于将根据所述提议块中的用户信息查询本地数据库中是否保存有对应的身份证哈希值,是则触发第一写入单元,否则通过所述区块链平台给所述客户端返回的包含错误信息的第一数据,触发所述第二判断模块;
所述第一写入单元,用于将所述用户信息、所述签名公钥、所述第一签名值、所述身份证哈希值写入当前节点的本地数据库中,触发所述第二判断模块。
第三方面,本发明提供了一种电子设备,所述电子设备包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令以实现上述权利要求所述的基于区块链的实名认证方法。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行上述权利要求所述的基于区块链的实名认证方法。
第五方面,本发明提供了一种芯片,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行上述权利要求所述的基于区块链的实名认证方法。
本发明与现有技术相比,具有以下优点:
本发明提供一种基于去中心化身份(英文全称:Decentralized Identity,简称DID)框架、软硬件相结合的基于区块链的实名认证技术方案,硬件设备生成签名数据,用于验证用户身份的合法性;基于区块链将拥有经过实名制认证用户的机构与区块链平台以去中心化的方式对接,为区块链平台提供可验证的凭据,与硬件设备相结合用于验证签名者身份的真实性以及需要实名认证的信息与签名者身份的一致性,有助于确定电子合同订立时用户身份的真实性,适用于在不方便面对面进行签订劳务合同等应用场景。
附图说明
图1为本发明实施例一提供的一种基于区块链的实名认证方法流程图;
图2-图4为本发明实施例二提供的一种基于区块链的实名认证方法流程图。
具体实施方式
本申请提出了一种基于区块链的实名认证方法及系统,下面结合附图,对本申请具体实施方式进行详细说明。所述实施例的示例在附图中示出。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施方式作进一步地详细描述。
在本实施例中,区块链平台包括至少三个节点,区块链接收到客户端发送的数据对该数据进行验证,验证成功后将相关数据保存至区块链内存池,然后节点对区块链内存池的数据进行处理,即每个节点轮流作为提议节点,区块链平台中的所有节点对提议节点广播的数据进行验证。
实施例一
本发明实施例一提供了一种基于区块链的实名认证方法,如图1所示,包括:
步骤S1:当客户端接收到用户的触发信息时判断触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到用户信息时执行步骤S2,如为需要实名认证的信息则执行步骤S9;
步骤S2:客户端生成随机数并根据随机数、用户信息和从硬件设备中获取的签名公钥生成第一拼接数据,使用硬件设备对第一拼接数据进行签名得到第一签名值;
可选的,用户信息为不包含用户个人身份信息(例如身份证号、护照号等)的匿名化信息,例如手机号。
具体的,在本实施例中,步骤S2包括:
步骤S2-1:客户端判断是否有硬件设备连接,是则执行步骤S2-2,否则报错;
步骤S2-2:客户端生成预设长度的随机数,并从硬件设备中获取签名公钥;
步骤S2-3:客户端将随机数、用户信息和签名公钥顺序拼接得到第一拼接数据;
步骤S2-4:客户端将第一拼接数据发送给硬件设备;
步骤S2-5:硬件设备使用内置的签名私钥对接收到的第一拼接数据进行签名得到第一签名值,将第一签名值返回给客户端;
步骤S3:客户端根据随机数、用户信息、签名公钥和第一签名值生成第一组织数据并上传至区块链平台;
在本实施例中,步骤S3具体为:客户端将随机数、用户信息、签名公钥和第一签名值按照预设格式进行组织得到第一组织数据,将第一组织数据上传至区块链平台;
步骤S4:区块链平台接收第一组织数据并对第一组织数据进行验证,如验证成功则执行步骤S5,如验证失败则给客户端返回错误信息;
具体的,在本实施例中,步骤S4包括:
步骤S41:区块链平台接收客户端上传的第一组织数据并缓存;
步骤S42:区块链平台判断第一组织数据是否符合预设格式,是则执行步骤S43,否则给客户端返回错误信息;
步骤S43:区块链平台对第一组织数据进行解析并判断解析结果是否为空,是则给客户端返回错误信息,否则执行步骤S44;
步骤S44:区块链平台将解析得到的随机数、用户信息和签名公钥顺序拼接得到第二拼接结果,对第二拼接结果进行哈希运算得到第一哈希值,使用签名公钥对解析得到的第一签名值进行解密得到第一解密结果,从第一解密结果的预设位置上截取预设长度的数据得到第一截取数据;
步骤S45:区块链平台判断第一哈希值与第一截取数据是否一致,是则执行步骤S5,否则给客户端返回错误信息;
步骤S5:区块链平台将第一组织数据保存至区块链内存池,区块链平台中的提议节点从区块链内存池中获取第一组织数据并根据第一组织数据组成提议块,向全网广播提议块;
在本实施例中,区块链平台包括至少三个节点,每个节点轮流作为提议节点;
步骤S6:区块链平台中的每个节点对提议块进行验证,如验证成功则执行步骤S7,如验证失败则通过区块链平台给客户端返回包含错误信息的第一数据,执行步骤S8;
在本实施例中,区块链平台中的节点与客户端的数据通讯均通过区块链平台来实现;
步骤S7:区块链平台中的每个节点根据提议块中的第一组织数据生成区块信息并提交至区块链上,生成与区块信息对应的可验证凭证,将包含可验证凭证和成功信息的第一数据通过区块链平台发送给客户端,执行步骤S8;
具体的,在本实施例中,步骤S7包括:
步骤S71:区块链平台中的每个节点将当前操作的区块编号自加1,对当前操作的区块编号进行哈希计算得到第一哈希值;
步骤S72:区块链平台中的每个节点将第一组织数据、身份证哈希值、第一哈希值打包成区块信息并提交至区块链平台上,生成与区块信息对应的可验证凭证;
步骤S73:区块链平台中的每个节点根据成功信息和可验证凭证生成第一数据,通过区块链平台将第一数据发送给客户端;
步骤S8:客户端判断第一数据中是否包含成功信息,是则将第一数据中的可验证凭证保存到硬件设备中,否则报错;
其中,本实施例中的步骤S8包括:客户端判断接收到的区块链平台中的节点返回的第一数据中是否包含成功信息,是则将第一数据中的可验证凭证发送给硬件设备,硬件设备接收可验证凭证并保存;否则报错;
步骤S9:客户端使用硬件设备对需要实名认证的信息进行签名得到第二签名值,将第二签名值和硬件设备中的可验证凭证通过区块链平台发送给节点;
具体的,在本实施例中,步骤S9包括:
步骤S91:客户端判断是否有硬件设备连接,是则执行步骤S92,否则报错;
步骤S92:客户端将需要实名认证的信息发送给硬件设备;
步骤S93:硬件设备使用签名私钥对接收到的需要实名认证的信息进行签名得到第二签名值,将第二签名值和保存的可验证凭据发送给客户端;
步骤S94:客户端将第二签名值和可验证凭据发送给区块链平台中;
步骤S10:区块链平台中的任一节点判断接收到的可验证凭证与区块链平台上的区块信息是否匹配,是则执行步骤S11,否则通过区块链平台给客户端返回错误信息;
具体的,本实施例中步骤S10包括:区块链平台中的任一(即任意一个)节点判断接收到的可验证凭据与区块链的区块信息中的哈希标识是否一致,是则执行步骤S11,否则通过区块链平台给客户端返回错误信息;
步骤S11:区块链平台中的当前节点将接收到的第二签名值上传至区块链平台上,通过区块链平台给客户端返回成功信息;
具体的,在本实施例中,步骤S6包括:
步骤S61:区块链平台中的每个节点将根据提议块中的用户信息查询本地数据库中是否保存有对应的身份证哈希值,是则执行步骤S62,否则通过区块链平台给客户端返回的包含错误信息的第一数据,执行步骤S8;
可选的,在本实施例中,步骤S61之前还包括:区块链平台中的每个节点查询本地数据库,判断提议块所属节点是否做过实名认证,是则执行步骤S62,否则通过区块链平台给客户端返回包含错误信息的第一数据,执行步骤S8;
可选的,本实施例中的用户信息包含用户经过实名认证才能拥有的信息,或者用户在实名认证时使用的信息,例如手机号或者银行账号;如用户在银行开户的时候做了实名认证,实名认证时留了联系手机号;相应地,在步骤S61中,银行节点可以根据提议块中的手机号或银行账号检索到身份证哈希值;
步骤S62:区块链平台中的每个节点将用户信息、签名公钥、第一签名值、身份证哈希值写入当前节点的本地数据库中,执行步骤S7。
可选的,本实施例中步骤S6中的步骤S61之前还包括:
步骤Y1:区块链平台中的每个节点判断是否接收到提议节点广播的合法提议块,是则执行步骤Y2,否则向其他节点广播预投票空数据;
具体的,本实施例中的步骤Y1包括:区块链平台中的每个节点使用保存的提议节点的公钥对接收到的提议块进行验签,如验签成功则执行步骤Y2,否则向其他节点广播预投票空数据;
步骤Y2:区块链平台中的每个节点对接收到的提议块进行签名得到提议块签名结果,根据所述提议块签名结果组织成预投票块,并全网广播预投票块;
具体的,本实施例中的步骤Y2包括:区块链平台中的每个节点解析接收到的提议块得到第一组织数据,使用当前节点的自身私钥对第一组织数据进行签名,并根据签名结果组成预投票块,向全网广播预投票块;
步骤Y3:区块链平台中的每个节点判断是否收到预设数量的其他节点广播的预投票块,是则执行步骤Y4,否则报错;
步骤Y4:区块链平台中的每个节点判断收到的预投票块是否为验证合法,是则将提议块签名结果组织成预提交块,并全网广播预提交块;否则报错;
具体的,本实施例中的步骤Y4包括:区块链平台中的每个节点接收到其他节点广播的预投票时均会进行验签,如验签通过并且在预设时间内接收到大于或等于预设数量的其他节点广播的提议块时,当前节点对最后收到的提议块进行签名,根据签名结果组织预提交块并全网广播;若当前节点在预设时间内未收到或收到小于预设数量的其他节点广播的数据,则向其他节点广播预设数据;
步骤Y5:区块链平台中的每个节点判断是否收到预设数量的其他节点广播的预提交块,是则执行步骤Y6,否则报错;
步骤Y6:区块链平台中的每个节点获取区块链平台缓存的第一组织数据,解析第一组织数据得到随机数、用户信息、签名公钥、第一签名值;
可选的,本实施例方法中的步骤S7之前还可以包括:区块链平台中的每个节点判断广播提议块的节点的等级是否为高级,是则执行步骤S7,否则通过区块链平台给客户端返回包含错误信息的第一数据,执行步骤S8。
可选的,本实施例方法中的步骤S7之前还可以包括:区块链平台中的每个节点判断提议块中的积分值是否达到设定值,是则执行步骤S7,否则通过区块链平台给客户端返回包含错误信息的第一数据,执行步骤S8;
节点在组成提议块时将自身拥有的全部积分值或部分积分值组成到提议块中。
本实施例中的区块链平台可以为电子合同平台,也可以为其他平台。
本发明提供一种基于去中心化身份(英文全称:Decentralized Identity,简称DID)框架、软硬件相结合的电基于区块链的实名认证技术方案,硬件设备生成签名数据,用于验证用户身份的合法性;基于区块链将拥有经过实名制认证用户的机构与区块链平台以去中心化的方式对接,为区块链平台提供可验证的凭据,与硬件设备相结合用于验证签名者身份的真实性以及需要实名认证的信息与签名者身份的一致性,有助于确定电子合同订立时用户身份的真实性,适用于在不方便面对面进行签订劳务合同等应用场景。
实施例二
本发明实施例二提供了一种基于区块链的实名认证方法,本实施例的中区块链平台具体为电子合同区块链平台,硬件设备为硬件钱包,以对签订电子合同的用户身份进行认证为例进行详细说明,如图2-图4所示,包括:
步骤101:当客户端接收到用户的触发信息时判断触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到用户信息时执行步骤102,如为需要实名认证的合同信息则执行步骤131;
具体的,在本实施例中,用户信息包括银行卡号和手机号;
例如,本实施例中的银行卡号为: 62166102000165870100,手机号为:15011452365;
步骤102:客户端判断是否有硬件设备连接,是则执行步骤103,否则报错;
步骤103:客户端生成预设长度的随机数;
例如,本实施例中的随机数长度为8字节;
例如,本实施例中的随机数:f49e5654afbc4d5c;
步骤104:客户端从硬件设备中获取签名公钥;
例如,本实施例中的签名公钥为:94725f307520b8bb811f14ba17ef4b5f6e1e304518d468a5c4e848e54b90b0b3f9d840afc59b7cf823d0e66a18c307d97d9577b0d15fcb3e6548215669ba2f65d6635c470284c0eedb0ba3034c88e9be537e6f5fc8e3a17a0ee4a2276476e3f7e26a382822af3a07e57bce5c0ef4e02206684b386e3ccbb14bc394592068602d;
可选的,本实施例中的步骤103与步骤104的顺序可调换;
步骤105:客户端将随机数、用户信息和签名公钥顺序拼接得到第一拼接数据;
例如,本实施例中的第一拼接数据为:f49e5654afbc4d5c6216610200016587010094725f307520b8bb811f14ba17ef4b5f6e1e304518d468a5c4e848e54b90b0b3f9d840afc59b7cf823d0e66a18c307d97d9577b0d15fcb3e6548215669ba2f65d6635c470284c0eedb0ba3034c88e9be537e6f5fc8e3a17a0ee4a2276476e3f7e26a382822af3a07e57bce5c0ef4e02206684b386e3ccbb14bc394592068602d;
步骤106:客户端将第一拼接结果发送给硬件设备;
步骤107:硬件设备使用内置的签名私钥对第一拼接结果进行签名得到第一签名值;
例如,本实施例中的第一签名值为:1fe062c3caa4a3f37e230cce4a7acb4230c2010746cbf7ca061d023587b3b678f93563bba622d65a0b80065adc6d53fcee709e9fabce83796d9669c94adf6e92756d69e6872750d0dcb4dad04ae75604c27d06e8ebeb835ed2789d7428739d530bbb0dbd73f5f0968b9395e849ba3b623fe4bcbb14efb730ea13e6fca0bc957d;
步骤108:硬件设备将第一签名值返回给客户端;
步骤109:客户端将随机数、用户信息、签名公钥和第一签名值按照预设格式进行组织得到第一组织数据;
优选的,本实施例中的预设格式为json数据格式;
例如,本实施例中的第一组织数据为:RAND=f49e5654afbc4d5c,BANKNUM=62166102000165870100,PUBKEY=94725f307520b8bb811f14ba17ef4b5f6e1e304518d468a5c4e848e54b90b0b3f9d840afc59b7cf823d0e66a18c307d97d9577b0d15fcb3e6548215669ba2f65d6635c470284c0eedb0ba3034c88e9be537e6f5fc8e3a17a0ee4a2276476e3f7e26a382822af3a07e57bce5c0ef4e02206684b386e3ccbb14bc394592068602d,SIGNATURE=1fe062c3caa4a3f37e230cce4a7acb4230c2010746cbf7ca061d023587b3b678f93563bba622d65a0b80065adc6d53fcee709e9fabce83796d9669c94adf6e92756d69e6872750d0dcb4dad04ae75604c27d06e8ebeb835ed2789d7428739d530bbb0dbd73f5f0968b9395e849ba3b623fe4bcbb14efb730ea13e6fca0bc957d;
步骤110:客户端将第一组织数据上传至电子合同区块链上;
在本实施例中,客户端将第一组织数据通过第一接口上传至电子合同区块链平台;具体的,第一接口为rpc接口中的broadcast_tx_commit,客户端通过第一组织数据向电子合同区块链平台申请签发可验证凭据;
步骤111:电子合同区块链平台接收客户端上传的第一组织数据并缓存;
具体的,在本实施例中,电子合同区块链平台将第一组织数据缓存到内存池缓冲区(mempol cache);
步骤112:电子合同区块链平台判断第一组织数据是否符合预设格式,是则执行步骤113,否则报错;
在本实施例中,步骤112包括:电子合同区块链平台判断第一组织数据是否符合json数据格式,是则执行步骤113,否则报错;
例如,本实施例中的json数据格式为:RAND=XX,BANKNUM=XX,PUBKEY=XX,SIGNATURE=XX;
步骤113:电子合同区块链平台对第一组织数据进行解析并判断解析结果是否为空,是则报错,否则执行步骤114;
步骤114:电子合同区块链平台将解析得到的随机数、用户信息和签名公钥顺序拼接得到第二拼接结果,对第二拼接结果进行哈希运算得到第一哈希值,使用解析得到的签名公钥对解析得到的第一签名值进行解密得到第一解密结果,从第一解密结果的预设位置上截取预设长度的数据得到第一截取数据;
例如,本实施例中的第二拼接结果为:f49e5654afbc4d5c6216610200016587010094725f307520b8bb811f14ba17ef4b5f6e1e304518d468a5c4e848e54b90b0b3f9d840afc59b7cf823d0e66a18c307d97d9577b0d15fcb3e6548215669ba2f65d6635c470284c0eedb0ba3034c88e9be537e6f5fc8e3a17a0ee4a2276476e3f7e26a382822af3a07e57bce5c0ef4e02206684b386e3ccbb14bc394592068602d;
第一哈希值为:3BE326A996176F096A7727DBAAF72D15D4EE076F5C89926418C3AA60F1DEB87E;
第一解密结果为:0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003031300D0609608648016503040201050004203BE326A996176F096A7727DBAAF72D15D4EE076F5C89926418C3AA60F1DEB87E;
第一截取数据为:3BE326A996176F096A7727DBAAF72D15D4EE076F5C89926418C3AA60F1DEB87E;
本实施例中的哈希算法是 sha-256;
步骤115:电子合同区块链平台判断第一哈希值与第一截取数据是否一致,是则执行步骤116,否则报错;
具体的,在本实施例中,步骤112-步骤115是通过CheckTx功能接口来实现的;
步骤116:电子合同区块链平台将第一组织数据保存至区块链内存池,电子合同区块链平台中的提议节点从内存池中获取第一组织数据并根据第一组织数据组成提议块,向全网广播提议块;
在本实施例中,电子合同区块链平台至少设置三个节点,每个节点按照预定的顺序成为提议节点,由提议节点从区块链内存池中获取交易数据,组成提议块,然后全网广播,电子合同区块链上的所有节点对提议块进行验证。
步骤117:电子合同区块链平台中的每个节点判断是否接收到提议节点广播的提议块,是则执行步骤118,否则向其他节点广播预投票空数据;
具体的,在本实施例中,步骤117包括:电子合同区块链平台中的每个节点使用保存的提议节点的公钥对接收到的提议块进行验签,如验签成功则执行步骤118,否则电子合同区块链平台中的当前节点向其他节点广播预投票空数据;
进一步地,如验签失败则表示电子合同区块链平台中的每个节点由于离线或者网络延迟等原因造成超时未收到广播的数据;
步骤118:电子合同区块链平台中的每个节点对接收到的提议块进行签名得到提议块签名结果,根据提议块签名结果组织成预投票块,并全网广播预投票块;
具体的,电子合同区块链平台中的每个节点解析接收到的提议块得到第一组织数据,使用自身私钥对第一组织数据进行签名,并根据签名结果组成预投票块,向全网广播预投票块,表示已收到当前操作请求;
步骤119:电子合同区块链平台中的每个节点判断是否收到预设数量的其他节点广播的预投票块,是则执行步骤120,否则报错;
本实施例中的预设数量为大于等于区块链平台所有验证者节点数的2/3;
步骤120:电子合同区块链平台中的每个节点判断收到的预投票块是否为验证合法,是则根据提议块签名结果组织成预提交块,并全网广播预提交块;否则报错;
在本实施例中,电子合同区块链平台中的每个节点接收到其他节点广播的预投票块时均会进行验签,如验签通过并且接收到大于等于预设数量其他节点广播的提议块时,当前节点对最后收到的提议块进行签名,根据签名结果组织预提交块并全网广播;若当前节点由于离线或者网络延迟等原因在预设时间内未收到预设数量的其他节点广播的数据,会向其他节点广播一个预设数据;
步骤121:电子合同区块链平台中的每个节点判断是否收到预设数量的其他节点广播的预提交快,是则执行步骤122,否则报错;
本实施例中的预设数量为大于等于2/3;
在本实施例中,电子合同区块链平台中的每个节点接收到其他节点广播的数据时均会进行验签,如验签通过并且接收到大于等于预设数量其他节点广播的预提交的数据时,提议节点进入提交阶段继续执行122;否则不提交,进行下一轮共识,执行步骤116;
步骤122:电子合同区块链平台中的每个节点获取区块链平台缓存的第一组织数据,解析第一组织数据得到随机数、用户信息、签名公钥、第一签名值;
步骤123:电子合同区块链平台中的每个节点将用户信息作为关键信息查询验证者本地数据库中是否保存有对应的身份证哈希值,是则执行步骤124,否则通过电子合同区块链平台给客户端返回包含错误信息的第一数据,执行步骤129;
在本实施例中,电子合同区块链平台中的一个节点作为提议者,所有节点就作为验证者,验证者的操作均相同;
步骤124:电子合同区块链平台中的每个节点将用户信息、签名公钥、第一签名值、身份证哈希值写入当前节点的本地数据库中;
步骤125:电子合同区块链平台中的每个节点将当前操作的区块编号自加1,对当前操作的区块编号进行哈希计算得到第一哈希值;
步骤126:电子合同区块链平台中的每个节点将第一组织数据、身份证哈希值、第一哈希值打包成区块信息并提交至区块链平台上,生成与区块信息对应的可验证凭证;
步骤127:电子合同区块链平台中的每个节点根据成功信息和可验证凭证生成第一数据,执行步骤128;
步骤128:电子合同区块链平台中的每个节点通过电子合同区块链平台将第一数据发送给客户端;
例如,本实施例中的第一数据为:
{
'jsonrpc': '2.0',
'id': '',
'result':
{'check_tx': {'code': 0, 'data': None, 'log': '', 'info': '', 'gasWanted': '0', 'gasUsed': '0', 'events': [], 'codespace': ''},
'deliver_tx': {'code': 0, 'data': 'MTNCQ0VDM0E3QkM2QUVDODlFNkUyNkU5NUEwMUIxRURFRUIzNkMwNjIyREJCQTg0NzgyRkQ1RDgzRjlBMUJDNg==', 'log': 'Transactiondelivered succesfully', 'info': '', 'gasWanted': '0', 'gasUsed': '0', 'events': [], 'codespace': ''}, 'hash': '5D2528A0AA24B1BAEEFDC649476E94B34B926B67CAE701A9F40DD8776D28B612', 'height': '9'}
};
步骤129:客户端判断接收到的电子合同区块链平台中的节点返回的第一数据中是否包含成功信息,是则将第一数据中的可验证凭证发送给硬件设备,否则报错;
例如,本实施例中的第一数据中的'code' 值为 0 ,则包含成功信息;
客户端解析第一数据得到的可验证凭证为:13BCEC3A7BC6AEC89E6E26E95A01B1EDEEB36C0622DBBA84782FD5D83F9A1BC6;
步骤130:硬件设备接收可验证凭证并保存;
步骤131:客户端判断是否有硬件设备连接,是则执行步骤132,否则报错;
步骤132:客户端将需要实名认证的合同信息发送给硬件设备;
步骤133:硬件设备使用签名私钥对接收到的需要实名认证的合同信息进行签名得到合同签名值,将合同签名值、保存的可验证凭据发送给客户端;
步骤134:客户端将合同签名值和可验证凭据通过电子合同区块链平台发送给节点;
步骤135:电子合同区块链平台中的任一节点判断接收到的可验证凭与区块链的区块信息是否匹配,是则执行步骤136,否则通过电子合同区块链平台给客户端返回错误信息;
具体的,在本实施例中,步骤135包括:电子合同区块链平台中的每个节点判断接收到的可验证凭与区块链的区块信息中的哈希标识是否一致,是则匹配,否则不匹配;
例如,本实施例中的区块信息为:
RAND=f49e5654afbc4d5c,
BANKNUM=62166102000165870100,
PUBKEY=94725f307520b8bb811f14ba17ef4b5f6e1e304518d468a5c4e848e54b90b0b3f9d840afc59b7cf823d0e66a18c307d97d9577b0d15fcb3e6548215669ba2f65d6635c470284c0eedb0ba3034c88e9be537e6f5fc8e3a17a0ee4a2276476e3f7e26a382822af3a07e57bce5c0ef4e02206684b386e3ccbb14bc394592068602d,
SIGNATURE=1fe062c3caa4a3f37e230cce4a7acb4230c2010746cbf7ca061d023587b3b678f93563bba622d65a0b80065adc6d53fcee709e9fabce83796d9669c94adf6e92756d69e6872750d0dcb4dad04ae75604c27d06e8ebeb835ed2789d7428739d530bbb0dbd73f5f0968b9395e849ba3b623fe4bcbb14efb730ea13e6fca0bc957d,
HASHID=13BCEC3A7BC6AEC89E6E26E95A01B1EDEEB36C0622DBBA84782FD5D83F9A1BC6,
SIGNATURET=2e59a5349e86388bae3b4d396434e2059ec19f13787576f54758b89fceecb70ce149c66c166882030a6a45a032c0726ebcb6c51923b42ebc0ccb3461c0e4da74b19d46f4d440ac6b11fc4fb4888968a800d81a7ae24b0b6ae8de4c9117206db7fa44a3405cb51ff3cc4d23e8d566bca4541f977ba5d8c9ff2122c7060f121eb2;
区块链的区块信息中的哈希标识为:13BCEC3A7BC6AEC89E6E26E95A01B1EDEEB36C0622DBBA84782FD5D83F9A1BC6,与可验凭证对比一致,执行步骤136;
步骤136:电子合同区块链平台中的当前节点将接收到的合同签名值上传到区块链上,并通过电子合同区块链平台给客户端返回成功信息。
在本实施例中,可验证凭证可标识用户身份,用于签订合同等操作;即在线下只要用户拥有该可验证凭证则表示该用户是身份合法的用户。
本发明提供一种基于去中心化身份(英文全称:Decentralized Identity,简称DID)框架、软硬件相结合的电子合同的实名认证技术方案,硬件设备生成签名数据,用于验证合同的完整性以及签名的合法性;基于区块链将拥有经过实名制认证用户的机构与电子合同服务平台以去中心化的方式对接,为电子合同服务平台提供可验证的凭据,与硬件设备相结合用于验证签名者身份的真实性以及合同内容与签名者身份的一致性,有助于确定电子合同订立时用户身份的真实性,适用于在不方便面对面进行签订劳务合同的应用场景。
实施例三
本发明实施例三提供一种基于区块链的实名认证系统,该系统包括客户端和区块链平台,区块链平台包括至少三个节点,每个节点轮流作为提议节点,区块链平台中的每个节点对提议节点广播的数据进行验证;客户端包括:第一判断模块、生成签名模块、组织上传模块、第二判断模块,每个节点包括:获取组成模块、第二验证模块、生成发送模块、第三判断模块、接收上传模块;
第一判断模块,用于当接收到用户的触发信息时判断触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到用户信息时触发生成签名模块,如为需要实名认证的信息则触发签名发送模块;
生成签名模块,用于生成随机数并根据随机数、用户信息和从硬件设备中获取的签名公钥生成第一拼接数据,使用硬件设备对第一拼接数据进行签名得到第一签名值;
组织上传模块,用于根据随机数、用户信息、签名公钥和第一签名值生成第一组织数据并上传至区块链平台;
在本实施例中,组织上传模块具体用于将随机数、用户信息、签名公钥和第一签名值按照预设格式进行组织得到第一组织数据,将第一组织数据上传至区块链平台;
区块链平台用于接收第一组织数据并对第一组织数据进行验证,如验证成功则将第一组织数据保存至区块链内存池,如验证失败则给客户端返回错误信息;
获取组成模块,用于从区块链内存池中获取第一组织数据并根据第一组织数据组成提议块,向全网广播提议块;
第二验证模块,用于对接收到的提议块进行验证,如验证成功则触发生成发送模块,否则通过区块链平台给客户端返回包含错误信息的第一数据,触发第二判断模块;
生成发送模块,用于根据提议块中的第一组织数据生成区块信息并提交至区块链上,生成与区块信息对应的可验证凭证,将包含可验证凭证和成功信息的第一数据通过区块链平台发送给客户端,触发第二判断模块;
第二判断模块,用于判断接收到的第一数据中是否包含成功信息,是则将第一数据中的可验证凭证保存到硬件设备中,否则报错;
签名发送模块,用于使用硬件设备对需要实名认证的信息进行签名得到第二签名值,将第二签名值和硬件设备中的可验证凭证通过区块链平台发送给节点;
第三判断模块,用于判断接收到的可验证凭证与区块链平台上的区块信息是否匹配,是则触发接收上传模块,否则通过区块链平台给客户端返回错误信息;
接收上传模块,用于将接收到的第二签名值上传至区块链平台上,通过区块链平台给客户端返回成功信息;
第二验证模块包括:
第一查询单元,用于将根据提议块中的用户信息查询本地数据库中是否保存有对应的身份证哈希值,是则触发第一写入单元,否则通过区块链平台给客户端返回的包含错误信息的第一数据,触发第二判断模块;
第一写入单元,用于将用户信息、签名公钥、第一签名值、身份证哈希值写入当前节点的本地数据库中,触发第二判断模块。
具体的,本实施例系统还包括硬件设备,其中,生成签名模块包括:
第一判断单元,用于判断是否有硬件设备连接,是则触发第一生成单元,否则报错;
第一生成获取单元,用于生成预设长度的随机数,并从硬件设备中获取签名公钥;
第一拼接单元,用于将随机数、用户信息和签名公钥顺序拼接得到第一拼接数据;
第一发送单元,用于将第一拼接数据发送给硬件设备;
硬件设备用于使用内置的签名私钥对接收到的第一拼接数据进行签名得到第一签名值,将第一签名值返回给客户端。
进一步的,本实施例中的第一验证模块包括:
接收缓存单元,用于接收客户端上传的第一组织数据并缓存;
第二判断单元,用于判断第一组织数据是否符合预设格式,是则触发第一解析判断单元,否则给客户端返回错误信息;
第一解析判断单元,用于对第一组织数据进行解析并判断解析结果是否为空,是则给客户端返回错误信息,否则触发拼接截取单元;
拼接截取单元,用于将解析得到的随机数、用户信息和签名公钥顺序拼接得到第二拼接结果,对第二拼接结果进行哈希运算得到第一哈希值,使用签名公钥对解析得到的第一签名值进行解密得到第一解密结果,从第一解密结果的预设位置上截取预设长度的数据得到第一截取数据;
第三判断单元,用于判断第一哈希值与第一截取数据是否一致,是则触发第一保存模块,否则给客户端返回错误信息。
可选的,在本实施例中,第二验证模块还包括:
第四判断单元,用于判断是否接收到提议节点广播的合法提议块,是则触发签名广播单元,否则向其他节点广播预投票空数据;
其中,本实施例中的第四判断单元具体用于使用保存的提议节点的公钥对接收到的提议块进行验签,如验签成功则触发签名广播单元,否则向其他节点广播预投票空数据;
签名广播单元,用于对接收到的提议块进行签名得到提议块签名结果,根据提议块签名结果组织成预投票块,并全网广播预投票块;
其中,本实施例中的签名广播单元具体用于解析接收到的提议块得到第一组织数据,使用自身私钥对第一组织数据进行签名,并根据签名结果组成预投票块,向全网广播预投票块;
第五判断单元,用于判断是否收到预设数量的其他节点广播的预投票块,是则触发第六判断单元,否则报错;
第六判断单元,用于判断收到的预投票块是否为验证合法,是则将提议块签名结果组织成预提交块,并全网广播预提交块;否则报错;
其中,本实施例中的第六判断单元具体用于接收到其他节点广播的预投票块时均会进行验签,如验签通过并且在预设时间内接收到大于或等于预设数量的其他节点广播的提议块时,当前节点对最后收到的提议块进行签名,根据签名结果组织预提交块并全网广播;若当前节点在预设时间内未收到或收到小于预设数量的其他节点广播的数据,则向其他节点广播预设数据;
第七判断单元,用于判断是否收到预设数量的其他节点广播的预提交块,是则触发获取解析单元,否则报错;
获取解析单元,用于获取区块链平台缓存的第一组织数据,解析第一组织数据得到随机数、用户信息、签名公钥、第一签名值。
具体的,在本实施例中,生成发送模块包括:
第一计算单元,用于将当前操作的区块编号自加1,对当前操作的区块编号进行哈希计算得到第一哈希值;
打包生成单元,用于将第一组织数据、身份证哈希值、第一哈希值打包成区块信息并提交至区块链平台上,生成与区块信息对应的可验证凭证;
生成发送单元,用于根据成功信息和可验证凭证生成第一数据,将第一数据发送给客户端。
具体的,在本实施例中,该系统还包括硬件设备,其中,第二判断模块用于判断接收到的区块链平台中的每个节点返回的第一数据中是否包含成功信息,是则将第一数据中的可验证凭证发送给硬件设备,否则报错;
硬件设备用于接收可验证凭证并保存。
具体的,在本实施例中,该系统还包括硬件设备,其中,签名发送模块包括:第八判断单元、第一发送单元和接收发送单元;
第八判断单元,用于判断是否有硬件设备连接,是则触发第一发送单元,否则报错;
第一发送单元,用于将需要实名认证的信息发送给硬件设备;
硬件设备用于使用签名私钥对接收到的需要实名认证的信息进行签名得到第二签名值,将第二签名值和保存的可验证凭据发送给客户端;
接收发送单元,用于接收第二签名值和可验证凭据并将第二签名值和可验证凭据发送给区块链平台。
其中,在本实施例中,第三判断模块具体用于判断接收到的可验证凭据与区块链的区块信息中的哈希标识是否一致,是则触发接收上传模块,否则通过区块链平台给客户端返回错误信息。
可选的,本实施例的系统还可包括:第四判断模块,用于判断广播提议块的节点的等级是否为高级,是则触发生成发送模块,否则通过区块链平台给客户端返回包含错误信息的第一数据,触发第二判断模块。
可选的,本实施例的系统还可包括:第五判断模块,用于判断提议块中的积分值是否达到设定值,是则触发生成发送模块,否则通过所述区块链平台给客户端返回包含错误信息的第一数据,触发第二判断模块。
可选的,在本实施例中,第二验证模块还包括:查询判断单元,用于查询本地数据库,判断提议块所属节点是否做过实名认证,是则触发第一查询单元,否则通过区块链平台给客户端返回包含错误信息的第一数据,触发第二判断模块。
本发明提供一种基于去中心化身份(英文全称:Decentralized Identity,简称DID)框架、软硬件相结合的电基于区块链的实名认证技术方案,硬件设备生成签名数据,用于验证用户身份的合法性;基于区块链将拥有经过实名制认证用户的机构与区块链平台以去中心化的方式对接,为区块链平台提供可验证的凭据,与硬件设备相结合用于验证签名者身份的真实性以及合同内容与签名者身份的一致性,有助于确定电子合同订立时用户身份的真实性,适用于在不方便面对面进行签订劳务合同的应用场景。
可选的,本申请的实施例还提供了一种电子设备,电子设备包括至少一个处理器、存储器及存储在该存储器上并可被至少一个处理器执行的指令,至少一个处理器执行该指令以实现上述实施例中的基于区块链的实名认证方法。该电子设备是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件,本申请实施例对此不作具体限定;该芯片与存储器耦合,用于执行存储器中存储的计算机程序,以执行上述实施例中公开的基于区块链的实名认证方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机程序。在电子设备上加载和执行计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个基站、电子设备、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个基站、电子设备、服务器或数据中心进行传输。所述计算机可读存储介质可以是电子设备能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、 或者半导体介质(例如固态硬盘(solid state disk,SSD))等。本申请实施例中,电子设备可以包括前面所述的硬件设备和终端设备。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (19)
1.一种基于区块链的实名认证方法,其特征在于,包括:
步骤S1:当客户端接收到用户的触发信息时判断所述触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到所述用户信息时执行步骤S2,如为需要实名认证的信息则执行步骤S9;
步骤S2:所述客户端生成随机数并根据所述随机数、所述用户信息和从硬件设备中获取的签名公钥生成第一拼接数据,使用所述硬件设备对所述第一拼接数据进行签名得到第一签名值;
步骤S3:所述客户端根据所述随机数、所述用户信息、所述签名公钥和所述第一签名值生成第一组织数据并上传至区块链平台;
步骤S4:所述区块链平台接收所述第一组织数据并对所述第一组织数据进行验证,如验证成功则执行步骤S5,如验证失败则给所述客户端返回错误信息;
步骤S5:所述区块链平台将所述第一组织数据保存至区块链内存池,所述区块链平台中的提议节点从所述区块链内存池中获取所述第一组织数据并根据所述第一组织数据组成提议块,向全网广播提议块;所述区块链平台包括至少三个节点,每个节点轮流作为提议节点;
步骤S6:所述区块链平台中的每个节点对所述提议块进行验证,如验证成功则执行步骤S7,否则通过区块链平台给所述客户端返回包含错误信息的第一数据,执行步骤S8;
步骤S7:所述区块链平台中的每个节点根据所述提议块中的第一组织数据生成区块信息并提交至区块链上,生成与所述区块信息对应的可验证凭证,将包含所述可验证凭证和成功信息的第一数据通过所述区块链平台发送给所述客户端,执行步骤S8;
步骤S8:所述客户端判断所述第一数据中是否包含成功信息,是则将所述第一数据中的可验证凭证保存到硬件设备中,否则报错;
步骤S9:所述客户端使用硬件设备对所述需要实名认证的信息进行签名得到第二签名值,将所述第二签名值和所述硬件设备中的可验证凭证通过区块链平台发送给节点;
步骤S10:所述区块链平台中的任一节点判断接收到的所述可验证凭证与区块链平台上的区块信息是否匹配,是则执行步骤S11,否则通过所述区块链平台给所述客户端返回错误信息;
步骤S11:所述区块链平台中的当前节点将接收到的第二签名值上传至所述区块链平台上,通过所述区块链平台给所述客户端返回成功信息;
所述步骤S6包括:
步骤S61:所述区块链平台中的每个节点根据所述提议块中的用户信息查询本地数据库中是否保存有对应的身份证哈希值,是则执行步骤S62,否则通过所述区块链平台给所述客户端返回的包含错误信息的第一数据,执行步骤S8;
步骤S62:所述区块链平台中的每个节点将所述用户信息、所述签名公钥、所述第一签名值、所述身份证哈希值写入当前节点的本地数据库中,执行步骤S7。
2.如权利要求1所述的方法,其特征在于,所述步骤S2包括:
步骤S2-1:所述客户端判断是否有硬件设备连接,是则执行步骤S2-2,否则报错;
步骤S2-2:所述客户端生成预设长度的随机数,并从所述硬件设备中获取签名公钥;
步骤S2-3:所述客户端将随机数、所述用户信息和所述签名公钥顺序拼接得到第一拼接数据;
步骤S2-4:所述客户端将所述第一拼接数据发送给所述硬件设备;
步骤S2-5:所述硬件设备使用内置的签名私钥对接收到的所述第一拼接数据进行签名得到第一签名值,将所述第一签名值返回给所述客户端。
3.如权利要求1所述的方法,其特征在于,所述步骤S3具体为:所述客户端将所述随机数、所述用户信息、所述签名公钥和所述第一签名值按照预设格式进行组织得到第一组织数据,将所述第一组织数据上传至区块链平台。
4.如权利要求3所述的方法,其特征在于,所述步骤S4包括:
步骤S41:所述区块链平台接收所述客户端上传的第一组织数据并缓存;
步骤S42:所述区块链平台判断所述第一组织数据是否符合预设格式,是则执行步骤S43,否则给所述客户端返回错误信息;
步骤S43:所述区块链平台对所述第一组织数据进行解析并判断解析结果是否为空,是则给所述客户端返回错误信息,否则执行步骤S44;
步骤S44:所述区块链平台将解析得到的随机数、用户信息和签名公钥顺序拼接得到第二拼接结果,对所述第二拼接结果进行哈希运算得到第一哈希值,使用所述签名公钥对解析得到的第一签名值进行解密得到第一解密结果,从所述第一解密结果的预设位置上截取预设长度的数据得到第一截取数据;
步骤S45:所述区块链平台判断所述第一哈希值与所述第一截取数据是否一致,是则执行步骤S5,否则给所述客户端返回错误信息。
5.如权利要求1所述的方法,其特征在于,所述步骤S61之前还包括:
步骤Y1:所述区块链平台中的每个节点判断是否接收到提议节点广播的合法提议块,是则执行步骤Y2,否则向其他节点广播预投票空数据;
步骤Y2:所述区块链平台中的每个节点对接收到的提议块进行签名得到提议块签名结果,根据所述提议块签名结果组织成预投票块,并全网广播预投票块;
步骤Y3:所述区块链平台中的每个节点判断是否收到预设数量的其他节点广播的预投票块,是则执行步骤Y4,否则报错;
步骤Y4:所述区块链平台中的每个节点判断收到的预投票块是否为验证合法,是则将所述提议块签名结果组织成预提交块,并全网广播预提交块;否则报错;
步骤Y5:所述区块链平台中的每个节点判断是否收到预设数量的其他节点广播的预提交块,是则执行步骤Y6,否则报错;
步骤Y6:所述区块链平台中的每个节点获取区块链平台缓存的第一组织数据,解析所述第一组织数据得到随机数、用户信息、签名公钥、第一签名值。
6.如权利要求5所述的方法,其特征在于,所述步骤Y1包括:所述区块链平台中的每个节点使用保存的提议节点的公钥对接收到的提议块进行验签,如验签成功则执行步骤Y2,否则向其他节点广播预投票空数据。
7.如权利要求5所述的方法,其特征在于,所述步骤Y2包括:所述区块链平台中的每个节点解析接收到的所述提议块得到第一组织数据,使用自身私钥对所述第一组织数据进行签名,并根据签名结果组成预投票块,向全网广播预投票块。
8.如权利要求5所述的方法,其特征在于,所述步骤Y4包括:所述区块链平台中的每个节点接收到其他节点广播的预投票块时均会进行验签,如验签通过并且在预设时间内接收到大于或等于预设数量的其他节点广播的提议块时,当前节点对最后收到的提议块进行签名,根据签名结果组织预提交块并全网广播;若当前节点在预设时间内未收到或收到小于预设数量的其他节点广播的数据,则向其他节点广播预设数据。
9.如权利要求1所述的方法,其特征在于,所述步骤S7包括:
步骤S71:所述区块链平台中的每个节点将当前操作的区块编号自加1,对当前操作的区块编号进行哈希计算得到第一哈希值;
步骤S72:所述区块链平台中的每个节点将所述第一组织数据、身份证哈希值、所述第一哈希值打包成区块信息并提交至区块链平台上,生成与所述区块信息对应的可验证凭证;
步骤S73:所述区块链平台中的每个节点根据成功信息和所述可验证凭证生成第一数据,将所述第一数据通过所述区块链平台发送给所述客户端。
10.如权利要求1所述的方法,其特征在于,所述步骤S8包括:所述客户端判断接收到的区块链平台中的节点返回的第一数据中是否包含成功信息,是则将第一数据中的可验证凭证发送给硬件设备,所述硬件设备接收所述可验证凭证并保存;否则报错。
11.如权利要求1所述的方法,其特征在于,所述步骤S9包括:
步骤S91:所述客户端判断是否有硬件设备连接,是则执行步骤S92,否则报错;
步骤S92:所述客户端将所述需要实名认证的信息发送给所述硬件设备;
步骤S93:所述硬件设备使用签名私钥对接收到的需要实名认证的信息进行签名得到第二签名值,将所述第二签名值和保存的所述可验证凭证 发送给所述客户端;
步骤S94:所述客户端将所述第二签名值和所述可验证凭证 发送给所述区块链平台。
12.如权利要求1所述的方法,其特征在于,所述步骤S10包括:所述区块链平台中的任一节点判断接收到的可验证凭证 与区块链的区块信息中的哈希标识是否一致,是则执行步骤S11,否则通过所述区块链平台给所述客户端返回错误信息。
13.如权利要求1所述的方法,其特征在于,所述步骤S7之前还包括:
所述区块链平台中的每个节点判断广播所述提议块的节点的等级是否为高级,是则执行步骤S7,否则通过所述区块链平台给所述客户端返回包含错误信息的第一数据,执行步骤S8。
14.如权利要求1所述的方法,其特征在于,所述步骤S7之前还包括:所述区块链平台中的每个节点判断提议块中的积分值是否达到设定值,是则执行步骤S7,否则通过所述区块链平台给所述客户端返回包含错误信息的第一数据,执行步骤S8。
15.如权利要求1所述的方法,其特征在于,所述步骤S61之前还包括:所述区块链平台中的每个节点查询本地数据库,判断所述提议块所属节点是否做过实名认证,是则执行步骤S61,否则通过所述区块链平台给所述客户端返回包含错误信息的第一数据,执行步骤S8。
16.一种基于区块链的实名认证系统,其特征在于,包括客户端和区块链平台,所述区块链平台包括至少三个节点,每个节点轮流作为提议节点,所述区块链平台中的每个节点对所述提议节点广播的数据进行验证;所述客户端包括:第一判断模块、生成签名模块、组织上传模块、第二判断模块,所述每个节点包括:获取组成模块、第二验证模块、生成发送模块、第三判断模块、接收上传模块;
所述第一判断模块,用于当接收到用户的触发信息时判断触发信息的类型,如为新增信息则提示用户输入用户信息,当接收到用户信息时触发所述生成签名模块,如为需要实名认证的信息则触发签名发送模块;
所述生成签名模块,用于生成随机数并根据所述随机数、所述用户信息和从硬件设备中获取的签名公钥生成第一拼接数据,使用所述硬件设备对所述第一拼接数据进行签名得到第一签名值;
所述组织上传模块,用于根据所述随机数、所述用户信息、所述签名公钥和所述第一签名值生成第一组织数据并上传至区块链平台;
所述区块链平台用于接收所述第一组织数据并对其进行验证,如验证成功则将所述第一组织数据保存至区块链内存池,如验证失败则给所述客户端返回错误信息;
所述获取组成模块,用于从所述区块链内存池中获取所述第一组织数据并根据所述第一组织数据组成提议块,向全网广播所述提议块;
所述第二验证模块,用于对接收到的所述提议块进行验证,如验证成功则触发所述生成发送模块,否则通过所述区块链平台给所述客户端返回包含错误信息的第一数据,触发所述第二判断模块;
所述生成发送模块,用于根据所述提议块中的第一组织数据生成区块信息并提交至区块链上,生成与所述区块信息对应的可验证凭证,将包含所述可验证凭证和成功信息的第一数据通过所述区块链平台发送给所述客户端,触发所述第二判断模块;
所述第二判断模块,用于判断接收到的所述第一数据中是否包含成功信息,是则将所述第一数据中的可验证凭证保存到硬件设备中,否则报错;
所述签名发送模块,用于使用硬件设备对所述需要实名认证的信息进行签名得到第二签名值,将所述第二签名值和所述硬件设备中的可验证凭证通过区块链平台发送给节点;
所述第三判断模块,用于判断接收到的所述可验证凭证与区块链平台上的区块信息是否匹配,是则触发所述接收上传模块,否则通过所述区块链平台给所述客户端返回错误信息;
所述接收上传模块,用于将接收到的第二签名值上传至区块链平台上,通过所述区块链平台给所述客户端返回成功信息;
所述第二验证模块包括:
第一查询单元,用于将根据所述提议块中的用户信息查询本地数据库中是否保存有对应的身份证哈希值,是则触发第一写入单元,否则通过所述区块链平台给所述客户端返回的包含错误信息的第一数据,触发所述第二判断模块;
所述第一写入单元,用于将所述用户信息、所述签名公钥、所述第一签名值、所述身份证哈希值写入当前节点的本地数据库中,触发所述第二判断模块。
17.一种电子设备,其特征在于,所述电子设备包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令以实现如权利要求1至15任一项所述的基于区块链的实名认证方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至15任一项所述的基于区块链的实名认证方法。
19.一种芯片,其特征在于,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行权利要求1-15任一项所述的基于区块链的实名认证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210381578.0A CN114499896B (zh) | 2022-04-13 | 2022-04-13 | 一种基于区块链的实名认证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210381578.0A CN114499896B (zh) | 2022-04-13 | 2022-04-13 | 一种基于区块链的实名认证方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114499896A CN114499896A (zh) | 2022-05-13 |
CN114499896B true CN114499896B (zh) | 2022-07-01 |
Family
ID=81488650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210381578.0A Active CN114499896B (zh) | 2022-04-13 | 2022-04-13 | 一种基于区块链的实名认证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114499896B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109687965A (zh) * | 2019-02-18 | 2019-04-26 | 哈尔滨工业大学(深圳) | 一种保护网络中用户身份信息的实名认证方法 |
CN111164594A (zh) * | 2019-07-02 | 2020-05-15 | 阿里巴巴集团控股有限公司 | 用于将去中心化标识映射到真实实体的系统和方法 |
CN112132447A (zh) * | 2020-09-21 | 2020-12-25 | 江苏省未来网络创新研究院 | 一种基于区块链的算力网络信任评估与保障算法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10956903B2 (en) * | 2019-07-31 | 2021-03-23 | Advanced New Technologies Co., Ltd. | Obtaining a blockchain-based, real-name, electronic bill |
US20210091960A1 (en) * | 2019-09-24 | 2021-03-25 | International Business Machines Corporation | Tracking and verification of physical assets |
US11184395B1 (en) * | 2020-05-13 | 2021-11-23 | International Business Machines Corporation | Cross-network identity provisioning |
-
2022
- 2022-04-13 CN CN202210381578.0A patent/CN114499896B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109687965A (zh) * | 2019-02-18 | 2019-04-26 | 哈尔滨工业大学(深圳) | 一种保护网络中用户身份信息的实名认证方法 |
CN111164594A (zh) * | 2019-07-02 | 2020-05-15 | 阿里巴巴集团控股有限公司 | 用于将去中心化标识映射到真实实体的系统和方法 |
CN112132447A (zh) * | 2020-09-21 | 2020-12-25 | 江苏省未来网络创新研究院 | 一种基于区块链的算力网络信任评估与保障算法 |
Non-Patent Citations (2)
Title |
---|
一种基于区块链的电子签章验证平台设计;李强等;《信息安全研究》;20191205(第12期);全文 * |
区块链物联网设备与无线访问点双向认证方案;唐呈俊等;《网络空间安全》;20191225(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114499896A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111970129B (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN108768988B (zh) | 区块链访问控制方法、设备及计算机可读存储介质 | |
CN101183932B (zh) | 一种无线应用服务的安全认证系统及其注册和登录方法 | |
CN108667612B (zh) | 一种基于区块链的信任服务架构及方法 | |
CN105187431B (zh) | 第三方应用的登录方法、服务器、客户端及通信系统 | |
CN112733178B (zh) | 基于数字证书认证的跨链信任方法、装置、设备以及介质 | |
CN112054906B (zh) | 一种密钥协商方法及系统 | |
CN111884811B (zh) | 一种基于区块链的数据存证方法和数据存证平台 | |
CN104125230B (zh) | 一种短信认证服务系统以及认证方法 | |
US20220020008A1 (en) | Smart Contract-Based Electronic Contract Preservation System | |
CN110177124A (zh) | 基于区块链的身份认证方法及相关设备 | |
CN108833431B (zh) | 一种密码重置的方法、装置、设备及存储介质 | |
CN112565294B (zh) | 一种基于区块链电子签名的身份认证方法 | |
CN112311779B (zh) | 应用于区块链系统的数据访问控制方法及装置 | |
CN115567312A (zh) | 一种可满足多种场景的联盟链数据权限管理系统和方法 | |
CN113129008B (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
CN114499896B (zh) | 一种基于区块链的实名认证方法及系统 | |
CN108833105B (zh) | 电子签名方法及装置 | |
CN102882882B (zh) | 一种用户资源授权方法 | |
US20220020010A1 (en) | Decentralized electronic contract attestation platform | |
CN117118640A (zh) | 一种数据处理方法、装置、计算机设备以及可读存储介质 | |
CN115221532A (zh) | 资源账单数据的存储方法、系统、计算机设备和存储介质 | |
CN113204773A (zh) | 基于公共网络的电子公证数据可信交换方法及其应用 | |
CN117040930B (zh) | 区块链网络的资源处理方法、装置、产品、设备和介质 | |
CN117454359A (zh) | 数据处理方法、装置、设备以及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |