安全驗證不僅僅是測試功能,更主要的是測試風險場景或安全攻擊。在進行安全驗證時,測試人員須具備駭客思維和視角。目前,許多用於安全測試的設備成本高昂,本文探討的幾種負面測試無需使用這類設備,並且可以用於後矽驗證環節。

下面是幾種基於場景及對抗的對安全性進行耐力測試的方法。

ECC檢測

ECC故障在非揮發性記憶體中隨時可能發生,所以我們應瞭解設備在遇到ECC故障時的行為,並檢查故障是否已造成安全性漏洞。出於驗證目的,我們可以內部注入多個位元(bit)的ECC錯誤。錯誤可以注入至非揮發性記憶體、金鑰區、安全韌體、安全儲存鏡像,以及元件的配置暫存器等。

例如:在存放安全引擎輸出的記憶體中插入ECC。AES-128引擎將對兩個128位元資料塊實施加密。在這種情況下,存在兩種ECC場景:

˙ECC插入第一個128位元的資料塊,記憶體餘下部分可訪問。

透過這一測試能夠確認,當第一個資料塊出現錯誤時,安全引擎是會終止對下個資料塊實施加密,還是會忽略錯誤並保存可訪問的第二個資料塊的輸出。

˙記憶體的前128位元可訪問,ECC插入下一個128位元資料塊。

利用這一測試能夠確認,是第一個資料塊儲存在可訪問的記憶體中,且在第二個資料塊出現錯誤即終止操作,還是兩個資料塊的操作均被終止。

20170518TA01P1 圖1 在存放安全引擎輸出的記憶體中插入ECC的兩種場景。

命令排序與取消

透過控制執行命令的順序來檢查設備行為。例如,在執行一個無效命令後執行有效的加密/解密命令。這種情形是為了確保:在因執行無效命令發生錯誤的情況下,如果又執行了有效的加密/解密命令,錯誤不再存留。

取消:操作期間發出取消/中止命令。不應產生不完整輸出,以免安全資料洩露,其他安全操作亦可採取相同的方式檢查。

時脈篡改

時脈對於保證安全性至關重要。多種場景可以被檢測:

˙理論上,不應規定只為安全IP部署時脈閘控; ˙如果規定對安全IP部署時脈閘控,那麼嘗試在安全操作期間進行,並且確保時脈閘控未造成安全資料洩露或金鑰洩露; ˙如果一個微控制器包含多個安全IP,且每個IP均須部署時脈閘控,務必檢查時脈閘控所有可能的排列/組合。此舉可以確保任何安全IP門控都不會影響其他的安全IP,且不會造成安全資料洩露; ˙如果安全模組上配有時脈分頻器,則需檢查所有這些分頻器,確保操作符合預期的安全等級; ˙時脈篡改還可能包括改變安全模組的頻率,以及將頻率值設為指定頻率範圍以外的值,進而引發故障。

電壓改變

電源電壓調整可影響設備和安全模組的性能,但即便是改變電壓,也不應該影 響設備的運作。可嘗試以下場景:

˙設備運作電壓為規格指定的最低電壓或最高電壓時,執行安全操作; ˙設備運作電壓高於或低於指定電壓時,執行安全操作; ˙安全操作期間突然將電壓改至指定範圍以外的值; ˙安全操作期間突然改變電壓; ˙安全操作期間逐步改變電壓。

非同步事件生成

SoC支援不同類型的非同步事件,如非遮罩中斷、功耗運行模式更改等。測試這些非同步事件對於安全引擎驗證至關重要。例如,在某些安全操作期間,觸發低功耗模式請求,然後返回正常模式。此舉不應導致安全資料洩漏。

非同步事件掃描

接下來,在安全操作的不同時間間隔應用非同步事件。這一操作可以幫助我們判定,在隨機時間間隔或隨機功耗下發生的事件並沒有造成安全資料洩露或安全金鑰洩露。可在安全引導、加密/解密、生成/驗證簽名等操作期間嘗試非同步事件掃描。

非同步事件可在不同或相同的供電週期內按照不同的時間間隔生成,事件生成的時間視窗可以擴大或縮小。

其他攻擊方式

˙試圖採用多種方式透過調試埠暴露安全資訊; ˙軟體攻擊:執行惡意程式碼(任何非應用代碼); ˙嘗試破壞隨機位置或者非安全區域,同時確認沒有安全資訊洩露。

結論

安全驗證不可能面面俱到,總是存在一些干擾設備的方法,而造成安全資訊洩露。安全驗證應該從與安全規定相反的角度完成,且安全驗證的目的不是檢查設備是否正常工作,而是發現設備可能受到的攻擊,從而防患於未然。

20170518TA01P2 圖2 安全操作期間依不同時間間隔生成非同步事件。