本申请要求2010年8月18日提交的第12/858,950号美国申请的优先权,并且要求2009年9月2日提交的第61/239,295号美国临时申请、2009年9月17日提交的第61/243,272号美国临时申请和2009年9月22日提交的第61/244,787号美国临时申请的权益。
具体实施方式
以下描述本质上仅为示例性并且决非旨在限制本公开内容、它的应用或者用途。出于清楚的目的,相同标号将在附图中用来标识相似要素。如在此所用,短语A、B和C中的至少一个应当解释为意味着使用非排他逻辑OR(或者)的逻辑(A或者B或者C)。应当理解,可以按不同顺序执行方法内的步骤而不改变本公开内容的原理。
如在此所用,术语模块可以指代专用集成电路(ASIC)、电子电路、执行一个或者多个软件或者固件程序的处理器(共享、专用或者成组)和/或存储器(共享、专用或者成组)、组合逻辑电路和/或提供描述的功能的其它适当部件或者是上述各项的部分或者包括上述各项。
被称为伽罗瓦/计数器模式(GCM)的加密算法是用来对数据进行加密的高级加密标准(AES)算法的操作模式。用来为未加密数据生成消息认证代码的GCM的变体被称为GMAC。GCM和GMAC基于具有128位块大小的对称密钥块密码。具有GMAC的GCM协议被称为GGM协议(GGMP)。下文将GCM和GGM统称为GCM协议(GCMP)。
图1图示了无线设备100。在一个实现方式中,无线设备100根据由无线吉比特联盟(WGA)定义的规范在60GHz频带中通信。无线设备100包括PHY模块102、媒体访问控制(MAC)模块104和安全性模块108。
PHY模块102在60GHz频带中经由一个或者多个天线(未示出)将无线设备100对接到无线通信介质。MAC模块104控制无线设备100在60GHz频带中对无线通信介质的访问。安全性模块108管理由无线设备100通过无线通信介质传达的数据的安全性。
MAC模块104包括加密模块110、受控端口112和未受控端口114。加密模块110使用伽罗瓦/计数器模式协议(GCMP)来对待发送数据进行加密。受控端口112用来在使用加密时安全地传送经加密数据。未受控端口114用来传送未加密数据。
安全性模块108包括认证模块116和密钥管理模块118。认证模块116认证无线设备100与链路伙伴(例如,客户端站或者接入点)的通信。密钥管理模块118生成加密模块110用来对数据进行加密的密钥(例如,时间密钥)。
认证模块116包括主密钥模块120。主密钥模块120生成用于无线设备100在60GHz频带中与链路伙伴的通信会话的成对主密钥(PMK)。密钥管理模块118包括时间密钥模块122。时间密钥模块122基于成对主密钥(PMK)生成时间密钥(例如,成对瞬态密钥(PTK))。加密模块110使用时间密钥来对待发送数据(例如,明文MAC协议数据单元(MPDU))进行加密。
具体而言,加密模块110使用初始化矢量(IV)来调用加密。初始化矢量实质上是临时数,该临时数是与时间密钥一起用来对MPDU进行加密的数值。对于给定的时间密钥,加密模块110使用不同初始化矢量来对每个MPDU进行加密。也就是说,对于给定的时间密钥,用来对一个MPDU进行加密的初始化矢量不重新用来对另一MPDU进行加密。
初始化矢量通常具有96位确定性构造(96位IV)。备选地,初始化矢量的长度可以大于或者小于96位(非96位IV)。96位IV包括固定字段和调用字段。固定字段标识加密设备(例如,无线设备100)。例如,固定字段可以包括加密设备的MAC地址。
调用字段标识每个待加密的MPDU。例如,调用字段可以包括用于待加密MPDU的分组编号(PN)。分组编号在对每个MPDU进行加密时递增。因而,对于给定的时间密钥,调用字段对于每个待加密MPDU而言不同。
在96位IV中,i位调用字段(例如,分组编号)将可以使用给定的时间密钥来进行加密的MPDU的数目(即,调用次数)限制为2i。另外,(96-i)位固定字段(例如,MAC地址)将可以使用相同时间密钥的不同设备的数目限制为296-i。
因而,在96位IV中,如果i>32,则调用次数2i可以大于232。也就是说,对于给定的时间密钥,如果i>32,则可以使用i位调用字段来进行加密的MPDU的数目可以大于232。
由于初始化矢量在2i次调用(即,在使用给定的时间密钥来加密2i个MPDU)之后重置为1,所以随后如果未使用新时间密钥,则在2i次调用之后的任何调用将重用先前已经用于给定的时间密钥的初始化矢量,从而损害安全性。
因此,为了保证不损害安全性,当使用96位IV时,对于给定的时间密钥,调用的总次数不能超过2i。
然而,如果使用非96位IV,则按照不同方式设计GCM算法,从而使得即使初始化矢量的长度>96并且i>32,调用次数仍然不应超过232。
另外,加密设备为每个经加密MPDU生成消息完整性代码(MIC)。当发送经加密MPDU时向经加密MPDU追加消息完整性代码。接收经加密MPDU的接收设备基于消息完整性代码来验证加密设备的身份。接收设备对该经加密MPDU进行解密并且同时验证加密设备的身份。GCMP当前包含如下消息完整性代码:对于64位MIC,调用次数不能超过232(最大分组大小:215个字节)。
由于用不同初始化矢量对每个MPDU进行加密,所以如果使用非96位IV,则对验证次数的约束意味着可以使用给定的时间密钥来对不多于232个MPDU进行加密。根据在60GHz频带(或者其它非常高速率通信系统中)在发送期间使用的数据速率和分组大小,对调用次数的约束意味着一旦对232个MPDU进行了加密就会耗尽时间密钥。因而,在后续调用期间使用新时间密钥以防止初始化矢量与相同时间密钥一起重用。
可以通过如下构造新初始化矢量(下文为GCMP临时数)来减轻在使用非96位IV时由于对调用次数的约束而导致的生成新时间密钥的开销。GCMP临时数长度为96位,即,96位IV。GCMP临时数包括调用字段,该字段的长度可以大于32位以允许使用给定的时间密钥来对多于232个MPDU进行加密。可以使用给定的时间密钥来对多于232个MPDU进行加密而不针对使用给定的时间密钥来加密的任何MPDU重复GCMP临时数的值。
另外,可以用密码块链(CBC)媒体访问控制(MAC)协议(CCMP)临时数根据计数器模式(CTR)构造GCMP临时数。相应地,可以在生成GCMP临时数时借助和利用现有CCMP架构。此外,可以在使用CCMP加密的设备(例如,在2.4/5GHz频带中操作的设备)中实施GCMP加密。
例如,对于128位时间密钥,CCMP使用104位(即13个八位组)和64位MIC的IV/临时数(下文为CCMP临时数)。然而,GCMP推荐96位GCMP临时数(即,12个八位组)和128位消息完整性代码。相应地,可以通过将CCMP IV/临时数的长度减少一个八位组来根据104位CCMP临时数构造96位GCMP临时数。此外,CCMP消息完整性代码的长度可以从64位增加至128位以生成GCMP消息完整性代码。
如图2A和图2B中所示,加密模块110包括生成如下GCMP临时数的临时数模块200。在图2A中,加密模块110从MAC模块104接收待加密明文MPDU。此外,加密模块110从安全性模块108接收用于对明文MPDU进行加密的时间密钥(TK)。
临时数模块200从MAC模块104接收无线设备100的MAC地址。此外,对于每个待加密明文MPDU,临时数模块200从MAC模块104接收分组编号(PN)。例如,MAC模块104可以包括用于对为了加密而向加密模块110输入的明文MPDU的数目进行计数的PN计数器模块202。PN计数器模块202向临时数模块200输出PN计数。在一些实现方式中,安全性模块108可以包括PN计数器模块202而不是MAC模块104。
临时数模块200基于MAC地址和PN计数来生成96位GCMP临时数。加密模块110还包括GCM模块204,该模块使用GCMP临时数和从安全性模块108接收的时间密钥(TK)来对明文MPDU进行加密,并且还为MPDU生成消息完整性代码。
在图2B中,GCMP临时数包括两个字段。第一字段包括用于60GHz频带的无线设备100的MAC地址。MAC地址用来生成时间密钥(例如,成对瞬态密钥或者PTK)。第一字段的长度通常为48位(即,6个八位组)。第二字段包括分组编号。由于GCMP临时数的长度为96位,所以第二字段长度为48位(即,6个八位组)。
48位分组编号允许针对给定的时间密钥的248次调用。也就是说,加密模块110可以使用具有248个不同分组编号的给定时间密钥来对248个MPDU进行加密。由于针对给定的时间密钥未重复248个分组编号中的任一分组编号,所以不损害安全性。
现在参照图3A-3F,临时数模块200使用不同方法来生成GCMP临时数。在图3A中,临时数模块200通过从104位CCMP临时数删除优先级八位组来根据104位CCMP临时数构造GCMP临时数。在一些实现方式中,临时数模块200可以使用包括优先级八位组的104位CCMP临时数作为GCMP临时数。
在图3B中,临时数模块200将分组编号的长度减少一个字节(即,从48位变成40位)以提供240次调用而不是从104位CCMP临时数删除优先级八位组。在一些实现方式中,临时数模块200可以将分组编号的长度减少多于或者小于8位。此外,在一些实现方式中,临时数模块200可以向分组编号添加来自优先级八位组的八个保留位中的四位(即,b4位至b7位)以生成44位分组编号,从而提供244次调用。
在图3C-图3E中,为了保证两个帧不使用相同临时数,两个帧可以包括不同优先级字段值、不同管理字段值、不同MAC地址或者不同分组编号。在图3C中,临时数模块200在GCMP临时数中包括优先级字段以允许将单独分组编号用于不同数据类型。
对于44位分组编号方式,优先级字段包括4位业务(traffic)标识符(TID),该TID表明帧中的数据类型,从而使得可以根据数据类型提供不同服务质量(QoS)。例如,携带视频数据的帧可以使用与携带因特网数据的帧不同的业务标识符。使用4位优先级字段允许将单独分组编号(例如,PN0、PN1、...和PN5)用于不同数据类型。向分组编号重新分配优先级字段中的其它4位以创建44位分组编号。
为了使用44位分组编号而同时维持8个八位组的GGMP标头(与当前使用的CCMP标头相同的大小/格式),临时数模块200向PN5填充或者追加4个零位(或者可以忽略的一些其它位)。换言之,PN5具有四个有用位和四个填充位。当构造GCMP临时数时,临时数模块200从PN5去除4位填充。临时数模块200使用PN0-PN4以及PN5的四个有用位来生成44位分组编号,从而提供244次调用。
当在GCMP临时数中包括优先级字段时,具有不同业务标识符的两个帧可以使用相同分组编号值而不引起对相同临时数的重用。换言之,不同优先级/TID帧队列可以使用相应的独立PN计数器而不考虑对分组编号的重用。允许的PN计数器的数目由优先级字段的大小确定。例如,4位优先级字段允许24个PN计数器。当在GCMP临时数中不包括优先级字段时,具有不同业务标识符的帧队列共享相同的PN计数器。
在图3D中,临时数模块200在GCMP临时数中的临时数标志字段中包括优先级字段。除了临时数标志字段使用来自优先级八位组字段的一个保留位来表明MPDU是管理帧还是数据帧之外,临时数标志字段与图3A的优先级八位组字段相同。换言之,临时数标志字段包括管理字段(例如,保留位),该字段表明MPDU是管理帧还是数据帧。当在GCMP临时数中包括管理字段时,管理帧队列和数据帧队列可以独立使用相应的PN计数器。当在GCMP临时数中不包括管理帧字段时,管理帧队列和数据帧队列共享相同的PN计数器。
在图3D中,临时数模块200生成96位GCMP临时数,该临时数包括用于临时数标志字段的一个八位组和用于MAC地址的六个八位组。临时数标志字段包括四个优先级位b0-b3、管理位b4和三个保留位b5-b7。临时数模块200使用五个剩余八位组和三个保留位b5-b7来生成43位PN,从而提供243次调用。
在图3E中,省略了优先级字段。临时数模块200生成96位GCMP临时数,该临时数包括用于临时数标志字段的一个八位组和用于MAC地址的六个八位组。临时数标志字段包括管理位b0和七个保留位b1-b7。临时数模块200使用五个剩余八位组和七个保留位b1-b7来生成47位分组编号,从而提供247次调用。
GCMP加密使用预计数器块(J0)。通常,预计数器块长度为128位并且包括96位临时数(31个“0”位和单个“1”位),这将临时数限制为96位。也就是说,J0=临时数96‖031‖1。作为替代,可以如下改变预计数器块J0的格式。可以生成预计数器块J0以包括104位临时数、23个“0”位和单个“1”位,以允许根据CCMP临时数格式使用104位临时数。也就是说,J0=临时数104‖023‖1。
图3F示出了在CCMP加密中使用的长度为128位并且可以在GCMP加密中重用的CCMP预计数器块。CCMP预计数器块包括8位标志(保留位)、104位临时数和16位控制字段(全“0”)。可以重用CCMP预计数器块的104位临时数以生成GCMP预计数器块J0。例如,加密模块110可以生成GCMP预计数器块J0。
图3A-图3F图示了生成GCMP临时数的示例方法。该方法允许使用给定的时间密钥来对多于232个MPDU进行加密,而无需重用相同的分组编号。可以实施其它用于生成GCM临时数的方法,该方法允许使用给定的时间密钥来对多于232个MPDU进行加密,而无需重用相同的分组编号。
对于给定的时间密钥,分组编号可以在有限时间内用完(即,耗尽)。有限时间的长度依赖于数据速率和分组编号的长度。例如,S位分组编号将在2S次调用之后(即,在使用给定的时间密钥来对2S个MPDU进行加密之后)耗尽。另外,数据速率更高时分组编号将耗尽得更快。
由于针对给定的时间密钥不能重复相同的分组编号,所以安全性模块108监视用于每个时间密钥的分组编号。也就是说,安全性模块108在使用给定的时间密钥来与链路伙伴建立的每个成对瞬态密钥安全性关联(PTKSA)期间监视分组编号。当分组编号耗尽时,安全性模块108部分地终止使用给定的时间密钥来与链路伙伴建立的PTKSA。
此外,安全性模块108向链路伙伴通知用于PTKSA的分组编号耗尽。例如,安全性模块108向链路伙伴发送鲁棒安全性网络关联(RSNA)帧或者TKSA终止帧。当链路伙伴接收RSNA终止帧或者PTKSA终止帧时,链路伙伴也删除当前PTKSA。
当在客户端站(STA)对之间的RSNA/TKSA由于分组编号耗尽而终止时,STA对重新建立RSNA/TKSA以生成新时间密钥。STA对可以保持成对主密钥(PMK)并且可以使用相同PMK来生成新时间密钥(即PTK)。STA对使用4路握手来生成新PTK。例如,发送STA的安全性模块(例如,无线设备100的安全性模块108)和接收STA的安全性模块执行4路握手。
备选地,安全性模块108可以监视分组编号并且确定分组编号何时接近耗尽。例如,安全性模块108可以确定分组编号何时大于或者等于预定阈值。预定阈值可以依赖于分组编号的长度和数据日期。
当分组编号接近耗尽时(即,当分组编号大于或者等于预定阈值时),安全性模块108可以开始4路握手以在分组编号耗尽之前生成新时间密钥。备选地,当分组编号大于或者等于预定阈值时,安全性模块108可以请求对等STA开始4路握手以在分组编号耗尽之前生成新时间密钥。
具体而言,安全性模块108在4路握手消息中包括与新时间密钥相关联的新密钥ID(KeyID)。新密钥ID用来生成新时间密钥。例如,时间密钥模块122(图1中所示)可以生成新密钥ID。基于与新密钥ID相关联的新时间密钥在STA对之间建立新成对瞬态密钥安全性关联(PTKSA)。当使用新时间密钥的加密开始时,重置PN计数器模块202。
在安装(例如,在加密模块110中存储)新时间密钥之前,如果用于当前时间密钥的分组编号尚未耗尽,则STA对仍然可以使用当前时间密钥来对数据进行加密。一旦生成和安装了新时间密钥,STA对就使用新时间密钥(与新密钥ID相关联)来对数据进行加密。
参照图4,其更具体地描述了分组编号耗尽。当分组编号大于或者等于预定阈值时,发送STA的MAC模块(例如,图1中所示无线设备100的MAC模块104)生成原语。该原语被称为MLME-PN-Exhaustion.indication原语,其中MLME表示发送STA的MAC子层管理实体。图4示出了在MLME-PN耗尽.指示原语中使用的密钥描述符(KeyDescriptor)。
对于48位分组编号,预定阈值小于248以允许安全模块108使用剩余分组编号来发送如下文描述的TKSA/RSNA拆除消息。例如,当分组编号长度为48位时,预定阈值可以在247与248之间。
在接收MLME-PN-Exhaustion.indication原语时,STA的站管理实体(SME)(例如,安全性模块)调用TKSA/RSNA/关联/STSL拆除过程。STA的SME删除当前成对瞬态密钥安全性关联(PTKSA)和与当前PTKSA相关联的时间密钥。
备选地,当分组编号耗尽时,发送STA的SME(例如,无线设备100的安全性模块108)可以阻塞受控端口(例如,图1中所示的受控端口112)。此外,发送STA的SME可以删除当前使用的时间密钥。另外,发送STA的SME可以开始4路握手(或者请求对等STA开始4路握手)以生成和安装新时间密钥。当使用这一方式时,不拆除现有RSNA和关联/STSL。
当接收STA接收第一握手消息或者握手请求时,接收STA也可以阻塞它的受控端口。此外,接收STA可以删除当前使用的时间密钥。备选地,接收STA可以使用旧时间密钥来继续(假如接收STA的分组编号尚未耗尽),直至安装新时间密钥。
更具体地,当分组编号耗尽时,发送STA的MAC模块104生成MLME-PNEXHAUSTION.indication原语。安全性模块108(即,发送STA的SME)删除当前PTKSA并且调用被称为MLME去关联原语的原语。安全性模块108向对等STA发送去关联帧。在接收去关联帧时,对等STA也删除当前PTKSA。
此外,安全性模块108(即,发送STA的SME)删除组时间密钥安全性关联(GTKSA)。另外,安全性模块108删除站到站链路(STSL)瞬态密钥安全性关联(STKSA)。安全性模块108也可以针对STKSA调用STSL应用拆除程序。当对等STA接收STSL拆除消息时,对等STA的SME也删除对应STKSA。
备选地,可以按照其它方式处理分组编号耗尽。例如,发送STA的SME(例如,安全性模块108)可以拆除对应的鲁棒安全性网络关联(RSNA)而不调用去关联。作为替代,可以向对等STA发送RSNA拆除消息以供对等STA拆除RSNA。对等STA的SME可以拆除成对主密钥安全性关联(PMKSA)和成对瞬态密钥安全性关联(PTKSA)两者。
发送STA的SME(例如,安全性模块108)可以仅删除PTKSA而不结束RSNA和关联。可以向对等STA发送PTKSA删除消息以供对等STA删除对应的PTKSA。
另外,发送STA的SME(例如,安全性模块108)可以拆除对应的RSNA而不调用STSL拆除。可以向对等STA发送RSNA拆除消息以供对等STA拆除RSNA。对等STA可以拆除STSL瞬态密钥安全性关联(STKSA)和/或STSL主密钥安全性关联(SMKSA)。
发送STA的SME(例如,安全性模块108)可以仅删除STKSA而不结束RSNA和STSL。可以向对等STA发送STKSA删除消息以供对等STA删除对应的STKSA。
因此,当分组编号大于预定阈值时,发送STA可以拆除使用时间密钥来与接收STA建立的RSNA并且删除RSNA和时间密钥。备选地,当分组编号大于预定阈值时,发送STA可以立即删除时间密钥和/或删除RSNA和/或删除关联并且通知接收STA删除时间密钥、RSNA和关联。在一些实现方式中,发送STA和接收STA也可以删除时间密钥和RSNA但是维持关联,或者删除时间密钥并且维持RSNA和关联。
另外,当分组编号大于预定阈值时,发送STA可以删除时间密钥、但是仍然可以使用时间密钥来对从接收STA接收的经加密数据进行解密(如果接收STA的分组编号仍然小于预定阈值),直至建立新时间密钥。备选地,当分组编号小于比预定阈值更小的另一阈值时,发送STA可以开始4路握手以建立新时间密钥而仍不删除当前的时间密钥。一旦建立和安装了新时间密钥,发送STA和接收STA就删除当前的时间密钥。
对大于预定阈值的分组编号的使用并不限于对MPDU进行加密。大于预定阈值的分组编号也可以用来对其它帧进行加密。例如,大于预定阈值的分组编号可以用来对RSNA拆除帧、去关联帧等进行加密。
在分组编号耗尽之后的拆除之后在两个设备之间重新建立安全性关联被称为时间密钥(TK)密钥更新。两个设备的站管理实体(SME)(即,安全性模块)执行如下文描述的TK密钥更新。两个设备可以包括STA对或者STA和接入点(AP)。备选地,设备之一可以是个人基本服务集(PBSS)控制点(PCP),而另一设备可以是非PCP STA。
当由于分组编号耗尽而删除在PCP/AP与非PCP/AP STA之间的成对瞬态密钥安全性关联(PTKSA)时,非PCP/AP STA可以与PCP/AP重新关联和/或与PCP/AP建立新RSNA。非PCP/AP STA可以高速缓存一个或者多个成对主密钥安全性关联(PMKSA)。如果非PCP-AP STA已经高速缓存了一个或者多个PMKSA,则非PCP-APSTA无需重新建立PMKSA。作为替代,非PCP/AP STA可以略过PMKSA建立并且使用4路握手来生成新的成对瞬态密钥安全性关联(PTKSA)。
当由于分组编号耗尽而删除组时间密钥安全性关联(GTKSA)时,始发STA可以使用4路握手或者组密钥握手来创建新GTKSA。始发STA可以被称为始发方STA并且可以表示为STA_I。对等STA可以表示为STA_P。
当由于分组编号耗尽而删除站到站链路(STSL)瞬态密钥安全性关联(STKSA)时,STA_I可以与STA_P建立新STSL。如果在STA对(即,在STA_I与STA_P)之间的STSL主密钥(SMK)尚未到期,则STA_I可以发起与STA_P的4路握手并且生成新STKSA。如果SMK已经到期,则STA_I生成与STA_P的新STSL主密钥安全性关联(SMKSA)和新STSL瞬态密钥安全性关联(STKSA)两者。
备选地,可以如下执行时间密钥(TK)密钥更新。如果终止鲁棒安全性网络关联(RSNA)而不去关联或者无STSL拆除,则STA可以开始新RSNA或者可以请求对等STA开始新RSNA。如果高速缓存了成对主密钥(PMK)/STSL主密钥(SMK),则可以略过成对主密钥安全性关联(PMKSA)/STSL主密钥安全性关联(SMKSA)。
如果仅删除了成对瞬态密钥安全性关联(PTKSA)/STSL瞬态密钥安全性关联(STKSA),则STA可以开始4路握手以生成新PTKSA/STKSA(假如主密钥未到期)。备选地,STA可以请求对等STA开始4路握手以生成新PTKSA/STKSA(假如主密钥未到期)。
在一些实现方式中,发送STA可以针对给定的时间密钥在分组编号接近耗尽时(例如,在PN≥预定阈值时)更新时间密钥。当分组编号接近耗尽时并且当发送STA为认证方时,发送STA可以开始与请求方STA的4路握手以生成新时间密钥。
当分组编号接近耗尽时并且当发送STA为请求方时,发送STA可以向认证方STA(接收STA)发送局域网可扩展认证协议(EAPOL)请求消息。认证方STA可以开始4路握手以生成新时间密钥。在对等安全性关联(P2PSA)中,MAC地址更低的STA可以是认证方,而MAC地址更高的STA可以是请求方。
当分组编号耗尽时,发送STA可以停止发送安全数据,直至为加密数据建立了新时间密钥。然而,发送STA可以继续从对等STA接收安全数据。如果在分组编号耗尽之前未安装新时间密钥,则(在一个实现方式中)发送STA阻塞受控端口(例如,图1中所示的受控端口112),直至生成和安装了新时间密钥。
如果发送设备的分组编号耗尽而对应的TK尚未更新,则接收STA丢弃从发送STA接收的MSDU。如果接收STA检测到发送STA的分组编号耗尽或者大于或者等于预定阈值,则接收STA可以删除对应的成对瞬态安全性密钥关联(PTKSA)。接收STA可以向发送STA发送RSNA终止帧或者PTKSA终止帧。
在发送方发起的密钥更新(即,由发送STA发起的TK密钥更新)中,如果分组编号接近耗尽,则发送STA开始与接收STA的4路握手以生成新时间密钥。安全性关联对中的任一STA可以根据它的分组编号使用而开始TK密钥更新。如果两个STA同时开始密钥更新,则(在一个实现方式中)MAC地址更低的STA(即,认证方)继续密钥更新,而MAC地址更高的STA(即,请求方)终止密钥更新。
在接收方发起的密钥更新(即,由接收STA发起的TK密钥更新)中,如果接收STA检测到发送STA的PN大于或者等于预定阈值,则接收STA可以开始TK密钥更新(例如,如果接收STA为认证方))。备选地,接收STA可以向发送STA发送局域网可扩展认证协议(EAPOL)请求消息以请求TK密钥更新。
现在参照图5A和图5B,在TK密钥更新时,可以在任何醒目显示的字段中在EAPOL-密钥帧中包括与新时间密钥相关联的新密钥ID。例如,在图5A中,安全性模块108可以定义密钥ID密钥数据封装(KDE)并且在EAPOL密钥帧的密钥数据字段(醒目示出)中包括密钥ID KDE。备选地,可以使用保留的八位组之一(醒目示出)作为密钥ID字段。在一些实现方式中,在图5B中所示的密钥信息字段中,可以使用两个保留位(醒目示出)。
现在参照图6,可以在4路握手的消息中包括与新时间密钥相关联的新密钥ID。例如,安全性模块108可以在所有4路握手消息中,或者在消息1、2和3中,或者在消息1和2中,或者在消息3和4中包括密钥ID。
在图6中,示出了在STA1(请求方)与STA2(认证方)之间的4路握手。请求方和认证方可以各自是图1中所示的无线设备100。请求方和认证方的安全性模块执行4路握手。
4路握手服务于两个目的:STA1和STA2可以验证各自具有相同的主密钥(例如,相同的预先共享密钥或者PSK)。此外,相同主密钥(PSK)用来在每个STA中生成相同时间密钥(例如,成对瞬态密钥(PTK))。
4路握手始于认证方在消息1中向请求方发送临时数(ANonce)(随机数)。基于ANonce,请求方生成SNonce。请求方使用主密钥、ANonce、SNonce以及认证方和请求方的MAC地址的组合来生成时间密钥(PTK)。请求方也使用PTK来生成消息完整性代码。
请求方在消息2中向认证方发送每个SNonce和消息完整性代码。请求方使用PTK的部分来保护消息2。认证方使用ANonce、SNonce和MAC地址来生成时间密钥(PTK)。认证方使用由认证方生成的PTK来生成消息完整性代码。如果由认证方生成的消息完整性代码与由请求方生成的消息完整性代码匹配,则认证方确定请求方在使用与认证方相同的主密钥来生成时间密钥。
认证方在消息3中向请求方发送由认证方生成的消息完整性代码。当请求方确定由认证方生成的消息完整性代码与由请求方生成的消息完整性代码相同时,请求方确定认证方在使用与请求方相同的主密钥来生成时间密钥。此外,当由认证方生成的消息完整性代码与由请求方生成的消息完整性代码相同时,请求方确定由认证方生成的时间密钥与由认证方生成的时间密钥相同。请求方在消息4中向认证方发送确认。
随后,在相应的加密模块中安装生成的时间密钥,并且使用新时间密钥来对待发送数据进行加密。当分组编号耗尽或者接近耗尽时执行4路握手。在每次4路握手期间,在消息1中使用不同随机数生成不同时间密钥。此外,在消息3中包括新密钥ID以使新时间密钥区别于在先时间密钥。随后,新密钥ID与新时间密钥一起用来对数据进行加密。
在一些实现方式中,可以使用在先时间密钥而不是使用4路握手来生成新时间密钥。具体而言,在与当前使用的时间密钥相关联的分组编号耗尽或者接近耗尽之后,对等STA的时间密钥模块(例如,图1中所示无线设备100的时间密钥模块122)可以基于当前使用的时间密钥(和/或更旧的时间密钥)和新时间密钥的密钥ID来生成新时间密钥。也就是说,TK(i+1)=F{TK(i),i+1,...}。
更具体地,当用于一个STA中的当前使用的时间密钥的分组编号接近耗尽时,STA触发时间密钥更新(即,TK密钥更新)。STA用新时间密钥的密钥ID更新安全性标头的密钥ID字段,并且基于当前使用的密钥和新密钥ID来推导新时间密钥。在安装新时间密钥之后,STA开始使用新TK来对数据进行加密。
当对等STA接收使用新时间密钥来进行加密的帧时,它基于在新时间密钥之前使用的时间密钥和新TK的密钥ID来推导新时间密钥。对等STA也安装新时间密钥并且开始使用新时间密钥来对数据进行加密。
在一些实现方式中,STA可以预先推导两个或者更多时间密钥以避免与时间密钥推导相关联的延迟。如果两个STA同时更新时间密钥,则MAC地址更高的STA可以遵循从MAC地址更低的STA接收的新时间密钥。如果一个STA为认证方而另一STA为请求方,则认证方在请求方向认证方发送TK密钥更新请求以触发TK密钥更新时开始TK密钥更新。
如图7A中所示,加密模块110还包括标头模块210和MPDU模块212。标头模块210为每个经加密MAC协议数据单元(MPDU)分别生成图7B和图7C中所示的GCMP标头和GGMP标头。GCM模块204包括MIC模块206,该模块206生成图7B和图7C中所示的MIC。MPDU模块212基于从GCM模块204接收的经加密数据和由MIC模块206生成的MIC来生成经加密MPDU。
图7B图示了GCMP MPDU分组的示例格式。GCMP MPDU分组包括MAC标头、GCMP标头、数据、MIC和帧校验序列(FCS)。由标头模块210生成的GCMP标头(醒目示出)具有8个八位组的长度并且包括分组编号字段和密钥ID字段。分组编号字段包括由PN计数器模块202生成的分组编号。密钥ID字段包括由安全性模块108生成的密钥ID。在GCMP标头中保留附加位以存储大于2位的密钥ID。因而,GCMP标头包括用于存储密钥ID的共计两个八位组。此外,由MIC模块206生成的消息完整性代码具有16个八位组的长度。
在图7C中示出了GGMP MPDU格式,其中用来生成GCMP临时数的分组编号具有少于48位的长度(例如,44位)。当构造GCMP标头时,44位分组编号存储在六个八位组(PN0至PN5)中,其中用于PN5的八位组由设置成零(或者任何其它值)的4位填充。接收STA从PN5去除4位填充并且使用PN0至PN4和PN5的剩余部分来构造分组编号,并且使用分组编号来生成GCMP临时数。
现在参照图8,加密模块110包括图2A和图7A中所示的模块。此外,加密模块110包括PN计数器模块202、MAC标头模块220、MAC地址模块222、净荷模块224和附加认证数据(AAD)模块226。并未重复对图2A和图7A中所示的模块的描述。
MAC标头模块220、MAC地址模块222和净荷模块224接收待加密明文MPDU。MAC标头模块220从每个明文MPDU提取MAC标头并且向AAD模块226输出MAC标头。MAC地址模块222从每个明文MPDU提取MAC地址并且向临时数模块200输出MAC地址。净荷模块224从每个明文MPDU提取净荷数据并且向GCM模块204输出数据。
AAD模块226基于MAC标头来生成附加认证数据(AAD)并且向GCM模块204输出AAD。GCM模块204接收AAD、临时数、净荷数据和时间密钥并且生成经加密数据和消息完整性代码。MPDU模块212接收MAC标头、经加密数据、消息完整性代码和GCMP标头并且生成经加密MPDU。
可以通过使用CCMP架构并对CCMP架构有一些修改来实施图8中所示的加密模块110。例如,该修改可以包括与在CCMP架构中不同地生成GCMP临时数、GCMP标头和GCMP消息完整性代码。该修改也可以包括如在本公开内容中描述的处理分组编号耗尽和TK密钥更新。相应地,使用CCMP加密的设备也可以在修改CCMP架构之后利用GCMP加密。
在一个实现方式中,在60GHz频带中操作的设备通常使用的GCMP加密也可以由操作频带不同于60GHz频带的设备使用。另外,在本公开内容中关于GCMP描述的处理分组编号耗尽和TK密钥更新也可以用来在使用CCMP加密的设备(例如,在2.4/5GHz频带中操作的设备)中监视分组编号耗尽和TK密钥更新。
现在参照图9A和9B,当发送设备对MPDU进行加密时,经连续加密MPDU的分组编号针对在加密期间使用的给定时间密钥依次增加。当接收设备接收经加密MPDU时,加密设备确定经加密MPDU是否具有渐增分组编号。在一个实现方式中,如果所接收的经加密MPDU不具有渐增分组编号,则加密设备断定回放攻击(即,已经针对给定的时间密钥重用或者重复了分组编号)。
例如,如果所接收的经加密MPDU的分组编号小于或者等于先前接收的经加密MPDU的分组编号,则接收设备断定重放攻击。当检测到重放攻击时,接收设备丢弃所接收的经加密MPDU。
发送设备可以在发送经加密MPDU之前在多个发送队列中使经加密MPDU排队。当发送设备使用N个发送队列时,如果使用N个重放计数器,则接收设备可以跟踪所接收的经加密MPDU的分组编号(即,每个发送队列一个重放计数器)。
发送设备将单个分组编号计数器用于每个成对瞬态密钥安全性关联(PTKSA)、组瞬态密钥安全性关联(GTKSA)和STSL瞬态密钥安全性关联(STKSA)。此外,发送设备可以在鲁棒安全性网络(RSN)能力字段中包括每个PTKSA/GTKSA/STKSA的受支持MAC服务器数据单元(MSDU)优先级数目。在安全性建立(例如,经由4路握手)期间向接收设备传达RSN能力字段。
接收设备将一个或者多个重放计数器用于每个PTKSA、GTKSA和STKSA以跟踪所接收的经加密MPDU的分组编号。接收设备可以每个PTKSA/GTKSA/STKSA使用数目与发送设备的MSDU优先级数目相同的重放计数器,或者接收设备可以维持重放计数器数目(每个PTKSA/GTKSA/STKSA)等于MSDU优先级最大可能数目。例如,图9B示出了接收设备可以使用的重放计数器数目。
在一些实现方式中,接收设备可以将每个PTKSA/GTKSA/STKSA的单独重放计数器用于每个可能的MSDU优先级。发送设备在安全性建立期间验证接收设备支持充足数目的重放计数器之后使用MSDU优先级。
备选地,发送设备可以在安全性建立期间确定MSDU优先级数目大于由接收设备使用的重放计数器数目。为了在分组数目保持渐增时通过分组数目校验,由一个分组数目计数器处理的帧必须来自相同发送队列。因而,发送设备可以将属于多个MSDU优先级的帧放入一个发送队列中并且保持发送队列数目与重放计数器数目相同。发送设备向接收设备发送映射信息(即,在MSDU优先级到发送队列/重放计数器之间的映射)。
例如,发送设备可以具有四个优先级(即,四个业务标识符)而接收设备可以使用仅两个重放计数器R1和R2。发送设备可以使用与重放计数器R1和R2对应的仅两个队列Q1和Q2并且将TID1和TID2映射到Q1/R1。此外,发送设备可以将TID3和TID4映射到Q2/R2。
基于映射信息,重放计数器可以正确跟踪在从相同队列发送属于不同业务标识符的经加密MPDU时接收的经加密MPDU的分组编号。尽管经加密MPDU包括业务标识符信息,但是经加密MPDU不包括发送队列信息。因而,接收设备需要知道在业务标识符与发送队列之间的映射(其中发送队列一对一映射到接收设备中的分组编号计数器)。接收设备可以请求在MSDU优先级与重放计数器之间的优选映射。
当经加密MPDU在多个发送队列中排队时,发送设备可以在每个经加密MPDU中包括业务标识符(TID)而不是使用映射。例如,如果发送队列数目为M而重放计数器数目为N,则发送队列数目M应当与接收设备中的重放计数器数目相同(或者更少)。
当业务标识符数目大于发送队列/重放计数器数目(N)时,业务标识符可以被重置成与发送队列数目匹配。例如,当经加密MPDU具有M个优先级(或者业务标识符)时(其中M>N),业务标识符可以被重置成表明从仅N个发送队列发送经加密MPDU。基于业务标识符,N个重放计数器可以跟踪所接收的经加密MPDU的分组数目。例如,如果存在8个业务标识符、但是仅有4个发送队列/重放计数器,则在将具有TID5和TID6的帧放入发送队列中之前,这些帧的TID被重置成TID3。此外,在将具有TID7和TID8的帧放入发送队列中之前,这些帧的TID被重置成TID4。当接收设备接收具有经重置TID的帧时,接收设备可以将帧映射到对应的重放计数器。
图10图示了发送设备300和接收设备400。发送设备300和接收设备400中的每个设备可以是与图1中所示的无线设备100对应的无线设备。发送设备300包括PHY模块302、MAC模块304和安全性模块308。接收设备400包括PHY模块402、MAC模块404和安全性模块408。PHY模块302、402和安全性模块308、408分别与图1中所示的无线设备100的PHY模块102和安全性模块108相似。
在发送设备300中,MAC模块304包括无线设备100的MAC模块104中所示的模块。例如,MAC模块304包括与图1中所示的加密模块110相似的加密模块310。此外,MAC模块304包括控制M个发送队列330(例如,Q1、Q2、...)的队列控制模块320。队列控制模块320包括映射模块322和TID模块324。
在安全性建立期间,安全性模块308、408交换包括鲁棒性安全网络(RSN)能力字段、重放计数器数目等的信息。基于所交换的信息,映射模块322生成映射信息。备选地,TID模块324基于重放计数器数目来重置/改变业务标识符。安全性模块308、408交换映射信息和/或业务标识符。
当发送经加密MPDU时,加密模块310向队列控制模块320输出经加密MPDU。队列控制模块320根据映射信息在M个发送队列330中使经加密MPDU排队。备选地,队列控制模块320在经加密MPDU中播种(或者放置)业务标识符,并且向M个发送队列330输出经加密MPDU。PHY模块302发送来自M个发送队列330的经加密MPDU。
在接收设备400中,MAC模块404包括无线设备100的MAC模块104中所示的模块。例如,MAC模块404包括与图1中所示的加密模块110相似的加密模块410。
此外,MAC模块404包括控制N个重放计数器430(例如,R1、R2、...)的重放控制模块420。重放控制模块420包括映射模块422和TID模块424。映射模块422从安全性模块408接收映射信息。当使用业务标识符时,TID模块424从安全性模块408接收业务标识符。
PHY模块402接收由发送设备300发送的经加密MPDU。基于映射信息和/或业务标识符,N个重放计数器430确定从其发送每个所接收的经加密MPDU的发送队列。因而,N个重放计数器430跟踪所接收的经加密MPDU的分组编号。
重放控制模块420确定所接收的经加密MPDU的分组编号是否小于或者等于先前接收的经加密MPDU的分组编号。在一个实现方式中,重放控制模块420在所接收的经加密MPDU的分组编号小于或者等于先前接收的经加密MPDU的分组编号时断定重放攻击。
当检测到重放攻击时,重放控制模块420丢弃所接收的经加密MPDU。也可以在使用CCMP的设备(例如,在2.4/5GHz频带中操作的设备)中在此描述的发送队列和重放计数器的映射以及向经加密MPDU播种业务标识符。
本公开内容的教导也可以实施于能够在60GHz以及其它频带中操作的多频带设备中。例如,其它频带可以包括2.4/5GHz频带等。
可以用多种形式实施本公开内容的广泛教导。因此,尽管本公开内容包括特定示例,但是本公开内容的真实范围不应局限于此,因为其它修改将在研读附图、说明书和所附权利要求时变得明显。
权利要求书(按照条约第19条的修改)
1.一种系统,包括:
时间密钥模块,配置成生成第一时间密钥,其中所述第一时间密钥将用来对多个分组进行加密;
临时数模块,配置成针对基于所述第一时间密钥进行加密的每个分组生成临时数,其中每个临时数包括与由所述临时数模块生成的其它临时数相关联的分组编号不同的分组编号,其中所述分组编号长度大于N位,并且其中N为大于40的整数;
安全性模块,配置成确定在由所述临时数模块生成的所述临时数中包括的所述分组编号何时大于或者等于预定阈值;以及
加密模块,配置成使用所述第一时间密钥和所述临时数对多于2(N-1)个分组进行加密而不重用所述分组编号的值。
2.根据权利要求1所述的系统,其中:
所述预定阈值小于或者等于2N。
3.根据权利要求1所述的系统,其中所述预定阈值基于向链路伙伴发送经加密分组的速率。
4.根据权利要求1所述的系统,其中所述加密模块配置成使用伽罗瓦/计数器模式(GCM)加密来基于所述第一时间密钥和与所述多个分组中的每个分组对应的所述临时数对所述分组进行加密。
5.根据权利要求1所述的系统,其中响应于在由所述临时数模块生成的所述临时数中包括的所述分组编号大于或者等于所述预定阈值:
所述时间密钥模块被配置成生成第二时间密钥;以及
所述安全性模块被配置成:
在消息中包括与所述第二时间密钥相关联的密钥标识符;以及
向链路伙伴发送所述消息。
6.根据权利要求5所述的系统,其中所述安全性模块被配置成使用所述第一时间密钥和所述临时数中的具有比所述预定阈值更大的所述分组编号的临时数来对所述消息进行加密,其中所述消息包括去关联帧或者鲁棒安全性网络关联(RSNA)帧中的至少一个。
7.根据权利要求5所述的系统,其中:
所述时间密钥模块被配置成基于所述密钥标识符来生成所述第二时间密钥;以及
所述安全性模块被配置成:
在已经对2(N-1)个分组或者阈值数目的分组进行加密之后重置所述分组数目,以及
基于所述第二时间密钥和所述临时数之一来对第(2N+1)个分组或者第(阈值+1)个分组进行加密。
8.根据权利要求1所述的系统,还包括:媒体访问控制(MAC)模块,配置成:
当所述分组编号大于或者等于所述预定阈值时生成原语,
使用所述第一时间密钥来拆除与链路伙伴建立的安全性关联,以及
删除所述安全性关联和所述第一时间密钥。
9.根据权利要求1所述的系统,其中响应于在由所述临时数模块生成的所述临时数中包括的所述分组编号大于或者等于所述预定阈值,所述安全性模块被配置成:
阻塞用来发送经加密分组的控制端口;
删除所述第一时间密钥而不拆除与链路伙伴的安全性关联;以及
发起握手或者请求所述链路伙伴发起所述握手,以生成第二时间密钥。
10.根据权利要求1所述的系统,其中响应于在由所述临时数模块生成的所述临时数中包括的所述分组编号大于或者等于所述预定阈值,所述安全性模块被配置成从链路伙伴接收请求生成第二时间密钥的消息。
11.根据权利要求5所述的系统,其中所述时间密钥模块被配置成基于所述第一时间密钥来生成所述第二时间密钥。
12.根据权利要求1所述的系统,还包括:
标头模块,配置成生成用于经加密分组的标头,
其中所述标头包括所述分组编号和与所述第一时间密钥相关联的密钥标识符,以及
其中所述密钥标识符的长度范围从2位至16位。
13.一种无线网络设备,包括:
根据权利要求1所述的系统;以及
物理层(PHY)模块,配置成在60GHz频带、2.4GHz频带或者5GHz频带中发送经加密分组。
14.根据权利要求1所述的系统,其中所述系统在无线网络设备中实施,所述无线网络设备被配置成将计数器模式(CTR)与密码块链(CBC)媒体访问控制(MAC)协议一起用于加密。
15.根据权利要求1所述的系统,其中每个临时数包括:
第一48位字段,用于媒体访问控制(MAC)地址,以及
第二48位字段,配置成包括优先级子字段和多个分组编号子字段,
其中向所述分组编号子字段中的一个分组编号子字段追加多个位,以及
其中所述临时数模块被配置成通过丢弃所述多个位来生成每个临时数。
16.根据权利要求1所述的系统,其中每个临时数包括:
第一48位字段,用于媒体访问控制(MAC)地址,以及
第二48位字段,配置成包括所述分组编号。
17.一种方法,包括:
生成用于对将从网络设备向链路伙伴发送的多个分组进行加密的第一时间密钥;
生成用于对所述多个分组中的每个分组进行加密的临时数,其中所述临时数包括与生成的用于对所述多个分组中的其它分组进行加密的其它临时数相关联的分组编号不同的分组编号,其中所述分组编号长度大于N位,并且其中N为大于40的整数;
确定在所述临时数中包括的所述分组编号何时大于或者等于预定阈值;以及
使用所述第一时间密钥和所述临时数对多于2(N-1)个分组进行加密而不重用所述分组编号的值。
18.根据权利要求17所述的方法,其中:
所述预定阈值小于或者等于2N,以及
所述预定阈值基于向所述链路伙伴发送经加密分组的速率。
19.根据权利要求17所述的方法,还包括:响应于在所述临时数中包括的所述分组编号大于或者等于所述预定阈值:
生成第二时间密钥;以及
在消息中包括与所述第二时间密钥相关联的密钥标识符;
向链路伙伴发送所述消息;以及
使用所述第一时间密钥和所述临时数中的具有比所述预定阈值更大的所述分组编号的临时数来对所述消息进行加密,
其中所述消息包括去关联帧或者鲁棒安全性网络关联(RSNA)帧中的至少一个。
20.根据权利要求19所述的方法,还包括:
基于所述密钥标识符来生成所述第二时间密钥;
在对2(N-1)个分组或者阈值数目的分组进行加密之后重置所述分组数目;以及
基于所述第二时间密钥和所述临时数之一来对第(2N+1)个分组或者第(阈值+1)个分组进行加密。
21.根据权利要求17所述的方法,还包括:
当所述分组编号大于或者等于所述预定阈值时生成原语;
使用所述第一时间密钥来拆除与所述链路伙伴建立的安全性关联;以及
删除所述安全性关联和所述第一时间密钥。
22.根据权利要求17所述的方法,还包括:响应于在所述临时数中包括的所述分组编号大于或者等于所述预定阈值:
阻塞用来发送经加密分组的控制端口;
删除所述第一时间密钥而不拆除与所述链路伙伴的安全性关联;以及
发起握手或者请求所述链路伙伴发起所述握手,以生成第二时间密钥。
23.根据权利要求17所述的方法,还包括:响应于在所述临时数中包括的所述分组编号大于或者等于所述预定阈值,从所述链路伙伴接收请求生成第二时间密钥的消息。
24.根据权利要求19所述的方法,还包括:基于所述第一时间密钥来生成所述第二时间密钥。
25.根据权利要求17所述的方法,还包括:
为经加密分组生成标头,
其中所述标头包括所述分组编号和与所述第一时间密钥相关联的密钥标识符,以及
其中所述密钥标识符的长度范围从2位至16位。
26.根据权利要求17所述的方法,其中每个临时数包括:
第一48位字段,用于媒体访问控制(MAC)地址,以及
第二48位字段,配置成包括优先级子字段和多个分组编号子字段,
其中向所述分组编号子字段中的一个分组编号子字段追加多个位,以及
其中通过丢弃所述多个位来生成每个临时数。