故意缓慢解密

信息安全 解密 表现
2021-09-06 23:27:02

我们需要将消息作者的用户 ID 存储在数据库中。

应该可以在几分钟内找到有问题的消息的作者,即在警察的要求下,但应该很难找到作者的所有消息(因为我们没有法律义务(还)这样做,我们想要保存我们用户的隐私)。所以我们需要一种允许我们解密但需要大量时间的加密。

因此,我正在考虑使用消息作为密钥来加密消息的关联用户 ID - 这样攻击者可能需要大量 CPU 时间来解密数百万条消息的用户 ID 以创建索引。如果我们可以实现一个非常耗时的解密方法,这将更加困难有这样的吗?

背景: 奥地利政府将出台一项法律,规定所有公共论坛、新闻网站评论、聊天、社交媒体等的提供者必须通过使用护照等文件验证其真实身份来注册其所有用户。警察和情报机构将被允许访问此(查找消息的作者)-“打击在线骚扰”。这让我们担心,一旦收集了所有这些数据,警察和情报机构将要求访问整个数据——但反过来。不是通过一条消息来对抗骚扰,而是将用户过去几年在所有媒体平台上所做的所有贡献汇总在一起。获得准确的政治概况 每个人(历史告诉我们,这始终是应用法西斯主义的第一步)。

2个回答

您需要的是一个慢速 KDF,它处理存储或记忆的密码并将其转换为用于解密的密钥。只要密钥导出需要很长时间,实际的解密过程就可以快速进行。有许多算法可以做到这一点,例如 PBKDF2、Argon2 和 scrypt。如果每个存储的记录都包含自己的密码,必须首先通过强 KDF 才能解密记录,那么您将能够强制执行可配置的访问延迟。

但是,我强烈建议您联系律师,而不是尝试自己实施技术解决方案。可能有更好的合法替代方案可以让您摆脱不存储任何数据的情况。永远不要假设你自己对法律的解释是唯一可能的解释。

编辑:实际上,坏主意(见评论)。不要听那些不是密码学的人谈论密码学,尤其是我!

当你想要一种以一种方式做事很快但以另一种方式做事很慢的加密货币时,你可能希望以某种方式进行散列

这个怎么样:

对于每个用户,存储一个散列消息 ID 列表。然后,如果您想知道谁发送了特定消息,您可以散列消息 ID(快速),然后搜索消息 ID/用户 ID 对列表以找出它属于谁(对于合理数量的消息也非常快,如果这不是你经常做的事情,那当然没问题)。另一方面,如果有人想找到某个特定人发送的所有消息,他们必须检索与其用户 ID 相关联的所有散列按摩 ID,然后单独破坏每个散列,这对于一个体面的加密散列算法来说将需要确实很长一段时间。