一种采用不确定加密算法的分段加密方法

文档序号:7801352阅读:267来源:国知局
专利名称:一种采用不确定加密算法的分段加密方法
技术领域
本发明属于密码学领域,涉及一种新型的加密方法,特别是一种分段变换算法的加密方法。
背景技术
1949 ^ C. E. Shannon 发表文章“Communication Theory of Secrecy Systems", 使得密码学成为一门科学。该文把信息论引入密码学,用统计的观点对信源、密码源、接受密文进行数学描述和定量分析,同时他也提出设计密码的基本观点。关于伪密钥的问题, Shannon有非常精辟的分析和研究,Shannon根据信息论和冗余相关理论,定义了伪密钥、 唯一解距离、理想保密,而一般现实的密码体制是不能达到理想保密的,即随着密文的长度增加,伪密钥会减少到最后只剩下唯一一个正确的密钥,这会威胁密码体制的安全。他对唯密文攻击的情况下的密码分析进行了研究,指出随着密文长度的增加,伪密钥的数量会逐步减少。现有的加密方法符合以上的分析,现有的加密方法一般采用一种确定的算法来加密,通过一种确定的算法加密,在已知密文的情况下,由于算法确定,从理论上说可以将密钥空间中所有的密钥逐一拿来尝试解密密文,如果解密得到得到无意义的密文即可认定密钥错误;解密得到有意义的明文则对应密钥可能是正确的密钥或者伪密钥。可以根据信息论和概率论来初步估算伪密钥的数量,对于小于唯一解距离的密文,一些文献根据语言相应的冗余计算出可能的伪密钥数目,大约为
N=2H(k)-nD_1
其中D为语言的冗余度,H(k)为密码系统的熵,一般情况下等于密钥长度,η为明文长度。根据一些数据,甚至可以得出对于有56bit的密钥和用ASCII字符表示的英文消息而言,DES的唯一解距离大约是8. 2个ASCII字符,大约66bit,针对现代的较长的256bit长密钥的分组密码算法,ASCII文本加密算法的唯一解距离才是37. 6个字符,显然获得大大超过37. 6个字符的密文的条件是很容易达到的。这对密码分析是有利的,包括各种惟密文分析还有软磨硬泡攻击。另外一面,这影响到算法的安全性。假如将明文分为小于惟一解距离的小段进行加密,并且算法是保密的,则密码分析者将无从利用以上的缺陷。

发明内容
从信息论的角度,密码系统能够给监听者的不确定性越大,破译的难度就越大,泄露的信息量就越小,密码系统就越安全。在密码编码和分析中,一般考虑算法是公开的,一些现实的民用密码,一般也公开算法。注意到,算法之所以公开的理由主要有以下几点1) 算法的标准化和广泛使用使得算法需要公开;2)便于算法的公开安全评测和改进;3)加密依赖的软件硬件实现原则上说是可以被采用逆向工程破译的,一旦采用诸如反汇编之类的方法,密码算法必然暴露。4)算法是一个大头,需要大量数据描述或实现,不像密钥只要少量数据,很难保密,不能指望它是保密的,想要保密它也困难;5)算法由于是多用户使用,泄密的可能性较大。
对于算法是否需要保密,一直也存在争议,实际非常重要的应用中,比如军事中, 算法往往是保密的。但是在一般应用中很难让算法保密。密码算法的目的是要尽量给对方提供少的信息,而香农用不确定性来度量信息, 假如能够给对方最大的不确定性,则信息量最小。密码体制如果能够给密码分析者越大的不确定性,则就越安全。密码算法作为一个五元组{明文空间P,密钥空间K,密文空间C, 加密算法E,解密算法D}。这其中明文由密文C、密钥K和解密算法D所确定
P=Dk(C)
而密码分析者已知的最基本的条件是密文C,要给予对手较大的不确定性,要么是密钥 K不确定,要么是算法D不确定。我们现代密码学都依赖密钥K的不确定性来保障安全性, 但是密钥空间总是有限的。由于明文的高度冗余,可能密码体制的明文空间中的许多明文是无意义的,即现实可能的明文空间P’和密码体制的明文空间P是有很大的差异的,前者只是后者的一小部分。这大大消除了明文的不确定性,因为大量无意义的明文可以被排除, 假如剩下的有意义的明文越少,就会越来越不安全。可见由于冗余,密钥的不确定性可以被逐步减少,最终可能只剩下一个或者几个有意义的明文,这是香农唯一解距离的由来。为了增加明文的不确定性,我们可以从另外一个角度着手,用算法的不确定性来给密码分析设置障碍,实际上,算法可能是无穷无尽的,且可能是多重或者组合的加密,而且明文和密文的长度也可能不一致,这给密码分析者带来了巨大的不确定性,如果不能通过一些信息对算法做出一些确定,密码分析者根本无法着手。实际上,现在军事上使用的密码大多数都是依靠内部专家设计和评估,对算法进行保密的。本发明一改过去加密采用单一算法,而且算法公开的弊端,采用不确定算法分段进行加密,分段的长度小于惟一解距离,以避免那种惟密文分析。考虑以上公开算法的因素,本发明中可以采用得到公开测评的安全算法,也可以采用保密的加密算法;本发明中这个密码系统实现可以是公开的,由于它包含了多种加密算法(密码算法),所以系统的公开并不能够让密码分析者确定是采用何种算法加密;本发明中采用压缩的编号来代表算法, 这样无需大量的数据。本发明采用申请人提出的广义密钥的概念,将密码算法的信息也融入密钥中,即广义密钥包含了所采用的密码算法信息和每一个算法或者每一分段所采用密钥的信息。本发明的加密方法如下,首先是密码系统的建立
建立一个密码算法库,可以收纳各种各样的安全的密码算法,算法库中有标准化的、常用的密码算法,也有未公开的、保密的算法,只是和特定的接受方通信用的未知、且精心设计的安全密码算法、自己设计的算法,对所有算法进行编码。算法的编码公开的算法采用公开统一的编码,分组长度不同的同一算法视为不同的算法而采用不同的编码,同一算法的不同的加密模式的运用也采用不同的编码,如 ecb、cbc等;未公开的算法采用双方约定的编码,这些编码是预留的。算法数量为N,则算法编码长度取值为当Iog2N为整数,取Iog2N5Iog2N非整数,取Iog2N的整数部分+1。不妨假设算法编码为A。加密对于不同的分段采用不同的算法,需要不同位置算法的编码序列,选择一个密钥AK产生一个安全的序列将产生不同位置分段的密码算法这一部分编码A作为密钥的一部分,与传统意义上的加密用的密钥K结合起来,作为一种广义密钥GK,
GK=AK I NK
4其中I表示合并,NK代表狭义的传统的密钥以及一些需要的参数,比如初始向量IV, 由于各个算法的密钥长度不一,NK的长度应该不低于算法库中密钥库的算法中密钥以及所需其他参数长度累加的最长的长度。AK的长度是确定的。NK中参数的取用是根据算法编码来确定的,比如,有些模式下有初始向量,应该规定哪些位置的数据是密钥,哪些是初始向量;再比如三重DES,应该规定各重的密钥和其他参数的在NK中位置。加密算法和密钥的确定在加密时,根据AK生成一个安全的密钥流确定各个相应分段的采用算法库中的算法代号,根据NK截取对应算法所需要的密钥长度的数据作为密钥,如果还有其他的参数,可以约定按照一定的位置截取,比如最前面是密钥,紧接着是初始向量。算法的加密长度确定每一个算法都应该有确定的加密范围。算法的加密长度 (即分段的长度)根据算法的类型和约定来处理分组密码以及类似的算法采用对应分组长度的倍数,比如一个分组的长度,流密码和一次一密采用一个固定长度,在加密到最后一个分段的时候,一般不一定刚好达到设定的分段长度,需要进行填充处理,并且添加关于填充长度的信息。以上确定了加密的各种参数,包括算法、密钥等参数、明文及其分段,即可根据分段进行对应的加密得到密文。解密是一个相反的过程,由于解密者也有广义密钥,所以解密的一些参数的确定和加密是相似的。通过这种方法设计使得密码系统具有很好的安全性和优势1)由于算法是未知的,密码分析将会无从着手。2)分段加密采用同一算法的密文很短,达不到惟一解距离,增强了安全性。3)在军事背景中可以将一些公开的和不公开的加密算法同时使用。可以满足算法保密性(可以比较安全,当然未经公众评价的算法能否真正安全有争议)和算法标准化 (此时算法需要公开)等互相矛盾的需求。4)通过对算法的融合,在某些方面会体现出综合性能的优化。5)算法的广义密钥空间大大增加,密码系统的不确定性更大。算法也会增加密码系统的复杂性,运算的时间空间复杂度,但是,运算量增加并不是很大,甚至于有点接近于采用单一算法的平均运算量。


图1是本发明的加密流程图。
具体实施例方式以下是本发明的实施例,为了方便,举例相对简单。首先加密系统的设计方面,采用256bit的流密码来生成算法编码的序列,采用流密码是为了保证安全性,即使前面一些段采用的算法被获知,也无从利用它获得其他分段的加密算法。广义密钥的结构为前256bit为AK,后面512bit为NK。约定每一个算法的加密的明文长度为分组密码算法等分组性的算法是单个分组长度,流密码和一次一密等算法为U8bit,这样选取的目的是为了让算法变换更加频繁,而且同一算法的加密长度尽量小,而尽量不要超过惟一解距离。算法库的确定及编码将一些公开的算法进行一定遴选后,选择所有可用的加
5密模式,逐一进行编码,只要算法名称、加密模式和分组长度有不同的,均需要采用不同编码,对每一个编码的算法,均规定NK部分的数据是如何分配的,比如前l-128bit为密钥, 129-256bit为初始向量等。假设算法编码为0至55,同时保留一些预留的编码,假如有些保密的算法则可以采用这些预留的编码,比如56-63。但是,实际上双方约定了三种保密的算法,预留的编码只使用到编码56-58,为了方便,从AK生成的密钥流上每次截取Ibyte的数据(当然每一次取6bit更节省,但是不方便),转换为十进制后,取模59,得到的值作为算法的编码,根据这个编码来确定对应的分段采用的算法。填充假设最后一个分组只有lbyte,就需要进行填充。填充根据这个算法的加密长度确定,由于计算机存储一般以byte为单位,所以,可以规定填充的方法为如果最后剩余的分组长度达不到一个完整的加密分段长度,则需要填充到加密分段长度,比如最后一个算法为128bit的AES,需要填充Mbyte,则填充的byte值全部为15,即在末尾填充15个 00001111。填充部分全部填充0 ;如果最后剩余的分组长度等于一个完整的加密分段长度, 则在这一部分正常加密后,附加一个每一个bit都是1的分段,分段的长度根据AK对应位置的编码确定。解密的时候则根据这一规则来判断填充的长度,解密的最后一个分段如果是全1的二进制数据,则直接去掉最后一个分段;如果不是,则取最后一个byte的值,即可确定填充的长度,去掉对应的byte数,即可去掉填充。根据以上确定的信息,即可对各个对应的分段进行加密处理。解密是相反的过程,由于解密者也拥有GK,所以它也能够进行正确的解密。破译者由于无法获得算法和密钥相关的信息,因而无从解密,由于算法的变化远远大于狭义密钥变化造成的影响,所以在不知道以上信息的情况下破解将会非常困难,可以认为无处下手。
权利要求
1.一种不确定加密算法的分段加密方法,其特征为对明文进行分段加密,每一个明文的分段采用不确定的算法来进行加密,每一个分段采用的密码算法是保密的,加密的时候双方共享一个广义密钥,通过广义密钥确定每一个分段的长度、分段的加密算法以及各种密钥和参数。
2.一种如权利要求1所述的分段加密方法,其特征为广义密钥包含两部分信息AK和 NK,其中AK确定每一个分段的加密算法和加密长度,NK确定每一个算法对应的密钥及其他参数。
3.—种如权利要求2所述的分段加密方法,其特征为包含一个密码算法库,将一些公开的算法进行一定遴选后,选择所有可用的加密模式,逐一进行编码,只要算法名称、加密模式和分组长度有不同的,均需要采用不同编码,同时保留一些预留的编码,假如有些保密的算法则可以采用这些预留的编码,对于每一个不同编码的算法,均在系统中设定NK数据的哪些bit位是代表哪些参数,包括密钥、初始向量,同时也设定对应算法的加密明文的分段的长度。
4.一种如权利要求3所述的分段加密方法,其特征为各个分段的长度确定方法为分组密码算法等分组性的算法是分组长度的固定倍数,流密码和一次一密等算法为一个相同的固定长度。
5.一种如权利要求4所述的分段加密方法,其特征为算法的编码由AK产生一个安全序列来决定,不同分段采用的算法编码值是依次从安全序列上截取固定长度的二进制数据, 转换为十进制后,取模N得到的值作为算法的编码,其中N为所采用的所有算法的数量。
6.一种如权利要求5所述的分段加密方法,其特征为加密时对明文的最后一个分组进行填充,并且附加填充的长度信息后进行分段加密。
7.—种如权利要求6所述的分段加密方法,其特征为对应的解密方法是相反的一个过程,根据GK可以确定每一个分段的加密算法、加密的长度、加密的密钥及其他参数,逐一解密,最后根据填充长度的信息去掉填充,即得到明文。
全文摘要
本发明属于一种新型的加密方法,涉及一种采用不确定加密算法的分段加密方法,它对明文进行分段加密,并且各段加密采用的算法是不确定、保密的,由广义密钥来确定。它通过广义密钥确定每一个分段的长度、分段的加密算法以及各种密钥和参数,由于算法不确定,使得密码分析者无从着手破译,即使获得一些信息,对于破解其他的分段也没有意义。
文档编号H04L9/14GK102404111SQ20111044603
公开日2012年4月4日 申请日期2011年12月28日 优先权日2011年12月28日
发明者王勇 申请人:王勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1