安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

WSN链路层加密算法

更新时间:2022-10-28 15:46:21


本文简介:WSN是一种节点资源受限的无线网络,其链路层安全策略的轻量化研究适合于各种应用环境的WSN系统,且效果显著。结合序列密码和分组密码各自的优势,提出了一种新型轻量的WSN链路层加密算法——TinySBSec。WSN链路层加密算法设计1、TinySec协议分析TinyOS是一个基于组件(component-based)的开源操作系统,由UC Berkeley(加州大学伯克利分校)开发,专为存储器受限制

WSN链路层加密算法

WSN是一种节点资源受限的无线网络,其链路层安全策略的轻量化研究适合于各种应用环境的WSN系统,且效果显著。结合序列密码和分组密码各自的优势,提出了一种新型轻量的WSN链路层加密算法——TinySBSec。

WSN链路层加密算法设计

1、TinySec协议分析

TinyOS是一个基于组件(component-based)的开源操作系统,由UC Berkeley(加州大学伯克利分校)开发,专为存储器受限制的WSN设计。TinySec则同样是UC Berkeley为WSN开发设计的一款可运行于TinyOS的WSN链路加密协议。

该协议采用的是对称分组密码,加密算法可以是RC5或是Skipjack算法。其加密算法的工作模式为CBC模式,是一种拥有反馈机制的工作模式。每组密文不仅依赖于其明文,也依赖于上一密文分组(第1组密文依赖于初始向量IV)。

CBC模式的数学语言表示如下:

WSN链路层加密算法

CBC模式能增加攻击者篡改消息的难度,以尽可能简单的运算,达到一定的安全性能,而且并不会增加太多额外的能量损耗。正是基于这一优点,其他的一些WSN链路层加密协议,如WSNSec和Con-tikiSec也使用CBC工作模式。

TinyOS的链路层协议有3种数据包结构:Tiny.OS packet format、TinySec-Auth packet format和Ti-nySec.AE packet formato其中TinyOS packet format是TinyOS默认的数据包结构,没有加密和MAC(消息认证码),只有CRC检验数据的完整性;TinySec-Auth是只带MAC认证的数据包结构,Data是未加密的明文;TinySec-AE则是既有MAC认证,同时Data也被加密保护的数据包结构。3种数据包结构如图l所示。

WSN链路层加密算法

TinySec采用的RC5和Skipjack加密算法、CBG-MAC以及CBC密码工作模式都没有明显的漏洞,且对资源的占用也控制的较好,似乎就是专为WSN量身定做的最合适的链路层加密协议。事实上,TinySec同样具有一些缺点,例如无密钥更新机制,需要人工进行密钥的更新。当然,这可以通过密钥管理协议进行完善,但对于WSN这种短报文且明文重复率较高的数据特点,需要经常更换密钥以保障数据的安全性,这便对系统的整体能耗增加了额外的负担。而本文提出的TinySBSec链路加密算法,则拥有一种子密钥的自动更新机制,来解决这一问题。

2、TinySBSec框架设计

TinySBSec采用序列密码与分组密码相结合的方式,从而简化节点进行加密/解密时的计算复杂度和计算量。从形式上讲,finySBSec依然是一种分组密码算法,采用的是CBC工作模式,所以,TinySBSec的数据包结构,依然沿用TinySec-AE packet format如图1(c)所示,这样的设计尽可能的减小了对原TinyOS的其他协议算法的影响,具有更高的通用性。

虽然使用序列密码的加密方式能够极大的减少节点加密/解密的计算量,但却会导致严重的安全缺陷。为了解决序列密码在WSN链路层加密应用中的致命缺陷,本协议采用分组密码的形式,结合序列密码在产生子密钥和加密方面的优势,针对一些可能的安全漏洞进行了优化和设计。协议的加密/解密流程图如图2所示。

WSN链路层加密算法

从图2中可以得知,TinySBSec的加密和解密流程,相较标准的分组密码体制,增加了“交织/解交织”部分。需要说明的是,算法中引入交织并非是为了提供安全性上的增益,而是为了解决新算法在WSN应用中可能遇到的安全缺陷。考虑到WSN的消息内容有很强的“规范性”及“重复性”,若仅采用异或加密与分组密码的结合加密算法,将很容易遭到暴力破解。引入交织,结合CBC模式的特性,可以较有效的规避这一问题。

而且,每个分组进行加密时,所使用的密钥也是不同于标准分组密码那样的单一密钥,并且在不同的2个报文加密时,子密钥也会相应进行更新(非密钥管理方案形式的密钥更新)。

在进行TinySBSec协议的设计过程中,WSN的报文一般具有很强的“规范性”和“重复性”,而且种子密钥的长度一般不会很长。若单纯采用异或加密,会增加被暴力破解的风险。所以,TinySBSec采用明文交织和“伪一组一密”这2种技术,与分组密码CBC模式相结合,保证密码系统的安全性。

在加密前,明文先进行交织处理。交织这一概念源于通信原理,为了确保数据流在信道中某一块的丢失不会导致整个信息的无法还原,采用交织方法将原数据的块分散到传输信号的各个部分,在接收端再通过解交织以及纠错码进行信号还原。在这里,利用交织可以将数据位分散分布的特点,使得分析者在分析时,除非能猜测出完整的明文(或至少是明文的大部分位),否则,无法通过简单的异或破解出加密密钥。而且,即使破译出了加密密钥,由于TinySBSec的子密钥自更新机制,破译者依然无法获得种子密钥T。

此外,TinySBSec的子密钥还具有自动更新机制,这进一步提高了密码的安全性,因为“一次一密加密系统”是最安全的一种加密方式,虽然本算法并非严格意义上的“一次一密”,但却能提供相当的功能,且不需要为此负担额外的密钥更新能耗,而这正适合WSN的链路层加密。以往的WSN链路加密协议不采用一次一密,是因为频繁的密钥更新,会给系统的计算和功耗带来极大的影响,不适合WSN这种轻量级的网络应用a而TinySBSec的子密钥自动更新,不需要通过WSN的密钥管理协议实现,恰好弥补了一次一密体制在WSN应用中的先天缺点。

TinySBSec采用CBC分组加密模式,加密/解密部分采用的是序列密码加密,因此加密及解密计算用异或表示,每组明文加密都采用独立的密钥Ki。加密及解密计算的数学表达式可以表述为:

WSN链路层加密算法

其中,Co =IV,i=l,2,…,290 TinySBSec采用8 bit(即lbyte)的分组长度,每个分组加密时都有对应的独立密钥,报文格式与TinyOS一样,默认支持最多为29 byte长的数据。

3、子密钥生成算法

TinySBSec是一种序列密码加密,分组密码链接形式的加密协议,其子密钥生成算法采用RC4框架的改进型序列密码算法。RC4算法原型具有易实现、速度快(大约是DES的10倍左右)、安全性好等优点,适合移植到WSN的应用中。通过结合在本文12节中提出的“伪一组一密”的CBC分组加密模式,作为序列密码的RC4也能在WSN中进行工作,并保证一定的安全性。而为了进一步保证。rinySB-Sec的安全性能,本文对RC4算法进行进一步的修改,提高其序列输出的随机性,并且防止一些针对RC4算法特征的破解。

这种改进型的密钥序列生成算法采用128 byte长的种子密钥r,在RC4原型的伪随机子密码生成算法( PRGA)中,加入了Logistic混沌映射算法,以此增强子密钥序列的随机性。LogisLic混沌映射模型如下:

WSN链路层加密算法

改进算法中的Logistic初始值Xo采用的是7位的无符号二进制数,其精度为1/128,即可精确到小数点后2位。在对算法进行改进的过程中,发现Lo-gistic混沌映射在初始值Xo变化很小时,其初始几轮迭代值差异很小,如图3所示。

WSN链路层加密算法

从图3可见,在小数点后2位精度的情况下,初始值五的微小变化导致的前4轮迭代值相差很小。所以,在算法中使用Logistic时,先进行4轮预迭代,以保证加人Logistic混沌映射的有效性。

改进后的子密钥序列生成算法如下:

u=4;x=[tIV mod 16]/128;

for Z=1:4

x=u*x*(1-x)

end

i =j = dx = O ;

forround = 1: (Len/8)

i= ( i+ I ) mod256 ;

j= (j+S[ i] ) mod256 ;

dx =x * 256 ;

swap ( S[ i], S[jJ ) ;

t = ( S[ i] +S[j ] +dx ) mod256;

K[ round]=S[t];

end

其中,u=4即Logistic映射的控制参数p,Len/8表示分组数量。

从算法中可以看到,PRGA中插入的Log18tic映射的初始值XO,是由种子密钥r的第IV个元素的模16值确定的(因为种子密钥长为16 byte)。由于IV中包含计数器Ctr,所以IV的更新会带动初始值Xo的更新,达到子密钥序列自动更新的效果。在最后产生子密钥时,加入Logistic迭代值,可以在增加输出子密钥序列随机性的情况下,避免破坏RC4原算法的结构,防止弱密钥情况的发生。

新算法充分利用了Tiny'OS数据报文的元素,实现了混沌映射在密钥生成算法中,保持加密/解密过程的同步o正如算法所描述的,PRGA中插入的Logistic映射的初始值XO,与初始向量IV(8 bit)有关。初始向量IV是消息头(IV= Dest ll AM ll Len llSrc ll Ctr)的8bit摘要。凭此,在解密时,节点能够有效地进行同步解密。

该算法的安全优势在于,克服了序列密码原本的周期性重复问题,且破译者进行破译时,无法获得必需的Logistic映射初始值Xo,因为Xo需要通过种子密钥r获得。从理论上讲,子密钥自更新机制对于暴力破解也有很强的防御能力,新的子密钥序列生成算法具有足够的安全性,并且比原RC4的PRGA算法更安全。

小知识之WSN

无线传感器网络(Wireless Sensor Networks, WSN)是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传感器。WSN中的传感器通过无线方式通信,因此网络设置灵活,设备位置可以随时更改,还可以跟互联网进行有线或无线方式的连接。通过无线通信方式形成的一个多跳自组织网络。

立即下载试用

视频分层加密算法

随着可伸缩视频编码SVC( Scalable Video Coding)的普及,针对可伸缩视频的安全问题也越来越受到重视。目前大部分加密方案都是针对H.264/AVC编码标准来设计的。为此我们分析SVC新采用的技术,并率先提出了一种针对其特点的新的分层加密方案。

一、H.264 SVC的新特性

1、空间可分级

在H.264/AVC的SVC扩展中,空间可伸缩性采用的是分层的方法,通过金字塔式的空间分解来生成多个不同空间分辨率的信号。每个空间分辨率都是一个新的空间编码层。空间多分辨率信号的产生是通过下采样滤波器来实现的,图1所示为一个两层空间分级的SVC编码结构。

视频分层加密算法

H264/SVC在空间分层结构的基础上,对每一层分别实现时间可分级和质量可分级。每一层内的编码都使用了H264/AVC中帧内和帧间预测编码技术,而相邻层之间使用了SVC独有的层间预测编码技术。由于低层是由高层通过下采样得到的,因此在相同的分辨率情况下,每一个高层帧都有与之相对应的低层帧,两者之间存在着显而易见的相关性,即层间冗余。显然,为了获得更高的压缩效率,有必要通过各种层间预测技术来消除层间冗余,这也是空间可伸缩性技术的关键所在。设计层间预测算法的目的是尽可能利用基本层的信息提高增强层的编码效率。

2、质量可分级

在每一个空间层中,SVC将利用MGS编码来实现质量可分级( SNR Scalability)o MGS将压缩效率与漂移效应中,通过引入关键帧达到较好的效果。关键帧即时域最基本层的图像(图2(d)的两个条纹标识的帧为关键帧)。这些关键帧的重构是通过基本层实现的。因此增强层帧的丢弃造成的漂移仅仅只能作用在当前关键帧到下一个关键帧之间,实现了对漂移效应限制。图2描述了在质量可分级时可能的几种选择。

视频分层加密算法

(a)基础层预测

所有的预测全都在基本层完成。这样做的明显缺陷就是编码的效率低下。因为所有的参考帧都是基本层,所以参考帧品质差,那么残差也会大,进而编码出的比特就会多。

(b)增强层预测

克服了(a)的缺点,所有参考帧都用最“清楚”的图像,这样编码效率最好。但这种结构仍然有问题,一旦解码端只收到基本层,而增强层都丢失了。那么就会造成解码出问题,并且这种问题会一直传播下去直到下一个IDR,即漂移效应。

(c)双循环预测

通过分析想到用这种结构来克服(a)和(b)的问题。但这样的结构仍然会存在漂移效应。

(d)关键帧预测

SVC标准使用的方法,实际是一种(a)和(b)的折中方案。关键帧就是时间层id为O的图像(图中用条纹标明)o对关键帧而言,它们将采用基本层来实现预测,而非关键帧,则全部使用最“清楚”的图像作为参考帧。

二、针对SVC新特性实现的分层加密方案

针对SVC出现的新特性,目前还没有出现相关的加密方案,而本文将利用空间可分级中的层间预测以及质量可分级这些新的技术特征来设计一个新的分层加密方案。本方案的分层加密共分三层,保密性依次加强。加密的对象是一个二层空间分级编码视频,为了在解码的过程中不产生混乱,在对质量可分级以及层间预测进行加密的时候采用不同的密钥K、K'。

1、第一层加密:层间预测运动向量

为了提高编码效率,H.264/AVC采用运动估计的技术,在编码一个宏块的时候,首先要获得运动向量MV,MV是当前帧中需要编码的宏块,与参考帧中和该宏块最相似的宏块之间的位移矢量,编码过程中获得MV之后,由当前宏块与参考宏块做相减得到残差,然后MV与残差将被送往码流进行传输。这种预测方式在AVC中称为帧间预测。SVC相对AVC做了大幅的改动,由于可伸缩视频在编码的过程中将分成多个空间层,而空间层中的低层是由高层通过下采样得到的,两者具有显而易见的相关性,而且冗余大部分时候比帧间冗余要小很多,因此在大部分的预测过程中,SVC采用相同帧中较低的空间层通过上采样得到的重建图像作为较高的空间层的参考图像,这种方式称为层间预测。 SVC提供三种层间预测的方法:层间帧内预测、层间宏块模式和运动参数预测、层间残差预测。针对AVC的加密方案,所挑选的加密信息均为帧间预测中的信息,而由上面分析可知,SVC中的大部分预测是在层间进行的,因此,本方案的第一层加密,是针对层间预测中的运动向量来进行的。加密操作如图3所示。在修改了层间的参考图像的运动向量之后,上层的残差也会有相应的变化,因而导致图像的编码是不准确的。

视频分层加密算法

加密原理就是在解码的时候采用错误的预测值,所呈现出来的结果将会是大部分宏块的偏移。由于SVC的层间预测有三种方式,不是每个宏块都会采用层间运动向量预测模式,因此,每帧中采用该预测模式的宏块数量是不确定的,所以我们将采用流加密的方式,这样的加密方式会比较灵活,取密钥K中的一位与宏块的运动矢量的符号位进行异或,下文中P为符号位:

视频分层加密算法

2、第二层加密:MGS关键帧

在SVC质量可分级的MGS模式中,基础层的关键帧会作为增强层帧编码时候的参考帧,而基础层的非关键帧又是使用增强层的帧作为参考帧,因此改变关键帧的重建帧将使得增强层所有的帧以及基层非关键帧受到累加化的影响。H.264中规定,宏块是由16 x16像素组成的,而宏块中的每个像素都由一个亮度值和两个色度值来表征,亮度值表征像素的灰度,色度值表征像素的颜色,宏块中的亮块和色块分别是由块中像素的亮度值和色度值组成,如果对关键帧的重建帧中宏块的亮块和色块进行改变,则增强层中的所有帧以及基本层的非关键帧都会受到很大影响,致使视频质量大幅下降。由于宏块大小固定为16 x16像素,所以亮块与色块的数据量也是固定的,因此本方案第二层加密采用的是AES分块加密技术对重建帧中宏块的亮块和色块进行加密,这样可以保证加密过程迅速完成并拥有很高的安全性。以下为实现代码。

K' = getKey();

UInt size;

pcFrame - > getFuIIPeIYuvBuffer ( ) - > getYuvBufferCtrl ( ). getSize( size) ;

slze = size/8; 11 8 data constitute a AES encrytion block Xpel temp = temp' = new Xpel[8] ;

for(int i = 0; i < size; i++) { temp [1.8] = pcFrame - > getFuIIPeIYuvBuffer( )

- > getBuffer( ) [i* 8. . (i+l) * 8 -1] ; //get 8 data from YUV array

AES_Encrpt( temp [ 1. . 8 ] , K', temp' [1. . 8 ] ) ; //AES encryp-tion

pcFrame - > getFulIPeIYuvBuffer( ) - > getBuffer( ) [i* 8. . ( i + 1) *8 -1] = temp'[1..8];

}

3、第三层加密:层间预测运动向量以及MGS关键帧

在SVC的编码流程中,视频首先会被分成若干个空间层,空间层之间彼此采用层间预测的模式,而每个空间层中,会单独进行质量可分级,采用MGS的模式,因此第三级的方案将会利用层间预测的运动向量加密以及MGS中的关键帧加密同时进行,兼顾了层间与层内的保密性,并且可以互相叠加,加密级别更高,安全性更显著。图4为本方案的分层加密结构图。

视频分层加密算法

小知识之SVC

SVC是Switching Virtual Circuit的缩写,意思是交换虚拟电路。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16469.html