会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 密码体制 / 无条件安全密码体制

无条件安全密码体制

申请号 CN201510414053.2 申请日 2015-07-08 公开(公告)号 CN106341230A 公开(公告)日 2017-01-18
申请人 吴清山; 吴超; 发明人 吴清山; 吴超;
摘要 本发明涉及一种无条件安全密码体制,它解决了现代密码体制因密文存在冗余度而无法变换为比明文短的随机输出、或因通信体之间难以传送“一次一密”密钥而不能达到无条件安全的问题。其技术要点是:将明文加密处理后的消息分成若干个分组,每一个分组中的多个字符分别用一个或少数几个字符替代,对被替代的字符隐形传递。其特征在于:输出密文的长度比原始明文的长度短,没有冗余,隐形传递信息不在输出密文中隐藏,输入位中某些位的变化在输出位中不是显而易见的。这样发送方就能够安全地把“一次一密”密钥传送给接收方,从而使得传输的消息取得了无条件安全性。本发明用于在传输、储存期间保障信息绝对安全和用于安全传送“一次一密”密钥。
权利要求

1.一种无条件安全密码体制,包括原始明文、“一次一密”密钥、临时密文、输出密文、替代密码算法。其特征在于:输出密文的长度比原始明文的长度短。

2.根据权利要求1中所述的无条件安全密码体制,输出密文的获得是将临时密文每一个分组中的多个字符分别用一个或少数几个字符替代,对被替代的字符隐形传递,即被替代的字符从临时密文编码里消失,不在传输的消息中隐藏,而后在解密时显现出来。

3.根据权利要求2中所述获得输出密文的过程和运用隐形传递信息的技术和手段,明文或者密钥的信息不在传输的消息中隐藏,输入位中某些位的变化在输出位中不是显而易见的,发送方安全地把“一次一密”密钥传送给接收方。

说明书全文

无条件安全密码体制

技术领域

[0001] 本发明属于一种密码体制,尤其是涉及一种无条件安全密码体制。

背景技术

[0002] 无条件安全性又称完善保密性,是对攻击者的计算资源没有限制时的安全性。即使提供了无穷的计算资源,依然无法被攻破,则称这种密码体制是无条件安全的。
[0003] 一次一密方案由Gillber Vermam和Joseph Mauborgne在1918年提出,它使用与消息一样长的随机密钥,该密钥不能重复,只使用一次,保证了每次加/解密所使用的密钥都是不同的,故称为“一次一密”[对应的密码被称为一次一密体制(One-time Pad)]。这[1]种方案是不可破的,因为它产生不带有与明文有任何统计关系的随机输出。
[0004] 1949年,Shannon(香农)证明了只有一次一密的密码体制才是绝对安全的。[2]到目前为止,除一次一密方案外,没有一个已知的实际加密方案在密码体制无条件安全定义下可以被证明是绝对安全的。因此,长期以来人们一直认为,一次一密密码体制是唯一一种[1]绝对不可破译的密码系统,无条件安全的算法是不存在的。 也就是说,除了一次一密方案之外,再没有其他加密方案是无条件安全的。
[0005] 事实上,一次一密方案虽然性能卓越,但实际上不实用。因为发送方Alice和接收方Bob必须每次安全更新随机密钥,这在当前技术水平下并不现实,至今就没有人能够通过计算机和通信网络实现一个一次一密密码系统。
[0006] 那么,一个加密方案怎样才能达到无条件安全呢?60多年前,Shannon提出了下[3]面的思想:仅当密钥至少和明文一样长时,才能达到无条件安全。 从这个意义上讲,一个加密方案要达到无条件安全,密钥必须与被加密的消息一样长且是完全随机的,这就要求密钥必须是保密的,并且只使用一次,即“一次一密”。要满足这个要求,就必须在Alice和Bob之间建立一个安全通道,以便Alice将随机密钥安全地传送给Bob。由于产生和分发该随机密钥存在实现上的巨大困难,从而导致“一次一密”的实际应用受到限制。
[0007] 一个加密方案达到无条件安全之所以要求密钥必须与被加密的消息一样长,一方面因为与明文相比,特别短的密钥的周期重复,有可能被攻击者通过密码分析而被破解;另一方面因为密钥的长度等于明文的长度,那么密文的长度就和明文的长度相等,加上密钥是随机的,此时明文与密文之间就是互相独立的,因此密文没有给出明文的任何信息(除了长度)。攻击者没有办法猜测密钥,仅根据密文就能破译出明文是不行的。实际上,密文是公开的,明文的有效位长是有限的,如果密钥与明文一样长,密钥和明文的有效位长就可以根据密文的长度来确定,一旦相同长度的密钥用完了,在第二条消息中重复使用是相当危险的,因为第一条消息的任何信息都会对第二条消息的破译有好处。有了密钥长度,攻击者可以有效地穷举密钥空间,对截获的密文尝试所有可能的密钥,以期得到有意义的明文,或者通过选择特定的明文进行加 密,有可能产生更多关于密钥的消息。如果攻击者得到了密文对应的明文,她就能找到密钥,因为对于一次一密来说,密文和明文就决定了密钥。因此当密钥与明文一样长时,一次一密密码体制在惟密文攻击下是安全的,但在已知明文或选择明文攻击下就不一定安全,这也是将与明文一样长的密钥用于一次一密密码体制的一个缺陷。
[0008] 现代的密码技术除了一次一密方案之外,都只具有计算安全性,其安全性在很大程度上取决于密钥的长度,密钥越长,安全性越好。密钥长度的增长,对分组密码来讲,必然使得密文的长度大于明文的长度,因此分组密码不能达到无条件安全,因为密文存在冗余度,密文不是至少与明文一样长的随机输出。在通常使用的流密码中,密钥流产生时会呈现出一定长度的周期,其输出也就是周期序列,所以实际应用中的流密码是不可能实现一次一密密码体制的。另外,公钥密码体制不能提供无条件的安全,这是由于密文的任何一位不能略去,一个攻击者在得到一个密文之后,可以对每个可能的明文进行加密,直到得到相同的密文,此时对应的明文就是要破译的结果。
[0009] 然而,任何秘密信息要保证安全传输和储存都要使用密码加密,任何一种形式的加密都会产生密文,对密码算法任何一种形式的攻击都必须基于密文,因为恢复明文所需要的信息就隐藏在密文中。如果将密码体制加密产生的密文变换成比原始明文短的消息,那么密钥的随机位就已经消失了,明文或者密钥的信息就不在传输的消息中隐藏,从而减少了攻击者(密码分析者)Eve从传输数据中获取的信息量,Eve从获取的密文中就提取不到明文或者密钥的信息,密钥及其长度是不可知的,密钥是否完全随机不是显而易见的,这样变换所得到的比原始明文短的密文没有冗余,它与明文、密钥不存在任何形式的统计关系,即使提供了无穷的计算资源,Eve也无法破译该系统,Alice就能够安全地将随机密钥传送给Bob。所以说,造成密码体制不能到达无条件安全和一次一密方案不实用的原因,不在于一次一密密钥传递的困难性,而是在于密文字符位或字符个数减少即密文变短的困难性。
[0010] 文献名称及出处:
[0011] [1]胡向东,魏琴芳,胡蓉.应用密码学[M].电子工业出版社2011.5第二版第2章2·2·2节.
[0012] [2]张健、任洪娥、陈宇.密码学原理及应用技术[M].清华大学出版社2011.8第6章.
[0013] [3]张健、任洪娥、陈宇.密码学原理及应用技术[M].清华大学出版社2011.8第2章2·2·2节.

发明内容

[0014] 本发明要解决的技术问题是:提供一种除一次一密方案之外使一个密码体制达到无条件安全的技术方案,解决现代密码体制因密文存在冗余度而无法变换为比明文短的随机输出、或因通信体之间难以传送“一次一密”密钥而不能达到无条件安全的问题。
[0015] 为解决上述所要解决的问题,本发明是这样实现的:将原始明文经过加密处理后的消息(下称临时密文)分组中的多个字符,分别用一个或少数几个字符来替代,将临时密文变换为比原始明文短的消息,下称输出密文。对被替代的字符隐形传递,即被替代的字符从临时密文编码里消失,不在传输的消息中隐藏, 而后在解密时显现出来。
[0016] 由于采用了上述方案,在信息传输过程中使用的符号比原始明文实际所需要的符号少,输出密文比原始明文的冗余更少。
[0017] 由于隐形信息不在传输的消息中隐藏,输出位中某些位的变化在输出位中不是显而易见的,而Bob解密时能得到被替代的字符,这样Alice就安全地把“一次一密”密钥传送给了Bob。

附图说明

[0018] 图1为密钥长度和密钥确定表。
[0019] 图2为DES中的8个S盒,分别为S1、S2、S3、S4、S5、S6、S7、S8。
[0020] 图3为两个S盒。
[0021] 图4为使用S1盒的一个例子。
[0022] 图5为本发明模型。
[0023] 下面结合附图和具体实施方式对本发明作进一步详细的说明。

具体实施方式

[0024] 首先在通信双方之间建立共享的密钥,用来生成和分配加密密钥。建立共享密钥的方法有多种,其中有一种方法就是发送方Alice和接收方Bob预先秘密共享特定的密码本即主密钥;另一种方法就是使用Diffie-Hellman密钥交换算法来实现通信双方密钥共享;方法之三,让一个可信的第三方(KDC)把密钥分发给Alice和Bob来达到密钥共享的目的,此外还可以使用公钥密码做到这点。这些方法除了主密钥需要人工更换以外,其他各共享密钥均可按照某种协议进行更换。
[0025] 建立共享密钥之后,其次确定用于加/解密的密钥长度和具体密钥,解决这两个问题有两种方式:整体式和分割式。整体式是指将共享密钥的第一个字符的位置或共享密钥某段的某一个字符的位置作为密钥长度的初始位置,该初始位置紧邻的数值作为密钥长度的位数,紧邻数值后面的若干个数字为具体的密钥。一个密钥确定之后,紧挨着该密钥最后一个字符的位置又可作为另一个密钥长度的初始位置使用,依此类推。分割式是指一个密钥长度的初始位置不从固定的某个字符开始,而是由Alice随机选择,即一个密钥确定之后,Alice可以重新选取密钥长度的初始位置,不受其他方的限制,每加密一份报文就更换一次初始位置,改变密钥长度的初始位置就可以得到不同长度的密钥。
[0026] 现在对整体式和分割式做更详细的描述,可以描述成一个密钥长度和密钥确定表,如图1所示。图1中数值为共享密钥,都以两位数来表示。整体式的意思是,共享密钥的第一个两位数87变成了密钥长度的初始位置,26为密钥长度的位数,99122214655947311537614525为具体的密钥。89则为第二个密钥长度的初始位置……或者从共享密钥的第47位起,按上述方法类似处理。分割式的意思是,假设选取99为密钥长度的初始位置,那么共享密钥的第三个两位数变成了第一个密钥长度的初始位置,则12为密钥长度位数,12后面的12个数字为具体的密钥;如果选16为第二个密钥长度的初始位置,那么72为密钥长度 位数,72后面的72个数字为具体的密钥,等等。
[0027] 选定了密钥,下面的任务就是对原始明文加密处理。加密可采用现代密码技术,适合任何密码算法。不过除序列密码之外,加密过程使用的密钥长度一定要比原始明文长,因为序列密码的密钥长度须长于被加密信息的长度,而这在实际使用中是没有意义的。如果在上述整体式中出现密钥长度短于或等于原始明文的长度时,可以将两个或连续多个密钥合并形成一个长的密钥,合并多少个密钥,这取决于通信双方之间的协商。分割式可以避免此类事情的发生。
[0028] 临时密文产生之后,接下来的事情就是将临时密文变换成比原始明文长度短的输出密文。
[0029] 首先,将临时密文在密钥的控制下分成长度不等的若干个分组,每个分组含有多个字符,然后将临时密钥每一个分组中的多个字符分别用一个或少数几个字符替代,对被替代的字符隐形传递。最后将各个输出密文分组连接起来形成输出密文。下面用一个简单的例子来具体描述这一过程。为了表述方便,这里以数据加密标准DES中的8个S盒为基本变换操作模式,DES中的8个S盒如图2所示。
[0030] 加密算法是这样的:取输入的二进制数的第1和第6位所组成的二进制数值所代表的行号,中间4位所组成的二进制数所代表的列号,处在所选中的行和列交叉点的数字就是该S盒的输出。S盒在比特密钥控制下选取。
[0031] 例1.现在假设临时密文仅由一个分组组成,消息有8位00101110,前6位是001011,此6位对于S1行号是01(对应第1行),而列号是0101(对应第5列),第1行与第5列交叉位置所对应的数是2,因此输出是0010。下面给出描述使用S1盒的例子,如图4所示。
[0032] 现在将S1盒输出0010和临时密文00101110中的另外2位连接起来作为下一次变换的输入,用和前面相同的方法,把6位输入变成4位输出。现假设使用S3,输入为001010,行号是00,列号是0101,交叉点的数字为15,因此输出密文是1111。本例中临时密文有4个比特位被略去,临时密文00101110中的8个比特被输出密文1111中的4个比特替代。当Alice启动数据传输时,消息00101110已经消失了,而后Bob将输出密文1111解密后的消息为00101110,那么被替代的字符就显现出来了。这就是隐形传递信息的技巧所在。如果将各个输出密文分组连接起来就构成了比临时密文短的消息。而本发明需要一个比原始明文短的密文,有两种方法可以实现。
[0033] 第一种方法:利用较大的临时密文分组。将临时密文分成长度足够长的分组,每个分组经替代变换可以得到跟每一个S盒相同的输出位数,连接各个分组的输出就形成了比原始明文短的消息。例如,假设原始明文有20个比特向量,临时密文有48个比特向量,如果将临时密文分成大小相等的两个分组,那么每个分组各有24个比特向量,每一个分组若用DES中的8个S盒变换,则输出密文至少有4+4=8个比特向量,比原始明文少12个比特向量。
[0034] 第二种方法:用到较多不同选择矩阵的S盒。如果按第一种方法得到的消息比原始明文长,就将临时密文变换后所得到的相邻两个分组连接起来,组成一个新的分组,在不同选择矩阵的S盒下运行。由于选 择矩阵的行列数不同,S盒的输入与输出位数也就不同,比如图3所示的两个S盒,每个S盒的输入是4位,得到的输出只有3位。还有的S盒的输出只有1个字符位,这就是能用一个或少数几个字符替代多个字符。如此继续下去,就可得到比原始明文短的输出密文。
[0035] 至此,还有一个很重要的工作要完成,那就是Alice将随机密钥安全地传送给Bob。Alice怎样做到这一点呢?Bob在接到新密钥之前只知道Alice过去的密钥,Alice在启动数据传输时需要把新的密钥告诉给Bob,使Bob能够知道目前使用的是哪个密钥,从而能够确定该用哪个解密。为了区别每个不同的密钥,需要给每个密钥赋予标识符ID,即密钥长度的初始位置。在通信之前,Alice和Bob有一个共享的密钥KAB,如果Alice要和Bob进行通信,那么Bob使用Alice发送的ID作为索引,从KAB中就能查找到加密密钥。这样由KAB产生的密钥不须参与传递,密钥没有被窃取的危险。ID仅表示密钥长度的初始位置,它不会透露相应KAB中的任何内容,因此ID可以被公开,加密密钥基于公开渠道就可以实现分发,Alice也可以随机选择ID,因而每次加密可以使用不同的密钥,即一次一密,并且密钥信息能从一方传到另一方。但是如果用该密钥加密数据产生的密文不变换为比原始明文短的消息的话,那么Alice是很难将随机密钥安全地传送给Bob的,因为密钥的随机位没有从这种密文中消失,密文的字符位或字符个数没有减少,这会造成很严重的问题。首先,由于现代密码技术只具有混合特性,密码变换要求对密钥敏感,密钥的微小变化会带来密文的显著不同。一旦密文中出现了相同的数值,Eve会发现Alice用的是相同的密钥。由于许多现实世界中的消息都是由重复的片段组成的,在现代密码技术中有些密码算法在加密变换中使用了相同的密钥,比如分组密码对每个分组使用相同的密钥执行加密变换。使用相同的密钥就必须冒着会泄露的危险;其次,如果Eve在充分长的时间内观察了Alice和Bob之间的通信,并且已经设法获得了一些密文对应的明文,她可以利用ID为索引标志开始建立一个密码本,Eve没有必要计算K,她只要查询密码本中的密文所对应的明文来找到KAB或者是由KAB得到的密钥;第三,如果Alice用一个计算机来生成随机数,由于计算机是有限状态机,计算机的这一固有属性决定了不可能取得完全的随机性。同样,密文的长度是有限的,如果不将密文变换成比原始明文短的消息,那么输出密文也不可能取得完全的随机性。
[0036] 这将会导致“一次一密”密钥不能安全传递,因此需要一种在传输密文时不会泄露能被Eve利用的信息的方法,这需要用到隐形传递信息的技巧和手段。隐形传递信息的技术要点是将临时密文分组中的多个字符分别用一个或少数几个字符来替代。在此过程中,临时密文的字符位或字符个数不断减少,当形成输出密文时,加密密钥被消除,当Alice传输信息时,加密密钥的随机位已经消失了,密钥信息不在输出密文中隐藏,输出密文没有给出密钥的信息,输入位中某些位的变化在输出位中不是显而易见的。还是以例1中使用的加密变换方法来描述这点。
[0037] 例2.假设消息为1101000101,前6位对于S1行号是10(对应第2行),列号是1010(对应第10列),行与列的交叉点是9,因此输出是1001。把1001与消息1101000101的第7位和第8位连接起来,即100101作为下一次变换的输入,比如对于S5,行号是11,列号是0010,因此输出是1100,然后再把1100与消息 1101000101的最后两位连接起来,即
110001作为下一次变换的输入,比如对于S8行号是11,列号是1000,因此输出是1111,所以消息1101000101经变换得到输出密文1111。
[0038] 本例中有6个比特位被略去,消息1101000101变为??????1111,问号表示这几位未知,这样一来则密文不能解密。比如对于流密码,每次加密和解密操作就是按位异或,根据异或操作的特性,此时解密时不可以进行的。Eve从输出密文中不能猜测到密钥长度和具体的密钥以及临时密文和原始明文的长度到底是多少。此外,在由临时密文变换成输出密文的过程中,上一次变换的输出与消息中另外的比特连接起来作为下一次的输入,随着输入位数或字符个数的不断减少,矩阵的行列数在随机改变,得到的输出密文可以是选择矩阵内任何一行或任何一列对应的输出。例如假设临时密文是101101100101,那么输出密文对于DES来讲可以是0000,也可以是1111,只要输出密文比原始明文短,这些消息的可能性都是相等的。由于Eve只知道输出密文,对隐形信息一无所知,她截获了输出密文不会得到任何关于临时密文和密钥的信息,临时密文和密钥的改变在输出密文中不是显而易见的。因此密钥完全随机与否对Eve来说一样起作用,可以用伪随机序列来取得真正的随机数,因而标识符ID可以事先确定而不必传送。接着Alice用一表示密钥长度初始位置的标识符ID和输出密文一起传送给Bob,或者在标识符ID事先确定的情况下,Alice只将输出密文传送给Bob。这样就完成了将随机密钥安全地传送给Bob的过程。
[0039] 解密过程本质上和加密过程是一样的,仅需要逆替代和使用逆序密钥。Bob要解密,首先确定密钥长度和确定密钥。Bob可利用Alice传送的标识符或双方事先确定的标识符即可得到。接下来Bob将输出密文反替代成临时密文,也就是把临时密文替换成输出密文这一过程倒过来,Bob可查询逆S盒而得到临时密文,之后根据临时密文和密钥通过解密算法恢复明文,这就是原始的明文消息。
[0040] 有益效果
[0041] 从密码系统安全的角度来看,理论上“一次一密”密码最安全,但它实现上困难较多,“一次一密”密码存在的主要问题就是每次进行保密通信时发送方Alice如何将随机密钥安全地传送给接收方Bob。长久以来,人们一直渴望解决,但始终未能获得成功。这是由于人们在解决这个问题的过程中总是依照“一次一密”方案和遵从Shannon(香农)提出的达到无条件安全的思想,只是一味地在“密钥必须与被加密的消息一样长”的圈子里打转,而不去考虑其他方面的可能性所造成的。
[0042] 其实,一个加密方案不能达到无条件安全不是密钥长度的问题。换句话说就是,一个密码体制达到无条件安全与密钥的长度无关,因为1)密钥小于明文的长度,密码算法不足以抵抗穷举搜索的攻击,密码系统很容易被攻击者通过密码分析而破解;2)密钥与被加密的消息一样长,那么密文和明文有相同的长度,这就暴露了密钥长度的信息,使得随机密钥无法安全传送,从而导致“一次一密”密码的实际应用受到限制,而且还会带来不完全安全的缺陷;3)密钥大于明文的长度,密文存在冗余度,随机性不能保证,密码系统不能提供无条件安全。这就是说,一个密码体制达到无条件安全并不取决于密钥的长度,关键取决于输出密文是否为比原始明文短的随机输出。也就是说,密码体制达到无条件安全不是密钥必须与被加 密的消息一样长,而是输出密文必须比原始明文短。因为只有当输出密文比原始明文短时,密钥的随机位才能从明文经过加密产生的密文(临时密文)里消失,表示原始明文的字符个数才能减少,这样密钥或者明文信息就不在传输的消息中隐藏,攻击者Eve从截获的密文中就提取不到密钥或者明文的消息,因此密钥及其长度是不可知的,密钥的随机位不是显而易见的,变换所得到的比原始明文短的输出密文总是随机的(关于这点后面会详细描述)。只有这样,密钥的长度才不会受到限制,Alice才能够安全地把随机密钥传送给Bob。
[0043] 要实现输出密文比原始明文短,就必须减少临时密文的字符位或字符个数,而现代密码体制加密产生的密文的字符位或字符个数不能减少,无论是对称密码体制还是公钥密码体制,情况都是这样。因为1)如果一个密文的字符改变了,相应明文的一个字符或多个字符也将会改变;2)密文的一个字符位被略去或者被中止,解密时并没有一个线索表明对被略去或者被中止的位如何处理。所以,在现有技术条件下,密文的字符位或字符个数不能减少,更不用说将密文变换成比明文短的消息。这也是现代密码学利用各种各样的数学方法来加密数据,并不能保证信息达到无条件安全的最主要原因。
[0044] 本发明利用一个或少数几个字符替代多个字符的独特功能,对明文加密处理后的消息通过运用这种替代变换起到隐形的技巧和手段突破传统替代密码体制极限超水平地进行字符位或字符个数的减少,从而使得输出密文的长度比原始明文的长度短。
[0045] 本发明采用的替代密码算法与传统的替代密码算法不同,最大的区别在于:不是用一个字符替代另一个字符,而是用一个或少数几个字符替代多个字符。这种替代变换的优点是:减少了临时密文的字符位或字符个数,同时发挥了隐形传递信息的功能,达到了安全传送随机密钥的效果。
[0046] 设有m位原始明文,n位临时密文,m′位输出密文(m′<m<n),如果将临时密文变换成比原始明文短的消息,那么临时密文的n-m′个字符位被略去或者被中止。这就是说临时密文中有n-m′个字符被减少。也就是说,临时密文中的n个字符被输出密文的m′个字符替代。当Alice在传输消息时,这些被替代的字符已经从临时密文编码里消失了,而后在Bob解密时显现出来。因为由输出密文恢复到临时密文是反替代过程,这就起到了隐形传递信息的作用。隐形传递信息的最大特点就是,隐形信息不由公开信息作掩护,不在传输的消息中隐藏,第三方感觉不到隐形信息的存在。因此要得到一个唯一的解密需要比整个输出密文更多的字符,这样会有几个不同的密钥都能把不同的临时密文替换成同样的输出密文,或者说加密替换不同的临时密文分组会得到相同的输出密文分组。这里还是以DES中的8个S盒为基本变换模式,举一个例子来描述。
[0047] 假设临时密文为1011001011010001101110011100,划分临时密文分组的密钥为8,10,10则临时密文分组序列为10110010、1101000110、1110011100对各组进行加密变换会得到比临时密文分组比特位数少的输出密文。第一分组和第二分组分别是例1和例2中的临时密文,从上两例可以看到,第一分组和第二分组加密后会得到相同的输出1111。如果第三个分组的前8个比特的输出与后面两个比特放在一起作为下一次 的输入,也会得到与第一、第二两个分组同样的输出。现在可以描述第三分组发生了什么,假设第三分组前
8位的输出是1001,将1001和后面两位连在一起得到100100,此6位对于S6得到输出为
1111。
[0048] 当然并不是每次对每一个临时密文分组执行加密变换都能得到同样一个密文,也就是说这并不意味着每一个相同的输出密文分组序列一定会发生,但只要输出密文比原始明文短,在选择矩阵相同的情况下,加密替换不同的明文得到相同密文的可能性都是相等的。比如本例中的三个临时密文分组替换后得到的输出密文可以是0~15这个16个数字中的任何一个。另外,由于每个密文分组是独立的,在选择矩阵不相同的情况下,加密各个临时密文分组所得到的输出密文分组的长度是不相等的,即每个输出密文分组中的字符个数是不固定的。因为选择矩阵的行列数不同,S盒的输入与输出位数也就不同,将所有的输出密文分组组合在一起,Eve在没有特征或者标记的情况下,无法区别密文分组链和字符链。例如:假设输出密文是0010,那么各输出密文分组可以是0-01-0或者是00-10或者是001-0,还可以是0-0-1-0…也就是说,输出密文中的字符有各种不同的概率分布,同时由于不被输出的信息没有隐藏在传输的消息中,Eve寻遍整个密文空间也不能得到临时密文。因此每个输出密文分组的长度不能确定,每个临时密文分组的字符位数和每一位中的字符无法预测,临时密文分组每个字符位中的字符都有相等的发生概率,只要输出密文比原始明文短,每一个不同长度的临时密文发生的可能性都是相等的。所以给定输出密文时隐形信息的不确定性比该密文本身的不确定性要大。也就是说,随着截获密文的增多,能够得到隐形信息的不确定性越来越大。这说明每一个输出密文字符与任何一个临时密文都有可能对应,或者说所有的明文与任何一个密文都可能相对应。输入位中某些位的变化在输出位中不是显而易见的,这种特性使得“一次一密”密钥传送起来变得很容易。
[0049] 本发明中的Alice和Bob有一个共享的密钥KAB,Alice和Bob不需要用KAB的全部来作为他们通信的密钥。既然他们有了一个同样的数KAB,他们就可以用事先约定的程序来产生密钥,例如他们可以用KAB中间的56个位来得到一个加密密钥K。如何传送这个密钥?解决这一问题的途径之一是引入标识符ID,只要Alice传送一个标识符告知Bob,她就能用和Alice同样的方法从KAB中得到加密密钥K,这样就把密钥从一方传递给了另一方。关键的问题是怎样更新密钥,这可通过改变标识符来完成。标识符仅表示密钥长度的初始位置,与密钥的内容无关,每次通信时Alice可以不受其他方的限制,临时选用不同的标识符并可基于公开的信道传送给Bob,真正做到“一次一密”。
[0050] 虽然传送一个标识符就等于传送了一个密钥,传送不同的标识符就等于传送了不同长度的密钥。ID可以自由选择,则密钥可以随机产生。但存在的问题是,如果用ID传送的这个密钥加密的密文的字符位或字符个数不减少为比原始明文字符位或字符个数少的话,Alice是不可能将随机密钥安全地传送给Bob的。因为密钥的随机位没有从这个密文中消失,密钥信息就隐藏在该密文中,密码分析者的任务就是在不知道系统使用密钥的情况下,从截获的密文中提取出有关密钥或者明文的消息。传统意义上的一次一密是限制在等概率上进行考虑的结果,在一次一密中密钥与密文是等概率发生的,即每个密钥有相等的概率,每个 密文以等可能概率出现,明文、密钥、密文的长度、空间大小和取值范围都是一样的。如果密文中出现了相同的数值,Eve会发现Alice用的是相同的K,如果Eve得到了密文对应的明文,她就能找到K。本发明具备隐形传递信息的功能,原始明文、临时密文、输出密文的长度各不相同,它们的空间大小也是不同的。也就是说,它们不是以等可能概率发生的,而且仅有输出密文以公开的状态存在着、显示着,其他消息的位序列是不可见的。这就意味着它们是彼此独立的。因此,隐形信息的概率不受输出密文的影响,K值的改变在输出密文中并非显而易见。因为输出密文中出现的相同的数值不是相同的临时密文同相同的K加密的结果,密文是不确定的。所以Eve观察到的总是随机的密文,密钥是否完全随机对Eve来说都一样起作用。因此标识符ID可以事先确定而不必传送,因为没有人能够在未获知临时密文的情况下同时预测到密钥长度的初始位置和其邻近的数据。这样使得不必太频繁的更换主密钥,一个主密钥能反复使用乃至数年不变。若要做到一次会话使用一个密钥,只要改变密钥长度的初始位置即可。也可以使用公钥密码和Diffiie-Hellman密钥交换算法或者通过可信的第三方来达到通信双方更新共享密钥的目的。有了更新后的共享密钥,密钥长度的初始位置虽未变,但密钥的长度和内容已全部改变。在此情况下,标识符同样可以事先确定而不必传送。这样一来,只要输出密文的长度比原始明文的长度短,传送标识符和不传送标识符Alice都能安全地把“一次一密”密钥传送给Bob。
[0051] 由于输出密文的长度比原始明文的长度短,那么在信息传输过程中所传递的符号比原始明文实际所需要的符号少,这就节省了网络传输的时间和存储空间。正因为输出密文的长度比原始明文的长度短,所以传输的消息比原始明文的冗余更少,明文空间的熵与密文空间的熵存在负的不确定性。因此Eve无法由生成的输出密文得到隐形信息,也不能对各种字符做频率统计分析,从输出密文中得知密钥是否完全随机是不行的。没有隐形信息,选择明文或者选择密文等攻击都是不能的。系统的安全性因而应该基于信息的隐形,而不是所用密钥的隐藏性或保密性。这也极大地改变了现代密码学系统的安全性只能依赖于密钥保密的状况。本发明以隐形传递信息为安全依据,并不考虑计算的时间,与计算能力无关,这一点区别于现有的其他密码算法。由于隐形信息不在输出密文中,输出密文与原始明文、临时密文、密钥不存在任何形式的统计关系,输出密文不能给出唯一决定相应明文的足够信息,无论Eve截获多少密文、花费多少时间,都不能解密密文。这样Alice和Bob对其传输的信息取得了无条件安全性。此外,当密钥与被加密的消息一样长时,减少密文的字符位或字符个数Alice也能够安全地把随机密钥传送给Bob。这样就解决了现代密码体制不能达到无条件安全的问题,同时也解决了“一次一密”方案不实用的难题。
[0052] 密码学领域存在着一个很重要的事实,很多加密算法的安全性并没有在理论上得到严格的证明,比如基于大整数分解问题的公钥密码体制,到目前为止,没有人能够证明分解两个大素数的乘积是困难的,安全性基于有限域上离散对数的密码体制,同样也没有理论证明其安全性等价于离散对数问题。还有在确定型和非确定型图灵机上能够在多项式时间内求解的诸多问题中,至今也没能证明是否NP=P,也没能证明NP≠P,还有......因此人们一直认为,安全不是一种可以证明的特性,只能说在某些已知攻击下是安全的。 本发明算法的安全性能够在理论上得到严格证明,证明过程从略。
[0053] 当构造一个无条件安全密码系统时,除了需要考虑算法的安全性之外,还需要同时考虑工程方面的问题。因为如果传输秘密信息所花费的代价超过了保密内容的价值,那么该系统也变得不实用。比如使用传统意义上的一次一密,它需要交换和明文一样长的密钥,而这个密钥只能用一次。这种方法要求Alice和Bob见面或者在他们之间首先建立一个安全通道,这是非常昂贵的。本发明中的输出密文在现代计算机网络和通信网络上就可以传输,不必考虑传输距离和成本因素。
[0054] 所以本发明安全且方便实用。