資訊安全評估
我看到了這個用於評估某些方案的安全性(機密性、完整性、真實性和不可否認性)的練習:
ENC(M) || SignA(ENC(M))
ENC(M || SignA(M))
SignA(ENC(M))
ENC(M) || SignA(M)
在哪裡 || 是連接和 ENC(是對安全共享密鑰的加密),而 SIgnA 是 Alice 的 RSA 簽名。
我的回答是:
- 具有機密性(來自 ENC)和簽名的真實性,但沒有完整性,因為我有 ENC 的簽名(所以有人可以在我的簽名上使用偽造)和我不認為的非聲譽(但我不確定)。
- 這具有所有屬性,因為 ENC 提供機密性、簽名真實性、不可否認性和完整性,因為我有消息和他的簽名進行驗證。
- 在這個模式中,我有機密性和真實性,但沒有完整性。我不確定不可否認性。
- 有了這個模式,我就有了機密性、完整性和真實性。我再次懷疑不可否認性。
我不太清楚真實性是否意味著不可否認(使用簽名)。
任何人都可以幫助我解決這個問題嗎?
ENC(M) || SignA(ENC(M))
具有機密性(來自 ENC)和簽名的真實性,但沒有完整性,因為我有 ENC 的簽名(所以有人可以在我的簽名上使用偽造)和我不認為的非聲譽(但我不確定)。
由於ENC,機密性是肯定的,正確的。
其他的都是相互聯繫的。如果接收者只接受簽名消息並且使用 Alice 的可信公鑰執行驗證,它們就會出現。如果接受對手的公鑰,則可以創建和簽名任何隨機密文。
不可否認性沒有完成,因為密鑰沒有與消息一起簽名。如果接收者使用不同的密鑰,您將在解密後得到不同的消息,即使密文上的簽名得到驗證。因此,不可否認性是“否”,機密性和消息完整性/真實性是“是”。
ENC(M || SignA(M))
這具有所有屬性,因為 ENC 提供機密性、簽名真實性、不可否認性和完整性,因為我有消息和他的簽名進行驗證。
但是,是的,基本上是對的。請注意,如果加密方案容易受到例如明文/填充 oracle 攻擊的影響,那麼機密性就會失效。這個方案是我們通常做的。
SignA(ENC(M))
在這個模式中,我有機密性和真實性,但沒有完整性。我不確定不可否認性。
該消息未發送(!),因此非常保密。您甚至無法猜測,因為簽名是在加密數據之上。完整性/真實性當然是胡說八道。不可否認也是不可能的。
除非有人能夠獲得原始消息並再次對其進行加密。但通常只允許給定消息(或者你會遇到 DoS 和重放攻擊等問題)。
ENC(M) || SignA(M)
有了這個模式,我就有了機密性、完整性和真實性。我再次懷疑不可否認性。
錯誤的!您可以猜測數據並驗證簽名。如果它驗證,你已經找到了數據。我們通常假設公鑰是眾所周知的。
一旦你解密了你
M, SignA(M)
就有了你的不可否認性 - 因此是完整性和真實性。再說一遍:如果加密方案容易受到例如明文/填充預言機攻擊的影響,那麼機密性就會失效(對於復雜的消息甚至更重要)。
請注意,通常這類問題會針對“完美”方案進行辯論,其中 E 是完美密碼,而 SignA 不能被破解。此外,除指定的通信或操作外,不允許進行其他通信或操作。
我已經提到了預言機攻擊以及如果消息在之後發送會發生什麼。在回答問題時,這些情況可以而且應該被忽略,即使在實踐中實施這樣的方案時絕對值得考慮。
原因是您首先需要了解完美方案的安全性,然後才能根據安全性聲明設計或分析系統。然後接下來要做的是考慮實際系統。然而,我已經非常紮根於實際應用,所以我的大腦在查看方案時開始自動插入警告。