应用于应急广播信令传输的动态电子密本(DECB)加密技术的设计
2016-10-26章惠来
□章惠来
应用于应急广播信令传输的动态电子密本(DECB)加密技术的设计
□章惠来
为了实现应急广播的安全播控功能,需要一个比较严密的接收端控制加密方案,这个方案必须使破解过程尽可能复杂,甚至不可能被破解。所以加密后的报文必须是动态变化的,在相当长一段时间内报文不存在反加密运算的可能性,同时也必须能防范信号复制非法攻击、明文信号非法攻击、随机信号非法攻击。
一、V1.5版本密钥系统组成
V1.5版本密钥系统由系统密钥SKEY(System Secret Key)、动态密钥DSKEY(Dynamic Secret Key)、密序因子KSNF(Key Serial Number Factor)三部分组成。系统密钥是固定的,系统密钥和动态密钥长度都是8字节,密序因子长度为5字节,动态密钥的高3字节和系统密钥相同,动态密钥的低5字节由系统密钥的低5字节和密序因子按位异或后生成。密序因子由一个长整数(4字节)和一个随机量(1字节)组成,密序因子的低4字节(长整数)是不断增加的(一分钟增加一次),其增量是0-16之间的一个随机数。密序因子用系统密钥加密后被实时传送,用户数据则用动态密钥加密后传送,初始系统密钥在出厂时被写入接收端和设备,不同用户可采用不同的系统密钥。
二、密钥功能说明
(一)密钥版本
用于识别密钥算法的框架,即密钥算法的版本。用1字节来表示,版本号以1.0开始,其中高4位用于表示主版本号,即小数点左边的数字,低4位用于表示子版本号,即小数点右边的数字,主版本号最高为7。子版本号为十六进制的0x0-0xf,本阐述文档只说明1.5版本的密钥算法,即48位分组静态偏移全文链接加密方式。
(二)密钥的表示与书写
密钥用16进制表示,以两个字节为单位,中间用横杠号分开,最高位写在左边,如:15AB-CDEF-1234-5678。
上述密钥中,版本号K7为0x15,K6为0xAB,K5为0xCD,K4为0xEF,K3为0x12,K2为0x34,K1为0x56,K0为0x78。密序因子也用16进行表示,最高位写在左边,如:KSNF:BA-00002568。
(三)加密算法的表示
加密算法表示式:C=eK(P),eK代表某种加密算法,括号中的P是输入变量,即待加密的原文,C是加密后的输出密文。
解密算法表示式:P=dK(C),dK代表解密算法,它是eK的反运算,所以eK必须是可逆运算。括号中的C是密文,P是经解密后的原文。
(四)偏移量表
偏移量表是一个用于加密运算的符号转换表,它共有256个元素,被分为16行16列,每个元素为一个字节的十六进字值。元素通过行列地址寻址,元素的值为0到255随机排列,但每个值只出现一次。这个偏移量表被分别保存在发送方和接收方内部,不可读取。偏移量表不在此文刊登。
(五)加密算法的确定
加密算法由48位密钥来确定,各部分的功能说明如下:
MSB(高位字节)LSB(低位字节)
K7:8位密钥版本号。
K6:地址偏移量,用于K2加密运算。
K5:静态偏移量,用于K1加密运算。
K4:8位偏移量地址增量,用于确定偏移表中自偏移量首址起每隔多少个字节的某个值作为48位明文分组中对应字节(8位)的偏移量值,共选6字节(即48位)作为分组6字节(48位)中按先后顺序一一对应的各字节第一级加密运算的静态偏移量。
K3:8位偏移量首址,用于确定偏移量表中用于第一级加密运算的偏移量首址;静态偏移表元素表达式:V= ECB(va),其中,V表示偏移表元素值,ECB表示静态偏移表,va表示偏移元素地址,范围为(0-255)。
K2低4位:用于确定第一级偏移算法:eK2H,值为0H代表算术加法,1H代表算术减法,2H代表将原文与静态偏移量异或,3H代表将原文循环左移1位后再与静态偏移量异或,4H代表将原文与静态偏移量异或后再与静态偏移量算术加,5H代表异或后再算术减,6H代表循环左移2位后异或,7H代表循环左移1位后算术加,8H代表循环左移1位后算术减,9H代表循环左移2位后算术减,AH代表循环左移2位后算术加,BH代表循环左移3位后异或,CH代表循环左移4位后异或,DH代表循环左移3位后算术加,EH代表循环左移3位后算术减,FH代表循环左移4位后算术加。第一级加密将分组原文与由K4和K3所确定的偏移量做eK2H所确定的算法做加密运算后生成第一级密文C1。算法如下所示:
C1=eK2H(P);
K2高4位:用于确定第二级偏移算法:eK2L,值0H到4H与K2低4位值定义相同,5H代表将原文循环右移1位后再与静态偏移量异或,6H代表循环右移1位后算术加,7H代表循环右移1位后算术减,8H代表循环右移2位后异或,9H代表循环右移2位后算术加,AH代表循环右移2位后算术减,BH代表循环右移3位后异或,CH代表循环右移3位后算术加,DH代表循环右移3位后算术减,EH代表循环右移4位后异或,FH代表循环右移4位后算术加。第二级加密采用K4和K3所确定的偏移量地址模256加K5值后的地址作为第二级加密所用静态偏移量地址,取出相应偏移量,与第一级密文做eK2L加密运算得出第二级密文C2。算法如下所示:
C2=eK2L(C1);
K1低四位、K0:用于确定组内链接算法,其中K1低四位与K2低四位的值定义相同,但它以K6的补码为静态偏移量。K0是8位初始量,其值用作第三级加密运算48位分组密文组内链接初始量sv。组内链接算法如下所示:
其中,eK1H代表K1高四位所表示的第三级组内偏移算法,它以K6的补码为静态偏移量,C2j0是第二级密文分组j中的第一个字节,C2ji是第二级密文分组j中的后续字节,sv是初始量即K0,C3j0是经与sv作加密运算后的第三级密文分组j中的第一个字节,C3ji是经链接运算后的第三级密文分组j中的后续字节,i∈{0-5},j是分组序号。组内链接加密运算后得出第三级密文C3。
K1高四位:用于确定全文链接算法,其值定义与K2高四位的值定义相同。全文链接以第三级密文的最后一个字节为地址取静态偏移表中对应的元素值为初始量SV,以K5作为静态偏移量,用K1低四位所确定的算法自第三级密文的第一字节开始至倒数第二字节结束进行全文链接加密运算,运算过程如下所示:
其中,eK1L代表K1低四位所表示的第四级全文链接算法,C30是第三级密文分组中的第一个字节,C3i是第三级密文中的后续字节,SV是初始量即以第三级密文的最后一个字节为地址取静态偏移表中对应的元素值,C40是第四级密文中的第一个字节,C4i是第四级密文中的后续字节,i是字节序号。全文链接加密运算后得出第四级密文C4。
在待加密的原始数据前面添加1个字节的序号,序号从00-FF顺序增加,然后自序号字节开始,到原始数据最后一字节,计算CRC16校验码,校验码添加到原始数据结尾小端模式,和序号、原始数据一起进行分组。
三、密序因子及其更新
(一)密序因子KSNF的传送
密序因子用特定的格式,加上隐含注册码数据(IMSI),并用系统密钥进行加密后,加在用户数据密文前面一起传送:
RSER KSNF0 KSNF1 KSNF2 KSNF3 KSNF4 ISI+SVER IMSI0 IMSI1 IMSI2 CRCL CRCH。
其中:RSER为随机序数,KSNF0-KSNF4为5字节的密序因子,ISI+SVER为1位初始位标志和7位密钥版本号即K7,最高位为ISI,正常情况下ISI为0,IMSI0-IMSI2为3字节隐含注册码数据,CRC为循环冗余校验码。
(二)密序因子KSNF的加密算法
用系统密钥SKEY对KSNF数据进行加密。
(三)密序因子KSNF的恢复
用系统密钥对已知的密文数据进行反加密运算后便可得出密序因子数据。
(四)密序因子KSNF更新的法则
1.密序因子KSNF必须1分钟更新一次,RSER必须是随机产生的。
2.每个系统可采用不同的系统密钥,系统密钥除版本号K7之外,其他字节必须是随机生成的。
3.将密序因子KSNF,低4字节作为一个长整数,KSNF0为最低字节,KSNF3为最高字节,称为密序因子的值KSNV,KSNV按1-15中随机量e进行更新,即进行加e递增。当KSNV溢出后,再重新生成初始KSNV,初始密序因子的值KSNV为0x11111111。KSNV的最小溢出周期为483.3年。
4.密序因子的最高字节KSNF4将始终是随机生成的,它与KSNV同步更新,即也是1分钟更新一次。
5.密序因子在接收端中的生存时间为1分钟,超出1分钟将被丢弃。
6.在密序因子生存期内,同一密序因子被实时传送,接收端始终保存上一次的有效KSNV。
7.接收端在收到新密序因子后,必须与前一次密序因子做比较,新密序因子的KSNV必须大于前一次KSNV的值,否则被认为是非法信号。
8.前端系统可以发送密序因子KSNV初始化指令,以将接收端中存储的密序因子值KSNV初始化。
四、密钥的更新或重设
更新系统的系统密钥,有时需要远程更改接收端的密钥。远程更新接收端的密钥时,需要用原密钥加密发送密钥更新指令,即要知道接收端原来使用的系统密钥。设置新密钥时,先以原密钥进行加密发送6遍SetSKEY指令,然后用新密钥加密发送6遍SKEYSure指令,接收端收到SetSKEY后,如果校验通过,则开始用新密钥对后继收到的数据进行解密;如果接收到正确的SKEYSure指令,并且新密钥与SetSKEY中的一致,并且是在10秒时间内先后收到SetSKEY和SKEYSure指令,则执行密钥更新操作,将新密钥保存并启用。更新密钥时不比较密序因子的KSNV,但仍然比较隐含注册码IMSI。
相关发明专利号:201610309345.4
(作者单位:杭州图南电子股份有限公司)