混 沌 密 码 遥 控 锁 设 计
2019-11-26刘公致王光义
刘公致, 王光义
(杭州电子科技大学 国家级电子信息技术虚拟仿真实验教学中心,杭州 310018)
0 引 言
混沌现象是非线性系统中出现的确定性类随机过程。混沌具有非周期、连续宽频带、类噪声和长期不可预测等特点。混沌系统对初值非常敏感,在初值相差很小的不同条件下,经过有限次运算后其轨迹发生折叠分离,初值造成的误差迅速被放大,从而造成混沌系统的长期不可预测性。因此,混沌和密码学之间具有天然的联系和结构相似性[1],将混沌应用于密码学中逐渐引起了国内外众多学者的重视,也为遥控密码锁系统的设计提供了新的思路[2]。
最初的遥控密码锁的密码是固定的,通过增加密码的长度来提高其保密性,但这种固定密码容易被特制的接收器盗窃,降低密码锁的安全性。为解决这个问题,研究人员发明了滚动码技术,即在遥控系统除了固定编码,还增加同步计数器,每次遥控操作时同步记数加1 , 与固定编码一起经加密算法加密后形成密文数据再发送出去,同步计数自动向前滚动, 发送的码字不会再发生。接收端接收到密文之后,通过设置的解密算法进行解密,判断一致后通知执行机构执行用户命令。由于滚动码技术中计数值变化有规律,与固定编码一起加密,也存在一定被破解的风险[3-4]。
本文提出了一种将混沌密码与滚动码技术相结合的新型遥控锁,在发射和接收模块中植入相同的混沌映射函数,利用混沌函数产生的伪随机序列作为密钥,每遥控操作一次其发射和接收模块中的混沌映射迭代一次,用迭代后的新混沌序列产生新密码。这种加密方法每次使用的密码都不同,而且前一次使用的密码立即失效,做到“一次一密”,接收机在接受到密钥后进行算法比对,只有算法比对正确才能正常开闭锁[5]。
1 Cubic混沌映射
混沌是非线性动力学系统所特有的一种运动形式,其信号具有丰富的非线性动力学特征。传统的Logistic映射和Tent映射,其缺点是映射范围较小,及时满映射也仅为[0, 1]。映射范围小在数字系统中迭代易出现短周期现象。为此,本文采用改进的Cubic混沌映射[6-7]:
(1)
式中:a,b为控制参数,当b∈(2.4,3)时系统处于混沌状态,此时xn的取值范围随着a的增大而倍增,满足x∈(0,2a),且具有极其复杂的动力学行为。
1.1 Cubic混沌映射基本动力学特性
系统的主要动力学特性可通过其Lyapunov指数和分岔图来描述。正的Lyapunov指数表明初值变化引起相邻运动轨道快速分离,通过伸展与折叠的反复运动形成混沌轨迹;负的Lyapunov指数表明相体积收缩,轨道在局部是稳定,对初始条件不敏感,初值变化引起相邻运动轨道靠近,形成周期轨道运动。
当固定a=10,x1=1,变量x随b变化的分岔图和Lyapunov指数如图1、2所示。
由图1、2知,系统在b∈(1,2.4)内,经过一个倍周期分叉过程,在b∈(2.4,3)时出现混沌现象,并当b=3时,Lyapunov指数取得最大值,此时混沌系统为满映射。当b=3,参数a与初值x1取不同值时,其迭代值的时域波形如图3所示。由此可见,通过调整参数a可以控制x的变化范围处于x∈(0,2a)之间,可以极大地提高每次迭代值的范围。
图1 分岔图
图2 Lyapunov指数图
(a) Cubic(a=sqrt(3),b=3,x1=1)
(b) Cubic(a=100,b=3,x1=5)
图3 时域图
对改进的Cubic映射进行初值敏感性测试,取b=3,a=123,分别取初值x1为20.000 000 1与20.000 000 2,进行100次迭代运算后的结果如图4所示,图中实线表示初值为20.000 000 1的迭代轨迹;虚线表示初值为20.000 000 2的迭代轨迹。两者的初始值仅相差1×10-7,但是通过100次迭代后,两个序列就互不相关,这说明混沌序列对初值非常敏感。因此,通过预置不同初值可以产生不同的混沌序列,混序列码源众多,显然优于m和Gold等伪随机序列。
1.2 混沌序列安全性测试
采用Cubic混沌映射产生的伪随机序列作为密钥滚动码序列,其伪随机序列的性能直接影响系统的安全性。密钥序列的随机性能越好,加密的安全性也就越高。为了证明混沌数字序列是否具有良好的伪随机性,采用NIST(美国国家技术与标准局)推出的测试软件包STS进行测试[8]。
图4 系统取不同初值时的迭代轨迹
NIST提供了两种性能评判的依据:① 序列的通过率。通过统计测试结果,可以计算序列通过率;② P-value值的均匀分布。对每个性能项都会产生一个P-value值,它表明了序列的均匀性。若P-value≥0.000 1,则可认为测试序列P-value值是均匀分布的[9]。
本序列测试取改进的Cubic映射参数:a=123,b=3,x[1]=20,进行10×107次迭代运算对其序列进行测试。序列测试报告结果如表1所示。由表1可以看出,其序列全部通过性能测试,对改进Cubic映射取不同参数与初值进行多次NIST序列性能测试,表明其产生的混沌伪随机序列符合加密指标,且具有良好的序列性能,可以作为本实验项目的密钥序列。
表1 NIST测试结果
2 密码锁系统总体设计
整个系统分为无线发射器、无线接收器、电子锁,三者关系如图5所示。基于混沌方程产生的动态密码被无线发射器发射,由无线接收器接收到,并进行数据比对,若数据匹配,则由接收器控制开闭电子锁。
图5 系统总体结构框图
2.1 遥控发射模块设计
在手机上基于Android环境的Eclipse开发工具,用Java语言开发了操作模块,包括简单的开闭锁界面以及相应的密码生成和发射接收程序,通过手机蓝牙模块发送开闭锁指令和接收开闭锁状态,手机操作界面如图6、7所示[10]。图中间为开闭锁按钮,同时也显示实际的开闭锁状态,右上角为设置功能,可以设置操作密码,下方联机显示手机与锁具蓝牙配对成功。发射器程序流程如图8所示。
图6 闭锁界面
图8 手机端发射机程序流程图
工作过程为手机端操作界面打开后,开启蓝牙设备,读取锁的开闭状态,更新图标状态,检测开闭锁按钮,如果没有按下则等待,否则发射手机存储的开闭锁密码,同时调用混沌方程迭代计算出新的密码,存储在手机,作为下一次开锁的密码,然后等待返回的开闭锁状态信息,根据该信息更新开闭锁的图标。
2.2 接收模块设计
接收机系统结构框图如图9所示,系统由蓝牙模块,处理器,驱动模块,锁具电动机,锁舌状态检测,报警模块构成[11]。
图9 接收机系统结构框图
各模块介绍如下:
(1) 处理器。用于控制蓝牙模块收发数据,通过驱动模块控制锁具电动机,读取锁具开闭状态,控制报警模块发出报警信息。采用美国TI公司生产的超低功耗MSP430单片机。为16位的单片机,有高效的查表处理指令。其内置模块丰富,包含了如看门狗、模拟比较器、定时器、UART、SPI、I2C、硬件乘法器、液晶驱动器、ADC、DMA、I/O端口、实时时钟等若干功能模块。系统处理器采用MSP430G2553芯片,工作电源电压范围是1.8~3.6 V,采用超低功耗运行模式: 230 μA (在1 MHz频率和2.2 V电压条件下),待机模式电流为0.5 μA,具有5种节能模式,可在1 μs的时间内超快速地从待机模式唤醒[12]。
(2) 蓝牙模块。用于接收开闭锁指令密码,发送锁舌状态信息。采用英国CSR公司BlueCore4-Ext芯片,遵循V2.1+EDR蓝牙规范。它支持UART,USB,SPI,PCM,SPDIF等接口,并支持SPP蓝牙串口协议,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许外围元件就能实现其强大功能[13]。模块应用于蓝牙串口通信模式,电路如图10所示,芯片第1脚和第2脚分别是信号输出脚和信号输入脚,分别用2个电阻上拉到3.3 V;第28脚控制蓝牙模块为主机或者从机。
(3) 驱动模块。用于驱动锁具电动机执行开闭动作。采用简单的三极管驱动,微处理器IO口控制三极管基极,其集电极接步进电动机线圈,步进电动机线圈并联了续流二极管。
(4) 锁具电动机。用于控制锁舌开闭,采用四相五线式步进电动机,供电电压12 V;报警模块:用于锁舌状态不正确时发出报警提示声音,采用蜂鸣器;锁具状态检测:用于检测锁舌的开闭状态,采用霍尔器件;系统使用12 V蓄电池供电,步进电动机用12 V电源,其他器件采用3.3 V电源电压,使用一片AMS1117-3.3芯片降压。
图10 接收模块原理图
接收模块软件基于IAR Embedded Workbench IDE系统开发,用C语言编程,流程如图11所示。
图11 接收模块程序流程
系统上电后,先读取锁的实际开闭状态,并通过蓝牙模块发送给手机,开启串口的接收中断功能,然后待机进入低功耗模式。手机上位机发送的传输密码信息将通过蓝牙模块接收,送到单片机串口,产生中断唤醒单片机,单片机读取串口接收到的开闭锁密码,并与FLASH存储空间中的密码进行对比,若匹配成功则开闭锁,即假如锁的上一状态为开;则进行闭锁操作,上一状态为闭,则进行开锁操作,并迭代产生新密码写入FLASH存储空间,然后检测门锁的实际开闭状态,若实际中门锁的开关状态与命令状态不一致,则发出门锁异常报警信号;若一致,则发射门锁开闭状态。如果密码匹配不成功,出现失步情况,则不发出开闭锁命令,但以当前接收到的密码作为初始值,继续迭代产生新密码并存储,作为下次开锁的密码[14]。
(5) 失步的处理。实际使用时,有可能发射器发出的密码信息没有被接收到,出现收发两端失步情况。为解决这个问题,在接收端开辟了16次的容错窗口,即接收端会从当前迭代次数开始,继续迭代16次,迭代结果用xn,xn+1,xn+2,…,xn+13,xn+14,xn+15表示,这些结果会按顺序存入芯片FLASH中,接收到数据xp时,会与芯片中的16个混沌密钥序列xn依次比对,比对可能出现2种情况:
① 假如xp与xn,xn+1,xn+2,…,xn+13,xn+14,xn+15任意一个相同,则说明混沌密钥序列比对成功,系统会控制电子锁控制接口,打开电子锁。此时,在比对成功的情况下,系统以xp为迭代初值,代入混沌方程迭代更新这16组混沌密钥序列为xp,xp+1,xp+2,…,xp+14,xp+15,以供下次接收密钥匹配。
② 假如xp与xn,xn+1,xn+2,…,xn+13,xn+14,xn+15都不相同,则说明混沌密钥序列比对不成功。可能的情况为发射器的按键在接受器没有接收到的情况下被多次按下,使发射器的混沌密钥序列多次更新,导致xp的数值超过了接受器存储的16组混沌密钥序列xn,xn+1,xn+2,…,xn+14,xn+15的范围,以至不能正常配对。
系统不进行开闭锁动作,会以当前接收到的xp为初值进行混沌方程迭代运算16次,并更新这16组混沌密钥序列为xp,xp+1,xp+2,…,xp+14,xp+15,以供下次接收密钥匹配。
通过以上的处理,如果失步次数在16次容错范围内,系统能够同步并开闭锁,超过16次容错范围,也可以同步,但不进行开闭锁[15]。
3 实 验
制作的密码锁使用不锈钢模具,防锈抗高冲击,锁舌达到B级强度,能承受3 kN冲击。锁具传动底板设计为将步进电动机带动金属齿轮传动给锁舌,控制精度较高,主控板上集成微处理器电路、霍尔传感器模块、蜂鸣器、步进电机驱动模块、稳压模块、蓝牙通信模块等。门锁控制模块实物图如图12所示。
设计的密码锁制作之后,可在实验室进行遥控操作实验,也可直接安装到门上进行实验。
4 结 语
本实验系统成功将混沌理论应用到实际遥控密码锁领域,整个系统最突出的特点在于“一次一密”技术,即每次开闭锁的混沌密钥序列都只使用一次,同一个混沌密钥序列在第二次使用时,将不被正确识别,增加了系统的安全性能。混沌密钥采用混沌函数迭代出的原始数据,密钥序列完全随机,都是通过NIST专业测试软件测试通过的,符合密码学要求,且其数据长度为64 bit,数值范围是0~18 446 744 073 709 551 616,可以有效抵抗穷举法等暴力破解。系统采用改进的Cubic混沌映射,其映射参数b=3时,混沌特性最好,参数a可以设置任意值,从而产生任意个混沌方程,即在实际生产时可以生成任意套锁具的密钥。另外系统也较好地解决了实际应用中的失步问题。