我正在开发一个需要ECDH密钥交换的项目。我试图了解如何防止MITM攻击。我可以签署公钥并发送签名以及公钥传输,以确保密钥没有被篡改,但这并不能阻止MITM攻击做同样的事情。我知道密钥交换必须由第三方以某种方式进行验证,但我很难理解第三方可以作为解决方案,假设有人可以进行MITM攻击。为什么他们也不能在第三方验证中做MITM呢?在没有双方预先知道的情况下,真的有一种完全消除所有可能的MITM攻击的失败证明方式吗?
答案 0 :(得分:1)
您需要一个¹可信赖的第三方来签署这两个密钥。
如果没有关于预期合作伙伴身份的任何知识或断言,就没有办法将他与其他任何人区别开来。
¹一个或多个 ²Bob
答案 1 :(得分:0)
在PKI系统中,“认证机构”是基础设施的重要组成部分。认证机构签署公钥和识别信息,以便您知道相应的私人真正属于所声称的身份。对于EC密钥,这与RSA一样。
顺便说一下,I've looked for CAs that issue EC certificates,显然它们没有实际用途。
大多数人为其认证机构获取证书,作为其操作系统或安全应用程序的一部分。他们隐含地信任这些证书。但是,这里存在一些危险。
首先,大多数用户没有有效的方法来验证这些证书的完整性。这是一个非常难的问题,因为从根本上说,您必须拥有一个100%可靠的通道,用于攻击者无法篡改的权限和用户之间的验证通道。当用户下载带有根证书集合的新浏览器时,他无法知道该软件在传输过程中未被篡改,甚至无法在集合中使用伪造的CA证书构建。
即使证书收集是作为提供者的预期完整收到的,也存在一些问题,这些问题是关于流行软件中默认包含的许多证书颁发机构的完整性。例如,一些人指出,与恐怖主义赞助有关联的州的电信公司将其证书包含在流行的浏览器中。任何受信任的机构都可以为任何域名颁发证书,浏览器将毫无疑问地接受它。
简而言之,不,没有首先在安全通道上共享某些信息,无法建立安全通道。 PKI和非对称加密技术的好处是,安全通道上的一个交换(接收受信任机构的证书)允许与许多方建立安全通道。但你必须以某种方式引导系统。
答案 2 :(得分:0)
听起来你正在走自己的加密协议的道路。不要那样做。这是个坏主意。它会导致不安全的系统。
相反,请使用SSL或TLS。它旨在处理设计这种加密协议时的微妙问题 - 并且已经过很好的审查。您需要一种方法来验证其他端点的证书。您可以使用证书颁发机构,或者在某些情况下,对您希望与之交谈的实体的公钥进行硬编码可能是可行的。
如果您在Crypto堆栈交换中询问,您可能会得到更好的答案。