資料介紹
描述
為什么要加密?
對(duì) Raspberry Pi 上的根文件系統(tǒng) (RFS) 進(jìn)行加密的原因有很多,從保持 WiFi 憑證不可變到防止專有軟件和敏感數(shù)據(jù)被克隆。對(duì)于許多 Raspberry Pi 配置,僅存在兩個(gè)分區(qū):
- /啟動(dòng) /dev/mmcblk0p1
- /上/dev/mmcblk0p2
因此,將根分區(qū)加密作為加密所有內(nèi)容的一種方式是有意義的。
介紹盧克斯
LUKS ( L inux Unified Key S etup ) 是 dm - crypt的流行密鑰管理設(shè)置,它是 Linux 塊設(shè)備加密的事實(shí)標(biāo)準(zhǔn)。
LUKS 為多個(gè)用戶(和服務(wù))提供了一個(gè)強(qiáng)大而靈活的機(jī)制來(lái)連接和訪問(wèn) Linux 的“ dm-crypt ”基礎(chǔ)設(shè)施。
dm-crypt是 Linux 內(nèi)核 2.6 及更高版本中的透明磁盤加密子系統(tǒng),是設(shè)備映射器基礎(chǔ)架構(gòu)的一部分,并使用來(lái)自內(nèi)核 Crypto API 的加密例程。兩者都在 IT 社區(qū)中被廣泛使用和理解。
單一萬(wàn)能鑰匙的缺點(diǎn)
dm-crypt 有一個(gè)主密鑰,用于加密/解密塊內(nèi)/外的數(shù)據(jù)。為了確保長(zhǎng)期安全并應(yīng)對(duì)不斷變化的授權(quán)用戶/服務(wù),有必要經(jīng)常更改主密鑰,并可能定期與多個(gè)用戶/服務(wù)共享它。主密鑰的每一次新迭代都需要每次都對(duì)底層數(shù)據(jù)塊進(jìn)行重新加密。在實(shí)際系統(tǒng)中,由不同的用戶/服務(wù)接觸,這是不切實(shí)際的。
分級(jí)密鑰管理
一個(gè)更實(shí)用的解決方案是進(jìn)行分層密鑰管理設(shè)置,其中為用戶/服務(wù)提供用于釋放 MasterKey 的用戶密鑰。用戶密鑰可以很容易地更改和撤銷,而無(wú)需重新加密底層數(shù)據(jù)塊。這樣一個(gè)分層密鑰管理器的管理就是 LUKS 的角色。
在這篇文章中,我們將展示如何使用 Zymkey 鎖定用戶密鑰,該用戶密鑰隨后用于解鎖主密鑰并提供對(duì)根文件系統(tǒng)的訪問(wèn)。如果您想了解更多關(guān)于 LUKS 的信息,請(qǐng)參閱本文底部的參考資料。
LUKS 用戶密鑰的安全存儲(chǔ)
LUKS 加密 RFS 的安全效力很大程度上取決于用戶密鑰的生成方式和存儲(chǔ)位置。
Pi SD 卡不是安全的存儲(chǔ)位置
不斷壯大的 Raspberry Pi 家族很棒,我們喜歡它!它價(jià)格低廉,具有令人難以置信的嵌入式設(shè)備計(jì)算能力,并且具有非常強(qiáng)大的軟件開發(fā)生態(tài)系統(tǒng)。
然而,Raspberry Pi 有一個(gè)致命弱點(diǎn):SD 卡是主要的軟件部署媒體,它可以很容易地移除和操作。
自然傾向是使用 dm-crypt 上的 LUKS 加密文件系統(tǒng),但對(duì)于許多部署單元的無(wú)人值守使用,顯而易見(jiàn)的問(wèn)題是:LUKS 密鑰存儲(chǔ)在哪里?當(dāng)然是文件系統(tǒng)。即使您嘗試通過(guò)各種程序化手段對(duì)其進(jìn)行混淆,密鑰仍然很容易受到攻擊。
使用 Zymkey 安全模塊保護(hù) LUKS 用戶密鑰。
Zymkey 提供了一種通用的“鎖定”服務(wù),通過(guò)該服務(wù)對(duì)純文本數(shù)據(jù)塊進(jìn)行加密和簽名。
當(dāng)與 LUKS 一起使用時(shí),用戶密鑰被發(fā)送到 Zymkey 以在文件系統(tǒng)創(chuàng)建時(shí)被鎖定(加密和簽名)。當(dāng)系統(tǒng)啟動(dòng)并需要解密根文件系統(tǒng)時(shí),鎖定的 LUKS 密鑰被“解鎖”(簽名驗(yàn)證和內(nèi)容解密)并呈現(xiàn)給 dm-crypt。如果密鑰已成功解鎖,則啟動(dòng)過(guò)程會(huì)正常繼續(xù)。以下是 LUKS/dm-crypt 文件系統(tǒng)的啟動(dòng)順序,其中密鑰受 Zymkey 保護(hù):
- 內(nèi)核初始化initramfs
- initramfs 將鎖定的 LUKS 密鑰提供給 Zymkey
- Zymkey 驗(yàn)證簽名并解密密鑰 *
- 解密后的密鑰被提交給 LUKS,然后根文件系統(tǒng)被解密
*要求 Zymkey 操作狀態(tài)為“安全”
Zymkey 在解鎖 LUKS 密鑰之前驗(yàn)證主機(jī)系統(tǒng)
Zymkey 的主要功能之一是根據(jù)測(cè)量特定系統(tǒng)組件的指紋為主機(jī)系統(tǒng)生成唯一身份 (ID)。此指紋識(shí)別過(guò)程用于將特定 Zymkey(信任根、密鑰存儲(chǔ)、加密服務(wù))、特定主機(jī)和特定 SD 卡“綁定”在一起。一旦綁定,這些組件就形成了主機(jī)系統(tǒng)的永久且不可變的 ID。
每次 Pi 啟動(dòng)時(shí),以及之后的隨機(jī)間隔,Zymkey 都會(huì)重新檢查 ID 指紋。如果任何系統(tǒng)組件更改了指紋更改并且系統(tǒng)被認(rèn)為已被破壞,則身份驗(yàn)證失敗并且所有安全服務(wù)都將關(guān)閉。
使用此 ID / 身份驗(yàn)證功能,Zymkey 可用于在無(wú)人看管的應(yīng)用程序中保護(hù) LUKS 用戶密鑰,在這些應(yīng)用程序中,可以輕松刪除和復(fù)制 SD 卡內(nèi)容。(Zymkey 還具有其他物理安全功能,也可用于鎖定/啟用安全服務(wù))
在哪里存儲(chǔ)您的 LUKS 加密 RFS
LUKS 用途廣泛,可應(yīng)用于 SD 卡和外部存儲(chǔ)介質(zhì)。讓我們回顧一下每個(gè)選項(xiàng)的優(yōu)缺點(diǎn):
選項(xiàng) 1 - 將現(xiàn)有 SD 卡轉(zhuǎn)換為 LUKS
轉(zhuǎn)換 SD 卡上現(xiàn)有的根文件系統(tǒng)仍然需要一個(gè)外部設(shè)備(例如 USB 閃存驅(qū)動(dòng)器)用作臨時(shí)引導(dǎo)根文件系統(tǒng):這為轉(zhuǎn)換和復(fù)制原始內(nèi)容提供了一種更簡(jiǎn)單、風(fēng)險(xiǎn)更低的方法。外部設(shè)備需要比現(xiàn)有的根文件系統(tǒng)大一點(diǎn),以便存儲(chǔ)舊的文件系統(tǒng)。
優(yōu)點(diǎn):
- 更少的物理空間要求。
- 所需的功率要少得多。
缺點(diǎn):
- 與遷移到外部驅(qū)動(dòng)器相比,轉(zhuǎn)換更加復(fù)雜和耗時(shí)。
- 數(shù)據(jù)空間限制。
- 寫周期約束。
- 訪問(wèn)速度限制。
工藝步驟:
- 制作原始根文件系統(tǒng)的 tarball 并將其存儲(chǔ)在外部設(shè)備上
- 將原始根文件系統(tǒng)文件復(fù)制到外部設(shè)備,形成臨時(shí)文件系統(tǒng)
-
引導(dǎo)至臨時(shí)文件系統(tǒng)。啟動(dòng)后,臨時(shí)文件系統(tǒng)將
:創(chuàng)建一個(gè) LUKS 密鑰
b. 用 zymkey
c 鎖定 LUKS 鍵。在原始根分區(qū)上創(chuàng)建一個(gè) LUKS 卷
d. 在原始根分區(qū)的 LUKS 卷上創(chuàng)建一個(gè) ext4 分區(qū)
e。將根文件系統(tǒng) tarball 解壓到轉(zhuǎn)換后的分區(qū)中
選項(xiàng) 2 - 將現(xiàn)有 SD 卡遷移到外部 LUKS 存儲(chǔ)設(shè)備。
現(xiàn)有的根文件系統(tǒng)可以遷移到外部 LUKS 加密的 USB 閃存、硬盤或 SSD。
優(yōu)點(diǎn):
- 外部設(shè)備可以保存更多數(shù)據(jù)。
- 遷移比 SD 卡轉(zhuǎn)換方法更容易、更快捷。
- 一些外部設(shè)備的數(shù)據(jù)訪問(wèn)速度比 SD 卡快得多。
- 一些外部設(shè)備(例如 HDD)可以承受比 SD 卡更多的寫入周期。
缺點(diǎn):
- 對(duì)于 HDD 和 SSD 以及非緊湊型 USB 閃存設(shè)備,還有額外的電源要求。
- 除了緊湊型 USB 閃存設(shè)備外,物理空間需求也隨之增加。這對(duì)于 Raspberry Pi Zero 系列來(lái)說(shuō)可能尤其重要。
工藝步驟:
- 創(chuàng)建 LUKS 密鑰
- 鎖定 LUKS 鍵
- 在外部 USB 設(shè)備上創(chuàng)建 LUKS 卷
- 在 LUKS 卷上創(chuàng)建一個(gè) ext4 分區(qū)
- 將現(xiàn)有的根文件系統(tǒng)移動(dòng)到外部設(shè)備上的 LUKS 卷
- 引導(dǎo)到新的根文件系統(tǒng)并擦除以前的根卷
構(gòu)建你的 LUKS 加密 RFS
先決條件
確保您的 Zymkey 軟件套件已經(jīng)在運(yùn)行和運(yùn)行,并確保您的 Zymkey 已綁定。此處的說(shuō)明:(入門:ZYMKEY4i 與 RASPBERRY PI )。
注意:對(duì)于帶有 eMMC 的 CM4/IO 模塊,由于默認(rèn)禁用 USB 2.0 端口,因此需要執(zhí)行額外的步驟:
- 升級(jí)引導(dǎo)加載程序版本:2021 年 1 月 16 日
- 設(shè)置啟動(dòng)順序以允許從 USB 啟動(dòng):0xf15
- 修改 /boot/config.txt 并在 [all] 下添加“otg_mode=1”行。如果添加,這將替換“dtoverlay=dwc2, dr_mode=host”行。
選項(xiàng) 1 - 將現(xiàn)有 SD 卡轉(zhuǎn)換為 LUKS
要將您的根文件系統(tǒng)轉(zhuǎn)換為 LUKS/dm-crypt,您需要連接一個(gè)外部 USB 磁盤(作為臨時(shí)存儲(chǔ))。如前所述,這是必要的,因?yàn)椴豢赡芫偷丶用芊謪^(qū),因此在進(jìn)行轉(zhuǎn)換時(shí)需要外部磁盤作為臨時(shí)存儲(chǔ)和臨時(shí)根文件系統(tǒng)。外部磁盤需要至少是根分區(qū)的兩倍。接下來(lái),運(yùn)行以下腳本:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_sd_rfs.sh | sudo bash
該腳本是參數(shù)化的,因此如果您有特殊要求(例如根文件系統(tǒng)位于 /dev/mmcblk0p4 上),您可以通過(guò)以下方式調(diào)用它:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_sd_rfs.sh | sudo bash -s -- -x -m
在上面沒(méi)有參數(shù)的調(diào)用中,默認(rèn)值為:
- 位于 /dev/mmcblk0p2 的原始根文件系統(tǒng)
- 位于 /dev/sda 上的原始根 tarball 的臨時(shí)根文件系統(tǒng)/存儲(chǔ)
- 臨時(shí)根文件系統(tǒng)占用整個(gè)新設(shè)備
在新的臨時(shí)外部 USB 磁盤上首次運(yùn)行此腳本可能需要很長(zhǎng)時(shí)間。此外,在腳本完成之前需要重新啟動(dòng)兩次。
需要注意的一點(diǎn)是,如果外部存儲(chǔ)設(shè)備上有一個(gè)帶有原始根文件系統(tǒng)分區(qū)(例如 /dev/mmcblk0p2)的 ext4 格式化分區(qū),此腳本將使用外部存儲(chǔ)設(shè)備上已有的內(nèi)容來(lái)轉(zhuǎn)換 SD卡片。這減少了轉(zhuǎn)換大量 Pi 根文件系統(tǒng)的時(shí)間,并允許在大規(guī)模生產(chǎn)部署中使用該腳本。
在帶有連接 USB SSD 作為裸 Jessie “完整”版本 (~4GB) 的外部設(shè)備的 Pi3 上,此腳本的第一次運(yùn)行需要大約一個(gè)小時(shí)才能完成第一階段。第二階段大約需要 15 分鐘。
具有 Jessie“精簡(jiǎn)版”(約 1.6GB)的同一平臺(tái)在第 1 階段大約需要 20 分鐘,在第 2 階段需要 5 分鐘。
綜上所述,使用格式化后的外接設(shè)備轉(zhuǎn)換后續(xù)單位只需 15/5 分鐘。
選項(xiàng) 2 - 將現(xiàn)有 SD 卡遷移到外部 LUKS 存儲(chǔ)設(shè)備。
要將根文件系統(tǒng)遷移到外部 USB 設(shè)備,可以運(yùn)行以下腳本:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_ext_rfs.sh | sudo bash
該腳本是參數(shù)化的,因此如果您有特殊要求,可以通過(guò)以下方式調(diào)用:
curl -G https://s3.amazonaws.com/zk-sw-repo/mk_encr_ext_rfs.sh | sudo bash -s -- -x -p -m
在上面沒(méi)有參數(shù)的調(diào)用中,默認(rèn)值為:
- 位于 /dev/mmcblk0p2 的原始根文件系統(tǒng)
- 位于 /dev/sda1 的新根文件系統(tǒng)
- 新的根文件系統(tǒng)占用了整個(gè)新設(shè)備
請(qǐng)注意,新的根文件系統(tǒng)至少應(yīng)該比原來(lái)的根分區(qū)大一點(diǎn)
在根分區(qū)約為 16GB(SanDisk Ultra Class 10)的 Pi Model 3 上運(yùn)行此腳本,其中包含基本 Jessie 安裝以及 Zymkey 軟件套件(~1GB)到32GB SanDisk Cruzer Fit大約需要 30-40 分鐘。Zymkey 的 LED 快速閃爍,直到該過(guò)程完成。
將 LUKS 集成到批量制造工作流程中
上面的示例旨在幫助您啟動(dòng)和運(yùn)行單個(gè)和低容量的應(yīng)用程序。
如果您在開發(fā)大批量制造加密工作流程方面需要支持,請(qǐng)聯(lián)系我們討論我們的 OEM 工程服務(wù)。
參考
- 可以檢測(cè)鴿子并在Raspberry Pi上運(yùn)行的系統(tǒng)
- rootfs根文件系統(tǒng)制作 2次下載
- ROC RK3399 PC Pro文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32)
- 嵌入式Linux學(xué)習(xí)之旅(10)— 使用buildroot構(gòu)建根文件系統(tǒng)
- 嵌入式Linux移植3. NFS根文件系統(tǒng)掛載(從Ubuntu啟動(dòng)內(nèi)核,文件系統(tǒng))
- 嵌入式Linux--根文件系統(tǒng)(一)簡(jiǎn)介
- 如何實(shí)現(xiàn)Linux內(nèi)核移植和yaffs2根文件系統(tǒng)制作 9次下載
- 《愛(ài)上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- CramFS根文件系統(tǒng)的移植解析 0次下載
- 嵌入式系統(tǒng)文件系統(tǒng)比較 1次下載
- Mini210s NFS掛接根文件系統(tǒng) 9次下載
- 實(shí)驗(yàn)五 基于busybox的根文件系統(tǒng)制作實(shí)驗(yàn)-2016 10次下載
- 基于Cramfs的根文件系統(tǒng)配置 23次下載
- 基于s3c2410的CramFS根文件系統(tǒng)的移植
- 用Busybox制作嵌入式Linux根文件系統(tǒng)
- 如何修改buildroot和debian文件系統(tǒng) 255次閱讀
- Linux系統(tǒng)如何擴(kuò)展文件系統(tǒng) 687次閱讀
- FatFS文件系統(tǒng)在STM32F4上的移植和應(yīng)用 2247次閱讀
- 什么是分布式文件系統(tǒng) 3990次閱讀
- 基于Buildroot的Linux系統(tǒng)構(gòu)建之根文件系統(tǒng) 2478次閱讀
- fireflyROC-RK3328-PC編譯Ubuntu 根文件系統(tǒng)簡(jiǎn)介 1352次閱讀
- fireflyAIO-3399C主板創(chuàng)建Ubuntu根文件系統(tǒng) 1101次閱讀
- Firefly-PX3-SE編譯根文件系統(tǒng)簡(jiǎn)介 1375次閱讀
- FireflyRK3128主板Ubuntu 根文件系統(tǒng)創(chuàng)建 3140次閱讀
- Firefly-RK3399根文件系統(tǒng)介紹 1968次閱讀
- Xilinx Zynq制作修改根文件系統(tǒng)的方法 3436次閱讀
- 文件系統(tǒng)是什么?淺談EXT文件系統(tǒng)歷史 5548次閱讀
- debian安裝zfs文件系統(tǒng) 1w次閱讀
- 制作ZedBoard上linux根文件系統(tǒng)(ramdisk) 1514次閱讀
- 基于zynq的Linux根文件系統(tǒng)生成 5578次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多