資料介紹
描述
為什么要加密?
對 Raspberry Pi 上的根文件系統 (RFS) 進行加密的原因有很多,從保持 WiFi 憑證不可變到防止專有軟件和敏感數據被克隆。對于許多 Raspberry Pi 配置,僅存在兩個分區:
- /啟動 /dev/mmcblk0p1
- /上/dev/mmcblk0p2
因此,將根分區加密作為加密所有內容的一種方式是有意義的。
介紹盧克斯
LUKS ( L inux Unified Key S etup ) 是 dm - crypt的流行密鑰管理設置,它是 Linux 塊設備加密的事實標準。
LUKS 為多個用戶(和服務)提供了一個強大而靈活的機制來連接和訪問 Linux 的“ dm-crypt ”基礎設施。
dm-crypt是 Linux 內核 2.6 及更高版本中的透明磁盤加密子系統,是設備映射器基礎架構的一部分,并使用來自內核 Crypto API 的加密例程。兩者都在 IT 社區中被廣泛使用和理解。
單一萬能鑰匙的缺點
dm-crypt 有一個主密鑰,用于加密/解密塊內/外的數據。為了確保長期安全并應對不斷變化的授權用戶/服務,有必要經常更改主密鑰,并可能定期與多個用戶/服務共享它。主密鑰的每一次新迭代都需要每次都對底層數據塊進行重新加密。在實際系統中,由不同的用戶/服務接觸,這是不切實際的。
分級密鑰管理
一個更實用的解決方案是進行分層密鑰管理設置,其中為用戶/服務提供用于釋放 MasterKey 的用戶密鑰。用戶密鑰可以很容易地更改和撤銷,而無需重新加密底層數據塊。這樣一個分層密鑰管理器的管理就是 LUKS 的角色。
在這篇文章中,我們將展示如何使用 Zymkey 鎖定用戶密鑰,該用戶密鑰隨后用于解鎖主密鑰并提供對根文件系統的訪問。如果您想了解更多關于 LUKS 的信息,請參閱本文底部的參考資料。
LUKS 用戶密鑰的安全存儲
LUKS 加密 RFS 的安全效力很大程度上取決于用戶密鑰的生成方式和存儲位置。
Pi SD 卡不是安全的存儲位置
不斷壯大的 Raspberry Pi 家族很棒,我們喜歡它!它價格低廉,具有令人難以置信的嵌入式設備計算能力,并且具有非常強大的軟件開發生態系統。
然而,Raspberry Pi 有一個致命弱點:SD 卡是主要的軟件部署媒體,它可以很容易地移除和操作。
自然傾向是使用 dm-crypt 上的 LUKS 加密文件系統,但對于許多部署單元的無人值守使用,顯而易見的問題是:LUKS 密鑰存儲在哪里?當然是文件系統。即使您嘗試通過各種程序化手段對其進行混淆,密鑰仍然很容易受到攻擊。
使用 Zymkey 安全模塊保護 LUKS 用戶密鑰。
Zymkey 提供了一種通用的“鎖定”服務,通過該服務對純文本數據塊進行加密和簽名。
當與 LUKS 一起使用時,用戶密鑰被發送到 Zymkey 以在文件系統創建時被鎖定(加密和簽名)。當系統啟動并需要解密根文件系統時,鎖定的 LUKS 密鑰被“解鎖”(簽名驗證和內容解密)并呈現給 dm-crypt。如果密鑰已成功解鎖,則啟動過程會正常繼續。以下是 LUKS/dm-crypt 文件系統的啟動順序,其中密鑰受 Zymkey 保護:
- 內核初始化initramfs
- initramfs 將鎖定的 LUKS 密鑰提供給 Zymkey
- Zymkey 驗證簽名并解密密鑰 *
- 解密后的密鑰被提交給 LUKS,然后根文件系統被解密
*要求 Zymkey 操作狀態為“安全”
Zymkey 在解鎖 LUKS 密鑰之前驗證主機系統
Zymkey 的主要功能之一是根據測量特定系統組件的指紋為主機系統生成唯一身份 (ID)。此指紋識別過程用于將特定 Zymkey(信任根、密鑰存儲、加密服務)、特定主機和特定 SD 卡“綁定”在一起。一旦綁定,這些組件就形成了主機系統的永久且不可變的 ID。
每次 Pi 啟動時,以及之后的隨機間隔,Zymkey 都會重新檢查 ID 指紋。如果任何系統組件更改了指紋更改并且系統被認為已被破壞,則身份驗證失敗并且所有安全服務都將關閉。
使用此 ID / 身份驗證功能,Zymkey 可用于在無人看管的應用程序中保護 LUKS 用戶密鑰,在這些應用程序中,可以輕松刪除和復制 SD 卡內容。(Zymkey 還具有其他物理安全功能,也可用于鎖定/啟用安全服務)
在哪里存儲您的 LUKS 加密 RFS
LUKS 用途廣泛,可應用于 SD 卡和外部存儲介質。讓我們回顧一下每個選項的優缺點:
選項 1 - 將現有 SD 卡轉換為 LUKS
轉換 SD 卡上現有的根文件系統仍然需要一個外部設備(例如 USB 閃存驅動器)用作臨時引導根文件系統:這為轉換和復制原始內容提供了一種更簡單、風險更低的方法。外部設備需要比現有的根文件系統大一點,以便存儲舊的文件系統。
優點:
- 更少的物理空間要求。
- 所需的功率要少得多。
缺點:
- 與遷移到外部驅動器相比,轉換更加復雜和耗時。
- 數據空間限制。
- 寫周期約束。
- 訪問速度限制。
工藝步驟:
- 制作原始根文件系統的 tarball 并將其存儲在外部設備上
- 將原始根文件系統文件復制到外部設備,形成臨時文件系統
-
引導至臨時文件系統。啟動后,臨時文件系統將
:創建一個 LUKS 密鑰
b. 用 zymkey
c 鎖定 LUKS 鍵。在原始根分區上創建一個 LUKS 卷
d. 在原始根分區的 LUKS 卷上創建一個 ext4 分區
e。將根文件系統 tarball 解壓到轉換后的分區中
選項 2 - 將現有 SD 卡遷移到外部 LUKS 存儲設備。
現有的根文件系統可以遷移到外部 LUKS 加密的 USB 閃存、硬盤或 SSD。
優點:
- 外部設備可以保存更多數據。
- 遷移比 SD 卡轉換方法更容易、更快捷。
- 一些外部設備的數據訪問速度比 SD 卡快得多。
- 一些外部設備(例如 HDD)可以承受比 SD 卡更多的寫入周期。
缺點:
- 對于 HDD 和 SSD 以及非緊湊型 USB 閃存設備,還有額外的電源要求。
- 除了緊湊型 USB 閃存設備外,物理空間需求也隨之增加。這對于 Raspberry Pi Zero 系列來說可能尤其重要。
工藝步驟:
- 創建 LUKS 密鑰
- 鎖定 LUKS 鍵
- 在外部 USB 設備上創建 LUKS 卷
- 在 LUKS 卷上創建一個 ext4 分區
- 將現有的根文件系統移動到外部設備上的 LUKS 卷
- 引導到新的根文件系統并擦除以前的根卷
構建你的 LUKS 加密 RFS
先決條件
確保您的 Zymkey 軟件套件已經在運行和運行,并確保您的 Zymkey 已綁定。此處的說明:(入門:ZYMKEY4i 與 RASPBERRY PI )。
注意:對于帶有 eMMC 的 CM4/IO 模塊,由于默認禁用 USB 2.0 端口,因此需要執行額外的步驟:
- 升級引導加載程序版本:2021 年 1 月 16 日
- 設置啟動順序以允許從 USB 啟動:0xf15
- 修改 /boot/config.txt 并在 [all] 下添加“otg_mode=1”行。如果添加,這將替換“dtoverlay=dwc2, dr_mode=host”行。
選項 1 - 將現有 SD 卡轉換為 LUKS
要將您的根文件系統轉換為 LUKS/dm-crypt,您需要連接一個外部 USB 磁盤(作為臨時存儲)。如前所述,這是必要的,因為不可能就地加密分區,因此在進行轉換時需要外部磁盤作為臨時存儲和臨時根文件系統。外部磁盤需要至少是根分區的兩倍。接下來,運行以下腳本:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_sd_rfs.sh | sudo bash
該腳本是參數化的,因此如果您有特殊要求(例如根文件系統位于 /dev/mmcblk0p4 上),您可以通過以下方式調用它:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_sd_rfs.sh | sudo bash -s -- -x -m
在上面沒有參數的調用中,默認值為:
- 位于 /dev/mmcblk0p2 的原始根文件系統
- 位于 /dev/sda 上的原始根 tarball 的臨時根文件系統/存儲
- 臨時根文件系統占用整個新設備
在新的臨時外部 USB 磁盤上首次運行此腳本可能需要很長時間。此外,在腳本完成之前需要重新啟動兩次。
需要注意的一點是,如果外部存儲設備上有一個帶有原始根文件系統分區(例如 /dev/mmcblk0p2)的 ext4 格式化分區,此腳本將使用外部存儲設備上已有的內容來轉換 SD卡片。這減少了轉換大量 Pi 根文件系統的時間,并允許在大規模生產部署中使用該腳本。
在帶有連接 USB SSD 作為裸 Jessie “完整”版本 (~4GB) 的外部設備的 Pi3 上,此腳本的第一次運行需要大約一個小時才能完成第一階段。第二階段大約需要 15 分鐘。
具有 Jessie“精簡版”(約 1.6GB)的同一平臺在第 1 階段大約需要 20 分鐘,在第 2 階段需要 5 分鐘。
綜上所述,使用格式化后的外接設備轉換后續單位只需 15/5 分鐘。
選項 2 - 將現有 SD 卡遷移到外部 LUKS 存儲設備。
要將根文件系統遷移到外部 USB 設備,可以運行以下腳本:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_ext_rfs.sh | sudo bash
該腳本是參數化的,因此如果您有特殊要求,可以通過以下方式調用:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_ext_rfs.sh | sudo bash -s -- -x -p -m
在上面沒有參數的調用中,默認值為:
- 位于 /dev/mmcblk0p2 的原始根文件系統
- 位于 /dev/sda1 的新根文件系統
- 新的根文件系統占用了整個新設備
請注意,新的根文件系統至少應該比原來的根分區大一點
在根分區約為 16GB(SanDisk Ultra Class 10)的 Pi Model 3 上運行此腳本,其中包含基本 Jessie 安裝以及 Zymkey 軟件套件(~1GB)到32GB SanDisk Cruzer Fit大約需要 30-40 分鐘。Zymkey 的 LED 快速閃爍,直到該過程完成。
將 LUKS 集成到批量制造工作流程中
上面的示例旨在幫助您啟動和運行單個和低容量的應用程序。
如果您在開發大批量制造加密工作流程方面需要支持,請聯系我們討論我們的 OEM 工程服務。
參考
- 可以檢測鴿子并在Raspberry Pi上運行的系統
- rootfs根文件系統制作 2次下載
- ROC RK3399 PC Pro文件系統Linux根文件系統鏡像(arm64/arm32)
- 嵌入式Linux學習之旅(10)— 使用buildroot構建根文件系統
- 嵌入式Linux移植3. NFS根文件系統掛載(從Ubuntu啟動內核,文件系統)
- 嵌入式Linux--根文件系統(一)簡介
- 如何實現Linux內核移植和yaffs2根文件系統制作 9次下載
- 如何制作一個自啟動的Linux根文件系統 1次下載
- CramFS根文件系統的移植解析 0次下載
- 嵌入式系統文件系統比較 1次下載
- Mini210s NFS掛接根文件系統 9次下載
- 實驗五 基于busybox的根文件系統制作實驗-2016 10次下載
- 基于Cramfs的根文件系統配置 23次下載
- 基于s3c2410的CramFS根文件系統的移植
- 用Busybox制作嵌入式Linux根文件系統
- 防止根文件系統破壞,OverlayRootfs 讓你的設備更安全 170次閱讀
- 如何修改buildroot和debian文件系統 524次閱讀
- Linux系統如何擴展文件系統 864次閱讀
- FatFS文件系統在STM32F4上的移植和應用 2684次閱讀
- 什么是分布式文件系統 4290次閱讀
- 基于Buildroot的Linux系統構建之根文件系統 2621次閱讀
- fireflyROC-RK3328-PC編譯Ubuntu 根文件系統簡介 1481次閱讀
- fireflyAIO-3399C主板創建Ubuntu根文件系統 1190次閱讀
- Firefly-PX3-SE編譯根文件系統簡介 1482次閱讀
- FireflyRK3128主板Ubuntu 根文件系統創建 3390次閱讀
- Firefly-RK3399根文件系統介紹 2126次閱讀
- Xilinx Zynq制作修改根文件系統的方法 3600次閱讀
- 文件系統是什么?淺談EXT文件系統歷史 5724次閱讀
- 制作ZedBoard上linux根文件系統(ramdisk) 1603次閱讀
- 基于zynq的Linux根文件系統生成 5841次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機控制開發板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多