身份注册方法及系统、身份认证方法及系统转让专利

申请号 : CN201610838652.1

文献号 : CN106453271B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪德嘉郭宇王少凡朋翔吕明泽

申请人 : 江苏通付盾科技有限公司

摘要 :

本发明公开了一种身份注册方法及系统、身份认证方法及系统、应用服务器、用户终端。其中,身份注册方法包括:接收用户终端发送的注册请求;生成注册挑战消息,将所述注册挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述注册挑战消息之后,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中;监听所述注册消息;验证所述注册消息确定身份注册是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份注册的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户注册验证,提升了注册过程的安全性。

权利要求 :

1.一种身份注册方法,所述方法在应用服务器侧执行,其特征在于,包括:接收用户终端发送的注册请求;

生成注册挑战消息,将所述注册挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述注册挑战消息之后,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中;

监听所述注册消息;

验证所述注册消息确定身份注册是否成功;

其中,所述注册请求包含所述用户终端的用户标识和所述用户终端在区块链网络中的账户地址;

所述注册挑战消息的源地址为应用服务器在区块链网络中的账户地址,目的地址为所述用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对所述注册挑战消息的签名,所述注册挑战消息的消息实体包含所述用户标识。

2.根据权利要求1所述的身份注册方法,其特征在于,所述注册挑战消息的消息实体还包含随机数。

3.根据权利要求1所述的身份注册方法,其特征在于,所述监听注册消息进一步包括:判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的注册消息;

若是,则获取所述注册消息;

若否,则响应注册失败。

4.根据权利要求1-3中任一项所述的身份注册方法,其特征在于,所述验证注册消息确定身份注册是否成功进一步包括:判断在第二指定时间内在所述区块链网络中是否生成包含用户标识的注册消息;

若否,则响应注册失败。

5.根据权利要求4所述的身份注册方法,其特征在于,所述验证注册消息确定身份注册是否成功进一步包括:若判断出在第二指定时间内在所述区块链网络中生成多条包含用户标识的注册消息,则获取生成时间戳最早的注册消息;

判断所述生成时间戳最早的注册消息的发送地址是否与用户终端在区块链网络中的账户地址一致;

若否,则响应注册失败。

6.根据权利要求4所述的身份注册方法,其特征在于,所述验证注册消息确定身份注册是否成功进一步包括:检查所述注册消息的消息签名与用户终端在区块链网络中的账户地址是否相匹配;

若否,则响应注册失败。

7.根据权利要求4所述的身份注册方法,其特征在于,所述验证注册消息确定身份注册是否成功进一步包括:判断所述注册消息所包含的随机数与所述注册挑战消息所包含的随机数是否一致;

若不一致,则响应注册失败。

8.根据权利要求5-7中任一项所述的身份注册方法,其特征在于,所述验证注册消息确定身份注册是否成功进一步包括:在未判断出注册失败的情况下,记录用户标识和所述注册消息的源地址,响应注册成功。

9.根据权利要求8所述的身份注册方法,其特征在于,在所述生成注册挑战消息之前或监听注册消息之前,所述方法还包括:判断是否存储有用户标识;

若是,则响应注册失败。

10.一种身份注册方法,所述方法在用户终端侧执行,其特征在于,包括:向应用服务器发送注册请求,以供所述应用服务器生成注册挑战消息,将所述注册挑战消息广播到区块链网络中;

在所述区块链网络中接收注册挑战消息,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中,以供所述应用服务器监听注册消息,验证所述注册消息确定身份注册是否成功;

其中,所述注册请求包含所述用户终端的用户标识和所述用户终端在区块链网络中的账户地址;

所述注册消息的源地址为所述用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对所述注册消息的签名,所述注册消息的消息实体包含所述用户标识。

11.根据权利要求10所述的身份注册方法,其特征在于,所述注册消息的消息实体还包含从所述注册挑战消息中提取的随机数。

12.一种身份认证方法,所述方法在应用服务器侧执行,其特征在于,包括:接收用户终端发送的认证请求;

监听用户终端生成并在区块链网络中广播的认证消息;

验证所述认证消息确定身份认证是否成功;

其中,所述认证挑战消息的源地址为应用服务器在区块链网络中的账户地址,目的地址为所述用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对所述认证挑战消息的签名。

13.根据权利要求12所述的身份认证方法,其特征在于,所述认证请求包含所述用户终端的用户标识。

14.根据权利要求13所述的身份认证方法,其特征在于,所述认证请求还包含所述用户终端在区块链网络中的账户地址。

15.根据权利要求14所述的身份认证方法,其特征在于,在所述监听用户终端生成并在区块链网络中广播的认证消息之前,所述方法还包括:生成认证挑战消息,将所述认证挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述认证挑战消息之后,响应挑战并生成认证消息,将所述认证消息广播到所述区块链网络中。

16.根据权利要求12所述的身份认证方法,其特征在于,所述认证挑战消息的消息实体包含随机数。

17.根据权利要求12所述的身份认证方法,其特征在于,所述监听用户终端生成并在区块链网络中广播的认证消息进一步包括:判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的认证消息;

若是,则获取所述认证消息;

若否,则响应认证失败。

18.根据权利要求12所述的身份认证方法,其特征在于,所述验证所述认证消息确定身份认证是否成功进一步包括:判断所述认证消息中包含的用户标识和/或所述认证消息的源地址是否与所述认证请求中包含的用户标识和/或所述用户终端在区块链网络中的账户地址是否一致;

若否,则响应认证失败。

19.根据权利要求16所述的身份认证方法,其特征在于,所述验证所述认证消息确定身份认证是否成功进一步包括:判断所述认证消息所包含的随机数与所述认证挑战消息所包含的随机数是否一致;

若否,则响应认证失败。

20.一种身份认证方法,所述方法在用户终端侧执行,其特征在于,包括:向应用服务器发送认证请求;

生成认证消息,将所述认证消息广播到区块链网络中,以供所述应用服务器监听认证消息,验证所述认证消息确定身份认证是否成功;

其中,所述认证消息的源地址为所述用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对所述认证消息的签名。

21.根据权利要求20所述的身份认证方法,其特征在于,所述认证请求包含所述用户终端的用户标识。

22.根据权利要求21所述的身份认证方法,其特征在于,所述认证请求还包含所述用户终端在区块链网络中的账户地址。

23.根据权利要求22所述的身份认证方法,其特征在于,所述生成认证消息进一步包括:在所述区块链网络中接收认证挑战消息,响应挑战生成认证消息,其中,所述认证挑战消息是所述应用服务器生成并广播到所述区块链网络中的消息。

24.根据权利要求20所述的身份认证方法,其特征在于,所述认证消息的消息实体包含从所述认证挑战消息中提取的随机数。

25.一种应用服务器,其特征在于,包括:

接收模块,用于接收用户终端发送的注册请求;

挑战发起模块,用于生成注册挑战消息,将所述注册挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述注册挑战消息之后,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中;

监听模块,用于监听所述注册消息;

验证模块,用于验证所述注册消息确定身份注册是否成功;

其中,所述注册请求包含所述用户终端的用户标识和所述用户终端在区块链网络中的账户地址;

所述注册挑战消息的源地址为应用服务器在区块链网络中的账户地址,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对所述注册挑战消息的签名,所述注册挑战消息的消息实体包含所述用户标识。

26.根据权利要求25所述的应用服务器,其特征在于,所述注册挑战消息的消息实体还包含随机数。

27.根据权利要求25所述的应用服务器,其特征在于,所述监听模块进一步用于:判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的注册消息;

若是,则获取所述注册消息;

若否,则响应注册失败。

28.根据权利要求25-27中任一项所述的应用服务器,其特征在于,所述验证模块包括:第一判断单元,用于判断在第二指定时间内在所述区块链网络中是否生成包含用户标识的注册消息;

响应单元,用于在所述第一判断单元判断出在第二指定时间内在所述区块链网络中没有生成包含用户标识的注册消息的情况下,响应注册失败。

29.根据权利要求28所述的应用服务器,其特征在于,所述第一判断单元还用于:判断在第二指定时间内在所述区块链网络中是否生成多条包含用户标识的注册消息;

所述验证模块还包括:第二判断单元,用于判断生成时间戳最早的注册消息的发送地址是否与用户终端在区块链网络中的账户地址一致;

所述响应单元还用于:在所述第二判断单元判断出生成时间戳最早的注册消息的发送地址与用户终端在区块链网络中的账户地址不一致的情况下,响应注册失败。

30.根据权利要求28所述的应用服务器,其特征在于,所述验证模块还包括:检查单元,用于检查所述注册消息的消息签名与用户终端在区块链网络中的账户地址是否相匹配;

所述响应单元还用于:在所述检查单元检查出所述注册消息的消息签名与用户终端在区块链网络中的账户地址不相匹配的情况下,响应注册失败。

31.根据权利要求29所述的应用服务器,其特征在于,所述验证模块还包括:第三判断单元,用于判断所述注册消息所包含的随机数与所述注册挑战消息所包含的随机数是否一致;

所述响应单元还用于:在所述第三判断单元判断出所述注册消息所包含的随机数与所述注册挑战消息所包含的随机数不一致的情况下,响应注册失败。

32.根据权利要求29-31中任一项所述的应用服务器,其特征在于,所述响应单元还用于:在未判断出注册失败的情况下,记录用户标识和所述注册消息的源地址,响应注册成功。

33.根据权利要求32所述的应用服务器,其特征在于,还包括:判断模块,用于判断是否存储有用户标识;

所述响应单元还用于:若所述判断模块判断出存储有用户标识,则响应注册失败。

34.一种用户终端,其特征在于,包括:

发送模块,用于向应用服务器发送注册请求,以供所述应用服务器生成注册挑战消息,将所述注册挑战消息广播到区块链网络中;

挑战响应模块,用于在所述区块链网络中接收注册挑战消息,响应挑战;

生成模块,用于生成注册消息,将所述注册消息广播到所述区块链网络中,以供所述应用服务器监听注册消息,验证所述注册消息确定身份注册是否成功;

其中,所述注册请求包含所述用户终端的用户标识和所述用户终端在区块链网络中的账户地址;

所述注册消息的源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对所述注册消息的签名,所述注册消息的消息实体包含所述用户标识。

35.根据权利要求34所述的用户终端,其特征在于,所述注册消息的消息实体还包含从所述注册挑战消息中提取的随机数。

36.一种身份注册系统,其特征在于,包括:权利要求25-33中任一项所述的应用服务器以及权利要求34-35中任一项所述的用户终端。

37.一种应用服务器,其特征在于,包括:

接收模块,用于接收用户终端发送的认证请求;

监听模块,用于监听用户终端生成并在区块链网络中广播的认证消息;

验证模块,用于验证所述认证消息确定身份认证是否成功;

其中,所述认证挑战消息的源地址为在区块链网络中的账户,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对所述认证挑战消息的签名。

38.根据权利要求37所述的应用服务器,其特征在于,所述认证请求包含所述用户终端的用户标识。

39.根据权利要求38所述的应用服务器,其特征在于,所述认证请求还包含所述用户终端在区块链网络中的账户地址。

40.根据权利要求39所述的应用服务器,其特征在于,还包括:挑战发起模块,用于生成认证挑战消息,将所述认证挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述认证挑战消息之后,响应挑战并生成认证消息,将所述认证消息广播到所述区块链网络中。

41.根据权利要求37所述的应用服务器,其特征在于,所述认证挑战消息的消息实体还包含随机数。

42.根据权利要求37所述的应用服务器,其特征在于,所述监听模块进一步用于:判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的认证消息;

若是,则获取所述认证消息;

若否,则响应认证失败。

43.根据权利要求37所述的应用服务器,其特征在于,所述验证模块进一步包括:第一判断单元,用于判断所述认证消息中包含的用户标识和/或所述认证消息的源地址是否与所述认证请求中包含的用户标识和/或用户终端在区块链网络中的账户地址是否一致;

响应单元,用于在所述第一判断单元判断出所述认证消息中包含的用户标识和/或所述认证消息的源地址与所述认证请求中包含的用户标识和/或用户终端在区块链网络中的账户地址不一致的情况下,响应认证失败。

44.根据权利要求41所述的应用服务器,其特征在于,所述验证模块进一步包括:第二判断单元,用于判断所述认证消息所包含的随机数与所述认证挑战消息所包含的随机数是否一致;

响应单元,用于在所述第二判断单元判断出所述认证消息所包含的随机数与所述认证挑战消息所包含的随机数不一致的情况下,响应认证失败。

45.一种用户终端,其特征在于,包括:

发送模块,用于向应用服务器发送认证请求;

生成模块,用于生成认证消息,将所述认证消息广播到区块链网络中,以供所述应用服务器监听认证消息,验证所述认证消息确定身份认证是否成功;

其中,所述认证消息的源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对所述认证消息的签名,所述认证消息的消息实体包含所述用户标识。

46.根据权利要求45所述的用户终端,其特征在于,所述认证请求包含所述用户终端的用户标识。

47.根据权利要求46所述的用户终端,其特征在于,所述认证请求还包含所述用户终端在区块链网络中的账户地址。

48.根据权利要求47所述的用户终端,其特征在于,还包括:挑战响应模块,用于在所述区块链网络中接收认证挑战消息,响应挑战;其中,所述认证挑战消息是所述应用服务器生成并广播到所述区块链网络中的消息。

49.根据权利要求45所述的用户终端,其特征在于,所述认证消息的消息实体包含从所述认证挑战消息中提取的随机数。

50.一种身份认证系统,其特征在于,包括:权利要求37-44中任一项所述的应用服务器以及权利要求45-49中任一项所述的用户终端。

说明书 :

身份注册方法及系统、身份认证方法及系统

技术领域

[0001] 本发明涉及互联网技术领域,具体涉及一种身份注册方法及系统、身份认证方法及系统、应用服务器、用户终端。

背景技术

[0002] 挑战握手认证协议(Challenge-Handshake Authentication Protocol,简称:CHAP)是一个用来验证用户或网络提供者的协议,负责提供验证服务的机构通过三次握手周期性的校验对端的身份,可在初始链路建立时完成,在链路建立之后重复进行。
[0003] 区块链是一种新型去中心化分布式系统协议。其具有信息不可伪造和篡改、无需任何中心化机构的审核的优势。区块链技术解决了拜占庭将军问题,大大降低了现实社会的信任成本,重新定义互联网时代的信任机制。作为比特币的底层技术,区块链本质上是一个去中心化、开放的数据库,区块链是一串使用密码学方法相关联产生的数据块链,每一个区块中包含了一定数量的比特币网络交易信息。通过将需要信任背书的数据存入比特币交易账本中,实现可信的,去中心化的信用背书。
[0004] 在传统CHAP系统中,假设验证者A需要确认用户终端B的身份,如图1所示,主要流程如下:
[0005] 1.端对端连接建立之后,授权验证者A发送挑战信息给需要被验证的端B;
[0006] 2.端B使用单向散列(one-way hash)函数计算(将用户明文密钥和挑战信息作为参数)响应结果,并返回该响应结果给验证者A;
[0007] 3.验证者A计算一个期望的哈希值和收到的响应结果进行匹配,如果两者匹配,则认证通过,否则终止该连接。
[0008] 后续验证者A在随机的间隔中,会发送新的挑战信息给端B,并重复1-3步进行认证。
[0009] 现有的CHAP协议流程主要有以下优点:通过在随机的间隔中发送挑战信息可以有效的解决重放攻击;由于口令不会在网络中传播,因此能够改进基于用户名/口令身份认证方式的安全性。
[0010] 但是,CHAP协议流程也存在如下问题:
[0011] (1)传统认证过程依赖中心授权系统,如果中心授权系统出现了无法工作或产生错误信息,将导致认证无法进行或者出现错误。
[0012] (2)验证需要密钥明文信息,难以通过网络建立起认证服务器与用户之间共享密钥。

发明内容

[0013] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的身份注册方法及系统、身份认证方法及系统、应用服务器、用户终端。
[0014] 根据本发明的一个方面,提供了一种身份注册方法,所述方法在应用服务器侧执行,包括:
[0015] 接收用户终端发送的注册请求;
[0016] 生成注册挑战消息,将所述注册挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述注册挑战消息之后,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中;
[0017] 监听所述注册消息;
[0018] 验证所述注册消息确定身份注册是否成功。
[0019] 根据本发明的另一方面,提供了一种身份注册方法,所述方法在用户终端侧执行,包括:
[0020] 向应用服务器发送注册请求,以供所述应用服务器生成注册挑战消息,将所述注册挑战消息广播到区块链网络中;
[0021] 在所述区块链网络中接收注册挑战消息,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中,以供所述应用服务器监听注册消息,验证所述注册消息确定身份注册是否成功。
[0022] 根据本发明的另一方面,提供了一种身份认证方法,所述方法在应用服务器侧执行,包括:
[0023] 接收用户终端发送的认证请求;
[0024] 监听用户终端生成并在区块链网络中广播的认证消息;
[0025] 验证所述认证消息确定身份认证是否成功。
[0026] 根据本发明的另一方面,提供了一种身份认证方法,所述方法在用户终端侧执行,包括:
[0027] 向应用服务器发送认证请求;
[0028] 生成认证消息,将所述认证消息广播到区块链网络中,以供所述应用服务器监听认证消息,验证所述认证消息确定身份认证是否成功。
[0029] 根据本发明的另一方面,提供了一种应用服务器,包括:
[0030] 接收模块,用于接收用户终端发送的注册请求;
[0031] 挑战发起模块,用于生成注册挑战消息,将所述注册挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述注册挑战消息之后,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中;
[0032] 监听模块,用于监听所述注册消息;
[0033] 验证模块,用于验证所述注册消息确定身份注册是否成功。
[0034] 根据本发明的另一方面,提供了一种用户终端,包括:
[0035] 发送模块,用于向应用服务器发送注册请求,以供所述应用服务器生成注册挑战消息,将所述注册挑战消息广播到区块链网络中;
[0036] 挑战响应模块,用于在所述区块链网络中接收注册挑战消息,响应挑战;
[0037] 生成模块,用于生成注册消息,将所述注册消息广播到所述区块链网络中,以供所述应用服务器监听注册消息,验证所述注册消息确定身份注册是否成功。
[0038] 根据本发明的另一方面,提供了一种身份注册系统,包括:上述的应用服务器以及用户终端。
[0039] 根据本发明的另一方面,提供了一种应用服务器,包括:
[0040] 接收模块,用于接收用户终端发送的认证请求;
[0041] 监听模块,用于监听用户终端生成并在区块链网络中广播的认证消息;
[0042] 验证模块,用于验证所述认证消息确定身份认证是否成功。
[0043] 根据本发明的另一方面,提供了一种用户终端,包括:
[0044] 发送模块,用于向应用服务器发送认证请求;
[0045] 生成模块,用于生成认证消息,将所述认证消息广播到区块链网络中,以供所述应用服务器监听认证消息,验证所述认证消息确定身份认证是否成功。
[0046] 根据本发明的另一方面,提供了一种身份认证系统,包括:上述的应用服务器以及用户终端。
[0047] 根据本发明提供的身份注册方法及系统、应用服务器、用户终端,在应用服务器接收到用户终端发送的注册请求之后,生成注册挑战消息,将注册挑战消息广播到区块链网络中,用户终端在区块链网络中接收到注册挑战消息之后,响应挑战并生成注册消息,将注册消息广播到所述区块链网络中;应用服务器监听注册消息,验证注册消息确定身份注册是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份注册的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户注册验证,提升了注册过程的安全性。
[0048] 根据本发明提供的身份认证方法及系统、应用服务器、用户终端,在应用服务器接收到用户终端发送的认证请求之后,监听用户终端生成并在区块链网络中广播的认证消息,验证认证消息确定身份认证是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份认证的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户身份验证,提升了认证过程的安全性。
[0049] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

[0050] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0051] 图1示出了现有技术中CHAP系统的身份认证方法的流程示意图;
[0052] 图2示出了本发明注册和认证网络的架构示意图;
[0053] 图3示出了本发明提供的身份注册方法实施例一的信令流程示意图;
[0054] 图4示出了本发明提供的身份注册方法实施例二的流程示意图;
[0055] 图5示出了本发明提供的身份认证方法实施例一的信令流程示意图;
[0056] 图6示出了本发明提供的身份认证方法实施例二的流程示意图;
[0057] 图7示出了本发明提供的应用服务器实施例一的功能结构框图;
[0058] 图8示出了本发明提供的用户终端实施例一的功能结构框图;
[0059] 图9示出了本发明提供的身份注册系统实施例一的功能结构框图;
[0060] 图10示出了本发明提供的应用服务器实施例二的功能结构框图;
[0061] 图11示出了本发明提供的用户终端实施例二的功能结构框图;
[0062] 图12示出了本发明提供的身份认证系统实施例二的功能结构框图。

具体实施方式

[0063] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0064] 本发明提供的是一种基于类似比特币网络和区块链技术的挑战注册和认证方案,该方案利用区块链高效的、去中心化的自发共识机制来确保每一个节点的信息一致性。这种自发,是指没有经过明确选举或者没有固定达成的共识的事件。换句话说,共识是数以千计的独立节点遵守了简单的规则通过异步交互自发形成的产物。比特币网络采用了基于工作量证明的共识算法,通过每个矿工(节点)进行一种基于哈希的数学运算并给予计算出答案的矿工奖励的方式,让每个矿工(节点)自发的正确运行。
[0065] 本发明的注册和认证网络采用了这种共识机制,使得用户认证信息可以正确存储到节点并使应用服务器可以不依赖任何第三方认证服务。同时,结合数字签名加密算法,使得用户产生的消息在认证网络中传播无法伪造,无法被篡改,保障了消息传输的安全。
[0066] 对于本发明的注册和认证网络而言,总共有三方参与:(1)用户终端,(2)应用服务器,(3)认证服务器节点网络。如图2所示,示出了本发明注册和认证网络的架构示意图。该注册和认证网络是基于区块链的网络结构,即认证区块链。用户终端和应用服务器在网络中发送指定格式的消息,由全网中的节点进行校验消息,节点通过执行共识算法将确认的消息打包生成区块并保存在本地。本发明通常采用和比特币类似的工作量证明算法作为区块链网络中的共识算法,工作量算法会在一定的时间后将消息打包成区块。要说明的是,本发明实施例也可以采用其他共识算法,例如权益证明POS(Proof Of Stake),代表权益证明DPOS(Delegated Proof Of Stake)等。
[0067] 其中,只有经过认证的节点作为区块链完整节点可以生成区块,即生成认证信息和数据。而应用服务器可以作为一个轻节点参与到整个区块链网络中,不参与区块的生成工作,即可以参与查询认证信息但不生成认证信息。要说明的是,应用服务器也可以作为区块链网络中的完整节点,即具有完整的区块链。该消息在基于区块链的认证节点网络中相互传递,通过区块链的共识机制,各个节点接受并保存相同的合法消息。表1示出了区块链网络中传输的消息格式。
[0068] 表1
[0069]
[0070] 图3示出了本发明提供的身份注册方法实施例一的信令流程示意图。如图3所示,该方法包括如下步骤:
[0071] 步骤S101,用户终端向应用服务器发送注册请求。
[0072] 其中注册请求包含用户终端的用户标识和用户终端在区块链网络中的账户地址,其中账户地址可以为区块链网络为用户终端分配的公钥值或者用户终端根据私钥生成的公钥值。用户终端在区块链网络中的账户地址也可以是公钥值经过哈希之后生成的公钥地址,例如比特币地址。
[0073] 步骤S102,应用服务器生成注册挑战消息,将注册挑战消息广播到区块链网络中。
[0074] 应用服务器接收到用户终端的注册请求后,发起挑战。具体地,应用服务器生成注册挑战消息,将注册挑战消息广播到区块链网络中。
[0075] 可选地,注册挑战消息的格式可采用表1所示的消息格式,其中,消息类型为注册消息REG,源地址为应用服务器在区块链网络中的账户地址,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对整个消息的签名,消息实体包含用户标识(用户ID)。应用服务器在区块链网络中的账户地址可以为区块链网络为应用服务器分配的公钥值或者应用服务器根据私钥生成的公钥值。应用服务器在区块链网络中的账户地址也可以是公钥值经过哈希之后生成的公钥地址,例如比特币地址。
[0076] 步骤S103,用户终端在区块链网络中接收到注册挑战消息之后,响应挑战并生成注册消息,将注册消息广播到区块链网络中。
[0077] 用户终端在区块链网络中收到应用服务器的注册挑战消息之后,响应挑战并生成注册消息,在整个认证区块链网络中广播该注册消息。
[0078] 可选地,注册消息的格式可采用表1所示的消息格式,其中,消息类型为注册消息REG,源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对整个消息的签名,消息实体包含用户ID。
[0079] 区块链网络中的矿工节点会将注册消息打包生成区块,并将该区块广播到区块链网络中,区块链网络中的其他节点接收到该区块后会校验该区块,如果该区块通过校验,则其他节点将该区块链接到本地的区块链中,从而在区块链网络中对该区块取得了共识。本发明采用工作量证明算法作为区块链网络中的共识算法,使用工作量算法会在一定时间内将消息打包成区块。本领域技术人员能够明了,其他共识算法也是可行的,例如POS,DPOS等,本发明实施例对此不加以限定。
[0080] 步骤S104,应用服务器监听注册消息,验证注册消息确定身份注册是否成功。
[0081] 应用服务器监听整个区块链网络的消息,当监听到目的地址和应用服务器在区块链网络中的账户地址相匹配的注册消息时,在区块链网络中获取注册消息并判断注册消息是否正确。若在指定时间内没有接收到注册消息,则应用服务器响应注册失败。
[0082] 步骤S105,应用服务器向用户终端返回注册结果。
[0083] 以上注册流程是用户身份登记的流程,如果验证注册消息通过,应用服务器将用户ID以及用户终端在区块链网络中的账户地址进行绑定完成注册。
[0084] 根据本实施例提供的身份注册方法,在应用服务器接收到用户终端发送的注册请求之后,生成注册挑战消息,将注册挑战消息广播到区块链网络中,用户终端在区块链网络中接收到注册挑战消息之后,响应挑战并生成注册消息,将注册消息广播到所述区块链网络中;应用服务器监听注册消息,验证注册消息确定身份注册是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份注册的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户注册验证,提升了注册过程的安全性。
[0085] 图4示出了本发明提供的身份注册方法实施例二的流程示意图。如图4所示,该方法包括如下步骤:
[0086] 步骤S201,用户终端向应用服务器发送注册请求。
[0087] 其中注册请求包含用户终端的用户标识和用户终端在区块链网络中的账户地址,其中账户地址可以为区块链网络为用户终端分配的公钥值或者用户终端根据私钥生成的公钥值。用户终端在区块链网络中的账户地址也可以是公钥值经过哈希之后生成的公钥地址,例如比特币地址。
[0088] 步骤S202,应用服务器生成注册挑战消息,将注册挑战消息广播到区块链网络中。
[0089] 应用服务器接收到用户终端的注册请求后,发起挑战。具体地,应用服务器生成注册挑战消息,将注册挑战消息广播到区块链网络中。
[0090] 可选地,注册挑战消息的格式可采用表1所示的消息格式,其中,消息类型为注册消息REG,源地址为应用服务器在区块链网络中的账户地址,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对整个消息的签名,消息实体包含用户标识(用户ID)。
[0091] 可选地,注册挑战消息的消息实体还包含随机数。
[0092] 步骤S203,用户终端在区块链网络中接收到注册挑战消息之后,响应挑战并生成注册消息,将注册消息广播到区块链网络中。
[0093] 用户终端在区块链网络中收到应用服务器的注册挑战消息之后,响应挑战并生成注册消息,在整个认证区块链网络中广播该注册消息。
[0094] 可选地,注册消息的格式可采用表1所示的消息格式,其中,消息类型为注册消息REG,源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对整个消息的签名,消息实体包含用户ID。
[0095] 区块链网络中的矿工节点会将注册消息打包生成区块,并将该区块广播到区块链网络中,区块链网络中的其他节点接收到该区块后会校验该区块,如果该区块通过校验,则其他节点将该区块链接到本地的区块链中,从而在区块链网络中对该区块取得了共识。本发明采用工作量证明算法作为区块链网络中的共识算法,使用工作量算法会在一定时间内将消息打包成区块。本领域技术人员能够明了,其他共识算法也是可行的,例如POS,DPOS等,本发明实施例对此不加以限定。
[0096] 可选地,注册消息的消息实体还包含随机数,该随机数应为步骤S202中的随机数。
[0097] 步骤S204,应用服务器监听注册消息。
[0098] 步骤S205,应用服务器判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的注册消息,若是,执行步骤S206;否则,执行步骤S213。
[0099] 步骤S206,应用服务器判断在第二指定时间内在区块链网络中是否生成包含用户标识的注册消息,若是,执行步骤S207;否则,执行步骤S213。
[0100] 换句话说,应用服务器在第二指定时间内在区块链网络中确认是否生成包含用户ID的区块,若没有区块生成,则应用服务器响应注册失败。
[0101] 步骤S207,应用服务器判断包含用户标识的注册消息是否为多条,若是,执行步骤S208;否则,执行步骤209。
[0102] 步骤S208,应用服务器获取生成时间戳最早的注册消息,判断生成时间戳最早的注册消息的发送地址是否与用户终端在区块链网络中的账户地址一致,若是,执行步骤S210;否则,执行步骤S213。
[0103] 如果有多条用户ID匹配的消息,则获取生成时间戳最早的注册消息,判断该注册消息的发送地址是否和用户终端在区块链网络中的账户地址一致,若不一致表示有其他注册用户先注册成功,则应用服务器响应注册失败。
[0104] 步骤S209,应用服务器判断注册消息的发送地址是否与用户终端在区块链网络中的账户地址一致,若是,执行步骤S210;否则,执行步骤S213。
[0105] 步骤S210,应用服务器检查注册消息的消息签名与用户终端在区块链网络中的账户地址是否相匹配,若是,执行步骤S211;否则,执行步骤S213。
[0106] 注册消息的消息签名应为用户终端的私钥对整个消息的签名,本步骤检查用户终端的私钥与用户终端在区块链网络中的账户地址(即用户终端的公钥)是否匹配,若不匹配,则响应注册失败。
[0107] 步骤S211,应用服务器判断注册消息所包含的随机数与注册挑战消息所包含的随机数是否一致,若是,执行步骤S212;否则,执行步骤S213。
[0108] 步骤S212,应用服务器记录用户标识和注册消息的源地址,响应注册成功,即向用户终端返回注册成功的结果。
[0109] 步骤S213,应用服务器响应注册失败,即向用户终端返回注册失败的结果。
[0110] 进一步的,为了加快查询速度,在步骤S202之前,应用服务器可先判断是否存储有用户标识;若是,则直接响应注册失败。这里判断是否存储有用户标识的目的是判断是否先前其它用户是否已经注册了该用户标识,如果是,则直接响应注册失败。
[0111] 根据本实施例提供的身份注册方法,在应用服务器接收到用户终端发送的注册请求之后,生成注册挑战消息,将注册挑战消息广播到区块链网络中,用户终端在区块链网络中接收到注册挑战消息之后,响应挑战并生成注册消息,将注册消息广播到所述区块链网络中;应用服务器监听注册消息,验证注册消息确定身份注册是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份注册的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户注册验证,提升了注册过程的安全性。
[0112] 具体来讲,应用服务器可作为一个轻节点参与到整个认证区块链网络中,但不参与区块的生成工作,提高了区块链网络的灵活性和效率。当然,应用服务器也可以作为区块链网络中的完整节点,即具有完整的区块链信息。同时,应用服务器可以独立地根据区块链网络中的信息进行用户注册。区块链的消息经过数字签名使得消息无法被篡改和伪造。注册过程的信息传递主要是通过在区块链网络中广播消息,消息主要需要包含了源地址、目的地址,消息签名以及消息实体构成。因此,只有源地址对应私钥的持有者才能从源地址得到完整消息,所以网络中的消息无法被篡改和伪造,提高消息本身的安全性。本发明基于比特币区块链网络的交易格式,重新设计注册过程中在区块链网络中传输的消息格式,并针对本方案对消息内容进行了简化,提高了网络传输的效率。
[0113] 图5示出了本发明提供的身份认证方法实施例一的信令流程示意图。如图5所示,该方法包括如下步骤:
[0114] 步骤S301,用户终端向应用服务器发送认证请求。
[0115] 用户终端向应用服务器发送认证请求,该认证请求包含用户终端的用户标识以及用户终端在区块链网络中的账户地址,其中账户地址可以为区块链网络为用户终端分配的公钥值或用户终端根据私钥生成的公钥值。用户终端在区块链网络中的账户地址也可以是公钥值经过哈希之后生成的公钥地址,例如比特币地址。
[0116] 步骤S302,用户终端生成认证消息,将认证消息广播到区块链网络中。
[0117] 由于在注册流程中,应用服务器已知了用户标识与用户终端在区块链网络中的账户地址的对应关系,因此用户终端可以直接响应认证挑战,即用户终端生成认证消息,将认证消息广播到区块链网络中。
[0118] 可选地,认证消息的格式可采用表1所示的消息格式,其中,消息类型为认证消息AUTH,源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对整个消息的签名,消息实体包含用户ID。
[0119] 区块链网络中的矿工节点会将认证消息打包生成区块,并将该区块广播到区块链网络中,区块链网络中的其他节点接收到该区块后会校验该区块,如果该区块通过校验,则其他节点将该区块链接到本地的区块链中,从而在区块链网络中对该区块取得了共识。本发明采用工作量证明算法作为区块链网络中的共识算法,使用工作量算法会在一定时间内将消息打包成区块。本领域技术人员能够明了,其他共识算法也是可行的,例如POS,DPOS等,本发明实施例对此不加以限定。用户认证记录被保存在区块链网络中的节点中,可以获取完整的用户认证记录,便于进行用户信息的审查工作。
[0120] 步骤S303,应用服务器监听认证消息,验证认证消息确定身份认证是否成功。
[0121] 具体地,应用服务器监听整个区块链网络的认证消息,判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的认证消息;若是,则获取认证消息;若否,则响应认证失败。
[0122] 然后,应用服务器判断认证消息中包含的用户标识和/或认证消息的源地址是否与认证请求中包含的用户标识和/或用户终端在区块链网络中的账户地址是否一致;若否,则响应认证失败。
[0123] 步骤S304,应用服务器向用户终端返回认证结果。
[0124] 根据本实施例提供的身份认证方法,在应用服务器接收到用户终端发送的认证请求之后,监听用户终端生成并在区块链网络中广播的认证消息,验证认证消息确定身份认证是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份认证的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户身份验证,提升了认证过程的安全性。
[0125] 图6示出了本发明提供的身份认证方法实施例二的流程示意图。如图6所示,该方法包括如下步骤:
[0126] 步骤S401,用户终端向应用服务器发送认证请求。
[0127] 其中认证请求包含用户终端的用户标识和用户终端在区块链网络中的账户地址,其中账户地址可以为区块链网络为用户终端分配的公钥值或用户终端根据私钥生成的公钥值。用户终端在区块链网络中的账户地址也可以是公钥值经过哈希之后生成的公钥地址,例如比特币地址。
[0128] 步骤S402,应用服务器生成认证挑战消息,将认证挑战消息广播到区块链网络中。
[0129] 应用服务器接收到用户终端的认证请求后,发起挑战。具体地,应用服务器生成认证挑战消息,将认证挑战消息广播到区块链网络中。
[0130] 可选地,认证挑战消息的格式可采用表1所示的消息格式,其中,消息类型为认证消息AUTH,源地址为应用服务器在区块链网络中的账户地址,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对整个消息的签名,消息实体包含用户ID。
[0131] 可选地,认证挑战消息的消息实体还包含随机数。
[0132] 步骤S403,用户终端在区块链网络中接收到认证挑战消息之后,响应挑战并生成认证消息,将认证消息广播到区块链网络中。
[0133] 用户终端在区块链网络中收到应用服务器的认证挑战消息之后,响应挑战并生成认证消息,在整个认证区块链网络中广播该认证消息。
[0134] 可选地,认证消息的格式可采用表1所示的消息格式,其中,消息类型为认证消息AUTH,源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的地址,消息签名为用户终端的私钥对整个消息的签名,消息实体包含用户ID。
[0135] 区块链网络中的矿工节点会将认证消息打包生成区块,并将该区块广播到区块链网络中,区块链网络中的其他节点接收到该区块后会校验该区块,如果该区块通过校验,则其他节点将该区块链接到本地的区块链中,从而在区块链网络中对该区块取得了共识。本发明采用工作量证明算法作为区块链网络中的共识算法,使用工作量算法会在一定时间内将消息打包成区块。本领域技术人员能够明了,其他共识算法也是可行的,例如POS,DPOS等,本发明实施例对此不加以限定。用户认证记录被保存在区块链网络中的节点中,可以获取完整的用户认证记录,便于进行用户信息的审查工作。
[0136] 可选地,认证消息的消息实体还包含随机数,该随机数应为步骤S402中的随机数。
[0137] 步骤S404,应用服务器监听认证消息。
[0138] 步骤S405,应用服务器判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的认证消息,若是,执行步骤S406;否则,执行步骤S409。
[0139] 步骤S406,应用服务器判断认证消息中包含的用户标识和/或认证消息的源地址是否与认证请求中包含的用户标识和/或用户终端在区块链网络中的账户地址是否一致,若是,执行步骤S407;否则,执行步骤S409。
[0140] 步骤S407,应用服务器判断认证消息所包含的随机数与认证挑战消息所包含的随机数是否一致,若是,执行步骤S408;否则,执行步骤S409。
[0141] 步骤S408,应用服务器响应认证成功,即向用户终端返回认证成功的结果。
[0142] 步骤S409,应用服务器响应认证失败,即向用户终端返回认证失败的结果。
[0143] 根据本实施例提供的身份认证方法,在应用服务器接收到用户终端发送的认证请求之后,生成认证挑战消息,将认证挑战消息广播到区块链网络中,用户终端在区块链网络中接收到认证挑战消息之后,响应挑战并生成认证消息,将认证消息广播到所述区块链网络中;应用服务器监听认证消息,验证认证消息确定身份认证是否成功。本方法基于分布式网络框架、共识机制的去中心化的区块链网络,提升了身份认证的稳定性和安全性。区块链网络提供了透明和公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户身份验证,提升了认证过程的安全性。
[0144] 具体来讲,应用服务器可作为一个轻节点参与到整个认证区块链网络中,但不参与区块的生成工作,提高了区块链网络的灵活性和效率。当然,应用服务器也可以作为区块链网络中的完整节点,即具有完整的区块链信息。同时,应用服务器可以独立地根据区块链网络中的信息进行用户认证。区块链的消息经过数字签名使得消息无法被篡改和伪造。认证过程的信息传递主要是通过在区块链网络中广播消息,消息主要需要包含了源地址、目的地址,消息签名以及消息实体构成。因此,只有源地址对应私钥的持有者才能从源地址得到完整消息,所以网络中的消息无法被篡改和伪造,提高消息本身的安全性。本发明基于比特币区块链网络的交易格式,重新设计注册过程中在区块链网络中传输的消息格式,并针对本方案对消息内容进行了简化,提高了网络传输的效率。
[0145] 图7示出了本发明提供的应用服务器实施例一的功能结构框图。如图7所示,该应用服务器包括:接收模块51,挑战发起模块52,监听模块53,验证模块54。
[0146] 接收模块51,用于接收用户终端发送的注册请求。其中注册请求包含所述用户终端的用户标识和所述用户终端在区块链网络中的账户地址。
[0147] 挑战发起模块52,用于生成注册挑战消息,将所述注册挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述注册挑战消息之后,响应挑战并生成注册消息,将所述注册消息广播到所述区块链网络中。
[0148] 所述注册挑战消息的源地址为应用服务器在区块链网络中的账户地址,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对所述注册挑战消息的签名,所述注册挑战消息的消息实体包含所述用户标识。所述注册挑战消息的消息实体还包含随机数。
[0149] 监听模块53,用于监听所述注册消息。
[0150] 所述监听模块53进一步用于:判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的注册消息;若是,则获取所述注册消息;若否,则响应注册失败。
[0151] 验证模块54,用于验证所述注册消息确定身份注册是否成功。
[0152] 所述验证模块54包括:第一判断单元541和响应单元542。
[0153] 第一判断单元541,用于判断在第二指定时间内在区块链网络中是否生成包含用户标识的注册消息。响应单元542,用于在第一判断单元541判断出在第二指定时间内在区块链网络中没有生成包含用户标识的注册消息的情况下,响应注册失败。
[0154] 第一判断单元541还用于:判断在第二指定时间内在区块链网络中是否生成多条包含用户标识的注册消息;
[0155] 验证模块54还包括:第二判断单元543,用于判断生成时间戳最早的注册消息的发送地址是否与用户终端在区块链网络中的账户地址一致。
[0156] 响应单元542还用于:在第二判断单元543判断出生成时间戳最早的注册消息的发送地址与用户终端在区块链网络中的账户地址不一致的情况下,响应注册失败。
[0157] 验证模块54还包括:检查单元544,用于检查注册消息的消息签名与用户终端在区块链网络中的账户地址是否相匹配。
[0158] 响应单元542还用于:在检查单元544检查出注册消息的消息签名与用户终端在区块链网络中的账户地址不相匹配的情况下,响应注册失败。
[0159] 验证模块54还包括:第三判断单元545,用于判断注册消息所包含的随机数与注册挑战消息所包含的随机数是否一致。
[0160] 响应单元542还用于:在第三判断单元545判断出注册消息所包含的随机数与注册挑战消息所包含的随机数不一致的情况下,响应注册失败。
[0161] 响应单元542还用于:在未判断出注册失败的情况下,记录用户标识和注册消息的源地址,响应注册成功。
[0162] 应用服务器还包括:判断模块55,用于判断是否存储有用户标识;
[0163] 响应单元542还用于:若判断模块55判断出存储有用户标识,则响应注册失败。
[0164] 图8示出了本发明提供的用户终端实施例一的功能结构框图。如图8所示,该用户终端包括:发送模块61,挑战响应模块62,生成模块63。
[0165] 发送模块61,用于向应用服务器发送注册请求,以供所述应用服务器生成注册挑战消息,将所述注册挑战消息广播到区块链网络中。所述注册请求包含所述用户终端的用户标识和所述用户终端在区块链网络中的账户地址。
[0166] 挑战响应模块62,用于在区块链网络中接收注册挑战消息,响应挑战;
[0167] 生成模块63,用于生成注册消息,将所述注册消息广播到所述区块链网络中,以供所述应用服务器监听注册消息,验证所述注册消息确定身份注册是否成功。
[0168] 所述注册消息的源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对所述注册消息的签名,所述注册消息的消息实体包含所述用户标识。所述注册消息的消息实体还包含从所述注册挑战消息中提取的随机数。
[0169] 图9示出了本发明提供的身份注册系统实施例一的功能结构框图。如图9所示,该身份注册系统包括:应用服务器71和用户终端72,其中用户终端72为区块链网络中的一个节点,应用服务器71作为一个轻节点或完整节点参与到区块链网络中。应用服务器71的具体功能和结构可参见应用服务器实施例一的描述,用户终端72的具体功能和结构可参见用户终端实施例一的描述,在此不再赘述。
[0170] 图10示出了本发明提供的应用服务器实施例二的功能结构框图。如图10所示,该应用服务器包括:接收模块81,监听模块82,验证模块83。
[0171] 接收模块81,用于接收用户终端发送的认证请求。可选地,所述认证请求包含所述用户终端的用户标识以及所述用户终端在区块链网络中的账户地址。
[0172] 监听模块82,用于监听用户终端生成并在区块链网络中广播的认证消息。监听模块82进一步用于:判断在第一指定时间内是否监听到目的地址与应用服务器在区块链网络中的账户地址相匹配的认证消息;若是,则获取所述认证消息;若否,则响应认证失败。
[0173] 验证模块83,用于验证所述认证消息确定身份认证是否成功。
[0174] 在应用服务器的另一个实施例中,还包括:挑战发起模块84,用于生成认证挑战消息,将所述认证挑战消息广播到区块链网络中,以供用户终端在所述区块链网络中接收到所述认证挑战消息之后,响应挑战并生成认证消息,将所述认证消息广播到所述区块链网络中。其中,所述认证挑战消息的源地址为应用服务器在区块链网络中的账户地址,目的地址为用户终端在区块链网络中的账户地址,消息签名为应用服务器的私钥对所述认证挑战消息的签名,所述认证挑战消息的消息实体包含所述用户标识。所述认证挑战消息的消息实体还包含随机数。
[0175] 上述验证模块83进一步包括:第一判断单元831和响应单元832。
[0176] 第一判断单元831,用于判断所述认证消息中包含的用户标识和/或所述认证消息的源地址是否与所述认证请求中包含的用户标识和/或用户终端在区块链网络中的账户地址是否一致。
[0177] 响应单元832,用于在所述第一判断单元831判断出所述认证消息中包含的用户标识和/或所述认证消息的源地址与所述认证请求中包含的用户标识和/或用户终端在区块链网络中的账户地址不一致的情况下,响应认证失败。
[0178] 可选地,验证模块83还可包括:第二判断单元833,用于判断所述认证消息所包含的随机数与所述认证挑战消息所包含的随机数是否一致;
[0179] 响应单元832还用于在所述第二判断单元833判断出所述认证消息所包含的随机数与所述认证挑战消息所包含的随机数不一致的情况下,响应认证失败。
[0180] 图11示出了本发明提供的用户终端实施例二的功能结构框图。如图11所示,该用户终端包括:发送模块91和生成模块92。
[0181] 发送模块91,用于向应用服务器发送认证请求。可选地,所述认证请求包含所述用户终端的用户标识以及所述用户终端在区块链网络中的账户地址。
[0182] 生成模块92,用于生成认证消息,将所述认证消息广播到区块链网络中,以供所述应用服务器监听认证消息,验证所述认证消息确定身份认证是否成功。其中,所述认证消息的源地址为用户终端在区块链网络中的账户地址,目的地址为应用服务器在区块链网络中的账户地址,消息签名为用户终端的私钥对所述认证消息的签名,所述认证消息的消息实体包含所述用户标识。可选地,所述认证消息的消息实体包含从所述认证挑战消息中提取的随机数。
[0183] 在用户终端的另一个实施例中,还包括:挑战响应模块93,用于在所述区块链网络中接收认证挑战消息,响应挑战;其中,所述认证挑战消息是所述应用服务器生成并广播到所述区块链网络中的消息。
[0184] 图12示出了本发明提供的身份认证系统实施例二的功能结构框图。如图12所示,该身份认证系统包括:应用服务器100和用户终端200,其中用户终端200为区块链网络中的一个节点,应用服务器100作为一个轻节点参与到区块链网络中。应用服务器100的具体功能和结构可参见应用服务器实施例二的描述,用户终端200的具体功能和结构可参见用户终端实施例二的描述,在此不再赘述。
[0185] 相对于传统的身份注册和认证方案,本发明提供的身份注册方法及系统、身份认证方法及系统、应用服务器、用户终端具有如下优点:
[0186] 1.采用去中心化的分布式授权系统。
[0187] 相对于传统认证过程依赖中心授权系统,如果中心授权系统出现了无法工作或产生错误信息,将会导致认证无法进行或者错误的问题,本发明基于区块链网络的挑战认证,使用分布式的网络结构以及共识机制,提高了系统运行稳定性以及安全性。
[0188] 2.使用透明、公开的消息传递和存储。
[0189] 区块链网络提供了透明、公开的一致性消息存储,可以使得应用服务器不依赖于任何第三方认证服务进行用户认证与判断,提高了认证过程的安全性。
[0190] 3.认证信息具有可回溯性。
[0191] 用户认证记录被保存在区块链网络中的节点中,可以获取完整的用户认证记录,便于进行用户信息的审查工作。
[0192] 4.应用服务器作为一个轻节点参与整个区块链网络。
[0193] 应用服务器作为一个轻节点参与到整个区块链网络中,但不参与区块的生成工作,提高了区块链网络的灵活性和效率。应用服务器也可以作为完整节点参与区块链网络,下载区块链的所有区块信息,所以可以独立地根据区块链网络中的信息进行用户认证。
[0194] 5.区块链网络中的消息经过数字签名使得消息无法被篡改和伪造。
[0195] 认证过程的信息传递主要是通过在区块链网络中广播消息,消息主要需要包含了源地址、目的地址,消息签名以及消息内容实体构成。因此,只有源地址对应私钥的持有者才能从源地址得到完整消息。所以网络中的消息无法被篡改和伪造,提高消息本身的安全性。
[0196] 6.重新设计并简化区块链消息结构。
[0197] 基于比特币区块链网络的交易格式,重新设计认证过程中在区块链网络中传输的消息格式,并针对本发明方案对消息内容进行了简化,提高了网络传输的效率。
[0198] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0199] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0200] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0201] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0202] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0203] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0204] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。