徐 欣,赵伟丽
(杭州电子科技大学通信工程学院,浙江 杭州 310018)
基于VxWorks的安全SATA存储驱动设计与研究
徐 欣,赵伟丽
(杭州电子科技大学通信工程学院,浙江 杭州 310018)
为了保证VxWorks6.9操作系统下硬盘数据的安全,提出通过在SATA硬盘驱动程序中对数据进行加解密来实现加密写入和解密读出的功能.基于VxBus驱动架构阐述了安全驱动开发的基本过程,通过对底层读写函数的研究,分析了在其中实现加解密的可行性,并针对LWR快速硬盘加密算法的缺陷提出了基于混沌序列的改进算法.通过实验证明了改进的加解密算法能够提高安全系数和加解密速度,符合驱动中对加解密算法速率的要求.最后将该系统移植在Xilinx公司的ZC_702开发板上,通过硬盘读写测试验证了具有加解密模块的SATA驱动在实现其安全存储功能的同时,对硬盘的读写速度影响较小.
VxWorks;SATA驱动;读写函数;混沌序列;加解密
嵌入式系统的高速发展使得VxWorks实时系统的优势显得愈发明显,如何保证VxWorks下硬盘数据的安全成为重要的研究课题.针对不同的操作系统,研究者们已经提出了多种应用层加密技术,有TruCrypt,LUKS, WinMagic等.驱动层的加密能够得到系统内核机制的保护[1],但由于驱动开发与系统核心打交道,开发难度增大,相关研究也较少.目前(基于硬盘的驱动级加解密集中于windows下以HOOK技术为基础的文件系统透明加解密技术(Encrypting File System)[2])而针对VxWorks的硬盘加密技术主要以硬件加密为主[3],针对特定SATA硬盘设备的驱动级加密技术明显少于Windows系下驱动级技术.由于驱动级的加密技术能实现硬盘数据的透明加解密,具有系统移植性好,加解密算法及时更新等特点,使之成为软件加密的主要趋势[4].在VxWorks平台下,本文设计了SATA安全存储驱动的系统模型,在分析了驱动读写函数的实现过程后,将改进的快速加解密算法应用于读写函数中,实现了将所有写入硬盘的数据快速加密后存储于硬盘和读取的数据快速解密后交给上层操作系统的功能.
嵌入式系统驱动的开发是基于软硬件相互结合平台实现的.硬件环境提供了操作系统运行的嵌入式处理器环境,软件环境提供了驱动程序中各任务间的调度、同步与中断机制等.本文在分析硬件架构的基础上提出了基于操作系统驱动层的安全存储软件模型.
1.1 硬件设计
本文采用的硬件开发设备是Xilinx公司提供的以Dual ARM Cortex-A9为处理器、主频为667 MHz的ZC702开发板.硬件架构如图1所示.
图1 基于Xilinx公司ZC-702开发板的系统硬件架构
接口遵循AHCI里的地址空间,支持热拔插和NCQ技术,理论传输速率最高可达300 MB/s,而底层驱动函数通过对主机控制器寄存器的读写来实现对硬盘设备的控制[5].
1.2 软件设计
VxWorks操作系统下SATA硬盘设备的安全驱动内核层次如图2所示.
图2 VxWorks安全存储驱动的软件架构层次
由图2可以看出,安全驱动是处于BSP层的.设备不直接与I/O子系统交互,而是通过中间XBD和中间文件系统层进行信息交换的[5].XBD是为了处理快慢不匹配而引入的缓冲技术,将应用层请求送达文件系统层后根据BLK_DEV结构体中的信息来调用具体的底层驱动函数,并由底层驱动函数实现具体的请求操作.
2.1 安全SATA驱动初始化
基于VxBus的安全SATA驱动的初始化函数的定义是在程序DRIVER_INITIALIZATION结构体中完成的.其中定义的3个函数在系统初始化的各个阶段依次调用实现其功能,初始化过程如图3所示.
图3 SATA驱动初始化过程
2.2 底层安全SATA驱动开发
本文的SATA驱动程序最终要实现对SATA设备的加解密读写功能,读写函数的开发也成为安全驱动开发的核心任务.
2.2.1 读写函数中实现加解密的分析
底层读写函数在发送读写命令的基础上实现了数据在控制器缓冲区和文件系统提供的数据缓冲区之间的传送.据此可以在数据传送过程中实现数据的加解密.系统中由内核结构体BLK_DEV提供指向读写加解密函数的指针,BLK_DEV中函数指针定义如下所示.
typedef struct
{ .....
FUNCTION bd_ahciSataRd; //指向SATA设备解密读取函数
FUNCTION bd_ahciSataWrt; //指向SATA设备加密写入函数
} BLK_DEV;
1)bd_ahciSataWrt:上层文件系统在调用bd_ahciSataWrt指向的函数之前已经完成了将文件或目录形式的路径转换为对应物理起始块号、需要读取块数以及数据存放的缓冲区基地址的工作[6].底层加密写入函数将文件系统提供的缓冲区中数据加密后复制到SATA控制器缓冲器中,操作SATA控制器完成数据块的写入工作.写操作的系统流程如图4所示.
2)bd_ahciSataRd:与写函数类似,不同的是读函数是将数据从SATA控制器内部缓冲区读取出来并解密后复制到文件系统提供的缓冲区内,读操作的系统流程如图5所示.
图4 数据加密写入流程图
图5 数据解密读取流程图
2.2.2 加解密算法设计
本文在保留原算法混淆算子[7]的基础上,针对AES加密算法中密钥生成算法易受Square攻击且攻击在6轮以下有效问题,提出了在减少轮数的同时利用2个低维度混沌映射生成的混沌序列作为轮密钥的方案.硬盘的加解密算法是以512 Byte(扇区大小)为单位,下面利用128 bit的基本加密来说明原快速加密算法与改进算法的基本流程,如图6所示.
图6 原算法与改进算法对比流程图
1)混淆算子Diffuser(x,n)描述为:
fori=1 ton-1
xi←xi⊕(xi-1⊕(xi-3<<
在128 bit扰乱中,将n取值为4,xi即为32 bit的字,令xi=xi mod 4;在最后整个扇区的扰乱中将n取值为32,xi即为128 bit的数值,令xi=xi mod 32算子输出为512 Byte,n为分组数.在驱动中该算子的输入为key1⊗SHA1(address(section)<
2)原算法采用AES密钥扩展算法,将种子密钥K扩展为4×44的字节矩阵W,W(i)表示W的第i列,其中每4列对应1个轮密钥,密钥具有以下关联性.当Nk=4,如果Nk|i成立,则W(i)=SubByte(RotByte(W(i-1)))⊕W(i-Nk)⊕Rcon(i/Nk);否则W(i)=W(i-1)⊕W(i-Nk).改进密钥生成算法为减小密钥间的相关性,密钥采用Logistic和Chebyshev混沌映射迭代500次后稳定的128×6个值作为混沌序列,并将序列进行归一化处理.最后为降低混沌序列短周期性,将2个混沌序列异或生成最终子密钥序列并将其中每128 bit组合为轮密钥RoundKey[i],使得轮密钥之间不再具有相关性[8].
从算法安全性方面而言,改进算法保留了原有算法的扰乱特性、抗差分以及线性攻击的能力.同时在密钥扩展算法上采用随机性高、对初值敏感的混沌序列,减少了轮密钥之间的相关性并提高了密钥空间.从系统密钥管理方面而言,将密钥固化在合法移植者驱动程序的头文件中能够有效避免非法者的篡改.从算法性能上讲,改进后的加密算法采用了混沌系统,因混沌序列生成效率高,使其代替减少轮数后的迭代密钥,有效减少了算法执行时间.
将系统移植到处理器为ARM9的ZC_702开发板后,在风河workbench软件环境下分别对原算法和改进的算法进行50组640 kB内存数据的直接加密运算,其速度比较如图7所示.
图7 改进前与改进后算法性能比较
由图7可知,本文通过改进复杂的密钥扩展算法和精简加密轮数后使得平均加密速度达到196.82 MB/s,原始快速加密算法的平均加密速度为176.18 MB/s,性能上有明显地提升.
最后将含有加解密驱动的VxWorks系统移植在自主研发的具有主机SATA控制器的ZC_702开发板上.系统启动后自动完成硬盘驱动的初始化以及文件系统的初始化,在shell命令行输入devs,可查看设备驱动名称;本实验直接通过/ahci0对硬盘进行读(read)和写(write)函数测试并将其分别显示在控制台上,如图8所示.
图8 写入和读出数据的控制台显示
在VxWorks驱动程序中引入加解密模块,必然会在数据读写时增加不必要的耗时,这也无可避免地降低了系统对硬盘的读写速率.为此,分别在安全驱动和原驱动下对三星MZ-5PA128C型号硬盘进行5组600 kB数据的随机读写并通过速率比较如表1所示.
表1 数据读写速率
由表1可知,基于驱动层的软件加解密模块对硬盘原本的读写速率确实存在损耗,平均速率损耗为26.71%,在实际应用中为兼顾安全性与高速性,以较小的速率损失换取安全存储是可以接收的.
本文基于VxWorks操作系统设计了SATA接口硬盘的安全存储驱动,实现了驱动层的透明加密体系,以软件加密方式实现对硬盘存储设备的数据保护,不依赖于硬件设备具有软件灵活性.实验表明,本文开发的安全存储驱动在VxWorks6.9操作系统下能正确运行,并在保证读写速度不受到太大影响的前提下,实现了数据的安全存储.
[1]MÜLLER T, FREILING F C. A Systematic Assessment of the Security of Full Disk Encryption[J]. Dependable and Secure Computing, IEEE Transactions on, 2015,12(5):491-503.
[2]张紫荣.块存储设备加密系统关键技术研究[D].哈尔滨:哈尔滨工业大学,2009.
[3]SUN Y, HOU Z, WEI W. A new approach for data protection in case of the physical device being stolen-Using hybrid storage[C]//Conference Anthology, IEEE. IEEE, 2013:1-4.
[4]张暠轩.WindowsNT的驱动级加解密技术研究与实现[D].成都:电子科技大学,2010.
[5]陈康,翟正军,焦航.基于VxBus的大容量存储模块AHCI驱动开发[J].计算机测量与控制,2013,21(8):2286-2289.
[6]曹桂平.VxWorks设备驱动研发详解[M].北京:电子工业出版社,2011:209-249.
[7]高伟,谷大武,侯方勇,等.快速硬盘加密算法的设计与实现[J].计算机工程,2009,35(2):142-144.
[8]杨志华.手机通信中基于混沌的AES改进算法研究[D].成都:电子科技大学,2012.
Study and Design of Secure SATA Storage Driver Based on VxWorks
XU Xin, ZHAO Weili
(SchoolofCommunicationEngineering,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
To ensure the security of the hard disk data based on VxWorks6.9 operating system, this paper proposed a method that data can be encrypted and decrypted in the program of SATA hard disk driver. The paper described the basic process of security driver development based on VxBus driven architecture, analyzed the feasibility of the encryption and decryption through researching the underlying function of reading and writing. An improved algorithm LWR fast disk encryption algorithm was adopted in our paper. Experiment proved that the improved encryption algorithm can improve the safety efficient and the encryption speed. Finally transplanted the system on the development board of Xilinx ZC_702, and respectively performed the test of reading and writing on hard disk with SATA driver with encryption module and without encryption module. It has proved our driver has realized the function of the safety storage, at the same time, has less influence on the hard disk speed of reading and writing.
VxWorks; SATA driver; read-write function; Chaotic sequence; encryption and decryption
10.13954/j.cnki.hdu.2017.04.007
2016-07-11
徐欣(1975-),男,浙江丽水人,教授,信息安全.
TP309
A
1001-9146(2017)04-0030-06