为了使存储在云中的数据更加安全,根据云计算的特点,采用混合加密的方式对传统加密算法进行重新设计。在设计过程中,主要利用云计算存储容量大、运算速度快、并行性强的特性,结合传统加密算法的特征,改进设计了密钥加密法、二次加密法和分组混合加密法。
一、基础加密算法
1、对称加密算法
在对称密码加密系统中,各项元素是一个五元组集合CS={M,C,K,e,d),其中M={m)表示明文消息的集合,C一(c)表示密文消息的集合,K一{k}表示密钥的集合,e表示一个确定的加密映射,即M六K生成C的过程,矗表示一个确定的解密映射,即C*K生成M的过程。在整个加解密过程中,密钥k既在加密过程中使用也在解密过程中使用。对称加密算法的工作过程如图1所示。
在对称加密算法中,加密过程和解密过程的算法本身是公开的。只要获得具体的密钥k,任何人都可以破译密文。常见的对称加密算法有DES加密算法、三重DES加密算法、AES、IDEA、RC5等。本文选用DES算法作为混合加密算法的基础进行研究。
DES算法的主体运算由初始置换和FEISTEL网络组成。因此,DES算法的运算速度比其他成熟的加密算法更快,同时由于56比特密钥较短,常见的攻击方法往往针对这一特点。
2、公钥加密算法
公钥密码学的思想是要寻找到这样{种系统,从加密函数e计算解密d在计算上是不可行的。在这样的系统下,就可以公布加密密钥ek。让任何人都可以对数据进行加密,而只有私钥dk的持有人才能对密文进行脱密。在结构上,公钥加密算法与对称加密算法一样,也是由一个五元组集合CS={M,C,K,e,d)组成,对于明文空间M、密文空间C、加密过程e、解密过程矗都没有特殊的区别,最主要的区别是密钥K。在对称加密算法中,密钥K只有一个,既作为加密用,也用于脱密。而公钥加密算法中,加密过程使用的公钥ek与脱密过程使用的私钥矗。有一定的关联,但却完全不一样,如图2所示。
公钥加密算法本身都是基于NP难的单向陷门函数进行设计,例如,RSA算法依靠的是大整数素因子分解问题,ELGamal是基于有限域上的离散对数问题等。本文以RSA算法为例介绍公钥加密算法。
与DES算法相比,RSA加密算法的强度更高,但是加密中使用到大素数,因此整个加密过程耗时相对比较长,限制了它的推广使用。
二、云计算中的混合加密算法
1、密钥加密法
A. Kerkhoff曾经提出了密码分析学的一个基础假设,通常被称为Kerkhoff原理:假设对手知道密码系统的所有细节,包括算法本身原理及其实现过程,那么加密系统本身的安全性就完全依赖于密钥的安全性‘4]。在此情况下,要求在设计加密系统时需要更加专注于密钥的保护。若是密钥本身易于被破解,整个加密系统的安全性就会大打折扣。如果能对密钥进一步加强保护,防止密钥本身被破解,则可以在一定程度上达到保护密钥的目的。因此,密钥加密法便应运而生。密钥加密法是指对密钥愚进行再一次加密。如图3所示。
密钥加密系统所含元素与传统对称加密算法和公钥加密算法一样,也是5元组集合CS={M,C,K,e,d)。密钥加密法中,原来的密钥k既是明文m加密的密钥,又是密钥加密法中的明文。密钥dk通过二次加密密钥ek,加密形成新的密钥密文C。在脱密过程中,首先将密钥密文c脱密,形成原文密钥ek,再使用密钥k对密文进行脱密。
在密钥加密系统中,加密过程使用传统加密方法,所以,加密的强度依赖加密算法原本的强度。本文采用的DES算法已被美国政府采纳使用35年,依然没有寻找到算法本身的破绽。因此,在算法本身可信的情况之下,对于密钥的保护尤其显得重要。对密钥的再一次加密,不仅有利于密钥的保存,也从另外一个方面加强了算法本身的安全性。
2、二次加密法
随着加密算法的研究和发展,人们已经认识到DES算法最大的缺陷是使用了较短的密钥。为了克服这个缺点,Tuchman在1979年提出了三重DES(记为TDES)加密算法,使用168比特的较长密钥。并在1985年成为金融应用标准,1999年加入美国国家标准和技术研究局(NIST)的数据加密标准。由此可见,多重加密算法对于加密强度和密钥保护都能起到一定的作用。
在三重DES算法中,加密密钥为K=(ki,k2,k3。),则由明文m生成密文c的加密过程为:
C=TDESk(m)一DESk3(DESk21 (DESk,(m)))
相应的脱密过程为:
C=TDESk-1(m)一DESk3-1(DESk(DESki(m)))
在这样的设计下,不仅加密强度更大,而且对已经过DES算法加密的数据具有良好的兼容性。鉴于此,本文根据云计算中计算集群运算能力强的特点,设计了二次加密法。在二次加密算法中,加密密钥为K=(ki,k2,k3),其中,ki为DES算法中的密钥,k2为RSA算法中的公钥,k3为RSA算法中的私钥,因此,在二次加密法中加密脱密过程是一个复杂的过程,依次依序进行加密,如图4所示。
首先对明文,咒使用DES算法加密成中间密文cl,再使用RSA算法的公钥对中间密文加密成最终密文c。脱密过程是加密过程的逆过程,首先是使用RSA算法中的私钥对最终密文c脱密生成中间密文C1,再使用DES算法中的密钥脱密成最终明文m。
密文的安全性由两个不同结构、不同组成的加密算法作为基础,基于不同的NP难计算问题,比单一的加密算法安全性更好。同时,在加密过程中使用两套不同的密钥系统,因此,在入侵者破解密钥时,即使入侵者破解了其中一组密钥,依然还有另外一组密钥对密文进行保护,使得入侵者无法获取整个密文本身相对应的明文内容。
二次加密算法加密强度大、耗时相对较高,另外,有大量中间密文需要存储和计算,所以会占用大量的存储空间和计算资源。由于云计算中计算集群和存储集群能力都比较强,这些特点可以支撑云计算完成二次加密算法所特有的加密过程。
3、分组混合加密法
传统加密方法可以分为流密码和分组密码两种不同的方式。V ernam 一次一密体制是流密码中最著名的例子。Vernam加密算法是消息比特和密钥比特的简单异或运算。由于密钥流是随机独立生成的,并且只用于加密一个消息流m,因此被称为一次一密。这样的加密算法有一个非常大的优点,就是能够证明它在唯密文攻击的情况下是安全的。
分组密码是传统加密算法的另外一种方式,例如DES、三重DES、Blowfish等都是典型的分组加密算法。这些加密算法首先都是把明文本身按照一定长度分组,再对每一组明文分别与密钥进行计算加密。脱密过程正好相反,先对每一组密文脱密,然后在重新组合成明文。在这种情况下,可以使得分组加密算法的密钥相对流密码长度小很多。
根据分组加密方法的思想,同时结合云计算中计算处理器众多的特点,可以将明文按照I:I的长度重新进行分组,将其中一部分利用DES算法进行加密,与此同时,把另一部分利用公钥加密算法中的RSA算法进行加密。具体的加密过程如图5所示。
在加密过程中,首先将需要加密的明文m按照I:I的比例,均分成为mi和中间明文m2,中间明文mi经过已经成熟的对称加密方法DES,利用密钥ki进行加密,形成密文cl;m2经过公钥加密算法RSA,利用RSA算法中的公钥k2进行加密,形成密文C2。脱密过程是加密过程的逆过程,对于密文cl使用DES算法中的私钥ki进行脱密,脱密形成中间明文mi,同时,对密文C2使用RSA算法中的私钥k3进行脱密,脱密形成中间明文m1。整合中间明文m1和m2,最终形成明文m。
在云计算中,利用云计算的计算能力强、计算集群多的特点,分组混合加密算法加密过程P可分解到不同的计算集群分别进行加密,不仅可以将加密控制在一个加密周期以内,同时还能保证加密算法取得良好的加密效果。
小知识之云计算
云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。