基于区块链的身份认证方法、认证服务器及用户终端技术领域
本申请实施例涉及身份识别技术领域,尤其涉及基于区块链的身份认证方法、认
证服务器及用户终端。
背景技术
身份认证,是指在计算机及计算机网络系统中确认操作者身份的过程,从而确定
该用户是否具有对某种资源的访问和使用权限,进而使计算机和网络系统的访问策略能够
可靠、有效地执行,防止攻击者假冒合法用户获得资源的访问权限,保证系统和数据的安
全,以及授权访问者的合法利益。
如图1所示,在传统第三方身份认证系统中,假设应用服务器A需要确认用户B的身
份,则主要流程如下:1.1、用户B向第三方认证服务器C发送身份认证请求,该请求中包含应
用服务器A要求的信息;1.2、第三方认证服务器C对收到的请求进行验证,通过验证后对应
用服务器A要求的信息进行签名,然后将签名后的认证信息返回给用户B,该认证信息包含
对应用服务器A要求的信息进行的签名;1.3、用户B向应用服务器A发送认证信息,该认证信
息中包含第三方认证服务器C对应用服务器A要求的信息进行的签名;1.4、应用服务器A根
据签名,验证用户B的身份,并将验证结果返回给用户B。
但是,发明人在实现本发明的过程中发现,现有技术中的方式至少存在下述问题:
因为第三方认证服务器C将收到用户B登录应用服务器A的信息,如果第三方认证服务器C出
现信息泄露,将会对用户B和应用服务器A造成重大风险。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种解决上述问题的基于区块链的
身份认证方法、认证服务器及用户终端。
依据本申请实施例的一个方面,提供了一种基于区块链的身份认证方法,包括:根
据用户终端发送的身份认证请求获取用户终端的认证因子;根据认证因子创建智能合约,
智能合约中预存有对认证因子进行预设运算后的运算结果;将智能合约广播到区块链中,
以及将智能合约区块链账户地址发送给用户终端;根据用户终端利用认证因子执行智能合
约后得到的执行结果进行身份认证;其中,当执行结果与运算结果匹配时,确认身份认证成
功;当执行结果与运算结果不匹配时,确认身份认证失败。
依据本申请实施例的另一个方面,提供了一种基于区块链的身份认证方法,包括:
向认证服务器发送包含用户终端的认证因子的身份认证请求,以供认证服务器根据认证因
子创建智能合约,智能合约中预存有对认证因子进行预设运算后的运算结果;利用认证因
子执行智能合约,以供认证服务器根据智能合约的执行结果进行身份认证;其中,当执行结
果与运算结果匹配时身份认证成功;当执行结果与运算结果不匹配时身份认证失败。
依据本申请实施例的另一个方面,提供了一种认证服务器,包括:认证因子模块,
用于根据用户终端发送的身份认证请求获取用户终端的认证因子;智能合约模块,用于根
据认证因子创建智能合约,智能合约中预存有对认证因子进行预设运算后的运算结果;广
播模块,用于将智能合约广播到区块链中;反馈模块,用于将智能合约区块链账户地址发送
给用户终端;身份认证模块,用于根据用户终端利用认证因子执行智能合约后得到的执行
结果进行身份认证;其中,当执行结果与运算结果匹配时,确认身份认证成功;当执行结果
与运算结果不匹配时,确认身份认证失败。
依据本申请实施例的另一个方面,提供了一种用户终端,包括:请求发送模块,用
于向认证服务器发送包含用户终端的认证因子的身份认证请求,以供认证服务器根据认证
因子创建智能合约,智能合约中预存有对认证因子进行预设运算后的运算结果;执行模块,
用于利用认证因子执行智能合约,以供认证服务器根据智能合约的执行结果进行身份认
证;其中,当执行结果与运算结果匹配时身份认证成功;当执行结果与运算结果不匹配时身
份认证失败。
在本申请实施例提供的一种基于区块链的身份认证方法、认证服务器及用户终端
中,能够将认证信息存储到区块链中的智能合约中。由此一来,一方面,能够利用区块链网
络中的智能合约本身的特性,保证认证信息无法被篡改;另一方面,利用智能合约内部程序
执行验证认证信息的操作,从而进一步提升了身份认证时的安全性。由此可见,本申请实施
例中的身份认证方式具备极佳的安全性。
上述说明仅是本申请实施例技术方案的概述,为了能够更清楚了解本申请实施例
的技术手段,而可依照说明书的内容予以实施,并且为了让本申请实施例的上述和其它目
的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说
明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除
非有特别申明,附图中的图不构成比例限制。
图1是现有技术中身份认证流程的交互示意图;
图2是本申请实施例一提供的一种基于区块链的身份认证方法的流程图;
图3是本申请实施例二提供的一种基于区块链的身份认证方法的流程图;
图4是本申请实施例三提供的一种基于区块链的身份认证方法的流程图;
图5是本申请实施例四提供的一种认证服务器的结构示意图;
图6是本申请实施例五提供的一种认证服务器的结构示意图;
图7是本申请实施例六提供的一种用户终端的结构示意图;
图8是本申请实施例提供的身份认证方法中认证因子获取流程图;
图9是本申请实施例提供的身份认证方法的流程交互序列图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开
的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例
所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围
完整的传达给本领域的技术人员。
实施例一
图2是本申请实施例一提供的一种基于区块链的身份认证方法的流程图。如图2所
示,该方法包括:
步骤S210:根据用户终端发送的身份认证请求获取用户终端的认证因子。
在本申请实施例中,在接收到用户终端发送的身份认证请求后,从该身份认证请
求中获取用户终端的认证因子。其中,该请求信息中包含的认证因子可以是单个,也可以是
多个。认证因子的类型可以是用户名类型,可以是用户密码类型,可以是设备指纹类型,可
以是动态码类型,也可以是行为习惯类型,还可以是上述类型中多个的组合类型。本申请实
施例对此不作具体限定,本领域技术人员可以根据实际情况灵活设置。
步骤S220:根据认证因子创建智能合约,智能合约中预存有对认证因子进行预设
运算后的运算结果。
该智能合约的结构分成三个部分,分别是智能合约区块链账户地址、数据部分和
程序部分,该程序部分是根据身份认证请求的内容生成的程序脚本。该脚本的输入参数是
上述认证因子,输出结果为对上述认证因子进行预设数学变换的结果。其中,该数学变换包
括但不限于加、减、与、异或和哈希变换等。
步骤S230:将智能合约广播到区块链中,以及将智能合约区块链账户地址发送给
用户终端。
步骤S230的作用在于将智能合约的区块链账户地址提供给用户终端,以使该智能
合约得到网络中各节点上用户终端的认可,方便后续步骤的执行。该步骤的具体实施方式
可以由本领域技术人员根据实际情况灵活设置,只要能够达到上述目的即可,本发明对此
不作具体限定。
步骤S240:根据用户终端利用认证因子执行智能合约后得到的执行结果进行身份
认证。
将步骤S210中获取到的认证因子输入到智能合约中程序部分的脚本程序中,将获
得的执行结果与预存的运算结果进行比较。当执行结果与运算结果匹配时,确认身份认证
成功;当执行结果与运算结果不匹配时,确认身份认证失败。
综上所述,本申请实施例提供的一种基于区块链的身份认证方法能够将认证信息
存储到区块链中的智能合约中。由此一来,一方面,能够利用区块链网络中的智能合约本身
的特性,保证认证信息无法被篡改;另一方面,利用智能合约内部程序执行验证认证信息的
操作,从而进一步提升了身份认证时的安全性。由此可见,本申请实施例中的身份认证方式
具备极佳的安全性。
实施例二
图3是本申请实施例二提供的一种基于区块链的身份认证方法的流程图,该实施
例的执行主体优选为认证服务器。如图3所示,该方法包括:
步骤S310:根据用户终端发送的身份认证请求获取用户终端的认证因子。
在本申请实施例中,在接收到用户终端发送的身份认证请求后,从该身份认证请
求中获取用户终端的认证因子。其中,该请求信息中包含的认证因子可以是单个,也可以是
多个。认证因子的类型可以是用户名类型,可以是用户密码类型,可以是设备指纹类型,可
以是动态码类型,也可以是行为习惯类型,还可以是上述类型中多个的组合类型。本申请实
施例对此不作具体限定,本领域技术人员可以根据实际情况灵活设置。
其中,根据用户终端发送的身份认证请求获取用户终端的认证因子的步骤具体
是:根据身份认证请求中包含的用户终端类型标识确定认证因子的类型;向用户终端发送
包含认证因子类型的响应消息;接收用户终端根据响应消息返回的与认证因子类型相匹配
的认证因子。
为了便于理解本步骤,下面结合一幅流程交互图进一步详细阐述步骤S310的具体
实现细节。图8是本申请实施例提供的身份认证方法中认证因子获取流程图,如图所示:
8.1、用户终端向认证服务器发送身份认证请求;8.2、认证服务器根据用户终端的类型和认
证服务器本身的参数,选择所需的认证因子类型,该认证因子类型包括但不限于用户名、用
户密码、设备指纹、动态码和行为习惯等。之后,认证服务器向用户终端发送所需要的认证
因子类型要求;8.3、用户终端根据认证服务器的要求,向认证服务器回复认证服务器所需
要的认证因子。
步骤S320:根据认证因子创建智能合约。
其中,智能合约中预存有对认证因子进行预设运算后的运算结果。该智能合约的
结构分成三个部分,分别是智能合约区块链账户地址、数据部分和程序部分,该程序部分是
根据身份认证请求的内容生成的程序脚本。该脚本的输入参数是上述认证因子,输出结果
为对上述认证因子进行预设数学变换的结果。其中,该数学变换包括但不限于加、减、与、异
或和哈希变换等。
步骤S330:将智能合约广播到区块链中,以及将智能合约区块链账户地址发送给
用户终端。
具体的,将智能合约作为第一交易广播到区块链中,其中,第一交易的输出包括智
能合约的区块链账户地址、智能合约的哈希值以及进行预设运算后的运算结果。这样的智
能合约运行在区块链网络中,是一套以数字形式定义的承诺,区块链成为合约的参与方,负
责维护保存合约,并自动执行。同时,在智能合约生成后,将该智能合约的区块链账户地址
发送给用户终端,方便后续步骤的执行。步骤S330的作用在于将智能合约的区块链账户地
址提供给用户终端,该步骤的具体实施方式可以由本领域技术人员根据实际情况灵活设
置,只要能够达到上述目的即可,本发明对此不作具体限定。
步骤S340:根据用户终端利用认证因子执行智能合约后得到的执行结果进行身份
认证;其中,当执行结果与运算结果匹配时,确认身份认证成功;当执行结果与运算结果不
匹配时,确认身份认证失败。
其中,用户终端利用认证因子执行智能合约的具体步骤为:用户终端通过第二交
易来执行智能合约,该第二交易的输入包括用户终端的区块链账户地址,该第二交易的输
出包括智能合约的区块链账户地址和认证因子。
在本实施例中,根据用户终端利用认证因子执行智能合约后得到的执行结果进行
身份认证的步骤具体为:获取智能合约根据用户终端提供的认证因子进行预设运算后得到
的执行结果以及执行结果与运算结果进行匹配后的匹配结果,根据该匹配结果进行身份认
证。其中,当执行结果与运算结果匹配时,确认身份认证成功;当执行结果与运算结果不匹
配时,确认身份认证失败。
综上所述,本申请实施例提供的一种基于区块链的身份认证方法能够将认证信息
存储到区块链中的智能合约中。由此一来,一方面,能够利用区块链网络中的智能合约本身
的特性,保证认证信息无法被篡改;另一方面,利用智能合约内部程序执行验证认证信息的
操作,从而进一步提升了身份认证时的安全性。由此可见,本申请实施例中的身份认证方式
具备极佳的安全性。
实施例三
图4是本申请实施例三提供的一种基于区块链的身份认证方法的流程图,该实施
例的执行主体优选为用户终端。如图4所示,该方法包括:
步骤S410:向认证服务器发送包含用户终端的认证因子的身份认证请求,以供认
证服务器根据认证因子创建智能合约,智能合约中预存有对认证因子进行预设运算后的运
算结果。
其中,用户终端主动向认证服务器发送包含认证因子的身份认证请求,该认证请
求包括单个或多个认证因子,该认证因子包括但不限于用户名、用户密码、设备指纹、动态
码和行为习惯等。
在其他实施例中,向认证服务器发送包含用户终端的认证因子的身份认证请求的
步骤还可以是:根据认证服务器发送的认证因子类型,向该认证服务器发送包含与认证因
子类型向匹配的认证因子的身份认证请求。在该步骤中,用户终端向认证服务器发送不包
含认证因子的身份认证请求,认证服务器在收到请求后,根据用户终端类型和认证服务器
本身参数决定所需认证因子的类型,然后向用户终端发送所需认证因子类型要求,最后用
户终端根据类型要求回复所需的认证因子。
步骤S420:利用认证因子执行智能合约,以供认证服务器根据智能合约的执行结
果进行身份认证;其中,当执行结果与运算结果匹配时身份认证成功;当执行结果与运算结
果不匹配时身份认证失败。
其中,利用认证因子执行智能合约的步骤具体为通过第二交易来执行智能合约,
该第二交易的输入包括用户终端区块链账户地址,该第二交易的输出包括智能合约的区块
链账户地址和认证因子。
在本实施例中,根据用户终端利用认证因子执行智能合约后得到的执行结果进行
身份认证的步骤具体为:获取智能合约根据用户终端提供的认证因子进行预设运算后得到
的执行结果以及执行结果与运算结果进行匹配后的匹配结果,根据该匹配结果进行身份认
证。其中,当执行结果与运算结果匹配时,确认身份认证成功;当执行结果与运算结果不匹
配时,确认身份认证失败。
综上所述,本申请实施例提供的一种基于区块链的身份认证方法能够将认证信息
存储到区块链中的智能合约中。由此一来,一方面,能够利用区块链网络中的智能合约本身
的特性,保证认证信息无法被篡改;另一方面,利用智能合约内部程序执行验证认证信息的
操作,从而进一步提升了身份认证时的安全性。由此可见,本申请实施例中的身份认证方式
具备极佳的安全性。
为了便于理解本发明,下面结合图9的流程交互图进一步详细阐述上述方法的具
体实现细节:9.1、用户终端向认证服务器发送身份认证请求;9.2、认证服务器根据请求内
容生成智能合约程序部分的程序脚本;9.3、认证服务器以区块链的交易形式向区块链广播
该智能合约;9.4、认证服务器将该智能合约的区块链账户地址发送给用户终端;9.5、用户
终端以区块链的交易形式来执行区块链的智能合约;9.6、智能合约将认证请求中的认证因
子输入程序部分的程序脚本得出执行结果,与智能合约中的数学变换结果比较,如果两个
结果一致,则通过校验,区块链中的各节点验证智能合约,通过后在区块链网络中广播该智
能合约,当区块链网络中达成共识后写入区块链,因为上述智能合约的输出中包括认证服
务器的区块链账户地址,所以认证服务器能够收到认证结果,如果结果为认证通过,则身份
认证成功。
实施例四
图5是本申请实施例四提供的一种认证服务器的结构示意图。如图5所示,该认证
服务器包括:认证因子模块510、智能合约模块520、身份认证模块530、广播模块540以及反
馈模块550。
认证因子模块510,用于根据用户终端发送的身份认证请求获取用户终端的认证
因子。
在本申请实施例中,认证因子模块510在接收到用户终端发送的身份认证请求后,
从该身份认证请求中获取用户终端的认证因子。其中,该请求信息中包含的认证因子可以
是单个,也可以是多个。认证因子的类型可以是用户名类型,可以是用户密码类型,可以是
设备指纹类型,可以是动态码类型,也可以是行为习惯类型,还可以是上述类型中多个的组
合类型。本申请实施例对此不作具体限定,本领域技术人员可以根据实际情况灵活设置。
智能合约模块520,用于根据认证因子创建智能合约,智能合约中预存有对认证因
子进行预设运算后的运算结果。
该智能合约的结构分成三个部分,分别是智能合约区块链账户地址、数据部分和
程序部分,该程序部分是根据身份认证请求的内容生成的程序脚本。该脚本的输入参数是
上述认证因子,输出结果为对上述认证因子进行预设数学变换的结果。其中,该数学变换包
括但不限于加、减、与、异或和哈希变换等。
智能合约模块520还与广播模块540和反馈模块550相连接。
其中,广播模块540,用于将智能合约广播到区块链中。反馈模块550,用于将智能
合约区块链账户地址发送给用户终端。广播模块540和反馈模块550的作用都在于将智能合
约的区块链账户地址提供给用户终端,以使该智能合约得到网络中各节点上用户终端的认
可,方便后续操作。
身份认证模块530,用于根据用户终端利用认证因子执行智能合约后得到的执行
结果进行身份认证;其中,当执行结果与运算结果匹配时,确认身份认证成功;当执行结果
与运算结果不匹配时,确认身份认证失败。
身份认证模块530将认证因子模块510中获取到的认证因子输入到智能合约中程
序部分的脚本程序中,将获得的执行结果与预存的运算结果进行比较。当执行结果与运算
结果匹配时,确认身份认证成功;当执行结果与运算结果不匹配时,确认身份认证失败。
综上所述,本申请实施例提供的一种认证服务器,能够将认证信息存储到区块链
中的智能合约中。由此一来,一方面,能够利用区块链网络中的智能合约本身的特性,保证
认证信息无法被篡改;另一方面,利用智能合约内部程序执行验证认证信息的操作,从而进
一步提升了身份认证时的安全性。由此可见,本申请实施例中的身份认证方式具备极佳的
安全性。
实施例五
图6是本申请实施例五提供的一种认证服务器的结构示意图。如图6所示,该认证
服务器包括:认证因子模块610、智能合约模块620、身份认证模块630、广播模块640以及反
馈模块650。
认证因子模块610,用于根据用户终端发送的身份认证请求获取用户终端的认证
因子。
在本申请实施例中,认证因子模块610在接收到用户终端发送的身份认证请求后,
从该身份认证请求中获取用户终端的认证因子。其中,该请求信息中包含的认证因子可以
是单个,也可以是多个。认证因子的类型可以是用户名类型,可以是用户密码类型,可以是
设备指纹类型,可以是动态码类型,也可以是行为习惯类型,还可以是上述类型中多个的组
合类型。本申请实施例对此不作具体限定,本领域技术人员可以根据实际情况灵活设置。
其中,认证因子模块610具体用于:根据身份认证请求中包含的用户终端类型标识
确定认证因子的类型;向用户终端发送包含认证因子类型的响应消息;接收用户终端根据
响应消息返回的与认证因子类型相匹配的认证因子。
智能合约模块620,用于根据认证因子创建智能合约,智能合约中预存有对认证因
子进行预设运算后的运算结果。
该智能合约的结构分成三个部分,分别是智能合约区块链账户地址、数据部分和
程序部分,该程序部分是根据身份认证请求的内容生成的程序脚本。该脚本的输入参数是
上述认证因子,输出结果为对上述认证因子进行预设数学变换的结果。其中,该数学变换包
括但不限于加、减、与、异或和哈希变换等。
智能合约模块620与广播模块640相连接。广播模块640,用于将智能合约广播到区
块链中。具体的,广播模块640将智能合约作为第一交易广播到区块链中,其中,第一交易的
输出包括智能合约的区块链账户地址、智能合约的哈希值以及进行预设运算后的运算结
果。这样的智能合约运行在区块链网络中,是一套以数字形式定义的承诺,区块链成为合约
的参与方,负责维护保存合约,并自动执行。
与此同时,智能合约模块620还与反馈模块650相连接。反馈模块650,用于将智能
合约区块链账户地址发送给用户终端。在智能合约生成后,反馈模块将该智能合约的区块
链账户地址发送给用户终端,方便后续操作。
身份认证模块630,用于根据用户终端利用认证因子执行智能合约后得到的执行
结果进行身份认证;其中,当执行结果与运算结果匹配时,确认身份认证成功;当执行结果
与运算结果不匹配时,确认身份认证失败。
在本申请实施例中,身份认证模块630具体包括:获取子模块631,用于获取智能合
约根据用户终端提供的认证因子进行预设运算后得到的执行结果以及执行结果与运算结
果进行匹配后的匹配结果;认证子模块632,用于根据该匹配结果进行身份认证。其中,当执
行结果与运算结果匹配时,确认身份认证成功;当执行结果与运算结果不匹配时,确认身份
认证失败。
上述各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此处不再赘
述。
综上所述,本申请实施例提供的一种认证服务器,能够将认证信息存储到区块链
中的智能合约中。由此一来,一方面,能够利用区块链网络中的智能合约本身的特性,保证
认证信息无法被篡改;另一方面,利用智能合约内部程序执行验证认证信息的操作,从而进
一步提升了身份认证时的安全性。由此可见,本申请实施例中的身份认证方式具备极佳的
安全性。
实施例六
图7是本申请实施例六提供的一种用户终端的结构示意图。如图7所示,该用户终
端包括:请求发送模块710和执行模块720。
请求发送模块710,用于向认证服务器发送包含用户终端的认证因子的身份认证
请求,以供认证服务器根据认证因子创建智能合约,智能合约中预存有对认证因子进行预
设运算后的运算结果。
其中,请求发送模块710主动向认证服务器发送包含认证因子的身份认证请求,该
认证请求包括单个或多个认证因子,该认证因子包括但不限于用户名、用户密码、设备指
纹、动态码和行为习惯等。
在其他实施例中,请求发送模块710还可以具体用于:根据认证服务器发送的认证
因子类型,向该认证服务器发送包含与认证因子类型向匹配的认证因子的身份认证请求。
在该步骤中,请求发送模块710向认证服务器发送不包含认证因子的身份认证请求,认证服
务器在收到请求后,根据用户终端类型和认证服务器本身参数决定所需认证因子的类型,
然后向请求发送模块710发送所需认证因子类型要求,最后请求发送模块710根据类型要求
回复所需的认证因子。
执行模块720,用于利用认证因子执行智能合约,以供认证服务器根据智能合约的
执行结果进行身份认证;其中,当执行结果与运算结果匹配时身份认证成功;当执行结果与
运算结果不匹配时身份认证失败。
其中,执行模块720具体用于:通过第二交易来执行智能合约,该第二交易的输入
包括用户终端区块链账户地址,该第二交易的输出包括智能合约的区块链账户地址和认证
因子。
在本实施例中,执行模块720还具体用于:获取智能合约根据用户终端提供的认证
因子进行预设运算后得到的执行结果以及执行结果与运算结果进行匹配后的匹配结果,根
据该匹配结果进行身份认证。其中,当执行结果与运算结果匹配时,确认身份认证成功;当
执行结果与运算结果不匹配时,确认身份认证失败。
上述各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此处不再赘
述。
综上所述,本申请实施例提供的一种用户终端,能够将认证信息存储到区块链中
的智能合约中。由此一来,一方面,能够利用区块链网络中的智能合约本身的特性,保证认
证信息无法被篡改;另一方面,利用智能合约内部程序执行验证认证信息的操作,从而进一
步提升了身份认证时的安全性。由此可见,本申请实施例中的身份认证方式具备极佳的安
全性。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所
包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请实施例
的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的
任意之一都可以以任意的组合方式来使用。
本申请实施例的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器
上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践
中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的装置中的一些或者
全部部件的一些或者全部功能。本申请实施例还可以实现为用于执行这里所描述的方法的
一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现
本申请实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形
式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形
式提供。
应该注意的是上述实施例对本申请实施例进行说明而不是对本申请实施例进行
限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。
在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包
含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排
除存在多个这样的元件。本申请实施例可以借助于包括有若干不同元件的硬件以及借助于
适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可
以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。
可将这些单词解释为名称。
本发明公开了:A1、一种基于区块链的身份认证方法,其中,包括:
根据用户终端发送的身份认证请求获取所述用户终端的认证因子;
根据所述认证因子创建智能合约,所述智能合约中预存有对所述认证因子进行预
设运算后的运算结果;
将所述智能合约广播到区块链中,以及将所述智能合约区块链账户地址发送给所
述用户终端;
根据所述用户终端利用所述认证因子执行所述智能合约后得到的执行结果进行
身份认证;
其中,当所述执行结果与所述运算结果匹配时,确认身份认证成功;当所述执行结
果与所述运算结果不匹配时,确认身份认证失败。
A2、根据A1所述的方法,其中,所述将所述智能合约广播到区块链中的步骤具体包
括:
将所述智能合约作为第一交易广播到区块链中,所述第一交易的输出包括:智能
合约区块链账户地址、智能合约哈希值、以及进行预设运算后的运算结果。
A3、根据A1所述的方法,其中,所述根据所述用户终端利用所述认证因子执行所述
智能合约后得到的执行结果进行身份认证的步骤具体包括:
获取所述智能合约根据用户终端提供的所述认证因子进行所述预设运算后得到
的执行结果,以及所述执行结果与所述运算结果进行匹配后的匹配结果,根据所述匹配结
果进行身份认证。
A4、根据A1所述的方法,其中,所述用户终端利用所述认证因子执行所述智能合约
的步骤具体包括:
所述用户终端通过第二交易来执行所述智能合约,所述第二交易的输入包括:用
户终端区块链账户地址;所述第二交易的输出包括:智能合约区块链账户地址、认证因子。
A5、根据A1所述的方法,其中,所述根据用户终端发送的身份认证请求获取所述用
户终端的认证因子的步骤具体包括:
根据所述身份认证请求中包含的用户终端类型标识确定认证因子类型;
向所述用户终端发送包含所述认证因子类型的响应消息;
接收所述用户终端根据所述响应消息返回的与所述认证因子类型相匹配的认证
因子。
A6、根据A5所述的方法,其中,所述认证因子类型包括以下中的至少一个:用户名
类型、用户密码类型、设备指纹类型、动态码类型以及行为习惯类型。
本发明还公开了:B7、一种基于区块链的身份认证方法,其中,包括:
向认证服务器发送包含用户终端的认证因子的身份认证请求,以供所述认证服务
器根据所述认证因子创建智能合约,所述智能合约中预存有对所述认证因子进行预设运算
后的运算结果;
利用所述认证因子执行所述智能合约,以供所述认证服务器根据所述智能合约的
执行结果进行身份认证;其中,当所述执行结果与所述运算结果匹配时身份认证成功;当所
述执行结果与所述运算结果不匹配时身份认证失败。
B8、根据B7所述的方法,其中,所述利用所述认证因子执行所述智能合约,以供所
述认证服务器根据所述智能合约的执行结果进行身份认证的步骤具体包括:
将所述认证因子提供给所述智能合约,以供所述智能合约根据所述认证因子进行
所述预设运算后得到执行结果,并将所述执行结果与所述运算结果进行匹配后的匹配结果
提供给所述认证服务器。
B9、根据B8所述的方法,其中,所述利用所述认证因子执行所述智能合约的步骤具
体包括:
通过第二交易来执行所述智能合约,所述第二交易的输入包括:用户终端区块链
账户地址;所述第二交易的输出包括:智能合约区块链账户地址、认证因子。
B10、根据B7所述的方法,其中,所述向认证服务器发送包含用户终端的认证因子
的身份认证请求的步骤具体包括:
根据认证服务器发送的认证因子类型,向所述认证服务器发送包含与所述认证因
子类型相匹配的认证因子的身份认证请求。
本发明还公开了:C11、一种认证服务器,其中,包括:
认证因子模块,用于根据用户终端发送的身份认证请求获取所述用户终端的认证
因子;
智能合约模块,用于根据所述认证因子创建智能合约,所述智能合约中预存有对
所述认证因子进行预设运算后的运算结果;
广播模块,用于将所述智能合约广播到区块链中;
反馈模块,用于将所述智能合约区块链账户地址发送给所述用户终端;
身份认证模块,用于根据所述用户终端利用所述认证因子执行所述智能合约后得
到的执行结果进行身份认证;其中,当所述执行结果与所述运算结果匹配时,确认身份认证
成功;当所述执行结果与所述运算结果不匹配时,确认身份认证失败。
C12、根据C11所述的认证服务器,其中,所述广播模块具体用于:
将所述智能合约作为第一交易广播到区块链中,所述第一交易的输出包括:智能
合约区块链账户地址、智能合约哈希值、以及进行预设运算后的运算结果。
C13、根据C11所述的认证服务器,其中,所述身份认证模块具体用于:
获取所述智能合约根据用户终端提供的所述认证因子进行所述预设运算后得到
的执行结果,以及所述执行结果与所述运算结果进行匹配后的匹配结果,根据所述匹配结
果进行身份认证。
C14、根据C11所述的认证服务器,其中,所述认证因子模块具体用于:
根据所述身份认证请求中包含的用户终端类型标识确定认证因子类型;
向所述用户终端发送包含所述认证因子类型的响应消息;
接收所述用户终端根据所述响应消息返回的与所述认证因子类型相匹配的认证
因子。
C15、根据C14所述的方法,其中,所述认证因子类型包括以下中的至少一个:用户
名类型、用户密码类型、设备指纹类型、动态码类型以及行为习惯类型。
本发明还公开了:D16、一种用户终端,其中,包括:
请求发送模块,用于向认证服务器发送包含用户终端的认证因子的身份认证请
求,以供所述认证服务器根据所述认证因子创建智能合约,所述智能合约中预存有对所述
认证因子进行预设运算后的运算结果;
执行模块,用于利用所述认证因子执行所述智能合约,以供所述认证服务器根据
所述智能合约的执行结果进行身份认证;其中,当所述执行结果与所述运算结果匹配时身
份认证成功;当所述执行结果与所述运算结果不匹配时身份认证失败。
D17、根据D16所述的用户终端,其中,所述执行模块具体用于:
将所述认证因子提供给所述智能合约,以供所述智能合约根据所述认证因子进行
所述预设运算后得到执行结果,并将所述执行结果与所述运算结果进行匹配后的匹配结果
提供给所述认证服务器。
D18、根据D17所述的用户终端,其中,执行模块具体用于:
通过第二交易来执行所述智能合约,所述第二交易的输入包括:用户终端区块链
账户地址;所述第二交易的输出包括:智能合约区块链账户地址、认证因子。
D19、根据D16所述的用户终端,其中,请求发送模块具体用于:
根据认证服务器发送的认证因子类型,向所述认证服务器发送包含与所述认证因
子类型相匹配的认证因子的身份认证请求。