本发明涉及通信加密领域,尤其涉及一种消息可信性验证方法及装置。
背景技术:
消息可信性验证作为验证消息来源可靠性的主要技术手段,现有技术中,消息可信性验证包括:对消息完整性的验证和对发送方的认证,一般通过消息验证码来实现。现有技术方案中,发送方将消息和消息验证码进行连接后发生给接收方,消息验证码字段是在协议中约定的,为固定的字段。其典型验证流程如下(可参照图1):
1、发送端使用摘要算法哈希(Hash)算法(如MD5、SHA-1)对消息Message计算消息摘要Digest,再使用共享密钥Key对摘要进行加密得到加密的摘要值,这个加密的摘要值就是消息验证码MAC。
2、发送端将消息Message与消息验证码MAC连接为消息报文发送给接收端。
3、接收端接收到消息报文后拆分出消息Message和消息验证码MAC’。
4、接收端采用同样的摘要算法对消息计算摘要Digest’,使用共享密钥Key对消息进行加密并比较消息验证码MAC’;或者,对消息验证码MAC进行解密并比较解密后的摘要Digest’。
5、消息验证码MAC与MAC’或解密后的摘要Digest’与Digest相同,则消息验证成功,否则验证失败,说明消息内容被篡改,或说明消息来自冒充的发送端。
由于消息验证码字段在协议中固定,即使非敏感数据,也需要进行计算、生成、发送、接收和处理消息验证码的过程,增大了设备计算量。在低功耗环境下的某些设备,如物联网的传感器设备,对设备的功耗有较高的要求,需要尽可能降低计算需求,以保证设备在有限的电池供电情况下持久运行。现有的 消息验证码机制,包含大量的加解密运算,导致消息处理延迟,且电池维护更新的需求很高,因此,上述消息可信性验证方法不利于在低功耗环境的使用。
一种改进的流程,将消息分为两类:需要可信性验证的消息和不需要可信性验证的。在通信协议中约定哪几种类型的消息需要进行可信性验证,通信时仅需对这些类型的消息执行上面的可信性验证流程,其他消息则不需要执行可信性验证。改进后根据消息类型对部分消息执行验证的方法,能够在一定程度上减轻设备的计算需求,降低功耗,但是由于不同的应用环境、不同的终端对可信性验证的需求不同,为了达到良好的兼容性,协议需要对尽可能多类型的消息指定可信性验证。因此仍然不能有效降低功耗,且在少数情况下,由于特定的消息类型在协议中未要求可信性验证,而无法使用。
综上,现有的消息可信性验证方法对全部消息或指定的消息执行可信性验证,或计算需求大、功耗高,或缺乏对特定消息的可信性验证,而无法完全适用于低功耗环境。
技术实现要素:
本发明提供了一种消息可信性验证方法及装置,解决了现有的消息可信性验证方法或计算需求大、功耗高,或无法兼容所有低功耗环境、兼容性差的问题。
依据本发明的一个方面,提供了一种消息可信性验证方法,包括:
根据从发送方接收到的待识别消息的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性;
当待识别消息需要验证其可信性时,对待识别消息进行可信性验证。
其中,该消息可信性验证方法还包括:
当待识别消息不需要验证可信性时,响应待识别消息并反馈至发送方。
其中,确定待识别消息是否需要验证其可信性的步骤包括:
解析待识别消息中的消息字段,得到待识别消息的消息类型和/或消息内容;
匹配消息类型和/或消息内容与预先存储的需要验证可信性的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性。
其中,对待识别消息进行可信性验证的步骤包括:
向发送方发送一验证请求;
接收发送方接收到验证请求后生成的第一消息验证码,其中,第一消息验证码是发送方利用预先设置的第一密钥对第一摘要信息加密时生成的,第一摘要信息是发送方采用摘要算法对待识别消息处理后生成的;
比对第一消息验证码与第二消息验证码,其中,第二消息验证码是利用预先设置的第二密钥对第二摘要信息加密时生成的,所述第二摘要信息是采用摘要算法对待识别消息处理后生成的;
若第一消息验证码与第二消息验证码一致,则验证成功;否则验证失败。
其中,对待识别消息进行可信性验证的步骤包括:
向发送方发送一验证请求;
接收发送方接收到验证请求后生成的第三消息验证码,其中,第三消息验证码是发送方利用预先设置的第一密钥对第三摘要信息加密时生成的,第三摘要信息是发送方采用摘要算法对待识别消息处理后生成的;
利用预先设置的第二密钥对第三消息验证码进行解密,得到第四摘要信息;
比对第四摘要信息与对待识别消息进行摘要算法处理时生成的第五摘要信息;
若第四摘要信息与第五摘要信息一致,则验证成功;否则,验证失败。
依据本发明的再一个方面,还提供了一种消息可信性验证装置,包括:
处理模块,用于根据从发送方接收到的待识别消息的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性;
验证模块,用于当待识别消息需要验证其可信性时,对待识别消息进行可信性验证。
其中,该消息可信性验证装置还包括:
响应模块,用于当待识别消息不需要验证可信性时,响应待识别消息并反馈至发送方。
其中,处理模块包括:
解析单元,用于解析待识别消息中的消息类型和/或消息内容;
处理单元,用于匹配消息类型和/或消息内容与预先存储的需要验证可信 性的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性。
其中,验证模块包括:
第一发送单元,用于向发送方发送一验证请求;
第一接收单元,用于接收发送方接收到验证请求后生成的第一消息验证码,其中,第一消息验证码是发送方利用预先设置的第一密钥对第一摘要信息加密时生成的,第一摘要信息是发送方采用摘要算法对待识别消息处理后生成的;
第一比对单元,用于比对第一消息验证码与第二消息验证码,其中,第二消息验证码是利用预先设置的第二密钥对第二摘要信息加密时生成的,第二摘要信息是采用摘要算法对待识别消息处理后生成的;
第一验证单元,用于当第一消息验证码与第二消息验证码一致时,验证成功;否则验证失败。
其中,验证模块还包括:
第二发送单元,用于向发送方发送一验证请求;
第二接收单元,用于接收发送方接收到验证请求后生成的第三消息验证码,其中,第三消息验证码是发送方利用预先设置的第一密钥对第三摘要信息加密时生成的,第三摘要信息是所述发送方采用摘要算法对待识别消息处理后生成的;
解密单元,用于利用预先设置的第二密钥对第三消息验证码进行解密,得到第四摘要信息;
第二比对单元,用于比对第四摘要信息与对待识别消息进行摘要算法处理时生成的第五摘要信息;
第二验证单元,用于当第四摘要信息与第五摘要信息一致时,验证成功;否则,验证失败。
本发明的实施例的有益效果是:
本发明的消息可信性验证的需求来自接收方,并由接收方启动可信性验证过程,有效降低接收方消息加解密计算量的同时,也降低了发送方消息加解密的计算量,能够有效地降低发送方和接收方的加解密计算量,降低了设备功耗,延长了设备维护更新周期;同时又有具备足够的灵活性,能够满足各种应用环境对消息可信性验证的不同需求。
附图说明
图1表示现有技术中的消息可信性的验证流程图;
图2表示本发明实施例一的消息可信性验证方法的流程图;
图3表示本发明实施例二的消息可信性验证方法的流程图;
图4表示本发明的消息可信性的验证流程图一;
图5表示本发明的消息可信性的验证流程图二;
图6表示本发明实施例的消息可信性验证装置的模块示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
实施例一
如图2所示,本发明的实施例提供了一种消息可信性验证方法,具体包括以下步骤:
步骤S201:根据从发送方接收到的待识别消息的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性。
其中,该待识别消息中携带有能够确定其是否需要验证可行性的标识信息。待识别消息中携带有表明该待识别消息的消息类型字段,由于在通信协议中约定有哪些类型的消息需要进行可信性验证,那么接收方根据接收到的待识别消息的消息类型和/或消息内容或其他参数因素,即可确定是否需要对其可信性进行验证。由接收方根据接收到的待识别消息确定是否需要对其可信性进行验证。其中这里所说的待识别消息指的是发送方发送给接收方的任何类型的数据消息。
步骤S202:当待识别消息需要验证其可信性时,对待识别消息进行可信性验证。
当待识别消息需要验证其可信性时,由接收方发起可信性验证过程,而无 需使对每条消息都进行加解密计算,有效降低接收方消息加解密计算量的同时,也降低了发送方消息加解密的计算量,能够有效地降低发送方和接收方的加解密计算量,降低了设备功耗,延长了设备维护更新周期;同时又有具备足够的灵活性,能够满足各种应用环境对消息可信性验证的不同需求。
步骤S203:当待识别消息不需要验证可信性时,响应待识别消息并反馈至发送方。
实施例二
以上实施例一简单介绍了本发明的消息可信性验证方法,下面将结合具体应用场景对其进行进一步的介绍。
具体地,以物联网环境为例,中心服务器具有较强的计算能力,传感器设备为低功耗设备,需要控制计算量,传感器设备为决定是否对消息进行验证的接收方,中心服务器为发送方。设备部署前,为传感器设备分配ID和加密密钥Key1,同时生成用于中心服务器方的加密密钥Key2,在传感器设备上存储ID和Key1,在中心服务器端存储ID和Key2。如果采用对称加密算法,则Key1和Key2相同,如果采用非对称加密算法,则Key1和Key2为一对公私钥。
如图3所示,消息可信性验证方法具体包括以下步骤:
步骤S301:接收发送方发送的待识别消息。
这里,传感器设备接收中心服务器直接发送的待识别消息Message,其中,该Message为未加密消息,即中心服务器无需对待发送的消息进行加密计算,降低其计算量,从而降低其功耗。
步骤S302:根据待识别消息的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性。
其中,具体包括:解析待识别消息中的消息字段,得到待识别消息的消息类型和/或消息内容。根据消息类型和/或消息内容与预先存储的需要验证可信性的消息类型和/或消息内容相匹配,确定待识别消息是否需要验证其可信性。
待识别消息Message中携带有表明该Message的消息类型的字段,由于在通信协议中约定有哪些类型的消息需要进行可信性验证,那么传感器设备解析接收到的Message的消息类型和/或消息内容或其他参数因素,再匹配消息类 型和/或消息内容与预先存储的需要验证可信性的消息类型和/或消息内容,即可确定是否需要对其可信性进行验证。
步骤S303:当待识别消息不需要验证可信性时,响应待识别消息并反馈至发送方。
当传感器设备接收到的Message不属于需要验证可信性的消息类型时,直接响应该消息,并反馈“消息收到”的响应消息至中心服务器,这样中心服务器和传感器设备均无需对该Message进行加解密计算,降低了双方设备的计算量,从而降低了双方的功耗,延长了设备维护更新周期。
步骤S304:当待识别消息需要验证其可信性时,向发送方发送一验证请求。
当Message需要验证其可信性时,传感器设备向中心服务器发送一“需要可信性验证”的验证请求,即发送一需要验证的Response,以启动可信性验证流程。由接收方传感器设备根据Message的消息类型或消息内容确定是否需要验证可信性,并在需要验证时触发验证流程,具备足够的灵活性,能够满足各种应用环境对消息可信性验证的不同需求。
其中,验证流程中的加密算法包括对称加密算法和非对称加密算法两种,其中,以对称加密算法为例进行说明,即加密密钥Key1和Key2相同,具体步骤如下:
步骤S305:接收发送方接收到验证请求后生成的第一消息验证码。
其中,第一消息验证码是发送方利用预先设置的第一密钥对第一摘要信息加密时生成的,第一摘要信息是发送方采用摘要算法对待识别消息处理后生成的。即,当中心服务器接收到传感器设备的验证请求后,对相应的Message采用摘要算法(如Hash算法)生成对应的摘要信息Digest1,再根据自身存储的密钥Key2对相应的摘要信息Digest1进行加密,生成第一消息验证码MAC1,具体参见图4。中心服务器将生成的第一消息验证码MAC1发送至传感器设备。
步骤S306:比对第一消息验证码与第二消息验证码。
其中,第二消息验证码是利用预先设置的第二密钥对第二摘要信息加密时生成的,所述第二摘要信息是采用摘要算法对待识别消息处理后生成的。即,传感器设备对相应的待识别消息Message进行摘要算法处理,得到相应的摘要 信息Digest2,再利用自身存储的密钥Key1对相应的摘要信息进行加密,生成第二消息验证码MAC2。比对MAC1和MAC2,以进行验证。
步骤S307:若第一消息验证码与第二消息验证码一致,则验证成功;否则验证失败。
即当MAC1与MAC2一致时,则验证成功,即该Message的来源或内容具备可信性;否则,验证失败,即该Message的来源或内容不可信。
以上步骤S305、步骤S306和步骤S307针对对称加密算法中双方对称加密的验证过程做出了详细介绍,下面将进一步介绍对称加密算法中一方加密一方解密的验证过程。具体包括:
步骤S308:接收发送方接收到验证请求后生成的第三消息验证码。
其中,第三消息验证码是发送方利用预先设置的第一密钥对第三摘要信息加密时生成的,第三摘要信息是发送方采用摘要算法对待识别消息处理后生成的。即,当中心服务器接收到传感器设备的验证请求后,对相应的Message采用摘要算法(如Hash算法)生成对应的摘要信息Digest3,再根据自身存储的密钥Key2对相应的摘要信息进行加密,生成第三消息验证码MAC3,具体参见图5。中心服务器将生成的第三消息验证码MAC3发送至传感器设备。
步骤S309:利用预先设置的第二密钥对第三消息验证码进行解密,得到第四摘要信息。
传感器设备接收到发送方发送的第三验证码MAC3后,利用自身存储的解密密钥Key2对其进行解密计算,得到第四摘要信息Digest4。
步骤S310:比对第四摘要信息与对待识别消息进行摘要算法处理时生成的第五摘要信息。
传感器设备对相应的待识别信息进行摘要算法处理,生成第五摘要信息Digest5,比对Digest4和Digest5,以进行验证。
步S311:若第四摘要信息与第五摘要信息一致,则验证成功;否则,验证失败。
即当Digest4和Digest5一致时,则验证成功,即该Message的来源或内容具备可信性;否则,验证失败,即该Message的来源或内容不可信。
以上针对对称加密算法中双方对称加密和一方加密一方解密的验证过程 做出了详细介绍,下面将进一步介绍采用非对称加密算法进行验证的过程。
具体地,由于采用非对称加密算法进行验证,则Key1和Key2为一对公私钥。因此不能采用双方同时加密对比消息验证码的方式进行验证,只能采用一方加密一方解密的方式进行验证,即只能采用如步骤S308、步骤S309和步骤S301所述的方式,对其摘要信息进行比对验证,其验证过程在上述步骤S308、步骤S309、步骤S310和步骤S311中已详细介绍,故不再此赘述。
值得指出的是,上述中心服务器和传感器设备的实施例仅作为示例性说明,本发明方法的实施并不限于以上场景和设备上,其他应用场景和设备依然可采用如上所述的方法进行消息可信性验证。
本发明实施例提供的消息可信性验证的需求来自接收方,并由接收方启动可信性验证过程,有效降低接收方消息加解密计算量的同时,也降低了发送方消息加解密的计算量,可以最大限度地降低双方设备加解密计算的需求,降低了设备功耗,延长了设备维护更新周期;同时不同设备对于验证的需求不同,每个设备只需针对自身期望执行验证的消息启动验证流程,具有充分的灵活性,不会出现指定消息无法执行可信性验证的情况,能够满足各种应用环境对消息可信性验证的不同需求,大大提高其兼容性。
实施例三
以上实施例一和实施例二分别结合不同应用场景介绍了本发明的消息可信性验证方法,下面将结合附图对其对应的消息可信性验证装置作进一步介绍,如图6所示,具体包括:
处理模块61,用于根据从发送方接收到的待识别消息的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性;
验证模块62,用于当待识别消息需要验证其可信性时,对待识别消息进行可信性验证。
其中,该消息可信性验证装置还包括:
响应模块,用于当待识别消息不需要验证可信性时,响应待识别消息并反馈至发送方。
其中,处理模块包括:
解析单元,用于解析待识别消息中的消息类型和/或消息内容;
处理单元,用于匹配消息类型和/或消息内容与预先存储的需要验证可信性的消息类型和/或消息内容,确定待识别消息是否需要验证其可信性。
其中,验证模块包括:
第一发送单元,用于向发送方发送一验证请求;
第一接收单元,用于接收发送方接收到验证请求后生成的第一消息验证码,其中,第一消息验证码是发送方利用预先设置的第一密钥对第一摘要信息加密时生成的,第一摘要信息是发送方采用摘要算法对待识别消息处理后生成的;
第一比对单元,用于比对第一消息验证码与第二消息验证码,其中,第二消息验证码是利用预先设置的第二密钥对第二摘要信息加密时生成的,第二摘要信息是采用摘要算法对待识别消息处理后生成的;
第一验证单元,用于当第一消息验证码与第二消息验证码一致时,验证成功;否则验证失败。
其中,验证模块还包括:
第二发送单元,用于向发送方发送一验证请求;
第二接收单元,用于接收发送方接收到验证请求后生成的第三消息验证码,其中,第三消息验证码是发送方利用预先设置的第一密钥对第三摘要信息加密时生成的,第三摘要信息是所述发送方采用摘要算法对待识别消息处理后生成的;
解密单元,用于利用预先设置的第二密钥对第三消息验证码进行解密,得到第四摘要信息;
第二比对单元,用于比对第四摘要信息与对待识别消息进行摘要算法处理时生成的第五摘要信息;
第二验证单元,用于当第四摘要信息与第五摘要信息一致时,验证成功;否则,验证失败。
需要说明的是,该装置是与上述消息可信性验证方法对应的装置,上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到相同的技术效果。
以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些 改进和润饰也在本发明的保护范围内。