回答
首先,在直接回答你的問題,我需要談談登錄然後加密與加密,然後點登錄,這是加密一個非常普遍的問題,這並不是正確的答案。我的意思是沒有一個簡單的答案,正確的答案取決於你遇到的情況。
首先,請注意,當雙方之間進行實時交換時,加密後符號可以防止基於私鑰和加密時間之間的相關性的攻擊。這是因爲在檢查簽名之前解密時,中間人攻擊者可以讓你解密他想要的任何內容。然後,他可以衡量延遲解密的時間,因爲您的響應會在您解密已修改的內容之後出現(響應通常會是「錯誤」,因爲在解密密文後,您會看到內容沒有正確簽名)。所以,一個主要的規則是在檢查簽名之前永遠不會解密某些東西,對於擁有實時交換的雙方之間的協議。爲防止此類時序方面的信道攻擊,奧克蘭大學的P. Gutmann於2013年末提出了一個drafted RFC。該RFC開始聲明:本文檔描述了一種協商使用加密 - 然後MAC安全機制的方法TLS'/ DTLS'現有MAC-then-encrypt的地方,這已成爲多年來多年安全漏洞的主題。
現在,當您進行異步交換時,就像在SMTP之上使用PGP或S/MIME一樣,這種時間攻擊無法完成。所以,你應該更喜歡Sign-then-encrypt,因爲D.W.所解釋的其他原因。您在評論中提到的線索:https://crypto.stackexchange.com/questions/5458/should-we-sign-then-encrypt-or-encrypt-then-sign(這主要是爲了避免密碼文本被其他人比發射器簽名)。
所以,讓我們回答你的問題:
難道是可以接受的一個標誌,加密符號(電子郵件)設置爲使用相同的證書兩個符號運算或一個應該選擇兩個不同的證書嗎?使用預期的收件人公共證書執行加密操作。
你說這是一個電子郵件上下文。所以沒有時序方面的頻道攻擊應該是可能的。因此,您應該只簽署然後加密。
但是既然你想要Sign-then-encrypt-then-sign,我想你想避免任何其他原因的邊信道攻擊。
因此,使用相同的證書(和私鑰)兩個符號的操作,對您的Exchange的安全級別沒有影響:因爲你能理解,最後的籤運來確保沒有人會解密修改後的內容並測量延遲,並且crypt之前的第一個符號用於檢查密文不能被不能解密的人簽名。因此,這兩種操作都沒有鏈接,所以對兩種操作使用或不使用相同的證書都不會改變任何內容。
- 1. 使用c#.net登錄帶證書的電子郵件.net
- 2. 使用EC X509證書加密電子郵件
- 3. ASP.NET用電子郵件/密碼登錄
- 4. 使用臉書登錄和電子郵箱登錄
- 5. 使用C#發送加密和簽名的電子郵件
- 6. Simplemembership - 添加電子郵件領域和登錄名使用
- 7. Facebook登錄和電子郵件驗證
- 8. 如何使用電子郵件或用戶名登錄一個登錄表單?
- 9. Kohana的驗證登錄的電子郵件不是用戶名
- 10. 如何使用PHP郵件程序加密和簽名電子郵件?
- 11. 使用用戶名或電子郵件使用codeigniter登錄
- 12. 更改用戶名登錄到電子郵件登錄
- 13. 合併經典(電子郵件/密碼)登錄與Facebook登錄
- 14. Swift 3 Firebase用戶認證/使用電子郵件密碼登錄數據庫
- 15. 使用Google登錄使用特定域名的電子郵件
- 16. 如何使WebSecurity.Login使用用戶名或電子郵件登錄?
- 17. CakePHP登錄用戶名或電子郵件使用身份驗證組件
- 18. CakePHP使用身份驗證組件登錄用戶名和電子郵件
- 19. 使用電子郵件和密碼進行改造登錄
- 20. Android Firebase使用電子郵件和密碼登錄
- 21. 登錄CakePHP中使用電子郵件和密碼2.1
- 22. 使用電子郵件ID和密碼登錄
- 23. 使用Firebase的用戶名簡單登錄(電子郵件/密碼)
- 24. 使用C#簽名電子郵件
- 25. ASP.NET登錄控件,用電子郵件登錄但電子郵件不是用戶名(如何)?
- 26. 如何加密Node-RED電子郵件登錄?
- 27. 使用多個證書籤署證書
- 28. 煤層。使用電子郵件或用戶名登錄
- 29. 使用用戶名或電子郵件設計登錄
- 30. CakePHP:允許使用用戶名或電子郵件登錄
爲什麼要在第一次簽名加密操作後簽署此電子郵件? –
看看這個主題:https://crypto.stackexchange.com/questions/5458/should-we-sign-then-encrypt-or-encrypt-then-sign – bschau
謝謝,我知道這個線程,這就是爲什麼我問,因爲在這個線程中,有人在實踐中說*兩者都不夠*,但他沒有給出任何解釋(我認爲沒有)=>查看我的答案 –