2. 中国航空工业集团公司 西安航空计算技术研究所, 西安 710068;
3. 西安电子科技大学 通信工程学院, 西安 710071
2. Xi'an Aeronautical Computing Technique Research Institute, Aviation Industry Corporation of China, Xi'an Shaanxi 710068, China;
3. School of Telecommunications Engineering, Xidian University, Xi'an Shaanxi 710072, China
近年来随着科学技术突飞猛进的发展,传统的密码软件使用环境越来越不安全,有的地方密码软件的加解密过程对于攻击者来说(有可能是用户本身)是完全可见的,他们很容易就可以获得密钥。同样,在竞争领域异常激烈的军用密码软件中也存在这样的问题。有可能敌方间谍在使用我方密码软件时很容易获取我方密钥或者对这些软件内部进行更改、观测,这都是我方的损失。任务规划系统是航空领域的重要系统,一旦我国与敌国处于战争状态,任务规划系统的安全管理软件的执行环境就有可能面临这样的环境,使我方的密钥被敌方抽取,导致航空任务无法完成或被敌方探明。
这种对运行终端非常直接的攻击方法叫作白盒攻击,由Chow等于2002年在文献[1]中提出。他们认为在白盒攻击环境(White-Box Attack Context,WBAC)中,密码分析者对密码终端软件拥有完全的控制能力,与密码软件的执行者拥有同等的权利,攻击者可以对程序进行二进制追踪,读取其内存中的密钥,观察程序执行的中间结果,并且可以对程序进行任意的静态分析以及改变子计算结果,即攻击者可以在终端做任何操作。相比传统的黑盒模型,对攻击者的能力只有很少的限制,这个环境很适合情况复杂多变的战场环境。
在2002年Chow等[1]提出白盒攻击环境同时,也提出了白盒密码实例——白盒AES(Advanced Encryption Standard),通过构造查找表的形式将AES分解为小的模块,再通过混淆变换将其混淆。但在2004年,Billet、Gilbert和Ech-Chatbi提出了BGE的攻击[2],是一种非常有效的针对白盒AES的攻击方法。他们选择某些特定的查找表合并成一个可以用输入输出表示的函数,并使用代数的方法去掉其中的非线性部分,从而能成功提取出隐藏在T-Box中的密钥。在这以后,Chow白盒AES的两个改进方案,即Karroumi[3]提出的基于对偶AES密钥的方案与文献[4]中的Xiao-Lai改进方案被提出,其中Xiao-Lai改进方案已经被De Mulder等在2012年攻破[5],而Karroumi[3]提出的基于对偶AES密钥的方案目前还没有攻破。
任务规划系统的原理是利用先进的计算机技术,根据任务需求,从多渠道采集作战需要的各种情报信息,分析战场威胁环境,为任务规划人员制作并提供威胁分布、突防路径评估、数字地形、油量计算、气象、机载武器性能等决策依据,为地面指挥员和作战飞机机组人员制定作战飞机出航航线和返航航线,调度空中作战机群协同攻击计划和时间控制节点,确定武器载荷和武器发射或投掷的时间节点和地点,评估作战效能和出航损伤率,以实现对敌方地面目标的精确打击和低损伤率,是航空兵对地作战指挥系统的核心组成部分。任务规划系统的安全管理软件负责任务规划系统的信息安全。本文基于Karroumi[3]修改的Chow白盒AES来构造在白盒攻击环境下安全的任务规划系统。
1 任务规划系统安全图 1为任务规划系统整体框图。安全管理软件为图中安全服务组件,为整个系统提供信息安全服务;最上层为各种应用,通过调用各个组件的接口来获得相应的服务;数据通过最下层的中间件与外部系统进行交换。
整个系统采用C/S结构,客户端以对等实体的关系挂接在网络上,同时挂接在网络上的还有认证服务器、数据库服务器、证书授权(Certificate Authority, CA)中心和配置管理服务器。客户端使用USB Key,负责客户端的数字签名和加解密,也是用户数字证书和私钥的载体。客户端可以使用系统提供的文件访问、文件交互以及数据库访问服务,各个功能由相应的安全控制机制来保证操作与数据的安全性。
安全架构从功能的角度来分层如图 2所示,最下层为整个系统的最基本的安全支撑——CA中心。往上一层为登录认证,系统的功能都需要在完成登录认证的基础上才能使用。再上一层为系统的安全访问控制,成功登录的用户所执行的操作都需要经过访问控制组件的检查,只有满足安全策略的操作才能执行。在访问控制之上为系统的四类操作:数据库操作、消息传输、文件访问和文件交互。其中,消息传输和文件访问需要用到数据安全传输;文件交互操作分为文件在本地和不在本地两种情况,若在本地则直接发送给外域用户,否则需要通过文件访问从文件服务器获取后再发送给外域用户。
为了保证系统中通信数据的安全性,需要对数据传输进行保护,数据安全传输组件结合数据保护服务、安全协议组和动态安全参数管理三者来实现保护数据包安全和为抵御网络攻击提供防护措施这两个目标,不仅能为通信提供强有力且灵活的保护,而且还能用来筛选特定数据流。数据安全传输组件基于一种端对端的安全模式。
数据安全传输是保护整个安全访问中所有用户通信安全的。它分为发送端和接收端,为应用调用提供的接口,对数据进行相应处理后发送给接收端。数据安全传输是由图 1中的安全服务组件实现的。
数据安全传输协议首先从系统消息中解析出消息类型,然后对应消息类型从客户端独立线程中取得安全参数对应用数据进行保护,同时在数据封装上增加相应附加信息。
这里所描述的数据安全传输包括发送设计、接收设计、报文设计、加解密设计、哈希校验设计和错误码设计。如图 3所示为数据安全传输运行流程。
驱动程序获得系统消息后,解析相应字段,得到消息类型、接收方信息、安全参数标记等信息。
在解析出相应信息后发送端驱动程序执行以下步骤:1) 从客户端独立线程处获得安全参数;2) 保护应用数据;3) 根据数据封装格式封装数据;4) 将封装好的数据发送出去。
接收端驱动程序执行以下步骤:1) 通过解析接收数据头获取消息类型等信息;2) 按照该信息从客户端独立线程处获取安全参数;3) 使用获取的安全参数还原数据;4) 将数据递交给接收应用程序。
加密完成后的数据封装格式如图 4所示。其中:消息长度表示整个数据包的长度;消息类型表示是否需要加密;密钥标识用来从密钥中心获取密钥;接收端消息指真正的接收用户具体信息;序列号表示1~32位递增的数值,唯一地标识了数据包;可变长数据指加了密的密文;哈希认证结果表示前面的数据运用哈希函数作用之后得到的哈希值。
白盒攻击环境(WBAC)是这样的一种攻击环境:
1) 完全授权的攻击软件和密码软件分享一台主机,攻击者完全接触算法的应用;
2) 动态的执行(例如密钥)能被观察;
3) 内部算法细节完全可见,并且任意选择。
置乱编码的定义:X为一个m到n的转换,选择m比特双射F和n比特双射G称X=GºXºF-1为一个X的编码版本。其中:F是输入编码,G是输出编码。
函数分解:将大的双射表分解为小的双射表的组合,考虑Fi的大小为ni,这里n1+n2+…+nk=n,用‖来表示向量合成。函数分解F1‖F2‖…‖Fk是双射F使得
$\begin{align} & \mathit{\boldsymbol{F}}(b)={{\mathit{\boldsymbol{F}}}_{1}}({{b}_{1}},{{b}_{2}},\cdots ,{{b}_{{{n}_{1}}}})|| \\ & {{\mathit{\boldsymbol{F}}}_{2}}({{b}_{{{n}_{1}}+1}},{{b}_{{{n}_{1}}+2}},\cdots ,{{b}_{{{n}_{1}}+{{n}_{2}}}})||\cdots || \\ & {{\mathit{\boldsymbol{F}}}_{k}}({{b}_{{{n}_{1}}+...+{{n}_{k-1}}+1}},{{b}_{{{n}_{1}}+...+{{n}_{k-1}}+2}},\cdots ,{{b}_{n}}) \\ \end{align}$ |
对于任意的n比特向量有b=(b1,b2,…,bn),显然,有F-1=F1-1‖F2-1‖…‖Fk-1。
YºX的网络编码(即变换X执行之后执行变换Y)是一个编码形式:
$\begin{align} & \mathit{\boldsymbol{X}}'\circ \mathit{\boldsymbol{Y}}'=(\mathit{\boldsymbol{H}}\circ \mathit{\boldsymbol{Y}}\circ {{\mathit{\boldsymbol{G}}}^{-1}})\circ (\mathit{\boldsymbol{G}}\circ \mathit{\boldsymbol{X}}\circ {{\mathit{\boldsymbol{F}}}^{-1}})= \\ & \mathit{\boldsymbol{H}}\circ (\mathit{\boldsymbol{Y}}\circ \mathit{\boldsymbol{X}})\circ {{\mathit{\boldsymbol{F}}}^{-1}} \\ \end{align}$ |
注意到双射F、G、H被隐藏了。
3.2 白盒AES的主要设计方法白盒AES的设计思路是:首先利用矩阵乘法规则将AES的每一轮拆分成一个个小的矩阵,将密钥嵌入到拆分后的矩阵中;然后对每个矩阵的两边乘上置乱矩阵;最后将这些矩阵用查找表的形式表示。在白盒攻击环境中,攻击者最终看到的是乘上置乱矩阵之后的查找表,由于置乱矩阵对攻击者是未知的,所以他无法从中得知有用的信息。
典型的AES由10轮组成,每一轮包括4个部分:SubBytes、ShiftRows、MixColumns和AddRoundKey。在第一轮运行之前先做一个AddRoundKey,而最后一轮没有MixColumns。
白盒AES将AddRoundKey和SubBytes结合起来作为一个T函数,为8 bit输入8 bit输出,具体定义如下:
$\mathit{\boldsymbol{T}}_{i,j}^{r}=\text{S}(\mathit{\boldsymbol{x}}+\mathit{\boldsymbol{K}}_{i,j}^{r-1});i,j=0,1,2,3;r=[1,\cdots ,9]$ | (1) |
$\mathit{\boldsymbol{T}}_{i,j}^{10}=\text{S}(\mathit{\boldsymbol{x}}+\mathit{\boldsymbol{K}}_{i,j}^{9})+\mathit{\boldsymbol{K}}_{sr(i,j)}^{10};i,j=1,2,3$ | (2) |
其中:S()是AES的S盒;Ki,jr是AES在r轮位置i,j的密钥;sr(i,j)表示在ShiftRow之后在i,j处新的位置;+表示比特异或。T盒由SubByte和前一轮的AddRoundKey组成。
紧接着进行MicCloums变换,为避免大的查找表,这时要用到函数分解的思想,利用矩阵分块把列混合矩阵MC分解为四块小矩阵;
$\mathit{\boldsymbol{MC}}=(\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{1}},\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{2}},\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{3}},\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{4}})$ |
然后再与T变换之后的输出作用,具体见下式:
$\begin{align} & (\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{1}},\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{2}},\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{3}},\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{4}})\times \\ & {{[\mathit{\boldsymbol{T}}_{i,0}^{r}({{x}_{0}})\ \quad \mathit{\boldsymbol{T}}_{i,1}^{r}({{x}_{1}})\ \quad \mathit{\boldsymbol{T}}_{i,2}^{r}({{x}_{2}})\ \quad \mathit{\boldsymbol{T}}_{i,3}^{r}({{x}_{3}})]}^{\text{T}}}= \\ & \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{1}}\times \mathit{\boldsymbol{T}}_{i,0}^{r}({{x}_{0}})+\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{2}}\times \mathit{\boldsymbol{T}}_{i,2}^{r}({{x}_{2}})+ \\ & \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{3}}\times \mathit{\boldsymbol{T}}_{i,3}^{r}({{x}_{3}})+\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{4}}\times \mathit{\boldsymbol{T}}_{i,4}^{r}({{x}_{4}}) \\ \end{align}$ |
其中MCi×Ti,jr(xj)作为查找表二型表,根据置换混淆原则在两边同时插入混合双射mbi,jr和MBi得到:
$\mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{B}}}_{i}}\times \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{i}}\times \mathit{\boldsymbol{T}}_{i,j}^{r}\times \mathit{\boldsymbol{mb}}_{i,j}^{r}({{x}_{i}})$ |
此即为置乱编码后的二型表,为8 bit输入32 bit输出表,如图 5所示。
接下来制作三型表。三型表要与前面的二型表相结合,根据网路编码原则需要消掉前面的混合双射MBi,又要与下一轮的混合双射mbi抵消,所以三型表如下所示:
${{(\mathit{\boldsymbol{mb}}_{i,j}^{r+1})}^{-1}}\times \mathit{\boldsymbol{MB}}_{i}^{-1}$ |
为8 bit输入32 bit输出表。
接下来是四型表。因为在AES中的矩阵有加法操作,但白盒AES中只有各种各样的查找表,所以要将矩阵的加法用查找表的形式表示出来。以上三种类型的查找表都是矩阵的乘法形式转换成的,所以在此应该对矩阵的加法做查找表。查找表的做法是:其中一侧是输入,是两个4 bit的列向量;另一侧是输出,是两个输入的和。如图 6所示。
一型表是对整个算法进行混淆并且对第一轮的混合双射mb1和最后一轮的mb10进行消除,为一个8 bit输入128 bit输出。
3.3 BGE攻击BGE的主要思想是通过对单个查找表观察来回复密钥是困难的,但是通过组合查找表为一轮来分析,恢复密钥信息是比较容易的。
他们将白盒AES的二型表和三型表结合起来考虑:
$\begin{align} & {{(\mathit{\boldsymbol{m}}{{\mathit{\boldsymbol{b}}}^{r+1}})}^{-1}}\times \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{B}}}^{-1}}\times \mathit{\boldsymbol{MB}}\times \mathit{\boldsymbol{MC}}\times \\ & {{[\mathit{\boldsymbol{T}}_{i,0}^{r}\quad \mathit{\boldsymbol{T}}_{i,1}^{r}\quad \mathit{\boldsymbol{T}}_{i,2}^{r}\quad \mathit{\boldsymbol{T}}_{i,3}^{r}]}^{\text{T}}}\times \mathit{\boldsymbol{m}}{{\mathit{\boldsymbol{b}}}^{r}}\times {{[{{x}_{0}}\quad {{x}_{1}}\quad {{x}_{2}}\quad {{x}_{3}}]}^{\text{T}}}= \\ & {{(\mathit{\boldsymbol{m}}{{\mathit{\boldsymbol{b}}}^{r}})}^{-1}}\times \mathit{\boldsymbol{MC}}\times {{[\mathit{\boldsymbol{T}}_{i,0}^{r}\quad \mathit{\boldsymbol{T}}_{i,1}^{r}\quad \mathit{\boldsymbol{T}}_{i,2}^{r}\quad \mathit{\boldsymbol{T}}_{i,3}^{r}]}^{\text{T}}}\times \mathit{\boldsymbol{mb}}\times \\ & {{[{{x}_{0}}\quad {{x}_{1}}\quad {{x}_{2}}\quad {{x}_{3}}]}^{\text{T}}}= \\ & \text{diag}({{(\mathit{\boldsymbol{mb}}_{0}^{r+1})}^{-1}},{{(\mathit{\boldsymbol{mb}}_{1}^{r+1})}^{-1}},{{(\mathit{\boldsymbol{mb}}_{2}^{r+1})}^{-1}},{{(\mathit{\boldsymbol{mb}}_{3}^{r+1})}^{-1}})\times \\ & \mathit{\boldsymbol{MC}}\times {{[\mathit{\boldsymbol{T}}_{i,0}^{r}\quad \mathit{\boldsymbol{T}}_{i,1}^{r}\quad \mathit{\boldsymbol{T}}_{i,2}^{r}\quad \mathit{\boldsymbol{T}}_{i,3}^{r}]}^{\text{T}}}\times \\ & \text{diag}(\mathit{\boldsymbol{mb}}_{0}^{r},\mathit{\boldsymbol{mb}}_{1}^{r},\mathit{\boldsymbol{mb}}_{2}^{r},\mathit{\boldsymbol{mb}}_{3}^{r})\times {{[{{x}_{0}}\quad {{x}_{1}}\quad {{x}_{2}}\quad {{x}_{3}}]}^{\text{T}}} \\ \end{align}$ |
结合之后MB消除掉了,只剩下混合双射(mbr)-1和mbr。令Pir=mbir,Qir=(mbir+1)-1,它们可以看成是输入输出置乱编码,如图 7所示。
攻击的主要步骤如下:1) 把非仿射变换P、Q转变为仿射映射;2) 计算出仿射映射Q;3) 由P、Q计算出隐藏在T盒中的密钥。具体过程见参考文献[2],这里不再详细叙述。
3.4 白盒AES的修改Karroumi[3]对Chow的白盒AES进行了修改。
AES是基于有限域GF(28)上的简单的代数结构,如果改变AES的所有常量,包括不可约多项式、矩阵参数、仿射变换,就构造出新的对偶密码。在文献[8]中有240个新的AES对偶密码被构造,在文献[10]中被扩展到了61 200个。
AES和对偶AES的输出是有关系的。存在一个线性变换Δ将AES的比特状态映射到对偶AES的比特状态,即X对偶=Δ(X),相同的变换还有P对偶=Δ(P),C对偶=Δ(C),K对偶=Δ(K)。
每个对偶AES代表都被分配一个从1到61 200的索引,随机选择10个不重复的σr∈R{1,2,…,61 200}(r=1,2,…,10) 。定义Δσr:GF(28)→GF(28)为一个线性映射,将AES的一个字节状态映射到σr对偶映射。Δσr能被表示为一个GF(2) 上的8×8的可逆矩阵Mr,Δσr-1也可以由Mr的逆获得。
字节替换操作为一个代数结构:
$IS:GF\left( {{2}^{8}} \right)\to GF\left( {{2}^{8}} \right),\mathit{\boldsymbol{x}}\to \mathit{\boldsymbol{Ax}}+\mathit{\boldsymbol{b}}$ |
这里A是一个矩阵变换,b是一个常向量。对偶变换变为ISσr(x)=(Mr×A×Mr-1)×x+Mr×b,对偶子密钥为Ki,jσr=Mr×Ki,j。则新的第r轮Tσr盒为:
$\begin{align} & \mathit{\boldsymbol{T}}_{i,j}^{{{\text{ }\!\!\sigma\!\!\text{ }}_{1}}}\triangleq \mathit{\boldsymbol{I}}{{\mathit{\boldsymbol{S}}}^{{{\text{ }\!\!\sigma\!\!\text{ }}_{r}}}}\left( \mathit{\boldsymbol{x}}\oplus \mathit{\boldsymbol{K}}_{i,j}^{'0} \right)\oplus \mathit{\boldsymbol{K}}_{i,j}^{{{\text{ }\!\!\sigma\!\!\text{ }}_{1}}};i,j\in \left[ 0,1,2,3 \right] \\ & \mathit{\boldsymbol{T}}_{i,j}^{{{\text{ }\!\!\sigma\!\!\text{ }}_{\text{r}}}}\triangleq \mathit{\boldsymbol{I}}{{\mathit{\boldsymbol{S}}}^{{{\text{ }\!\!\sigma\!\!\text{ }}_{r}}}}\left( \mathit{\boldsymbol{x}} \right)\oplus \mathit{\boldsymbol{K}}_{i,j}^{{{\text{ }\!\!\sigma\!\!\text{ }}_{r}}}\text{;} \\ & r\in \left[ 2,\cdots ,10 \right],i,j\in \left[ 0,1,2,3 \right] \\ \end{align}$ |
其中对于i∈{1,2,…,10},K′i,j0=Δσ1(Ki,jσr),K′i,jσr=Δσ1(Ki,jσr)。
在这里用与混合双射相同的原则,即用矩阵左乘输入向量,来达到混淆向量的目的。Karroumi[3]的想法是将Δ-编码应用到混合双射当中,用Δr×Δr-1-1来表示上一轮的输出Δ-编码和当前轮的输入Δ-编码与混合双射Pi,jr相结合,如图 8所示。
任务规划系统对于航空任务的完成至关重要,因此敌手会用尽其所能的手段来攻击它,包括在我方安插卧底来了解我方任务规划系统的具体实施流程,或通过越来越先进的手段比如恶意主机攻击、旁信道攻击[6]等攻击手段来攻击我方软件。在面临这种攻击时,任务规划系统的安全传输的具体执行情况将完全暴露在敌手的眼前,让他们轻而易举地抽取出密钥,这就是Chow提到的白盒攻击环境。所以本文必须想一个办法来对付这样的情况,即应用白盒加密系统来改善。
由于白盒AES是把密钥嵌入到加解密算法里面,生成一些查找表,在加密解密过程中,通过查找表来生成相应的密文和明文。所以可以设计一个专门用来生成查找表的驱动程序来不断构造查找表,或者可以生成固定查找表嵌入到传输程序当中。由于驱动程序在生成查找表时会用到密钥,所以驱动程序生成AES查找表的过程应在安全的地方进行。
本文设计了一种可以抵抗白盒攻击环境的安全传输方法。首先在飞机基地用不同类型的密钥通过驱动程序生成不同的查找表,加密时可以根据需要选择查找表来进行加密。在安全传输中加入一个生成白盒AES的驱动程序,用来根据系统消息的报头来选用相应的白盒AES。运行流程如图 9所示。
这样,通过生成Karroumi[3]改进的AES查找表来设计白盒安全传输应用给发送接口传递消息类型、数据、数据长度和用户信息四个参数。接口根据消息类型判断是否需要加密,如果需要,则驱动程序在客户端独立线程获得安全参数,生成加密AES查找表。消息数据输入到改进的白盒AES,然后将输出的数据封装成如图 4所示的报文,最后将报文利用飞机上的通信协议发送出去。
驱动程序的设计如下:
1) 从客户端独立线程中取出安全参数作为密钥,通过密钥扩展函数将其扩展为10组子密钥。下面以利用128位的密钥制作二型表为例来说明查找表的制作过程。128位的密钥为3C A1 0B 21 57 F0 19 16 90 2E 13 80 AC C1 07 BD,通过密钥扩展算法[7]得出第一轮的子密钥为45 64 71 B0 12 94 68 A6 82 BA 7B 26 2E 7B 7C 9B。
2) 按照3.2节所述进行制表。将子密钥排成一个矩阵
经过列混合即左乘以
$\begin{align} & \mathit{\boldsymbol{MC}}\times \text{S}(\mathit{\boldsymbol{P}}(1)+\mathit{\boldsymbol{K}})= \\ & \left[ \begin{matrix} 02 & 03 & 01 & 01 \\ 01 & 02 & 03 & 01 \\ 01 & 01 & 02 & 03 \\ 03 & 01 & 01 & 02 \\ \end{matrix} \right]\times \left[ \begin{matrix} \text{C7} \\ \text{BE} \\ \text{46} \\ \text{FF} \\ \end{matrix} \right]= \\ & \left( \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{1}}\quad \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{2}}\quad \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{3}}\quad \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{4}} \right)\times {{[\text{C7}\quad \text{BE}\quad \text{46}\quad \text{FF}]}^{\text{T}}}= \\ & \text{C7}\times \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{1}}\oplus \text{BE}\times \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{2}}\oplus 46\times \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{3}}\oplus \text{FF}\oplus \mathit{\boldsymbol{M}}{{\mathit{\boldsymbol{C}}}_{4}}= \\ & \left[ \begin{matrix} \text{95} \\ \text{C7} \\ \text{C7} \\ \text{52} \\ \end{matrix} \right]\oplus \left[ \begin{matrix} \text{D9} \\ \text{67} \\ \text{BE} \\ \text{BE} \\ \end{matrix} \right]\oplus \left[ \begin{matrix} \text{46} \\ \text{CA} \\ \text{8C} \\ \text{46} \\ \end{matrix} \right]\oplus \left[ \begin{matrix} \text{FF} \\ \text{FF} \\ \text{18} \\ \text{E5} \\ \end{matrix} \right]=\left[ \begin{matrix} \text{F5} \\ 95 \\ \text{ED} \\ 4\text{F} \\ \end{matrix} \right] \\ \end{align}$ |
即明文[01]经过上述混合双射后变换后为[95 C7 C7 52]T,在经过混合双射[1]和对偶变换[8]后即为修改后的二型表为(01)→Δ1×mb1×[95 C7 C7 52]T×MB1为一个P:28→232的映射,将其输入穷举后也就是256个输入得到256个输出,将这个对应制成查找表如表 1。
表 1所占用的内存空间为29=512 Byte,白盒AES一轮需要16个这样的表,总共10轮,所以占用的总内存空间为160×512=81 920字节。接下来的一、三、四型表按照同样的思路制作,最后得出整个白盒AES查找表,其需要内存770 048 MB[1]。
3) 将查找表按照AES执行顺序进行整理排列,然后将其嵌入到内存当中。以后的加密解密就通过查找表的方式进行,加密完成后,驱动程序将加密AES查找表从内存中擦除。
4) 接收端收到消息,并根据报头查看消息是否加密。
5) 如果加密,则驱动程序去获得安全参数库里的安全参数,生成解密AES查找表,加密消息通过查找对应的查找表获得相应的明文
程序运行过程的异常处理方式如下:
1) 建立连接失败,尝试三次仍然失败,返回错误码给应用;
2) 发送数据失败,尝试三次仍然失败,返回错误码给应用。
5 方法安全性评估本文设计的安全性依赖于白盒AES的安全性,其中由Chow等[1]设计的白盒AES可以被BGE算法[2]在230攻破,而Karroumi等[3]利用对偶密码来改造白盒AES,目前暂时未被破解。
在改进的白盒AES中,用到的对偶密码有61 200个。这61 200个对偶密码中的每一个都可以作用到二型表的改进当中。由于白盒AES每一轮中有四个二型表,每一个二型表都可以与61 200个对偶密码中的一个来作用,则可以有642 0004≈263种可能。在白盒攻击环境中,攻击者只能看到输入与对应的输出,无法了解使用的哪一种对偶密码进行作用,只能用穷举的方法,这就使得攻击复杂度有原来的4×225=227增加到了4×225×263=290。这种改进使得攻击复杂度大大提高,保证了白盒AES的安全可靠。
对于本文设计的新的安全传输方法,由于生成白盒AES是在飞机基地事先秘密完成,而白盒AES在使用过程中被攻破的复杂度很大,所以整个安全传输方法在白盒攻击环境下是安全的。
6 结语本文介绍了白盒攻击环境下任务规划系统的安全传输方法。首先,对传统的高级加密标准白盒化,使其可以抵抗白盒攻击;其次,按照给出的白盒AES生成算法,利用不同的密钥生成不同的白盒AES程序;最后,将相应的白盒AES程序嵌入到任务规划系统的安全传输当中。经过理论分析,修改后的任务规划系统中的安全传输方法提高了攻击难度,达到足够的安全强度,可以保护通信密钥。
[1] | CHOW S, EISEN P, JOHNSON H, et al. White-box cryptography and an AES implementation[C]//SAC 2002:Proceedings of the 9th Annual International Workshop on Selected Areas in Cryptography, LNCS 2595. Berlin:Springer-Verlag, 2003:257-270. |
[2] | BILLET O, GILBERT H, ECH-CHATBI C. Crytanalysis of a white-box AES implementation[C]//SAC 2004:Proceedings of the 11th Annual International Workshop on Selected Areas in Cryptography, LNCS 3357. Berlin:Springer-Verlag, 2005:227-240. |
[3] | KARROUMI M. Protecting white-box AES with dual ciphers[C]//ICISC 2010:Proceedings of the 13th International Conference on Information Security and Cryptology, LNCS 6829. Berlin:Springer-Verlag, 2011:278-291. |
[4] | XIAO Y, LAI X. A secure implementation of white-box AES[C]//CSA 2009:Proceedings of the 2nd International Conference on Computer Science and its Applocations. Piscataway, NJ:IEEE, 2009:410-415. |
[5] | DE MULDER Y, ROELSE P, PRENEEL B. Cryptanalysis of the Xiao-Lai White-Box AES implementation[C]//SAC 2012:Proceedings of the 19th International Conference on Selected Areas in Cryptography, LNCS 7707. Berlin:Springer-Verlag, 2012:34-49. |
[6] | 张效强, 王峰, 高开明. 基于加密算法的数据安全传输的研究与设计[J]. 计算机与数字工程, 2008, 36 (5) : 107-109. ( ZHANG X Q, WANG F, GAO K M. Research and design for secure transmission of data based on encrypt algorithms[J]. Computer and Digital Engineering, 2008, 36 (5) : 107-109. ) |
[7] | National Institute of Standards and Technology. Advanced Encryption Standard (AES) (FIPS PUB 197)[S/OL]. Federal Information Processing Standards Publication, 2001(2001-11-06)[2016-03-06]. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf. |
[8] | BARKAN E, BIHAM E. In how many ways can you write Rijndael[C]//ASIACRYPT 2002:Proceedings of the 2002 International Conference on the Theory and Application of Cryptology and Information, LNCS 2501. Berlin:Springer-Verlag, 2002:160-175. |
[9] | KOCHER P C. Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems[C]//CRYPTO 1996:Proceedings of the 16th Annual International Cryptology Conference, LNCS 1109. Berlin:Springer-Verlag, 1996:104-113. |
[10] | BIRYUKOV A, DE CANNIÈRE C, BREAKEN A, et al. A toolbox for cryptanalysis:linear and affine equivalence algorithms[C]//EUROCRYPT 2003:Proceedings of the 2003 International Conference on the Theory and Applications of Cryptographic Techniques, LNCS 2656. Berlin:Springer-Verlag, 2003:33-50. |