1

如果我直接连接到另一台计算机,我会证明我的 IP。但是,如果我想在纸上收到证明某人 IP 的消息怎么办?

例如,客户联系 Google 获取 JSON Web 签名,将其打印在纸上,将纸交给我,我可以验证包含其 IP 的消息的签名,而无需通过以下方式连接到客户端(或 Google) TCP。

是否有更简单或更好的方案?

4

1 回答 1

0

如果您使用加密,请考虑使用HMAC。如果不是,那么一个简单的散列或随机数对于微不足道的使用来说是可以的,只要它在给定的时间段内是唯一的然后过期。无论哪种方式,您都可以通过两种传输方式发送生成的值,以便它们可以相互匹配。服务器最好生成值以确保其真实性,例如:

“您好 TCP 客户端,通过其他传输向我发送 XXX 和您的 IP”。

“您好传输客户端,我看到您向我发送了值 XXX 和 IP YYY,我有一个匹配的 TCP 客户端”。

还要记住,如果您的 TCP 客户端位于路由器后面,对方将看到您的路由器的公共 IP,而不是路由器后面的客户端的私有 IP。因此,您的客户端必须发送路由器的 IP,并且可能还要发送其私有 IP。看你的实际需要。

不过,我真的不认为需要验证 IP。仅仅处理路由器的情况,更不用说试图避免 IP 欺骗,几乎不值得这样做。只需拥有经过身份验证的令牌就足够了。

更新:如果这不是您想要的,那么您必须将 IP 作为加密/散列的一部分。客户端获取一些种子值(有时称为nonce值)及其 IP 并将它们全部散列在一起,然后将结果提供给另一方。该方使用相同的种子/随机数值和它想要验证的 IP 并将它们散列在一起,看看它是否得出相同的结果。如果是这样,则 IP 匹配。

于 2015-03-10T21:55:30.810 回答