您现在的位置: 首页 > 技术转让 > 对称密钥随机分组密码
对称密钥随机分组密码

对称密钥随机分组密码

  • 专利类型:发明专利
  • 有效期:2020-03-09至2022-03-09
  • 发布日期:2020-03-09
  • 技术成熟度:通过小试
交易价格: ¥面议
  • 法律状态核实
  • 签署交易协议
  • 代办官方过户
  • 交易成功

专利推荐

  • 技术(专利)类型 发明专利
  • 申请号/专利号 201710365721.6 
  • 技术(专利)名称 对称密钥随机分组密码 
  • 项目单位
  • 发明人 高胜法 
  • 行业类别 人类生活必需品
  • 技术成熟度 通过小试
  • 交易价格 ¥面议
  • 联系人 冯爽
  • 发布时间 2020-03-09  
  • 01

    项目简介

    本发明公开了一种对称密钥随机分组密码‑‑SKRBC密码。针对传统分组密码的密钥与密文统计特性存在较密切关联的缺陷,本发明对随机分组密码的基本内涵进行了研究,定义并证明了随机分组密码的某些基本属性,设计了一种全新的具有随机分组密码特征的分组密码。不同于传统分组密码,该密码通过简单的条件选择逻辑根据密钥值选择加密变换,具有密钥与密文统计特性自然隔离、明文分组的长度可任意扩展、密钥空间巨大和加密、解密速度快等主要优点。其简单的条件选择逻辑实现加密变换和可任意扩展分组长度的特点是目前为止所有其他分组密码所不具备的,从而使得SKRBC密码避免了传统分组密码由于繁琐逻辑运算所导致的运行速度下降,且其安全性在理论上没有止境。

    展开
  • 02

    说明书

    技术领域
    本发明涉及对称密钥分组密码的加密、解密方法和技术实现。
    背景技术
    一、概述20世纪70年代,计算机技术和通信技术的发展对信息安全提出了迫切要求,近代密码学及其相关理论和算法于是应运而生。为保证信息的安全,信息传送前需要加密,接收者接收加密的信息后需要解密,而信息的加密和解密则需密码技术予以实现。密码可大体分为公钥密码(public key cipher)和对称密钥密码(symmetric keycipher)。RSA加密算法是一种基于公钥体制实现的加密算法,1977年由罗纳德·李维斯特等人提出。DES和AES加密算法则是基于对称密码体制实现的分组加密算法,其中DES又被称为美国数据加密标准,是1972年由美国IBM公司研制并推出的。AES高级加密标准(AdvancedEncryption Standard),是美国联邦政府2000年10月2日后采用的一种分组加密标准并用来替代原先的DES。分组密码是将明文消息的二进制编码序列x0,x1,…,xi,…xw划分成n比特的若干个输入分组,每个分组x=(x0,x1,…,xn-1),在密钥k=(k0,k1,…,kt-1)控制下变换成对应的输出分组y=(y0,y1,…,ym-1)。其加密函数E:Vn×K→Vm,实现把每个n比特输入分组转换成对应的m比特输出分组,其解密函数D:Vm×K→Vn,则实现把m比特输出分组转换成n比特输入分组,其中Vn和Vm分别是n维和m维矢量空间,K为密钥空间。分组的长度通常取m=n。若m>n,则为有数据扩展的分组密码;若m<n,则为有数据压缩的分组密码。在2阶有限域GF(2)情况下,x和y均为二进制数字序列,其每个分量xi和yi均属于GF(2)。分组密码算法应满足下述要求:1、分组长度n要足够大,以使得分组代换字母表中的元素个数2n足够大,防止穷举攻击法轻易地奏效。DES、IDEA、FEAL和LOKI等分组密码采用了n=64比特分组,AES分组密码采用n=128比特分组。2、密钥量要足够大,尽可能消除弱密钥,以防止密钥穷举攻击奏效。DES采用56比特密钥,IDEA采用128比特密钥,AES密钥长度可以分别是128,192或256比特。3、由密钥确定的变换算法要足够复杂,充分实现明文与密钥的扩散和混淆,没有简单的关系可循,能抗击各种已知的攻击,如差分攻击和线性攻击;有高的非线性阶数,实现复杂的密码变换;使对手破译时除了用穷举法外,无其它捷径可循。4、加密和解密运算简单,易于软件和硬件高速实现。5、差错传播尽可能地小。常用分组密码设计技术:1、替换(Polygram substitution)设明文和密文的分组的长度均为n比特,则明文和密文的每一个分组都有2n个可能的取值。为使加密运算可逆,明文的每个分组都应产生唯一的密文分组,称明文分组到密文分组可逆的变换为替换。2、扩散和混淆(diffusion and confusion)扩散(diffusion)和混淆(confusion)是Shannon提出的设计密码系统的两种基本方法,其目的是为了有效阻止对手从密文的统计特性推测明文和密钥。所谓扩散就是让明文中的每一位影响密文中的多位,由此隐藏明文的统计特性,最理想的扩散是明文中的每一位影响密文中的所有位。所谓混淆是指将密钥和密文之间的统计关系尽可能复杂化,使得对手即使获取了某些密文的统计特性也无法推测密钥。在C.E.Shannon所提出的理想密码系统中,密文的所有统计特性都与所使用的密钥无关。二、本发明所能达到的效果本发明针对传统分组密码的密钥直接参与密文或明文的计算,从而导致的密钥与密文统计特性存在较密切关联的缺陷,设计了一个对称密钥随机分组密码。此密码在加密或解密时,密钥的唯一作用是通过选择逻辑根据秘钥值选择一组不包含密钥信息的函数式,由函数式完成加密或解密变换,以达到隔离密钥与密文统计特性的目的。对于对手而言,这种通过密钥值选择加密函数去完成明文加密变换的加密机制更多地体现了在加密过程中密钥隐秘性的一面。
    发明内容
    一、随机分组密码现有的分组密码设计几乎都是通过把明文和密钥直接进行运算从而产生密文,由此带来的一个弊端是密钥紧密依赖于密文的统计特性。例,DES的16轮变换的输出Li和Ri是由明文信息和密钥信息经扩展、异或、代换、置换和异或运算所生成,DES最终的密文也是由明文信息和密钥信息直接运算所形成。事实上,现有分组密码算法,如IDEA和LOKI9等,其密文均由明文信息和密钥信息直接计算形成,密文与明文和密钥直接相关。由于密钥直接参与密文或明文的计算,对手可采用差分攻击和线性攻击等手段对密钥进行分析并有可能加以破解,因此或许上述特点正是这类分组密码的固有和致命缺陷。一个n比特明文分组具有2n个不同明文分组值,若将其变换为n比特密文分组,则密文分组共有2n个不同的分组值。从2n个明文分组值变换为2n个不同的密文分组值共有2n!种不同的变换,一个理想的随机分组密码应能实现2n!种不同的变换。定义1 一个n比特理想对称密钥随机分组密码是满足下述条件的分组密码:A、不同的密钥有2n!个,分别一一对应对应着2n!种不同的可逆加密变换。B、任给一密钥K,通过条件选择逻辑仅仅根据密钥K选择一个唯一的可逆加密变换Ti:若K=i,则选择Ti,i=0,1,...2n!-1;K不直接参与密文的计算,K及其相关信息不出现在Ti中。C、可逆加密变换Ti实现把明文空间中的任意一个明文变换成密文空间中的唯一一个密文,其逆变换T-1i则实现把密文空间中的任意一个密文变换成明文空间中的唯一一个明文。定义2 一个n比特对称密钥随机分组密码是满足下述条件的分组密码:A、不同的密钥有|K|个,分别一一对应对应着|K|种不同的可逆加密变换,其中K表示密钥空间,|K|表示密钥空间的大小(size)。B、任给一密钥K,通过条件选择逻辑仅仅根据密钥K选择一个唯一的可逆加密变换Ti:若K=i,则选择Ti,i=0,1,...|K|-1;K不直接参与密文的计算,K及其相关信息不出现在Ti中;其中K∈K,K表示密钥,K表示密钥空间。C、可逆加密变换Ti实现把明文空间中的任意一个明文变换成密文空间中的唯一一个密文,其逆变换T-1i则实现把密文空间中的任意一个密文变换成明文空间中的唯一一个明文。定理对于密钥破解攻击,n比特理想对称密钥随机分组密码和n比特对称密钥随机分组密码具有抵抗除穷尽攻击外任何其他攻击的能力。证明由上述定义1和定义2可知,理想随机分组密码和随机分组密码的密钥的唯一作用是从若干个变换中选择一个变换,密钥不参与密文的复杂计算,因此其密钥和密文的统计特性得以自然隔离。因为除穷尽攻击外针对密钥破解的攻击均依赖于这种统计特性,所以针对n比特理想随机分组密码和n比特随机分组密码的密码密钥破解的有效攻击只有穷尽攻击。由上述可知,一个n比特理想随机分组密码,不同的密钥值有2n!个,分别一一对应着2n!种不同的变换,密钥的唯一作用就是通过密钥的简单逻辑运算在2n!种变换中选中一种变换,去实现明文至密文的变换。然而,设计实现一个理想分组密码绝非易事,一个n比特的理想随机分组密码需要2n!个密钥,其密钥比特数为log2(2n!)比特。例,n=5,25!≈2.6×1035,所需密钥比特数约为118比特。理想分组密码的较多密钥比特数为密钥的保存和传送带来了极大的不便,且当n较大时2n!种不同变换的设计实现几乎是不可能的。二、随机子分组本发明把长度为2m比特的分组划分为m个2比特的子分组,然后实现2比特子分组对应24种不同变换中的16种变换。对于2m比特的分组,尽管这种方式所实现变换数远小于22m!,其不同变换数仍达到16m=24m种,且加密或解密时密钥不直接参与加密或解密的复杂运算,达到了密钥与密文或明文的有效隔离。随机子分组由2个输入逻辑变量x1和x0,2个输出变量F和G,4个控制逻辑变量k3、k2、k1、k0(作为密钥输入端)和内部控制逻辑组成,如图1所示。内部控制逻辑实现了16组由Fi和Gi组成的函数表达式分别对应着16种不同的加密变换并可根据k3、k2、k1、k0的不同取值选择其中一种变换。这16组函数式如下所示:0组、F0=x1⊕x0,G0=x0        1组、F1=x1⊙x0,G1=x02组、F2=x1⊕x0,G2=x1        3组、F3=x1⊕x0,4组、F4=x1⊙x0,        5组、F5=x1⊙x0,G5=x16组、F6=x1⊕x0,        7组、F7=x1⊙x0,8组、F8=x1,G8=x1⊕x0,       9组、F9=x1,G9=x1⊙x010组、F10=x0,G10=x1⊕x0,     11组、F11=x0,G11=x1⊙x012组、G12=x1⊙x0      13组、G13=x1⊕x014组、G14=x1⊕x0      15组、G15=x1⊙x0   (1)式上式中,⊕是逻辑变量异或二元运算符,其计算规则为:0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0;⊙是逻辑变量同或二元运算符,其计算规则为:0⊙0=1,0⊙1=0,1⊙0=0,1⊙1=1;-是逻辑变量求补一元运算符,其计算规则为:随机子分组具有如下基本属性:1、根据密钥值变换函数的选择内部控制逻辑根据逻辑变量k3、k2、k1和k0的不同取值选择其中一种变换,其选择逻辑为:若(k3k2k1k0)2=i,则选择Fi和Gi,i=0,1,2,...15。其中,(k3k2k1k0)2表示由逻辑变量k3、k2、k1和k0所组成的二进制数整型变量,i表示一个整型变量,为简单起见其数值以十进制数形式表示。2、加密密钥和解密密钥对随机子分组有10组加密、解密密钥对。当加密、解密密钥对中的一个密钥用于加密时,另一个密钥则用于解密。10组加密、解密密钥对如下所示:1、  2、3、  4、5、  6、7、  8、9、  10、                                                               (2)式3、密钥不直接参与明文或密文的计算不同于DES等分组密码,随机子分组的密钥k3k2k1k0不直接参与明文或密文的计算,密钥仅仅用于控制选择16组函数中的一组函数进行加密或解密变换。由于一组函数一一对应着一种变换,因此选择了函数组就等价于选择了对应的变换。4、输入值变化的或然性扩散随机子分组包含16组函数式,每组均由两个函数式Fi(x1,x0)和Gi(x1,x0)组成,x1和x0中必有一个变量以原变量或反变量的形式同时出现在这两个函数式中而另一个变量仅出现在一个函数式中。因而,当这个同时出现在两个函数式中的变量的值变化时,这个变量的变化或可扩散至两个输出端。当使用随机子分组进行多级加密时,输入值的变化或可扩散至较多个输出端,这种输入值变化扩散的或然性增加了密文的随机性,尤其是对手采用差分分析等攻击手段试图破译密码时极大地增加了密码的安全性。三、随机分组密码组件如图2所示,随机分组密码组件是由若干个随机子分组并联构成,其功能是实现对明文或密文的单轮加密或解密。对于2m比特的分组,随机分组密码组件是由m个随机子分组并联构成,其中m为一个正整数。当随机分组密码组件用于加密时,输入明文是:x2m-1x2m-2...x1x0,其输出密文是:F2m-1F2m-2...F1F0,其密钥是:K=Km-1Km-2...K1K0,其中Ki是密钥位。每个密钥位Ki=(k3k2k1k0)2的可取值二进制数是:0000至1111,i=0,1...m-1。若将组件用于解密变换,x2m-1x2m-2...x1x0输入密文,F2m-1F2m-2...F1F0则输出明文,其解密密钥需将加密密钥的各密钥位Ki经(2)式变换后输入至Km-1Km-2...K1K0端。为阐述随机分组密码组件的工作原理,假设2m=4,K=K1K0,K1=0010,K0=1101,明文为x3x2x1x0=0010。加密时,在密钥位K1K0的控制下,选择(1)式的第2组和第13组函数式分别对x3x2和x1x0进行加密变换。经组件变换后,F3=x3⊕x2=0⊕0=0,F2=x3=0,F0=x1⊕x0=1⊕0=1,即密文为F3F2F1F0=0011。解密时,密钥K1由0010转换为1010,K0由1101转换为0111,输入密文为x3x2x1x0=0011,在密钥位K1K0的控制下,选择(1)式的第10组和第7组函数式分别对x3x2和x1x0进行加密变换。经组件变换后,F3=x2=0,F2=x3⊕x2=0⊕0=0,F1=x1⊙x0=1⊙1=1,即解密后的明文为F3F2F1F0=0010。随机分组密码组件具有如下属性:1、基于密钥值选择加密变换的加密机制,通过条件选择逻辑根据密钥值选择加密变换,密钥不直接参与密文的计算。由于组件的密钥K由m个有序密钥位Ki组成,每个密钥位Ki可选择16个函数组之一,因此每个密钥共可选择m个函数组的2m个函数式。对明文的加密是通过2m个函数分别对m个2比特的明文计算求得密文,密钥K和密钥位Ki并未出现在2m个函数中,因而该组件不同于传统的分组密码,其密钥不直接参与密文或明文的计算。2、密钥空间的大小(size)为16m。若2m=64,则其密钥空间大小为1632=2128,相较于DES分组密码,其密钥空间扩大了约264倍。由于随机分组密码组件的加密是通过有序密钥位Ki去选择不同函数式实现的,因而其并不是理想的随机分组变换。理想的随机分组变换每一个密钥值对应于一种变换,仅仅由密钥值选择一种变换,而不是通过密钥的密钥位去选择函数组中的函数去实现加密变换。理想的随机分组的变换理应仅仅与密钥值相关而与密钥的密钥位Ki无关。四、对称密钥随机分组密码(Symmetrical Key Random Block Cipher,SKRBC)为打破随机分组密码组件中明文位和密文位与密钥位(Ki,i=0,1...15)的一一对应关系,本发明对随机分组密码组件进行了完善。完善后的对称密钥随机分组密码其加密和解密过程如图3(a)、图3(b)、图4(a)和图4(b)所示。数据结构1、分组明文:x0,x1,...x2m-10,x2m-9,其中2m为分组的长度,m是一个较大正整数,一般m≥32,xi∈GF(2)(二阶有限域),i=0,1,...2m-9。2、随机数据信息:R=r7r6r5r4r3r2r2r0,ri∈GF(2),i=0,1...7。3、分组打包数据:w0,w1,...w2m-1,其中2m为分组的长度,m是一个较大正整数,一般m≥32,wi∈GF(2),i=0,1,...2m-1。4、分组密文:F0,F1,...F2m-2,F2m-1,Fi∈GF(2),i=0,1,...2m-1。5、加密密钥和加密子密钥KeyiKeyi=Ki0Ki1...Kim-1,Kij∈GF(16),i=0,1...n-1,j=0,1,...m-1。Key0为加密密钥,Key1...Keyn-1为由Key0生成的加密子密钥。对称密钥随机分组密码加密过程对称分组密码的加密由子密钥生成和加密变换两个阶段组成,其中加密变换共计n轮,详情如下所示。1、子密钥生成如图3(a)中处理模块1所示,此阶段由密钥key0生成n-1个子密钥:key1,key2,...keyn-1,其算法描述为:keyji←key0i⊕Dj,0≤Dj≤15,若n<16且k≠j,则Dk≠Dj;i=0,1,...m-1,j=1,2...n-1,k=1,2...n-1。“⊕”表示按位异或运算符,key0j⊕Dj表示将key0j和Dj逐位进行异或运算。2、加密变换加密过程如图3(b)所示,其步骤为:步骤1、输入2m-8比特的明文,存入x0,x1,...x2m-10,x2m-9,m为一个正整数,xi是明文分组的第i位二进制变量,i=0,1,...2m-9。步骤2、在明文的最后添加一个字节随机数据信息,明文分组打包成2m比特的分组:w2m-1w2m-2...w1w0=x2m-9x2m-10...x1x0r7r6r5r4r3r2r2r0,w2m-1w2m-2...w1w0为打包后的2m比特的分组,r7r6r5r4r3r2r2r0为一字节随机数据信息,r7r6r5r4r3r2r2r0=x7x6x5x4x3x2x1x0⊕x15x14x13x12x11x10x9x8⊕...⊕x2m-9x2m-10x2m-11x2m-12x2m-13x2m-14x2m-15x2m-16⊕表示按位异或,即每个字节相同位权的位进行异或运算。若明文不足2m-8比特,则在明文的末尾以随机数据信息R填充,以凑齐2m比特。最后,把填充后的分组w2m-1w2m-2...w1w0作为本步骤的输出,送入步骤3进行处理。步骤3、数据变换2m比特打包后的分组按字节进行变换:w7w6w5w4w3w2w1w0←w7w6w5w4w3w2w1w0⊕d1w15w14w13w12w11w10w9w8←w15w14w13w12w11w10w9w8⊕d2......w2m-1w2m-2w2m-3w2m-4w2m-5w2m-6w2m-7w2m-8←w2m-1w2m-2w2m-3w2m-4w2m-5w2m-6w2m-7w2m-8⊕d2m/8其中,1≤di≤255,i=1,2...,2m/8,符号“/”表示普通除法运算符,⊕表示按位异或运算符,w2m-1w2m-2...w1w0是步骤2的输出分组。步骤4、n轮加密变换打包后的分组其加密共有n轮。每轮加密变换由随机分组密码组件变换、位两两交换和分组循环左移ci位三个步骤组成。n为一个正整数,n的数值越大输入明文中一位变化所引起数据扩散程度越高,加密算法的安全性亦越高,建议选取n大于等于3作为加密变换的轮数。n轮加密中每轮加密变换步骤:步骤4.1、随机分组密码组件变换随机分组密码组件变换的功能是实现加密变换,待处理数据w2m-1w2m-2...w1w0的各位数据分别送入组件的输入端进行加密变换,并把其输出F2m-1F2m-2...F1F0作为下一步处理的输入。步骤4.2、位两两交换把F2m-1F2m-2...F1F0分成m个二元组:(F2m-1,F2m-2)m-1,...(F3,F2)1,(F1,F0)0,然后把所有分组中的两位分别与不同分组中的位进行交换。设待交换的二元组是(Fx,Fx+1)k,其它任意两个二元组分别是:(Fy,Fy+1)p,(Fz,Fz+1)q,其中0≤x,y,z≤2m-2,0≤k,p,q≤m-1,且x≠y,x≠z,z≠y,k≠p,k≠q,p≠q,满足上述要求的方案有8种,可任选其中任意一种交换方案,例符号表示把其左右两端中的位互换位置。完成位交换后的数据仍记为F2m-1F2m-2...F1F0,并将其作为下一步处理的输入数据。步骤4.3、分组循环左移ci位F2m-1F2m-2...F1F0循环左移ci位,其中0≤ci<2m-1。完成循环左移后的数据仍记为F2m-1F2m-2...F1F0,并将其作为下一轮处理的输入数据。重复4.1、4.2、4.3步骤n次,即完成数据的n轮加密变换。每轮变换的4.3步骤中的循环左移位数ci每轮应选为不同数值,但加密和解密所选ci应相同。第n轮加密变换的输出F2m-1F2m-2...F1F0作为密文输出之。步骤5、结束对称密钥随机分组密码解密过程对称密钥随机分组密码的解密是加密的逆过程。解密过程由解密密钥生成和解密变换两个阶段组成,其中解密变换也需n轮,详情如下所示。1、解密密钥和解密子密钥生成如图4(a)所示,其步骤为:步骤1、根据密钥key0生成子密钥key1、key2...keyn-1子密钥key1...keyn-1的生成与加密子密钥的生成方法相同,详见加密子密钥的生成方法。步骤2、求解key0、key1...keyn-1的解密密钥根据(2)式给出的加密和解密密钥对,分别求出key0、key1...keyn-1的解密密钥,仍存入key0、key1...keyn-1。2、解密变换解密过程如图4(b)所示,其步骤为:步骤1、输入2m-1比特的密文,存入x0,x1,...,x2m-1,m为一个正整数。步骤2、n轮解密变换。步骤2.1分组循环右移ci位x2m-1...x1x0循环右移ci位。此步处理与4.3步骤的循环左移ci位的操作除移位方向不同外其他均相同,右移的次数ci与加密时所移位次数亦相同。步骤2.2位两两交换此步操作与加密变换的4.2步骤相同,操作后的结果仍表示为x2m-1...x1x0。步骤2.3随机分组密码组件变换随机分组密码组件变换的操作与与加密变换的4.1相同。重复步骤2.1、2.2和2.3n次,第n次操作的结果记为F2m-1F...F1F0。步骤3、数据变换。此步操作与与加密变换的步骤3相同。数据变换操作的结果记为F2m-1...F1F0。步骤4、分组数据解包成2m-8位的分组去除分组数据变换的最低8位,即去除F2m-1...F1F0中的F7F6F5F4F3F2F2F0,把F2m-1...F9F8作为明文x2m-8...x1x0输出,结束解密计算过程。基本算法测试针对对称密钥随机分组密码加密和解密算法,本发明编写了c语言实现的加密和解密算法基本函数库和64比特分组、128比特分组和256比特分组实验程序,包括基本加密、解密程序、数据一位变化扩散实验程序和随机子分组线性分析实验程序等程序。加密或解密时采用4轮加密或解密变换。子密钥生成阶段的3个参数分别为:D1=0x5,D2=0xa,D3=0x7。数据变换模块(参见图3(a)、图3(b)、图4(a)和图4(b))的参数为:(d1,d2,...d32)=(0x1,0xf2,0xd5,0x34,0xa1,0x32,0x5,0x34,0x1,0xf2,0x5,0xd4,0x1,0x2,0x5,0x34,0x1,0x2,0x5,0xa4,0x21,0x2,0x5,0x34,0x11,0x32,0x15,0x34,0x11,0x2,0x5,0x34),其中64位分组采用以上向量的前8个分量,128位分组采用采用以上向量的前16个分量,256位分组采用以上向量的所有分量。分组循环左移次数ci其四轮取值分别为c1=3,c2=7,c3=11,c4=0(参见图3(b)的4.3和图4(b)的2.1)。以上参数是随机选择设置的,实际应用中建议尽量避免多个参数的值雷同。实验结果如下所示:一、基本加密解密实验基本加密解密实验包括64比特、128比特和256比特分组的加密、解密实验,其目的是验证加密、解密算法的正确性。图5(a),图5(b),图5(c)分别是64比特、128比特和256比特分组的加密解密实验的实验结果。图5(a),图5(b),图5(c)中plaintext表示明文数据,ciphertext表示密文数据,deciphertext表示解密后的明文数据。由图5(a),图5(b),图5(c)可知,加密前的明文与解密后的明文完全一致,从而验证了对称密钥随机分组密码加密和解密算法的正确性。二、分组1位数据变化扩散实验差分分析是一种针对分组密码的分析方法,其思路是改变一部分明文,通过分析密文变化所产生的与明文的偏差获得破译密码的线索。分组1位数据变化扩散实验就是依据差分分析的基本原理而实施的。分组1位数据变化扩散实验包括64比特、128比特和256比特分组的1位数据变化扩散实验,其基本方法是,分别对两组仅有一个数据位不同的明文进行加密,然后比对相应的两组密文,统计两组密文中取值不同位的总位数,其目的是查看一位明文变化所引起的密文变化的扩散程度。图6(a)、图6(b),图6(c)分别是64比特、128比特和256比特分组明文一位变化所引起的密文变化的位数。图6(a)中,明文的第六个字节由0x6b变化为0x6a时(最低二进制位变化)引起密文7位变化。图6(b)中,明文的第一个字节由0xff变化为0xfe时引起密文14位变化,图6(c)中明文的第四个字节由0x73变化为0x74时引起密文20位变化。以上实验结果表明,当对手试图根据输入值和输出值的对应关系去构造输出函数式并由此推断密钥位Ki是极为困难的。经过四轮加密变换,每个密钥位Ki与明文或密文的二进制位对应关系得以充分隐匿,其密钥从外部性能上更像一个不可分割的整体。三、线性分析测试线性分析也是一种针对分组密码的分析方法,常用于对传统分组密码的分析,其基本思路是将明文和密文的某些对应位进行异或(XOR)运算,并计算结果为零的概率,其概率应为二分之一。若能找到概率大幅偏离二分之一的位则可以由此获得与密钥有关的信息。3.1随机子分组测试根据(1)式,随机子分组的十六个函数组依次为(F0,G0),(F1,G1)...(F15,G15),其中Fi和x1分别是高位的输出和输入位,Gi和x0分别是低位的输出和输入位,i=0,1...15。依据线性分析的原理把x1和Fi异或、x0和Gi异或可得:(x1⊕F0,x0⊕G0),(x1⊕F1,x0⊕G1),...(x1⊕F15,x0⊕G15)   (3)式令x1x0依次取值为:00,01,10,11,编程分别计算(3)式中两个表达式的值,其实验结果如图7(a)所示。图7(b)中省略了变量x1和x0,仅给出了密钥ki和对应的x1⊕Fi和x0⊕Gi的结果:ki:(x1⊕Fi,x0⊕Gi)。在图7(b)中,当密钥位ki一定时,随机子分组的加密输出结果为零的概率并不为二分之一,ki=15的行甚至出现了输出值等于1的概率是1的位(该行的高位输出部分)。按照传统分组密码的线性分析方法,随机子分组的密钥位应该是极易破解的。然而不同于传统的分组密码,该分组单元是以2位为单位进行加密和解密的且密钥位ki的每个取值分别对应了一组函数式,16个密钥位ki的值以及对应函数组函数对两个输入变量x1x0加密后线性分析的结果确是均匀分布的,图7(b)中输出为00、01、10和11的次数均为16次。为分析随机子分组的安全性,根据图7(b)绘制线性分析表,如表1所示。表1                            在表1中,当密钥位ki=1时,选择(1)式中的第1组函数式(F1,G1)。x1x0=00时,(x1⊕F1,x0⊕G1)=(1,0);x1x0=01时,(x1⊕F1,x0⊕G1)=(0,0);x1x0=10时,(x1⊕F1,x0⊕G1)=(1,0);x1x0=11时,(x1⊕F1,x0⊕G1)=(0,0),表1中的其他行按照类似方法得出。假设对手可以得到任意的明文密文对(采用选择明文攻击方式),即当输入x1x0的值后可得到FiGi的取值,但是密钥位ki的值未知。当对手输入x1x0=00时,假设取得FiGi=10,10与x1x0=00异或后得(x1⊕Fi,x0⊕Gi)=(1,0)(如表1中的第1列所示)。由于(1,0)对应于1、5、13和14四个密钥位,因此对手不能确定密钥位ki的值。继续输入x1x0=01,假设计算后得(x1⊕Fi,x0⊕Gi)=(0,0)(如表1中Ki=1和Ki=13行的第2列所示),由于00对应于1和13两个密钥位,因此对手仍不能确定密钥位的值。若要求解密钥位的确切值只有继续输入x1x0=10或x1x0=11,方能求解出密钥位ki。此种情况下若确定Ki的值,对手需要三组x1x0输入值和FiGi的值。另一种情况是,假设对手输入x1x0=00时,经线性分析计算后得到(1,0);继续输入x1x0=01经计算得到(1,0),由于表1中只有密钥位ki=14才能出现此种情况,因此可求解出密钥位是14。采用类似的方法分析表1中其他输入和输出序列,可得如下一般性结论:1、对手选择明文攻击方式时,若破解随机子分组的密钥位最少需要两组x1x0的值,最多需要三组x1x0的值。2、若加密密码采用m个随机子分组构成,破解其密钥最少需要2m次计算最多需要3m次计算。例,对于64比特的分组至少需要232次计算最多需要332次计算。上述结论似乎有些悲观,然而这是在对手可以取得任意的明文和密文对,加密过程仅采用一轮加密且不改变明文和密文的对应位置的情况下得出的。若加密和解密以物理设备实现,上述情况相当于对手缴获了加密和解密设备,设备的密钥一定但未知的情况下对设备密钥进行破解所需的计算量。为避免单轮加密所带来的安全隐患,本发明的加密和解密的实验程序采用了4轮加密,对密文的各位进行了多次换位操作,打散了明文位和密文位的对应关系,4轮加密和解密的实验及线性分析结果如下所述。3.2对称密钥随机分组密码测试对称密钥随机分组密码测试的线性分析采用64位分组4轮加密变换,其参数如前所述,实验结果如图8所示,根据图8绘制表2如下所示。表2                            在表2中,明文1、明文2、明文3和明文4仅有第6个字节不同,四组明文的第6个字节分别是0,1,2和3,对应第6个字节的最低两个二进制位分别是00、01、10和11,如表中的第0、3、6和9行所示。密文的第6个字节都是十六进制的2d,其最低两个二进制位都是01,如表中的第1、4、7和10行所示。由此可得明文和密文第6个字节的最低两位的对应关系为:00--01,01--01,10--01,11--01,而实际的第6个字节最低两位所用密钥位Ki=12,正确的输入、输出对应关系应为:00--11,01--10,10--00,11--01。四组明文和对应密文按位异或运算结果如表中的第2、5、8和11行所示,其第6个字节分别是2d、2c、2f和2e,对应第6个字节的最低两个二进制位分别是01、00、11和10,明文和密文第6字节最低两位对应关系为:00--01,01--00,10--11,11--10,此对应关系也不是希望的正确结果。事实上上述实验结果具有普遍意义。对于任意比特的2m分组,由于四轮加密变换过程中对密文的各位进行了换位,因此明文和密文诸位间的对应关系已被打散,任何力图通过分析明文位和密文位对应关系去破解加密算法的密钥位ki是不可能的。四、加密和解密程序运行速度测试为测试基本程序运行速度,本发明分别编写了对称密钥随机分组密码的64比特分组、128比特分组和256比特分组四轮加密和解密c语言程序,从有关网站下载了DES和AES的加密和解密c语言程序。为保证比较结果的基本公正性,加密和解密程序中仅包含加密和解密的基本程序段,每个被测试程序重复运行40960次,约4万1千次。实验结果如图9(a)、图9(b)、图9(c)、图9(d)和图9(e)所示。对称密钥随机分组密码的64比特分组、128比特分组和256比特分组测试程序运行速度分别为:343ms(毫秒)、702ms和1903ms。AES的128比特分组和DES的64比特分组测试程序运行速度分别为:7550ms和1467ms。根据实验结果和密码的密钥空间大小绘制表3如下:表3              由表3可知,对称密钥随机分组密码128比特分组的运行速度比AES密码128比特分组的运行速度快了10倍之多,对称密钥随机分组密码64比特分组的运行速度比DES密码64比特分组的运行速度快了约4.27倍。尽管程序的运行速度与其运行平台、程序的优化程度等因素有关,但是在相同条件下的上述测试结果仍有一定参考价值。根据以上实验可得出如下结论:1、尽管对称密钥随机分组密码的加密是采用对明文两位一组分别加密的加密方式,由于随机子分组对一位数据变化的或然性扩散和加密过程中的多轮换位和移位操作,明文和密文的数据位与密钥位Ki的对应关系已被打乱,因此根据明文和密文数据位的对应关系去破解密钥位Ki是极为困难的。在其密钥位Ki极难被逐个破解的情况下,对于企图破解密码密钥的对手,分组密码充分体现了其密钥整体性和明文与密文对应关系随机性的一面,或许除了采用使用穷举法选择明文攻击外,无其它捷径可循。2、对称密钥随机分组密码的运行速度明显快于AES和DES目前较为流行分组密码的运行速度。在减少对称密钥随机分组密码加密轮数的情况下,其速度必将会进一步提高。安全性分析一般而言,分组密码的密钥空间K、明文空间P、密文空间C和加密变换Ek构成了一个密码系统,将此系统记为∏=(K,P,C,Ek)。其中,P是由n比特明文p组成的集合,C是由n比特密文c组成的集合,K是由n比特密钥k组成的集合,Ek是从P至C可逆加密变换。令E=∪{Ek:k∈K},E是密码系统所有加密变换Ek的集合,|E|称之为系统的阶(order),|E|表示集合E的大小(size)。有别于一般分组密码系统,对称密钥随机分组密码对应的密码系统为∏=(K,P,R,C,Ek)。与一般系统不同的是此系统增加了一个随机数据空间R,R是由8比特随机字节r组成的集合;P是由2m-8比特明文p组成的集合,C是由2m比特密文c组成的集合,K是由4m比特密钥k组成的集合。对于任意一个密钥k,k∈K,加密函数EK(p,r)是一个从K、P和R至C映射;其逆函数记为Dk(c),是一个从K和C至P映射(解密函数)。针对SKRBC密码的穷尽攻击:穷尽攻击是攻击者依次尝试密钥空间中的密钥逐个对所截获的密文进行脱密测试,进而找出正确密钥的一种攻击方法。穷尽攻击的实施有一个前提,攻击者除密钥外可以获得密码算法、所需明文和密文。穷举攻击的基本方法是,攻击者用假设的密钥k对已知密文c和明文p进行脱密测试,若D(k,c)≠p,则k一定不是正确的密钥;若D(k,c)=p,则k可能是正确的密钥,密钥的正确性需通过附加的已知明文和密文加以验证。这种在密钥k满足解密关系式D(k,c)=p的条件下仍不能确定密钥正确性的状况,恰恰表明了某些传统分组密码从密钥和密文空间向明文空间映射时其唯一性的欠缺,而对于SKRBC密码以及随机分组密码则不会出现这种情况。穷举攻击算法的优劣主要由四个指标加以衡量:算法成功率、算法存储复杂性、算法数据复杂性和算法计算复杂性。其中与密码算法安全性能有关的是穷举攻击算法的计算复杂性。以下针对SKRBC密码进行分析,假定SKRBC密码的密钥位不可能被逐个破解,这种情况下任何针对SKRBC密码的攻击只有穷举攻击。设对称密钥随机分组密码的分组长度为2m比特,依次需要穷举的密钥是K1、K2...K4m,并假设正确密钥Kξ的出现是等概率随机事件,即由此求得针对SKRBC密码穷举攻击的平均计算复杂性:              (4)式是在SKRBC密码为随机分组密码条件下得出的,若2m=128,则针对SKRBC密码穷举攻击的平均计算复杂性是2255,以上结果表明对于穷举攻击SKRBC密码的安全性极高。针对SKRBC密码密钥位的攻击:另一种针对SKRBC密码的攻击是逐个破解密钥的每个密钥位Ki,i=0,1...2m-1。假设对手获取了SKRBC密码的算法程序,可以通过计算求得所需明文和密文,但是密码的密钥未知。这种情况下,尽管对手可以取得所需的明文和密文,但是由于随机子分组输入值变化的或然性扩散和SKRBC密码加密过程中加密中间结果被多次换位,因此对应于每个密钥位Ki的两个输入变量x1和x0的值和两个输出变量F和G的值的对应关系是不能被确定的。在两个输入变量x1和x0与两个输出变量F和G的值的对应关系不确定的情况下,求出输出函数F和G的逻辑表达式并进而推测密钥位Ki的值是极为困难的。总结不同于传统的分组密码,SKRBC密码有如下独特之处:1、经过多轮的组件加密变换、位两两交换和分组循环左移打散了密文和明文与密钥位的一一对应关系,对手通过分析明文与密文的对应关系去求解各个密钥位Ki是及其困难的。2、SKRBC密码的密钥空间的大小达到了16m=24m,24m个密钥一一对应着24m个变换;通过条件选择逻辑根据密钥值选择加密变换,密钥不直接参与求解密文或明文的复杂计算。以上特征使得SKRBC密码具有随机分组密码的基本特征,因而具有抗传统分组密码攻击方法攻击的能力。3、分组的长度(size)2m和加密的轮数n可视不同安全级别加以改变,以满足不同安全级别和算法运行速度的需求。2m和n愈小安全性逾低,其算法运行速度愈快,不同的用户可视不同的应用场合选定合理的2m和n值。4、SKRBC密码仅对实现加密运算的随机分组密码组件的算法进行了严格限定,而对加密过程中的位交换未加严格限制。事实上,位交换的目的仅仅是把运算的结果或然性地扩散至其他位,至于如何扩散、扩散效果如何对SKRBC密码的安全性并无实质性影响。5、SKRBC密码的算法简单,便于以软件或硬件高速实现。总之,较大的密钥空间、极易的分组长度扩充、随机分组密码的基本特征和运行速度较快等特征使得SKRBC密码突破了传统分组密码设计的桎梏,尤其是可任意扩展的分组长度是目前为止所有其他分组密码所不具备的优点,也使得SKRBC密码的安全性在理论上没有止境。希望此密码的性能得到国家有关部门的审核验证,并希望其获得广泛的应用。本发明的主要贡献突破传统分组密码百年来设计思路的束缚,对理想随机分组密码和随机分组密码的基本属性进行了定义和分析证明,提出了一种全新的分组密码设计方法,即通过选择逻辑以密钥值控制选择不同的加密函数式,通过函数式实现对明文进行加密的方法。按照此方法实现的SKRBC密码具有随机分组密码的基本特征,具有除穷尽攻击外抗传统分组密码攻击方法攻击的能力,为分组密码的设计开辟了一条全新途径。
    附图说明
    图1是随机子分组的逻辑图,此图主要用于展示随机子分组的所有变量(随机子分组)。图2是随机分组密码组件的逻辑图,主要用于展示图中各个随机子分组的逻辑关联(随机分组密码组件)。图3(a)是子密钥生成逻辑图。图3(b)是SKRBC密码加密过程的逻辑图,用于展示加密过程中诸模块的逻辑次序(加密过程)。图4(a)是解密子密钥生成逻辑图。图4(b)是SKRBC密码解密过程的逻辑图,用于展示解密过程中诸模块的逻辑次序(解密过程)。图5(a)是64位分组基本加密解密实验的实验结果。图5(b)是128位分组加密解密实验的实验结果。图5(c)是256位分组加密解密实验的实验结果。图6(a)是64位分组1位数据变化扩散实验的实验结果。图6(b)是128位分组1位数据变化扩散实验的实验结果。图6(c)是256位分组1位数据变化扩散实验的实验结果。图7(a)是随机子分组线性分析ki:(x1,x0,x1⊕F1,x0⊕F0)的实验结果。图7(b)是随机子分组线性分析简略图ki:(x1⊕F1,x0⊕F0)的实验结果。图8是64位分组线性分析的实验结果。图9(a)是四轮64位分组密码运行速度测试的实验结果。图9(b)是四轮128位分组密码运行速度测试的实验结果。图9(c)是四轮256位分组密码运行速度测试的实验结果。图9(d)是128位AES分组运行速度测试的实验结果。图9(e)是64位DES分组运行速度测试的实验结果。
    具体实施方式
    对称密钥随机分组密码逻辑结构简单,可由计算机的软件或硬件予以实现,以下分别予以阐述。1、软件实现软件实现时,需根据对称密钥随机分组密码的原理分别编写随机子分组,随机分组密码组件,数据变换,位两两交换的算法程序,并按以下所述实现分组的加密和分组的解密。分组的加密:步骤1、输入2m-8比特的明文,存入x0,x1,...x2m-10,x2m-9,m为一个正整数,xi是明文分组的第i位二进制变量,i=0,1,...2m-9。步骤2、在明文的最后添加一个字节随机数据信息,明文分组打包成2m比特的分组:w2m-1w2m-2...w1w0=x2m-9x2m-10...x1x0r7r6r5r4r3r2r2r0,w2m-1w2m-2...w1w0为打包后的2m比特的分组,r7r6r5r4r3r2r2r0为一字节随机数据信息,r7r6r5r4r3r2r2r0=x7x6x5x4x3x2x1x0⊕x15x14x13x12x11x10x9x8⊕...⊕x2m-9x2m-10x2m-11x2m-12x2m-13x2m-14x2m-15x2m-16⊕表示按位异或,即每个字节相同位权的位进行异或运算。若明文不足2m-8比特,则在明文的末尾以随机数据信息R填充,以凑齐2m比特。最后,把填充后的分组w2m-1w2m-2...w1w0作为本步骤的输出,送入步骤3进行处理。步骤3、数据变换2m比特打包后的分组按字节进行变换:w7w6w5w4w3w2w1w0←w7w6w5w4w3w2w1w0⊕d1w15w14w13w12w11w10w9w8←w15w14w13w12w11w10w9w8⊕d2......w2m-1w2m-2w2m-3w2m-4w2m-5w2m-6w2m-7w2m-8←w2m-1w2m-2w2m-3w2m-4w2m-5w2m-6w2m-7w2m-8⊕d2m/8其中,1≤di≤255,i=1,2...,2m/8,符号“/”表示普通除法运算符,⊕表示按位异或运算符,w2m-1w2m-2...w1w0是步骤2的输出分组。步骤4、n轮加密变换打包后的分组其加密共有n轮。每轮加密变换由随机分组密码组件变换、位两两交换和分组循环左移ci位三个步骤组成。n为一个正整数,n的数值越大输入明文中一位变化所引起数据扩散程度越高,加密算法的安全性亦越高,建议选取n大于等于3作为加密变换的轮数。n轮加密中每轮加密变换步骤:步骤4.1、随机分组密码组件变换随机分组密码组件变换的功能是实现加密变换,待处理数据w2m-1w2m-2...w1w0的各位数据分别送入组件的输入端进行加密变换,并把其输出F2m-1F2m-2...F1F0作为下一步处理的输入。步骤4.2、位两两交换把F2m-1F2m-2...F1F0分成m个二元组:(F2m-1,F2m-2)m-1,...(F3,F2)1,(F1,F0)0,然后把所有分组中的两位分别与不同分组中的位进行交换。设待交换的二元组是(Fx,Fx+1)k,其它任意两个二元组分别是:(Fy,Fy+1)p,(Fz,Fz+1)q,其中0≤x,y,z≤2m-2,0≤k,p,q≤m-1,且x≠y,x≠z,z≠y,k≠p,k≠q,p≠q,满足上述要求的方案有8种,可任选其中任意一种交换方案,例符号表示把其左右两端中的位互换位置。完成位交换后的数据仍记为F2m-1F2m-2...F1F0,并将其作为下一步处理的输入数据。步骤4.3、分组循环左移ci位F2m-1F2m-2...F1F0循环左移ci位,其中0≤ci<2m-1。完成循环左移后的数据仍记为F2m-1F2m-2...F1F0,并将其作为下一轮处理的输入数据。重复4.1、4.2、4.3步骤n次,即完成数据的n轮加密变换。每轮变换的4.3步骤中的循环左移位数ci每轮应选为不同数值,但加密和解密所选ci应相同。第n轮加密变换的输出F2m-1F2m-2...F1F0作为密文输出之。步骤5、结束分组的解密:步骤1、输入2m-1比特的密文,存入x0,x1,...,x2m-1,m为一个正整数。步骤2、n轮解密变换。步骤2.1分组循环右移ci位x2m-1...x1x0循环右移ci位。此步处理与4.3步骤的循环左移ci位的操作除移位方向不同外其他均相同,右移的次数ci与加密时所移位次数亦相同。步骤2.2位两两交换此步操作与加密变换的4.2步骤相同,操作后的结果仍表示为x2m-1...x1x0。步骤2.3随机分组密码组件变换随机分组密码组件变换的操作与与加密变换的4.1相同。重复步骤2.1、2.2和2.3n次,第n次操作的结果记为F2m-1F...F1F0。步骤3、数据变换。此步操作与与加密变换的步骤3相同。数据变换操作的结果记为F2m-1...F1F0。步骤4、分组数据解包成2m-8位的分组去除分组数据变换的最低8位,即去除F2m-1...F1F0中的F7F6F5F4F3F2F2F0,把F2m-1...F9F8作为明文x2m-8...x1x0输出,结束解密计算过程。本发明可以通过基本c语言加密解密函数库和加密解密程序实现,用户可直接调用函数库中的函数并仿照加密解密程序编写所需加密解密应用程序。对称密钥随机分组密码亦可以硬件实现。若以单片机和嵌入式系统实现,实现方式与软件实现类似,仅需根据基本c语言函数库和加密解密程序的实例编写所需程序即可。

    展开

专利技术附图

服务流程

过户资料

  • 买卖双方需提供资料
  • 平台提供
  • 过户后您将获得
  • 买家
  • 卖家
  • 公司
  • 企业营业执照
  • 企业营业执照

    专利注册证原件

  • 个人
  • 身份证

    个体户营业执照

  • 身份证

    专利注册证原件

  • 专利代理委托书

    转让申请书

    转让协议

  • 手续合格通知书

    专利证书

    专利利登记簿副本

安全保障

  • 品类齐全

    海量资源库,平台整合几十万闲置资源。
  • 交易保障

    完善的资金保障体系确保买卖双方资金安全。
  • 专人跟进

    专业交易顾问全程服跟进,确保交易流畅。
  • 快速响应

    专业在线/电话客服服务,快速响应贴心服务。
  • 售后无忧

    资质过硬,国内大知识产权服务平台。
  • -我要咨询-
  • ×
联系人:
专利名称: *
联系电话: *
验证码:

提交

在线客服

在线咨询

010-83278899

返回顶部