用于物联网终端与云端通讯的加密方法
【技术领域】
[0001]本发明涉及一种通讯处理方法,尤其涉及一种用于物联网终端与云端通讯的加密方法,具有双向认证的轻量级物联网安全解决方案。
【背景技术】
[0002]当前物联网的发展已经逐步步入快车道,物联网产品的特性包括:随时在线、远程控制。导致物联网产品必须能够通过因特网连接云端,随时随地的上传、接收数据及相关控制请求,而任何连接到因特网的设备都必须考虑到黑客攻击的可能性,因而产生了加密需求,要满足加密需求存在两条解决道路:
简易账号密码加密:可以在资源有限的MCU上实现,但无法完成服务器终端之间的双向认证,也无法解决黑客重放攻击问题。
[0003]SSL协议加密。可以实现双向认证和解决黑客重放攻击问题。但常用的open SSL协议需要上M级别的Flash和RAM空间,即便是裁剪版的SSL协议也要上百K的Flash和数十K的RAM。
[0004]而在实际应用环境中,大部分物联网终端设备都要满足低功耗和低成本的两低要求,使得大部分的物联网终端只能被迫选择简易账号密码加密方式。从而存在如下问题:
I)只有云端的单向认证,没有终端和云端的双向认证,一旦黑客盗取云端数据,可模拟服务器数据反向攻击控制物联网终端设备。
[0005]2)物联网产品长期在线需要终端随时与云端保持数据沟通,黑客可以直接抓取终端和云端的沟通数据,对物联网终端和云端任意一端进行重放攻击,进而瘫痪物联网终端或者云端。
[0006]图1为现有认证过程示意图,图2为现有数据通讯过程示意图。请参见图1和图2,物联网终端出厂时或者用户第一次使用时在云端注册一个账号和密码,在物联网终端与云端沟通的过程中,主要分为两个过程:
I)首先是连接请求认证过程:由物联网终端发送对应的账号和密码给云端进行连接认证请求,云端根据所收到的账号和密码在其数据库中进行比对,比对结果符合要求的情况下,由云端产生AES秘钥再回传给物联网终端,云端将该AES加密秘钥存入对应账号数据库,物联网终端收到秘钥后使用该秘钥加密ACK信号,并将加密ACK信息与用户名等信息一同回传给云端,云端接到信号后,依据用户名找到AES秘钥后,解析ACK信号是否成功,不成功则连接创建失败,成功则该物联网终端连接请求完成,如图1所示。
[0007]2)之后是数据通信过程:物联网终端直接使用连接建立过程中协商的AES加密秘钥,把对应数据进行AES加密连同账号传送至云端,云端收到数据包后依据账号信息找到AES秘钥,使用AES秘钥对数据包进行解密,解密后若要回复数据给物联网终端,则同样使用AES秘钥对数据进行加密后发送,物联网终端在收到数据后使用AES秘钥进行数据解密,完成数据包中要求的下一步动作,如图2所示。
[0008]由上可见,现有轻量级的物联网终端与云端通讯的加密方法客观存在如下问题: 1.只有云端对物联网终端的单向认证机制,一旦黑客窃取到任何有关物联网终端的数据,可以直接在因特网上发起对物联网终端的攻击。
[0009]2.在物联网终端与云端的连接建立后,两者相互之间的通信虽然也有AES加密,黑客无法破解其中通信数据,但是黑客通过抓取通信过程中完整数据包,使用重放攻击方式即可攻击物联网终端或者云端任意一端,从而实现瘫痪该系统的目的。
【发明内容】
[0010]本发明所要解决的技术问题是提供一种用于物联网终端与云端通讯的加密方法,能够实现可靠的双向认证,大大降低对计算和存储资源的消耗,满足轻量级物联网的安全需求。
[0011]本发明为解决上述技术问题而采用的技术方案是提供一种用于物联网终端与云端通讯的加密方法,包括如下步骤:a)在物联网终端和云端同时预存由物联网终端ID、AES秘钥和Auth码三部分组成的固定字节数秘钥;b)每次建立连接时,所述云端随机生成新的AES码,所述物联网终端和云端通过比对新的AES码和预存AES秘钥进行双向认证,认证成功后,物联网终端将AES秘钥更新为新的AES码;c)连接建立成功后双方进行数据通讯,所述物联网终端定时发送Keep Alive包至云端保持连接可用。
[0012]上述的用于物联网终端与云端通讯的加密方法,其中,所述步骤b)中物联网终端和云端的双向认证过程如下:bl)所述物联网终端发送连接认证请求给云端,所述连接认证请求数据包中包括物联网终端ID和Auth码;b2)所述云端接收后判断物联网终端ID和Auth码是否与其数据库中的一致,不一致则认证失败;b3)所述云端随机生成一个新的AES码,并将此AES码存入该物联网终端ID对应的数据库中;b4)所述云端将原始AES码作为挑战秘钥返回给物联网终端,返回数据包中包含物联网终端ID、挑战秘和新的AES码;b5)所述物联网终端接收后判断接收到的挑战秘钥是否与其内部存储的原始AES码相同,不同则双向认证失败;b6)所述物联网终端存储新的AES码,并回复挑战ACK包给云端,回复数据包中包含该物联网终端ID和新的AES码;b7)所述云端接收后比对AES码是否为之前随机为该该物联网终端ID产生的AES码,若不正确,则擦除存入该物联网终端ID的新AES码,双向认证失败。
[0013]上述的用于物联网终端与云端通讯的加密方法,其中,所述步骤c)中连接建立成功后双方数据通讯过程如下:cl)在每次通讯数据包中设置tx_attack_seq和ng_attack_seq ;c2)所述物联网终端取出之前给云端发送的32位tx_attack_seq,按照预定的累加或累减规律进行变化后存储于物联网终端,并对除物联网终端ID外所有数据都使用新AES加密后发送至云端;c3)所述云端判断物联网终端ID是否为数据库内注册号,若不是,则云端丢弃数据,本次数据通讯结束,若是,则找到物联网终端ID对应的新AES进行数据解密;c4)所述云端判断解密后数据包中的tx_attack_seq是否已达到极值,若达到则重新发起双向认证;c5)所述云端继续判断该物联网终端ID本次tx_attack_seq是否按照预定的累加或累减规律变化,若没有,则云端丢弃,此次数据通讯结束,若按照规律变化则将本次最新tx_attack_seq数值写入对应物联网终端ID数据库;c6)所述云端将数据库中ng_attack_seq按照预定累加或累减规律变化存储并将ng_attack_Seq使用新AES加密后放入回复ACK包发送给物联网终端;c7)所述物联网接收数据包并使用新的AES秘钥解密,判断解密后本次ng_attack_seq是否已达到极值,是则重新发起双向认证连接;若不是则物联网终端判断该物联网终端ID本次ng_attack_Seq是否按照预定的累加或累减规律变化,若没有,则物联网终端丢弃,本次数据通讯结束,若按照规律变化则物联网终端执行数据包要求对应动作,存储最新的ng_attack_seq,完成本次数据通讯过程。
[0014]上述的用于物联网终端与云端通讯的加密方法,其中,所述tx_attack_seq和ng_attack_seq为两个32位整型数值。
[0015]本发明对比现有技术有如下的有益效果:本发明提供的用于物联网终端与云端通讯的加密方法,通过在物联网终端和云端预置秘钥数据实现可靠的双向认证,大大降低对计算和存储资源的消耗,满足轻量级物联网的安全需求。此外,本发明利用整型数据按规律累加或累减来识别通信数据的唯一性和到达数据边界时重新注册认证解决了重放攻击问题。
[0016]
【附图说明】
[0017]图1为现有认证过程示意图;
图2为现有数据通讯过程示意图;
图3为本发明用于物联网终端与云端通讯的系统架构示意图;
图4为本发明用于物联网终端与云端的加密通讯流程示意图;
图5为本发明物联网终端和云端之间的双向认证流程;
图6为本发明物联网终端和云端之间的数据通讯流程图。
[0018]
【具体实施方式】
[0019]下面结合附图和实施例对本发明作进一步的描述。
[0020]图3为本发明用于物联网终端与云端通讯的系统架构示意图;图4为本发明用于物联网终端与云端的加密通讯流程示意图。
[0021]请参见图3和图4,本发明提供的用于物联网终端与云端通讯系统组成部分主要包括三部分,云端、路由器网关设备和物联网终端,其中路由器网关设备在通讯中一般是透传的透明设备。该解决方案的关键在于两个部分,一个部分为同时存储于物联网终端和云端的固定字节数秘钥部分,该秘钥由若干字节的物联网终端ID、AES秘钥和若干字节的Auth码组成;另一部分为连接认证成功后,在两端之间每次通讯数据包中的两个