向各位高手請教一個 APT 公開金鑰的細節問題

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

向各位高手請教一個 APT 公開金鑰的細節問題

文章lortagery » 週日 6月 07, 2009 6:23 pm

原本我的 /etc/apt/source.list 是
代碼: 選擇全部
deb http://security.debian.org/ squeeze/updates main

而我要將內容改成
代碼: 選擇全部
deb http://ftp.de.debian.org/debian squeeze main

問題是…很明顯我並沒有該套件源的公開金鑰
但是我還是可以 update 啊。WHY?

難道說,沒有經過公開金鑰的解密,也可以下載套件的 MD5 列表嗎?

就這個細節,向各位高手請教,謝謝。
lortagery
可愛的小學生
可愛的小學生
 
文章: 10
註冊時間: 週日 6月 07, 2009 5:50 pm

文章企鵝狂 » 週日 6月 07, 2009 7:47 pm

MD5都可以下載,沒有key只是會警告,
過程是簽名的驗證,不是解密

http://ftp.de.debian.org/debian/dists/u ... elease.gpg
不管放在哪個ftp上面都是用同一個gpg去簽章的
所以換了url也無所謂
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國

文章lortagery » 週一 6月 08, 2009 12:08 am

那可以再請問一下嗎?

在 source.list 檔案中
當我將 deb http://security.debian.org/ squeeze/updates main
改為 deb http://ftp.de.debian.org/debian squeeze main
的時候,其實此時 update 的話,其實也蠻安全的,

因為原來以官方 debian 光碟安裝的時候,本來就有公開金鑰以供驗證了,
所以就算修改 source.list 的內容也根本就沒影響,這樣說對嗎?
還是說必須要取得各個來源其指紋碼列表的簽名碼才可以?

就這個小問題想您確認一下,謝謝。
lortagery
可愛的小學生
可愛的小學生
 
文章: 10
註冊時間: 週日 6月 07, 2009 5:50 pm

文章企鵝狂 » 週一 6月 08, 2009 1:01 am

lortagery 寫:那可以再請問一下嗎?

....,其實此時 update 的話,其實也蠻安全的,

....這樣說對嗎?

可以阿,
很安全,
沒錯 :)

不過我剛剛好像有一個地方講錯了
/dists/Debian4.0r8/Release 這裡面是所有package 的md5跟sha256 hash
/dists/Debian4.0r8/Release.gpg 這個是上面那個檔案的簽章,確定上面那個檔案沒有被修改。

要驗證簽章,就要用gpg,可以從gpg server取得public key然後匯入apt。
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國

文章lortagery » 週二 6月 09, 2009 4:37 pm

企鵝狂 寫:可以阿,很安全,沒錯 :)

不過我剛剛好像有一個地方講錯了
/dists/Debian4.0r8/Release 這裡面是所有package 的md5跟sha256 hash
/dists/Debian4.0r8/Release.gpg 這個是上面那個檔案的簽章,確定上面那個檔案沒有被修改。

要驗證簽章,就要用gpg,可以從gpg server取得public key然後匯入apt。


哦,謝謝你喔。

所以說,當我 update 的時候,其實就是下載 Release 以及 Release.gpg 這兩的檔案,並由早已知道的公開金鑰進行驗證確認 Release 沒有問題。

而其中公開金鑰是當初 Debian 官方原始光碟內早就有了,並不會因為將更改套件源而有所不同,即便各套件源所提供的套件不盡相同!

所以我們也可以推論:
    一、提供 Debian 套件源的站,應該是取得了 Debian 的私密金鑰,否則難以製作出 Release.gpg,也就是說,想要提供 Debian 套件源的話,必須取得 Debian 私密金鑰才行。
    二、若一個網路中繼站(如cache)要藉由竄改內容以便向更新者值入惡意程式,就這樣的架構來看,透過偽造 DEB 包使得內含惡意程式碼的新 DEB 包,其 MD5 碼能夠恰好與某個正常 DEB 包的 MD5 碼相同才行,這個方法恐怕已經是捷徑了,但難度也不小。
上面的推論對不對呢?如果對的話,那再請教您一個問題,就是如何得知 Debian 系統內,早就已知的公開金鑰碼呢?

最後,謝謝您詳細的解答,謝謝!
lortagery
可愛的小學生
可愛的小學生
 
文章: 10
註冊時間: 週日 6月 07, 2009 5:50 pm

文章企鵝狂 » 週二 6月 09, 2009 4:47 pm

lortagery 寫:
而其中公開金鑰是當初 Debian 官方原始光碟內早就有了,並不會因為將更改套件源而有所不同,即便各套件源所提供的套件不盡相同!

所以我們也可以推論:
    一、提供 Debian 套件源的站,應該是取得了 Debian 的私密金鑰,否則難以製作出 Release.gpg,也就是說,想要提供 Debian 套件源的話,必須取得 Debian 私密金鑰才行。
    二、若一個網路中繼站(如cache)要藉由竄改內容以便向更新者值入惡意程式,就這樣的架構來看,透過偽造 DEB 包使得內含惡意程式碼的新 DEB 包,其 MD5 碼能夠恰好與某個正常 DEB 包的 MD5 碼相同才行,這個方法恐怕已經是捷徑了,但難度也不小。
上面的推論對不對呢?如果對的話,那再請教您一個問題,就是如何得知 Debian 系統內,早就已知的公開金鑰碼呢?

最後,謝謝您詳細的解答,謝謝!


1. 他們不用製作,因為他們是mirror, 把ftp.debian.org 上面的東西複製過來就好。私鑰不能放在外面亂跑,不然人家隨便一個小孩跑來賴是你生的就慘了。
2. MD5會不會很難不知道,不過Release裡面有MD5跟SHA,要兩個都符合應該真的就很難,不知道apt會不會兩個都檢查。
3. 列出apt的
代碼: 選擇全部
apt-key  list

列出gpg的
代碼: 選擇全部
 gpg --list-keys
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國

文章lortagery » 週二 6月 09, 2009 5:01 pm

企鵝狂 寫:1. 他們不用製作,因為他們是mirror, 把ftp.debian.org 上面的東西複製過來就好。私鑰不能放在外面亂跑,不然人家隨便一個小孩跑來賴是你生的就慘了。
謝謝您的意見,不過我有小小的疑問,我感覺「各大 mirror 站都是複製」好像不太對耶,因為我將 http://security.debian.org/ 改為 http://ftp.de.debian.org/debian 之後再去作更新,所得到的內容根本完全部一樣啊!包括說我想安裝 ntfs-3g 或是 PCManX 的話,security.debian.org 這個站根本就沒有提供啊!要不然我乖乖用原來的套件源就好,何必去修改 source.list 呢?

還是說我的觀念有錯誤?還請大師您指點,謝謝。

更嚴重的是,請看這個網址:
http://tetralet.luna.com.tw/index.php?o ... icleId=213
他可是提供套件源的站耶…
lortagery
可愛的小學生
可愛的小學生
 
文章: 10
註冊時間: 週日 6月 07, 2009 5:50 pm

文章FourDollars » 週二 6月 09, 2009 6:18 pm

apt-cache policy pcmanx-gtk2
FourDollars
懵懂的國中生
懵懂的國中生
 
文章: 188
註冊時間: 週五 8月 01, 2003 12:47 am

文章企鵝狂 » 週二 6月 09, 2009 6:26 pm

提供apt/deb的站百百個
不是每一個都是mirror其他人,或是被mirror

他們的Release也都是用不同的key去簽的
所以,一點關係也沒有阿

像luna根本沒有簽名

整個詳細的過程可以參考這裡
http://wiki.debian.org/SecureApt
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國

文章lortagery » 週日 6月 14, 2009 6:52 pm

企鵝狂 寫:提供apt/deb的站百百個 不是每一個都是mirror其他人,或是被mirror 他們的Release也都是用不同的key去簽的 所以,一點關係也沒有阿 像luna根本沒有簽名 整個詳細的過程可以參考這裡 http://wiki.debian.org/SecureApt
    一、那請問 http://ftp.de.debian.org/debian 這個站是 Debian 官方所簽署的嗎?還是該站用自己的金鑰去簽的?又如何得知某個套件站是否為官方簽署的呢?
    二、雖然很感謝大家提供一些資訊,不過我的致命傷就是英文太弱,想請問這段英文中,which 指的是什麼東西:
    In recent releases, Debian has been using strong crypto to validate downloaded packages. This is commonly called "secure apt" and was implemented in Apt version 0.6 in 2003, which Debian migrated to in 2005.
lortagery
可愛的小學生
可愛的小學生
 
文章: 10
註冊時間: 週日 6月 07, 2009 5:50 pm

文章FourDollars » 週日 6月 14, 2009 10:07 pm

Debian 的官方套件都是用同一把私鑰簽屬的
所以只要你有那把私鑰相對應的公鑰就可以驗證套件是否是 Debian 官方套件
公鑰可以執行 sudo apt-key list 看到
至於那些經過私鑰簽署過的套件就可以隨意的讓別人去 mirror (只要私鑰保管好就可以了)
這個跟網址沒有關係而是跟 deb 檔案本身才有關係
建議原po去了解一下公鑰私鑰演算法的觀念
這樣才不會老是弄不清楚背後的機制
http://www.javaworld.com.tw/jute/post/v ... pg=5&age=0
FourDollars
懵懂的國中生
懵懂的國中生
 
文章: 188
註冊時間: 週五 8月 01, 2003 12:47 am

文章ronmi » 週一 6月 15, 2009 7:17 pm

公私鑰演算法要讀懂概念滿花時間的
針對原文的疑問,你可以這麼想(此觀念無法套用在其他的狀況,僅對APT、DEB套件適用)


當你執行 sudo apt-key add 來新增某個公鑰的時候,代表你相信這把公鑰
而一個公鑰只能對應一個私鑰,你可以當作每一把公鑰就代表了一組人馬
所以不管你是從哪裡下載的,只要能通過公鑰的驗證,你就能確定這個套件是你所信任的團體發行的東西
這可以導出一個結論
「我對這個公鑰所代表的套件維護人有信心,他(或他們)包出來的套件有一定的品質,也不會讓其他人假扮他們,不用擔心檔案是哪裡來的」

所以只要你不隨便新增apt-key,這方面的安全是沒問題的
增修現有apt-key的方式,用google可以找到圖文並茂的教學,在此就不提了
ronmi
懵懂的國中生
懵懂的國中生
 
文章: 103
註冊時間: 週一 12月 05, 2005 2:31 am
來自: Taiwan

文章lortagery » 週三 6月 17, 2009 5:18 pm

樓上兩位先進似乎弄錯我的意思了。我的意思是說,假設某個套件源並非官方所簽署的,那麼在進行 apt-get update 的時候,必然會因為無法驗證簽名而出現一些狀況,我想問的就是說,如果 apt-get 發現他所 update 的源無法驗證簽名的話,他是怎麼處理的?是會問我要不要繼續安裝,還是假裝沒看到繼續安裝,還是…。尤其「企鵝狂」大師所講得情形:
企鵝狂 寫:提供apt/deb的站百百個 不是每一個都是mirror其他人,或是被mirror 他們的Release也都是用不同的key去簽的 所以,一點關係也沒有阿
簡單來說,apt-get 會告訴我什麼?或者說我該去怎樣做檢查的動作?尤其是當我加入一個像 http://ftp.de.debian.org/debian 這個套件源並非官方簽署的時候。特別講一下我大概知道下面的事實:
apt-get update 會下載兩樣東西:DEB 包的 MD5 碼列表以及該列表檔案的簽名,並且驗證。只是說,就像企鵝狂說的,並不是每個一個站都是 mirror 其他人,他們的 Release 也都是用不同的 key 去簽的。
這時候該怎麼辦。
lortagery
可愛的小學生
可愛的小學生
 
文章: 10
註冊時間: 週日 6月 07, 2009 5:50 pm

文章企鵝狂 » 週三 6月 17, 2009 11:46 pm

這位小朋友,
ftp.de.debian.org上面的東西是Debian官方簽署過得。
他上面的檔案跟ftp.debian.org上面的一模一樣
但是security上面的就不一樣。

apt-get 會跟你說沒有誰誰的公開金鑰。

不用怎麼辦,可以忽略,或是就去用gpg下載就好。


我覺得講了半天,你還是不知道到底是對URL簽章還是對package簽章
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客