【问题标题】:How can I prove that some data came from my app?如何证明某些数据来自我的应用程序?
【发布时间】:2012-07-19 19:57:53
【问题描述】:

我有一个分布式应用程序,可以从 Internet 上的特定服务发送和接收数据。当一个节点接收到数据时,有时它需要验证该数据是否与它或另一个节点先前发送的数据相关。该值还需要足够独特,以便我实际上可以期望在 24 小时内永远不会生成相同的值。

在当前的实现中,我一直在使用包含值uuid.uuid1() 的自定义标头。我可以通过将接收到的 uuid 与 uuid.getnode() 进行比较来轻松验证该值是否来自运行的单个节点,但此实现是在我们要求此应用程序应该是多节点之前编写的。

我仍然认为某些 uuid 版本是正确答案,但我似乎无法弄清楚如何验证传入的 uuid 值。

>>> received = uuid.uuid5(uuid.NAMESPACE_URL, 'http://example.org')
>>> received
UUID('c57c6902-3774-5f11-80e5-cf09f92b03ac')

有什么方法可以验证received 是用“http://example.org”生成的吗?

  1. uuid 是正确的方法吗?如果不是,是什么?
  2. 如果是这样,我什至应该在这里使用 uuid5 吗?

【问题讨论】:

  • 为此使用 PKI 有什么问题?
  • 只要你不担心恶意攻击,这听起来不错,否则,正如@IgnacioVazquez-Abrams 提到的,你应该使用某种加密
  • 虽然没有加密,只是签名部分。
  • @IgnacioVazquez-Abrams,证明签名来自您的应用程序(验证应用程序而不是其用户)总是很棘手,因为您必须提供可访问形式的私钥应用程序(也可能是任何掌握它运行的设备的人)。
  • 你想要什么?服务器身份验证、客户端身份验证、对等身份验证,完全不同的东西?

标签: python identity uuid


【解决方案1】:

如果目标纯粹是在您的节点之间创建一个唯一值,您不能只给每个节点一个唯一的名称并将其附加到您正在生成的 uuid 中吗?

我不清楚您是否出于安全原因尝试这样做,或者您只是想在节点之间保证唯一的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 2016-12-23
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2022-01-13
    相关资源
    最近更新 更多