基于SM 4算法的白盒密码视频数据共享系统
2020-11-07吴震白健李大双李斌曾兵张正强
吴震,白健,李大双,李斌,2,曾兵,2,张正强,2
(1.中国电子科技网络信息安全有限公司,成都 6 1 0 0 4 1; 2.成都三零凯天通信实业有限公司,成都 610041;3.中国电子科技第三十研究所,成都 610041)
在公共视频监控领域的纵向多级网络中,存储有海量视频数据,根据数据的敏感程度,一部分数据需要加密存储,一部分数据是明文存储,但均存在跨级或跨域共享需求。对于加密数据,由于受限于密钥管理系统的跨域访问限制及解密密钥的安全传输问题,需要先解密成明文后,才能共享。为保证原有加密或非密数据的共享安全,需要采用密码算法对跨级跨域共享数据进行完整性、机密性保护。传统密码学中,密码算法的设计都是建立在黑盒模型基础上的:假设密码算法的运行环境是安全的,攻击者只能访问算法的输入和输出,不能观察代码执行及动态加解密的过程,保障数据安全的关键是保护好密钥。
密码算法的实现主要有硬件和软件2种方式。采用硬件方式需使用嵌入了密码芯片的专用存储介质,密钥经保护后存储在芯片中,安全性高,在《公共安全视频监控联网信息安全技术要求》(GB 35114—2017)[1]中,对加密视频的导出及共享推荐使用这种方式,但该方法存在使用成本高、通用性较差等问题。采用软件方式共享快捷方便,但在软件加解密过程中,密钥将会出现在算法运行平台的内存中,由于不能确保密码算法软件运行环境的安全可信,攻击者可能使用静态分析工具、调试器、直接读取内存中的数据等方法找出密钥[2],数据安全性得不到保障,也无法抵御近年来提出的时间分析、功耗分析、插入错误分析等旁路攻击[3-6]。
对于这种不可靠的密码算法运行环境,2002年,Chow等[7]将其命名为白盒攻击环境(White-Box Attack Context,WBAC),其描述如下:①在同一主机中,可以同时运行加密软件与拥有特殊权限的攻击软件,并且对密码算法在主机中的运行过程拥有完全的控制权;②主机中程序的动态执行过程可以被监视;③密码算法的实现原理及执行过程是可见的,并且可被任意修改。
白盒攻击环境也可理解为白盒攻击模型,与黑盒攻击模型相比,白盒攻击模型可以认为是最坏的模型,然而其也是现今信息技术迅速发展很适用的模型,用于分析在不可信环境下运行的密码算法。为了保证密码算法在不可信的终端运行而不受到威胁,科研人员设计了在白盒攻击环境下能够确保安全性的密码算法,该密码算法被称为白盒密码算法,其目的就是为了应对白盒攻击环境,将密钥信息隐藏在密码算法中,防止密钥被攻击者获取。因此,研究安全高效的白盒密码算法具有非常重要的意义。
目前,对白盒密码算法的研究分为2种技术路线:①基于已有白盒密码算法,利用混淆、扰乱等白盒密码技术进行设计,在不改变原算法功能的前提下,保障算法在白盒攻击环境下的安全性;②研究一种全新的白盒密码算法,直接可以抵抗白盒攻击[8]。Chow等[7]在提出白盒攻击环境的同时,通过将若干步骤组合起来所构成的函数用查找表来表示(即遍历函数的输入,存储函数的输出值构成查找表,从而可隐藏该函数的内部信息),将密钥嵌入到查找表并使用随机双射来保护查找表[9],开创性地构造了首个白盒AES方案及 首 个 白 盒 DES方 案[10]。2009 年,Xiao和Lai[11]提出了SMS4白盒实现算法,使用查找表和仿射变换相结合的方式,从白盒多样性和白盒含混度的角度来看,该方案达到了应用所需的安全性,也针对Billet等[12]提出的攻击方法说明了该方案的安全性。
本文基于国家密码管理局颁布的SM4算法设计白盒密码算法。SM4(原SMS4)密码算法于2006年由国家密码管理办公室正式发布,是一种对称加密算法,2012年成为密码行业标准GM/T 0002—2012[13],并于2016年成为国家标准GB/T 32907—2016[14],在2017年颁布的《公共安全视频监控联网信息安全技术要求》(GB 35114—2017)[1]中,也将其采纳为用于视频数据加密保护的算法标准。
本文在进行算法设计时,参考了Xiao和Lai[11]提出的白盒算法实现思路,运用仿射变换与查找表来保护算法运行的内部信息,重新设计了编码解码流程,并引入播放口令、设备硬件因子等混淆参数增加算法分析难度。以此为基础进行工程化,研制开发视频数据跨级安全共享软件,并根据系统运行实际效率,对白盒密码算法及共享软件进行多次优化,实现跨级共享数据加解密速率大于1 Gbit/s的目标,减少视频数据共享的加密成本,实现使用软件加密方式的视频数据安全快捷跨域共享。
1 基于SM 4算法的白盒密码算法实现
SM4算法为分组密码算法,算法的分组长度和密钥长度均为128 bit。加密后的密文分组也是128 bit,加密过程为32轮迭代操作及最后1轮输出的反序变换,每一轮的迭代操作称为轮函数[15]。其解密过程类似于加密过程,但是轮密钥使用了与加密轮密钥相反的顺序。SM4算法的整体结构如图1所示。图中:MK为加密密钥,FK为系统参数,CK为固定参数,dk为由MK扩展得到的轮密钥,F为轮函数,F′为密钥扩展函数。
图1 SM 4算法整体结构Fig.1 Overall structure of SM4 algorithm
设计基于SM4算法的白盒密码算法主要需要突破以下要点:
1)可逆S盒变换。S盒变换指按字节进行的代替变换,是作用在状态中每个字节上的一种非线性字节变换。S盒变换又分为可逆S盒变换和不可逆S盒变换2种,本文设计的白盒密码算法的基本部件主要采用可逆S盒变换,以实现不同轮中间查表输出数据的隐藏。
2)仿射变换。仿射变换是平面(空间)的一个可逆变化,由一个非奇异的线性变换和一个平移变换构成。在有限维的情况下,每个仿射变换可以由一个可逆矩阵D和一个向量b给出,对向量x的仿射变换为:y=Dx+b。
在本文的SM4白盒密码算法设计中,使用该方法结合可逆S盒变换实现相邻轮运算过程中的中间数据隐藏,防止攻击者直接获取加解密过程中的中间参数,继而分析破解获得相应的轮密钥,计算获得最终密钥。
根据SM4算法及加解密流程,本文基于查表运算设计了SM4白盒密码算法。该白盒密码算法将SM4算法的每一轮运算分成3个部分,通过将第2部分和第3部分的运算转换为查表运算,并引入混淆参数,从而将原始的轮密钥隐藏进表中,即使攻击者在掌握整个软件之后,使用白盒攻击方法,也无法获得视频数据的加密密钥,有效保护了密钥在算法执行过程中的安全。
算法主要由2个部分组成:白盒密钥表生成模块和基于白盒密钥表的数据加解密模块。
1.1 白盒密钥表生成模块
白盒密钥表生成模块由绑定信息生成算法、随机数生成算法、白盒密钥表构造算法3部分组成,如图2所示。
图2 白盒密钥表生成模块构成Fig.2 White-box key table generation module composition
绑定信息生成算法用于生成白盒密钥表构造算法的初始运行因子,该因子源于视频共享口令及播放设备硬件信息,目的是抵抗共享输出数据被非法浏览及拷贝风险,限制共享视频数据只能在指定播放设备上被知晓共享口令的人解密查看。输入因子必须为256 bit的数据,因此使用绑定信息生成算法将视频共享口令和指定视频播放设备的硬件信息进行融合。设共享口令为Password,设备硬件信息为Hi,使用SM3杂凑算法[16]作为绑定信息生成算法,算法的输入为Password和Hi,算法的输出结果为绑定信息即Password Hi的哈希值。
随机数生成算法主要是生成白盒密钥表构造算法所需要的随机参数信息。需要共享的视频数据使用SM4白盒密码算法进行加密,而共享输出系统需要对视频密文进行解密,因此设计的白盒密码算法为SM4白盒解密算法,对应的白盒密钥表为SM4白盒解密表。随机数生成算法产生SM4白盒解密表所需要的有限域Z2上的420个8×8的可逆矩阵。该算法的输入是随机数种子,输出为Z2上的8×8的可逆矩阵Mi,i=1,2,…,420。
白盒密钥表构造算法根据实际的数据加密密钥生成解密所需的白盒密钥表,主要分为3个部分:①负责通过置换矩阵对输入数据进行混淆;②通过遍历输入,结合轮密钥、置换矩阵、S盒置换进行计算,将轮密钥嵌入表中;③对第②部分输出的结果进行解混淆,如果是最后一轮,则直接输出,否则加入新的混淆数据。
具体步骤如下:
对于第5轮~第32轮,第2类查找表的构建方法如下:
对于第33轮~第36轮,第2类查找表的构建方法如下:
该查找表主要用于隐藏随机产生信息。
1.2 基于白盒密钥表的数据加解密模块
基于白盒密钥表的数据加解密模块中的绑定信息生成算法与白盒密钥表构造算法中的绑定信息生成算法相同。共享视频接收者输入共享口令后,绑定信息生成算法结合播放设备的硬件信息产生绑定信息BI,BI将作为SM4白盒解密算法的输入。白盒加解密算法框架如图3所示。
图3 白盒加解密算法框架Fig.3 White-box encryption and decryption algorithm framework
SM4白盒解密算法的输入为使用SM 4算法加密的密文视频、白盒密钥表和绑定信息BI,输出为明文视频,其是一个36轮的分组迭代算法,每一轮的具体步骤如下:
设第i轮的输入为(xi-1,xi,xi+1,xi+2),其中,xi-1,xi,xi+1,xi+2都为32 bit。
1)利用复 合 线 性 变 换Ai,1,Ai,2,Ai,3分 别 左乘xi,xi+1,xi+2,然后将结果进行异或,即yi=(yi,1,yi,2,yi,3,yi,4)T=Ai,1xi⊕Ai,2xi+1⊕Ai,3xi+3
2)计算yi=(yi,1,yi,2,yi,3,yi,4)T经过第1类查找表SM4Dec变换后的结果,即
3)计 算si=xi-1=(si,1,si,2,si,3,si,4)T和ti=(ti,1,ti,2,ti,3,ti,4)T经 过 第 2 类 查 找 表SM4Dec变换后的结果,即
经过上述3步变换后,第i轮的输出为xi+3=(xi+3,1,xi+3,2,xi+3,3,xi+4,4)
1.3 SM 4白盒密码算法安全性分析
本节主要分析SM4白盒密码算法面对BGE攻击的安全性。BGE是针对Chow等[7]设计的AES白盒算法提出的一种攻击方法。Chow等[7]设计的AES白盒算法每一轮的实现方式为:Outr·AESr·Inr,AESr表示AES第r轮的变换,Inr表示第r轮的输入编码,Outr表示第r轮的输出编码,且Outr=(Inr+1)-1。
BGE攻击的主要思想是:先根据AES白盒算法的查找表把输入编码和输出编码恢复为仿射变换,然后计算出仿射变换的输出编码。每一轮的输出编码和下一轮的输入编码是互逆的,即Outr=(Inr+1)-1,因此除了第1轮,其他输入编码也可以计算出来。此时,攻击者就可以得到AESr,从而得到隐藏着的密钥。Michiels等[17]将其改进为一种通用攻击方法,可以对类似算法的白盒实现进行攻击。
在本文设计的SM4白盒解密算法中,如果将查找表与下一步的线性变换结合起来考虑,将得到如下所示的合成变换,其中Qi与其逆正好相抵消,如图4所示。
图4 合成变换Fig.4 Synthetic transform
假设第1轮的查找表的输入为y=(y1,y2,y3,y4),t=(t1,t2,t3,t4),经过合成变换后的输出为z=(z1,z2,z3,z4)。由于L可以看做是32×32的矩阵,所以可以将L分成16个8×8的子块:
合成变换的输入y=(y1,y2,y3,y4),t=(t1,t2,t3,t4),输出z=(z1,z2,z3,z4)满足如下关系:
将输入y=(y1,0,0,0),t=(0,0,0,0)代入上述关系:
式中:
则
事实上,Aj,r可以看做是8×8的矩阵,常数项cj,r有8个未知项,共有72个未知项。对于一对(zj,zr),将等式zj(y1,0,0,0)=Aj,rzr(y1,0,0,0)⊕cj,r展开可获得8个线性方程,则任取9个不同的y1值,可以组成8个含有9个未知数的方程组(每个方程组有9个方程)。因此,能以低于8×93的时间复杂度求出Aj,r和cj,r。
因 为Aj,r和A′r,j可 以 求 出,而 各 分 块 矩 阵Li,j均已知,因此可记为
2 视频数据共享系统软件设计及实现
视频数据共享系统由基于B/S架构的服务端系统及白盒视频播放器组成,系统提供共享视频文件审批、白盒加密共享数据输出、加密视频解密播放功能。共享视频文件审批完成对视频文件共享业务的审批,并管理审批日志;白盒加密共享数据输出服务将共享的视频文件转换为经SM4白盒算法加密保护的文件,并提供下载功能,实现视频数据的安全输出。共享视频文件审批服务可支持多层组织机构进行协同审批;白盒加密共享数据输出系统的数据加密性能可达到1 Gbit/s。通过对原有视频文件播放器进行改造,集成SM4白盒算法解密模块形成白盒视频文件播放器。
2.1 模块设计
服务端系统由用户身份管理模块、关键参数管理模块、视频安全共享处理模块、输出视频管理模块、商用基本密码处理模块、SM4白盒密码处理模块组成。模块之间的关系如图5所示。1)用户身份管理模块:实现系统用户信息的管理,包括用户注册、用户登录、用户权限管理及用户信息修改。
图5 软件模块关系Fig.5 Software module relationship
2)关键参数管理模块:对用户提交的视频数据的数据加密密钥、视频文件共享口令、硬件因子进行存储及管理。
3)视频安全共享处理模块:对待共享的视频文件进行审批处理,并调用商用基本密码处理模块及SM4白盒密码处理模块提供的接口,实现对共享视频文件的白盒加密处理。
4)商用基本密码处理模块:使用商用密码算法对待共享的加密敏感视频文件进行解密,得到明文视频文件,如待共享的视频文件已经是明文,则直接返回;同时提供SM3算法接口,可实现对口令及硬件设备因子的哈希计算。
5)SM4白盒密码处理模块:结合共享口令和设备硬件因子对明文视频数据使用SM4白盒密码算法加密,输出白盒密文视频文件。
6)输出视频管理模块:对白盒密文视频文件进行存储和管理,并提供文件下载功能。
2.2 软件执行流程设计
2.2.1 视频共享
将待共享的视频文件名、共享者下载需要的口令密码、分享对象的设备硬件因子信息、分享原因等信息上传至服务器,保存至数据库。
2.2.2 视频审核及白盒加密处理
分享者提出视频分享请求后,后台审核数据库会新增一条审核信息,审核者根据分享者提供的信息决定是否通过分享请求,分享请求审核通过后,系统向视频存储服务器请求相应视频文件,如该文件已被加密,则同时向该加密共享文件所属的密钥管理服务器请求解密所需要的密钥数据,如果视频库中没有相应视频文件信息,共享终止。
视频安全共享输出模块获得共享视频文件及密钥数据后,先使用原密钥解密视频文件,再使用SM4白盒密码算法对明文视频数据进行加密处理,生成白盒加密视频文件,以及对应的白盒加密信息表,最后将其打包存放于服务器并生成下载链接。具体流程如图6所示。
图6 视频审核流程Fig.6 Video audit flowchart
2.2.3 视频下载
用户提交正确的口令,从服务器下载已打包的白盒加密共享视频文件。如果用户提供的口令不正确,则不会下载文件。
2.2.4 白盒视频解密播放
用户将下载成功的白盒加密视频文件通过调用白盒解密库(需要输入口令)提供的接口输入,白盒解密库先计算播放端设备硬件因子及口令的哈希值,将其与白盒加密视频文件中保存的值对比,如正确则进行视频解密操作,解密成功后进行播放显示,否则返回口令或硬件因子不匹配的错误信息。
3 实验与性能评估
实验系统由一台视频共享输出服务器,两台访问客户端PC组成。服务器硬件配置CPU:Xeon(R)CPU E5-2630 V4@ 2.20 GHz;硬盘:2 TB;内存:32GB。PC机硬件配置:CPU:Intel(R)Core(TM)i7-4710MQ CPU@2.50GHz,内存:8GB,硬盘:1 TB,硬件设备通过局域网连接。软件环境为:W indows Server 2008 R2 Standard操作系统,Windows 7 SP1操作系统,GoogleChrome浏览器。实验环境连接示意图如图7所示。
实验内容为:视频数据文件共享审核有效性;视频数据共享加密口令及硬件设备因子绑定效果;使用SM4白盒算法对共享视频数据文件加密;被共享者下载经白盒算法加密的共享视频文件;白盒算法加密的共享视频文件安全播放;视频白盒软件数据加密输出速率性能评估及与标准SM4算法加密输出速率的比较。
系统软件安装部署后,默认存在一个系统管理员用户,由管理员在系统内分别创建1个视频共享操作者,一个视频分享对象。视频共享操作者选择需要进行共享的加密视频文件,并填写共享对象的名字、共享文件播放设备的标识信息、共享密码等信息,信息填写完毕后,进行提交。提交成功后,由系统管理员用户进行审核,审核通过后,后台自动执行共享文件的解密及使用SM 4白盒算法进行加密,白盒加密成功后的共享视频文件自动保存在视频共享服务器中。此时,视频分享对象可登录视频共享服务器,查看到共享白盒视频文件列表,输入正确的共享密码后,分享对象下载共享文件,并在指定的共享文件播放设备中使用白盒视频播放器正常进行解密播放。
实验操作流程如图8所示。
图8 视频数据共享系统功能实验操作流程Fig.8 Experimental operation process of video data sharing system function
上述操作流程表明,视频数据共享系统能够使用SM4白盒算法实现加密视频数据文件的共享,经白盒算法处理后的视频共享文件只能在指定硬件设备播放,同时需要输入正确的共享口令,功能符合系统设计。
SM4白盒算法的性能测试:编写脚本,在视频共享服务器端执行64个线程进行数据加密,每个线程加密数据量为16Mbit,即每次传输数据量为64×16Mbit=1Gbit,执行3次。线程执行并输出加密所需的时间,如图9所示。
图9 白盒加密性能测试结果输出Fig.9 White-box encryption performance test result output
根据测试结果,白盒加密算法速率计算如表1所示。
表1 白盒加密算法速率实验值Table 1 Experim ental value of white-box encryp tion algorithm rate
SM4算法的性能测试:编写程序,在视频共享服务器端执行64个线程对数据加密,每个线程加密数据量为16Mbit,即每次传输数据量为64×16Mbit=1 Gbit,执行3次,记录程序执行输出加密时间及加密速率,得到如表2所示SM4加密算法速率实验值。
表2 SM 4加密算法速率实验值Tab le 2 Experim ental value of SM 4 encryp tion algorithm rate
根据表1及表2的性能实验结果可知:
1)与标准SM4算法相比,SM4白盒加密算法的速率有10%左右的降低,主要是生成白盒密钥表增加了时间消耗。
2)本文设计的SM4白盒加密算法速率平均在1Gbit/s以上,性能满足设计要求。
4 结 论
1)本文提出了一种基于SM4的白盒密码算法,实现了对称加密算法执行过程中的密钥隐藏。解决了非信任硬件环境下,软件加解密算法的密钥安全问题,保障了数据的安全性。
2)对本文算法的安全性进行了理论分析,分析结果表明,该算法能够抵御BGE攻击。
3)在算法基础上,设计并实现了基于白盒密码算法的视频数据共享系统,该系统能够实现共享视频文件的上传、审核、白盒加密处理、下载、安全解密播放。
4)通过实验验证了系统的功能及性能。