如何证明我的 IP 地址?

Posted

技术标签:

【中文标题】如何证明我的 IP 地址?【英文标题】:How can I proof my IP address? 【发布时间】:2015-05-12 11:33:05 【问题描述】:

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

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

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

【问题讨论】:

验证IP地址的用例是什么? 【参考方案1】:

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

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

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

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

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

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

【讨论】:

使用你的解决方案我还需要连接到 TCP 客户端吗?

以上是关于如何证明我的 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

DHCP(动态主机获取IP地址)

GCE 实例 IP 地址

如何让别人通过ip地址访问我的电脑

如何使用C#语言编写程序通过ip地址找出端口号

浅谈IP地址-1

如何获取我的 IP 地址? [复制]