Encryption
為什麼要使用預共享密鑰的日期相關子字元串而不僅僅是密鑰?
我最近遇到了一個系統將加密的有效負載傳遞給另一個系統的情況。有效載荷使用預共享密鑰進行加密。但是,不僅使用密鑰本身,還使用目前日期和月份進行計算以生成整數值。然後使用該值來檢索鍵的子字元串。因此,如果計算的輸出是 10,則用於加密有效負載的密鑰是原始密鑰的子字元串,從索引 10 開始。兩個系統都有這個邏輯。
我知道這可以防止擁有密鑰但沒有上述邏輯的人解密有效負載,但這是必要的還是解決此問題的行業標準解決方案?我以前從未遇到過它,我不確定使用什麼術語進行進一步研究。
任何見解表示讚賞!
**編輯:**我想原來的“鑰匙”並不是真正的鑰匙……它是鑰匙派生出來的密碼。
這絕對不是行業標準解決方案。看起來系統設計者想要強制執行的是每天更改密鑰。本質上,它是一種簡單(且不安全)的會話密鑰方案,因此每個會話持續一天。
使用會話密鑰的想法在安全通信中非常普遍。如果攻擊者可以使用特定密鑰加密更多密文,密碼分析就會變得更容易。因此,我們通常希望限制在特定密鑰下加密的數據量。這是通過密鑰交換/建立協議來完成的,這些協議生成隨機的、短期的密鑰並安全地分發給發送方/接收方。隨機密鑰被稱為會話密鑰,因為它們只在一個會話中使用。分發的安全性通常需要例如預共享密鑰或非對稱密鑰。
回到您提到的方案,由於許多設計缺陷,它並不安全,例如會話密鑰不是隨機生成的,與預共享密鑰相關,並且可以重複使用。它沒有提供太多額外的安全性,例如,如果攻擊者擁有預共享密鑰,他可以不費吹灰之力地列舉會話密鑰。它甚至可能削弱系統的安全性。