安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

基于RSA的网络密码数据加密算法的优化与设计

更新时间:2022-10-28 15:43:45


本文简介:目前,网络环境下运行的软件系统出于对安全的考虑,大都需要在网络中频繁传递密码数据。因此,这些密码自身的安全一直倍受关注。RSA公钥加密系统是目前最有影响的公钥加密算法之一,它能够抵抗到目前为止已知的所有密码攻击。从RSA公钥加密系统特点上看,它非常适合对网络中传递的密码数据进行加密。但随着计算机技术的发展,破解RSA的风险正在加大,而RSA为保证自身的安全,其密钥长度在不断地增长,加密计算量也随之

基于RSA的网络密码数据加密算法的优化与设计

目前,网络环境下运行的软件系统出于对安全的考虑,大都需要在网络中频繁传递密码数据。因此,这些密码自身的安全一直倍受关注。RSA公钥加密系统是目前最有影响的公钥加密算法之一,它能够抵抗到目前为止已知的所有密码攻击。

从RSA公钥加密系统特点上看,它非常适合对网络中传递的密码数据进行加密。但随着计算机技术的发展,破解RSA的风险正在加大,而RSA为保证自身的安全,其密钥长度在不断地增长,加密计算量也随之增加,这使得RSA加密速度越趋缓慢。我们在RSA公钥加密系统的基础上,针对网络密码数据提出了一种加密算法的优化方案,有效地提高了RSA的安全性,同
时也提高了其加密速度。

一、 RSA公钥加密系统

RSA加密算法基于一个十分简单的数论事实,将两个大素数相乘十分容易,但是想分解它们的乘积却极端困难,因此可以将乘积公开作为加密密钥。整个RSA加密算法的结构可以描述如下:

(1)选取两个大素数p和q(保密);

(2)计算n,使得n=pq,并公开n;

(3)随机选取正整数e,使得e与y= (p-1)(q-1)互素,公开e;

(4)计算d,使得e×d mod y=l,d保密;

(5)加密;c=memod n;

(6)解密;m=Cd mod n;

(注:m是明文,c是m对应的密文。)

以上实现过程是:A欲传递密码给B,B则需要持有密钥d,并公开e和n,A用e和n对密码数据进行加密后传给B,B得到密码后用d和n进行解密。

RSA加密算法中,其安全性取决于p、q两个大素数的取值,且p、q取值越大,分解越困难,被破解的可能性就越小,但其加密的计算量也随之增大,加解密速度也随之变慢。

二、基于RSA的网络密码数据加密算法的优化与设计思路

1、动态加密

从前面叙述可知,RSA加密算法的安全性及计算速度都与p.q两个大素数的取值有着直接的关系。因此,把优化重点可放在p、q的取值上。为了能得到较为理想的运算速度,对p、q的取值不宜太大,能保证短时间不会被破解即可。在一定的素数生成周期T和动态范围(X,Y)内产生一系列的素数,并从中随机抽取p、q值,使得每次加解密所用的n、e、d均不同,以实现动态加密。p、q的取值长度和范围(X,Y)由周期T决定,原则是保证在NT(N∈Z,Z>0)时间内不会被破解。

2、动态密码数据

事实上,仅实现动态加密还不足以保证密码数据的安全。因为破解者只需获得一次加密信息,不管破解时间多长,只要破解成功同样获得正确的密码数据。因此,必须对密码数据限定一定的有效期,即实现动态的密码数据。

3、 实现签名机制

攻击RSA方法主要有选择密文攻击和公共模数攻击两种,对选择密文攻击的解决办法有:

(1)不对自己一无所知的信息签名。

(2)不对陌生人送来的随机文档签名。

而对公共模数攻击的解决办法只有一个,那就是不要共享模数n。在RSA中叠加MD5签证机制无疑是解决择密文攻击的有效方法。而对于公共模数攻击,动态加密过程实际上已实现了不共享模数的过程。

三、 动态生成素数的算法

要实现上述的优化与设计思路,最主要是要解决动态生成素数的问题。需要在一定的素数生成周期T和动态范围(X,Y)内生成一系列的素数,并从中随机抽取p、q。

1、 素数选取条件

首先,p、q的选取条件必须满足:

n=pq,T(n)=基于RSA的网络密码数据加密算法的优化与设计(T(n)为计算n的时间复杂度);

则必须满足NT<T(n) (N∈Z,Z>O)。

2、生成素数序列算法

可以在动态范围(X,Y)内得到整数集合,然后逐个进行素数判别。以往判断一个数S是否为素数时,一般采用求距离S最近的质数β,β满足≤S。其求解方法可以采用8不被小于佰任何数整除(不含1)来测试,测试首数从S开始。但是该加密算法的时间复杂度为0(根号s),当S较大时计算时间很长。虽然前面提出不需要很大的素数,但从网络安全上考虑,所需要的素数位数也不能太小。因此,该判断素数的加密算法不能在此适用。

在此,我们采用Miller Rabin概率测试算法来判断素数。为了使整个素数判断过程更快,先用“筛选”法,将偶数和最后一位为5的数全部去掉,再用剩下的数进行Miller Rabin概率测试。其测试的计算机实现过程如下:

(1)假设测试数为n,找出整数k、q,使得n-1=(2-k)*q,其中k>0,q是奇数;

(2)随机选取整数a,2<a<n-1;

(3)z-a-m mod n;

(4)如果z=1或z= n-1,则n可能为素数,否则为合数;

(5)进行j=0到k-1的循环;

(6)如果a^((2^j)*q)mod n=n-1,则n可能为素数,否则为合数;

(7)j=j+1,如果j≤k-1,则转到(5)执行,否则跳出循环。

由于a是随机抽取,n通过测试但并不能确定它一定是素数,因此需要进行多次这样的测试,以确保得到的是一个素数(DDS的标准是要经过50次测试)。

3、随机数产生算法

解决素数生成问题后,还需要产生2个随机数,以实现动态生成p、q两个大素数。事实上本文所提到的加密算法安全主要是依赖动态方式来实现,如动态素数、动态密码等,以此来降低对p、q两个大素数位数的要求,以提高整个运算速度。同样,这里也可以降低随机数的产生质量来换取速度上的需求。

BBS随机数产生器虽然随机数的产生质量很好,但其运算复杂,速度较慢,因此可以采用线性同余算法来产生随机数,其随机数序列{Xn}由方程:Xn+1= (aXn+c) mod m得到,其中模数m>0,乘数a满足0≤a<m,增量c满足0≤c<m,初始值O≤XO<m。当m、a、c、XO都是整数时,通过这个方程就能产生一系列[O,m]范围内的整数了。

4、 动态密码的产生

事实上,动态密码产生的方法很多,比如可以利用本地硬件序列号(如CPU、硬盘等)、本地时间(或服务器时间)等参数来设计动态生成密码的加密算法,这些参数可随公模传送或密码传送一起进行传送。

四、 叠加MD5签名机制

从上述分析中可以知道,选择密文攻击对RSA公钥加密系统造成的威胁是致命的。为了防止此类攻击,需要对所传送的信息实行签名机制,这样可以实现不对自己一无所知的信息签名,也不对陌生人送来的随机文档签名。

MD5是一种用于产生数字签名的单项散列加密算法,它的作用是让大容量信息在用数字签名软件签私人密匙前被“压缩”成一种保密的格式。不管字符信息容量多大,经MD5换算后都会输出一个128bit的大整数,该大整数对原字符信息中的每个字符都很敏感,原字符信息中的一个字符改变都会改变大整数的值。重要的是MD5是不可逆的,无法将一个MD5的值变换成原字符信息。很显然,在RSA中叠加MD5加密算法无疑大大增加了密码数据的安全性。

RSA叠加MD5过程如下:

(1)A请求给B传送密码数据。

(2)B随机计算出公钥和私钥,并将公钥传送给A。

(3)A拿到公钥后将密码文件加密成M,将M进行MD5换算,并得到一个128bit的大整数N。

(4)将M、N传送给B。

(5)B先进行MD5验证,通过验证后再用私钥解密。

本文所述加密算法的核心思想在于动态加密和动态产生密码,即保证在密码可能被破解的时间内改变加密密钥和密码数据的内容,以此来提高密码数据的安全性。

小知识之动态密码

动态密码是根据专门的算法产生变化的随机数字组合,主流产生形式有手机短信、硬件令牌、手机令牌,动态密码优点在于使用便捷且与平台无关性,通过电脑、手机、IPAD都可以顺畅使用,广泛应用于网银、网游、电信领域。

立即下载试用

如何防止企业内部开发代码被泄密?

       据统计报告,企业在遭遇数据泄露事件时,有百分之八十的概率是出现在内部人员身上。这表明,内部数据安全问题远远比网络攻击更加可怕。尤其是在研发型企业里,代码这种重要又值钱的数据,是最容易让别有用心之人动歪心思的。

 

       代码数据的泄露,对企业造成的打击和影响是不可估量的,对于研发部门来说,重要的数据可不仅仅是代码,还有很多核心数据需要保护。下面我们就从不同角度看看,有哪些技术手段可以保护代码不泄露。

  

一、对代码本身采用的技术手段

 

      1、代码混淆:也称为模糊处理,其技术原理是代码重命名,也就是说原先具有含义的方法名称,重命名为毫无意义的(A,B,C 诸如此类)。缺点:无法隐藏调用的系统的函数。

 

      2、代码隐藏:因为代码混淆改变了方法签名,在很多时候是有问题的,例如程序集要被其他人使用的时候。因为方法名变成了毫无意义的一些字符,将造成使用者极大的麻烦,也可能导致现有引用程序集的失效。

 

      3、非托管代码编:使用非托管代码编写核心代码(例如核心算法),然后使用平台交互的方式进行调用,非托管代码比较难反编译。

 

      4、强名称签名:这种方法,用通俗的话说就是对文件按照Microsoft的算法对文件进行Hash,然后将hash出来的数据(public key token )写入文件。在运行或者对文件进行调用的时候,SDK会检查public key token ,若不符合则抛出异常,退出。

 

      5、代码加密:改变MSIL和JIT的通信,根据底层的需要来解密代码。破解的难度大,较安全,内存无完整代码。但是这种方式可能会导致编程的难度大,若利用专门的加密软件,则会加大系统的开发成本。

 

      6、代码本地化:代码完全编译成本机代码,同win32下的应用程序一样,完全失去了.NET的优越性。

 

      7、代码加水印:简单的说,就是让特定的字符串以图片的形式,绘制在程序的界面上,用来提示软件是否注册,这种保护方法,关键的地方就是对图片绘制条件的判断,如果仅仅是用true 或者false 来判断,就形同虚设了。

 

二、研发部门内部管控手段

 

      8、禁用U口:企业可以通过禁用USB接口,这种方式可以有效防止恶意的数据拷贝,如果需要对外发送的话,需要经过审核后由专人拷贝出来再外发。

 

      9、控制访问权限:网站白名单,只允许访问工作需要的网站,其他一律禁止掉。这个算是比较严格的限制方式了。采用应用过滤,禁止掉所有的文件传输、网盘、邮件等。这个方案相对有效,但是不能排除通过未知的应用协议来传文件,而且会给日常工作带来一些不便。

 

      10、部署DLP数据防泄漏系统:有条件的企业可能会在内外网边界部署DLP数据防泄漏系统,所有内部向外部发出的数据,都要经过DLP系统的内容扫描,在确保不包含敏感信息的情况下才允许发出。这也是比较常见的一种方式,可以有效防止各个渠道的外发泄密。

 

      11、第三方身份验证:现在有许多基于标准且高度安全的身份验证产品可供选择,这样的话,你的员工/客户等等就不需要一个个记住账号密码了,这样就能减少账号泄密的风险了。

 

      12、服务器上备份文件:及时的将重要文件备份,以便丢失后能及时找回,同时可以减少无意的泄密带来损失。

 

      13、特殊部门不允许进行文件外发:比如研发部门或者财务部门这种核心和敏感数据较多,不允许他们直接的对外发送文件,如果需要发送的话,需要经过审批后,由专人进行发送。

 

      14、监控电脑的文件外发动作:这个就需要有带有监控功能的软件了,可以监控到每个人的电脑操作行为,一旦产生外发动作,就会给管理员发出警报。

 

      15、云桌面:云桌面也是一种很流行的方式,很多研发型企业都在使用,它的成本比较低,使用灵活,可以快速响应企业和开发需求,比如企业规模扩大时,可快速实现资源配置和扩展。最重要的是,数据都集中在服务器上,开发人员的终端不再保存数据和存储,实现代码等数据不落地,对于企业来说,不仅仅是便于管理了,而且更能保障信息安全。

 

      16、网络隔离:这个算是目前最流行的方式了。将研发网与办公网、测试网、外网等进行隔离,防止不同部门、不同业务之间的违规数据交换。通过网络隔离的方式,可以有效防止内部核心代码数据泄露。

 

      17、对企业数据信息存储介质做渗透测试:渗透测试是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。

 

      18、内部设备的管理:很多企业会疏于对打印机、传真机等设备的管控,殊不知这些也是泄密渠道之一。必要的时候可以安装一些打印管理软件,实现打印内容监控、打印计数、打印审核等。

 

三、防止外部攻击的方法

 

      19、使用多种抵御手段:安装各种防火墙、入侵检测系统、DDoS防护服务、防病毒等产品来防范黑客的攻击和病毒的入侵。可以有效抵御外部的攻击导致的数据泄露,对企业整个网络安全环境起到一定的保护作用。

 

      20、监视攻击:有很多很好的监控工具,但是需要投入时间和精力来确保随时可以监控到异常。选择监控系统时,得确保知道自己在监控什么以及如何回应。

 

      21、分析各种网络日志:日志的搜集与分析可帮助企业侦测针对性攻击。IT和安全人员可从中发现关于黑客的一些宝贵信息,例如黑客如何进入网络,以及黑客的攻击策略。

 

      22、高防服务器:高防服务器就是能够帮助网站拒绝服务攻击,并且定时扫描现有的网络主节点,查找可能存在的安全漏洞的服务器类型。


本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16288.html