基于KEELOQ技术的遥控门禁系统的实现
2013-12-07薛巨峰
薛巨峰,乔 鹏
(东北林业大学 机电工程学院,黑龙江 哈尔滨 150040)
目前,大部分家庭门禁系统都是采用机械式开锁,操作比较麻烦,给家里有老人的家庭带来了诸多不便,且安全性也不能得到很高的保障。近年来RF遥控器件的价格越来越便宜,且电子式遥控开锁更加方便、安全,从而使其市场有了更大的提升空间,利用其特点已开发出了一些重要的应用,遥控门禁就是其中之一。机械式开锁的最大缺点就是不安全,采用滚动码技术的遥控门禁系统则大大改变了这一现状,因为其每次发出的编码信息不同、不规则,而且重复出现同一编码信息被视为无效,传输代码采用了非线性位加密技术,使其产生了具有很高保密性的滚动码,使得一些非法的装置不能在一定的时间内破解其密码。本文主要介绍KEELOQ技术在遥控门禁系统中的应用,并且利用PIC16F630进行控锁和软件解码。
1 编码器的工作原理
本设计的遥控门禁系统[1]通过按键遥控器就能开关家门,其工作流程如图1所示。当系统按钮被按下时,HCS301将开始准备工作,为使按钮抖动平息,大约要延迟10 ms。信息将以跳码的形式进行传输,跳码包括识别码、按钮信息和徒步计数值。跳码就是跳动的代码,在每次发送时都将产生变化,即便同一个按钮被按下多次,它也会发生变化。因此,发送的编码字在超过64 000次的传输中都不会重复。以每天执行10次操作为例,跳码可以保证在18年之内编码字不会重复。溢出信息可用来将唯一发送的次数提高超过192 000次。在发送代码过程中,如果有按钮被按下,则会产生复位的效果,并且当前编码字的传输将不会被完成。只要有按钮处于按下状态,松开按钮就不会对编码字产生任何影响。在这样正常的情况下,编码字将完成并在随后断电[2]。
图1 流程图
2 KEELOQ技术介绍
KEELOQ技术[3]实际上是一个关于“ASIC”的特别设计,它包括解码技术和加密技术,并提出了一种实用可靠的KEELOQ算法,适用于遥控或命令辨别的场合。它的加密、解密技术安全,具有变化多、不容易被截获的特点,KEELOQ技术可应用在车库门遥控、秘密通信、被动式感应控制、停车场管制、安全锁等场合,用途广泛。KEELOQ的传送可经由公共频道,内含一组64 bit的编码密码,编码器将把该编码密码传输到解码器,其中有32 bit的编码密码是不知道的,从而可保证该技术的保密性,并且传送资料不唯一和不重复。KEELOQ技术的重点在于它独特的演算法(即数学推算公式),当资料进入这演算法并进行运算时,其输入与输出是一一对应的,不存在重复。
2.1 KEELOQ技术的密码编码和存储[4]
密钥的产生是由64 bit厂家代码和28 bit发送序列号在密钥生成算法中实现,并把其生成的密钥存储在HCS301中的EEPROM中,如图2所示。
图2 密钥生成和存储
2.2 滚动码的产生
当远程控制按键被按下时,就会读取输入,并且同步计数值等于原来的计数值加1,编码密码和16 bit同步技术值、10 bit识别码、4 bit功能键、2 bit溢出指示在KEELOQ演算法下产生32 bit的滚动码,这种代码具有很高的安全性,由于其每次在传输时都发生变化,故称之为跳码。滚动码的生成如图3所示。
图3 滚动码生成
2.3 PWM的接收
发送的信息包括32 bit跳码和34 bit固定码,由图3可知,该固定码包括识别码、功能键和溢出指示位。首先进入前导资料并进行准备;然后开始接收所传输的资料,利用Sync.Header 10 TE来改变接收的速率,会得到TE的时间。当检测到有上升沿上升时,过一半TE时间后,开始进行取样并检测其结果。如果为1,则接收成功;如果为 0,则接收失败,需要等待 1 TE时间,然后立即取样,并把采样结果作为资料位元再重复以上动作,重新采样并进行测试;如果重测结果为1则失败。当下一个上升沿出现时,如果等待时间大于1 TE,则可以断定其结果为失败。重复以上步骤,直到把这66 bit编码密码接收完成[5],如图4所示。
3 PIC16F630的软解和控锁
跳码编码可用专用芯片进行硬件解码。由于专用芯片的价格很贵,因此本设计采用PIC系列的单片机芯片PIC16F630进行软件解码[6]。当接收器接收到信号时,把信号传输到单片机中,然后PIC16F630进行软件解码,产生控制信号 D0、D1、D2、D3。 其原理图如图 5所示。
主机接DC12 V变压器,+12 V为正极输入端,GND为负极输入端,JP1~JP5为短路帽,第一组控制信号由跳线端JP4控制:如果JP4跳到A端,则只有按遥控器A键,L1才有开锁信号;如果JP4跳到 D端,则只有按遥控器D键,L1才有控制信号输出。第二组控制信号由跳线端JP3控制:如果JP3跳到B端,则只有按遥控器B键,L2才有开锁信号;如果JP3跳到 C端,则只有按遥控器C键,L2才有控制信号输出。
4 KEELOQ技术的学习模式
为使生产配对方便、管理简单,KEELOQ系统要进行学习。解码器在没工作时,仅知道其制造商代码,剩下的都不知道;解码资讯存储在EEPROM中,具体包括:序列号(Serial Number)、同步计数值(Current Sync.Counter Value)、识别码(Discrimination Value)、编码密码(Encrypion Key)[7]。
4.1 简易学习模式
如果使用简易学习模式,则编码密码就是制造商代码。此模式的特点是简单和容易明白,不足之处是假如制造商代码被知道,则当有两个使用相同制造商代码的系统时,这个系统的编码密码就很容易被知道,因此安全性被降低。在简易学习模式下,接收到资料,然后进行解码,判断是否与制造商代码一致。如果超过时间,则学习失败;如果解码正确,则判断识别码与所接收的序列号中较低的10位元是否相等以及功能键与所接收资料中的固定码按键值是否相等,如果不相等,则学习失败,如果相等则把学习到的3种资料记录在EEPROM中,作为解码资料库用。
4.2 标准学习模式
标准学习模式与简易学习模式的解码方式其实是一样的,只是使用不同的解码密码(Encrypion Key)。在标准模式中,解码密码是通过序列号、制造商代码经过运算后得到的,前后共经过两次,并得到64 bit的编码密码。第一次运算,先取得32 bit(LSB),第二次运算,再取得 32 bit(MSB)。进入标准学习模式下,将第一次接收的资料进行解码后,得到序列号、识别码、同步技术值,并判断识别码是否与序列号相等;将第二次接收的资料进行解码后,判断识别码与序列号是否相等,并检查同步技术值是否加1,如果都正确,则存储学习结果到EERPROM中。
4.3 安全学习模式
安全学习模式与标准学习模式的解码方式其实是一样的,只是解码密码产生的方式不同。在安全学习模式中,制造商代码与SEED运算取得解码密码,并得到32 bit(LSB);然后此密码又与序列号进行运算,运算后所取得的密码为32 bit(MSB),即形成了64 bit的解码密码。当安全学习模式启动时,将准备接收跳码,并检查新、旧序号是否一样,利用新的解码密码与跳码进行解码后会得到识别码和同步技术值,然后存储解码资源中的4种信息到EEPROM中。
5 KEELOQ 纸上解码
以 HCS301为例,其跳码(Hopping Code)使用 0~F的制造商代码,以简易编码方式来记录HCS301所送出的编码作为解码输入。烧录设定:序列号0001234,同步技术值0000,识别码序号最低10 bit。把烧录的HCS301作为编码器,制造商代码为0123456789ABCDEF,使用简易编码解码方式将所收到的Hopping码填入“KEELOQ Decoding Tool”中的解码资料栏中来解码,所得到的结果如表1所示。
表1 解码表
本文运用了单片机技术、无线传输技术、KEELOQ技术,采用DXP2004软件绘制原理图,设计出了一种方便、成本低、保密性高的防盗门禁系统。在实际使用时还可以适当地加设硬件(例如报警器、LED灯等)来实现更大的作用。
[1]Microchip Crop.AN661-Code hopping decoder using a PIC16C56[Z].2011.
[2]孔慧芳,丘宇宁.PKE智能钥匙系统设计[J].微型机与应用,2010,29(20):103-106.
[3]何此昂,周渡海.远程无钥匙进入系统的方案设计[J].单片机与嵌入式系统应用,2006,29(12):33-35.
[4]王文虎,李建奇,陶曾杰.KEELOQ滚动加密技术在汽车防盗系统中的应用[J].电子测量技术,2007,30(10):197-199.
[5]陈元.基于轿车车身控制网络的研究和仿真[D].武汉:武汉理工大学,2008.
[6]丁明勇.KEELOQ技术的文件加密设计与实现[J].辽宁工程技术大学学报,2005,24(5):727-729.
[7]石幸利.基于滚动码技术的汽车防盗系统研究[D].重庆:重庆大学,2007.