串口设备注册的方法和装置转让专利

申请号 : CN201110217277.6

文献号 : CN102231667B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆舟于华章

申请人 : 飞天诚信科技股份有限公司

摘要 :

本发明公开了一种串口设备注册的方法和装置。该方法包括:第一串口设备与第二串口设备建立连接;第一串口设备向第二串口设备上报第一串口设备的设备属性信息,用以发起在第二串口设备中注册第一串口设备过程;在注册过程中,第一串口设备接收到第二串口设备索要签名证书的请求后,向第二串口设备发送第一签名证书;对接收的第二串口设备返回的第一挑战码进行运算,得到第一签名值;然后将第一签名值发送给第二串口设备,以使第二串口设备对第一签名值进行认证,并将认证结果返回给第一串口设备;第一串口设备通过认证后,完成在第二串口设备上的注册。通过本发明,解决了串口设备在注册时缺少安全认证机制的问题,增强了通信的安全性。

权利要求 :

1.一种串口设备注册的方法,其特征在于,包括:

第一串口设备与第二串口设备建立连接;

所述第一串口设备向所述第二串口设备上报所述第一串口设备的设备属性信息,用以发起在所述第二串口设备中注册所述第一串口设备过程;

在所述注册过程中,所述第一串口设备接收到所述第二串口设备索要签名证书的请求后,向所述第二串口设备发送第一签名证书;

所述第一串口设备接收所述第二串口设备返回的第一挑战码,对所述第一挑战码进行运算,得到第一签名值;

所述第一串口设备将所述第一签名值发送给所述第二串口设备,以使所述第二串口设备根据所述第一签名证书对所述第一签名值进行认证,并将认证结果返回给所述第一串口设备;

所述第一串口设备通过认证后,所述第一串口设备完成在所述第二串口设备上的注册;

其中,所述第一串口设备与第二串口设备建立连接包括:所述第一串口设备插接在所述第二串口设备上后,以第一波特率向所述第二串口设备发送检测字符和设置设备属性信息的请求;如果在指定时间内,所述第一串口设备未收到所述第二串口设备返回的应答信息,所述第一串口设备调整所述第一波特率,以调整后的所述第一波特率向所述第二串口设备重新发送检测字符。

2.根据权利要求1所述的方法,其特征在于,所述第一串口设备向所述第二串口设备上报所述第一串口设备的设备属性信息包括:所述第一串口设备接收到所述应答信息,判断所述应答信息是否为允许设置设备属性信息;

如果是,向所述第二串口设备上报所述第一串口设备的设备属性信息;

如果否,向所述第二串口设备发送识别设备类型命令,并在接收到所述第二串口设备索要设备属性信息的请求指令时,所述第一串口设备根据所述请求指令向所述第二串口设备上报所述第一串口设备的设备属性信息。

3.根据权利要求2所述的方法,其特征在于,所述应答信息为允许设置设备属性信息时,所述第一串口设备向所述第二串口设备上报所述设备属性信息采用上报以下设置设备属性指令实现:设置设备标识ID指令、设置设备能力指令、设置设备信息指令和设置设备协议字串指令;

其中,所述设置设备信息指令包括:设置设备名称指令、设置设备软件版本指令、设置设备硬件版本指令、设置设备制造商名称指令、设置设备型号指令和设置设备射频认证指令。

4.根据权利要求3所述的方法,其特征在于,所述设置设备属性指令还包括:设置设备序列号指令和/或设置设备应用字串指令。

5.根据权利要求2所述的方法,其特征在于,所述应答信息不为允许设置设备属性信息时,所述第一串口设备根据所述请求指令上报的设备属性信息包括:所述第一串口设备的设备名称、设备软件版本属性信息、设备硬件版本属性信息、设备制造商名称属性信息和设备型号属性信息。

6.根据权利要求5所述的方法,其特征在于,所述设备属性信息还包括:所述第一串口设备的设备序列号属性信息和/或设备支持数据包最大长度属性信息。

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第一串口设备认证所述第二串口设备,包括:所述第一串口设备向所述第二串口设备获取第二签名证书;

所述第一串口设备向所述第二串口设备发送第二挑战码,以使所述第二串口设备根据所述第二挑战码生成第二签名值,将所述第二签名值返回给所述第一串口设备;

所述第一串口设备使用所述第二签名证书对所述第二签名值进行认证,认证通过后,向所述第二串口设备发送认证成功信息。

8.根据权利要求7所述的方法,其特征在于,如果所述第一串口设备或所述第二串口设备的认证结果为认证失败,所述方法还包括:所述第一串口设备重新向所述第二串口设备上报设备属性信息,重新启动所述注册过程,直至认证成功。

9.一种串口设备间注册的装置,其特征在于,所述装置设置在第一串口设备上,所述装置包括:连接建立模块,用于与第二串口设备建立连接;

设备属性上报模块,用于向所述第二串口设备上报所述第一串口设备的设备属性信息,用以发起在所述第二串口设备中注册所述第一串口设备过程;

认证模块,用于在注册过程中,所述第一串口设备接受认证;所述认证模块包括:证书发送单元,用于接收到所述第二串口设备索要签名证书的请求后,向所述第二串口设备发送第一签名证书;运算单元,用于接收所述第二串口设备返回的第一挑战码,对所述第一挑战码进行运算,得到第一签名值;签名值发送单元,用于将所述第一签名值发送给所述第二串口设备,以使所述第二串口设备根据所述第一签名证书对所述第一签名值进行认证,并接收返回的认证结果;

确认完成注册模块,用于所述第一串口设备通过认证后,确认完成在所述第二串口设备上的注册;

其中,所述连接建立模块包括:请求发送单元,用于所述第一串口设备插接在所述第二串口设备上后,以第一波特率向所述第二串口设备发送检测字符和设置设备属性信息的请求;检测字符发送单元,用于如果在指定时间内,所述第一串口设备未收到所述第二串口设备返回的应答信息,所述第一串口设备调整所述第一波特率,以调整后的所述第一波特率向所述第二串口设备重新发送检测字符。

10.根据权利要求9所述的装置,其特征在于,所述设备属性上报模块包括:判断单元,用于接收到所述应答信息,判断所述应答信息是否为允许设置设备属性信息;

第一上报单元,用于所述判断单元的判断结果为是时,向所述第二串口设备上报所述第一串口设备的设备属性信息;

第二上报单元,用于所述判断单元的判断结果为否时,向所述第二串口设备发送识别设备类型命令,并在接收到所述第二串口设备索要设备属性信息的请求指令时,根据所述请求指令向所述第二串口设备上报所述第一串口设备的设备属性信息。

11.根据权利要求9所述的装置,其特征在于,所述认证模块包括:证书获取单元,用于向所述第二串口设备获取第二签名证书;

挑战码发送单元,用于向所述第二串口设备发送第二挑战码,以使所述第二串口设备根据所述第二挑战码生成第二签名值,将所述第二签名值返回给所述第一串口设备;

认证单元,用于使用所述第二签名证书对所述第二签名值进行认证,认证通过后,向所述第二串口设备发送认证成功信息。

说明书 :

串口设备注册的方法和装置

技术领域

[0001] 本发明涉及信息安全领域,具体而言,涉及一种串口设备注册的方法和装置。

背景技术

[0002] 随着通信网络技术的发展,数据信息的安全和保密性体现的尤为重要。串口设备上存储着越来越多的个人信息和商业信息,同时,一些串口设备还需要通过无线与其他串口设备进行通信。针对这些应用的产生,如何有效地保证串口设备间的注册,并保证用户和系统信息的安全,已成为迫切需要解决的问题。
[0003] 针对相关技术中串口设备在注册时间缺少安全认证机制的问题,目前尚未提出有效的解决方案。

发明内容

[0004] 本发明的主要目的在于提供一种串口设备注册的方法和装置,以至少解决上述串口设备在注册时缺少安全认证机制的问题。
[0005] 根据本发明的一个方面,提供了一种串口设备注册的方法,该方法包括:第一串口设备与第二串口设备建立连接;第一串口设备向第二串口设备上报第一串口设备的设备属性信息,用以发起在第二串口设备中注册第一串口设备过程;在注册过程中,第一串口设备接收到第二串口设备索要签名证书的请求后,向第二串口设备发送第一签名证书;第一串口设备接收第二串口设备返回的第一挑战码,对该第一挑战码进行运算,得到第一签名值;第一串口设备将该第一签名值发送给第二串口设备,以使第二串口设备根据第一签名证书对第一签名值进行认证,并将认证结果返回给第一串口设备;第一串口设备通过认证后,第一串口设备完成在第二串口设备上的注册。
[0006] 上述第一串口设备与第二串口设备建立连接包括:第一串口设备插接在第二串口设备上后,以第一波特率向第二串口设备发送检测字符和设置设备属性信息的请求;如果在指定时间内,第一串口设备未收到第二串口设备返回的应答信息,第一串口设备调整第一波特率,以调整后的第一波特率向第二串口设备重新发送检测字符。
[0007] 上述第一串口设备向第二串口设备上报第一串口设备的设备属性信息包括:第一串口设备接收到应答信息,判断应答信息是否为允许设置设备属性信息;如果是,向第二串口设备上报第一串口设备的设备属性信息;如果否,向第二串口设备发送识别设备类型命令,并在接收到第二串口设备索要设备属性信息的请求指令时,第一串口设备根据请求指令向第二串口设备上报第一串口设备的设备属性信息。
[0008] 上述应答信息为允许设置设备属性信息时,第一串口设备向第二串口设备上报设备属性信息采用上报以下设置设备属性指令实现:设置设备标识ID指令、设置设备能力指令、设置设备信息指令和设置设备协议字串指令;其中,设置设备信息指令包括:设置设备名称指令、设置设备软件版本指令、设置设备硬件版本指令、设置设备制造商名称指令、设置设备型号指令和设置设备射频认证指令。
[0009] 上述设置设备属性指令还包括:设置设备序列号指令和/或设置设备应用字串指令。
[0010] 上述应答信息不为允许设置设备属性信息时,第一串口设备根据请求指令上报的设备属性信息包括:第一串口设备的设备名称、设备软件版本属性信息、设备硬件版本属性信息、设备制造商名称属性信息和设备型号属性信息。
[0011] 上述设备属性信息还包括:第一串口设备的设备序列号属性信息和/或设备支持数据包最大长度属性信息。
[0012] 上述方法还包括:第一串口设备认证第二串口设备,包括:第一串口设备向第二串口设备获取第二签名证书;第一串口设备向第二串口设备发送第二挑战码,以使第二串口设备根据第二挑战码生成第二签名值,将第二签名值返回给第一串口设备;第一串口设备使用第二签名证书对第二签名值进行认证,认证通过后,向第二串口设备发送认证成功信息。
[0013] 如果第一串口设备或第二串口设备的认证结果为认证失败,上述方法还包括:第一串口设备重新向第二串口设备上报设备属性信息,重新启动注册过程,直至认证成功。
[0014] 根据本发明的另一个方面,还提供了一种串口设备间注册的装置,该装置设置在第一串口设备上,该装置包括:连接建立模块,用于与第二串口设备建立连接;设备属性上报模块,用于向第二串口设备上报第一串口设备的设备属性信息,用以发起在第二串口设备中注册第一串口设备过程;认证模块,用于在注册过程中,第一串口设备接受认证;认证模块包括:证书发送单元,用于接收到第二串口设备索要签名证书的请求后,向第二串口设备发送第一签名证书;运算单元,用于接收第二串口设备返回的第一挑战码,对第一挑战码进行运算,得到第一签名值;签名值发送单元,用于将第一签名值发送给第二串口设备,以使第二串口设备根据第一签名证书对第一签名值进行认证,并接收返回的认证结果;确认完成注册模块,用于第一串口设备通过认证后,确认完成在第二串口设备上的注册。
[0015] 上述连接建立模块包括:请求发送单元,用于第一串口设备插接在第二串口设备上后,以第一波特率向第二串口设备发送检测字符和设置设备属性信息的请求;检测字符发送单元,用于如果在指定时间内,第一串口设备未收到第二串口设备返回的应答信息,第一串口设备调整第一波特率,以调整后的第一波特率向第二串口设备重新发送检测字符。
[0016] 上述设备属性上报模块包括:判断单元,用于接收到应答信息,判断应答信息是否为允许设置设备属性信息;第一上报单元,用于判断单元的判断结果为是时,向第二串口设备上报第一串口设备的设备属性信息;第二上报单元,用于判断单元的判断结果为否时,向第二串口设备发送识别设备类型命令,并在接收到第二串口设备索要设备属性信息的请求指令时,根据请求指令向第二串口设备上报第一串口设备的设备属性信息。
[0017] 上述认证模块包括:证书获取单元,用于向第二串口设备获取第二签名证书;挑战码发送单元,用于向第二串口设备发送第二挑战码,以使第二串口设备根据第二挑战码生成第二签名值,将第二签名值返回给第一串口设备;认证单元,用于使用第二签名证书对第二签名值进行认证,认证通过后,向第二串口设备发送认证成功信息。
[0018] 通过本发明,第一串口设备通过向第二串口设备上报设备属性信息,触发在第二串口设备上进行注册过程,并在注册过程中,向第二串口设备提供认证信息,以通过第二串口设备的认证,解决了注册设备注册时存在安全隐患的问题,增强了注册过程的安全性,扩展了串口设备的功能。

附图说明

[0019] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020] 图1是根据本发明实施例一的串口设备注册的方法流程图;
[0021] 图2是根据本发明实施例二的串口设备注册的方法流程图;
[0022] 图3是根据本发明实施例三的串口设备注册的装置的结构框图;
[0023] 图4是根据本发明实施例三的串口设备注册的系统结构框图。

具体实施方式

[0024] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0025] 实施例一
[0026] 本实施例提供了一种串口设备注册的方法,该方法中设有第一串口设备和第二串口设备,其中,第一串口设备插接在所述第二串口设备上,第一串口设备为第二串口设备的从设备,在实际实现时,第一串口设备可以为智能密钥设备或其他信息安全设备,第二串口设备可以为移动终端等设备,第二串口设备在第一串口设备工作时为其供电。
[0027] 图1为本实施例提供的一种串口设备注册的方法流程图,该方法包括如下步骤:
[0028] 步骤S102,第一串口设备与第二串口设备建立连接;
[0029] 第一串口设备插接在第二串口设备上后,以第一波特率向第二串口设备发送检测字符和设置设备属性信息的请求;如果在指定时间内,第一串口设备未收到第二串口设备返回的应答信息,第一串口设备将调整第一波特率,以调整后的第一波特率向第二串口设备重新发送检测字符。
[0030] 步骤S104,第一串口设备向第二串口设备上报第一串口设备的设备属性信息,用以发起在第二串口设备中注册第一串口设备过程;
[0031] 第一串口设备接收到应答信息后,判断该应答信息是否为允许设置设备属性信息;如果是,向第二串口设备上报第一串口设备的设备属性信息;如果否,向第二串口设备发送识别设备类型命令,并在接收到第二串口设备索要设备属性信息的请求指令时,第一串口设备根据请求指令向第二串口设备上报第一串口设备的设备属性信息。
[0032] 步骤S106,在注册过程中,第一串口设备接收到第二串口设备索要签名证书的请求后,向第二串口设备发送第一签名证书。
[0033] 步骤S108,第一串口设备接收第二串口设备返回的第一挑战码,对第一挑战码进行运算,得到第一签名值。
[0034] 步骤S110,第一串口设备将第一签名值发送给第二串口设备,以使第二串口设备根据第一签名证书对第一签名值进行认证,并将认证结果返回给第一串口设备。
[0035] 上述步骤S106至步骤S110为第二串口设备认证第一串口设备的;当然,为了增强安全性,该注册过程中还可以包括第一串口设备认证第二串口设备的过程,具体认证过程与上述认证过程类似,也是通过签名证书及签名值的方式进行认证,例如该认证过程可以包括:第一串口设备向第二串口设备获取第二签名证书;第一串口设备向第二串口设备发送第二挑战码,以使第二串口设备根据第二挑战码生成第二签名值,将第二签名值返回给第一串口设备;第一串口设备使用第二签名证书对第二签名值进行认证,认证通过后,向第二串口设备发送认证成功信息。
[0036] 步骤S112,第一串口设备通过认证后,第一串口设备完成在第二串口设备上的注册。
[0037] 如果注册过程也包括上述第一串口设备认证第二串口设备,则步骤S112中的第一串口设备在确认第二串口设备也合法的情况下,则确认注册完成。若第一串口设备或第二串口设备的认证结果为认证失败,则重新向第二串口设备上报设备属性信息,用以重新发起在第二串口设备中注册第一串口设备过程。
[0038] 本实施例串口设备的注册过程具体包括:
[0039] 步骤1:第一串口设备以第一波特率向第二串口设备发送检测字符,并在预定时间后,向第二串口设备发送设置设备属性的请求;
[0040] 步骤2:第一串口设备判断是否接收到第二串口设备返回的应答信息,是则顺序执行步骤3,否则第二串口设备没有返回应答信息,第一串口设备调整第一波特率后,返回步骤1;
[0041] 步骤3:第一串口设备判断接收到的应答信息是否为允许设置设备属性,是则第一串口设备向第二串口设备发送设置设备属性信息(用以触发第一串口设备在第二串口设备上的注册过程),然后执行步骤4,否则向第二串口设备发送识别设备类型命令,执行步骤5;
[0042] 步骤4:第一串口设备判断是否接收到第二串口设备发送的对设置设备属性信息的确认信息,是则顺序执行步骤5,否则重新请求设置,返回步骤1;
[0043] 步骤5:第一串口设备接受第二串口设备对其进行第一签名认证;
[0044] 步骤6:第一串口设备判断接收到的第二串口设备返回的第一签名认证结果是否为认证成功,是则顺序执行步骤7,否则第一串口设备重新请求设置设备属性和认证过程,返回步骤1;
[0045] 步骤7:第一串口设备对第二串口设备进行第二签名认证,并将认证结果发送给第二串口设备;认证成功,则两次认证成功,第一串口设备和第二串口设备完成注册过程,否则第一串口设备重新请求设置设备属性和认证过程,返回步骤1。
[0046] 本实施例的第一串口设备通过向第二串口设备上报设备属性信息,触发在第二串口设备上进行注册过程,并在注册过程中,向第二串口设备提供认证信息,以通过第二串口设备的认证,因此,增强了注册过程的安全性,扩展了串口设备的功能。
[0047] 实施例二
[0048] 本实施例提供了一种串口设备注册的方法,该方法中设有第一串口设备和第二串口设备,第一串口设备中内置认证处理器芯片,第一串口设备插接在第二串口设备上,第二串口设备在第一串口设备工作时为其供电。
[0049] 本实施例中,第一串口设备组合待发送的数据包和接收数据包的方法如下步骤:
[0050] 第一串口设备根据待发送的内容、当前命令ID和当前传输ID组合数据包的方法具体为:
[0051] 步骤2001:填写数据包头,将当前填写位置设为数据包头之后。
[0052] 具体地,在本实施例中,包头为预先约定的字符串。
[0053] 具体地,预先约定的字符串长度为2字节,值为FF 55。相应地,当前填写位置为数据包起始位置偏移2字节。
[0054] 步骤2002:填写内容长度字段;
[0055] 在本实施例中,填写内容长度字段具体为:
[0056] 步骤2002-1:判断待发送的内容长度是否超过65535,如果是,报错,结束;否则,判断长度是否超过255,如果是,执行步骤2002-2;否则,执行步骤2002-4;
[0057] 步骤2002-2:向当前填写位置写入0,当前填写位置偏移1字节;
[0058] 步骤2002-3:向当前填写位置写入长度值,当前填写位置偏移2字节,填写完成;
[0059] 步骤2002-4:向当前填写位置写入长度值,当前填写位置偏移1字节;
[0060] 在长度值不超过255的情况下,用1个字节就可表示;而在255~65535之间的情况下,需要用2个字节表示。在本实施例中,填写2字节的长度值时,先填写长度值的高字节,再填写长度值的低字节。
[0061] 例如,待填写的长度值是258,16进制表示为0102,则在步骤2002-3中,填写的数据为:0102:
[0062] 步骤2003:填写当前命令ID,当前填写位置偏移;
[0063] 在本实施例中,当前命令ID是预先约定的。具体的,命令ID长度为2字节。相应地,当前填写位置偏移2字节;
[0064] 例如,已填写的命令ID为:0038;
[0065] 步骤2004:填写当前传输ID,当前填写位置偏移;
[0066] 在本实施例中,当前传输ID的初始值是事先约定的。具体地,传输ID长度为2字节。优选地,初始值为0001,后续指令的传输ID在初始值的基础上依次加1,相应地,当前填写位置偏移2字节。传输ID也可为随机数或每次不同的其它数值;
[0067] 步骤2005:向当前填写位置依次填入待发送的内容;将当前填写位置偏移相应的长度;
[0068] 步骤2006:根据当前填写的内容计算校验值,填入当前填写位置,完成组包。
[0069] 具体地,在本实施例中,计算校验值的方法为:长度字段+命令ID+传输ID+内容+校验值=0;例如,已填写的内容为:FF 55 04 00 38 00 01;
[0070] 则计算得到的校验值为C3。相应地,最终组得的数据包为FF 55 00 01 02 3F 00 C3。
[0071] 第一串口设备根据事先约定的方法和当前命令ID以及传输ID解析接收到的数据包,提取内容的方法具体如下:
[0072] 步骤2011:设当前扫描位置为数据包起始处,扫描数据包,判断当前扫描位置的值是否与预先约定的报头相符。如果是,当前扫描位置偏移;否则,报错结束;
[0073] 判断当前扫描位置的值是否与预设值相符的方法具体为:
[0074] 步骤2011-1:判断当前扫描位置是否超出数据包长度范围。如果是,报错退出;否则,继续;
[0075] 步骤2011-2,比对从当前扫描位置开始,长度等于预设值的长度的数据包内容是否与预设值相同。如果是,则相符;否则,不相符。
[0076] 具体地,在本实施例中,预先约定的报头为2字节的字符串FF 55。相应地,如果当前扫描位置的值与预先约定的报头相符,当前扫描位置偏移2字节。
[0077] 步骤2012:判断当前扫描位置是否为0。如果是,则将当前扫描位置其后的2字节作为内容的长度,当前扫描位置偏移3字节;否则,将当前扫描位置的值作为内容的长度,当前扫描位置偏移1字节;
[0078] 在本实施例中,将当前扫描位置其后的2字节作为内容的长度具体为:
[0079] 将其后的第一个字节作为长度值的高字节,第2个字节作为长度值的低字节。
[0080] 例如,当前扫描位置其后的2字节数据为0102,则长度值为0x0102(即258)。
[0081] 步骤2013:判断当前扫描位置是否超出数据包长度范围。如果是,报错退出;否则,执行步骤2014;
[0082] 步骤2014:判断当前扫描位置是否与当前命令ID相符。如果是,当前扫描位置偏移;否则,报错结束;
[0083] 判断方法与步骤2011相同,以下不再赘述。
[0084] 在本实施例中,命令ID是预先约定的。具体地,命令ID的长度为2字节。相应地,如果相符,当前扫描位置偏移2字节。
[0085] 步骤2015:判断当前扫描位置是否与当前传输ID相符。如果是,当前扫描位置偏移;否则,报错结束;
[0086] 判断方法与步骤2011相同,以下不再赘述。
[0087] 在本实施例中,传输ID的初始值是预先约定的。具体地,传输ID的长度为2字节。相应地,如果相符,当前扫描位置偏移2字节。
[0088] 步骤2016:根据长度值,从当前扫描位置读取相应长度的数据,作为被提取的内容,结束。
[0089] 在本实施例中,相应长度具体为长度值减去命令ID和传输ID的长度得到的差值;
[0090] 在本实施例中,步骤2016还可以包括:提取校验码,验证数据包完整性。提取校验码,验证数据包完整性具体包括:
[0091] 步骤2016-1:当前扫描位置根据差值偏移;
[0092] 步骤2016-2:判断当前扫描位置是否超出数据包长度范围。如果是,报错退出;否则,执行步骤2016-3;
[0093] 步骤2016-3:将当前扫描位置的值作为校验码,验证数据包是否完整。如果不完整,报错退出;否则,执行步骤2016-4;
[0094] 验证数据包是否完整的方法具体是:长度字段+命令ID+传输ID+内容+校验值=0;
[0095] 步骤2016-4:判断当前扫描位置是否已达到数据包边缘。如果是,则提取完成;否则,报错退出。
[0096] 提取校验码,验证数据包完整性也可以在步骤201之前进行,具体方法为直接读取数据包的最后一个字节作为校验码,根据(长度字段+命令ID+传输ID+内容+校验值=0)的方法检验数据包完整性。
[0097] 参见图2所示的串口设备注册的方法流程图,该方法具体如下:
[0098] 步骤201:第一串口设备上电等候80毫秒;
[0099] 步骤202:第一串口设备以第一波特率向第二串口设备发送检测字符,20毫秒后向第二串口设备发送开始配置指令;
[0100] 第二串口设备根据接收到的检测字符计算出与第一串口设备进行通信的速率;本实施例二中检测字符具体为0xFF,第一波特率初始值设为19200bps,波特率自适应范围为9600bps-57600bps。
[0101] 步骤203:第一串口设备判断在预先设定的时间内是否接收到第二串口设备返回的应答指令,是则顺序执行步骤204,否则第二串口设备没有返回应答指令,第一串口设备调整第一波特率后,返回步骤202;
[0102] 步骤204:第一串口设备判断接收到的第二串口设备返回的应答指令是否为允许设置设备属性,是则执行步骤209,否则执行步骤205;
[0103] 具体地,在本实施例中,如果从接收报文中提取的内容为预先约定的允许设置设备属性指令,则执行步骤209,否则执行步骤205。
[0104] 具体地,预先约定的允许设置设备属性指令是6字节字符串000200010038,由最后0038解析得到第二串口设备支持38命令,即允许设置设备属性。
[0105] 步骤205:第一串口设备向第二串口设备发送识别设备类型的请求指令;
[0106] 具体地,在本实施例中,第一串口设备向第二串口设备发送识别设备类型的请求指令的内容是12字节的字符串000000010000000000000000,相应地,第一串口设备根据待发送的内容、当前命令ID0013及当前传输ID组合识别设备类型指令的数据包的方法与上述组包方法相同,以下不再赘述。
[0107] 步骤206:第一串口设备判断接收到的第二串口设备返回的应答指令是否为允许识别设备类型,是则执行步骤207,否则返回步骤205,第一串口设备重新发送识别设备类型的请求指令;
[0108] 具体地,在本实施例中,第一串口设备如果从接收报文中提取的内容为1字节00,则第二串口设备允许识别设备类型,否则第一串口设备重新发送识别设备类型的请求指令。
[0109] 步骤207:第一串口设备接收到第二串口设备索要设备属性信息的请求指令,第一串口设备对请求指令做出回复,向第二串口设备发送相应的回复指令;
[0110] 具体地,在本实施例中,如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节00,则相应地,第一串口设备发送给第二串口设备的内容为预先约定的回复指令000000F3,即,第一串口设备支持向第二串口设备发送设备属性信息,设备属性信息是根据第一串口设备自身的信息设定的,例如,如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节01,则相应地,第一串口设备向第二串口设备发送的内容为设备名称属性信息,具体地,设备名称为46544361726452656164657200;
[0111] 如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节04,则相应地,第一串口设备向第二串口设备发送的内容为设备软件版本属性信息,具体地,设备软件版本为010000;
[0112] 如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节05,则相应地,第一串口设备向第二串口设备发送的内容为设备硬件版本属性信息,具体地,设备硬件版本为010000;
[0113] 如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节06,则相应地,第一串口设备向第二串口设备发送的内容为设备制造商名称属性信息,具体地,设备制造商名称为46547361666500;
[0114] 如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节07,则相应地,第一串口设备向第二串口设备发送的内容为设备型号属性信息,具体地,设备型号为524F 434B455935303100。
[0115] 上述五条设备属性指令是第二串口设备一定会向第一串口设备索要的设备属性,除此之外,第二串口设备还可能向第一串口设备索要下述设备属性,例如,[0116] 如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节08,则相应地,第一串口设备向第二串口设备发送的内容为设备序列号属性信息,具体地,设备序列号为35363700;
[0117] 如果第一串口设备从接收到的报文中提取的内容为预先约定的1字节09,则相应地,第一串口设备向第二串口设备发送的内容为设备支持数据包最大长度属性信息,具体地,设备数据包最大长度为FF FF。
[0118] 步骤208:第一串口设备向第二串口设备发送识别设备类型指令,执行步骤212;
[0119] 待发送的识别设备类型指令的内容是预先约定的12字节字符串000000010000000E00000200;
[0120] 相应地,第一串口设备根据待发送的内容、当前命令ID0013及当前传输ID组合识别设备类型指令的数据包的方法与上述组包方法相同,以下不再赘述。
[0121] 步骤209:第一串口设备向第二串口设备发送一系列设置设备属性指令;第一串口设备接收第二串口设备返回的相应的设置设备属性应答指令;
[0122] 第一串口设备必须向第二串口设备发送的设置设备属性指令包括以下指令:设置设备ID指令、设置设备能力指令、设置设备信息指令和设置设备协议字串指令;设置设备信息指令具体包括:设置设备名称指令、设置设备软件版本指令、设置设备硬件版本指令、设置设备制造商名称指令、设置设备型号指令和设置设备射频认证指令。
[0123] 在本实施例中,待发送的设置设备属性指令的内容是根据第一串口设备自身的信息设定的,例如,设置设备ID指令的内容是12字节的字符串000001000000000200000200;
[0124] 设置设备能力指令的内容是10字节的字符串00010000000000000200;
[0125] 设置设备名称指令的内容是16字节的字符串00020146544361726452656164657200;
[0126] 设置设备软件版本指令的内容是6字节的字符串:000204010000;
[0127] 设置设备硬件版本指令的内容是6字节的字符串:000205010000;
[0128] 设置设备制造商名称指令的内容是10字节的字符串:00020646547361666500;
[0129] 设置设备型号指令的内容是13字节的字符串:000207524F 434B 455935303100;
[0130] 设置设备射频认证指令的内容是7字节的字符串:00020C00000001;
[0131] 设置设备协议字串指令的内容是12字节的字符串:000401636F 6D 2E6674736166652E 6B 657900;
[0132] 相应地,第一串口设备根据上述待发送的设置设备属性指令的内容、命令ID和传输ID组合数据包的方法与上述组合数据包的方法相同,以下不再赘述。
[0133] 第一串口设备向第二串口设备发送的设置设备属性指令还可以包括其它指令,例如,设置设备序列号指令和设置设备应用字串指令。
[0134] 设置设备序列号指令的内容是7字节的字符串00020835363700;
[0135] 设置设备应用字串指令的内容是6字节的字符串000530313200;
[0136] 相应地,第一串口设备根据上述待发送的设置设备属性指令的内容、命令ID和传输ID组合数据包的方法与上述组合数据包的方法相同,以下不再赘述。
[0137] 在本实施例中,第一串口设备发送设置设备属性指令的先后顺序可调换。
[0138] 在上述步骤209中,第一串口设备在发送完一条设置设备属性指令后,判断是否接收到相应的应答指令,是则继续发送下一条设置设备属性指令,否则报错退出;第一串口设备发送设置设备属性指令的顺序可调换,优选地,传送ID根据发送指令的顺序依次加1。
[0139] 在本实施例中,如果从接收报文中提取的内容为认可该条设置设备属性指令,则发送下一条设置设备属性指令,否则报错退出。
[0140] 具体地,例如,提取的内容为认可设置设备ID指令,则认可设置设备ID指令是9字节字符串003A00020103000000,由最后1字节00解析得到第二串口设备认可设置设备ID指令。
[0141] 在上述步骤209中,第一串口设备发送设置设备属性指令的另一种实现方式,将设置设备属性指令组合成一个数据包发送给第二串口设备,具体地,
[0142] 将设置设备ID指令、设置设备能力指令、设置设备信息指令包含的七条指令和设置设备协议字串指令的内容组合成一个内容填入相应的当前位置,作为数据包的约定内容。
[0143] 相应地,第一串口设备根据待发送的设置设备属性指令的内容、当前命令ID和当前传输ID组合数据包的方法与上述组包方法相同,以下不再赘述。
[0144] 步骤210:第一串口设备向第二串口设备发送终止配置指令;
[0145] 具体地,在本实施例中,待发送的终止配置指令的内容是预先约定的1字节00;
[0146] 相应地,第一串口设备根据待发送的终止配置指令的内容、当前命令ID和当前传输ID组合数据包的方法与上述组合数据包的方法相同,以下不再赘述。
[0147] 步骤211:第一串口设备判断接收到的第二串口设备发送的终止配置应答指令,如果状态显示设置成功,则顺序执行步骤212,否则重新请求设置,返回步骤202;
[0148] 设置成功是指第二串口设备对第一串口设备全部设置设备属性指令的认可,第二串口设备根据设置设备属性信息开放相应的功能;
[0149] 具体地,在本实施例中,如果从接收报文中提取的内容为预先约定的1字节00,则设置成功,否则设置失败,重新请求设置。
[0150] 步骤212:第一串口设备接收到第二串口设备索要签名证书的请求,第一串口设备从认证处理器芯片中读取签名证书,并发送至第二串口设备;
[0151] 第一串口设备根据事先约定的方法和当前命令ID以及传输ID解析接收到的索要签名证书的数据包,提取内容的方法与上述解包方法相同,以下不再赘述。
[0152] 在本实施例中,第一串口设备向第二串口设备发送签名证书的方式可以是分段发送,或者组合成一个数据包发送。分段发送,例如,分为八段,即八个数据包发送给第二串口设备,具体地,待发送的第一个数据包的内容是预先约定的签名证书的版本号0200、当前数据包的序号00、数据包的最大序号07和签名证书的第一部分内容;具体地,传输ID位置的下一个位置上填入0200,相应地,当前填写位置偏移2字节;当前填写位置上填入00,后续数据包的序号在00基础上依次加1,相应地,当前填写位置偏移1字节;当前填写位置上填入07,相应地,当前填写位置偏移1字节;当前填写位置上填入签名证书的第一部分内容;
[0153] 第一串口设备根据待发送的第一个数据包的内容、当前命令ID和当前传输ID组合数据包的方法与上述组包方法相同,以下不再赘述;
[0154] 相应地,如果从接收报文中提取的内容为认可第一串口设备发送的签名证书的第一部分内容,则继续发送下一个数据包,否则报错退出,具体地,在本实施例中,认可签名证书的第一部分内容的指令是6字节的字符串000201740015,由最后0015解析到第二串口设备认可签名证书的第一部分内容。
[0155] 第一串口设备根据待发送的签名证书的内容、当前命令ID和当前传输ID组合八个数据包的方法与上述组合数据包的方法相同,以下不再赘述;相应地,解析第二串口设备返回的对第一至第七数据包的应答数据包的方法与上述解包方法相同,以下不再赘述;
[0156] 在本实施例中,第一串口设备解析最后一个应答数据包,如果从接收报文中提取的内容为确认发送的签名证书有效的指令,则第二串口设备生成挑战码,执行步骤213,否则第一串口设备重新发送签名证书,具体地,确认签名证书有效的指令的内容是5字节的字符串0016017B00,由最后一个字节00解析到第二串口设备确认第一串口设备发送的签名证书有效。
[0157] 第一串口设备向第二串口设备发送签名证书的另一种实现方法,即第一串口设备将签名证书组合成一个数据包发送给第二串口设备,具体地,数据包的内容的长度值在255~65535之间,需用2字节表示长度值,在本实施例中具体为03B9;
[0158] 第一串口设备根据待发送的签名证书的内容、当前命令ID和传输ID组合签名证书的数据包的方法与上述组包方法相同,以下不再赘述;相应地,如果第一串口设备从接收到的数据包中提取的内容为预先约定的签名证书有效的指令,则顺序执行步骤213,否则报错退出,具体地,签名证书有效的指令的内容是5字节的字符串0016016D00。
[0159] 步骤213:第一串口设备接收到第二串口设备发送的挑战码;
[0160] 挑战码是第二串口设备生成的随机数;
[0161] 在本实施例中,第一串口设备从接收报文中提取挑战码的方法与上述提取相应内容的方法相同,例如提取到的挑战码为29AD C59F B530AF 107529F1AC 4D BB EC D6936811DD,相应地,根据挑战码的长度,当前扫描位置做出偏移;提取当前扫描位置的值01,解析到第二串口设备支持第一串口设备重复认证的次数为1次。
[0162] 步骤214:第一串口设备将挑战码写入认证处理器芯片;第一串口设备置位运算标识;
[0163] 步骤215:第一串口设备检索到置位的签名已生成标识,从认证处理器芯片中读取签名值,并将签名值发送给第二串口设备;
[0164] 认证处理器芯片检索到第一串口设备置位的运算标识,认证处理器芯片计算出签名值并置位签名已生成标识;
[0165] 具体地,在本实施例中,待发送的内容为签名值,第一串口设备组合签名值的数据包的方法与上述组包方法相同,以下不再赘述。
[0166] 步骤216:第一串口设备判断接收到的第二串口设备发送的第一签名认证结果是否为认证成功,是则顺序执行步骤217,否则认证失败,重新请求认证,返回步骤209;
[0167] 第一签名认证是第二串口设备通过第一串口设备发送的签名证书对第一串口设备发送的签名值进行验证;具体地,在本实施例中,如果从接收报文中提取的内容为第一签名认证成功的指令,则执行步骤217,否则认证失败,重新请求认证,返回步骤209。
[0168] 具体地,第一签名认证成功的指令的内容是5字节的字符串0019017B00,由最后一个00字节解析到第一签名认证成功。
[0169] 步骤217:第一串口设备向第二串口设备发送索要签名证书的请求,等待接收第二串口设备发送的签名证书;
[0170] 第一串口设备根据待发送的索要签名证书的内容、当前命令ID和当前传输ID组合数据包的方法与上述组包方法相同,以下不再赘述。
[0171] 步骤218:第一串口设备接收到第二串口设备发送的签名证书,并将签名证书写入认证处理器芯片;
[0172] 第一串口设备根据事先约定的方法和当前命令ID以及传输ID解析接收到的签名证书的数据包,提取签名证书的方法与上述提取相应内容的方法相同,以下不再赘述。
[0173] 步骤219:第一串口设备从认证处理器芯片中读取挑战码,并将挑战码发送至第二串口设备;
[0174] 认证处理器芯片验证第二串口设备发送的签名证书是否有效,若是,则生成挑战码,第一串口设备向第二串口设备发送签名证书有效的指令,否则,返回步骤209;
[0175] 具体地,在本实施例中,第一串口设备向第二串口设备发送的签名证书有效的指令的内容是预先约定的1字节00。
[0176] 上述挑战码是认证处理器芯片生成的随机数;具体地,在本实施例中,在当前传输ID位置的下一个位置,填入认证处理器芯片生成的挑战码,相应地,根据挑战码的长度,当前扫描位置做出相应长度的偏移;在当前填写位置上填入1字节01,即第一串口设备支持第二串口设备重复认证的次数为1次;
[0177] 第一串口设备根据待发送的挑战码、当前命令ID和当前传输ID组合数据包的方法与上述组包方法相同,以下不再赘述。
[0178] 步骤220:第一串口设备接收到第二串口设备发送的签名值;
[0179] 签名值是第二串口设备根据挑战码,使用存储的签名私钥计算得出的签名值;
[0180] 在本实施例中,第一串口设备根据事先约定的方法和当前命令ID以及传输ID解析接收到的签名值的数据包,提取签名值的方法与上述提取相应内容的方法相同,以下不再赘述。
[0181] 步骤221:第一串口设备将签名值写入认证处理器芯片;第一串口设备置位认证标识;
[0182] 步骤222:第一串口设备检索到认证处理器芯片置位的认证成功标识,将认证成功的结果发送至第二串口设备;第一串口设备与第二串口设备两次认证成功,第一串口设备在第二串口设备上的注册完成,两个设备可以开始进行应用通讯。
[0183] 认证处理器芯片检索到第一串口设备置位的认证标识,通过第二串口设备发送的签名证书对签名值进行第二签名认证,认证成功,则置位认证成功标识,认证失败,则返回步骤209,重新请求认证。
[0184] 具体地,在本实施例中,待发送的内容是预先约定的第二签名认证成功的1字节00;
[0185] 第一串口设备根据待发送的第二签名认证成功的内容、当前命令ID和当前传输ID组合数据包的方法与上述组包方法相同,以下不再赘述。
[0186] 实施例三
[0187] 本实施例提供了一种串口设备间注册的装置,参见图3,该装置设置在第一串口设备上,该装置包括以下模块:
[0188] 连接建立模块32,用于与第二串口设备建立连接;
[0189] 设备属性上报模块34,与连接建立模块32相连,用于向第二串口设备上报第一串口设备的设备属性信息,用以发起在第二串口设备中注册第一串口设备过程;
[0190] 认证模块36,与设备属性上报模块34相连,用于在注册过程中,第一串口设备接受认证;本实施例中,该认证模块36包括:证书发送单元361,用于接收到第二串口设备索要签名证书的请求后,向第二串口设备发送第一签名证书;运算单元362,用于接收第二串口设备返回的第一挑战码,对第一挑战码进行运算,得到第一签名值;签名值发送单元363,用于将第一签名值发送给第二串口设备,以使第二串口设备根据第一签名证书对第一签名值进行认证,并接收返回的认证结果;
[0191] 确认完成注册模块38,与认证模块36相连,用于第一串口设备通过认证后,确认完成在第二串口设备上的注册。
[0192] 其中,上述连接建立模块32包括:请求发送单元,用于第一串口设备插接在第二串口设备上后,以第一波特率向第二串口设备发送检测字符和设置设备属性信息的请求;检测字符发送单元,用于如果在指定时间内,第一串口设备未收到第二串口设备返回的应答信息,第一串口设备调整第一波特率,以调整后的第一波特率向第二串口设备重新发送检测字符。
[0193] 上述设备属性上报模块34包括:判断单元,用于接收到应答信息,判断应答信息是否为允许设置设备属性信息;第一上报单元,用于判断单元的判断结果为是时,向第二串口设备上报第一串口设备的设备属性信息;第二上报单元,用于判断单元的判断结果为否时,向第二串口设备发送识别设备类型命令,并在接收到第二串口设备索要设备属性信息的请求指令时,根据请求指令向第二串口设备上报第一串口设备的设备属性信息。
[0194] 优选的,认证模块36包括:证书获取单元,用于向第二串口设备获取第二签名证书;挑战码发送单元,用于向第二串口设备发送第二挑战码,以使第二串口设备根据第二挑战码生成第二签名值,将第二签名值返回给第一串口设备;认证单元,用于使用第二签名证书对第二签名值进行认证,认证通过后,向第二串口设备发送认证成功信息。
[0195] 图4是本发明实施例三提供的一种串口设备注册的系统的具体结构框图,具体包括第一串口设备41和第二串口设备42;
[0196] 第一串口设备41,具体包括第一签名认证模块411、读取模块412、写入模块413和第一通信模块414;
[0197] 第一签名认证模块411,具体为认证处理器芯片,用于第一串口设备41接受第二串口设备42对其进行第一签名认证;
[0198] 该认证处理器芯片即第一签名认证模块411具体包括存储单元4111、生成单元4112、判断单元4113、置位单元4114、检索单元4115、计算单元4116、验证单元4117和错误处理单元4118;
[0199] 存储单元4111,用于认证处理器芯片存储第一串口设备41的私钥、签名证书和签名值;还用于存储第二串口设备42发送的签名证书和签名值;
[0200] 生成单元4112,用于认证处理器芯片生成挑战码;
[0201] 判断单元4113,用于判断第二串口设备返回的开始配置应答指令是否为允许设置设备属性;用于判断第二串口设备返回的终止配置应答指令是否为设置成功;用于判断第二串口设备是否允许第一串口设备识别设备类型;还用于判断第二串口设备返回的第一签名认证结果是否为认证成功;
[0202] 置位模块4114,用于第一串口设备41置位运算标识和认证标识,还用于认证处理器芯片置位签名已生成标识和认证成功标识;
[0203] 检索模块4115,用于认证处理器芯片检索置位的运算标识和认证标识,还用于第一串口设备41检索置位的签名已生成标识和认证成功标识;
[0204] 计算单元4116,用于认证处理器芯片根据第二串口设备42发送的挑战码,使用存储的私钥计算得出签名值;
[0205] 验证单元4117,用于认证处理器芯片通过第二串口设备42发送的签名证书对第二串口设备42发送的签名值进行验证;
[0206] 错误处理单元4118,用于认证处理器芯片处理第二串口设备没有返回允许设置设备属性的应答信息的情况;还用于处理第一串口设备设置失败的情况;还用于处理认证失败的情况;
[0207] 读取模块412,用于第一串口设备41从认证处理器芯片中读取存储的签名证书、生成的挑战码和计算得到的签名值;
[0208] 写入模块413,用于第一串口设备41将第二串口设备42发送的签名证书、挑战码和签名值写入认证处理器芯片;
[0209] 第一通信模块414,用于第一串口设备41与第二串口设备42之间进行信息的发送和接收;
[0210] 信息具体为检测字符、应答信息、设置设备属性指令、设置设备属性指令的应答指令、签名证书、挑战码、签名值和认证结果等;
[0211] 第二串口设备42,具体包括第二签名认证模块421、第二通信模块422和供电模块423;
[0212] 第二签名认证模块421,用于第一串口设备41对第二串口设备42进行第二签名认证;
[0213] 第二通信模块422,用于第二串口设备42与第一串口设备41之间进行信息的发送和接收;
[0214] 信息具体为检测字符、应答信息、设置设备属性指令、设置设备属性指令的应答指令、签名证书、挑战码、签名值和认证结果等;
[0215] 供电模块423,用于在第一串口设备41插接到第二串口设备42上工作时为第一串口设备41供电。
[0216] 本实施例的第一串口设备通过向第二串口设备上报设备属性信息,触发在第二串口设备上进行注册过程,并在注册过程中,向第二串口设备提供认证信息,以通过第二串口设备的认证,因此,增强了注册过程的安全性,扩展了串口设备的功能。
[0217] 从以上的描述中可以看出,以上实施例的第一串口设备通过向第二串口设备上报设备属性信息,触发在第二串口设备上进行注册过程,并在注册过程中,向第二串口设备提供认证信息,以通过第二串口设备的认证,解决了串口设备间注册存在安全隐患的问题,增强了注册过程的安全性,扩展了串口设备的功能,基于该注册进行的通信将更安全。
[0218] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0219] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。