此儲存庫包含 VeriSMo 專案的程式碼。
tools/ :包含驗證器和編譯器工具和腳本。
deps/ : 包括 hacl 包
來源/:verismo程式碼
source/verismo : verismo 的驗證程式碼
source/verismo_main :主要可執行 bin,僅定義未經驗證的 Rust 恐慌處理程序。
來源/verismo/src/arch :模型
source/verismo/src/entry.s :一個小的且未經驗證的組譯程式碼。
source/target.json :目標配置
首先,安裝rust工具鏈;
tools/install.sh
然後,建立 verus、verus-rustc(取代 rustc)和 igvm 工具和依賴項。
tools/activate.sh
現在,執行驗證檢查並建置二進位檔案。
?此步驟需要幾分鐘。
跑步
make verify
或者
cd source/verismo_main; cargo verify --release;
cd source/verismo; verismo_VERUS_ARGS="--verify-module security::monitor" cargo verify --release;
完全驗證的結果應該有「已驗證」:2138,「錯誤」:0,
如果未對source/verismo
進行任何更改,我們建議在不進行驗證的情況下進行構建,以加快構建過程。
make debugbuild
或者
cd source/verismo_main; cargo build --feature noverify --release;
make
或make verify
則跳過)下載linux子模組: git submodule update --init richos/snplinux
建立來賓作業系統和驅動程式: make fs -f Makefile.default
執行sh source/target/target/release/verismo/igvm.sh
為 Hyper-V 產生 IGVM 格式的 verismo: source/target/target/release/verismo/verismo-rust.bin
執行make fs
以產生 vhdx 檔案作為 VM 的檔案系統: richos/test-fs/verismo.vhdx
硬體:AMD SEV-SNP 機器。
作業系統:帶有 Hypervisor 的 Windows 在 20230909 之後發布。
可選:具有 Windows 作業系統的調試機器。
將以下文件移至您的 AMD SEV-SNP 計算機。
source/target/target/release/verismo/verismo-rust.bin
richos/test-fs/verismo.vhdx
tools/vm/*
build-vm.ps1 verismo verismo-rust.bin None verismo.vhdx
start-vm verismo
不支援 GUI 訪問,您需要使用 ssh 登入來賓作業系統。
verismo.vhdx 包含 init 進程,無需密碼即可開啟 sshd 服務。
連接前請等待一分鐘。
ssh [email protected]
一旦 guest 虛擬機器啟動,它就已經與 VeriSMo 通訊以在啟動期間喚醒 AP 並更新頁面權限。
在 guest 中,我們還提供了 verismo 驅動程式和一些測試,如果您願意,可以直接與 Verismo 對話。
verismo.ko:驅動程式
解碼報告:以可讀格式顯示二進位報告。
test.sh:測試腳本
cd verismo insmod verismo.ko sh test.sh
請參閱 Windows 遠端偵錯以啟用主機和管理程式偵錯。無法從來賓作業系統存取 VeriSMo 啟動日誌。
在 source/.cargo/config.toml 中,我們將 rustc 替換為 verus-rustc。 verus-rustc 將呼叫verus
來編譯vstd
(一個 verus 函式庫)、 verismo
和verismo-main
套件,並呼叫rustc
來編譯所有其他套件(hacl、core 等)。
請參閱source/verismo/build.rs
noverify:建立原始碼而不進行驗證
verifymodule:如果${VERUS_MODULE}不為空,則僅驗證指定模組。
取決於 cfg(debug_assertations) 調試模式透過leak_debug列印額外的訊息用於調試目的; Release模式擦除所有leak_debug或debug資訊;
該項目歡迎貢獻和建議。 大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA 機器人將自動確定您是否需要提供 CLA 並適當地裝飾 PR(例如,狀態檢查、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。