我瞭解數字簽名如何實現不可抵賴性和完整性,但這是我尚未掌握的身份驗證。使用數字簽名對服務器進行身份驗證
我正在開發C#中的客戶端 - 服務器應用程序,應該能夠使用數字證書和數字簽名進行身份驗證。我知道如何檢查Signature(使用SignedCms.CheckSignature())的有效性和完整性,但是如何驗證涉及的任何部分?
例如:
- 客戶端要求服務器的數字簽名,
- 客戶端接收簽名和驗證它,
- 如果驗證成功,請繼續。
客戶端可能是中間人攻擊的受害者,並在步驟2中接收到有效簽名。驗證會成功,但客戶端不會與正確的服務器通話。
我錯過了什麼?
如果什麼中間人塊簽名來自服務器,並且向客戶端發送一個全新的數字簽名,由可信任的CA簽發完全有效的證書? – 2011-01-13 00:04:45
當客戶端試圖使用預先存在的公鑰來驗證sig時,它會失敗。如果客戶接受一個新的簽名,那麼當然,所有的賭注都是關閉的,所以在您使用信任鏈接受它之前,您必須確保一個證書是可信的。 – 2011-01-13 00:30:28