1引言 网络刚刚兴起时,接入网络的设备之间的通信只要能够正常完成就已符合需求。但在WiFi广泛普及,移动互联网深入人们日常生活的今天,终端程序通信的安全性显得尤为重要。安全从业者开始尝试使用各种加密技术来保障通讯过程的信息安全。现在,基于RSA固定密钥的经典可信通信系统已经广泛应用于各种终端设备中。但这套经典的通信模型并不是完美无瑕的,它面临着诸多安全问题,从移动互联网现状来看,最显著的安全问题来自暴力破解攻击。 为了满足智能设备可信网络通信的要求,本文提出了一种具备持久防止暴力破解能力的RSA可信网络通信系统。本系统通过安全可控的RSA公钥私钥对更新机制,并且考虑了智能设备实际生产系统中计算能力等问题,保证可信网络通信具备实际可实施能力,并可持久抵御黑客的暴力破解,以保障智能终端设备中的各类通信系统的信息安全。 2相关工作 2.1RSA非对称加密算法 RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用,RSA算法的理论基础是一种特殊的可逆模指数运算,它的安全性是基于分解大素数的困难程度上的。 2.2AES对称加密算法 密码学中的高级加密标准(AdvancedEncryptionStandard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。AES现已成为对称密钥加密中最流行的算法之一。 2.3已知的针对RSA加密算法的攻击 以RSA为代表的非对称加密体系,本质都是利用具备单向性质的数论原理。目前流行的非对称加密算法主要有两大类:一是基于大素数因子分解问题,其中最典型的就是RSA;二是基于离散对数问题,较常见的有ECC和ELGamal。 利用这些数学原理,再筛选足够长度的密钥,黑客想要通过计算机进行暴力破解,需要花费难以想象的时间。RSA加密算法自1977年提出以来,已经承受了黑客30多年的暴力破解攻击,计算机的计算能力的愈强,RSA算法则愈不安全。在现在计算能力如此发达的今天,GPU计算,云协同计算,量子计算,无一不在质疑着RSA的安全性。 1999年,RSA-155(512bits)被成功分解。2002年,RSA-158也被成功因数分解。2009年12月12日,编号为RSA-768也被成功分解。 目前,银行业所使用到的RSA加密算法,至少也为RSA-2048,甚至是RSA-4096级别。 3简化的RSA可信网络通信系统 为了介绍基于RSA体系的可信网络通信模型,我们需要引入Alice和Bob这两个人来进行解释。 3.1RSA公钥与私钥的产生 假设Alice想要通过一个不可靠的网络(如公众WiFi)接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥: (1)随意选择两个大的质数p和q,p不等于q,计算N=pq; (2)根据欧拉函数,求得r=?渍(N)=?渍(p)?渍(q)=(p-1)(q-1); (3)选择一个小于r的整数e,求得e关于模r的模反元素,命名为d; (4)将p和q的记录销毁。 至此,(N,e)是公钥,(N,d)是私钥。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。 3.2加密消息 假设Bob想给Alice送一个消息m,他知道Alice产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c: ne≡c(modN) 计算c并不复杂。Bob算出c后就可以将它传递给Alice。 3.3解密消息 Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n: cd≡n(modN) 得到n后,她可以将原来的信息m重新复原。 3.4解码的原理 cd≡ne-d(modN) 以及ed≡1(modp-1)和ed≡1(modq-1)。由费马小定理可证明(因为p和q是质数) ne-d≡n(modp)和ne-d≡n(modq) 这说明(因为p和q是不同的质数,所以p和q互质) ne-d≡n(modpq)。 4具备防御暴力破解能力的可信通信系统设计 为了使上文提及的可信网络通信系统在实际生产系统中安全应用,我们需要进行一些改进。 4.1非对称加密协商密钥,对称加密传输内容 众所周知,非对称加密算法的速度远远慢于对称加密算法。在实际的网络生产系统中,所有通讯内容全部使用非对称加密,会带来可观的性能开销,对于计算能力珍贵的设备(如智能手机)完全不可接受,但是对称加密算法(如AES)却有极其优秀的性能表现。因此,我们可以仅使用RSA算法来协商后续对称加密是所使用的完全随机的密钥。协商完成后,将后续的安全性交给AES加密算法。 同时,珍贵的计算能力也决定了我们不能使用太高级别的RSA加密算法。目前实际的网络生产系统中,绝大多数使用的是RSA-1024甚至更低级别的加密,少部分使用到了RSA-2048级别。 |