结合广电系统安全播出的实际需求,探索了多种加密算法,在此基础上设计了多重加密算法——MEA算法。

一、配置信息加密算法的选择

配置信息中数据的加密的粒度一般有文件级(file)、段落级(section)、关键字级(keyword)和数值级(value)四种。对于配置信息的加密而言,加密粒度越小,则适用范围越广。就目前的应用而言,以关键字级和数值级为加密粒度居多。

选择适于配置信息加密的加密算法要满足以下几点要求:

(1)由于配置文件中信息保存的时限相对较长,配置信息加密对加密算法强度的要求足第一位的。

(2)由于应用程序需要频繁提取配置文件中的信息,因此对加密算法的加解密效率的要求较高,不能引起应用程序的性能的大幅下降。

(3)加密后的内容的解密,必须要和实现加密的计算机的特定标识,如MAC或CPU序列号实现绑定,使配置文件不能在另外一台计算机上被解密。

(4)由于时限较长,密钥管理机制需要更加灵活和坚固。

(5)由于配置文件都是和特定系统部署在一台机器上的,因而密文的解密也被限定在该机器上,以确保安全性。因而密文的长度不能和明文长度一致,以增加破译难度。同时对于在该机器上运行的穷举攻击程序的破译具有一定的防护功能。

(6)由于配置信息可能涉及到中文或大量特殊字符,因而加密算法必须要能很好实现对这类字符的加密和解密。

通过以上分析,配置信息加密采用基于对称密钥的多重加密算法比较适宜。由于配置信息的长度具有不确定性,系统的调用又比较频繁。所以多重加密算法的重数不应当多于3次,否则会增加解密的系统开销,降低系统性能。由于DES算法的密钥长度固定,无法扩展,且被多次攻破,安全性不高;AES算法需要128位分组,因而解密的效率比较慢。MD5和SHA都是单向加密算法,没有解密算法,不适合配置信息的加密aBASE64算法的实现比较简单,而且可以处理中文和几乎所有特殊字符。在电子邮件处理中有广泛应用。由于其适用范围广,解密速度快,因而适合被用来作为设计配置信息加密的基础算法。但是由于该算法的加密强度有限,缺乏密钥保护机制,因而需要考虑在该算法加密前和加密后均增加一重基于密钥的加密算法,从而形成适合敏感配置信息加密的新加密算法——多重加密算法 ( Multiple EncryptionAlgorithms,简称MEA算法)。

二、MEA加密算法

1、多重加密算法的参数和运算

MEA算法是以字为基本信息单位实现所有操作和运算的。每个字为p比特,在此算法的第一步取p=8,它是可变的,例如第二步会自动换算为p=6或240MEA算法有双字的明文输入和不确定的密文输出分组大小。

MEA算法有前后两个密钥转换表,分别用S1和S2表示。Sl密钥表用于BASE64转换前,该密钥表只能转换标准的ASCII字符。S1的大小依赖于转换轮次仃和需要加密的字符串中ASCII字符的数量1,S1有v(logu-2)字。BASE64算法后,非ASCII字符也得到了处理,应用了S2密钥表进行了再次转换。

S2的大小依赖于加密字符串的长度Ma S2有(65+26)(65-M%26)字。

2、加密算法介绍

MEA算法的明文输入包含两个字,记为p和正算法用到一个包含v(logcr-2)字前置密钥表,由用户提供的密钥只得到。算法还将依据前一个密钥的产生结果和系统特征值绑定而产生一个有( 65+M/26)(65-Mo-/026)字的后置密钥表S2[0.…,(M%65)]。算法由4部分组成:前置密钥扩展算法、后置密钥绑定算法、加密算法和解密算法。

(1)前置密钥扩展

前置密钥需要用户设置的常量值X;和系统参数常量值Yi:
1

其中,e=2.718281828459.-(自然对数的底),(I>=1.618033988749-,-(黄金分割率)。Exp(X)小于等于用户设置的加密的常量密钥数值XoX的取值在6到II位之间,不超过大脑的记忆边界。∑是系统可以获取到的系统参数值的有效叠加,系统的参数有硬盘的MAC数值,网卡的MAC数值和CPU的MAC数值等。

前置密钥的混合算法,通过融合系统参数的混淆运算,使不超出记忆边界的数值变换成一个大容量的密钥数值,参与后续的加密。前置扩展函数具有的单向性特征:从P不能得到Y。

(2)后置密钥绑定

前置密钥函数用于在BASE64加密前,用于给需要加密的内容入一个高强度但不超过大脑记忆边界的密钥。后置密钥绑定,则是BASE64加密后,再次提取系统的硬件值和系统发生的时间戳,放置到隐蔽的系统文件夹以二进制文件保存。该密钥则可称为后置密钥。后置密钥需要两个系统值,常量是系统的硬件值,一般取网卡或硬盘的MAC值的前3位,标记为∞;变量是系统该点的时间戳,标记为u。

M代表需要处理的BASE64加密后的字符串的长度。密钥是循环变化逐次绑定到字符串中的每个字符。

(3)加密算法(Encrypt)

假设加密原文放在寄存器组A中,密钥房子寄存器组B中。并且考虑了密钥扩展算法和移位运算的执行。算法的加密过程如图1所示。

系统敏感配置信息MEA加密算法

(4)解密算法(Decrypt)

解密函数是加密算法逆向过程。

3、加密算法安全性分析

对MEA算法的安全性作了一定的分析,主要测试了p=24的情况。

首先测试了输入的加密原文和输出的密文之间的相关性,发现当轮数越多,其相关性越小,密文长度比原文长度明显增加。当达到5轮以后,密文长度的增加明显变小。因而轮数的取值建议不要超过5轮,则加密效果最佳。

其次测试了加密原文与循环移位的关系,就是观察加密原文做很小的改动,加密结果是否有很大的移位变幻。发现到第3轮时,原文很小的改动,就会引起密文的长度和结果有很大的移位变幻,且变幻没有明显的规律可以寻找。加密原文可以是任何字符,包括中文字符,但是加密后的密文经过多轮加密后,则全部是大写的拉丁字母呈现,且排列没有规律。

最后测试了密文对抗穷举密钥软件的饱和攻击能力,由于密钥和加密的计算机硬件参数绑定,则密文在其他计算机上,即使输入正确密钥,也只能还原成乱码,无法有效破解。因而特别适合对于系统配置文件中的敏感信息的加密。在本机上的穷举测试,对于2轮的加密结果,软件连续运行了4小时,只还原出不到6%的原文。因而在实际运行中,建议加密轮数设置不少于3轮。则配合完善的巡检制度和服务器系统的防火墙系统,可以在一个工作日周期内为运行在服务器本地的黑客攻击软件的穷举破解行为的发现和阻止赢得时间。从而提高系统的安全级别。

另外该算法的解密速度非常快,对系统读取配置文件中的敏感的加密信息的延时在微秒级别,不会影响原来系统的正常运行。

小知识之CPU

中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。