新聞媒體通常喜歡報導有關資訊安全方面的消息,例如作業系統的漏洞、政府網路受到入侵,或者是有關信用卡帳戶遭到竊取等訊息幾乎每個禮拜都會出現,事實上,安全性的問題不只存在於筆記型電腦或伺服器中,對於嵌入式應用領域也越來越加重要,例如交通號誌、汽車、家庭保全系統、煙霧偵測器、自動提款機(ATM)、收銀機以及其他許多應用事實上也經常暴露在這些危險威脅之下。
對於嵌入式應用為何需要安全性基本上有幾個理由,在部分應用中,政府需要對各種機密資料,例如醫療紀錄或信用卡資訊提供保護,有時也必須對預算來源進行保密,而對採用賠本銷售印表機,但在填充墨水上取得高獲利的公司,安全性技術就可以用來驗證補充墨水的來源,避免副廠產品侵蝕市場,在某些情況下,安全性技術也可以用來保護智慧財產,例如嵌入式設備可能包含了烤麵包的特殊演算法,而設計者當場希望可以保護辛苦工作的成果不受竊取。
安全性應用基本上是個權衡取捨的動作,完美的安全性成本相當高,同時得付出一定的代價,因此每個應用都必須決定需要達到何種程度的安全性才算足夠,但是到底安全系統的保護程度要到哪裡,而哪些功能可以帶來實際的幫助呢?
編密就代表安全性,真的是這樣嗎?
選擇正確的編密工具是確保通訊機制安全性不可或缺的一環,所選用的通常是公開並且廣泛受到採用的演算法,例如triple DES、RSA或DSA等,許多人會認為,選擇比較艱澀的專用演算法會更加安全,但公開的演算法通常已經通過學術單位、政府與產業等領域專家的測試與檢驗,而專用的演算法雖然看起來好像比較安全,同時也經過付費聘請專家們的檢查,但是設計者會希望忽略全球專家群的檢驗成果而只相信少數專家的評估嗎?此外,專用的演算法可能也會將設計者限制在授權費用、每次使用費用,甚至是特定公司的微控制器產品上,大幅限制了日後供貨的來源。
雖然編密技術對嵌入式系統的安全性扮演了相當關鍵的角色,但它們也只是整體機制的一部分,想像一下,在實際的應用情況下,當兩個人透過傳送經過編碼的記事進行通訊時,攻擊者可以竊取或拍下記事內容,但如果用來進行記事編碼的編密技術足夠穩固,那麼這樣的攻擊並沒有用,因此比較積極的攻擊者就可能直接攻擊人員,因為迫使其中一個參與者供出保密內容,要比費力解出記事的通訊機制秘密要簡單得多。
在嵌入式應用領域中,這樣的例子非常相似,例如以自動提款機與銀行間的編密通訊頻道為例,要將傳輸線路上的編密PIN資料加以破解幾乎不可能,因此更有效的方法就是直接破壞提款機。
利用深夜時刻,攻擊者走到提款機然後將它打開,在進行一連串的攻擊後,他得到了ATM與銀行間通訊的秘密金鑰,接著他將提款機回覆原狀然後回家,開始監聽通訊線路,他就可以擁有能夠進行所有數字與PIN解密的金鑰。
不過不必擔心,目前的自動提款機都受到最堅強的實體以及邏輯安全技術的保護,但以上的例子描述了幾個思考點:
- (1)編密只提供了某一層次的保護,卻無法阻擋意志堅定的攻擊者;
- (2)自動提款機內最有價值的資訊為主體安全金鑰,不是帳戶號碼、PIN碼或者是現金;
- (3)高安全性嵌入式設備必須在受到攻擊時快速抹除最具價值的內容,也就是主體金鑰。
嵌入式系統的攻擊
那麼攻擊者要如何將金鑰由自動提款機中取出呢?
首先他從簡單的攻擊開始,如果金鑰資料儲存在外部記憶體中,那麼攻擊者只需簡單地透過位址與資料匯流排上的數據就能夠取出金鑰,就算金鑰以非連續的方式儲存,攻擊者還是能夠通過外部資料程式碼的破解來決定哪些記憶體位置內含有金鑰,開機載入程序、除錯以及測試模式都是簡單攻擊的可能弱點,這些功能通常可以讓外人讀取或寫入微控制器內的記憶體與暫存器,就算這些模式的相關文件並未公開,但只要進行「社會工程」來找出微控制器製造商的一個員工,就可能取得這方面的資訊。
在嘗試過簡單的攻擊後,攻擊者可以進行更複雜的動作,透過簡單的時序與耗電分析,攻擊者可以觀察編密時所耗用的時間與功率,設計不良的編密機制在處理安全金鑰中的1信號時,可能會耗用比處理0信號更多的功率或時間,這就提供了攻擊者取得金鑰的足夠資訊,如果簡單的分析式攻擊無法成功,那麼攻擊者還可以進行功率消耗差異化分析(Differential Power Analysis;DPA),DPA是一個進行數千次動作來收集功率消耗資料的統計分析方式,最終可以利用電源上的短暫變化來取得重要的金鑰資料訊息,雖然相當耗時,但這樣的攻擊方式可以被自動化,攻擊者也可能使用錯誤注入攻擊,讓微控制器在規格外的運作條件下動作,以造成可能洩露出金鑰資料的錯誤,或者也可以試著移除微控制器的塑膠封裝並使用微型探針來決定金鑰資料的內容,事實上在晶片設計中記憶體的架構相當具有規律,同時也很容易在矽晶片中被辨認出來,而且微型探針設備也非常容易取得。
聽起來情況相當令人失望,那麼,到底設計工程師還有哪些選擇可以用來保護嵌入式應用的安全性?
抵抗攻擊
高安全性應用面臨著獨特的挑戰,當然也需要獨特的微控制器產品來加以解決,美商達拉斯半導體(Dallas Semiconductors)公司的高安全性微控制器DS5250就是針對能夠滿足大部分嚴格安全性要求的應用需求所設計。
這些擁有最佳安全性的微控制器著重在金鑰保護的安全性,使用以電池備份的非揮發性SRAM來儲存較敏感的資訊,這個SRAM必須進行客制化設計來達到所謂的「zeroize」,也就是元件在偵測到嘗試攻擊時會立即抹除所儲存的資料,受攻擊狀態,例如溫度攻擊、電壓攻擊或微型探針攻擊,可以透過晶片上持續運作或使用電池供電內部時脈的感測器偵測,這個安全機制可以確保攻擊者就算是控制了外部時脈,還是無法停止資料抹除的動作,透過晶片上的儲存功能,攻擊者將永遠無法看到元件間金鑰的傳輸,此外如果有人進行元件的實體攻擊,那麼金鑰就會被立即抹除。
為了確保攻擊者無法取得記憶體匯流排的控制並注入可能取得金鑰資料的指令,高安全性微控制器會將它的外部記憶匯流排加以編密,並在程式記憶體中提供資料完整性的檢查,整個編密過程會確保攻擊者無法拷貝或竊取設計者應用的智慧財產,因為編密金鑰以隨機方式產生,同時每顆元件也不相同,如果攻擊者嘗試插入隨機指令,那麼完整性檢查就會失敗並進入受攻擊狀態。
高安全性微控制器同時還配備有硬體編密加速器,以奈秒(ns)而不是毫秒(ms)級的速度來執行triple DES等演算法,此外,硬體加速器在設計上也以固定數量的時脈週期運行,而且不管金鑰資料的內容如何都耗費相同的功率,亂數產生器同時也可以用來決定加到編密演算法開頭與結尾的無效執行週期數,進一步防止耗電與時序分析攻擊。
結論
在進行安全性設計之前,設計工程師必須先決定應用所需的安全等級以及被成功破解後所要付出的代價,需要高度安全性的嵌入式應用在面臨攻擊時應該要停止運作而不是揭露秘密,同時也必須能夠抵抗各種多樣化的攻擊動作,各種特殊的攻擊型態更帶來了以各種可能方式保護資料安全性,如DS5250這類高安全性微控制器的市場需求。
---作者為Dallas美商達拉斯半導體業務經理---