引言
多年來,消費者已習慣于依賴無源汽車防盜系統提供的便利性和加強的安全性。這種系統由駕駛員隨身攜帶的密鑰卡 (key fob) 與安裝在汽車里的基站組成。兩者協同工作,可判斷駕駛員是否有權啟動汽車;而更重要的是,系統能夠阻止非法用戶使用汽車。雖然表面看來汽車防盜器的功能性很簡單,但其基本實現技術卻十分復雜有趣。本文探討了汽車防盜器的硬件和軟件問題,并就設計和安全性方面的考慮事項給出了頗值得關注的評述。
目前在無源汽車防盜系統中,密鑰卡與汽車之間的主要通信方法是利用調制磁場,這個磁場由汽車的防盜器基站從低頻 (一般為125 kHz) 交流電產生。該磁場的主要用途有三個:A) 密鑰卡的能量來源,故有“無源” (passive) 之稱;B) 從基站向密鑰卡 (即“下行鏈路”) 傳輸信息的載波;C) 從密鑰卡向基站 (即“上行鏈路”)傳輸信息的載波。
由于汽車防盜系統需要完全無源 (如無電池) 地工作,所以密鑰卡的磁場特性特別適合這種應用。“下行鏈路”場檢測和“上行鏈路”場調制都可以利用耗電量極小的電路來實現。此外,利用飽和磁場的場能來為密鑰卡中的這些電路供電比較容易實現。
在系統設計階段,必須仔細考慮一些關鍵的參數,比如密鑰卡的能量要求 (會影響到天線線圈的幾何形狀和驅動電平),以及驗證過程的安全性 (對響應時間有直接的影響)。下面將逐一對此進行詳細闡述。
系統接口
汽車防盜器的系統架構分為若干提取層,其中每一層代表不同的系統接口。圖1所示為這些分層的直觀表示。
圖1 汽車防盜器接口分層
物理層
汽車防盜系統的最底層是物理層,包含一個安裝在車上的天線線圈,能夠產生足夠的磁場,讓安裝在用戶密鑰卡中的天線線圈檢測與調制得到。
磁場產生與調制
根據磁場支持數據傳輸的方式不同,汽車防盜系統可分為兩類:半雙工和全雙工。在半雙工系統中,車載天線線圈在能量傳輸和數據傳輸周期之間更替,而數據調制采用頻移鍵控 (FSK) 方式。這種通信方法的圖解如圖2所示。從圖2可明顯看出兩點:其一,由于需要反復執行能量傳輸,如為密鑰卡充電,數據傳輸率大打折扣;其二,相比能量傳輸期間的磁場,被調制信號極小,因此其更容易受到周圍環境噪聲的干擾,導致傳輸距離減小。這些特性使得半雙工系統逐漸式微。
目前主要使用的是全雙工系統。在這種系統中,車載天線線圈同步執行能量傳輸和數據傳輸,而數據調制采用幅移鍵控 (ASK) 方式。圖3所示為這種通信方法的圖解。顯然,由于能夠同步進行數據傳輸和密鑰卡供能或充電,這種方法的數據傳輸率大大優于半雙工系統。而且,恒定的載波場往往還可以屏蔽掉干擾,在數據傳輸期間確保通信的穩健可靠。此外,這種方案可以采用簡單的包絡檢波電路來實現。鑒于目前市面上全雙工汽車防盜系統的流行,下面將專門討論這類系統。
系統接口:邏輯層
物理層上面是邏輯層。這一層涉及磁場上數據傳輸和編碼的特性及要求。它適用于從汽車到密鑰卡 (通常被稱為“下行鏈路”),以及從密鑰卡到汽車的雙向數據傳輸 (被稱為“上行鏈路”)。
下行鏈路
下行鏈路的信息采用脈沖長度調制方法:一般是二進制脈沖長度調制 (BPLM) 或 Quad 脈沖長度調制 (QPLM))來進行編碼。這種方法基于插入一個長度固定的載波場時隙“Tgap”,并設置時隙到時隙的時間間隔,以預先確定次數:T0 對應于邏輯“0”,T1 對應于邏輯“1”。這種方案的好處是它把從汽車到密鑰卡的能量傳輸嵌入到數據編碼中,并確保密鑰卡有足夠的供能用于處理被編碼的數據。不過,這種編碼方法也有一個缺點,那就是數據傳輸波特率必須依賴于正在發送的數據位流的邏輯值,因為每一個二進制狀態的傳輸時間都是不同的。圖4給出了這種編碼方法的更詳盡的圖解。
圖4 BPLM編碼方法
QPLM 是BPLM 的一種變體。利用這種調制方法, 一個時隙后傳輸兩個比特位,于是在收發器端有更多的能量可用。此外,其平均波特率比BPLM的高。除了允許的狀態數目從2擴展到4,而預定的時隙間隔被擴展以覆蓋更多的狀態之外,這種編碼方法與BPLM的基本實現原理是相同的。圖5所示為QPLM的直觀表示。
圖5 QPLM編碼方法
上行鏈路
從用戶密鑰卡到車載基站的信息通信一般采用曼徹斯特 (Manchester) 或雙相 (Bi-phase) 編碼。這些編碼方法都共有一些不同于下行鏈路的特性:A) 被編碼位流的平均占空比總是為50%;B) 發送被編碼數據的時間只依賴于波特率。上述兩種編碼技術都能夠從被編碼數據流中提取時鐘,這是因為編碼位流中的所有時間段都被量子化為T 或 2T (T 表示 “半個比特位”)。數據率固定為1/(2T)。時鐘提取只需要檢測最小時間段因子T,并使其相位與被編碼的位流同步即可。
圖6 曼徹斯特 (Manchester) 和雙相 (Bi-phase) 編碼
協議層
協議層定義各個數據位的分組,以實現車載基站和密鑰卡之間的通信。它定義有多少個比特位,以及它們按什么順序在讀取器和收發器之間進行傳輸。打個簡單的比方,這就類似于使用單詞構成句子的語法規則。協議層就象由邏輯層構成的句子,而邏輯層則相當于單詞。它形成一組固定的命令及其允許的應答。
驗證
驗證是用來描述判斷駕駛員是否有權啟動汽車這一個過程的術語。最簡單的驗證形式被稱為單向驗證 (unilateral authentication),這種情況下,汽車對密鑰卡進行“測試”,以確定它是否與汽車匹配。若在這一過程中再增加一個步驟,即讓鑰匙也對汽車進行“測試”,判斷其是否匹配,這時就成為了雙向或交互式驗證。顯然,增加的這一步驟提高了安全強度,不過代價是驗證時間延長。
單向驗證
一般而言,單向驗證協議由汽車發起,并包含以下幾個步驟:
1) 汽車讀取密鑰卡的唯一ID (不會與密鑰混淆)
2) 汽車產生一個隨機數詢問(challenge),并發送給密鑰卡
3) 密鑰卡對詢問進行加密(使用密鑰),然后向汽車發送應答(response)
4) 汽車對密鑰卡的應答與自己計算的應答進行比較 (使用相同的密鑰和詢問)
注:汽車必須擁有密鑰卡的密鑰,這一過程才能成功完成。共享密鑰的過程被稱為“Key Learn”,下一節將詳細闡述。
圖7 單向驗證
Key Learn: 公開/ 私密
Key Learn協議是指使汽車設立密鑰,并與密鑰卡共享之的過程。可以根據汽車發起的Key Learn會話的限制與安全設置,密鑰是公開的或私密的。
一個公開的Key Learn進程一般包含以下 (以及圖8所示) 步驟:
1) 汽車根據隨機數產生一個密鑰,并提交給密鑰卡
2) 密鑰卡“接受”密鑰,保存在存儲器中,并做出應答 (acknowledgment) 響應
3) 在成功接收到密鑰卡的應答之后,汽車把密鑰保存在存儲器中
如果Key Learn協議無法阻止竊聽者,或保護汽車不被非法使用,這時就需要采用私密Key Learn 進程。
圖8 公開的Key Learn
雙向或準交互式驗證
準交互式或雙向驗證是一種更為復雜的驗證過程。愛特梅爾防盜系統中實現的并非完全交互式的驗證,因為它并沒有在系統兩端 (汽車和密鑰卡) 使用隨機發生器。這種實現方案使用一個消息驗證代碼 (Message Authentication Code, MAC) 來驗證汽車與鑰匙是否匹配。
而且,在雙向驗證的情況下,驗證協議由汽車發起,包含以下(以及圖9所示)步驟:
1) 汽車讀取密鑰卡的唯一ID
2) 汽車產生一個隨機數詢問 ,并發送給密鑰卡
3) 汽車對隨機數進行加密,然后附加在詢問上
4) 密鑰卡對詢問進行加密 (利用密鑰 1) ,并將之與接收到的加密詢問進行比較 (MAC)
5) 如果結果匹配,密鑰卡加密之 (利用密鑰2) ,并向汽車發送應答
6) 汽車對密鑰卡的 應答與自己計算的應答進行比較(使用相同的密鑰和詢問)
圖9 雙向驗證
加密層
最頂層是加密層。這一層包含了把純文本信息轉換為加密信息的數學函數。這種函數最理想的應該具有兩種特性:
1. 唯一性:對于每一個純文本輸入,必須對應一個獨一無二的加密文本輸出
2. 不可預知性:純文本至加密文本對必須是無法預測的,即使有已知純文本至加密文本對大樣本供分析。
公開與私密
私密加密算法已流行多年。不過,私密算法有若干不足之處:A) 算法強度不確定;B) 缺乏關鍵的代碼對等評測機制的制約;C)若算法泄漏,可能導致大范圍安全性受損。 近年來,有不少矚目的例子陸續被報道,足以說明這些缺點的存在。更引人注目的缺點也許是系統缺乏互操作性,不能共享同一個物理和邏輯層。這一點有礙于基本的市場競爭力,而且在很多情況下促使了系統成本的上升。
為解決這些問題,人們開始轉而接受公共域加密算法 ── 高級加密標準 (常常被稱為AES)。這種算法源于1997年美國國家標準技術研究所 (NIST) 發起的征集公共域加密算法的倡議。那一年共產生了15個候選算法,并都經過了加密研究領域的嚴格評測 (critical review)。這種評測分析包括對每一種算法的安全性和效率的評測。NIST 從15 個候選算法里選中了4 個,然后進入第二輪公開評測,最終在2000年選出了AES算法。
正如我們現在所了解的,AES是一種對稱分組密碼,使用128位的純文本輸入和128位的密鑰,產生128位的加密輸出。由于這種對稱特性,AES也可以反向操作,利用加密輸出和密鑰,找出并提取原始純文本輸入。
系統安全性考慮事項 – 攻擊及防范對策
目前有一個普遍的誤解,即誤以為汽車防盜系統的安全性取決于加密算法的強度。雖然加密算法的強度是很重要,但其本身并不能決定整個系統的抗攻擊能力。防盜系統中的每一個接口、算法、協議、邏輯和物理特性,均影響著系統的總體安全性,都應該予以研究與增強,以提高系統的抗攻擊性。
算法安全性及防范對策
如前所述,加密算法必須擁有唯一及不可預測的特性。以AES為例,算法的詳細工作原理對公眾是完全公開的,因此,它已經過了研究領域的嚴格評測。這是迄今最好的防范對策。到目前為止,科學研究已確認該算法的強度,而且經得起超過10年的時間考驗。然而,在私密算法的情況下,研究領域不可能進行科學分析,這些算法的強度究竟如何是不可知的。事實上,其中許多算法都無法經受得起時間的考驗,而且近年來它們的缺點也暴露了出來。
協議安全性及防范對策
在使用單向驗證的系統中,對協議層的攻擊一般是采用“掃描式”或“字典式”方法。在“掃描式”攻擊中,攻擊者從汽車端接收到一個“詢問”(challenge),再返回一個隨機值作為應答。如果協議包含56位應答,則比特位安全性為256,即獲得一個正確的“詢問-應答”配對需要256次嘗試。為了防止這類攻擊,可以考慮采用以下措施:
提高應答的位長度 (bit length),以增加復雜性
讓汽車嵌入的連續性失敗嘗試之間的時限指數級增長
在一定次數的連續性嘗試失敗之后,讓汽車拒絕嘗試
在“字典式”攻擊中,攻擊者通過與收發器直接通信來收集正確的詢問 (從攻擊者) 應答 (從密鑰卡) 配對。這些“詢問-應答”配對被放在查找表或“字典”中,供以后參考。配備了這種字典后,攻擊者就觸發汽車發出詢問,然后在字典中搜索相應的正確應答。若協議包含100位應答,則需要251次嘗試即獲得一個正確的詢問-應答對。“生日悖論” (Birthday paradox) 表明在2n/2 個記錄的“詢問-應答”配對和2n/2 次嘗試之后,獲得正確結果的概率為0.5。由此可知,這種攻擊的總體復雜性為2n/2+1 = 251。這種情況下應該考慮的防范對策為:
提高詢問的位長度,以增加復雜性
采用雙向驗證協議
物理/邏輯安全性及防范對策
近年來,攻擊手段日趨復雜先進。“邊信道”攻擊,比如簡單功耗分析 (SPA) 和差分功耗分析 (DPA) 及其它“入侵式”攻擊,已被成功用來提取密鑰卡的密鑰。這些所謂的邊信道攻擊測量和評估加密設備的耗電量,再結合純文本密碼文本方面的知識,即可提取出一個其它的密鑰。這些方法的基本理論相當復雜,超出了本文的范圍。防御上述邊信道攻擊的最強有力措施包括:
時鐘頻率和運行隨機化
數字控制和加密工作交錯進行
“入侵式”攻擊著眼于硅芯片上與加密相關的電路的物理實現方案。只要在設計流程初期即考慮到防范對策,最佳防御手段的實現相當簡單。下面是可以考慮使用的一些步驟實例:
存儲塊的金屬屏蔽
采用非標準綜合庫
加密期間搶奪所用關鍵數字元素的位置
若發生嘗試入侵情況,限制存儲器訪問和自動芯片擦除功能
系統性能的考慮事項
耗電量
系統性能涉及不同的方面。其一是密鑰卡的功耗,這個參數直接關系到可獲得的密鑰卡與車載基站之間的通信距離。汽車制造商和領先供應商往往強調耦合因子的重要性,將之視為一項關鍵參數。然而,它描述的主要是密鑰卡天線和車載基站天線之間的機械尺寸的關系。該參數只對給定系統配置有效,并取決于天線的電感、Q因子、驅動電流、讀取器靈敏度,以及點火鎖芯材料。有鑒于此,單獨用該參數來比較不同系統的性能是不夠的。其實,除耦合因子之外,同樣重要的還有耗電量,尤其是考慮到密鑰卡在無源無電池的環境中工作,能量需從磁場采集,并存儲在很小的電容中,因此耗電量十分受限。通過選擇超低功耗的系統組件,與能夠利用均衡軟件進行編程的微控制器 (盡可能讓微控制器進入睡眠模式),工程師就能夠克服前面提到的需要高耦合因子來補償密鑰卡的大電流這一系統缺陷。
驗證響應時間
防盜系統中的另一個重要因子是從轉動插入門鎖的密鑰卡到引擎啟動所需的時間。這個時間應該足夠短到讓駕駛員感覺不到延時。根據系統的機械和電氣設計,以及一個人插入和轉動鑰匙的速度情況,該時間預算一般應該在300ms 到 500ms之間。這個預算中相當大一部分被消耗在機械和車身控制模塊的開銷上;而剩下的100ms到 200ms則用于驗證過程。在速度和安全性方面,一個不錯的折衷方法是采用詢問位長度為100位,應答長度為56位的雙向驗證。在大多數系統中,這會把應答時間降至100ms以下。
錯誤處理
為防止驗證因任何原因失敗,現在的系統需要完整的驗證周期才能重新從頭啟動,且在一定時間內最多只允許3次重試。愛特梅爾的重試策略稍有不同,它可以使系統從通信錯誤中更快地恢復過來。所有命令和可選數據都采用循環冗余碼校驗 (CRC) 來保護。密鑰卡和基站都利用CRC來檢測錯誤,并把這些狀態信令給各自的通信伙伴,這就使基站可以選擇重復信息的數量、最后行為、最后應答或最后命令。這種特性可實現更快的通信恢復,而且在相同的時間內允許更多次的通信恢復嘗試 (5-7次重試,而不只是3次)
總結
通過選擇能夠滿足汽車市場的安全性和性能目標,并且支持高度可配置的開源防盜器軟件堆棧的系統組件,可以大大簡化開發一個穩健汽車防盜系統的任務。作為汽車準入解決方案的領導廠商,愛特梅爾擁有一個包含硬件和軟件的完善系統解決方案。
密鑰卡設計可采用 ATA5580 及 ATA5795 來實現。這兩個器件都包含有一個LF前端、一個執行快速高效加密計算的AES硬件模塊,以及一個針對超低耗電量進行了優化的AVR微控制器。它們還均包含可編程閃存,可用于運行愛特梅爾的開放式防盜器協議或其它客戶專用軟件,并能夠使防盜器完全無源工作。
車載基站可采用愛特梅爾 ATA5272 實現。該器件集成了 LF 基站功能和一個帶 8K 可編程閃存的 AVR 微控制器。
除了這些器件之外,愛特梅爾還向用戶免費提供開放式防盜器協議軟件,能夠提供前所未有最高的用戶可配置性 (包括許多可實現系統參數權衡的動態評估的用戶可選功能),并加速開發和優化進程:
帶上行鏈路和下行鏈路波特率、位編碼和調制深度的邏輯層
帶詢問和應答位長度、單向或雙向驗證、數據字段CRC、兩個密鑰、私密或公開Key Learn的協議層
AES加密時鐘速度 “在線” 從125 kHz 到 4 MHz 的加密層
評論
查看更多