头脑 Storm 请求
我需要一个关于具有一些不寻常要求的身份验证算法的想法。
该算法将用于验证消息的发件人是否合法。
限制:
- “传输层”是电子邮件
- 发送者('Alice')是一个人
- Alice 只能使用网络浏览器和互联网访问(包括网络邮件帐户)作为她的工具;因此她不能做非常复杂的计算
- 接收方(“Bob”)是一台无法直接访问互联网的计算机。
- Bob 有一个定期检查的电子邮件帐户。
- Bob 可以发送电子邮件。
- 不向第三方发送信息:Alice 和 Bob 不能发送任何带外信息。读取一些公开可用的信息(例如来自时间服务器的时间)是可以的。
假设:
- Alice 可以在本地访问一些信息:也许她带着笔记本,或者我们甚至可以假设她的网络邮件帐户是防黑客的,因此可以存储敏感信息那里。
- Alice 和 Bob 可以在身份验证之前直接交换敏感信息(私钥?)
非目标:
- 不需要对消息的实际负载进行编码。
- 速度/延迟不是(大)问题
帮助您入门的一些想法:
普通的旧硬编码密码。
问题:- 暴力攻击(不太可能)
- 如果以明文形式进行通信,则可能发生窃听,然后可能发生重放攻击
基于当前日期/时间的简单算法
示例:Alice 添加当前日期、小时和分钟,并将结果作为身份验证 token 发送,Bob 可以验证。假设对时间服务器的只读访问不违反规则 #7(无第 3 方)。
问题:- 通过模糊实现安全:该算法之所以安全,只是因为它不是公开可用的(好吧,现在是......哎呀!)
某种质询-响应机制 - Alice 发送身份验证请求,Bob 回复质询,Alice 发送预期的响应和实际的有效载荷。
机制的详情为何?我不知道:)
您能想到什么?我希望看到一些有创意的答案 ;-)
编辑:
也许举个例子会让规则 #3 更清楚:让我们假设 Alice 使用专有的闭源设备 <cough>
iPhone <cough>
访问互联网,或者她正站在公共(public)互联网亭前。
最佳答案
我对人类友好的低技术挑战-响应机制的想法:
- Bob 每次收到有效消息时都会更改挑战(例如,他对当前时间进行加盐哈希)
- 每条发送给 Bob 的无效消息都会让他回复当前的质询,因此 Alice 可以通过发送空邮件来查询他
- 一旦 Alice 知道挑战,她就会转到 https://www.pwdhash.com/
- 在“站点地址”中,她输入了当前的挑战
- 在“站点密码”中,她输入了她的个人密码(Bob 知道)
- PwdHash 生成“哈希密码”
- Alice 给 Bob 写了一条消息,使用刚刚创建的散列作为主题
- Bob收到消息,根据PwdHash算法对当前challenge和Alice的密码进行哈希运算,看自己的结果是否与消息主题匹配
- 如果是,Bob 接受消息并发送包含新挑战的确认(基本上这是第 1 步)
优点:
- 便宜又简单,甚至可以在相当现代的移动设备上运行
- 人性化(无需数学,易于内存,网络上很容易获得先决条件)
- 不可能进行重放攻击
- 网络上没有明文密码
- 不会用完密码(就像一次一密一样)
- 没有固有的时间限制(就像 RSA token 一样)
- PwdHash 网站可以保存在磁盘上并在本地调用,这里没有第三方依赖
缺点:
- Bob 和 Alice 必须预先共享一个 key (Alice 的密码),因此 Alice 不能在场外更改她的密码
- 泄露 Alice 的密码是最简单的攻击媒介(但几乎所有受密码保护的系统都是这种情况)
请注意,PwdHash 是一种开放的哈希算法,Bob 可以很容易地实现它。 PwdHash 网站在没有回发的情况下工作,一切都只是客户端 JavaScript,没有留下任何痕迹。
关于algorithm - 穷人的认证算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569183/