精述wifi、zigbee在链路层的安全原理:CCM模式

一.前言

物联网及无线传感器网络的特色都为低带宽,节点的存储空间、计算性能、能量供应都较低在链路层中,业界主流的协议包括Wi-fi(IEEE 802.11),zigbee(IEEE 802.15.4)和蓝牙(IEEE 802.15.1)。
Wi-fi和zigbee的安全机制我已经在以前的一篇博客中有较详细介绍,这两种协议在链路层都是基于CCM机制作扩展,Wi-fi称为CCMP,zigbee成为CCM*。但总归CCM机制是这两种协议链路层安全的主体部分。算法

然而CCM这个英文缩写的全称还比较绕,理解起来比较麻烦。
CCM的全称是Counter mode with CBC-MAC,而CBC-MAC的全称又是Cipher Block Chain-Message Authentication Code mode。。。
但总之,简单地说:
CCM模式由Counter mode(计数器模式)和CBC-MAC mode两种模式组成,其中Counter mode主要功能为加密,CBC-MAC主要功能为利用MAC对消息进行验证。(注意:此处的MAC并不是平时说的网卡地址,而是消息验证码)安全

下面咱们就来深刻钻研下CCM究竟是个什么样的存在。首先在第二部分介绍MAC,而后在第三部分介绍counter mode 和 CBC mode,最后在第四部分作总结。网络

二.MAC(Message Authentication Code)的机制及做用

MAC的机制:
通讯双方互相约定一个对称秘钥s,发送方在要发送明文m尾部串接加上s造成总体(m+s),而后对总体利用hash函数造成摘要H(m+s),并放在原发送明文尾部造成总体(m,H(m+s))发送给接收方。
接收方收到消息(m,x)后,先把m和双方约定好的对称秘钥s串接并造成摘要H(m+s),再把此摘要和x进行比较。若相等,则消息的完整性获得验证;若否,则说明消息在传输过程当中遭到破坏,好比中间人攻击(如篡改、伪造等)。函数

但有一个问题是MAC是否起到了对发送方的身份验证的做用?
在wikiPedia上,介绍MAC提供了身份验证机制,在tinySec的论文中也不少次提到利用MAC机制实现身份验证。
我认为MAC确定实现了对传输信息的完整性验证(即验证消息在传输过程当中没有遭到破坏);而后,鉴于通讯双方确实提早约定好了对称秘钥,MAC的产生也是须要用到此秘钥的,因此也可认为MAC是提供了对发送方的身份验证。由于只有想要通讯的人才拥有此对称密钥。
(固然若是攻击人得到了此对称秘钥,而后本身伪造消息造成MAC码,那接收方应该是判断不出来的。但这是另外一回事了)性能

三.CTR、CBC、CBC-MAC及分块密码的工做模式

**具体到Counter Mode(CTR,计数器模式)和CBC Mode(密码块连接模式),这两种都是块密码(block cipher)中对密码块的不一样处理方式。
首先,对称秘钥根据对原文的加密方式的不一样,分为流密码(stream cipher)和块密码两种。**
**块密码的工做机制为把原文分红多个等长的模块(block)(一般为8或16字节),而后使用肯定的算法和对称密钥对每组分别加密解密。DES,AES,RC5都是分块加密方式。
但须要加密的原文一般远长于16字节,因此使用k字节的分块加密方式须要把原文分红相等的n个k字节块,而后对每一块使用特别的方式进行替代、变化等多种迭代处理方式达到加密效果。对每一个块的加密方式有不少种,如CTR,CBC,OFB,ECB等。其中,CBC是最为经常使用的工做模式,CTR很适合运用于多处理器的硬件上**加密

CTR模式为将块密码变为流密码,它经过递增一个加密计数器以产生连续的密钥流,其中,计数器能够是任意保证长时间不产生重复输出的函数,但使用一个普通的计数器是最简单和最多见的作法,CTR的加解密过程分别如图1,2所示。
CTR容许在解密时进行随机存取,而且加密和解密过程都可以进行并行处理,这是它很适合运用于多处理器硬件上的缘由。spa

图片1.png

图1     CTR的加密过程

图片2.png

图2     CTR的解密过程

而在CBC模式中,每一个明文块先与前一个密文块进行异或操做后,再进行加密。在这种方法中,每一个密文块都依赖于它前面的全部明文块,明文中的微小改变会致使其后的所有密文块发生改变。同时,为了保证每条消息的惟一性,在第一个块中须要使用初始化向量。
它的主要缺点在于加密过程是串行的,没法被并行化,并且消息必须被填充到块大小的整数倍。解决后一个问题的一种方法是利用密文窃取。
可是CBC模式在解密时是能够并行化的。密文中一位的改变只会致使其对应的明文块彻底改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容,从两个邻接的密文块中便可获得一个明文块。code

图片3.png

图3     CBC的加密过程

图片4.png

图4     CBC的解密过程

四.总结

CCM机制是保障Wifi和zigbee在链路层安全的关键。
CCM机制由counter mode 和 CBC-MAC mode两部分组成。这两种模式都是分组加密中对分组块的不一样处理方式。图片

counter mode的做用为对传输数据进行加密,以保障数据在传输过程当中不会被恶意攻击者窃听;
CBC-MAC mode的做用为对传输数据进行验证,以保障所接收数据确实来源于通讯的另外一方以及检验数据在传输过程当中是否有丢失。
此处的MAC为message authentication code(消息验证码),并不是咱们平时说的MAC地址(链路层网卡地址,media access control)。ip

具体机制能够看第二部分和第三部分。

(参考资料:虞志飞,ZigBee 技术及其安全性研究,计算机技术与发展,2008 年8 月;任秀丽,ZigBee技术的无线传感器网络的安全性研究,仪器仪表学报,2007年12月Wikipedia)

相关文章
相关标签/搜索