2011-09-02 141 views
1

我正在开发一个需要ECDH密钥交换的项目。我想了解如何防止MITM攻击。我可以签署公钥并发送签名以及公钥传输,以确保密钥没有被篡改,但这并不能阻止MITM攻击只是做同样的事情。我知道密钥交换必须由第三方以某种方式进行验证,但我很难理解假设有人可以进行MITM攻击,第三方可以成为解决方案。为什么他们不能仅仅通过第三方验证来做MITM呢?如果没有双方预先知道的情况,是否真的能够完全消除所有可能的MITM攻击?保护ECDH免受MITM攻击

回答

1

您需要一位¹值得信赖的第三方签署两个密钥。

如果没有任何关于目标伴侣身份的知识或断言,根本无法将他与其他人区分开来。

¹一个或多个 ²鲍勃

+0

没错,但是为什么在第三方签名过程之间不能有MITM? – hobeau

+0

@hobeau呃,你需要一些带外机制来创造信任,无论是托伦特和鲍勃之间还是爱丽丝和鲍勃之间。没有任何办法可以获得身份(或信任)。 – phihag

0

在PKI系统中, “认证机构” 是基础设施的重要组成部分。认证机构签署公钥和标识信息,以便您知道相应的私钥确实属于声称的身份。对于EC密钥,这与RSA一样。

顺便说一句,I've looked for CAs that issue EC certificates,,显然他们没有实际使用。

大多数人获得其认证机构的证书作为其操作系统或安全应用程序的一部分。他们隐含地信任这些证书。虽然这里有几个危险。

首先,大多数用户没有一种有效的方法来验证这些证书的完整性。这是一个相当困难的问题,因为从根本上讲,您必须拥有一个100%可信赖的渠道,用于验证授权和攻击者无法篡改的用户之间的通道。当用户使用一系列根证书下载新浏览器时,他无法知道该软件在传输过程中是否被篡改,甚至无法在集合中使用伪造的CA证书进行构建。

即使收到的证书收集完整无误地作为提供者的意图,也有人对流行软件默认包含的许多认证机构的完整性提出了质疑。例如,有人指出,与恐怖主义有关的国家的电信公司将其证书纳入流行的浏览器中。任何可信任的权威机构都可以为任何域名颁发证书,并且浏览器将毫无疑问地接受它。

总之,不,没有办法建立一个安全通道,而不先在安全通道上共享一些信息。 PKI和非对称加密技术的好处是,在安全通道(接收可信机构证书)上交换一个一个允许与许多各方建立安全通道。但是你必须以某种方式引导系统。

0

这听起来像你正在滚动你自己的加密协议的路径。不要这样做。这是一个坏主意。它导致不安全的系统。

而是使用SSL或TLS。这是为了解决设计这种加密协议中的微妙问题而设计的 - 并且它已经过严格审查。您需要一种方法来验证另一端点的证书。您可以使用证书颁发机构,或者在某些情况下,对您期望与之交谈的实体的公钥进行硬编码可能是可行的。

如果您询问Crypto堆栈交换,您可能会得到更好的答案。

+0

请记住,以前发现了SSL和TLS版本中的许多漏洞,并且可能会有更多的漏洞我们不知道。 –

相关问题