一种鼠标与PC端之间的双向认证方法与流程

文档序号:31708961发布日期:2022-10-01 14:10阅读:212来源:国知局
一种鼠标与PC端之间的双向认证方法与流程
一种鼠标与pc端之间的双向认证方法
技术领域
1.本发明涉及交互认证,具体涉及一种鼠标与pc端之间的双向认证方法。


背景技术:

2.随着科技的发展,传统鼠标的功能已经满足不了用户的日常使用需求。近年来,随着智能语音技术逐渐应用在键鼠产品中,让鼠标从传统属性转变为具有ai属性的智能语音鼠标后,市面上陆续出现很多语音类键鼠产品。但是,这些智能键鼠仅采用简单的鼠标标识码的辨别来实现客户端与硬件之间的身份认证,通过身份认证后即可获取通讯权限,安全系数低,容易被破解。
3.目前,智能语音键鼠由于支持语音交互,存在pc端与鼠标之间的通讯,以及pc端与引擎端之间的数据流传输等机制,而这些机制都依赖于客户端软件实现。为了防止该软件被其他用户下载后,与其他硬件产品配对使用而导致数据泄露,需要研发一种鼠标与pc端之间的双向认证机制,来确保鼠标与pc端的通讯唯一性以及数据传输的安全性。


技术实现要素:

4.(一)解决的技术问题
5.针对现有技术所存在的上述缺点,本发明提供了一种鼠标与pc端之间的双向认证方法,能够有效克服现有技术所存在的鼠标与pc端之间的身份认证机制安全性较差,容易被破解的缺陷。
6.(二)技术方案
7.为实现以上目的,本发明通过以下技术方案予以实现:
8.一种鼠标与pc端之间的双向认证方法,包括以下步骤:
9.s1、pc端获取认证必需的鼠标设备信息,并向鼠标发送认证必需的pc端设备信息;
10.s2、pc端向鼠标发送握手指令;
11.s3、鼠标接收到握手指令后发起双向认证请求,鼠标与pc端之间进行双向认证交互;
12.s4、鼠标与pc端之间完成双向认证。
13.优选地,s3中鼠标与pc端之间进行双向认证交互,包括:
14.s31、鼠标向pc端发送从机验证信息;
15.s32、pc端对从机验证信息进行验证,并将得到的从机信息验证结果与主机验证信息一同发送给鼠标;
16.s33、鼠标对pc端发送的从机信息验证结果与主机验证信息进行验证,并向pc端发送主机信息验证结果;
17.s34、pc端将对本地信息进行加密得到的数据与主机信息验证结果进行比对,并根据比对结果向鼠标发送认证结果。
18.优选地,s31中鼠标向pc端发送从机验证信息,包括:
19.利用session_key密钥对mouse_finger、rondom1的异或结果进行aes加密,并将加密结果发送给pc端;
20.其中,session_key为aes密钥,由version、mac经过加密计算得到;rondom1为鼠标产生的16字节随机数。
21.优选地,s32中pc端对从机验证信息进行验证,并将得到的从机信息验证结果与主机验证信息一同发送给鼠标,包括:
22.利用session_key密钥解析出mouse_finger、rondom1的异或结果;
23.将mouse_finger、rondom1的异或结果与mouse_finger进行异或运算,得到rondom1;
24.利用session_key密钥对pc_finger、rondom2、rondom1的异或结果进行aes加密,并将加密结果发送给鼠标;
25.其中,rondom2为pc端产生的16字节随机数。
26.优选地,s33中鼠标对pc端发送的从机信息验证结果与主机验证信息进行验证,并向pc端发送主机信息验证结果,包括:
27.利用session_key密钥解析出pc_finger、rondom2、rondom1的异或结果;
28.将pc_finger、rondom2、rondom1的异或结果与rondom1进行异或运算,得到pc_finger、rondom2的异或结果;
29.将pc_finger、rondom2的异或结果与pc_finger进行异或运算,得到rondom2;
30.采用sdbm算法计算出pc_finger的hash值,并对pc_finger的hash值与rondom2进行md5加密运算,并将加密结果发送给pc端。
31.优选地,s34中pc端将对本地信息进行加密得到的数据与主机信息验证结果进行比对,并根据比对结果向鼠标发送认证结果,包括:
32.采用sdbm算法计算出本地pc_finger的hash值,并对本地pc_finger的hash值与本地rondom2进行md5加密运算,将该加密结果与鼠标发送的主机信息验证结果进行比对;
33.若比对结果一致,则向鼠标发送认证成功结果,否则向鼠标发送认证失败结果。
34.优选地,所述鼠标与pc端之间的双向认证交互应在从握手开始30s内完成所有认证工作,若鼠标与pc端之间的双向认证交互从握手开始超过30s,则pc端向鼠标发送认证失败结果。
35.优选地,s1中pc端获取认证必需的鼠标设备信息,并向鼠标发送认证必需的pc端设备信息,包括:
36.pc端向鼠标逐个下发获取鼠标设备信息指令,鼠标将包含mouse_finger、version、mac的鼠标设备信息依次反馈给pc端,同时pc端主动将包含pc_finger的pc端设备信息发送给鼠标。
37.优选地,所述mouse_finger为鼠标的唯一识别码,总长度为16字节;所述pc_finger为pc端的主机版本号,总长度为16字节;所述version为鼠标的固件版本号,总长度为4字节;所述mac为鼠标的mac地址,总长度为6字节。
38.(三)有益效果
39.与现有技术相比,本发明所提供的一种鼠标与pc端之间的双向认证方法,具有以下有益效果:
40.1)鼠标的session_key密钥加密存储在内部,黑客无法从flash上直接读取,pc端的session_key密钥信息分散在多个地方,比如抽取代码的一部分作为session_key密钥,生成一个key垃圾海洋,采用图片隐写等方式,从而能够有效防止session_key密钥泄露;
41.2)黑客监听usb或者蓝牙通信将请求进行重放,双向认证机制中的从机验证信息、主机验证信息中均带有随机数,能够有效防止重放;
42.3)黑客通过反编译、在线调试工具或者类似的hook工具对pc端进行逆向分析程序流程,并进行二进制或者虚拟机级别的byte patch时,一方面通过增加调用者签名检查、代码混淆、exe加壳增加逆向成本,另一方面每次启动pc端尝试联网,重新计算重要组件的md5并上传至服务端校验,能够有效防止逆向分析。
附图说明
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1为本发明的流程示意图;
45.图2为本发明中pc端与鼠标之间进行设备信息交互的流程示意图;
46.图3为本发明中鼠标与pc端之间进行双向认证交互的流程示意图。
具体实施方式
47.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.一种鼠标与pc端之间的双向认证方法,如图1所示,s1、pc端获取认证必需的鼠标设备信息,并向鼠标发送认证必需的pc端设备信息;
49.s2、pc端向鼠标发送握手指令;
50.s3、鼠标接收到握手指令后发起双向认证请求,鼠标与pc端之间进行双向认证交互;
51.s4、鼠标与pc端之间完成双向认证。
52.如图2所示,s1中pc端获取认证必需的鼠标设备信息,并向鼠标发送认证必需的pc端设备信息,包括:
53.pc端向鼠标逐个下发获取鼠标设备信息指令,鼠标将包含mouse_finger、version、mac的鼠标设备信息依次反馈给pc端,同时pc端主动将包含pc_finger的pc端设备信息发送给鼠标。
54.本技术技术方案中,mouse_finger为鼠标的唯一识别码,总长度为16字节;pc_finger为pc端的主机版本号,总长度为16字节;version为鼠标的固件版本号,总长度为4字节;mac为鼠标的mac地址,总长度为6字节。
55.如图3所示,s3中鼠标与pc端之间进行双向认证交互,包括:
56.s31、鼠标向pc端发送从机验证信息;
57.s32、pc端对从机验证信息进行验证,并将得到的从机信息验证结果与主机验证信息一同发送给鼠标;
58.s33、鼠标对pc端发送的从机信息验证结果与主机验证信息进行验证,并向pc端发送主机信息验证结果;
59.s34、pc端将对本地信息进行加密得到的数据与主机信息验证结果进行比对,并根据比对结果向鼠标发送认证结果。
60.①
鼠标向pc端发送从机验证信息,包括:
61.利用session_key密钥对mouse_finger、rondom1的异或结果进行aes加密,并将加密结果发送给pc端;
62.其中,session_key为aes密钥,由version、mac经过加密计算得到;rondom1为鼠标产生的16字节随机数。
63.从机验证信息challenge1的信息如下表所示:
[0064][0065]

pc端对从机验证信息进行验证,并将得到的从机信息验证结果与主机验证信息一同发送给鼠标,包括:
[0066]
利用session_key密钥解析出mouse_finger、rondom1的异或结果;
[0067]
将mouse_finger、rondom1的异或结果与mouse_finger进行异或运算,得到rondom1;
[0068]
利用session_key密钥对pc_finger、rondom2、rondom1的异或结果进行aes加密,并将加密结果发送给鼠标;
[0069]
其中,rondom2为pc端产生的16字节随机数。
[0070]
从机信息验证结果与主机验证信息response1+challenge2的信息如下表所示:
[0071][0072]

鼠标对pc端发送的从机信息验证结果与主机验证信息进行验证,并向pc端发送主机信息验证结果,包括:
[0073]
利用session_key密钥解析出pc_finger、rondom2、rondom1的异或结果;
[0074]
将pc_finger、rondom2、rondom1的异或结果与rondom1进行异或运算,得到pc_finger、rondom2的异或结果;
[0075]
将pc_finger、rondom2的异或结果与pc_finger进行异或运算,得到rondom2;
[0076]
采用sdbm算法计算出pc_finger的hash值,并对pc_finger的hash值与rondom2进行md5加密运算,并将加密结果发送给pc端。
[0077]
主机信息验证结果response2的信息如下表所示:
[0078]
16字节(char)md5(h(pc_finger),rondom2)
[0079]

pc端将对本地信息进行加密得到的数据与主机信息验证结果进行比对,并根据比对结果向鼠标发送认证结果,包括:
[0080]
采用sdbm算法计算出本地pc_finger的hash值,并对本地pc_finger的hash值与本地rondom2进行md5加密运算,将该加密结果与鼠标发送的主机信息验证结果进行比对;
[0081]
若比对结果一致,则向鼠标发送认证成功结果,否则向鼠标发送认证失败结果。
[0082]
认证结果result的信息如下表所示:
[0083]
4字节(int)result
[0084]
aes:aes128 ecb模式
[0085]
md5:md5 128位
[0086]
h:sdbm hash
[0087]
上述技术方案中,鼠标与pc端之间的双向认证交互应在从握手开始30s内完成所有认证工作,若鼠标与pc端之间的双向认证交互从握手开始超过30s,则pc端向鼠标发送认证失败结果。
[0088]
本技术技术方案中,鼠标与pc端之间的通讯方式有ble、usb两种,ble通讯存在被截包或数据包被篡改的风险,为了解决这一问题,固定了数据包的格式,并在数据包中加入验证信息,以确保数据包的完整性和准确性。数据包的数据格式如下表所示:
[0089]
startsequencedatalengthdatacrc(data)1byte1byte4bytenbyte4byte
[0090]
start:作为每组数据的起始数据,它有固定的值0xfe;
[0091]
sequence:流水号,流水号是依次递增的,pc端输出数据和鼠标输出数据共用一个流水号,若出现连续两组数据包的流水号不是连续的,即可认定为存在丢失数据包;
[0092]
data length:表示data的长度,并非总包长,总包长为data length+10;
[0093]
data:有效的数据负载;
[0094]
crc(data):data的循环冗余校验数据,其固定长度为四字节,用于检测或检验单个数据包的完整性,有效防止数据包被篡改导致认证结果异常。
[0095]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1