《匠人手记》推荐网上购书渠道:
  互动出版网(china-pub)   >>>
  当当网(dangdang)   >>>
  卓越亚马逊网    >>>
  淘宝网(taobao)   >>>
  更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

KEELOQ技术的软件实现
pcbomb 发表于 2007-1-25 15:33:00  阅读全文 | 回复(0) | 引用通告 | 编辑


    摘要:KEELOQ技术是一种重要的安全加密解密技术,它具有多变化,抗截获的特性。该技术的重要部分是保密的,只掌握在国外少数几家公司手中。提出了一种实用可靠的KEELOQ算法,并给出了实现算法的软件流程。

    关键词:KEELOQ技术 加密 解密 同步

KEELOQ技术作为一种保密的高新技术,对许多人来说比较陌生,但是它正广泛应用于各种防盗报警系统(特别是车辆的防盗报警系统)、遥控电子锁及其他完全的控制领域。它是一种多变化、抗截获、安全可靠的跳码加密解密技术。目前这项先进技术只掌握在国外少数几家公司手中,他们利用集成电路设计的优势,把这项技术封装在芯片里,向用户销售。工程师基于他们提供的硬件做一些开发,很多时候感到不方便。KEELOQ技术其实是一种复杂的协议,只要弄清楚它的原理,就可以根据实际需要在这个协议里选择合适的参数。本文对KEELOQ技术进行了专门研究,提出了一种软件实现方法,并将这一方法应用于汽车防盗报警系统中。

1 KEELOQ技术的一般特点

KEELOQ技术作为一种安全实用的加密解密技术,具有以下特点:

(2)将KEELOQ技术应用于通信中,安全性非常好。同一条命令,经KEELOQ编码后每次得到的码字都不相同(在一个非常长的周期里),且这种变化是无规律的。

(2)发送方发送的码只能被一个特定的对象有效接收,接收方只有预先取得(通过学习)发送方的加密钥匙后,才能对接收到的数据进行有效解密。

(3)特定的对象只有经过学习某一发送者的信息后,才能使用。

(4)这种技术能防止发送码被截获后再转发带来的危害。

(5)接收方能随时清除自己保存的学习信息,使原来的发送方不能控制自己,这样能有效避免第三方非法使用。

正是这些特点使得KEELOQ技术越来越受重视,越来越广泛使用。

2 硬件实现KEELOQ技术

基于KEELOQ技术的专用芯片分为两种:一种实现加密功能,一种实现解密功能,通常配合起来使用。实现加密功能的芯片带有4个按键接口,组合使用可达15种功能。每一次有键按下,就自动生成KEELOQ加密码。KEELOQ加密码的组成一般如下:

描述信息 序列号 按键信号 校验位 同步计数器

一旦芯片制造出来,上述项的长度就是确定的。如序列号的长度设计成28位,整个系统的容量就不会超过268435455(2 28-1),如果想扩展系统容量非常不方便。这种芯片在使用前必须预置一些初值(序列号、加密钥匙、同步计数器)。发送方和接收方一起工作前,接收方必须先通过学习来获得并存储发送方的序列号、加密钥匙和当前同步计数器的值。学习是KEELOQ技术的一个重要方面。

硬件实现KEELOQ技术加密过程如图1所示。

序列号用来标识不同的对象;加密钥匙用来对发送的数据进行加密,增加破译的难度,它不直接送出去;同步计数器是用来抗截获的,每次有键按下,同步计数器的值就被更新,它经过加密变换后被发送出去。

硬件实现KEELOQ技术解密过程如图2所示。

接收方在确认序列号匹配后,对接收的数据进行解密,然后检查同步计数器是否匹配,在确认其匹配后,再去处理接收到的按键信令。

经过使用发现用硬件实现KEELOQ技术存在下列不足之处:

(1)硬件成本高,在使用KEELOQ芯片时,还需要一个单片机(MCU)来控制,量产时这点显得比较突出。

(2)按键信令必须组合(同时按下1个以上的键),否则只有4种功能,通过组合最多只有15种功能。这导致按键不方便、功能扩展几乎不可能。

(3)某一特定型号的芯片其序列和同步计数器的长度是固定的。当系统建成后,开发者如果想只通过软件升级来扩充系统的容量或提高系统的性能、用硬件实现KEELOQ技术基本不可能。

(4)KEELOQ技术对按键信令编码只停留在检错这一层面上,没有作纠错层面的编码。

(5)受硬件设计限制,灵活性差;不拥有核心技术,容易受制于人。

正是这些不足之处促使我们研究用软件来实现KEELOQ技术。

3 软件实现KEELOQ技术

KEELOQ技术的核心是KEELOQ算法,KEELOQ算法作为KEELOQ技术的重要部分是保密的。经过长时间的探索、研究、验证,本文提出了一种可靠的KEELOQ算法,并将其成功应用到汽车防盗报警系统中,取得了非常好的效果。

序列号加密钥匙选用32位的m序列,对于一个用户而言,其加密钥匙和序列号不相同。同步计数器的长度从理论上讲越长越好,但是如果越长其他方面的开销就越大,这里选用16位的m序列。汽车防盗器由两部分组成:装在车身上的部分称之为座机;手持控制部分称之为手机。为了节省硬件开销,手机只设计三个按键,无组合按键,一共有12种按键功能。每个键有四种状态:一点按、两点按、三点按、长按。这12种按键又分成两类:一是控制座机操作的命令控制键(包括学习启动键),一是手机自身操作键。每次按下命令控制键,就执行KEELOQ加密过程。软件实现KEELOQ加密操作流程如图3所示。

对按键信令进行纠错编码处理是必要的:假设某次按键信令为0110,经信道传输后,接收方解密得到的码字变为0101,而0101也表示一种有效的命令。显然,这种误操作带来的后果是严重的。用Walsh码编码,经过编码后,能同时发现并纠正3个或3个以内的错误;同时根据编码的特点,用加密钥匙对编码后的按键信令做变换处理。试验表明这些措施极大地提高了系统的可靠性。

KEELOQ算法的关系之处在于同步计数器。如前所述,手机在第一次使用前必须预置有效的序列号、同步计数器值、加密钥匙。座机通过控制可以学习任何一只手机,学习成功手保存该手机的序列号、同步计数器值、加密钥匙。每次按下命令控制键时,手机的同步计数器的值加1(仅仅只有一位发生变化),经过m序列发生器,从统计的角度看,有一半的位发生改变。接收方的确认接收数据的序列号匹配后,对接收数据进行解密,然后确定同步计数器是否匹配,只有同步计数器确认匹配后,才处理接收的按键信令。通过图4来说明确认同步计数器的匹配过程。

    KEELOQ技术是通过一个复杂的同步技术来实现的。虽然开发的防盗系统是双向通信的,但为了方便,将座机称为接收方,手机称为发送方。接收方判断解密后的同步计数器的值是否在单次操作范围内。如果在,就用接收到同步计数器值替换原来的同步计数器的值,并执行接收到的命令;否则,看是否在双次操作范围内。如果在,则暂存该计数器的值,并等待接收下一次有效数据。在这种情况下,如果接收到数据,在确认同步计数时就判断接收到的同步计数器的值是否在上次暂存同步计数器值的单次操作范围内。如果在,用当前接收到的同步计数器值替换原来的同步计数器的值,并执行命令;如果发送方的同步计数器的值不在接收方双次操作范围内,则该命令不被执行,且同步计数器的值不被保存。这个发送方必须被接收方学习后才能对接收方进行有效控制。由于接收方每次接收到有效命令后,就更新自己同步计数器的值,使前一次用过的同步计数器的值成为禁用码,不再有效。这样就能够避免发送的码被截获而再转发带来的危害。

    需要说明的是上述单次操作范围、双次操作范围,以及同步计数器的长度可以根据实际需要来选择。由于同步计数器非常重要,算法在处理时对它进行了检错编码处理。软件实现KEELOQ解密操作流程如图5所示。

在KEELOQ技术中,学习功能一个重要部分。学习包括清除原来存储的信息和学习新的信息,它分为一般学习和安全学习两种。本文采用安全学习方式。通过长按座机上的学习清除键(该键有两种功能:长按为清除功能,点按为进入学习模式)来清除原来手机的信息(原来的手机就不能控制该座机,必须通过学习后才能控制),点按座机上的学习清除键,如果谇机的原来信息已被清除,则进入学习模式;否则,点按无效,不进入学习模式。这时,如果手机发送学习启动命令给座机,处于学习状态的座机收到命令后立即向手机发送请求学习信号,收到请求信号后,手机将经过变换处理后的加密匙和同步计数器立即发给座机,发送之后就退出学习状态,并保存新的加密钥匙和同步计数器值;座机确认数据有效后,就保存加密钥匙和同步计数器值并退出学习模式,需要继续学习。每次学习时手机发给座机的加密钥匙和同步计数器都不相同(无规律变化),这是安全学习的主要特点。为了更安全,座机最多只能学习一支手机的信息。安全学习操作流程如图6所示。

    可以看到,用软件实现KEELOQ技术并不复杂,一般的单片机就够用。手机部分选用的是华邦(WINBOND)4位单片机,座机部分选用飞利浦(PHILIPS)8位单片机。用软件实现KEELOQ技术灵活性很大:手机按键可根据需要进行设计(仿移动电话按键设计);序列号、加密钥匙、同步计数器长度可根据需要进行选择,以后升级或改变都比较容易;手机发送的按键信令进行纠错编码,用加密钥匙对发送数据进行编码时可以有重点地做一些复杂的变换处理。有些厂家宣称他们能做到同一条按键信令约42.9(2 32-1)亿次无重复发送,其实只要增加加密钥匙和同步计数器的长度就可以做到这点,甚至比这更多次的无重复发送。这些都可以根据客户对系统要求的变化而进行软件上的修改,不需要改变硬件设计。总之,用软件实现KEELOQ技术,可以节约硬件成本,系统设计可以更少依赖于硬件,系统性能还能做到理优越可靠。


看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    推荐阅读

    往日酷贴

     

    友情连接

     [更多酷站连接]

     

     

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [hotpower 的水潭]

    [八楼的呼吸]

    [柔月阁]

    [PIC论坛]

    [SMARTCODE电子书斋]

    [阿摆手记]

    [电子伙伴]

    [xwj的文君阁]

    [所长的BLOG]

    [海边淘沙]

    [单片机开发联盟]

    [数字电视之家]

    [软件开发之窗]

    [unaided的笔记]

    [小飞的笔记]

    [ICC AVR开发网]

    [我爱研发网]

    [infernal的笔记]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [水牛的仓库]

    [逍遥电子]

    [ningpanda的博客]

    [雄鹰的空中加油站]

    [一网见天下]

    [Armoric]

    [股剩是怎样炼成的]

    [嵌入式365]

    [C-Design]