題:
從未簽名的網站對文件進行哈希處理是否會帶來錯誤的安全感?
Iszi
2011-01-18 04:19:28 UTC
view on stackexchange narkive permalink

考慮一下。許多下載了軟件的網站還提供了MD5或SHA1哈希,供用戶驗證下載文件的完整性。但是,這些站點中很少有一個在站點本身上實際使用HTTPS加密或數字簽名。同一源(甚至是另一個未經身份驗證的源),對文件進行哈希處理的真正價值是什麼?這樣會不會建立一種錯誤的安全感,因為(在沒有數字簽名的情況下)下載和哈希都可能在用戶不知情的情況下被篡改了?

我敢打賭,錯誤的安全感是一個強烈的理由,就是永遠不要提供哈希。我不知道上次TCP / IP失敗並且下載損壞。那是真的...從來沒有。
MD5是消息摘要算法,MD5和SHA1都不打算用於作者的身份驗證;假設沒有惡意因素,只需簡單地以高概率驗證內容即可。 MD5碰撞是完全可能的。僅憑這一點就可以使您了解這些事實並非旨在作為安全功能(或者至少是在對這些功能進行計費時,因為這樣做的人是不稱職的)。
十一 答案:
yfeldblum
2011-01-18 04:25:57 UTC
view on stackexchange narkive permalink

因此,如果要從實際上是未經身份驗證的源下載文件,並使用來自同一源(甚至另一個未經身份驗證的源)的哈希值對其進行驗證,則對文件進行哈希處理的真正價值是什麼嗎?該文件可從本網站下載。

但是,實際上並沒有太多安全性。熟練的破解者可以用惡意修改的版本替換文件,並用與修改後的文件匹配的哈希替換;或者他可以通過網絡對請求進行MITM,並用自己的請求文件和自己的哈希表替換。

好答案。就個人而言,我什至從未考慮過使用哈希來確保安全性。我以為這只是用於錯誤檢查!
@MatthewRead,這沒有道理。它們是為安全而製造的。
@Pacerier哈希當然不是出於安全性考慮。如果您不同意此答案和問題的前提,那麼比起4歲以上的附帶意見更好地解決這個問題。
@MatthewRead,問題在談論SHA1和MD5。這些稱為安全哈希,與CRC校驗和有根本不同。
安全專家還明確指出,@Pacerier的其他答案是,攻擊者通常也可以更改哈希,並且哈希不能設計為自己用來簽名。此外,MD5在幾年前就被打破了。現在很容易創建具有相同MD5哈希值的兩個文件。SHA1也是可疑的,並且不符合現代要求。但是如上所述,即使使用https本身切換到SHA-2或SHA-3,也幾乎不會提供任何保護。
Jeff Ferland
2011-05-26 09:54:59 UTC
view on stackexchange narkive permalink

那裡的收益確實是有限的。如您所指出的,如果您可以替換站點上的一件事,則可能可以替換兩者。

但這確實有一些好處:

  • 它允許其他網站來託管具有已驗證完整性的大文件。這樣一來,我就可以從沒有理由信任的隨機第3方那裡獲取文件,並仍然根據源站點(可能帶寬有限)驗證該文件是否正確。
  • 如果您的該網站非常受歡迎,很可能有足夠多的舊哈希表副本可以迅速向公眾確認妥協,包括通過archive.org和各種搜索引擎緩存。

通過使用具有公鑰/私鑰對的文件簽名來增加安全性,對於大多數應用程序,實際的好處並不比沒有密鑰大。如果我將密鑰發佈在網站上並簽署所有內容而不是發布哈希,則攻擊者可以獲得與替換哈希相同的替換密鑰的效果。真正具有獨立分佈的大型項目需要這個額外的層(我想到了Debian),但是我認為很少有人會從中受益。

Thomas Pornin
2012-10-28 02:38:37 UTC
view on stackexchange narkive permalink

為使散列具有一些與安全性相關的值,必須同時滿足以下兩個條件:

  • 散列值必須通過以下協議分配:保證完整性(例如HTTPS);
  • 下載的文件必須通過保證完整性的協議分發;

因為文件也使用HTTPS進行服務,則哈希往往毫無意義:SSL已經確保了傳輸期間的完整性。

哈希無法保護攻擊者控制服務器,因為攻擊者可以這樣做就像他可以修改文件一樣修改哈希。

發布的哈希的有用性示例是當您在某個日期下載文件,然後稍後再檢查時因此,您擁有的副本是正確的,因為您不一定信任本地存儲的完整性(例如,該存儲在USB閃存盤上,而該USB閃存盤可能被有惡意的人暫時掠奪了)。 另一個例子是當下載本身來自p2p網絡時,因為 這樣的東西對於將批量軟件分發給許多客戶端非常有效(Blizzard Downloader就是這樣做的):使用p2p獲取文件,然後從HTTPS主站點獲取較小的哈希值。 第三個例子(我專業遇到的)是在繁重的審核條件下(例如,創建新的根CA)構建受信任的系統時:您希望審核員能夠驗證所使用的軟件是正版的。如果散列文件是通過HTTPS分發的,則審核員只需對照本地存檔檢查它即可;否則,審核員必須見證整個下載過程。考慮到審計員的小時費率,最好使用散列法。

nealmcb
2011-05-26 10:46:59 UTC
view on stackexchange narkive permalink

沒錯,僅具有原始哈希是有限的好處,因為您還需要安全地分發哈希,而且大多數人不知道如何正確檢查哈希或解決許多可能的問題。

獲得良好安全性的正確方法是使用公鑰技術對哈希進行簽名,並將其無縫集成到整個軟件分發方案中。仍然有必要安全地分發公共密鑰,但這只能執行一次,例如安裝操作系統時。我認為這基本上是Windows和MacOS進行的OS更新以及Office等一些主要軟件包所做的。

最重要的是,幾乎所需的所有軟件都由相同的標準密鑰覆蓋。這實際上是大多數開源軟件發行版(例如Debian,Ubuntu,Red Hat,Suse等)中發生的事情。它們確實安全地分發了數以萬計的軟件包,所有軟件包均使用作為發行版一部分進行管理的密鑰自動簽名,因此高度安全。而且大多數情況下,無需任何人工檢查即可完成

如果頁面已經是HTTPS,這是沒有意義的嗎?然後一個簡單的SHA2就足夠了。
@Pacerier HTTPS僅保護客戶端和站點之間傳輸的數據。它沒有告訴您有關站點提供的文件的任何信息。由於攻擊者通常可以通過多種方法(預先,秘密或非法)將文件獲取到站點,因此您確實需要文件級簽名。
當您說“攻擊者通常可以將文件下載到站點上”時,是否表示他們可以修改二進製文件?如果他們能夠修改二進製文件,那麼他們也不能修改校驗和嗎?
@Pacerier是的,攻擊者可以修改二進製文件,並且他們可以修改簡單的校驗和。這就是這個問題的全部重點-簡單的校驗和幾乎沒有提供額外的安全性。但是公共密鑰簽名提供了很多額外的安全性,因為如果有人更改了簽名,則在檢查時它將無效。而且,他們必須有權訪問簽名者私鑰(希望它可以脫機,並且可以在硬件安全模塊中進行保護)才能為修改後的二進製文件創建有效簽名。
KeithS
2013-01-09 00:45:39 UTC
view on stackexchange narkive permalink

因此,如果要從實際上是未經身份驗證的源下載文件,並使用來自同一源(甚至是其他未經身份驗證的源)的哈希值對其進行驗證,則對文件進行哈希處理的真正價值是什麼?

在這種情況下,哈希直接位於指向文件鏈接的旁邊,其價值主要是確保文件在傳輸過程中不會損壞或損壞。

從安全角度來看,您是對的;這幾乎沒有任何價值證明文件未被篡改,因為任何可以進入並上傳被黑文件(或更改鏈接以指向被黑副本)的任何人都可以替換旁邊的哈希。這就是為什麼當目標是安全性時幾乎從來沒有這樣做過的原因。

通常,當提供哈希摘要時,它直接來自軟件生產商。他們提供下載軟件,但不願意將軟件直接託管在自己的服務器上。他們是一家軟件公司,而不是託管公司,並且沒有自己服務器內外的帶寬來允許數千個並發的寬帶下載。因此,他們從雲提供商那裡租用空間和帶寬以提供相同的服務。

現在,他們不再控制該雲;而是,他們無法控制該雲。這是由另一家公司維護的另一套系統,“我的房子,我的規則”。軟件供應商擔心黑客入侵,並有很好的理由擔心自己的好名聲會因託管公司的妥協而受到損害。這是一種常見的攻擊方法,它是軟件公司在軟件上的名稱,它使攻擊者可以進入公司用戶的網絡並造成破壞。

該解決方案是讓軟件生產商對託管站點上要下載的文件進行哈希處理,並在其控制下從其自己的系統中顯示哈希值。現在,您(最終用戶)可以從大型託管站點下載軟件,並通過轉到軟件公司的站點並將其列出的文件哈希與您從中計算出的文件哈希值進行比較,來驗證您所得到的是軟件公司在此處存放的內容。下載的文件。與託管實際文件進行下載相比,軟件公司佔用的帶寬要少得多。現在,不再存在任何漏洞。攻擊者必須同時入侵雲軟件生產者的站點,以便將文件放置在可以通過哈希檢查的位置。他們可以僅通過入侵託管站點並替換文件來搞亂那些不想打擾檢查哈希的人(很多人),或者可以弄亂執行檢查哈希的人通過對軟件提供商的站點進行黑客攻擊並更改散列值,使真實文件的哈希不再匹配,但是,二者只能偽裝成軟件公司自己的被黑客入侵的文件,這更加困難。

好答案。加1使用普通白話來解釋它。
nealmcb
2011-01-18 04:28:08 UTC
view on stackexchange narkive permalink

一般來說,是的-來自http站點的哈希值幾乎無法保證數據來自受信任的來源。

但這取決於您對安全性的定義,即威脅模型。安全性的一個方面是數據完整性,檢查哈希通常可以幫助您避免浪費時間在錯誤的CDROM或損壞的下載上。

從提供良好身份驗證的軟件包系統中獲取軟件要好得多。從程序員到版本控制,再到打包和分發的所有方式。

Rory Alsop
2011-01-18 04:28:15 UTC
view on stackexchange narkive permalink

對於家庭用戶,通常“足夠”地保證文件正確(並且我的意思是-下載有效且沒有損壞)-儘管從安全角度來看,攻擊者可以輕鬆地替換文件如果文件存儲在相同位置,則將其作為文件散列。

對於公司安全人員或更敏感的東西,您可能希望通過以下方式真正驗證散列:帶外機制。

Steve
2011-01-18 04:26:33 UTC
view on stackexchange narkive permalink

在您描述的情況下,簽名的唯一用途實際上只是確保文件未損壞。

但是請注意,哈希絕不是簽名。它是一種單向功能,是一種安全的校驗和,但不包含任何人在擔保任何東西的證據。
user2428118
2014-04-14 13:31:03 UTC
view on stackexchange narkive permalink

在某些情況下,即使未通過安全連接下載哈希也可以證明檢查文件的哈希具有安全性:

  • 如果僅通過被篡改時,您可以使用其他連接(例如安全VPN)訪問包含哈希的網頁。如果通過其他連接查看頁面時,該頁面顯示的哈希值幾乎不會被篡改。
    當然,通過通過不同的連接兩次下載相同的文件可以達到相同的結果,但這
  • 如果攻擊者(無論是人類還是軟件)都不在乎計算惡意文件的哈希值並用其替換原始哈希值。但是請注意,依靠攻擊者的懶惰並不是最好的防禦方法。
  • 如果文件是從不同於hash和 站點的其他站點下載的,則該站點已被破壞,但該站點前提是不是。例如,可以通過鏡像 CDN分發文件。
  • 如果提供的哈希值是用受信任的密鑰進行數字簽名的。例如,使用受信任的PGP簽名簽名的哈希。

仍然,當通過不安全的連接提供哈希時,主要優點是可以驗證傳輸的文件在傳輸過程中沒有損壞。如今,這種情況並不經常發生,但是確實發生了。刻錄損壞的Linux ISO可能會導致安裝損壞,只有在為時已晚時才可能注意到。用損壞的下載內容刷新BIOS可能會更糟。

要考慮的另一件事是,儘管提供哈希值確實可能帶來錯誤的安全感,但下載文件的人很有可能會即使沒有哈希也下載了它。在這種情況下,哈希提供的少量安全利益可能根本不佔任何優勢。

在第三個要點中,您提到如果哈希值託管在其他站點上,則可以通過不安全的連接將哈希值發送給用戶。但是,攻擊者無法更改發送給用戶的哈希值嗎?
@Rads我為#3想到的情況不是針對用戶的主動中間人攻擊,而是託管了軟件本身的第三方網站以及包含該軟件信息的網站(包括哈希)。例如,今年八月開放源代碼軟件網站[FossHub](http://www.ghacks.net/2016/08/03/attention-fosshub-downloads-compromised/)被黑,其某些下載內容被替換為惡意軟件。(下一條評論續。)
許多開源項目都使用FossHub來處理其下載,其中大多數都有自己的網站(例如[qBittorrent](http://www.qbittorrent.org/download.php)和許多其他項目)。通過對照qBittorrent網站上提供的哈希值檢查從FossHub下載的安裝文件,可以發現該文件已被篡改。 (在這種情況下,qBittorrent並不是被惡意軟件替換的文件之一,但是您明白了。我選擇qBittorrent是因為它們實際上在自己的網站上提供了哈希值。)
labmice
2011-01-19 21:56:38 UTC
view on stackexchange narkive permalink

@Iszi這是一個短篇小說...(好吧,也許不是“短篇” ...對不起:P)

假設要下載 VLC 。對於Windows。最新版本(1.1.5版)。好的嗎?

您的第一站應該是 http://www.videolan.org官方站點)。但是您可以找到並獲得來自5.780.000個網站的“相同”編。 對嗎?(谷歌“ vlc下載1.1.5”)。

官方站點說文件的MD5是“ 988bc05f43e0790c6c0fd67118821d42”(請參閱鏈接)。您可以從官方 videolan.org WEB服務器無HTTPS )獲得此編(1.1.5版)。或單擊鏈接,重定向到Sourceforge並獲取它。再次使用否HTTPS 。但是Sourceforge是一個 big 名稱。值得信賴對?你猜怎麼著。您的擁有VLC的叔叔會通過電子郵件向您發送Rapidshare鏈接以進行下載。和您的朋友也一起工作。

因此,您從這些“ 可信賴的來源”下載了該文件。

朋友,網站,版本,叔叔。您相信他們所有人。對 ?我不這麼認為。至少你不應該。

有一種(也是唯一一種)方法來檢查您得到的內容,是原始文件。不變,不變。沒動。那就是比較它的哈希值。但是用什麼呢? 帶有來自官方來源的哈希值。

沒有HTTP(S),沒有數字簽名,沒有“安全”或“受信任”服務器。沒有。您不需要這些。數據完整性是您的朋友。

PGP / GnuPG也是如此。您可以檢測到消息自完成以來是否已被更改。哈希與修改後的文件相匹配

可以,發現存在 MD5衝突 。還有 SHA-1碰撞。但是要引用 Wikipedia

當今普遍使用的加密哈希函數被設計為具有抗衝突性,但只有極少數絕對是這樣。尤其是MD5和SHA-1都已經發布了比蠻力更有效的發現碰撞的技術。但是,某些壓縮函數證明,找到衝突至少與某些困難的數學問題(例如整數分解或離散對數)一樣困難。這些功能被稱為證明是安全的

我不認為“熟練的破解者”可以找到“不良版本”或製作一個文件/二進製文件/無論您要使用的是什麼原始,並製作,它都具有與原始文件相同的相同 MD5 / SHA-1。並使其看起來相同(圖片)。或使用相同的文件大小,甚至使其運行或變得有意義(文本)。差遠了。他可以使它無法檢測到防病毒軟件(如果是惡意軟件)。那是個不同的故事。但據報導,有一些非常嚴重的衝突案例

因此,請從任何您喜歡的來源下載,但要比較原始來源的哈希值。並且總是有一個原始來源

您似乎對@Justice's的評論感到困惑。他們並不是說Mallory可以以新文件(我們稱為VLC-M)與舊文件的哈希匹配的方式更改VLC Player。他們的意思是,因為相關站點或文件上沒有數字簽名,Mallory可以入侵VLC的網站,發布VLC-M代替VLC,並將發布的哈希值從VLC更改為一款與VLC-M匹配的產品-用戶將無法得知發生了這種情況。
嗯,是。在這種情況下,所有賭注都關閉。但是... 1)Zbot作者偽造了卡巴斯基數字簽名(http://news.softpedia.com/news/Zbot-Authors-Forge-Kaspersky-Digital-Signature-150817.shtml)2)Symantec概述了受感染文件簽名的行業問題(http://news.softpedia.com/news/Infected-File-Signed-by-Symantec-Outlines-Industry-Problem-152120.shtml)3)使用JMicron的證書對與Stuxnet相關的新惡意軟件進行了簽名http:// news.softpedia.com/news/New-Stuxnet-Related-Malware-Signed-Using-Certificate-from-JMicron-148213.shtml我們是否在談論同一件事?
我認為我們在這裡還不太講相同的語言。我說的是文件*哈希*,就像您的基本MD5和SHA1一樣-缺少*數字簽名。不過,有趣的新聞鏈接。
好點,@iszi。 @labmice,您的新聞鏈接是如何很好的示例:1)仍然需要根據所涉及的軟件實際檢查經過數字簽名的哈希,2)有時會簽署壞東西,因此請尋找最新副本,以及3)簽名密鑰也可能被盜。但是值得慶幸的是,大多數簽名密鑰的保護性都比大多數站點要好得多,並且與那里大量受感染的網站(可以隨意更改未簽名的哈希值)相比,數字簽名是一個巨大的勝利。
mincewind
2014-12-18 11:09:41 UTC
view on stackexchange narkive permalink

如果您要認真考慮,擁有多個站點來託管可下載的內容以及哈希鍵將阻止大多數工廠更換攻擊。再次假設是威脅模型,在此模型中,攻擊者將不得不在原位而不是在運輸過程中進行替換。即使只有一個來源,副本也將阻止任何人替換文件和哈希。

而且,文件源可能會因下載而損壞。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...