一、背景
与客户端通讯在某些条件下,不能以SSL方式进行数据通讯,此种情况下,会有一定的数据安全隐患,需要对通讯数据进行加密操作。二、方案调研
根据设计背景,AppServer与客户端数据的加密方案,需要使用对称加密,要保证双方接收到加密数据后,能够解密。现有的加密方法如下:
1、DES已破解,不再安全,基本没有企业在用了是对称加密算法的基石,具有学习价值密钥长度56(JDK)、56/64(BC)2、DESede(三重DES)早于AES出现来替代DES计算密钥时间太长、加密效率不高,所以也基本上不用密钥长度112/168(JDK)、128/192(BC)3、AES最常用的对称加密算法密钥建立时间短、灵敏性好、内存需求低(不管怎样,反正就是好)实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。
4、RSA
是公开密钥系统的代表;
安全性:建立在具有大素数因子的合数,其因子分解困难这一法则之上;
处理速度慢;
密钥管理:加解密过程中不必网络传输保密的密钥;密钥管理优于AES算法;
RSA加解密速度慢,不适合大量数据文件加密;
综合上述加密方案,系统无论使用那一种加密算法,都不会达到一个最优的方案,单纯使用RSA,其加解密速度慢,不适合大量数据文件加密。DES已经不太安全,3DES是DES的升级版,AES的过度版,因此系统使用AES+RSA两种算法结合,来实现协议数据加密,解密方案。
三、RSA+AES加密方案RSA算法是公开密钥系统的代表,其安全性建立在具有大素数因子的合数,其因子分解困难这一法则之上的。Rijndael算法作为新一代的高级加密标准,运行时不需要计算机有非常高的处理能力和大的内存,操作可以很容易的抵御时间和空间的攻击,在不同的运行环境下始终能保持良好的性能。这使AES将安全,高效,性能,方便,灵活性集于一体,理应成为网络数据加密的首选。相比较,因为AES密钥的长度最长只有256比特,可以利用软件和硬件实现高速处理,而RSA算法需要进行大整数的乘幂和求模等多倍字长处理,处理速度明显慢于AES[5];所以AES算法加解密处理效率明显高于RSA算法。在密钥管理方面,因为AES算法要求在通信前对密钥进行秘密分配,解密的私钥必须通过网络传送至加密数据接收方,而RSA采用公钥加密,私钥解密(或私钥加密,公钥解密),加解密过程中不必网络传输保密的密钥;所以RSA算法密钥管理要明显优于AES算法。
从上面比较得知,由于RSA加解密速度慢,不适合大量数据文件加密,因此在网络中完全用公开密码体制传输机密信息是没有必要,也是不太现实的。AES加密速度很快,但是在网络传输过程中如何安全管理AES密钥是保证AES加密安全的重要环节。这样在传送机密信息的双方,如果使用AES对称密码体制对传输数据加密,同时使用RSA不对称密码体制来传送AES的密钥,就可以综合发挥AES和RSA的优点同时避免它们缺点来实现一种新的数据加密方案。
流程:
接收方创建RSA秘钥对,
发送RSA公钥给发送方,自己保留RSA私钥
发送方创建AES密钥,加密待传送的明文,之后用RSA公钥加密该密钥,
RSA公钥加密AES的密钥+AES密钥加密明文的密文----通过Internet发给---->接收方
接收方用RSA私钥解密加密的密钥,之后再用解密后的AES密钥解密数据密文,得到明文。
为了简化设计的复杂度,客户端、服务端各自使用一对RSA的密钥对,对每一个用户的每次连接,生成一次AES密钥。
四、AES加密模式的选择
ECB(Electronic Code Book电子密码本)模式
ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。
优点: 1.简单; 2.有利于并行计算;3.误差不会被扩散;
缺点: 1.不能隐藏明文的模式;2.可能对明文进行主动攻击;因此,此模式适于加密小消息。
CBC(Cipher Block Chaining,加密块链)模式
优点:不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。
缺点:1.不利于并行计算;2.误差传递;3.需要初始化向量IV
CFB(Cipher FeedBack Mode,加密反馈)模式
优点: 1.隐藏了明文模式; 2.分组密码转化为流模式; 3.可以及时加密传送小于分组的数据;
缺点: 1.不利于并行计算; 2.误差传送:一个明文单元损坏影响多个单元; 3.唯一的IV;
OFB(Output FeedBack,输出反馈)模式
优点: 1.隐藏了明文模式; 2.分组密码转化为流模式; 3.可以及时加密传送小于分组的数据;
缺点: 1.不利于并行计算; 2.对明文的主动攻击是可能的; 3.误差传送:一个明文单元损坏影响多个单元;
综上所述:系统AES加密模式采用CBC模式,这也是现在AES加密的通用模式。
五、APP 加密方案
加密方案活动图:
加密方案流程图:
如果觉得《AES+RSA加密算法实现传输层的数据加密》对你有帮助,请点赞、收藏,并留下你的观点哦!