编辑:
注:我用一个更贴切的问题完全取代了原来的问题,这个问题对这个问题不是很好的陈述(见评论)。
我有记录,其中包括用户的位置和他们的ID (这是一个大数据流)。我需要提供第三方用户的位置。(流还根据流中的其他条件进行过滤,甚至可能与其他所有包含用户it的数据源合并--如果这里和现在对它感兴趣的话)。
我不能将用户ID传递给第三方。
输出的记录必须使第三方能够在一段时间内建立用户的“路线”和/或时变位置图(比如一天,但比一小时长得多)。为此,他们必须能够识别属于同一用户的记录。因此,必须传递一些密钥。
构成问题核心的一项重要限制是:
为了进行讨论,让我定义“匿名用户ID”,该属性是从输入记录的属性派生出来的,因此它是(几乎)唯一可从用户ID派生的属性(例如,散列盐化用户ID或固定的随机映射),并放置在输出流的记录中,以便能够识别属于同一用户的记录。
法律法规和内部规则是这样的,我必须确保“匿名用户ID”的复制时间不超过一个小时。(作为一个示例:如果我碰巧将用户ID的咸散列用作“匿名用户ID”,则必须每小时使用一次新的盐分。)
(注:如上文所述,第三方必须在更长的时间内向用户映射位置。他们仍然不关心用户的身份,但是他们必须知道它始终是同一个用户。)
问题是:有没有办法做到这一点?如果是,怎么做?
发布于 2016-04-06 04:27:43
要重新声明:您的系统有指定ID的用户。您将实时接收与这些用户in关联的定期位置数据。
您还有一个(或多个)客户端希望分析您的用户位置。每个客户端都需要接收每个映射到用户ID的随机标记,并且令牌可以引用特定的ID,最长时间不超过某个时间段,比如24小时。客户端需要位置数据。客户端不需要真正的用户ID。
并且您有一项策略,禁止您在内部保留与实际用户ID相关联的位置。
以下是一个可能的解决方案:
首先,从每个客户端获取一个公钥。在每一天开始时,每个客户端都会生成一个随机盐,并将其存储在RAM中,并将其保密。在收到新的用户ID和位置对后,将客户端的salt添加到ID中,然后计算哈希。散列后,立即使用客户端的公钥加密哈希,应用随机填充,然后立即丢弃哈希。加密的盐度散列现在是一个特定于客户端的加密令牌。只保留客户端ID、公钥ID、加密令牌和位置数据;将数据放在适当的消息队列中。对将接收数据的每个客户端重复令牌化过程;在对每个客户端的用户ID进行标记之后,丢弃真实的用户ID。然后,您可以将带有位置数据的加密令牌发送到每个接收客户端。每天一次,摧毁每个客户的安全盐并生成一个新的盐。
通过销毁中间哈希和用户ID,您可以删除将位置记录绑定到实际用户ID的唯一链接。您可以通过销毁它们的salt来控制客户端关联记录的能力。
https://security.stackexchange.com/questions/119433
复制相似问题