如何證明某個文件是從某個網站下載的?
假設您從某個網站下載了一個文件,然後該網站聲稱它沒有提供該文件,有什麼方法可以證明該網站在撒謊?
範例 1:您下載了一個 youtube 影片,該頻道後來刪除了該影片並聲稱該影片從未存在過。
範例2:一個網站發布了某個內容,後來你發現連結壞了,網站沒有內容了,但你仍然有內容,想證明內容在特定時間在那裡可用。
關於如何做到這一點的任何想法?
這是可能的,但必須與網站合作。無論下載的文件是什麼,以及相關的元數據(例如時間和伺服器身份),都可以通過密碼散列到一個小但計算上唯一的值。然後可以請求網站使用他們的認證簽名密鑰簽署這個雜湊值,這是由網站的證書保證的。如果網站同意這樣做,則下載加元數據與網站身份之間的關聯應該在計算上難以偽造。
請注意,對於由 https 或 sftp 保護的下載,不可否認性屬性不是先驗保證。適用性聲明 (AS)規範包括作為選項的消息簽名。
這裡缺乏前向安全性。如果網站使用的簽名密鑰(或認證鏈中的其他簽名)隨後被洩露(通過未來的計算能力或網路攻擊),那麼偽造將成為可能。在這種情況下,該網站可以通過聲明其網站過去的所有流量都可能是偽造的並且不應信任此類保證來拒絕下載。
Daniel S 解釋了為文件下載提供否認所需的條件,因此我將解釋為什麼在使用正常 TLS 的典型情況下無法證明文件已下載。
當伺服器與客戶端建立 TLS 會話時,將交換主密鑰。此密鑰用於派生用於加密的密鑰以及用於完整性的密鑰。為了提供完整性,加密數據使用稱為 MAC 的算法進行散列。與大多數加密散列不同,MAC 散列是keyed。即使對於相同的消息,如果密鑰不同,摘要也會不同。
在傳輸數據之前,MAC 被加密並用於散列密文。然後散列與密文一起作為標籤傳輸。然後,接收者使用相同的 MAC 密鑰對其接收的密文進行雜湊處理,並將其與標籤進行比較。如果不同,則數據可能已被篡改,會話將被拆除。
即使您作為客戶知道主密鑰,因此也知道 MAC 密鑰,但您無法向任何人證明您記錄的會話是合法的*,即使您也證明*主密鑰本身是合法的。這是因為您可以更改數據並使用 MAC 重新散列它,而無需質疑主密鑰的真實性。最多,您可以證明給定的握手發生了並且是真實的,但您無法證明之後發生的事情。