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