一种Hitag2密码的破解方法和防御方法与流程

文档序号:14574508发布日期:2018-06-02 01:09阅读:679来源:国知局
本发明属于嵌入式系统安全领域,更具体地,涉及一种Hitag2密码的破解方法和防御方法。
背景技术
::Hitag2密码是由安全芯片领域的国际巨头恩智浦公司发明并在其芯片产品上使用的一种密码,主要在汽车RKE系统中使用。基于Hitag2密码的芯片被全球各大汽车厂商广泛采用,目前全球有上亿辆汽车使用了Hitag2芯片来承担安全任务。汽车钥匙在和RKE系统进行通信时,数据传输通常是单向的,即钥匙只发送数据而RKE系统只接收数据,钥匙和RKE系统使用一个自增的计数器来进行同步,具体过程是:钥匙将计数值(或和按键值拼接)作为一个IV值,然后用密钥key进行加密,之后将密文、计数值的低位值、按键值及其它必要数据整合发送给RKE系统;RKE系统接收到钥匙发送过来的数据后,会提取出IV值并用和钥匙相同的秘钥进行加密,然后比对密文,若密文相同则视为认证成功并执行相关操作,否则视为认证失败而不进行操作。钥匙每进行一次加密,计数器值会自动增加1,且该动作不可被终止或逆转。RKE系统每次认证成功后都会将计数值和钥匙的计数值进行同步。一旦RKE系统发现从接收数据中提取出的计数值小于当前值又或是太大而超过了一个范围,一律视为认证失败。Hitag2密码的秘钥为48位。目前针对Hitag2密码的破解手段主要还是暴力破解,但采用暴力破解的计算量高达2^48,无论是计算资源耗费和时间花费都非常巨大;目前已有研究人员提出在暴力破解基础上使用彩虹表等方法优化计算量,但必须要采集大量的数据并且耗费较大的存储资源,且优化效果有限。巨大的计算量严重制约了Hitag2密码破解手段的实用性。但是,Hitag2密码配合RKE通讯协议使用时存在的一些缺陷使得其存在着被快速攻破的可能。技术实现要素:针对现有技术的以上缺陷或改进需求,本发明提供了一种Hitag2密码的破解方法和防御方法,其目的在于利用短时间内监听采集的多条数据的IV高位数据相同的特点,计算state中相同的部分数据位各种候选值的概率得分,找出概率得分大于中值的候选值,再结合少数不相同数据位组合得到state的少量组合,再利用所有state进行滚码得到少量密文组合,最后将这些密文发送到密文接受方进行破解,由此解决现有Hitag2密码破解方法对计算资源、存储资源和时间花费要求巨大的技术问题。为实现上述目的,本发明提供了一种Hitag2密码的破解方法;所述破解方法具体为:监听获取多条待破解的数据trace,从中截取信息矢量IV和密文KSt,保证IV只有低F位数据不相同;利用初始化之后的线性反馈移位寄存器状态state中低(48-F)位数据相同的特性,从其中选取n位数据,计算其所有组合输出正确KSt的概率得分scoret;保留scoret最高的一部分n位数据,之后对此部分n位数据进行位数扩展并计算其scoret,直到扩展到n=(48-F),保留scoret最高的一部分低(48-F)位数据,再补齐高F位数据,并选取多条KSt进行验证,通过所有KSt验证的低(48-F)位数据即为真实值;利用真实值参与滚码得到破解密文;其中,4≥F≥12,优选F=4;n≤(48-F),优选n=16。进一步地,包括以下步骤:(1)监听获取tracenum条待破解的数据,记为tracet;从所有tracet中截取IV和密文KSt,确保所有IV只有低F位数据不相同;则LFSR完成初始化后的state中低finround位数据相同;其中,finround=48-F;tracenum≥6,优选tracenum=8;t=0,1,2,...,tracenum-1;(2)设置state的破解数据位长度为n,从state的第finround-n位到第finround-1位,一共有2n种二进制组合,所有组合的值即为候选值;(3)针对每条tracet,计算每种候选值输出正确密文KSt的概率得分scoret;(4)针对所有tracet,每种候选值的整体概率得分为:(5)将所有候选值的score进行由大到小的排序,保留前百分之th的候选值;th≤50;(6)将state的破解数据位向低位进行一位扩展,更新n=n+1,若n<finround+1,则返回步骤(2);否则进入步骤(7);(7)将得到的state的低finround位数据的所有候选值,和高F位数据组合得到state的所有可能值,选出S条不同KSt分别对state的所有可能值进行验证,能同时通过S条不同KSt验证的可能值则为真实值;其中,3≤S≤tracenum,优选S=3;(8)更新state为真实值的低finround位数据和高F位数据的组合,对所有2F个state进行滚码,得到2F个破解后的密文。进一步地,所述步骤(3)具体包括以下子步骤:(31)对LFSR进行移位操作,直到state的破解数据位移动到LFSR最低端;(32)计算已知候选值部分的state输出正确KSt,finround-n的概率Pt,finround-n;其中,KSt,finround-n表示密文KSt的第finround-n位;(33)将state的破解数据位右移一位,此时破解数据位减少一位,因为其最低位被移出了LFSR,j=j+1,计算已知候选值部分的state输出正确KSt,finround-n+j的概率Pt,finround-n+j;(34)重复步骤(33),直到计算出Pt,31,概率得分即为:进一步地,所述步骤(32)中:Pt,finround-n=#(x|KSt,finround-n)/220-m,其中,#(x|KSt,finround-n)表示所有能够输出正确KSt,finround-n的特征序列的数量,m表示可以确定的特征位的数量,220-m即为所有可能的特征序列的总数。进一步地,所述破解方法还包括:(9)将2F个破解密文逐条向RKE系统发送,当唯一正确破解密文被RKE系统接受到时,RKE系统将执行对应操作。进一步地,所述步骤(7)和步骤(8)中低F位数据表示低F位数据的2F种可能值。本发明还提供了一种Hitag2密码的防御方法;所述方法为:将Hitag2密码通讯协议中的IV引入加密过程之前先进行反向。进一步地,所述方法还包括:将Hitag2密码通讯协议中计数器的值自加步进增大。按照本发明的另一方面,本发明还提供了一种Hitag2密码的防御方法,所述方法为:将Hitag2密码通讯协议中的IV引入加密过程之前先进行反向。进一步地,所述方法还包括:将Hitag2密码通讯协议中计数器的值自加步进增大。总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:(1)本发明将破解的重点放在破解Hitag2密码的中间变量state上,利用短时间内监听采集的多条数据的IV高位数据相同的特点,推导出多条数据对应的state的部分数据位也相同,再利用多条数据中的密文计算state中相同的部分数据位各种候选值的概率得分,找出概率得分大于中值的候选值,再结合少数不相同数据位组合得到state的少量组合,再利用所有state进行滚码得到少量密文组合,最后将这些密文发送到密文接受方进行破解。本密码破解方法将暴力破解时的逐位指数增长变成了逐位倍数增长,能够将计算量降低7个数量级以上,极大的减小了破解时长和计算资源;(2)本发明公开的Hitag2密码的防御方法,其本质都是阻止攻击者采集到足够数量的符合攻击要求的trace,采用这两条措施时只需对钥匙芯片的代码进行细微修改即可实现,而无需修改芯片硬件。附图说明图1是Hitag2密码的加密过程示意图;图2是本发明中Hitag2密码的破解方法的过程流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。Hitag2密码属于流密码,其密钥长度为48bit。如图1所示,其组成包括一个48bit的线性反馈移位寄存器LFSR和一个非线性过滤函数功能。反馈函数l和过滤函数f各自将48bit的LFSR映射成1个bit值(0或1),具体定义如下:f(a[0:47])=fc(fa(a[2],a[3],a[5],a[6]),fb(a[8],a[12],a[14],a[15]),fb(a[17],a[21],a[23],a[26]),fb(a[28],a[29],a[31],a[33]),fa(a[34],a[43],a[44],a[46]))其中fa(i)=(0x2C79)[i],fb(i)=(0×6671)[i],fc(i)=(0x7907287B)[i]。Hitag2的加密过程分为两个阶段,即state初始化阶段和KS生成阶段。在state初始化阶段,id[0:31],iv[0:31]和key[0:47]被用来对LFSR进行初始化。首先,给LFSR赋初值:a0[0:47]=id[0:31]||key[0:16]然后,LFSR向右移位。第i-th移位后的状态为:ai[0:47]=ai-1[0:47]||bi-1其中反馈值bi定义如下:移位操作进行32次,至此整个key的所有bits均被引入,此时state初始化完成,标记此时的state为a32[0:47]。接下来是KS生成阶段,KS的每个bit均由过滤函数生成:每生成KS的一个bit之后,LFSR会向右移位并补充一个bit值:ai+1[0:47]=ai[1:47]||l(ai[0:47])注意,KS生成的阶段没有引入新的参数,即KS完全由a32[0:47]决定。本发明公布的攻击方法,在猜测state时,从局部扩展到整体,每扩展一位后都会进行一次筛选,只保留不多于固定数量的候选值,从而使得每一轮参与计算的候选值数量都不高于初始数量。这样就将计算量从暴力破解时的逐位指数增长变成了逐位倍数增长,能够将计算量降低7个数量级以上。使用本发明公布的攻击方法,借助于通用无线电设备,只需采集6-8条trace,使用普通PC机进行计算和分析时时间花费在3分钟以内,大大提升了攻击的可操作性。本发明公布的攻击方法,利用了Hitag2密码及汽车RKE通讯协议中存在的缺陷。RKE通讯协议中规定用于同步的计数值是逐次自加1的,则短时间内采集的多条数据其IV往往差异较小。由于发送的计数值低位部分通常在8位以上,这足以保证计数值的未知部分是不变的。换句话说,攻击者虽然只能知道IV的一部分值,但是可以确定采集的多条数据中未知的IV部分值是相同的。而在Hitag2加密中,这些IV的相同部分恰好会被先引入滚码过程,且不受后面引入的不同部分的影响,即对多条数据而言,其IV相同的部分导致了state也有多位相同。这就使得攻击者可以利用多条数据来进行判断,因为这多条数据都对应这一段相同的state,该段相同的state部分即为所求。事实上,只从一两条数据是几乎不可能筛选出正确的state的,因为不正确的state同样有可能滚码得出验证所用的KS。实验证明,在state不完整的情况下,正确的state猜想得出正确的KS的概率相比于不正确的state猜想并不具有明显优势,且猜想的state部分越短,差异越不明显。在多轮筛选中,只要正确的state猜想有一次处于劣势,就会被筛除掉从而导致整个分析失败。但是,很明显正确的state猜想对于所有正确的KS都应该有较好的概率,而错误的state猜想则不能保证。基于此,采用足够多条KS进行验证可以使得筛选过程对正确state猜想有利,用于验证的KS数量越多,对正确的state猜想越有利。实验证明,要想稳定地保证正确的state猜想能够在筛选中幸存,用于验证的KS数量不应少于6条,多数情况下不应少于8条。如果用于验证的KS数量不足,则正确的state猜想往往会在多轮筛选中被筛除掉。如图2所示,是本发明一种Hitag2密码的破解方法实施例的流程图,具体包括以下步骤:(1)攻击者利用无线电设备,在钥匙和RKE系统进行合法通信时,监听并记录钥匙发给RKE系统的信号。此处本实施例连续监听并采集8条信号trace,则定义监听数据条数tracenum=8;(2)从采集到的每条信号中提取IV和密文KS,确保所有IV的不可见的高位相同,可见低位递增;本实施例中提取到的所有IV低4位不同,可确认高44位完全相同,因此生成密文的state的低44位全部相同,则设定finround=44;(3)破解每条trace对应的state,具体包括以下子步骤:(31)初始化state候选表table,table中设定220个候选值,从0x00000至0xFFFFF,对应state的第25位到第44位的取值的候选情况,记为a24-a43;(32)从table中取一个候选值,例如0xabcde作为state的a24-a43的取值,计算0xabcde在第0条trace,即trace0中的概率得分score0;具体包括以下子步骤:(321)将state的a24-a43设为statewindow,将LFSR向低位移位24位直到待破解的state的statewindow移动到LFSR最低位;(322)在已知state的a24-a43的条件下计算输出正确密文的概率,p0,24=#(x|KS0,24)/220-9,其中,p0,24表示第0条trace中密文第24位正确的概率;KS0,24表示第0条trace中密文第24位;#(x|KS0,24)表示所有能够输出正确KS0,24的特征序列的数量;可以确定的特征位的数量为9,220-9即为所有可能的特征序列的总数;(323)将已知statewindow右移一位,state中已知部分将减少一位,在已知state的a25-a43的条件下计算输出正确KS0,25的概率p0,25;(324)重复(D323),直至计算出p0,31。此时将得到p0,24到p0,31的值,则第0条trace,即trace0的概率得分为(33)对每条trace重复步骤(D32),计算每条tracet下的scoret值,则候选值0xabcde的整体score为这些scoret值的几何平均值:鉴于开根运算较为耗时且不影响最终对密钥候选值的筛选,故可省去开根运算,即(34)对table中的每个候选值按照(D32)(D33)进行操作,计算出所有候选值对应的score;(35)以score大小为标准对所有候选值执行筛选,去掉score值小于所有score中值的候选值;(36)将state破解长度n=n+1,即20→21;此时n<finround+1,则将候选值的statewindow向低位进行一位扩展(例如0xabcde扩展成0x1579bc和0x1579bd两个数,这使得候选值的数量进行一次翻倍,但总数不超过初试数目),返回执行步骤(D32);重复执行本步骤,直到n=finround+1=45;(37)此时已对state的低44位部分进行了破解,接下来,针对每个候选值,对其高4位进行穷举,并用3条实际trace的密文KS进行检验,如果某个候选值能通过全部3条KS的检验,这说明这个候选值就是真实值;此时得到的候选值是真实state(即完成初始化阶段后LFSR的状态)的低44位,所有参与计算的trace对应的state的低44位都是这个候选值;(38)根据所求trace的IV的情况判断所求trace的state高位变化的情况,穷举计算出所有可能的KS。不妨假设接下来有效的IV和当前采集的IV有最多5位不同,即确认高27位完全相同,则对计算出的state部分截取低43位,对高5位进行穷举,共有32种可能,对所有state进行滚码,一共得到32条KS,则所求的KS必然包含在结果之中;(4)将求出的32条KS加上前导码、remoteID、buttonID、校验码等必要信息,组成32条符合格式要求数据帧;(5)按照被攻击对象的具体情况对数据进行编码等操作;(6)利用无线电设备将得到的32条信号逐条向RKE系统发送,当有效的信号被RKE系统接受到时,RKE系统将进行相应并执行相关操作,此时攻击完成。针对上述的攻击方法必须使用多条KS进行验证的特点,本文提出了简单易行的手段进行防御,具体措施如下:S1、将原通讯协议中的计数器值自加的步进增大,使得不同trace的计数器值快速变化;例如,发送的计数器值为8位,则自加的步进可以设为100。S2、将原通讯协议中的IV引入加密过程之前先进行反向;本发明公布的防御措施中,S1所述的操作会使得采集的多条数据的IV未知部分不相同,因为发送的计数器值会快速进位。而攻击者是无法知道未知部分的具体值的,也就无法知晓未知部分的变化情况,这就使得攻击者难以确保采集到的数据对应足够长的相同的state部分。本发明公布的防御措施中,S2所述的操作会使得采集的多条数据对应的state几乎完全不相同。因为Hitag2加密中先引入的变化会影响后面,当IV反向后再引入加密时,IV的变化部分会被先引入,这就导致得到的state几乎完全不相同了。无法得到对应相同state的多条KS来进行验证,根据前面的说明,多轮筛选过程将无法成功,从而使得攻击方法失效。本发明公布的两条简单易行的防御措施,其本质都是阻止攻击者采集到足够数量的符合攻击要求的trace。采用这两条措施时只需对钥匙芯片的代码进行细微修改即可实现,而无需修改芯片硬件。以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1