各位親愛的FPGAer老鐵,又到了令人愉悅的周五了,作為回歸后的第一篇文章,小弟我徹夜難眠,一直在想寫什么精彩的內容才能對得起自己吹的牛皮。真的是翻來覆去,思緒萬千,翻開有道、印象、github、PornHxx,最終決定還是給大家講一個大家都很關心的事情——《如何守住自己的秘密》。
很多小伙伴就會問了,是什么秘密呀,《不能說的秘密》還是《維多利亞的秘密》,快點快點,小馬扎已經備好了,我要吃瓜!!!
我相信作為在座的每一位FPGAer都是一名優秀的時間管理大師,畢竟時序約束那點破事(點贊轉發過2000,馬上安排),咱不是天天在玩嘛。我覺得既然咱們花了那么多時間管理的設計,如何能保證它的秘密更應該值得深入研究。
咱們華夏子弟個頂個的聰明,個頂個的比別人努力,如今這么卷的行業賽道里,如何保證自己辛辛苦苦堆出來的優秀設計不被別人剽竊,當然了,更不能讓別人反向出咱自己寫的垃圾代碼,不然多丟面呀,以后還混不混了。
今天我就給大家介紹一下和一位FPGA行業大牛討論關于加密的內容,整理出來分享給大家,希望大家都能打起100萬的精神,守衛自己的秘密花園。
?
01
設計加密簡介
很多小伙伴對于加密的概念都不陌生,小到我們日常使用的銀行卡加密,手機機密(密碼、生物特征加密)、門鎖加密,大到國家機密等,無一不是加密技術保護著我們個人的生命和財產安全。
今天我們主要介紹一下關于FPGA加密技術的介紹:
把自己的設計封裝成ip,提供license的方式保護自己的設計;
把自己的設計封裝成網表,保護自己的源代碼設計;
把自己的設計代碼故意改的亂七八糟,增加閱讀難度和可行性(惡心自己也惡心別人),主打一個刺激。
為了保護自己辛辛苦苦,熬夜掉頭發搞出來的設計,能使用的手段必須統統使出來。但是,你以為這樣就安全了嗎?
當初小弟我也以為自己的設計經過上述的操作,基本萬無一失,誰來都無法剽竊我的設計,除非給的足夠多!自從和大牛聊完以后,發現自己的設計在FPGA芯片設計大牛眼里,我在裸奔!
大牛給我說,其實對于前面說到的任何一種加密內容,最后都會落盤到bit位流中,對于他們FPGA芯片設計人員,有這份位流已經足夠破解我的設計。
所以,為了防止FPGA泄密,保護最終的bit位流才是關鍵所在。
大牛給我分享了一個鏈接,我這才知道,原來國際知名大廠AMD-XILINX的7系列以及之前的FPGA系列產品,在bit位流安全性存在嚴重的缺陷和漏洞,今天我就帶著大家深度扒一扒。
1 存在StarBleed硬件漏洞
2020年4月,來自德國的研究者在論文“The Unpatchable Silicon A Full Break of the Bitstream Encryption of Xilinx 7-Series FPGAs”中披露了一個名為“StarBleed”的漏洞,它存在于賽靈思的Virtex、Kintex、Artix、Spartan等全部7系列FPGA中。通過這個漏洞,攻擊者可以同時攻破FPGA配置文件的加密和鑒權,由此可以獲得用戶的FPGA設計同時可隨意修改FPGA中實現的邏輯功能。嚴重的是,這個漏洞并不能通過軟件補丁的方式修復。漏洞的發現者已于2019年9月將這個漏洞知會了賽靈思,并在第二天就獲得了賽靈思的承認。 該漏洞攻擊的成本非常低,無需特別深奧難懂的專業知識,一般的硬件工程師就能按照論文完成破解。AMD-XILINX主流產品XC7K325T僅三小時即能完成的全位流破解。
2 不抗DPA攻擊
AMD-XILINX FPGA對加密位流的解密方案采用了CBC-AES,在實現中并沒有加入側信道的防護措施,因此理論上就存在被側信道攻擊的風險。早在2011年,Moradi(StarBleed漏洞的第二發現者)等就在賽靈思 Virtex-II上使用側信道攻擊獲得了位流的加密密鑰。接下來,他又使用功耗側信道攻擊了賽靈思 Virtex-4、Virtex-5以及Altera Stratix II的加密位流,并獲得了加密密鑰。2016年,他又使用電磁側信道攻擊方法,成功攻擊了Virtex-5、Spartan-6、Kintex-7和Arix-7 由于大牛是國內某FPGA大廠研發中心的核心設計人員,在小弟我三番五次,不要臉的請求下,給我展示了國內某安全實驗室團隊完成的XILINX XC7K325T的DPA側信道攻擊。 該攻擊方法為采用Langer 的電磁探頭采集EM信號,采集EM信號需要對FPGA進行開蓋,去除表面金屬封裝,發現在FPGA芯片邊緣的電容上可以找到較好信噪比的波形,下圖是實際的采集位置和使用的U5-2的EM Probe。
測試平臺架構
FPGA芯片開蓋(V4)
信號采集位置(K7)
上文給兄弟們介紹了AMD-XILINX的7系列以及之前的FPGA系列產品的漏洞機理,接下來給大家展示一波,DPA攻擊方法:
1)信號處理 使用U5-2 型號的EM探頭采集8萬條K7解密的曲線,采樣率1G,采樣數據FFT分析后進行濾波處理。 取2000條曲線進行平均,曲線如下:
在曲線下半部可以看到AES執行的26個尖峰毛刺,非常明顯。 2)已知密鑰分析 通過已知密鑰分析,來定量密鑰與泄露的關系 3)選擇密鑰攻擊 4)攻擊結論: 本次實驗,使用EM Probe采集Xilinx Virtex-4和Kintex-7系列的FPGA解密比特流過程的曲線(V4:需要1.25*8=10萬條左右;需要K7:15*8=120萬條左右),經過信號處理后可以在黑盒測試條件下通過選擇密文的方式,對解密過程進行CPA分析,從而恢復解密密鑰。
3 密鑰存儲方式不安全
AMD-XILINX FPGA密鑰存儲支持兩種模式: 1)BBRAM電池供電存儲 已有公開文獻發表,可通過激光注入讀取BBRAM中保存的明文密鑰,且BBRAM需要電池供電,應用可靠性大大降低。 ?
2)片上熔絲EFUSE存儲 同樣片上熔絲可通過簡單的暴力逆向工程,獲得密鑰。
4 加密結束語
咱們說了這么多加密內容和破解加密的方法,就是為了讓各位老鐵知悉,一旦讓別人竊取到FPGA密鑰,就可以輕松破解出明文的bit位流,自然而然的是有方法反向出咱這千辛萬苦設計出來的代碼,從而讓我們喪失商業競爭力和能動性。
?
加密寄語
?
面對這么嚴重的FPGA位流安全漏洞,很多AMD-XILINX FPGA的忠實粉絲卻沒有任何怨言,不是店大欺客,而是2020前,真的沒法彌補,甚至無法替代。
話都到這份上了,各位FPGAers肯定會問,那這咋辦呢,如果有加密需求的設計,那這X家又沒有補丁可以把這個漏洞打上,這以后還能不能用他家的產品了。
萬水千山總是情,問問本編行不行,這兩年俺也不是白白下海的,隨著國產化的浪潮大趨勢,國內的FPGA廠家踏著集成電路法陣的浪潮來了,后續有機會可以找機會與他們交流,且看他們是如何解決加密問題!
編輯:黃飛
?
評論
查看更多