【Vivado那些事兒】AMD-XILINX 7系列比特流加密

前提:加密有風險,操作需謹慎

前言

在許多項目中,經過漫長的等待,我們的 FPGA 設計終于可以投入現場部署了。前期的資金的投入及知識產權的保護,我們需要對現場部署的 FPGA 進行比特流保護以防止逆向工程和未經授權的重復使用。

為了保護我們的 FPGA 設計,AMD FPGA 支持高級加密標準 (AES)。這提供了高級別的安全性,因為比特流使用 256 位 AES 密鑰加密,并在器件編程時在 FPGA 內部解碼。用于解密的 AES 密鑰存儲在 FPGA 內部的一次性可編程電子熔絲 (eFuse) 或電池供電的 RAM (BBRAM) 中。在本篇博文中,我們將使用 Arty S7-50(便宜) 演示如何將 AES 密鑰編程到 BBRAM 中。

  • BBRAM區域,是一個片內RAM區域。當VCCBATT_0掉電,BBRAM數據將會丟失,AES密鑰也將隨之丟失。VCCBATT_0該引腳可接一個1.0~1.89V范圍電壓的電池。

  • eFuse區域,是一個一次性寫入區域,可永久存儲密鑰,該方法無需電池

在深入介紹具體步驟之前,我想重申一下,開發安全可靠的系統是一個復雜的課題。例如,最好的安全性來自于使用真正隨機的密鑰,因此我建議除了閱讀本博客外,還請閱讀XAPP1239(https://docs.xilinx.com/v/u/en-US/xapp1239-fpga-bitstream-encryption)和XAPP1084(https://docs.xilinx.com/v/u/en-US/xapp1084_tamp_resist_dsgns) 。

首先創建一個簡單的 MicroBlaze 設計,它每秒通過串口無限輸出一個遞增計數。該 ELF 文件已與bit合并,一旦 FPGA 配置完成,就會開始輸出計數。

要加密比特流,我們需要打開已實現的設計,并在比特流生成選項中設置我們希望加密的比特流。此時,可以根據需要輸入加密密鑰信息(我強烈建議這樣做)。如果此項留空,Vivado 將生成必要的信息,但安全性較低。如果 Vivado 生成了密鑰,它將在實現目錄中生成一個 *.nky 文件。可以添加此文件,以便在將來運行設計時使用。當然,也可以使用相同的格式來定義生成的密鑰。

Device xc7s50;
Key 0 25e2e0380c53f3a3f068baa326733a1e6f5e589a7185339fd73a922e218de87f;
Key StartCBC 9af2391ad0118907e5ba7d4b16a6c3d0;
Key HMAC 37fe8c2b9ab49da759b7cad0687d05b20c2b1a5f09f74441c2201ebfdecb0db3;

保存這些選項后將會向目標 XDC 文件中添加如下約束。

set_property BITSTREAM.ENCRYPTION.ENCRYPT YES [current_design]
set_property BITSTREAM.ENCRYPTION.KEYFILE {C:\hdl_clients\s7_enc\s7_enc.runs\impl_1\design_1_wrapper.nky} [current_design]

將 FPGA 連接到硬件管理器后,就可以對 BBRAM 或 eFuse 密鑰進行編程。

在此示例中,我們將選擇程序 BBR,這將打開一個對話框,使我們能夠對 NKY 文件進行編程。

選擇 NKY 文件后,AES 密鑰將顯示,以便確認是否加載了正確的密鑰。關閉對話框后,密鑰將被編程,TCL 控制臺將顯示此操作的成功或失敗。

我們現在可以使用已用相同密鑰加密的 JTAG 比特流對設計進行編程。

隨著新配置的加載,這、將重新啟動從 0 開始運行的 MicroBlaze 中的程序。

如果我們關閉電源或重置 BBR 密鑰,然后嘗試對加密位流進行編程,我們將發現編程未完成,因為 FPGA 中沒有存儲解密密鑰。

使用此流程,可以開始保護已部署的系統。如果使用 eFuse 編程加密密鑰,請務必遵守 XAPP1239 中規定的規則,因為 AES 密鑰和相關寄存器必須同時進行編程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RK3588 安卓adb操作

adb(Android Debug Bridge)是一個用于與安卓設備進行通信和控制的工具。adb可以通過USB或無線網絡連接安卓設備,執行各種命令,如安裝和卸載應用,傳輸文件,查看日志,運行shell命令等。adb是安卓開…

【華為機試】70. 爬樓梯

文章目錄70. 爬樓梯描述示例 1示例 2提示解題思路核心分析問題建模算法實現方法1:動態規劃(標準解法)方法2:空間優化動態規劃(最優解)方法3:遞歸 記憶化方法4:數學公式(…

山東大學軟件學院面向對象期末復習

面向對象 文章目錄面向對象04 類封裝接口 抽象類05 消息,實例化,靜態變量方法消息動/靜態類型語言對象創建類及實例具有下面特征對象數組的創建靜態數據成員構造函數06_0 繼承繼承是向下傳遞的JAVA為什么不支持多重繼承繼承的形式特殊化繼承替換原則規范…

讓 Windows 用上 macOS 的系統下載與保姆級使用教程

模擬蘋果桌面軟件下載:https://xpan.com.cn/s/8NFAGT 還記得 Windows 11剛發布時,很多人就說“果里果氣"的,但界面確實做的漂亮。 不知道現在有多少小伙伴正用著macOS,不過我敢確定,喜歡macOS的人絕對不少&#…

嵌入式硬件篇---繼電器

繼電器是一種通過小電流控制大電流的電磁開關,廣泛應用于自動化控制、電力系統和電子設備中。以下從工作原理、應用場景和電路特點三個方面詳細介紹:一、工作原理繼電器本質是電磁控制的機械式開關,核心部件包括:線圈(…

鴻蒙網絡編程系列58-倉頡版TLS數字證書查看及驗簽示例

1. TLS數字證書驗簽簡介 數字證書的簽名驗證是網絡編程中一個重要的功能,它保證了數字證書是由可信任的簽發方簽署的,在此基礎上,我們才可以信任該證書,進而信任基于該證書建立的安全通道,所以說,數字證書…

【React Native】安裝配置 Expo Router

過去開發React Native,所使用的路由都是React Navigation。但是這個東西使用起來非常困難,配置無比繁瑣。Expo,為了簡化操作,就基于React Navigation開發了Expo Router。 Expo Router用起來就要簡單的多了,配置也相對…

美國VPS服務器Linux內核參數調優的實踐與驗證

美國vps服務器Linux內核參數調優的實踐與驗證在云計算和虛擬化技術日益普及的今天,美國VPS服務器因其穩定的網絡環境和優越的性價比,成為眾多企業和開發者的首選。Linux內核參數的默認配置往往無法充分發揮VPS的性能潛力。本文將深入探討美國VPS服務器上…

在Vscode中使用Kimi K2模型:實踐指南,三分鐘生成個小游戲

Kimi K2是一款基于多專家(MoE)架構的強大代碼與代理能力基礎模型。本文將通過在VS Code及其擴展Cline和RooCode中的實際應用,詳細說明如何使用Kimi K2-0711-preview模型。不得不說kimi這次的K2模型就是強大,在vscode中配置使用體驗…

基于SpringBoot+Uniapp球場預約小程序(騰訊地圖API、Echarts圖形化分析、二維碼識別)

“ 🎈系統亮點:騰訊地圖API、Echarts圖形化分析、二維碼識別”01系統開發工具與環境搭建前后端分離架構 項目架構:B/S架構 運行環境:win10/win11、jdk17前端: 技術:框架Vue.js;UI庫:…

windows + phpstorm 2024 + phpstudy 8 + php7.3 + thinkphp6 配置xdebug調試

windows phpstorm 2024 phpstudy 8 php7.3 thinkphp6 配置xdebug調試 下載配置phpstudyPhp.ini配置phpstorm配置xdebug運行一會就停了配置虛擬機 0localhost_90.conf 配置php.ini配置下載 在下面地址下載合適的xdebug 放到對應的php https://xdebug.org/wizard 配置phpst…

python的pywebview庫結合Flask和waitress開發桌面應用程序簡介

pywebview的用途與特點 用途 pywebview是一個輕量級Python庫,用于創建桌面應用程序(GUI)。它通過嵌入Web瀏覽器組件(如Windows的Edge/IE、macOS的WebKit、Linux的GTK WebKit),允許開發者使用HTML/CSS/Java…

C#通過HslCommunication連接西門子PLC1200,并防止數據跳動的通用方法

textEdit30.Text ReadValue<int>(() > plc.ReadInt32("DB57.DBD16"), ref _last_num).ToString();// 通用讀取方法&#xff08;支持所有值類型&#xff09;private T ReadValue<T>(Func<OperateResult<T>> readFunc, ref T lastValue) w…

Linux切換到Jenkins用戶解決Jenkins Host key verification failed

以root或sudo user身份, 切換到jenkins用戶 su -s /bin/bash jenkins前往jenkins的home目錄 cd /var/lib/jenkins/查看.ssh下是否已經有known_hosts, 有的話, 是什么內容, 正常情況下, 這時候是沒有對應IP記錄的 cd .ssh/ more known_hosts訪問一下對應IP, 記錄公鑰 ssh 192.16…

7.17 Java基礎 | 集合框架(下)

接上文&#xff1a; 7.16 Java基礎 | 集合框架&#xff08;上&#xff09;-CSDN博客 【1】Map集合 Map 集合是一種能存儲鍵值對的數據結構。它的主要功能是依據鍵&#xff08;Key&#xff09;來快速查找對應的值&#xff08;Value&#xff09; 1、聲明 Map<Integer,Integer…

【LeetCode刷題指南】--反轉鏈表,鏈表的中間結點,合并兩個有序鏈表

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

ubuntu上面的wps2019格式很亂在復制粘貼的時候

問題&#xff1a;在復制內容到 Ubuntu 上的 WPS 2019 出現如下問題&#xff1a;列表符號、換行和縮進錯亂&#xff0c;表現為每行前的點符號&#xff08;?&#xff09;變成不規則對齊或空格間距不統一。原因分析? 主要原因是&#xff1a;WPS 2019 在 Ubuntu 上的兼容性較差&a…

bws-rs:Rust 編寫的 S3 協議網關框架,支持靈活后端接入

bws-rs&#xff1a;Rust 編寫的 S3 協議網關框架&#xff0c;支持靈活后端接入 bws-rs介紹 bws-rs 是一個用 Rust 編寫的輕量級 S3 協議服務端網關框架&#xff0c;旨在幫助開發者快速構建兼容 AWS S3 協議 的對象存儲服務。該框架支持 S3 V4 簽名校驗&#xff0c;集成 Axum 作…

黑馬點評系列問題之p70postman報錯“服務器異常”

問題描述&#xff1a;在做這個位置的時候報錯報錯如下控制臺報錯如下解決根據控制臺的報錯來看&#xff0c;是?Redis模板未注入導致的空指針異常經過排查&#xff0c;原因是這里少了個Resource

Docker搭建Elasticsearch和Kibana

1.安裝docker&#xff0c;確保正常啟動 2.按步驟操作&#xff0c;這里的es是單節點的&#xff0c;如需多節點&#xff0c;需安裝docker-compose進行yml文件的編寫對容器進行編排 #docker拉鏡像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.11.2 docker pul…