[問題] Secure Boot的疑問

看板Linux作者 (shooter)時間5年前 (2018/11/20 14:28), 5年前編輯推噓2(2010)
留言12則, 3人參與, 5年前最新討論串1/1
各位版上大大好, 小弟目前正在嘗試建立可以在secure boot要求下開機的開機USB碟 有蠻多關於這方面的問題想要來請教版上大大們, 以Ubuntu系統的測試結果, x86似乎是不支援uefi的secure boot, 僅x64系統有支援, 這方面不知道是否有理解錯誤? 第1步驟似乎是先要有一份被簽署過的grub image來引導進入kernel開機, 但要怎麼去簽署這份grub image呢? 其實目前有點找不到方向 有沒有熟悉這方面的大大可以給小弟一些意見 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.48.112 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1542695309.A.673.html

11/20 14:41, 5年前 , 1F
11/20 14:41, 1F
恩 我有看到這篇 所以才覺得好像是只有x64有支援@@ ※ 編輯: shooter555 (61.219.48.112), 11/20/2018 14:52:54 目前我的grub image是用這個指令做出來的 grub-mkimage -O x86_64-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot efi_gop efi_uga font keylayouts keystatus sleep usb 是在做出來以後還要多做什麼動作去簽署它嗎? ※ 編輯: shooter555 (61.219.48.112), 11/20/2018 15:32:11

11/20 15:45, 5年前 , 2F

11/20 15:46, 5年前 , 3F
要有sbsigntool ,必須先裝有支援SecureBoot的系統。
11/20 15:46, 3F
感謝上面大大, 我研究一下sbsigntool, 另外我剛剛有找到一篇指南 https://ruderich.org/simon/notes/secure-boot-with-grub-and-signed-linux-and-initrd 還沒看完, 不知道行不行得通 ※ 編輯: shooter555 (61.219.48.112), 11/20/2018 16:24:03 弄了一天, 一直卡在efi-updatevar這個步驟, 一直出現Can't update variable in User Mode without a key 搞不清楚PK, KEK, DB這3個的用處, 請問一下除了指南中提到的步驟 還要做什麼動作嗎? 感覺好像是key沒有建立正確 跳過efi-updatever這個步驟, 直接用db.key簽署grub binary, 啟動後出現 Operating System Loader signature not found in SecureBoot database ('db'). 看起來是要將db放入esp partition中, 請問有大大知道這個db是存放在哪個檔案嗎? 要移哪個檔案進去 ※ 編輯: shooter555 (61.219.48.112), 11/21/2018 15:21:16

11/21 15:29, 5年前 , 4F
你要進 UEFI 把 Secure Boot 切成 Setup Mode
11/21 15:29, 4F

11/21 15:29, 5年前 , 5F
或是把 Key 清空 (我的板子是這樣才進 Setup Mode
11/21 15:29, 5F

11/21 15:31, 5年前 , 6F
PK
11/21 15:31, 6F
感謝大大的回應~ 原來他指的setup mode是指板子uefi裏面的設定 所以是指要做簽署動作的PC要先進setup mode 然後才能更改efiver 進而簽署efi binaries 這樣就要先找一台支援secure boot然後又可以進setup mode的機器當作開發機了 ※ 編輯: shooter555 (61.219.48.112), 11/21/2018 16:40:43 抱歉 有點搞錯了 現在搞懂那個指南的意思, 它是要自建一組新的KEY, 然後放入UEFI中 同時可利用這個自建的KEY去簽署Binaries, 但我想要的是用一般UEFI就認可的KEY去簽署Binaries, 這樣我的開機碟 才可以在被要求secure boot的情況下直接開啟, 這是需要付費的嗎? 我該怎麼拿到這組用來簽署的KEY, 我知道windows的driver是需要購買一套工具來專門簽署, 但linux要怎麼拿到這個key呢? ※ 編輯: shooter555 (61.219.48.112), 11/22/2018 17:01:51

11/22 17:31, 5年前 , 7F
要付費,所以有人簽了一份grub給大家用
11/22 17:31, 7F
感謝大大回應 付費是可以考慮的, 但現在不知道要去哪申請@@ 或者是要申請哪種才正確 我看有支援secureboot 的機器內的db list, 共通點都有這三張憑證 Microsoft Corporation UEFI CA 2011 Microsoft Windows Production PCA 2011 Canonical Ltd. Master Certificate Authority 這樣是不是只能被這三張其中一張簽署才可以通用? 本來想拿簽署windows driver用的GlobalSign CodeSigning CA來簽, 似乎不行這樣用 其實現在還有一個地方還不明白, 就是在uefi進grub之前, 好像還要先進keyTool, 這個keyTool的用處, 及用法正在研究中0.0 ※ 編輯: shooter555 (61.219.48.112), 11/23/2018 11:49:30 ※ 編輯: shooter555 (61.219.48.112), 11/23/2018 13:29:15

11/25 15:11, 5年前 , 8F
Canonical是ubuntu的公司,就用他的grub就好啊XD
11/25 15:11, 8F
因為grub有些改動, 所以才在研究怎麼讓改動過的grub通過secure boot @@ ※ 編輯: shooter555 (61.219.48.112), 11/27/2018 10:17:09

11/27 23:15, 5年前 , 9F
11/27 23:15, 9F

11/27 23:16, 5年前 , 10F
這招可以不跟MS/Canonical打打交道,不然就是要自己去談了
11/27 23:16, 10F

11/27 23:29, 5年前 , 11F
不對 找到的資料說現在也不能那樣玩了
11/27 23:29, 11F
shim 昨天剛試完, 還是得簽證, 因為第一次載入都需要手動將hash或是key加入moklist中, 找不到方式省掉這個步驟@@ 不曉得有沒有方式可以自動做hash到moklist 本來想對中間的mokmanager動手腳, 不過看起來他跟前一個引導的shim是綁定的, 一載入就顯示security violation 看起來要修改一份shim, 然後加入自簽的憑證在shim的驗證中(後門), 然後再把這份shim的binary送簽證, 後面的grub或是kernel就可以使用這張自簽的憑證通過檢查(應該可行吧@@?) ※ 編輯: shooter555 (61.219.48.112), 11/29/2018 10:19:29 ※ 編輯: shooter555 (61.219.48.112), 11/29/2018 10:22:11 ※ 編輯: shooter555 (61.219.48.112), 11/29/2018 10:44:21

11/29 19:04, 5年前 , 12F
應該是,這就ubuntu現在的做法之一
11/29 19:04, 12F
文章代碼(AID): #1RywcDPp (Linux)