可以以某种方式对姓名和出生日期进行散列以生成安全标识符吗?

信息安全 加密 密码学 哈希 隐私 身份
2021-09-04 16:51:03

我正在开展一个我们打算为发展中国家启动的项目,因此,我希望限制登录和识别所需的信息量,同时仍保持个人隐私和安全。

与团队交谈时,很明显密码是不行的,因为用户可能最终只有在第三方提供访问互联网的机会时才能访问该服务(甚至一年一次或两次)。在那种情况下,记住密码、使用电子邮件或任何类似的东西都行不通。

整个事情是我需要存储一些关于每个用户的数据,我不想知道它是谁的数据。它不是特别敏感的数据,但我正在尝试构建一些尽可能保护隐私的东西。

因此,我想知道如何用他们知道的信息来识别用户,并且不需要付出任何额外的努力去记住。

因此,我们将可用信息缩小到:全名和出生日期(即使出生日期对某些人来说也是个问题)。直观地说,看起来人们无法使用这些数据构建非常安全的东西。name 和 DoB 的一个关键缺陷是,人们可以轻松地遍历“John Smith”的所有组合以及所有可能的出生日期,并找到匹配的哈希值。

因此,我们想到的一个粗略的解决方案是对名称和 DoB 进行哈希处理并用作“用户名”(当然,所有这些都发生在后台)。一些额外的措施是打乱出生日期并在哈希中添加盐。

然后将通过面部识别进行身份验证。这个想法是使用名称和 DoB 的某种组合来加密用户的图片,因此至少数据库管理员不容易访问它。

用户将仅使用他们的姓名、DoB 和图片登录系统,该系统将首先搜索哈希值直到找到匹配项,然后解密相应的图片并比较两张图片以允许登录与否。

总之,用户凭据将类似于:

SHA256(NAME + SCRAMBLED_DOB + SALT) => AES(PICTURE_DATA, (NAME+SCRAMBLED_DOB))

盐也可以添加到图片的加密中,这样,在登录时:

  1. SCRAMBLED_DOB 的所有潜在版本都使用多个盐进行测试,直到找到数据库中包含的哈希
  2. 从步骤 1 中找到的 DoB 中的特定哈希和数字序列用于解密图像
  3. 图像与登录时提交的图像进行比较,然后丢弃

这个过程可能会很长,但取决于多长时间,以隐私的名义可能是可以接受的。

所以,基本上,我想知道的是:

  1. SHA256(NAME + SCRAMBLED_DOB + SALT)考虑到项目的要求,是否足够安全
  2. 有什么更好的加密图片方法的建议吗?
  3. 对这个系统整体有什么建议吗?

提前致谢!

2个回答

如果您不信任在登录阶段提供访问互联网机会的第三方,那么您在任何阶段都不应该信任。他们可以保存输入的任何数据,包括与面部识别相关的数据。他们还可以存储您的用户从您的服务器收到的任何数据。这种滥用的风险很高,因为这样的数据需要花钱。

NAME + SCRAMBLED_DOB + SALT 的暴力破解是微不足道的,因为出生日期的数量非常少。要表示过去 100 年中所有可能的出生日期,只需要 15 位。如果您的数据库中有 1 000 000 人,这意味着只有 20 位。这总共是 35 位。这意味着,您的数据库很容易被暴力破解。您可以使用 Argon2 或类似方法代替 SHA256 来减慢速度。但是蛮力还是太容易了。原因是,可能的秘密不是随机的,它们很容易猜到。

如果有人对解密特定人的数据感兴趣,那就更简单了。这种解密可以立即完成,无需任何暴力破解。

在找到包含在数据库中的散列之前,您的话意味着您将在数据库中存储散列。这使得暴力破解更加容易。攻击者甚至不需要通过姓名搜索不同的出生日期。相反,攻击者只会获取您存储的哈希值,然后对其进行迭代,并且很容易找到使用了哪些加密数据的哈希值。

你应该关心什么?有很多点。这里有一些:

  1. 确保从用户到您的系统的连接是安全的。如果它不安全,迟早会有人或公司滥用它并收集有关您的用户的数据。如果您不向他们解释,您将欺骗用户。即使在许多发展中国家,通过不安全的渠道索取某些类型的信息也是一个法律问题。
  2. 如果通信渠道不安全,任何措施(如加密数据库中的数据)都毫无意义。
  3. 建立可靠的身份验证。发展中国家的许多人都有手机。这就是为什么除了密码之外,还要考虑每条短信发送一次性密码。

从印在塑料芯片上的二维码开始,其中包含 256 位数字。根据 QR 码、姓名和出生日期,您可以计算出哈希码,以便 QR 码可识别。这就是关键。

要登录,用户需要芯片、姓名和出生日期。没有芯片,它是无法破解的。如果你的丈夫/妻子/孩子偷了筹码,游戏结束。如果您丢失了芯片并且黑客找到了它,他们可以尝试猜测名称和 DoB,但由于 QR 码是可识别的,因此很快就会被锁定。

如果您丢失了芯片,则访问权限将永久丢失,或者需要进行一些设置,以便该人可以将他们的护照或其他现实世界 ID 带到受信任的一方以获得新芯片。有明显的风险。

我敢肯定有人会在这里面挖洞:-(