前段時間,有同學做加密芯片國產化替代,筆者在加密芯片領域摸爬滾打十幾年,積累了一些經驗,就此問題做個總結。 一、功能選型 加密芯片有多種類型,例如邏輯加密、ASIC、CPU卡等。國產加密芯片還多出了商密算法,選型更加復雜。 舉例:有個客戶做機頂盒條件接收,需求點是用戶身份授權+數據安全傳輸存儲。推薦了國內的一家卡片,但其執意要選取ATXXX16XX卡去完成。原因是這個客戶有個朋友,公司做燃氣表用的就是ATXXX16XX卡,使用多年很安全,沒有非法充值情況發生。 燃氣行業的應用特點和使用方式很特別。例如燃氣表有鉛封,一打開就失效,因此沒人拆表分析;遠傳表連接后臺云端,終端表具有篡改行為發生,會立即報警。有的采用工作人員上門抄表方式,異常充值立即會被發現。 客戶需求的CPU跟卡片通信傳輸安全,在ATXXXX16XX卡片無法實現;而身份認證也只支持明文認證PIN口令。ATXXX16XX安全使用多年,更多的是行業應用方式決定,而非安全性高。表面看客戶需求實現,但安全防護效果不佳。為了突出產品賣點認國際大廠品牌,選型比較盲目。舉個例子,多數機頂盒需要終端與后臺聯網傳輸授權信息,這個時候最適合的卡片功能應該是具備密鑰安全存儲與數據加密的功能,用來對傳輸數據進行保護,但ATXXX16XX卻不具備。又比如,ATXXX16XX有設置熔斷功能,避免設置被篡改,而這個功能在機頂盒上也用不到,所以我跟人認為這個選型是有一些問題,或者說不太妥當的。 反觀推薦的LK系列卡片,身份認證權限機制健全,數據存儲算法優越,權限控制嚴格,安全性明顯好于ATXXX16XX,但客戶不用,也是無可奈何。 二、性能參數評估 有個項目需求是實現終端數據的加密傳輸,同時必須保證密鑰存儲和運算安全。經過仔細選型,定了兩款型號,手冊參數上看,功能相似性能接近。可行性評估時理論計算差不多,實際運行則相差甚遠。最終定位在通信速率差異。手冊中加密速度指的是芯片內部運行速度,但應用中,MCU(或者FPGA、DSP)還要和加密芯片通信,通信速率(uart 和IIC)限制了加密帶寬,看起來低級錯誤,但基本都要踩過坑才知道。 還有的項目對于功耗等有要求,在手冊中看是符合的,實際測試中待機功耗高于預期,最終也用不上。 三、方案設計 主流加密方案主要有身份認證、數據保密存儲、算法移植這3大類。 身份認證:車載終端、公交刷卡機、門禁系統等場景需要身份認證,其內部加密芯片負責存儲密鑰和數據加密,與服務器(或者云端)身份鑒權,成功后登陸平臺并開啟響應功能權限。設計方案應側重芯片自身的安全性和性能。參與認證的隨機數應是真隨機數。 數據保密存儲:以汽車檢測儀行業為例,采集分析后匯總的核心數據,能夠提升產品品質,作出更符合消費者需求的產品。設計方案要考慮存儲數據安全。默認MCU(或flash、EEPROM存儲)安全性差。常規做法是存儲在加密芯片中,使用時再加密讀回,MCU解密后使用。MCU與加密芯片傳輸的安全性可控,大大提升產品安全性。配合傳輸前雙向認證,方案更具可靠性。 算法移植方案:安防設備、工控機具等通常對程序防盜版有很高的要求,前述2種方案相對程序保護效果有限,后誕生了算法移植方案。這是國內公司凌科芯安最初提出的方案。流程是將MCU部分程序移植到加密芯片(高安全等級)中存儲運行,芯片具備內部程序數據區離散存儲、固有函數隱蔽性強、客戶獨立設計方案自由等特點。此時單獨破解MCU無效,而破解加密芯片面臨成本高難度高等棘手問題,投入產出不成正比,以此防盜防抄。以凌科芯安的LKT和LCS系列為代表,在防盜版領域優勢相對明顯。 四、調試壁壘(調試難度) 硬件方面,設計電路過程盡可能按照原廠demo電路進行設計,上拉電阻、復位電路器件參數選取,一般是廠家多年心血總結,比較靠譜,沒必要盡量不改。 電源方面,處理好電源濾波。軟件通信調試,務必仔細看廠家提供的通信協議手冊,避免私有產品協議導致調試不通。以前有次通信采用ISO7816接口,默認所有指令按7816規范開發,卡了好幾天,最終發現有一條E3開頭命令是私有指令,有別于ISO7816。希望大家引以為鑒。 穩定性測試、老化測試必須重視。這是合格產品的必由之路,有些問題開發環節無法浮現,必須要經過批量測試和老化測試才能暴露。避免正式批量時出現問題。 五、量產發行(初始化問題,發行中的密鑰保護問題) 加密芯片除了要求自身安全穩定,也要考慮發行(初始化和應用燒錄)條件,手工發行和機械發行的效率和成本差別巨大,還有就是找第三方發行。 第三方代發行要考慮安全性,這個問題在合作過的芯片廠家中,凌科芯安比較有特色,可根據需求定制個人化加密發行方案,保證密鑰和數據安全,第三方無法超發多發。 綜上所述,加密保護首選方案,對功能和性能具備不同要求,開發調試和量產發行注意細節和安全,如何快速有效完成生產開發工作是一門很大的學問,希望此文有所裨益!
|