本申请涉及通信安全技术领域,特别是涉及一种数据传输方法、电子设备及计算机可读存储介质。
背景技术:
近年来,越来越多的iot(internetofthings,物联网)设备通过近场通信的方式与智能手机、智能手表、平板电脑等电子设备之间建立起通信连接。其中,ble、br/edr、wifidirect等近场通信协议提供了设备到设备之间的身份认证、安全传输的能力。
技术实现要素:
本申请实施例第一方面提供了一种数据传输方法,应用于第一设备向第二设备传输数据,第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端,方法包括:第一通信客户端获取用于与第二通信客户端进行身份认证的通信密钥;利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证;若第一应用客户端身份认证成功,则基于通信密钥,将第一应用客户端的数据传输至第二通信客户端,以使第二通信客户端将数据传输至第二应用客户端。
本申请实施例第二方面提供了一种数据传输方法,应用于第一设备向第二设备传输数据,第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端,方法包括:第二通信客户端获取用于与第一通信客户端进行身份认证的通信密钥;利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证;若第一应用客户端身份认证成功,则基于通信密钥,接收第一通信客户端发送的第一应用客户端的传输数据,并将第一应用客户端的数据传输至第二应用客户端。
本申请实施例第三方面提供了一种电子设备,该电子设备包括处理器以及与处理器连接的存储器,存储器用于存储程序数据,处理器用于执行程序数据以实现前述的方法。
本申请实施例第四方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有程序数据,程序数据在被处理器执行时,用以实现前述的方法。
本申请的有益效果是:区别于现有技术的情况,本申请通过第一通信客户端获取用于与第二通信客户端进行身份认证的通信密钥,然后利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证,在第一应用客户端身份认证成功之后,基于通信密钥,将第一应用客户端的数据传输至第二通信客户端,以使第二通信客户端将数据传输至第二应用客户端,实现了第一设备上的第一应用客户端与第二设备上的第二应用客户端之间的数据传输,且应用层间进行数据传输之前必须通过身份认证,提高了数据传输的安全性。
附图说明
为了更清楚地说明本申请中的技术方案,下面将对实施例描述中所需要的附图作简单的介绍,显而易见地,下面描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的数据传输方法一实施例的流程示意图;
图2是本申请提供的第一设备和第二设备的一交互示意图;
图3是本申请提供的数据传输方法另一实施例的流程示意图;
图4是本申请提供的第一通信客户端和第二通信客户端的一交互示意图;
图5是本申请提供的数据传输方法中步骤s25一实施例的流程示意图;
图6是本申请提供的数据传输方法中步骤s26的一实施例的流程示意图;
图7是本申请提供的数据传输方法又一实施例的流程示意图;
图8是本申请提供的数据传输方法中步骤s52一实施例的流程示意图;
图9是本申请提供的数据传输方法中步骤s53一实施例的流程示意图
图10是本申请提供的电子设备一实施例的框架示意图;
图11是本申请提供的计算机存储介质一实施例的框架示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
目前,电子设备之上往往安装了诸多应用客户端,而近场通信协议中并未提供跨设备的应用到应用之间做好身份认证的通用解决方案。对于两台已经配对的设备,如果在应用层不进行身份认证,那么运行于设备之上的任意应用,都可以与对端设备的应用进行近场通信;更严重的情况,一旦用户安装了恶意应用,恶意应用一旦知道通信协议,就可以轻松构造数据与对端设备进行通信,这里会破坏数据传输的机密性。因此,本申请提供了一种数据传输方法,在数据传输前通过对应用进行身份认证,能够提高应用间数据传输的安全性。
请参阅图1至图,图1是本申请提供的数据传输方法一实施例的流程示意图,图2是本申请提供的第一设备和第二设备的一交互示意图。
本实施例中,数据传输方法应用于第一设备向第二设备传输数据,第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端。
可选地,在第一设备中,第一通信客户端和第一应用客户端的数量不作限制;在第二设备中,第二通信客户端和第二应用客户端的数量不作限制。
如图2所示,在一些实施例中,第一设备可以安装有一个第一通信客户端和多个(1~n个)第一应用客户端,第二设备可以安装有一个第二通信客户端和多个(1~n个)第二应用客户端。其中,第一应用客户端与第一通信客户端通信连接,第一通信客户端与第二通信客户端进行通信连接,以将第一应用客户端的数据传送至第二通信客户端。由于第二通信客户端与第二应用客户端连接,从而可以将第一通信客户端发送的数据发送至第二应用客户端,从而实现了第一应用客户端与第二应用客户端的数据传输,且第一应用客户端通过与第一通信客户端进行关联,则可以在第一通信客户端身份认证成功后,表示第一应用客户端也身份认证成功,即第一应用客户端是安全的应用客户端,从而可以提高应用层间数据传输的安全性。
需要说明的是,通信客户端为第一通信客户端和第二通信客户端的统称,应用客户端为第一应用客户端和第二应用客户端的统称。其中,第一与第二的区别在于通信客户端或应用客户端安装的位置不同。
其中,通信客户端用于与其他电子设备上的通信客户端进行通信,以实现应用层面上的安全数据传输。通信客户端不限于集成有wifi、mesh、蓝牙(ble、br/edr)、zigbee、thread、z-wave、nfc、uwb、lifi、hilink等近场通信功能。以蓝牙为例,通信客户端具体可以为蓝牙通信客户端,电子设备可以通过蓝牙通信客户端建立蓝牙通信连接和应用客户端的身份认证,从而可以在通过蓝牙进行数据传输的同时,提升数据传输的安全性。
应用客户端可用于实现各种各样的功能,例如,音乐客户端可用于播放音乐,邮件客户端可用于收发邮件,用户可以根据实际需要选择所要安装的应用客户端。以手机为例,一般地,手机上安装有系统客户端和非系统客户端,其中,系统客户端为手机的营运商在手机出厂前已安装的应用客户端,而非系统客户端为手机出厂之后安装的应用客户端。可以理解的,在一些实施例中,因为系统客户端为手机的营运商在手机出厂前已安装的应用客户端,所以可以认为系统客户端是安全的、值得信赖的应用客户端,所以电子设备可以将系统客户端默认为与通信客户端关联的应用客户端;或者,可以在手机出厂前将系统客户端与应用客户端进行关联。应用客户端不限于包括微信、qq、网易云、钉钉和淘宝。
基于上述电子设备,数据传输方法可以包括以下步骤:
步骤s11:第一通信客户端获取用于与第二通信客户端进行身份认证的通信密钥。
其中,通信密钥可以用于第一通信客户端与第二通信客户端进行身份认证。在数据传输过程中,第一通信客户端为数据传输的发起方,第二通信客户端为数据传输的接收方。
可选地,通信密钥可以存储于电子设备本地或远端服务器中。
步骤s12:利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证。
其中,若第一通信客户端与第二通信客户端身份认证成功,则第一通信客户端关联的第一应用客户端也即是身份认证成功。
在一些实施例中,第一应用客户端可以预先与第一通信客户端建立关联,例如可以在第一通信客户端的后台官网进行注册,注册成功的第一应用客户端与第一通信客户端建立了关联。
在一应用场景中,当第一应用客户端需要进行数据传输时,第一应用客户端可以到第一通信客户端进行鉴权,若第一应用客户端为与第一通信客户端关联的应用客户端,则鉴权成功,从而可以通过第一通信客户端进行数据传输。
可选地,第一通信客户端可以利用通信密钥结合挑战应答的方式与第二通信客户端进行身份认证。其中,挑战应答即第一通信客户端给第二通信客户端发送一个"挑战"字串,第二通信客户端程序收到这个"挑战"字串后,做出相应的"应答",本实施例通过挑战应答的方式进行身份认证,计算简单,且对连接流程的影响甚微。
步骤s13:若第一应用客户端身份认证成功,则基于通信密钥,将第一应用客户端的数据传输至第二通信客户端,以使第二通信客户端将数据传输至第二应用客户端。
在第一应用客户端身份认证成功之后,第一通信客户端可以将第一应用客户端的数据传输至第二通信客户端,再由第二通信客户端将数据传输至第二应用客户端,从而可以实现第一设备上的第一应用客户端与第二设备上的第二应用客户端之间的数据传输,且应用层间进行数据传输之前必须通过身份认证,提高了数据传输的安全性。
上述方案,通过第一通信客户端获取用于与第二通信客户端进行身份认证的通信密钥,然后利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证,在第一应用客户端身份认证成功之后,基于通信密钥,将第一应用客户端的数据传输至第二通信客户端,以使第二通信客户端将数据传输至第二应用客户端,实现了第一设备上的第一应用客户端与第二设备上的第二应用客户端之间的数据传输,且应用层间进行数据传输之前必须通过身份认证,提高了数据传输的安全性。
请参阅图3至图4,图3是本申请提供的数据传输方法另一实施例的流程示意图,图4是本申请提供的第一通信客户端和第二通信客户端的一交互示意图。
本实施例中,数据传输方法应用于第一设备向第二设备传输数据,第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端,对于该部分的阐述请参见上述实施例中的对应位置,此处不再赘述。
不同的是,本实施例中,通信密钥是由第一设备和第二设备动态协商生成的。在一些实施方式中,第一设备和第二设备动态协商通信密钥的过程可以包括步骤s21、s22和s23。
本实施例中,数据传输方法可以包括以下步骤:
步骤s21:第一设备与第二设备进行近场通信配对。
可选地,近场通信不限于包括wifidirect、mesh、蓝牙(ble、br/edr)、zigbee、thread、z-wave、nfc、uwb、lifi和hilink。
可以理解的,不同的近场通信方式对应的配对方式可以不同。例如,wifi和蓝牙可以通过输入配对密码的方式进行配对,若第一设备或第二设备连接了对端的wifi和蓝牙,并输入了正确的配对密码,则配对成功;另外,nfc可以通过两个设备的靠近自动进行通信配对。
在一应用场景中,以蓝牙为例,智能音箱(第二设备)开启蓝牙,手机(第一设备)通过搜索并选择智能音箱的蓝牙广播,向智能音箱发起蓝牙连接,若配对双方都输入正确的配对密码,则手机与智能音箱通信配对成功,否则,手机与智能音箱通信配对失败。
步骤s22:若第一设备与第二设备近场通信配对成功,则第一设备与第二设备采用预设密钥协商算法进行协商,以得到通信密钥。
具体地,第一设备与第二设备近场通信配对成功之后,第一设备与第二设备可以发起一次通信,以协商通信密钥。本实施例中,通信密钥记为ksc(keyofsafeconnection)。
其中,预设密钥协商算法例如是dh(diffie-hellman)算法、rsa算法等密钥协商算法。
步骤s23:将通信密钥进行存储。
在一些实施例中,可以将通信密钥存储至第一设备的安全存储区域,以防止通信密钥泄露。
具体地,第一通信客户端可以获取第二设备的标识信息,然后将第二设备的标识信息与通信密钥进行关联储存,以便于在身份验证阶段,第一通信客户端能够通过获取第二设备的标识信息,获取与之关联的通信密钥。
在一些实施例中,第二通信客户端也可以获取第一设备的标识信息,然后将第一设备的标识信息与通信密钥进行关联储存,以便于在身份验证阶段,第二通信客户端能够通过获取第一设备的标识信息,获取与之关联的通信密钥。
可选地,标识信息可以是电子设备的mac(mediaaccesscontrol,媒体访问控制)地址、imei(internationalmobileequipmentidentity,国际移动设备识别码)等可以唯一标识电子设备的信息。
步骤s24:第一通信客户端获取用于与第二通信客户端进行身份认证的通信密钥。
具体地,第一通信客户端可以取第二设备的标识信息,然后根据第二设备的标识信息,获取用于与第二通信客户端进行身份认证的通信密钥。
步骤s25:利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证。
步骤s26:若第一应用客户端身份认证成功,则基于通信密钥,将第一应用客户端的数据传输至第二通信客户端,以使第二通信客户端将数据传输至第二应用客户端。
本实施例中,步骤s24~s26对应上述实施例中步骤s11~s13,对于步骤s24~s26部分的阐述请参见上述实施例中的对应位置,此处不再赘述。
在一些实施例中,第一通信客户端或第二通信客户端,可以与第三设备中安装的第三通信客户端建立通信连接,其中,第一通信客户端、第二通信客户端和第三通信客户端上登录的账户信息相同;第一通信客户端或第二通信客户端将通信密钥发送至第三通信客户端。这里,通信连接可以为短距离通信连接,或者长距离通信连接,此处不作限制。短距离通信连接例如蓝牙、wifi,长距离通信连接例如互联网。
当第一通信客户端或第二通信客户端,与第三设备中安装的第三通信客户端建立通信连接时,第一通信客户端或第二通信客户端可以将已经协商好的通信密钥通过账号分享给不同设备上的第三通信客户端,从而第三通信客户端不必再与第一通信客户端或第二通信客户端进行一次密钥协商,其次,通过登录相同的账户信息可以避免通信密钥被恶意分享,导致通信密钥泄露。
上述方案,第一设备与第二设备每进行一次近场通信配对就会协商出一个新的通信密钥,从而即便之前的通信密钥发生泄露,泄露的通信密钥也无法长期使用,以此可以避免每次通信都使用相同的密钥,提高了加密安全效果,从而提高数据传输的安全性;其次,通过将通信密钥与设备的标识信息进行关联存储可以根据设备的标识信息快速、准确地获取与设备关联的通信密钥;再次,第三通信客户端通过登录与第一通信客户端或第二通信客户端相同的账户信息,可以通过账户快速、安全地获取通信密钥。
请参阅图5,图5是本申请提供的数据传输方法中步骤s25一实施例的流程示意图,以及请继续参阅图4中身份认证部分。
本实施例中,上述实施例步骤s25具体可以包括子步骤s351~s358:
步骤s351:第一通信客户端随机生成第一挑战码。
本实施例中,第一挑战码记为ca。其中,第一挑战码可以是数字、字符、字符串中的一种或几种组合。
步骤s352:利用预设算法对第一挑战码和通信密钥进行运算,以得到第一应答码。
可选地,预设算法可以是hmac算法、gmac算法、cmac算法、aes-cbc-mac算法等。
在一应用场景中,第一通信客户端利用hmac算法对ca和ksc进行运算,以得到第一应答码ra,即ra=hmac(ksc,ca)。
步骤s353:将第一应答码、第一挑战码和第一设备的标识信息发送至第二通信客户端,以使得第二通信客户端利用预设算法对第一挑战码和与第一设备的标识信息对应的通信密钥进行运算,以得到第二应答码。
本实施例中,第一设备的标识信息记为a_id,第二设备的标识信息记为b_id。
本实施例中,第一设备的标识信息对应的通信密钥记为ksc′。可选地,第二通信客户端可以根据a_id获取与之关联存储的ksc′。
具体地,第一通信客户端将ra、ca和a_id发送至第二通信客户端,以使得第二通信客户端利用预设算法对ca和ksc′进行运算,以得到第二应答码ra′,即ra′=hmac(ksc′,ca)。
步骤s354:若第一应答码与第二应答码相同,则接收第二通信客户端发送的第二挑战码、第二设备的标识信息和第三应答码,其中,第三应答码为第二通信客户端利用预设算法对第一设备的标识信息对应的通信密钥、第一挑战码和第二挑战码进行运算得到。
其中,第二挑战码可以由第二通信客户端随机生成,记为cb。
可以理解的,第二通信客户端获取的第一设备的标识信息对应的通信密钥ksc′不一定与第一通信客户端计算第一应答码的通信密钥ksc相同。
若ra和ra′相同,则说明ksc′与ksc相同,进一步说明即将进行数据传输的第二通信客户端已经保存了与第一设备对应的通信密钥,则第一通信客户端与第二通信客户端互为安全的通信客户端。相反,若ra和ra′不相同,则说明ksc′与ksc不相同,则说明即将进行数据传输的第二通信客户端未保存与第一设备对应的通信密钥,此时,第一通信客户端为不安全的通信客户端,从而第一通信客户端关联的第一应用客户端身份认证失败。
具体地,第二通信客户端可以判断第一应答码与第二应答码是否相同,若第一应答码与第二应答码相同,则继续进行身份认证,利用预设算法对ksc′、ca和cb进行运算,以得到第三应答码,记为rab。
在一具体实施例中,利用预设算法对ksc′、ca和cb进行运算可以是利用hmac算法对ksc′、ca|cb进行运算,即rab=hmac(ksc′,ca|cb)。其中,ca|cb为ca和cb的顺序拼接,ca在前,cb在后,例如,ca为123,cb为456,则ca|cb为123456。在其他实施例中,可以采用cb|ca的顺序拼接,cb在前,ca在后,或是采用cb|ca|cb的顺序拼接,此处不作限制。
步骤s355:利用预设算法对第一挑战码、第二挑战码和第二设备的标识信息对应的通信密钥进行运算,以得到第四应答码。
由于第一通信客户端将通信密钥和第二设备的标识信息进行关联存储,从而第一通信客户端可以根据第二设备的标识信息获取已关联的通信密钥ksc进行运算。
在一具体实施例中,第一通信客户端可以利用hmac算法对ca、cb和ksc进行运算,以得到第四应答码rab′,即rab′=hmac(ksc,ca|cb)。需要注意的是,第一通信客户端与第二通信客户端需要采用相同的预设算法和ca|cb的拼接方式,从而使得变量仅为通信密钥。
步骤s356:判断第三应答码与第四应答码是否相同。
若第三应答码与第四应答码相同,则执行步骤s357,否则,则执行步骤s358。
步骤s357:确定第一应用客户端身份认证成功。
步骤s358:确定第一应用客户端身份认证失败。
在一些实施例中,步骤s375还可以包括:利用预设算法对第二挑战码和第二设备的标识信息对应的通信密钥进行运算,以得到第五应答码;将第五应答码发送至第二通信客户端,以使第二通信客户端判断第五应答码与第六应答码是否相同,若相同,则确定第一应用客户端身份认证成功,其中,第六应答码为第二通信客户端利用预设算法对第一设备的标识信息对应的通信密钥和第二挑战码进行运算得到。通过上述方式,能够防止重放攻击,即便其他设备获得第一挑战码、第一应答码和第一设备的标识信息也无法伪造成第一设备与第二设备进行数据传输。
具体地,如图4所示,第一通信客户端在确认第三应答码与第四应答码相同之后,继续利用hmac算法对ksc和cb进行运算,以得到第五应答码rb,即rb=hmac(ksc,cb),然后将rb发送至第二通信客户端,以使得第二通信客户端利用hmac算法对ksc′和cb进行运算,以得到第六应答码rb′,即rb′=hmac(ksc′,cb),第二通信客户端判断rb与rb′是否相同,若相同,则确定第一应用客户端身份认证成功;否则,则确定第一应用客户端身份认证失败。
上述方案,利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证的整个实现流程简单,且利用的hmac算法等预设算法都是业界通用的算法,计算简单,其次,通过将第五应答码发送至第二通信客户端,以使第二通信客户端判断第五应答码与第六应答码是否相同,若相同,则确定第一应用客户端身份认证成功,能够防止重放攻击,提升了身份认证的可靠性。
请参阅图6,图6是本申请提供的数据传输方法中步骤s26的一实施例的流程示意图,以及请继续参阅图4中数据加密部分。
上述实施例中步骤s26,即利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证,具体可以包括子步骤s461~s463:
步骤s461:采用预设算法对第二设备的标识信息对应的通信密钥、第一挑战码和第二挑战码进行运算,以得到加密参数。
在一具体实施例中,预设算法可以是hmac算法,第一通信客户端利用hmac算法对ksc、ca和cb进行运算,即aes-gcm-params=hmac(ksc,ca|cb),然后将aes-gcm-params分割为加密参数,加密参数例如为密钥k、向量iv、消息认证aad。
步骤s462:利用加密参数对第一应用客户端的数据进行加密。
第一通信客户端利用密钥k、向量iv、消息认证aad对第一应用客户端的数据进行加密。其中,加密前的第一应用客户端的数据记为明文pt,加密后的第一应用客户端的数据记为密文ct,则步骤s462可以记为ct=aes-gcm-encrypt(k,iv,aad,pt)。
可选地,aes算法可以包括gcm、cbc、ecb、ctr、ocb、cfb等多种模式。
步骤s463:将加密的第一应用客户端的数据传输至第二通信客户端,以使第二通信客户端将加密的第一应用客户端的数据进行解密后传输至第二应用客户端。
第一通信客户端将密文ct发送至第二通信客户端,以使第二通信客户端将密文ct进行解密,以将解密后的明文pt传输至第二应用客户端。
第二通信客户端可以采用第一通信客户端的方法计算出解密参数,解密参数例如为密钥k、向量iv、消息认证aad。具体地,第二通信客户端利用hmac算法对ksc′、ca和cb进行运算,即aes-gcm-params=hmac(ksc′,ca|cb),然后将aes-gcm-params分割为加密参数,加密参数例如为密钥k、向量iv、消息认证aad。
在一具体实施例中,第二通信客户端利用hmac算法对ksc、ca和cb进行运算,即aes-gcm-params=hmac(ksc,ca|cb),然后将aes-gcm-params分割为解密参数,解密参数例如为密钥k、向量iv、消息认证aad。然后,第二通信客户端根据解密参数对ct进行解密,以得到pt,记为pt=aes-gcm-decrypt(k,iv,add,ct)。
上述方案,第一通信客户端通过身份认证过程中获得的第二设备的标识信息对应的通信密钥、第一挑战码和第二挑战码生成加密参数,进一步通过加密参数对第一应用客户端的数据进行加密后传输至第二通信客户端,再由第二通信客户端根据第一设备的标识信息对应的通信密钥、第一挑战码和第二挑战码生成解密参数,以对传输的数据进行解密,然后发送至第二应用客户端,其中,本实施例中的加密参数是动态变化的,第一设备与第二设备每进行一次配对连接会刷新一次加密参数,可以实现一次一密,从而可以提升数据传输的安全性;其次,采用了aes算法,计算简单。
请参阅图7,图7是本申请提供的数据传输方法又一实施例的流程示意图。
本实施例中,数据传输方法应用于第一设备向第二设备传输数据,第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端,对于该部分的阐述请参见上述实施例中的对应位置,此处不再赘述。
本实施例中,数据传输方法的执行主体为第二通信客户端,数据传输方法可以包括以下步骤:
步骤s51:第二通信客户端获取用于与第一通信客户端进行身份认证的通信密钥。
其中,通信密钥用于第一通信客户端与第二通信客户端进行身份认证。在数据传输过程中,第一通信客户端为数据传输的发起方,第二通信客户端为数据传输的接收方。
可选地,通信密钥可以存储于电子设备本地或远端服务器中。
步骤s52:利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证。
其中,若第一通信客户端与第二通信客户端身份认证成功,则第一通信客户端关联的第一应用客户端也即是身份认证成功。
步骤s53:若第一应用客户端身份认证成功,则基于通信密钥,接收第一通信客户端发送的第一应用客户端的传输数据,并将第一应用客户端的数据传输至第二应用客户端。
在第一应用客户端身份认证成功之后,第一通信客户端可以将第一应用客户端的数据传输至第二通信客户端,再由第二通信客户端基于通信密钥,将数据传输至第二应用客户端,从而可以实现第一设备上的第一应用客户端与第二设备上的第二应用客户端之间的数据传输,且应用层间进行数据传输之前须通过身份认证,提高了数据传输的安全性。
上述方案,通过第二通信客户端获取用于与第一通信客户端进行身份认证的通信密钥,然后利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证,在第一应用客户端身份认证成功之后,基于通信密钥,接收第一通信客户端发送的第一应用客户端的传输数据,并将第一应用客户端的数据传输至第二应用客户端,实现了第一设备上的第一应用客户端与第二设备上的第二应用客户端之间的数据传输,且应用层间进行数据传输之前须通过身份认证,提高了数据传输的安全性。
在一些实施例中,通信密钥是由第一设备和第二设备动态协商生成的。
在一些实施例中,第一设备和第二设备动态协商通信密钥的过程可以包括:第一设备与第二设备进行通信配对;若第一设备与第二设备通信配对成功,则第一设备与第二设备采用预设密钥协商算法进行协商,以得到通信密钥;将通信密钥进行存储。
在一些实施例中,将通信密钥进行存储,包括:获取第一设备的标识信息;将第一设备的标识信息与通信密钥进行关联储存。
在一些实施例中,步骤s51中第二通信客户端获取用于与第一通信客户端进行身份认证的通信密钥可以是:第二通信客户端获取第一设备的标识信息;根据第一设备的标识信息,获取用于与第一通信客户端进行身份认证的通信密钥。
可以理解的,对于上述步骤的阐述可参见上述实施例中的相应位置,此处不再赘述。
上述方案,第一设备与第二设备每进行一次近场通信配对就会协商出一个新的通信密钥,从而即便之前的通信密钥发生泄露,泄露的通信密钥也无法长期使用,以此可以避免每次通信都使用相同的密钥,提高了加密安全效果,从而提高数据传输的安全性;其次,通过将通信密钥与设备的标识信息进行关联存储可以根据设备的标识信息快速、准确地获取与设备关联的通信密钥;再次,第三通信客户端通过登录与第一通信客户端或第二通信客户端相同的账户信息,可以通过账户快速、安全地获取通信密钥。
请参阅图8,图8是本申请提供的数据传输方法中步骤s52一实施例的流程示意图,以及请继续参阅图4中身份认证部分。
在一些实施例中,步骤s52可以包括子步骤s621~s626:
步骤s621:第二通信客户端接收第一通信客户端发送的第一挑战码、第一应答码和第一设备的标识信息。
步骤s622:利用预设算法对第一挑战码和与第一设备的标识信息对应的通信密钥进行运算,以得到第二应答码。
步骤s623:判断第一应答码与第二应答码是否相同。
若第一应答码与第二应答码相同,则执行步骤s624,否则,确定第一应用客户端身份认证失败。
步骤s624:随机生成第二挑战码,并利用预设算法对第一挑战码、第二挑战码和第一设备的标识信息对应的通信密钥进行运算,以得到第三应答码。
步骤s625:将第三应答码、第二挑战码和第二通信客户端的标识信息发送至第一通信客户端,以使第一通信客户端判断第三应答码与第四应答码是否相同,其中第四应答码为第一通信客户端利用预设算法对第一挑战码、第二挑战码和第二通信客户端的标识信息对应的通信密钥进行运算得到。
步骤s626:若第三应答码与第四应答码相同,则确定第一应用客户端身份认证成功。
在一些实施例中,步骤s626还可以包括:若第三应答码与第四应答码相同,则接收第一通信客户端发送的第五应答码,其中,第五应答码为第一通信客户端利用预设算法对第二挑战码和第二设备的标识信息对应的通信密钥进行运算得到;利用预设算法对第一设备的标识信息对应的通信密钥和第二挑战码进行运算,以得到第六应答码;判断第五应答码与第六应答码是否相同;若第五应答码与第六应答码相同,则确定第一应用客户端身份认证成功。
对于本实施例各步骤的阐述请参见上述实施例中的相应位置,此处不再赘述。
上述方案,利用通信密钥,对第一通信客户端关联的第一应用客户端进行身份认证的整个实现流程简单,且利用的hmac算法等预设算法都是业界通用的算法,计算简单,其次,通过将第五应答码发送至第二通信客户端,以使第二通信客户端判断第五应答码与第六应答码是否相同,若相同,则确定第一应用客户端身份认证成功,能够防止重放攻击,提升了身份认证的可靠性。
请参阅图9,图9是本申请提供的数据传输方法中步骤s53一实施例的流程示意图,以及请继续参阅图4中数据加密部分。
在一些实施例中,步骤s53可以包括子步骤s731~s726:
步骤s731:采用预设算法对第一设备的标识信息对应的通信密钥、第一挑战码和第二挑战码进行运算,以得到解密参数。
步骤s732:利用解密参数对第一应用客户端的数据进行解密。
步骤s733:将解密后的第一应用客户端的传输数据传输至第二应用客户端。
对于本实施例各步骤的阐述请参见上述实施例中的相应位置,此处不再赘述。
上述方案,通过身份认证过程中获得的第二设备的标识信息对应的通信密钥、第一挑战码和第二挑战码生成加密参数,进一步通过加密参数对第一应用客户端的数据进行加密后传输至第二通信客户端,再由第二通信客户端根据第一设备的标识信息对应的通信密钥、第一挑战码和第二挑战码生成解密参数,以对传输的数据进行解密,然后发送至第二应用客户端,其中,本实施例中的加密参数是动态变化的,第一设备与第二设备每进行一次配对连接会刷新一次加密参数,可以实现一次一密,从而可以提升数据传输的安全性;其次,采用了aes算法,计算简单。
请参阅图10,图10是本申请提供的电子设备一实施例的框架示意图。
电子设备100包括:处理器110以及与处理器110连接的存储器120,存储器120用于存储程序数据,处理器110用于执行程序数据以实现上述任一方法实施例中的步骤。
电子设备100包括但不限于为电视机、桌面型计算机、膝上型计算机、手持计算机、可穿戴设备、头戴式显示器、阅读器设备、便携式音乐播放器、便携式游戏机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,简称:umpc)、上网本,以及蝉窝电话、个人数字助理(personaldigitalassistant,简称:pda)、增强现实(augmentedreality,简称:ar)、虚拟现实(virtualreality,简称:vr)设备。
具体而言,处理器110用于控制其自身以及存储器120以实现上述任一方法实施例中的步骤。处理器110还可以称为cpu(centralprocessingunit,中央处理单元)。处理器110可能是一种集成电路芯片,具有信号的处理能力。处理器110还可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器110可以由多个集成电路芯片共同实现。
请参阅图11,图11是本申请提供的计算机存储介质一实施例的框架示意图。
计算机可读存储介质200存储有程序数据210,程序数据210被处理器执行时,用以实现上述任一方法实施例中的步骤。
计算机可读存储介质200具体可以为u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等可以存储计算机程序的介质,或者也可以为存储有该计算机程序的服务器,该服务器可将存储的计算机程序发送给其他设备运行,或者也可以自运行该存储的计算机程序。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
1.一种数据传输方法,其特征在于,所述方法应用于第一设备向第二设备传输数据,所述第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端,所述方法包括:
所述第一通信客户端获取用于与所述第二通信客户端进行身份认证的通信密钥;
利用所述通信密钥,对所述第一通信客户端关联的所述第一应用客户端进行身份认证;
若所述第一应用客户端身份认证成功,则基于所述通信密钥,将所述第一应用客户端的数据传输至第二通信客户端,以使所述第二通信客户端将所述数据传输至所述第二应用客户端。
2.根据权利要求1中所述的方法,其特征在于,
所述通信密钥是由所述第一设备和所述第二设备动态协商生成的。
3.根据权利要求2中所述的方法,其特征在于,
所述方法还包括:
所述第一设备与所述第二设备进行近场通信配对;
若所述第一设备与所述第二设备近场通信配对成功,则所述第一设备与所述第二设备采用预设密钥协商算法进行协商,以得到所述通信密钥;
将所述通信密钥进行存储。
4.根据权利要求3中所述的方法,其特征在于,
所述将所述通信密钥进行存储,包括:
获取所述第二设备的标识信息;
将所述第二设备的标识信息与所述通信密钥进行关联储存。
5.根据权利要求2中所述的方法,其特征在于,
所述方法还包括:
所述第一通信客户端或所述第二通信客户端,与第三设备中安装的第三通信客户端建立通信连接,其中,所述第一通信客户端、第二通信客户端和所述第三通信客户端上登录的账户信息相同;
所述第一通信客户端或所述第二通信客户端将所述通信密钥发送至所述第三通信客户端。
6.根据权利要求1中所述的方法,其特征在于,
所述第一通信客户端获取用于与所述第二通信客户端进行身份认证的通信密钥,包括:
所述第一通信客户端获取所述第二设备的标识信息;
根据所述第二设备的标识信息,获取用于与所述第二通信客户端进行身份认证的通信密钥。
7.根据权利要求1中所述的方法,其特征在于,
所述利用所述通信密钥,对所述第一通信客户端关联的所述第一应用客户端进行身份认证,包括:
所述第一通信客户端随机生成第一挑战码;
利用预设算法对所述第一挑战码和所述通信密钥进行运算,以得到第一应答码;
将所述第一应答码、所述第一挑战码和所述第一设备的标识信息发送至所述第二通信客户端,以使得第二通信客户端利用预设算法对所述第一挑战码和与所述第一设备的标识信息对应的通信密钥进行运算,以得到第二应答码;
若所述第一应答码与所述第二应答码相同,则接收所述第二通信客户端发送的所述第二挑战码、所述第二设备的标识信息和第三应答码,其中,所述第三应答码为所述第二通信客户端利用预设算法对所述第一设备的标识信息对应的通信密钥、所述第一挑战码和所述第二挑战码进行运算得到;
利用预设算法对所述第一挑战码、所述第二挑战码和所述第二设备的标识信息对应的通信密钥进行运算,以得到第四应答码;
判断所述第三应答码与所述第四应答码是否相同;
若所述第三应答码与所述第四应答码相同,则确定所述第一应用客户端身份认证成功。
8.根据权利要求7中所述的方法,其特征在于,
所述若所述第三应答码与所述第四应答码相同,则确定所述第一应用客户端身份认证成功,包括:
若所述第三应答码与所述第四应答码相同,则利用预设算法对所述第二挑战码和所述第二设备的标识信息对应的通信密钥进行运算,以得到第五应答码;
将所述第五应答码发送至所述第二通信客户端,以使所述第二通信客户端判断所述第五应答码与第六应答码是否相同,若相同,则确定所述第一应用客户端身份认证成功,其中,所述第六应答码为所述第二通信客户端利用预设算法对所述第一设备的标识信息对应的通信密钥和所述第二挑战码进行运算得到。
9.根据权利要求7或8中所述的方法,其特征在于,
所述根据所述通信密钥,将所述第一应用客户端的所述数据传输至所述第二通信客户端,包括:
采用预设算法对所述第二设备的标识信息对应的通信密钥、所述第一挑战码和所述第二挑战码进行运算,以得到加密参数;
利用所述加密参数对所述第一应用客户端的所述数据进行加密;
将加密的所述第一应用客户端的所述数据传输至所述第二通信客户端,以使所述第二通信客户端将加密的所述第一应用客户端的所述数据进行解密后传输至所述第二应用客户端。
10.一种数据传输方法,其特征在于,所述方法应用于第一设备向第二设备传输数据,所述第一设备中安装有第一通信客户端和第一应用客户端,第二设备中安装有第二通信客户端和第二应用客户端,所述方法包括:
所述第二通信客户端获取用于与所述第一通信客户端进行身份认证的通信密钥;
利用所述通信密钥,对所述第一通信客户端关联的所述第一应用客户端进行身份认证;
若所述第一应用客户端身份认证成功,则基于所述通信密钥,接收所述第一通信客户端发送的所述第一应用客户端的传输数据,并将所述第一应用客户端的所述数据传输至所述第二应用客户端。
11.根据权利要求10中所述的方法,其特征在于,
所述通信密钥是由所述第一设备和所述第二设备动态协商生成的。
12.根据权利要求11中所述的方法,其特征在于,
所述方法还包括:
所述第一设备与所述第二设备进行通信配对;
若所述第一设备与所述第二设备通信配对成功,则所述第一设备与所述第二设备采用预设密钥协商算法进行协商,以得到所述通信密钥;
将所述通信密钥进行存储。
13.根据权利要求12中所述的方法,其特征在于,
所述将所述通信密钥进行存储,包括:
获取所述第一设备的标识信息;
将所述第一设备的标识信息与所述通信密钥进行关联储存。
14.根据权利要求10中所述的方法,其特征在于,
所述第二通信客户端获取用于与所述第一通信客户端进行身份认证的通信密钥,包括:
所述第二通信客户端获取所述第一设备的标识信息;
根据所述第一设备的标识信息,获取用于与所述第一通信客户端进行身份认证的通信密钥。
15.根据权利要求10中所述的方法,其特征在于,
所述利用所述通信密钥,对所述第一通信客户端关联的所述第一应用客户端进行身份认证,包括:
所述第二通信客户端接收所述第一通信客户端发送的第一挑战码、第一应答码和所述第一设备的标识信息;
利用预设算法对所述第一挑战码和与所述第一设备的标识信息对应的通信密钥进行运算,以得到第二应答码;
判断所述第一应答码与所述第二应答码是否相同;
若所述第一应答码与所述第二应答码相同,则随机生成第二挑战码,并利用预设算法对所述第一挑战码、所述第二挑战码和所述第一设备的标识信息对应的通信密钥进行运算,以得到第三应答码;
将所述第三应答码、第二挑战码和所述第二通信客户端的标识信息发送至所述第一通信客户端,以使所述第一通信客户端判断所述第三应答码与第四应答码是否相同,其中所述第四应答码为所述第一通信客户端利用预设算法对所述第一挑战码、所述第二挑战码和所述第二通信客户端的标识信息对应的通信密钥进行运算得到;
若所述第三应答码与所述第四应答码相同,则确定所述第一应用客户端身份认证成功。
16.根据权利要求15中所述的方法,其特征在于,
所述若所述第三应答码与所述第四应答码相同,则确定所述第一应用客户端身份认证成功,包括:
若所述第三应答码与所述第四应答码相同,则接收所述第一通信客户端发送的第五应答码,其中,所述第五应答码为所述第一通信客户端利用预设算法对所述第二挑战码和所述第二设备的标识信息对应的通信密钥进行运算得到;
利用预设算法对所述第一设备的标识信息对应的通信密钥和所述第二挑战码进行运算,以得到第六应答码;
判断所述第五应答码与所述第六应答码是否相同;
若所述第五应答码与所述第六应答码相同,则确定所述第一应用客户端身份认证成功。
17.根据权利要求中15或16所述的方法,其特征在于,
所述根据所述通信密钥,将所述第一应用客户端的所述数据传输至所述第二通信客户端,包括:
采用预设算法对所述第一设备的标识信息对应的通信密钥、所述第一挑战码和所述第二挑战码进行运算,以得到解密参数;
利用所述解密参数对所述第一应用客户端的所述数据进行解密;
将解密后的所述第一应用客户端的传输数据传输至所述第二应用客户端。
18.一种电子设备,其特征在于,所述电子设备包括处理器以及与所述处理器连接的存储器,
所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如权利要求1-17任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序数据,所述程序数据在被处理器执行时,用以实现如权利要求1-17任一项所述的方法。
技术总结