穷人的认证算法?

Cri*_*scu 10 language-agnostic authentication algorithm

头脑风暴要求

我需要一个具有一些不寻常要求的认证算法的想法.

该算法将用于验证消息的发送者是否合法.

限制:

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

假设:

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

非目标:

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

一些让你入门的想法:

  1. 简单的旧硬编码密码.
    问题:

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

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

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

编辑:

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

Tom*_*lak 11

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

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

好处:

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

缺点:

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

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


ang*_*son 6

我能想到的两个选择:

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


lac*_*cop 6

除了Treb的答案,您可以使用可以打印的一次性密码而不是SecurID.有关详细信息,请参阅" 完美纸张密码 ".


Joh*_*han 5

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

Firefox至少有一个扩展名允许在Webmail中使用GPG.