0

您好,我正在开发一个应用程序,该应用程序将在本地网络中的对等方之间交换属于它们的唯一组和消息,而无需任何服务器。每个对等点都应该能够创建新消息并将其与现有或新组相关联。由于消息和组应该是唯一的,我实现了一个哈希算法,从静态值(如内容、创建日期、作者、标题(消息不可编辑))创建这些消息的 ID。当消息/组发送到另一台设备时,我正在使用的 ID 帮助我检查完整性和可能的​​重复。但是由于没有服务器来存储帐户并检查每个对等点的可信度,我想不出一种方法来实现一种机制来检查给定消息是否来自特定作者的真实消息。目前任何人都可以发布添加虚假作者姓名的消息,这是我想要解决的问题。我怎样才能做到这一点?

PS。我的应用程序可能类似于 Twitter 的工作方式,但它没有帐户,也没有存储它们的主服务器。它是在 android 上开发的,它不能使用互联网,因为它使用 wifi 连接到仅限 LAN 的路由器,我不希望用户必须使用 3G/edge。

可能的解决方案:

  1. 使用手机的特殊 ID (IMEI),但我如何以编程方式获得它,它真的是独一无二的吗?

  2. 使用手机的 MAC 地址(实际上是蓝牙和 WiFi MAC 地址的散列连接),每部手机都是唯一的吗?这个和上面的问题是真正的作者可能会随着时间的推移改变他的手机。

  3. 如果真正的作者以前用他的谷歌帐户登录过,它是否存储在手机的内存中,我可以在离线模式下以编程方式获取这些信息吗?

4

2 回答 2

1

使用数字证书对消息进行签名也是一种解决方案。尽管它的使用可能会引发更多问题,例如“谁是发行人? ”。好吧,如果消息的真实性仅在您自己的应用程序中很重要,它可能是您创建的“实体”。

如果你还没有考虑的话。

于 2011-12-25T23:45:12.263 回答
1

我认为您无法对假名做任何事情,但在大多数情况下,假名是可以的——您要防止一个用户冒充另一个用户。数字签名将是可行的方法——确保每个人都有一个随机生成的秘密,可以用来签署他们的所有通信。

对于基于移动的通信,您可以更进一步,让人们使用短距离通信来证明他们认识另一个人。例如,您的应用程序可以与另一部手机进行蓝牙交换,这将修改每个配置文件以显示“受信任的人 X 证明他们遇到了不受信任的人 Y”。由于这需要双方的同意,如果一方是可信的,另一方也可能是可信的。短距离通信将确保双方已经见面(并且可能正在证明一个人就像他们的头像)。

您也可以对 Gravatar 做类似的事情 - 使用名称和密码的哈希值从各种头像中进行选择(或者,使用非常长的哈希值生成随机图像)。这样,在同一个句柄下发帖的两个人将有非常不同的头像,用户社区很容易将他们区分开来。

于 2011-12-26T10:58:57.910 回答