一种基于全素数库的动态加密系统的制作方法

文档序号:13577301阅读:250来源:国知局
一种基于全素数库的动态加密系统的制作方法

本发明属于信息安全领域,特别涉及一种基于全素数库的动态加密系统,适用于数据的实时动态加密,指令传输的一次一密处理。



背景技术:

随着技术的发展,人们的生活变得更加便捷。人与人之间的信息交流越来越频繁,也越来越容易。同时,相伴随而来的信息安全问题也更加突出。黑客们有更好的设备和更高的技术来窃取人们许多重要信息。人们的私人照片频繁被盗取,银行卡被盗刷,各种网络账号被盗。

针对信息安全问题,各种相应的加密方法被提出。常用的算法分为对称算法和非对称算法两类,各有所长。对称密钥加密解密速度快,保密性好,但需要双方拥有同一把钥匙;而非对称密钥使用公钥和私钥两把钥匙,但加密解密速度较慢。

由于非对称密钥具有特殊的性质,其常被用于静态加密。非对称密钥算法大多基于不可逆运算,同时也依赖素数的很多性质。为保障安全性,非对称密钥常常追求极大的素数,以保证其密钥在很长的时间内不被破解。

而对于动态加密领域,情况则较为不同。目前动态加密常使用对称密钥,或者对称密钥和非对称密钥同时使用。由于对称密钥需要通信双方拥有同一把钥匙,在动态的过程中就需要双方用某种方式实时同步更新密钥,这就给系统带来的较大的隐患。密钥和密钥之间始终还是有联系,并没有彻底的相互隔绝。为了降低被攻破的风险,系统常常结合非对称密钥,使用非对称密钥更新对称密钥,继而使用对称密钥进行通信。可见,动态加密系统中的加密,从本质上还是一种非对称加密,或者说非对称密钥对于动态加密是必须的。

在动态加密系统中,只要保证密钥在一定时间内不可破即可。所以系统并不需要超高位非对称密钥,而是需要大量中等非对称密钥。但由于非对称密钥一直追求少量超大素数,系统中往往无法获得大量的中等素数,无法大批量的生成非对称密钥。这使得动态加密系统必须同时使用对称加密和非对称加密两种方法,亦或对称密钥的更新频率很低,不能保证系统的绝对安全。人们往往追求超高位的非对称密钥,而在广泛的实际应用中却仅仅使用32甚至16位的非对称密钥,仅在少数重要场合使用超高位密钥。

同时,动态加密系统并不是要做到系统整体都是随机的,不可控的,而是要做到系统对于破解者是完全随机不可控的,而对于核心管理者是相对可控的。目前,非对称密钥的生成过程中,往往使用随机产生的素数。这既使得所有密钥都不可控,生成的过程也耗费巨大的时间。在斯诺登事件中,使用的加密方法并没有问题,而是在随机数的生成过程中加入了后门,使得黑客可以追踪到系统所使用的素数。同时,如今网络中大量使用diffie-hellman算法,但传输过程中仅使用少量几个大素数,而这很可能是nsa(美国国家安全局)可以对网络进行监控的原因之一。

在国外,针对密钥重复问题有较多的探讨。学者nadiaheninger在文章“newresearch:there’snoneedtopanicoverfactorablekeys-justmindyourpsandqs”中就提到,在国外存在着严重的rsa密钥重复问题,某些领域重复使用率竟高达4.6%。rsa密钥重复意味着不同密钥使用一个或两个相同的素数生成,甚至直接就使用完全相同的密钥。而如果两个1024的rsa密钥使用同一个素数,那么使用一台台式电脑破解他们的时间可能仅需17μs。当系统密钥重复率达到4%时,只要拥有100把密钥,破解整个系统的概率为1-(96%)100≈98%。而造成这个问题的原因就在于生成非对称密钥时,所使用的素数是通过所谓的“随机算法”生成,或者使用的素数是从一个很小型的素数库中调取的。而当非对称密钥使用在动态加密系统中时,其更新的速度将更加频繁,如果没有较好的方式处理素数使用的问题,将会使得密钥重复的可能性大大提升,那么系统将会是极不安全的。

优秀的动态加密系统需要拥有大量的非对称密钥,并且可对密钥进行一定的管控。但目前尚未有相关系统可以实现这两大要点。发明专利1(发明人:刘诗章、陈豫生,“一种适用于信息加密技术应用的素数族快速生成方法”:专利申请号:201110253413.7)从一定程度上解决了建立素数库的问题,为动态加密系统的实现提供了较大支持。



技术实现要素:

本发明目的在于提供一种基于全素数库的动态加密系统,使得整体系统拥有大量中等强度的非对称密钥,并对密钥所使用的素数进行宏观管控。在大量密钥生成的过程中,系统会优先选取尚未使用过的素数,以保证每个密钥所使用的素数都尽量不相同。大量的密钥也使得系统可完全使用非对称密钥,或以较高的频率更新对称密钥。

为实现上述目的,本发明中的基于素数库的动态加密系统通过大型加密模块,中型加密模块,小型加密模块三种模块相互协调,共同完成系统数据的动态加密传输。

本发明中的三种模块设计方案如下:

大型加密模块:模块内存储完整素数库,负责生成和传输大量密钥。

中型加密模块:模块内存储部分素数,生成和传输少量密钥。

小型加密模块:模块仅进行加密解密操作。

全素数库记录了一定范围内的所有素数。在大型加密模块中,模块存储完整的全素数库。若加密算法需要某种特殊素数,则先将全素数库提炼成为特殊素数库。例如rsa算法中需要使用大量强素数,则可先将模块内全素数库处理为强素数库。

使用中,先将全素数库复制为两个库,一个称为标准素数库a,用于备份;另一个称为剩余素数库b,是正式使用的素数库。第一次使用时,复制b1库=a库,并将b1库加入到b库中,即b库=b1库。每次使用素数时,则从b库中随机抽取素数,并将使用过的素数删除。系统实时记录b1库中剩余的素数。当b1库中剩余素数少于指定比例k%时,进行第二次复制b2库=a库,同时将b2库加入b库中,即b库=b1库(剩余)+b2库。系统实时记录b2库中剩余的素数。当b2库中剩余素数少于指定比例k%时,则进行第三次扩充。在进行若干次扩充后,可将b库中所有素数清空,重新开始。

在通讯过程中,大型加密模块主要使用非对称密钥采集数据。当大型加密模块接收数据时,大型加密模块从库内随机选取素数,生成非对称密钥,删除使用的素数,并将公钥发送至目标模块。目标模块通过公钥加密数据后,发送至大型加密模块,解密并进行处理。

当大型加密模块需向某一模块发送数据时,先向目标模块发送请求。若目标模块存有有效非对称密钥,则向大型加密模块发送公钥,大型加密模块将数据加密后传输。若目标模块没有可用密钥,则大型加密模块先从库内随机选取素数,生成非对称密钥,删除使用的素数,并将公钥发送至目标模块。目标模块收到后,产生一个随机数,通过公钥加密后送至大型加密模块。大型加密模块接收到随机数后,有两种处理方法:一是使用随机数通过对称算法,加密数据后传输,二是根据随机数,以随机数作为私钥,生成非对称公钥,并将公钥直接发送给目标模块,并删除随机数。例如使用强素数生成rsa公钥,并将公钥直接发送给目标模块。发送数据则使用公钥加密。大型加密模块对于需频繁发送数据的模块,可使用第一种方法,并继而在一段时间内存储随机数,使用对称算法通信。

大型加密模块通过三种方式协助其他模块完成动态密钥更新,一是收到随机数后,直接生成非对称公钥,并发送至目标模块;二是将部分素数加密后,传送至目标模块;三是生成若干非对称密钥,加密后送至目标模块。

大型加密模块传输素数时,随机从b库中选取若干素数,并将所选的素数从b库中删除。不同大型加密模块存储不同区段的全素数库。每当使用一段时期后,可通过直接交换存储设备、建立新素数库等物理方式和线下方式进行全素数库的交换或更新。

系统中,设定每个非对称密钥被攻破的时间最小为t,对称密钥的攻破时间一般大于非对称密钥。

中型加密模块每经过t时间后,自动向大型加密模块发出请求,进行一次动态密钥更新。更新时,中型加密模块可以向大型加密模块索要素数或索要密钥。

中型加密模块每次收到若干非对称密钥后,可在t时间内使用这些密钥来接收其他模块的数据,但不可将密钥传输至其他模块。t时间后则将之前收到的所有非对称密钥删除,并重新发出请求索要密钥。当模块内没有有效密钥时则不进行传输。

中型加密模块具有一定的存储能力,但不足以存储完整全素数库。中型加密模块每次更新密钥时,可向大型加密模块索要n个随机素数。在t时间内,中型加密模块可以使用收到的n个素数生成密钥,但素数不可传输给其他模块。t时间后,能够自动随机地从未曾使用过的素数中选出几个,存入备选素数库c中,并删除剩余所有素数和生成的密钥。当c库中素数个数存量超过一定数量后,则将中型加密模块视为大型加密模块,实现相同的功能。当c库中素数个数存量过少时,则视为中型加密模块。

中型加密模块采集数据时,使用模块内可用的非对称密钥。向大型加密模块发送数据时,则先向大型加密模块索要公钥,加密后传输。向中型加密模块和小型加密模块发送数据时,先询问其是否有有效密钥。若有则索要公钥,加密后传输;没有则不进行传输。对于需要频繁交换数据的模块,可建立对称加密信道,每隔t时间更新对称密钥。当中型加密模块可被视为大型加密模块时,具有生成密钥和传输密钥的功能,可以帮助其他模块进行密钥更新。对于其他中型加密模块,可将c库中的若干素数传输至目标模块,并将所选素数从c库中删除。

小型加密模块由于性能受限,只进行加密和解密的操作,并存储少量非对称密钥。小型加密模块每经过t时间后,自动向大型或中型加密模块发出请求,进行一次动态密钥更新。小型加密模块每次收到若干非对称密钥后,可在t时间内使用这些密钥来接收其他模块的数据,但密钥不可传输给其他模块使用。t时间后则将之前收到的所有非对称密钥删除,并重新发出请求索要密钥。当模块内没有有效密钥时则不进行传输。对于需要频繁交换数据的模块,可建立对称加密信道,每隔t时间更新对称密钥。

本发明优点在于:

系统使用全素数库或特殊素数库生成大量非对称密钥,并同时对所使用的素数进行宏观管控。这使得密钥所使用的素数会以较低的概率重复使用。例如,若全素数库中有3000000000000个素数,这将够12亿人口每人不重复使用1250个密钥,而该大小的素数库目前使用一台笔记本,两周即可生成。同时,由于素数在具体的使用过程中依然是从很大的范围中随机选取的,对于窃听者而言,并不能轻易统计出哪些素数已经用过,哪些没有用过。

系统实时统计新添加进来的全素数库中剩余素数的个数,剩余较少时则重新添加全素数库,保证剩余素数库b中尽可能拥有各个位置的素数。系统也会在b库中保留之前未使用的素数一段时间,以增加其被使用的几率。在一段时间后,对b库进行清零,防止堆积的未使用素数过多,过高的增加其中某些素数的被使用概率。

由于系统拥有充足的非对称密钥,各个模块均可使用非对称密钥进行通信,各个模块也可随意向大型加密模块或部分中型加密模块提出密钥更新请求。使用非对称密钥的模块,将以t时间为周期进行非对称密钥更新。在真实的使用过程中,可能有多个大型加密模块和中型加密模块,中小型加密模块也处在运动的状态下,例如列车系统。使用非对称密钥时,大型加密模块并不需要记录大量其他模块的信息,中小型加密模块也可以直接和不同的模块交换数据,而不是仅仅只和固定模块通信。所有模块间的服务都可即时完成,结束后两个模块便将相关信息完全删除,不留下记录。对于需要经常交换数据,或位置相对稳定的模块,可建立对称信道,并通过非对称密钥进行实时更新。由于非对称密钥充足,模块将以t时间为周期进行对称密钥更新。由于系统以t为更新周期,使得每次传输的数据在t时间内均是绝对安全的。

系统在进行密钥更新时,并不是仅仅对密钥进行更新,也将通过传输一定量的素数来达到密钥更新的目的。中型加密模块会对接收到的素数进行一定的筛选和存储,当积累的数量达到一定值时,也将被视为大型加密模块,提供相应服务。这将会大大降低大型加密模块的负担。同时,这一过程可在正常的通讯过程中自然完成,并不需要特意进行。

全素数库也可进行处理而形成特殊素数库,这是其他系统很难完成的事情。例如系统生成强素数库后,便可通过随机数而直接生成rsa公钥,并只将公钥发送,其他数据立即删除。通过这种方式,中小型加密模块不使用对称算法也可实现密钥的更新。采用这种模式时,小型加密模块则完全不使用对称加密算法,仅使用rsa算法。rsa算法加密解密均通过一个幂模运算器进行,这将节省小型加密模块的处理资源。而这将在有源rfid甚至是无源rfid的使用上,提供较大优势。

由于整体系统大量使用非对称密钥,这就从根本上分离了每一次加密,或每个时间段内的加密。对于破密者,密钥是没有规律的。破密者就算破解了前面所有的加密文件,面对下一个加密文件时依然需要从新进行破解工作。破密者就算和系统拥有同量级的素数库,也依然无法把握系统对素数的使用。整体系统所使用的素数,均源于大型加密模块,而大型加密模块对内部素数的使用情况进行了实时监控和调整。这大大降低了密钥重复的问题,重复率将会是几亿分之一甚至更低。这些特点,使得基于全素数库的动态密钥系统的安全性大大提高。

附图说明

图1为本发明所提出的大型加密模块的基本结构图。

图2为本发明所提出的中型加密模块的基本结构图。

图3为本发明所提出的基于全素数库的动态加密系统的基本结构图。

具体实施方式

大型加密模块内存储完整的全素数库,若使用过程中需要特殊素数,则先将全素数库筛选为特殊素数库。使用时,分为两个库,一个称为标准素数库a,用于备份;另一个称为剩余素数库b,是正式使用的素数库。第一次使用时,复制b1库=a库,并将b1库加入到b库中,即b库=b1库。每次使用素数时,从b库中随机抽取素数,并将使用过的素数删除。系统实时记录b1库中剩余的素数。当b1库中剩余素数少于指定比例k%时,进行第二次复制b2库=a库,同时将b2库加入b库中,即b库=b1库(剩余)+b2库。系统实时记录b2库中剩余的素数。当b2库中剩余素数少于指定比例k%时,则进行第三次扩充。在进行若干次扩充后,将b库中所有素数清空,重新开始。

系统中,设定每个非对称密钥被攻破的时间为最小t,对称密钥的攻破时间一般大于非对称密钥。

大型加密模块从其他所有模块采集数据时,通过非对称密钥完成。大型加密模块先与目标模块建立通讯联系后,从b库中随机选取素数生成非对称密钥,并将公钥发送至目标模块。目标模块使用公钥加密后传输数据。大型加密模块收到并解密后,将所使用的密钥删除,将使用过的素数也删除。收到的数据在t时间内是安全的。

大型加密模块向其他大型加密模块发送数据时,先向目标模块索要公钥。收到公钥并加密数据后传输。大型加密模块向中型或小型加密模块发送数据时,先询问目标模块是否存有有效密钥,若存有,则索要公钥,没有则不进行传输。若目标模块没有有效密钥,则大型加密模块生成非对称密钥,并将公钥发送至目标模块。目标模块生成随机数,加密后传输,并告知大型加密模块使用对称密钥或非对称密钥进行通信。若使用对称密钥,则大型加密模块在t时间内存储随机数,并通过对称算法加密后将数据传输;若使用非对称密钥,则大型加密模块生成公钥后,将公钥发送到目标模块,并将随机数立即删除,发送数据则使用公钥进行加密。

对于频繁交换数据的模块,大型加密模块将会建立对称信道。通信时使用对称密钥,大型加密模块内记录相应模块所提供的随机数,并且每隔t时间与目标模块使用非对称密钥,进行一次密钥更新。

中型加密模块每经过t时间后,自动向大型加密模块发出请求,进行一次动态密钥更新。中型加密模块首先向大型加密模块索要n个随机素数,后可索要一些非对称密钥,或建立对称信道并更新对称密钥。在t时间内,中型加密模块可以使用收到的n个素数生成密钥。t时间内,中型加密模块使用生成的非对称密钥和收到的非对称密钥接收其他模块的数据,t时间后则将之前所有非对称密钥和使用过的素数删除,并重新发出请求进行密钥更新。对于需要频繁交换数据的模块,可建立对称加密信道,每隔t时间更新对称密钥。

t时间后,中型加密模块自动随机地从未曾使用过的素数中选出几个,存入备选素数库c中。当c库中素数个数存量超过一定数量后,则将中型加密模块视为大型加密模块,实现相同的功能。当c库中素数个数存量过少时,则视为小型加密模块。

中型加密模块向其他中型加密模块和小型加密模块发送数据时,先询问其是否有有效密钥。若有则索要公钥,加密后传输;没有则不进行传输。当中型加密模块可被视为大型加密模块时,具有生成密钥和传输密钥的功能,可以帮助其他模块进行密钥更新。对于其他中型加密模块,可将c库中的若干素数传输至目标模块,并将所选素数从c库中删除。

小型加密模块由于性能受限,只进行加密和解密的操作,并存储少量非对称密钥。小型加密模块每经过t时间后,自动向大型或中型加密模块发出请求,进行一次动态密钥更新。小型加密模块每次收到若干非对称密钥后,可在t时间内使用这些密钥来接收其他模块的数据,t时间后则将之前收到的所有非对称密钥删除,并重新发出请求索要密钥。对于需要频繁交换数据的模块,可建立对称加密信道,每隔t时间更新对称密钥。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1