如果我直接连接到另一台计算机,我会证明我的IP。但是,如果我想在纸上收到一条证明某人IP的消息呢?
例如,客户与Google联系以获取JSON网络签名,将其打印在纸上,将文件提供给我,我可以验证包含其IP的邮件的签名,而无需连接到客户端(或谷歌)通过TCP。
是否有可能采用更简单或更好的方案?
答案 0 :(得分:0)
如果您使用加密,请考虑使用HMAC。如果没有,那么简单的哈希或随机数对于平凡的使用是好的,只要它在给定的时间段内是唯一的然后到期。无论哪种方式,您都可以跨两个传输发送生成的值,以便它们可以相互匹配。优选地,服务器应该生成值以确保其真实性,例如:
"您好TCP客户端,通过其他传输向我发送XXX和您的IP"。
"您好传输客户端,我看到您发送了我的值XXX和IP YYY,我有一个匹配的TCP客户端"。
另请注意,如果您的TCP客户端位于路由器后面,另一方将会看到您的路由器的公共IP,而不是您的客户端在路由器后面的私有IP。因此,您的客户端必须发送路由器的IP,也可能也发送其私有IP。取决于您的实际需求。
但是,我并不真正看到验证IP的必要性。只是处理路由器的情况,更不用说试图避免IP欺骗,使它几乎不值得做。只需拥有经过身份验证的令牌就足够了。更新:如果这不是您想要的,那么您必须将IP包含在加密/哈希中。客户端获取一些种子值(有时称为 nonce 值)及其IP并将它们一起散列,然后将结果提供给另一方。该方使用相同的种子/随机数值以及它想要验证的IP并将它们一起散列并查看它是否会产生相同的结果。如果是,则IP匹配。