gpt4 book ai didi

java - 点对点聊天安全选项?

转载 作者:行者123 更新时间:2023-11-30 07:23:58 25 4
gpt4 key购买 nike

好的,为了好玩,我正在用 Java 编写一个信使程序。好玩吧? :)

我想创建一个在两台 PC 之间工作的 Messenger,它不需要咨询任何其他人,你只需输入你想与之聊天的 IP。稍后我会实现一个用户名系统,您可以在其中联系服务器以找出他们的 IP。

我让 AES 和 RSA 完美地工作,然后我意识到当你进行公私钥交换时,中间人攻击是可能的。这有点让我生气......

除了使用 CA 或让服务器交换用户名和/或公私钥信息之外,对于中间人攻击是否有任何解决方案?

有没有这样的程序我可以看看?

谢谢大家!

请注意:目标是在没有服务器的情况下进行安全的点对点通信。也没有像中间人这样的漏洞。

最佳答案

基本上你要求太多了。如果正确使用公钥,它们是安全的。如果你做一个听起来不安全的“公私钥交换”。私钥永远不会离开生成它们的主机。

公钥是公开的,只是字节。是一对数字!!没有其他信息。所以这里你需要选择:

  1. 拥有可信赖的第三方,该第三方拥有将公钥与身份相关联的共享服务器。这就是所谓的 CA :)
  2. 以其他安全方式交换公钥。示例:在一个人的 Facebook 个人资料上发帖(使用 HTTPS 浏览!)、会见其他人等。

您可能想了解 PGP 和 Web Of Trust 的工作原理。使用 WOT,您可以以社交网络的方式进行相当不错的安全 P2P 聊天。基本上,您仍然无法通过输入 IP 地址来首次加入 P2P 聊天,但是在您完成初始工作后,您可以获得一个不错的结果。

首先,获取某人的公钥:会见他/她。到那时,您可以验证该方,他也可以在没有攻击可能性的情况下验证您。

第 2 阶段包括建立信任链。我将用社交网络术语对此进行解释。你是甲方,你认识了乙方,你们认识。 B 认识 C、D、E,后来你遇到了 B 不认识的 F。

问 B 谁是他的 friend (并得到他们的公钥),你就认识了 C、D 和 E,到时候你就可以联系他们了。告诉 B 你认识 F,他可以联系他们。

你可能想告诉 F 你通过 A 知道的 C、D 和 E。这是非常敏感的,因为如果不加区别地重复这个过程,坏人很容易进入网络。如果您将信任仅限于“ friend 的 friend ”或达到一定程度的间接知识,您就可以平衡安全性。

我这样提议你是因为你说你这样做是为了好玩,而不是在商业场景中!!

关于java - 点对点聊天安全选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11692784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com