Public-Key
您可以使用 MITM 劫持用於基於密鑰簽名的公鑰嗎?
在閱讀StackOverflow 上答案的一部分“驗證發件人身份”之後,我想知道以下是否可行:
根據第二部分,如果我坐在 Alice 和 Bob 之間:
- 難道我不能等愛麗絲把她的公鑰發給鮑勃。
- 我阻止並丟棄該密鑰,而是發送我自己的公鑰。
- Bob 然後認為這個公鑰來自 Alice。
- 我現在發送任何我想要的消息,用我自己的私鑰簽名。
- Bob 使用我的公鑰“驗證”了這些消息,並認為所有這些消息都來自 Alice。
這種情況可能嗎?
是的,這是標準的 MITM 攻擊。這就是為什麼我們通常使用某種帶外方法來驗證公鑰。例如,在 OpenPGP 中,我們可以使用來自受信任方的密鑰簽名或親自驗證,而在 TLS 中,我們使用證書頒發機構。對於 SSH 主機密鑰,我們可以在受信任的網站上或使用 DNSSEC 驗證指紋。有更多方法可以做同樣的事情:你可以從 GitHub 下載某人的 SSH 密鑰,還有像 Keybase 這樣的網站可以將多個帳戶以加密方式綁定到一組憑據,此外還有其他各種技術。
最終,為了信任消息的完整性,您必須以某種方式獨立驗證公鑰。