Encryption

重新發送擷取的加密數據

  • December 20, 2015

假設 Bob 是某種算法股票交易機器。Bob 接受 Alice 的命令,Alice 將消息發送給 Bob。

例如:Alice 可能正在向 Bob 發送消息以停止交易。但是,如果馬洛里能夠擷取密碼並弄清楚將密碼發送給鮑勃的效果,馬洛里可以將擷取的密碼發送給鮑勃,並讓他在任意時間停止交易。

密碼系統如何處理這種情況?

我能想到的一種方法是在加密之前將目前紀元時間附加到消息中。然後,如果解密密碼中顯示的時間遠在過去,Bob 可以選擇丟棄該消息。但這並非萬無一失。現實生活中究竟做了什麼?

密碼系統如何處理這種情況?……在現實生活中究竟做了什麼?

在現實生活中,密碼學通過使用“身份驗證”來處理您所描述的情況。身份驗證將動作、消息或情況與身份聯繫起來。在您描述的範例中,這實際上歸結為對實體知道的某些內容的驗證……例如密碼、密鑰或其他類型的秘密。

簡而言之,您可以將身份驗證視為使您能夠通過表明他們知道只有他們知道的秘密來驗證實體是否確實是他們聲稱的身份或被允許做某事的東西。(請注意,“身份驗證”並不總是意味著一個實體證明其個人身份;它還可以用來證明一個實體是知道某個秘密的一組實體的一部分。)

為了更好地理解“身份驗證”是什麼,了解“身份驗證”還有其他形式(更好:因素)可能會有所幫助。很有可能,您自己已經在現實生活中遇到過這樣的“身份驗證”,因為“身份驗證”可以通過實體擁有的東西來證明——比如護照、智能卡、令牌設備或類似的東西。

除此之外,“認證”可以由實體通過實體所是的東西來證明。例如:人類具有特定的個體特徵。這些也可用於“身份驗證”……這是生物辨識技術涵蓋的領域之一。如果您曾經掃描過您的指紋或虹膜,或者您曾經在電影中看到過……嗯,這就是我們在密碼學領域中所說的“身份驗證”。

如前所述,在您的範例中,Bob 和 Alice 將使用共享密鑰來啟用相互身份驗證。由於不知道秘密,馬洛里將無法成功驗證她的消息,因為鮑勃會檢測到失去或錯誤的驗證因素(秘密)並相應地拒絕和/或忽略馬洛里的消息/攻擊。

當然,單獨的身份驗證不會使協議安全。除了身份驗證之外,還需要諸如安全連接(使用加密等)之類的東西來圍繞事物包裹安全防護罩。但是身份驗證是密碼學的重要組成部分,因為它允許(例如)了解您正在與之通信的實體是否確實是您希望與之通信的實體……而不是某種試圖注入甚至替換消息的對手您可能認為是安全的。由於加密,它們可能是安全的,但如果沒有身份驗證,那就不值得了。然而,兩者的結合構成了在兩個實體之間交換資訊的一種非常可靠的方式。

您正在描述重放攻擊。

防止這種情況的最簡單方法是在消息中包含消息計數器,並拒絕任何計數器等於或小於最後一條消息的消息。消息計數器應該足夠大,以便在計數器循環之前發生關鍵更改。32 位消息計數器允許每秒 100 條消息,持續約 497 天。

僅此一項可能還不夠。Mallory 可以攔截和阻止所有消息,如果知道消息在給定時間可能是什麼,則可以在對她有利時重新傳輸該特定消息。一個例子是恰好在下午 4 點出現的“停止交易”消息。它可能會推遲到馬洛里以某種​​方式從額外的交易活動中受益之後。

可以通過使用 TTL(生存時間)來減輕這種攻擊,告知消息在傳輸時間之後的有效時間,以及對消息接收的強制確認和準確的時間同步。根據案例的不同,這可能會以拒絕服務的形式出現其自身的問題。確認允許 Alice 確定 Bob 是否在預期的時間範圍內收到了消息,Bob 是接受還是拒絕了消息,以及拒絕的原因。

消息計數器、時間碼、TTL 或與消息一起發送的對系統安全至關重要但未加密的其他資訊必須經過身份驗證。當然,加密數據也必須經過身份驗證。在實踐中,這是通過選擇 AEAD 密碼或模式,或添加補充完整性檢查(如 HMAC)來完成的。如果密碼需要隨機數,則消息計數器和時間碼可以是隨機數的一個組成部分,因此是隱式認證的。需要注意保持準確的計數和時間,以防止可能的重複使用。

引用自:https://crypto.stackexchange.com/questions/30030