以下只是為了方便理解而簡化的說明,與公鑰演算法背後的精神、apt檢查的細節略有出入
Key ID就是公鑰的身分證,所以企鵝兄所言,可以這樣解讀
「lenny團隊的公鑰,在subkeys.pgp.net這裡的身分證字號是55BE302B」
那麼,現在你已經取得了「真正的debian團隊的公鑰」
凡是能通過這個公鑰檢查的東西,不論他是純文字檔也好,是包好的套件也好
你可以相信這個東西一定是debian團隊的產品
Release.gpg和公鑰搭配,可以用來檢查Release這個檔
若apt的檢查不過,預設的狀況下apt會給你一個錯誤訊息告訴你檢查失敗
換句話說,Release.gpg是用來檢查這個Release檔是不是debian官方團隊所釋出的
而Release裡面記載了各個套件的一部份檢查訊息,這個檢查也是apt會自動做的,一樣預設會出現錯誤訊息
所以整個apt的自動檢查流程是這樣的
1.用Release.gpg+公鑰檢查Release檔
2.用Release檔裡的md5 checksum檢查套件
3.用公鑰檢查套件
再次重申:
你不需要管 Release.gpg檔 / Release檔 / 套件檔 是哪抓來的
ftp.de.debian.org也好,a.b.org也可以
只要他能通過公鑰的檢查,那就一定是debian官方釋出的東西
這些檢查apt都會自動去做,你需要擔心的只有「有沒有奇怪的公鑰混在你信任的金鑰列表(apt-key)裡面」
範例:
我將abc.def.org加入sources.list中,我的apt-key裡面只有lenny的公鑰,我確定apt的設定檔中沒有將公鑰驗證的警告訊息關閉,安裝時apt也沒有出現有關公鑰的錯誤訊息,那麼我安裝的一定是lenny的官方套件,不是什麼阿撒布魯的東西
回到你的問題
lortagery 寫:apt-get 為了同時滿足安全性與效率,採用了二步驟的驗證。
步驟一:以 Release.gpg 來驗證 Release 的不可否認性。
步驟二:以 Release 中的指紋列表來驗證 DEB包 的正確性。
其中,Release 的內容就是每一個 DEB包 的指紋(MD5)。
問題:假設我從可靠的他處取得了 Release.gpg,但尚未取得 Release 而準備稍候來取得該檔案。那我該如何下達指令來確認 Release 的正確性呢?
問題背景說明:無法確認
http://ftp.de.debian.org/debian 此套件源是否被竄改或是被導向偽造網站。
不論你是從哪裡取得Release.gpg和Release檔,只要Release配合公鑰運算後能與Release.gpg相符,那麼「Release.gpg和Release兩個檔案都是真的」
這個檢查是apt自動會做的,你不需要下達任何指令
如果你硬是要手動驗證一下,請man gpg
至於確認某套件源是否被竄改或是被導向偽造網站
如上所言,只要你確定
1.apt-key裡面沒有奇怪的公鑰
2.apt的設定沒有關閉公鑰相關的錯誤訊息
3.安裝的時候apt沒有顯示錯誤訊息
那麼你一定是裝到正版的debian套件
突然想到一個可能更好理解的比喻:
假設你逛夜市,看到某個地攤在賣m$的windoz xp
你看了看,盒子上的產品封條完整,你也確定上面的防偽貼紙是真的
雖然這是地攤,雖然老闆大特價1元賣你,一切的一切都很像是假貨
但你還是可以確定你買到了正版的windoz
防偽貼紙是公鑰,產品封條是檢查碼,那個可悲的windoz xp是套件
地攤的老闆是一個套件源,新光華是另一個套件源,官方套件源是M$總公司,台灣M$是官方mirror之一