ChipWhisperer教程(一)

一、ChipWhisperer介紹

ChipWhisperer 是一個完整的開源工具鏈,用于學習嵌入式設備上的側信道攻擊并驗證這些設備的側信道抗性。ChipWhisperer主要用于功耗分析,利用設備功耗泄露的信息進行攻擊,也可用于故障攻擊(電壓和時鐘毛刺攻擊),通過短暫干擾設備的電源或時鐘來引起故障行為。ChipWhisperer 包含以下四個部分:

1. 硬件:ChipWhisperer包括捕獲板,用于發起信道攻擊,以及目標板,作為被測設備。硬件文檔可以在找到。硬件在大多數情況下是開源的,設計文件/原理圖可以在 ChipWhisperer Github 倉庫 或 UFO 目標板倉庫 找到。

2. 固件:ChipWhisperer 還包括捕獲板和目標板的開源固件。捕獲板固件是用 Verilog(用于 FPGA)和 C語言(用于處理器)編寫的,可以在 ChipWhisperer Github 倉庫 的 hardware/capture? 部分找到。目標板固件同樣是用C 語言和Verilog編寫,可以在 ChipWhisperer Github 倉庫 的 hardware/victims/firmware? 目錄中找到。

3. 軟件:ChipWhisperer 有一個開源的 Python 庫,用于控制捕獲板并與目標板通信。ChipWhisperer ReadTheDocs提供了 API 文檔和安裝說明,API 的源代碼位于 ChipWhisperer Github 倉庫。

4. 教程:ChipWhisperer 還包括 Jupyter Notebook 教程,演示了如何使用 ChipWhisperer 進行的側信道攻擊,以及如何使用 Python API。這些教程可以在 ChipWhisperer Jupyter Github 倉庫 找到。

總體來說,ChipWhisperer包括三個部分:運行于電腦主機的采集軟件、通過USB與電腦連接的捕獲板、與捕獲板相連的目標板。首先,在電腦在安裝采集軟件,并將捕獲板與目標板正確連接,之后準備用于燒寫到目標板上代碼(c語言或verilog),最后在采集軟件(交互界面集成在jupyter notebook上)上編寫用于采集的代碼,在jupyter notebook中運行這些代碼即可進行采集。

對于用戶來說,需要準備兩部分代碼,其一是燒寫到目標板中的代碼,另一部分就是運行在jupyter notebook上的采集代碼。當目標板是STM32F或XMEGA等處理器時,需要編寫c語言代碼,以及對應的Makefile文件,c語言代碼需要按照ChipWhipsperer框架的約定,Makefile用于自動構建軟件項目,以生成二進制文件。當目標板是FPGA時,需要編寫verilog代碼,verilog代碼同樣需要按照既定的接口規范,編寫好后用vivado等工具生成比特流文件。采集部分代碼主要用于控制捕獲板進行采集、以及將二進制文件或比特流文件燒寫到目標板中。

二、環境安裝

1. windows環境

注意:Windows Subsystem for Linux (WSL) 會干擾jupyter notebook中的 %%bash? 塊,遇到錯誤時可以禁用 WSL 或將 %%bash? 更改為 %%sh?。

(1) 打開https://github.com/newaetech/chipwhisperer/releases,點擊下圖紅圈中的鏈接進行安裝程序的下載。

?

?

(2) 運行可執行文件并選擇你希望安裝 ChipWhisperer 的路徑。你必須對該位置具有讀/寫權限,因此避免安裝在類似 C:Program Files? 的位置。默認安裝位置(用戶的主目錄)將適用于大多數用戶。

(3) 選擇是否要為運行 ChipWhisperer 創建桌面快捷方式,Make 和編譯器將始終安裝。

?

?(4)?等待安裝完成。請注意,在安裝完成之前會打開第二個窗口以完成其他步驟。

一旦你完成了上述步驟,你應該擁有一個功能齊全、自包含的安裝,包含你所需的一切。由于所有內容都是自包含的,或者至少在 Windows 上是盡可能自包含的,因此只有在運行我們提供的應用程序時,你才能訪問 ChipWhisperer、編譯器、git bash 等。

啟動 ChipWhisperer 并開始教程的最簡單方法是運行 ChipWhisperer 應用程序,該應用程序可通過“開始”菜單、你安裝 ChipWhisperer 的文件夾或桌面快捷方式(如果你選擇了此選項)獲得。運行后,你應該會看到一個終端彈出,隨后瀏覽器中會打開一個新窗口,如下圖所示,一旦你看到這個窗口打開,建議點擊 jupyter?,然后運行 0 - Introduction to Jupyter Notebooks.ipynb? 以驗證一切安裝正確。

?

?2. linux環境

下面例舉在Ubuntu中使用pyenv和conda創建ChipWhisperer環境的方法,任選一種即可。

(1) 使用pyenv創建環境

以Ubuntu為例(其他類型Linux系統類似),運行下面的命令后重啟系統即可完成安裝:

#更新所有軟件包
sudo apt update && sudo apt upgrade#從pyenv構建Python依賴環境
sudo apt-get install build-essential gdb lcov pkg-config \libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \lzma lzma-dev tk-dev uuid-dev zlib1g-dev curl#構建目標板的依賴環境
sudo apt install libusb-dev make git avr-libc gcc-avr \gcc-arm-none-eabi libusb-1.0-0-dev usbutils#安裝pyenv(也可以使用conda來創建環境)
curl https://pyenv.run | bash#使pyenv在終端啟動時正確啟動
echo 'export PATH="~/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="~/.pyenv/shims:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
#應用當前終端的更改
source ~/.bashrc#創建一個名為cw的環境并激活
pyenv install 3.9.5
pyenv virtualenv 3.9.5 cw
pyenv activate cw#從Github下載ChipWhisperer到主目錄
cd ~/
git clone https://github.com/newaetech/chipwhisperer#創建一些udev規則,以便有權限訪問USB和串行設備
cd chipwhisperer
sudo cp 50-newae.rules /etc/udev/rules.d/50-newae.rules
sudo udevadm control --reload-rules#這些規則實際上將權限授予chipwhisperer組,因此需要創建該組并將用戶添加到該組
sudo groupadd -f chipwhisperer
sudo usermod -aG chipwhisperer $USER
sudo usermod -aG plugdev $USER
git submodule update --init jupyter#安裝ChipWhisperer的依賴包
python -m pip install -e .
python -m pip install -r jupyter/requirements.txt#獲取nbstripout,它會使git和jupyter的交互更好
cd jupyter
python -m pip install nbstripout
nbstripout --install

運行這些安裝說明后,請確保重新啟動計算機。 你可以導航到 chipwhisperer 并運行下面的命令,檢查安裝是否成功,如果在瀏覽器中打開jupyter notebook窗口則安裝成功。

jupyter notebook

(2) 使用conda創建環境的過程類似,具體命令如下:

sudo apt update && sudo apt upgrade
sudo apt-get install build-essential gdb lcov pkg-config \libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \lzma lzma-dev tk-dev uuid-dev zlib1g-dev curlsudo apt install libusb-dev make git avr-libc gcc-avr \gcc-arm-none-eabi libusb-1.0-0-dev usbutils#創建一個名為cw的conda環境
conda create -n cw python=3.9.5
conda activate cwcd ~/
git clone https://github.com/newaetech/chipwhisperer
cd chipwhisperer
git submodule update --init jupyterpython -m pip install -e .
python -m pip install -r jupyter/requirements.txtsudo cp 50-newae.rules /etc/udev/rules.d/50-newae.rules
sudo udevadm control --reload-rules
sudo groupadd -f chipwhisperer
sudo usermod -aG chipwhisperer $USER
sudo usermod -aG plugdev $USERcd jupyter
python -m pip install nbstripout
nbstripout --install

使用 Conda 創建和管理環境可以簡化依賴項的管理,并且可以更容易地切換不同的 Python 版本和包版本。

三、參考網站

  1. ChipWhisperer官網:https://chipwhisperer.readthedocs.io/en/latest/index.html
  2. github倉庫:https://github.com/newaetech/chipwhisperer
  3. jupyter notebook官網:https://jupyter-notebook.readthedocs.io/en/stable
  4. jupyter notebook用戶手冊:https://jupyter-notebook.readthedocs.io/en/stable/notebook.html
  5. NewAE硬件產品文檔:https://rtfm.newae.com

?

?

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

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

相關文章

【持續更新】計算機網絡試題

問題1 請簡要說明TCP/IP協議棧的四層結構,并分別舉出每一層出現的典型協議或應用。 答案 應用層:ping,telnet,dns 傳輸層:tcp,udp 網絡層:ip,icmp 數據鏈路層:arp,rarp 問題2 下列協議或應用分別屬于TCP/IP協議…

短劇系統開發:打造高效、創新的短視頻娛樂平臺 - 從0到1的完整解決方案

一、短劇市場迎來爆發式增長 - 不容錯過的萬億級藍海 隨著5G技術的普及和移動互聯網的深度滲透,短劇市場正在經歷前所未有的爆發式增長。根據權威機構艾瑞咨詢最新發布的《2023年中國網絡短劇行業發展報告》顯示: 市場規模:2023年中國短劇市…

ChipWhisperer教程(三)

——CW305目標板的波形采集 一、目標板介紹 CW305 是一款獨立的 FPGA 目標板,搭載的FPGA芯片為Xilinx Artix-7系列。 它具有與 FPGA 通信的 USB 接口、為 FPGA 提供時鐘的外部 PLL、編程 VCC-INT 電源以及用于故障注入環境的二極管保護。 CW305 電路板有多種配置&…

django中如何解析content-type=application/json的請求

django中如何解析content-typeapplication/json的請求 本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術! 往期文章回顧: …

Chainlink VRF 深度解析與實戰

背景 在區塊鏈的去中心化應用中,隨機性是一個常見但難以實現的需求。例如,區塊鏈游戲需要隨機決定戰斗結果,NFT 項目需要隨機分配稀有屬性,去中心化抽獎需要公平選擇獲獎者。然而,傳統的鏈上隨機數生成方法&#xff0…

7. TypeScript接口

TypeScript 中的接口(Interfaces)用于定義對象的結構。它們允許開發者指定一個對象應具有哪些屬性以及這些屬性的類型。接口有助于確保對象遵循特定的結構,從而在整個應用中提供一致性,并提升代碼的可維護性。 一、認識接口 Typ…

UE 新版渲染器輸出視頻

安裝包解壓到C盤 打開UE插件 Movie Render Queue 進入UE引擎在項目設置找到 libx264 aac mp4 影片渲染隊列調用出 命令行編碼器安裝包路徑,序列輸出路徑,定序器不能有中文

基于用戶的協同過濾推薦算法實現(Java電商平臺)

在電商平臺中,基于用戶的協同過濾推薦算法是一種常見的推薦系統方法。它通過分析用戶之間的相似性來推薦商品。以下是一個簡單的實現思路和示例代碼,使用Java語言。 實現思路 數據準備:收集用戶的評分數據,通常以用戶-商品評分矩…

LeetCode - 904. 水果成籃

題目 904. 水果成籃 - 力扣(LeetCode) 思路 題目本質 你有一個整數數組,每個元素代表一種水果。你只能用兩個籃子,每個籃子只能裝一種水果。你要在數組中找一個最長的連續子數組,這個子數組里最多只包含兩種不同的…

發現 Kotlin MultiPlatform 的一點小變化

最近發現 Kotlin 官方已經開始首推 Idea 的社區版的 KMP 插件了. 以前有網頁創建 KMP 的項目的文檔也消失了. 雖然有 Android Studio 的選項. 但是卻不是在默認的位置上了. 足以說明官方是有意想讓大家直接使用 Idea 社區版或者專業版 所以我直接在社區版上安裝 KMP 插件. 嘗試…

【Photoshop】金屬字體制作

新建一個空白項目,選擇橫排文字工具,輸入想要的文件建立文字圖層 選擇橫排文字工具選擇出文字內容,在通知欄出點擊’拾色器‘,設置好需要的文字顏色 圖層面板右下角點擊‘添加圖層樣式’,選擇斜面和浮雕 樣式設置為內斜…

centos 7.9 升級ssh版本 7.4p1 升級到 8.2p1

centos 7.9 升級ssh版本 7.4p1 升級到 8.2p1 1、安裝包下載2、安裝telnet3、安裝openssl-OpenSSL_1_1_1f.tar.gz4、安裝openssh-8.2p1.tar.gz5、修改ssh服務的相關配置文件6、確定可以ssh連接服務器后,卸載telnet,因為telnet不安全 本文是離線環境下升級…

stm32---dma串口發送+fifo隊列框架

之前分享了一個關于gd32的fifo框架,這次就用stm32仿照寫一個,其實幾乎一樣,這次說的更詳細點,我全文都寫上了注釋,大家直接cv模仿我的調用方式即可 uasrt.c #include "stm32f10x.h" // D…

【生產就曲篇】讓應用可觀測:Actuator監控端點與日志最佳實踐

摘要 本文是《Spring Boot 實戰派》系列的終章,我們將探討如何讓應用真正達到**“生產就緒” (Production-Ready)** 的標準。文章的核心是可觀測性 (Observability),即從外部了解一個系統內部運行狀態的能力。 我們將深度挖掘 Spring Boot Actuator 的…

操作系統知識(1)

操作系統的分類總結 1、批處理操作系統:單道批處理和多道批處理(主機與外設可并行) 2、分時操作系統:一個計算機系統與多個終端設備連接。將CPU的工作時間劃分為許多很短的時間片,輪流為各個終端的用戶服務。 3、實時操作系統:實時是指計算機對于外來信息能夠以足…

一.Sharding分庫分表-基因法+自定義多key分片實現多字段查詢

前言 當下遇到這樣一個場景,由于訂單數據量達到千萬級別,采用分庫分表進行優化,根據訂單的熱查條件:order_no訂單編號進行分表,但是這樣帶來一個問題,用戶查詢自己的訂單怎么查?由于分片鍵使用…

【leetcode】543. 二叉樹的直徑

二叉樹的直徑 題目題解解釋 題目 543. 二叉樹的直徑 給你一棵二叉樹的根節點,返回該樹的 直徑 。 二叉樹的 直徑 是指樹中任意兩個節點之間最長路徑的 長度 。這條路徑可能經過也可能不經過根節點 root 。 兩節點之間路徑的 長度 由它們之間邊數表示。 題解 …

AI基礎知識(07):基于 PyTorch 的手寫體識別案例手冊

目錄 實驗介紹 實驗對象 實驗時間 實驗流程 實驗介紹 隨著人工智能技術的飛速發展,圖像識別技術在眾多領域得到了廣泛應用。手寫體識別作為圖像 識別的一個重要分支,其在教育、金融、醫療等領域具有廣泛的應用前景。本實驗旨在利用深度 學習框架 PyTorc…

wordpress后臺更新后 前端沒變化的解決方法

使用siteground主機的wordpress網站,會出現更新了網站內容和修改了php模板文件、js文件、css文件、圖片文件后,網站沒有變化的情況。 不熟悉siteground主機的新手,遇到這個問題,就很抓狂,明明是哪都沒操作錯誤&#x…

信號(瞬時)頻率求解與仿真實踐(2)

引言 本文是信號(瞬時)頻率求解與仿真實踐專題的第二篇文章,在上一篇博文 [1]信號(瞬時)頻率求解與仿真實踐(1)-CSDN博客中,我構建了信號瞬時頻率求解的基本框架,并且比較詳細地討論了瞬時頻率法。這篇博文探討適用于信號瞬時頻率求解的另一種…