AES 加密在嵌入式数据库SQLite 中的应用
2023-07-31武黎明王淑娟董祺宁
翟 禹,武黎明,王 祥,王淑娟,董祺宁
(北方自动控制技术研究所,太原 030006)
0 引言
随着坦克装甲车辆的信息化发展,其各个分系统及嵌入式设备产生的数据量越来越大。以火控系统为例,包括武器状态信息、发控信息、目标信息等。这些大量数据需要专门的嵌入式数据库进行管理。SQLite 作为嵌入式平台数据储存的主要方式,具有体量小、可移植性高、管理简单、状态回滚方便等特点。然而SQLite 没有用户管理与加密功能,这意味着数据库文件对所有人开放,都可以轻松用工具查看。对于重要的军用设备,这种开放的文件存在信息安全隐患。加密一直是最受欢迎的信息安全解决方案之一,在数据安全中发挥着重要作用,加密算法研究具有重要意义。
DAEMEN J 和RIJMEN V 创建了Rijndael 算法。Rijndael 算法于2001 年被美国国家标准与技术研究院(NIST)选为高级加密标准(advanced encryption standard,AES)[1]。AES 方法是一种对称分组密码,使用替换-排列网络(SPN)具有速度快,安全级别高的优势[2]。PATIL S,PATIL R 并行应用了AES算法[3]。对于计算成本高昂的数据加密,例如音频、视频和图像数据加密,AES 算法运行缓慢。因此,通过采用并行处理,能够克服处理缓慢的缺点。TAHIR A S 为图像加密开发了修改版AES,通过更改行移位阶段,以提高安全性[4]。修改版AES 更安全,并且在测试后实现了针对统计攻击的安全结果。JUREMI J 等提出了一个名为行列式旋转的新阶段,通过使用行列式矩阵计算为每轮生成不同的S盒来实现AES 的S 盒位置的旋转[5]。通过随机性试验和雪崩试验,证明了此方法获得了高随机性和高安全性。RIYALDHIA R 等提出了一种通过修改S 盒和行移位来改进AES 算法的方法[6]。经过测试,所提出的改进AES 算法比原来的AES 减少了3 μs 的执行时间。NAZIRI 等在S 盒架构中设计了乘法逆,限制了储存器减轻了储存占用[7]。何文才等在安卓平台开启多线程与计算器模式,使得SQLite 的加密速率提升了23.5%[8]。冷飞等提出融合RSA 与AES算法,降低了密钥的管理复杂度[9]。费雄伟等引入统一计算架构平台,实现AES 并行计算,提高了加密速度[10]。张诗永等提出256 位分组来构造新算法,增强了AES 算法的计算性能[11]。
嵌入式设备计算资源有限、存储空间狭小,若使用标准的AES 存在处理速度慢、数据传输时间长等缺陷。基于以上分析,对AES 算法进行了轻量化的改进策略,在保证安全性的同时,加快AES 算法的进程。实验结果表明,本文设计的轻量化AES 算法高效轻便,在SQLite 文件加密中表现优秀。
1 标准AES
AES 是一种分组密码,使用对称密钥进行加密和解密过程。明文大小等于128 位(相当于16 字节),而密钥大小可以分为128、192 或256 位。AES算法中有轮次(迭代),总回合数由密钥的大小决定,如表1 所示。
表1 AES 算法规范Table 1 Specification of AES algorithm
具体由4 个阶段组成,分别是字节代替(Sub-Byte),行移位(ShiftRow),列混淆(MixColumn)和轮密钥加(AddRoundKey)阶段。这些阶段以顺序形式执行,并在状态数组(4×4 字节)上作为轮次运行。明文在加密过程中作为参数通过这些轮次传递,如图1 所示的4 个阶段[12-13]。
图1 AES 算法结构Fig.1 Structure of AES algorithm
1)字节代替:是一个非线性字节替换函数,独立地对状态数组的每个字节进行操作,并基于有限域GF(28)中的乘法反转。即查S 盒,替换字节,S 盒如图2 所示。
图2 S 盒Fig.2 S-box
2)行移位:状态中有4 行。第1 行不受影响(未移位),第2 行向左移动1 个字节,第3 行向左移动2 个字节,第4 行向左移动3 个字节。
3)列混淆:此阶段使用逐列操作状态,每列被视为GF(28)上的4 项多项式,并乘以固定多项式a(x)x4+1。列混淆使用式(1)计算:
4)轮密钥加:对128 位的状态按位与128 的轮密钥XOR 操作,即按位异或[14-15]。
2 改进的轻量级AES 算法
本文所提出的轻量化AES 算法改进了前两个阶段:字节代替和行移位阶段,从而改善了加密和解密过程。此外,回合数缩短至4 轮。
2.1 轻量化字节代替
改进的字节代替阶段使用替换表而不是标准AES 算法的S 盒。替换表由两个条目组成;第1 个条目具有以0 值开头并以F 值结束的升序形式的十六进制数字,第2 个条目具有以F 值开头并以0值结束的降序形式的十六进制数字,如表2 所示。
表2 轻量化替换表Table 2 Lightweight replacement table
状态数组中的每个字节分为两位数(每个数字用十六进制表示)。在字节代替阶段,字节的每个数字取决于替换表,该替换表在第1 个条目中搜索状态的第1 个字节(字节由两位数组成),并从第2 个条目中获取相应的字节。例如,假设以下状态数组,状态的第1 个字节等于(FF),则替换为(00)。经过轻量化替代后结果如下,如图3 所示。
图3 轻量化字节代替Fig.3 Replacement with lightweight byte
此外,由于轻量化替换表存在线性关系,其逆操作逆字节代替也用同一张表,加密解密均节省了存储空间,替换表的大小为2×16,等于32 字节,S盒由16×16 字节组成,等于256 字节。此外,在搜索过程中更快(仅搜索16 个条目)。算法1 解释了轻量化字节代替阶段的步骤。
2.2 轻量化行移位
在标准AES 中,行移位阶段每次移位按特定编号执行,由状态数组中的行号确定的移动编号。轻量化后的行移位阶段通过随机移位数对每一行执行循环移位。一维无序逻辑映射系统产生的随机移位数由等式(2)表示:
算法1:轻量化字节代替阶段输入:状态数组、替换表输出:新状态数组开始For i=1 to 4 For j=1 to 4字节块T=状态[i][j];数值1=字节块T 左边值;数值2=字节块T 右边值;新数值1=代替(轻量化替换表,数值1);新数值2=代替(轻量化替换表,数值2);新字节块T=结合(新数值1,新数值2);新状态[i][j]=新字节块T;Next j;Next i;结束
其中,X0表示起始状态,i 表示迭代次数,是系统控制参数。对于所有i,Xi+1的值是介于0 和1 之间的数字,而控制参数的值在(0,3)范围内,具体取决于状态数组中的行数。由无序系统随机生成并排列在一个称为“移位数”的一维数组中,如表3 所示。
表3 行移位前状态Table 3 Status before shift row
状态数组中的每一行都向左移动,不同的移位值取决于随机移位数而不是标准AES 算法中的固定移位值(行号)。轻量化行移位阶段如图4 所示。
图4 轻量化行移位Fig.4 Lightweight shift row
从图4 中可以看出,移位数是变量值(不是固定值),排列由无序系统随机实现,以增加状态数组的排列。此外,在解密过程中,轻量化后的逆行移位阶段是通过使用相同的随机移位数向右移位状态数组来实现的。算法2 解释的是修改移位行(MSR)阶段的步骤。
3 实验结果及分析
算法2:轻量化行移位阶段输入:状态数组、无序移位数输出:新状态数组开始For i=1 to 4新状态数组[i]=左移位(状态数组[i],无序移位数[i]);Next i;结束
本文在内存有限制的Ubuntu 虚拟机上进行实验,模拟了嵌入式设备运行环境。创建了mysqlite.db数据库文件,插入数据后,可用sqlite3 命令行打开文件进行查看。在加密后,再次用sqlite3 打开则有“File is not adatabase”的提示不能查阅。此实验表明了本系统对sqlite 数据库加密有效。
下面将通过3 种标准进行评估:加密时间,存储空间和雪崩效应。为展示轻量化AES 性能,实验还加入了标准AES 和3DES 算法进行对比。表4 展示了5 条十六进制密文的示例。
表4 十六进制密文示例Table 4 Example of hexadecimal ciphertext
3.1 加密时间
利用时间函数对3 种算法的加密时间进行测试研究。在SQLite 中插入不同大小的信息,测试不同条件下加密算法的加密时间。表5 展示了加密相同SQLite 文件所花费的时间,轻量化AES 比标准AES 快约8%,比3DES 快约17%。因为轻量化AES具有比标准AES 更快捷的字节替换阶段,比3DES迭代轮数更少。经实验证明,轻量化AES 在加密速度上表现优于另两种方法。
表5 加密时间测试Table 5 Encryption time test
3.2 存储空间
对3 种算法进行内存占用统计,结果如表6 所示。轻量化AES 比标准AES 小17.8%,比3DES 小约27%。因为加密算法的工作取决于S 盒和逆S盒,轻量化AES 具有比标准AES 和3DES 更小的S盒。标准S 盒由8 个小S 盒(4x16)组成,而轻量化S盒由2x16 组成。经统计,轻量化AES 在内存占用上表现优于另两种方法
表6 内存测试Table 6 Memory test
3.3 雪崩效应
雪崩效应是加密算法的一种理想扩散属性,是指当密码发生微小改变时,导致输出的不可区分性改变。雪崩效应可以通过式(3)计算
雪崩效应=密文反转字节数/密文总字节数(3)
每个输入消息的大小由16 个字符组成,代表一个块,更改是在明文块和密文块之间进行的。通过在密文中使用几个翻转位来计算表4 中的示例得。
由表7 可得,AES 在雪崩效应上优于3DES,轻量化AES 略优于标准AES。这意味轻量化AES 获得更安全的加密SQLite 文件,不会轻易受到攻击者的攻击。轻量化AES 算法实现了较优的数据扩散,即理论安全性。
表7 雪崩效应Table 7 Avalanche effects
4 结论
武器平台上的诸多嵌入式设备计算能力有限,储存狭小。本文针对这一特点对AES 加密算法进行轻量化改进,并将其应用在嵌入式SQLite 中。所提出的算法通过修改加密过程中的两个阶段:字节代替和行移位来修改排列和加密时间,同时将迭代次数缩短至4 轮。经测试,轻量化AES 比标准AES 快8%,比3DES 快17%,内存占用比标准AES 轻17.8%,比3DES 轻27%,雪崩效应略优于另两种算法。轻量化AES 在SQLite 中的性能表现良好,达到了预期研究目标。