穷人的认证算法?

时间:2009-02-20 11:17:31

标签: algorithm language-agnostic authentication

头脑风暴要求

我需要一个具有一些不寻常要求的身份验证算法的想法。

该算法将用于验证邮件的发件人是否合法。

限制:

  1. “传输层”是电子邮件
    • 发件人(' Alice ')是一个人
    • Alice 只能访问网络浏览器和互联网访问权限(包括网络邮件帐户)作为她的工具;因此她无法进行非常复杂的计算
    • 接收方(' Bob ')是无法从互联网直接访问的计算机。
    • Bob 有一个定期检查的电子邮件帐户。
    • Bob 可以发送电子邮件。
    • 没有向第三方发送信息: Alice Bob 无法发送任何带外信息。阅读一些公开信息(例如来自时间服务器的时间)是可以的。
  2. 假设:

    • Alice 可以在本地访问部分信息:也许她带有笔记本,或者我们甚至可以认为她的网络邮件帐户是防黑客的,因此可以存储敏感信息那里。
    • Alice Bob 可以在身份验证之前直接交换敏感信息(私钥?)

    非目标:

    • 不需要编码消息的实际有效负载。
    • 速度/延迟不是(大)问题

    一些让你入门的想法:

    1. 普通的旧硬编码密码。
      问题

      • 暴力攻击(不太可能)
      • 如果通信以明文形式进行,则可能进行窃听,然后重播可能的攻击
    2. 基于当前日期/时间的简单算法
      示例: Alice 添加当前日期,小时和分钟,并将结果作为身份验证令牌发送, Bob 可以验证。我们假设对时间服务器的只读访问不违反规则#7(没有第三方) 问题

      • 通过默默无闻的安全性:算法有点安全,因为它不公开(嗯,现在......哎呀!)
    3. 某种挑战 - 响应机制 - Alice 发送身份验证请求, Bob 回复挑战, Alice 发送预期的响应和实际的有效载荷。
      该机制的细节是什么?我不知道:)

    4. 可以想到什么?我希望看到一些有创意的答案; - )

      修改

      也许一个例子可以使规则#3更清晰:让我们假设 Alice 正在使用专有的闭源设备 <cough> iPhone <cough> 访问互联网,或者她站在公共互联网亭前。

13 个答案:

答案 0 :(得分:11)

我对人性化的低技术挑战 - 反应机制的想法:

  1. Bob每次收到有效消息时都会更改挑战(例如,他会对当前时间进行盐渍哈希)
  2. 发送给Bob的每条无效邮件都会让他回复当前的挑战,因此Alice可以通过发送空邮件来查询他
  3. 一旦Alice知道挑战,她就会去https://www.pwdhash.com/
    • 在“网站地址”中输入当前的挑战
    • 在“网站密码”中输入了她的个人密码(Bob知道)
    • PwdHash生成“哈希密码”
  4. Alice使用刚刚创建的主题
  5. 向Bob写了一条消息
  6. Bob收到消息,根据PwdHash算法散列当前挑战和Alice的密码,并查看他的结果是否与消息主题匹配
  7. 如果是,Bob接受该消息,并发出包含新挑战的确认(基本上这是第1步)。
  8. 优点:

    • cheap&amp;简单,甚至可以在合理的现代移动设备上运行
    • 人性化(没有数学,易于记忆,网上可以轻松获得先决条件)
    • 不可能重播攻击
    • 线上没有明文密码
    • 没有用完密码(就像一次性密码那样)
    • 没有固有的时间限制(如RSA令牌)
    • PwdHash网站可以保存在磁盘上并在本地调用,此处没有第三方依赖

    缺点:

    • Bob和Alice必须预先共享密钥(Alice的密码),因此Alice无法在异地更改密码
    • 妥协Alice的密码是最简单的攻击媒介(但几乎所有受密码保护的系统都是如此)

    请注意,PwdHash是一种开放的哈希算法,Bob可以轻松实现它。 PwdHash网站没有回发工作,一切都只是客户端JavaScript,没有遗留任何痕迹。

答案 1 :(得分:6)

我能想到的两个选择:

  • 发行一次性密码卡(事先通信,笔记本)
  • 产生密码的电子设备(避免重放攻击)

答案 2 :(得分:6)

除了Treb's answer之外,您还可以使用可以打印的一次性密码而不是SecurID。有关详细信息,请参阅“Perfect Paper Passwords”。

答案 3 :(得分:5)

在建议使用简单的公钥/私钥并签署电子邮件时,我是否遗漏了一些明显的内容?

Firefox至少有一个扩展名允许在网络邮件中使用GPG。

答案 4 :(得分:4)

阐述lassevks answer

在我的公司,我们使用RSA的SecurID令牌进行远程身份验证。

它为您提供一个6位数字,每60秒更改一次作为身份验证令牌,应该您的令牌生成器,服务器是宇宙中唯一知道现在有效的令牌的

作为一种低技术替代方案,一组n(10,20,100 - 在您的具体情况下是合理的)可以给Alice一次性认证码。我会问她一个特定的代码(例如列表中的数字42)。使用此代码后,它将无效以供进一步使用。

修改:有关低技术解决方案的良好实施,请参阅lacop's answer

答案 5 :(得分:2)

如果Alice可以在她的机器上运行代码(例如,使用在某些公共站点上找到的JavaScript,例如:http://www.functions-online.com/en/sha1.html),她可以接收挑战,将其与密码一起哈希,然后发送回来。

答案 6 :(得分:2)

考虑创建一个包含JavaScript算法的网页,可能是下载(因此她可以下载一次并在USB驱动器上随身携带)。

这个想法是她打开页面,检查源代码(所有JavaScript必须是内联的),然后在页面上的文本字段中输入她的密码。 JavaScript会在她输入时将其转换为代码(因此在执行此操作时没有网络流量;如果存在,则可能会在后台运行键盘记录程序。)

拥有代码后,她可以将其复制到某处。

JavaScript可以将当前时间用作种子。将当前时间分成五分钟。大多数情况下,使用当前时间足以解码密码,如果您接近五分钟间隔的开始,请尝试使用前一个。

请参阅此网站以获取示例:https://www.pwdhash.com/

答案 7 :(得分:1)

如果您不打算使用PKI,这是最好的解决方案,请尝试使用像CRAM-MD5这样的质询 - 响应系统(尽管我建议采用不同的摘要算法)。

您的约束使得安全加密系统的实施几乎不可行。你有什么办法可以改变交通工具吗?

答案 8 :(得分:1)

这是另一个建议:

  • Diffie-Hellman key exchange开始,产生一个共享私钥,只有大概是Alice Bob 知道。
  • 只有 Alice Bob 知道的预定义密码。
  • Alice 使用共享密钥加密密码并将其发送给 Bob
  • 现在 Bob 可以看到大概是Alice 真的是 Alice

问题:

  • Diffie-Hellman使用小数字是不安全的。
  • 什么是简单的对称加密算法(用于加密密码)?

答案 9 :(得分:1)

最简单的解决方案是让Bob定期向Alice的邮件帐户发送邮件。当她需要鲍勃的东西时,她必须使用其中一封邮件回复。 Bob可以在邮件中放入一些支票代币(邮件ID,或者必须在邮件的主题或正文中重复的字符串)。

就像许多电子邮件验证方案一样。

缺点:这只能证明攻击者可以访问Alice的邮件帐户,而不是实际上是Alice自己。要解决这个问题,你可以告诉Alice一个密码并使用“JavaScript HTML页面”技巧,这样她就可以使用她的密码对Bob的密钥进行编码。

这将证明她可以访问她的邮件帐户,并且她知道密码。

答案 10 :(得分:0)

我可以想到几种方法:

安装类似于:

的https加密服务
  

http://webnet77.com/cgi-bin/helpers/blowfish.pl

  

http://cybermachine.awardspace.com/encryption.php/

或者您可以将一次性密码与XOR加密一起发布

或者您可以编写一个简单的Java App(如果Java可以在机器中执行),可以通过www加载并提供公钥加密。

答案 11 :(得分:0)

在不交换密码的情况下保护传输中数据的简单方法是三向XOR:

  1. Alice使用自己的密钥创建几个字节。
  2. 她使用这些字节对数据进行XOR运算,使其无法读取。
  3. Alice将加密数据发送给Bob
  4. Bob使用自己的密钥创建几个字节。
  5. 他用这些字节对数据进行异或。
  6. Bob将双重加密数据发送回Alice
  7. Alice再次应用她的XOR模式。现在,数据仅使用Bob的模式进行编码
  8. Alice将数据发送回Bob
  9. Bob现在可以使用自己的模式解码数据

答案 12 :(得分:0)

嗯......这会算作第三方吗?

成立Bob - Charlie的兄弟,可通过HTTPS从互联网访问。要向Bob发送消息,首先必须登录Charlie(通过普通的旧密码),然后Charlie会给她一个一次性令牌。然后她将她的电子邮件连同令牌一起发送给Bob。