這些使用身份驗證和加密的替代方案中的哪一個可以解決這個多使用者數據庫問題?
這些使用身份驗證和加密的替代方案中的哪一個可以解決這個多使用者數據庫問題?
我正在嘗試了解密碼學領域,因此我開始閱讀有關該主題的教科書。
真實性章節末尾的練習詢問以下內容:
我有一種強烈的感覺,即第二種選擇在安全策略/威脅模型下並不安全,但我不確定。
有人可以幫我證明這一點,或者就這兩種選擇中的哪一種失敗提出論據嗎?
第一個看起來更複雜,但它是錯誤的。你應該看到的是中間人被使用者攻擊 $ B $ 可以用 $ E_{pk_D}(R), S_{sk_B}(E_{pk_D}(R)), B $ . 現在伺服器將愉快地驗證簽名,解密請求,並將數據返回給 $ B $ 代替 $ A $ .
這就是為什麼通常您不能相信可用數據僅由一個實體簽名的原因,這就是為什麼我們通常對非對稱方案使用先簽名後加密,而對對稱方案傾向於使用先加密後加密。如果您只接受來自一個實體或完全受信任的實體的簽名,您不會有麻煩,但這裡顯然不是這種情況。
看來您確實希望得到答案而不僅僅是提示,所以我會這樣做。但是我會一步一步來,這樣你就可以停止閱讀,如果你想自己完成。
在我看來,這兩種解決方案都滿足了真實性的第一個要求。打破這個屬性將包括改變內容 $ R $ 愚弄 $ A $ (這寧願是完整性,它或多或少是連結的)或將密鑰更改為您的密鑰,以便您可以閱讀答案。這應該這樣做 $ D $ 仍然認為查詢是合法的。
對於這兩種解決方案,我看不到它是如何完成的,所以對我來說似乎是安全的。
然而,這兩種解決方案之一在關於隱私的第二個要求上失敗了。我看到的攻擊有一個技巧,這可能就是你被卡住的原因。
訣竅是:您不會通過攔截查詢來讀取查詢是什麼,但您可以測試您攔截的查詢是這個還是那個。
確實不需要 $ A $ 的秘密計算 $ E_{pk_D}(R) $ 在第一個解決方案中“按原樣”發送。所以你可以打賭什麼是 $ R $ 併計算 $ E_{pk_D}(R) $ . 如果您的結果是查詢中的內容,則您得到了查詢。否則你仍然知道查詢不是什麼,這仍然對方案的安全性有害。
重要:發生這種情況是因為 RSA 是確定性的,但在現實世界中,我們會將 RSA 與 OAEP(命名為 RSAES-OAEP,PKCS1 標準的一部分)一起使用,我認為(?)這兩種解決方案都是安全的。
答:第一種解決方案不安全。
這個概念被選擇明文攻擊(CPA) 的概念所擷取,該概念模擬了對手可以加密他想要的任何消息的情況。顯然,任何人都可以計算的第一個解決方案就是這種情況 $ E_{pk_D}(R) $ . 測試方案在 CPA 模型下是否安全的遊戲(更準確地說,如果它達到 IND-CPA)是:
- 對手可以加密他想要的任何消息(或由 Oracle 加密)
- 對手給出了它選擇的兩條消息
- 隨機選擇兩條消息之一,加密並提供給對手
- 對手必須猜測兩者中的哪一個被加密。