多媒体数据在网络中的传输,存储更加频繁,因而多媒体信息的安全与保密就显得非常重要,成为新的研究热点。我们根据系统的需求和研究加密算法现状的基础上,提出了一种基于嵌入式数据库Berkeley DB的视频数据加密系统设计方案。
一、视频系统总体设计
进入信息化时代以来,随着宽带网络和多媒体技术的高速发展和日趋成熟,引发了视频监控系统的革命性变化,以数字硬盘录像机(DVR,Digital Video Recorder),磁盘阵列等相关产品为代表的新一代监控设备使视频监控行业迅速向数字化、网绛化和智能化方向发。其中实时数据的加密、压缩、检索、存储和传输是数字视频监控领域的关键技术。
1、系统硬件总体结构
在对嵌入式视频存储和检索的关键技术进行了深入分析后,本系统选用并对NAS-3000的软硬件结构进行了设计,给出主要的数据结构和函数接口,对系统初始化、数据库使用、数据存储、数据检索、数据转发的流程进行描述,下图为系统硬件结构示意图。整个系统主要包括4个部分:主控板,存储板,扩展板,外围电路。
2、应用软件总体结构
整个系统自下而上大体上可分成以下几部分:数据存取模块:视频特征提取模块,视频数据加密模块,嵌入式数据库模块,查询接口模块,其他模块。数据存取模块,数据存取模块负责视频数据和特征索引的存储与管理,是数据库系统的底层存储引擎,把用户与数据的物理存储分开。这是基于内容视频检索的核心,通过视频结构分析和图像处理、目标识别等技术,提取视频的结构特征和语义信息,生成视频数据的索引。数据加密是结合MPEG编码技术,实现图象数据从明文转换为密文,从而实现数据的安全存储与传输。嵌入式数据库是基于内容视频存储和检索系统的神经中枢,主要负责视频索引的管理及数据库的日常维护,并为上层程序提供数据查询、数据存取和数捷库管理的编程接口,其结构图如图2所示。
二、视频数据编码与加密设计
1、选择性加密算法
但是由于图像和视频信号数据量很大,所以这种加密方法计算量非常大,不仅浪费资源,而且难以保证实时性,不易投入实用。为解决这对矛盾,研究视频的信源特征,把密码原理与视频技术结合起来,对数据进行加密。考虑到多媒体数据的加密是对内容的加密,选择加密对内容敏感的一部分数据,可以在满足安全性的同时达到降低计算复杂度的目的,本文选择了VEA算法作为视频数据的加密算法,如图3所示。
2、VEA算法实现与分析
VEA算法主要内容是用私钥随机改变DCT系数的符号位。因为VEA算法仅对非零DCT系数的1 bit异或运算,大六降低了运算复杂度。MPEG视频加密的目的是通过置乱视频舞阻止非授权接收者解码视频流。常用的方法是对视频流S(称为明文)施以一个可逆变换Ekl,得到一个比特流C(称为密文)既C=Ekl(S),一个授权用户使用另一个私钥K2,通过转换:Dkl= E-1kl可能解密接收到的视频流,整个解密操作如下:
MPEG压缩视频S是一个比特流,它可以表示为:S=…S1…S2…SM…SM+1…SM+2…其中Si(i=l,2,…DC系数和A系数的符号位(对于I帧的Y,Cr,Cb块,因为DC系数是差分值的符号位,因此DC系数是差分编码的)
VEA算法的加密方程EK,可以表达如下:
加密算法随机改变DCT系数的符号位,根据给定密钥,一个符号位或者不变(相应的密钥位为O),或者从0变为1,或者从1变为O(相应的密钥位为1)。VEA的加密效果在MPEG视频解码的IDCT i DCT逆变换)时体现出来。即使只有一些DCT系数改变,这些改变将扩散到大多数IDCT系数中o对于有密钥的用户,可以解密视频,获得原始视频。对于不知道密钥的用户,获得的图像将和原始图像不同,有的变得无法理解,因为图像大部分像素值都己经改变。
我们在基于XviD源代码的MPEG4-SP编解码平台上进行了该算法的仿真。在MPEG4-SP XviD源代码中,DC系数的编码是通过DC系数差分值的范围确定尺度变长码,再加唯一标识该差分值的附加码,来确定写入码流的码字:AC系数的编码是在对AC系数块扫描时,通过(RUN,LEVEL)行程编码完成,RUN表示O的个数,LEVEL表示当前AC系数值,由RUN,LEVEL找到相对应的变长码,符号位通过该AC系数的正负关系在变长码码字最后一位以O或1标识,0表示正而1表示负。因此我们在帧内宏块DC,AC系数预测之后和帧间宏块在DCT系数量化后加入VEA算法,将非0值的DC系数,AC系数的正负进行随机翻转,同时为了提高算法的安全性及增加加密图像的不可理解性,我们根据判断加密后的第一个块的DC系数正负关系,改变运动向量的符号,并将每个块的第一行和第一列AC系数作异或运算,部分的改变了原有的AC系数值。加密效果如图4所示。从视觉效果上看,该算法可以很好的遮盖原始视频内容,左边的为原始图像,右边的为加密后的图象。
三、Berkeley DB数据库的设计与实现
1、打开和使用数据库
本系统的数据库引擎为Berkeley DB,在系统初始化阶段, 首先要打开数据库,读数据库文件,根据索引对视频文件进行完整性检查。BerkeleyDB用键值/数据来区分数据库中的数据,键值/数据对是Berkeley DB的基本组成部分。也就是说,调用数据库接口实际 上就是提供了相应的键值,通过键值查找要操作的数据。在Berkeley DB中,所有的键值/数据对都存储在一个叫做DBT的结构内。Berkeley DB的库函数调用规则和面向对象的思想很相似。打开数据库分两个步骤,首先调用db create函数创建一个DB结构的句柄,然后再利用open函数来执行——正打开数据库的操作一其函数接口分别为:
打开数据库后,就可以进行添加记录、查找记录删除一记录等操作。
2、数据存储
数据存储是视频数据库的中心任务,其主要职责是将上层程序传递过来的视频数据通过文件系统API存入硬盘,并创建视频索引,为用户检索提供便利。我们只能将MPEG视频流的结构信息提取出来,结合其他外部信息(主要与视频数据的物理存储有关),作为索引的一部分存储在Berkeley DB数据库中。
系统正常运行时将会创建两个后台守护进程:disk monitors和diskwrite。
对于disk monitor进程:用于定时检查硬盘状态,确保当前写入数据的硬盘有足够的空间o当通道unit的空文件池中的保留句柄数小于最低阀值(通常为1)时,尝试从全局空文件池中获取可用句柄。如果成功则disk monitor新创建一个空文件补充到全局空文件池中。否则说明全局空文件池中可用句柄数为O,disk monitor分别以Oxfl:ffffff和unit为参数调用createempty_file0创建空文件,直到句柄数恢复正常或者硬盘剩余容量不足。对于diskwrite主要是对接收到的数据进行存储,其流程如图5所示。
3、数据检索
提供灵活多样的数据检索服务是视频数据库的重要职能,也是视频数据库比一般的文件管理程序优越的根本原因。当用户申请数据检索时,查询处理进程根据具体的查询请求逐级检索文件索引、段索引和帧索引,定位到最符合条件的数据帧,返回该帧在文件内的偏移量。找到符合条件的视频文件后,根据应用需求和系统资源,就可以建立一条端对端的UDP或TCP连接,使远程用户能够在线播放或下载感兴趣的视频片断。查询处理进程还维护一份全局的用户连接表,并将所有操作以日志方式记录下来。
查找文件的函数接口为:int find_ file(struct STRU_FILE_QUERY*query, struct STR—FILE—RETURN*files, intmax_ num—re-turned)
根据传入的文件查询结构query中的参数进行文件级检索,符合条件的文件的相关信息放入查询结果结构files中返回,最大返回个数为 max num returned。
小知识之嵌入式数据库
嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。