首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可怜人的认证算法?

可怜人的认证算法?
EN

Stack Overflow用户
提问于 2009-02-20 11:17:31
回答 13查看 2.4K关注 0票数 10

集思广益请求

我需要一个有一些特殊要求的认证算法的想法。

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

限制:

  1. “传输层”是电子邮件。
    • 发送者(“爱丽丝”)是一个人。
    • 爱丽丝只能使用网络浏览器和互联网访问(包括一个网络邮件帐户)作为她的工具,因此她不能做非常复杂的计算。
    • 接收者(“Bob”)是一台没有从互联网直接访问的计算机。
    • Bob有一个定期检查的电子邮件帐户。
    • 鲍勃可以发电子邮件。
    • 不向第三方发送信息:爱丽斯和鲍勃不能发送任何带外信息。读取一些公开可用的信息(例如从时间服务器读取的时间)是可以的。

假设:

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

非目标:

  • 没有必要对消息的实际有效负载进行编码。
  • 速度/延迟不是大问题。

一些让你开始的想法:

  1. 普通的旧硬编码密码。 问题:
代码语言:javascript
运行
复制
- brute force attack (not likely)
- eavesdroping possible if the communication is done in clear text, then replay attacks possible

  1. 基于当前日期/时间的简单算法 例: Alice添加当前日期、小时和分钟,并将结果作为auth令牌发送,Bob可以对其进行验证。让我们假设对时间服务器的只读访问不会违反规则#7 (没有第三方)。 问题
代码语言:javascript
运行
复制
- _security through obscurity_: the algorithm is somewhat safe only because it is not publicly available (well, it is now... oops!)

  1. 某种类型的挑战--响应机制-- Alice发送身份验证请求,Bob回答一个问题,Alice发送预期的响应和实际的有效负载。 这个机制的细节是什么?我不知道:)

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

编辑:

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

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-02-20 14:37:48

我对人类友好的低科技挑战应对机制的想法是:

  1. Bob每次收到有效消息时都会更改该挑战(例如,他对当前时间做了一个咸散列)
  2. 发送给Bob的每一条无效消息都会使他回复当前的挑战,因此Alice可以通过发送空邮件来查询他。
  3. 一旦爱丽丝知道了挑战,她就会去https://www.pwdhash.com/
    • 在“网站地址”中,她加入了当前的挑战。
    • 在“站点密码”中,她输入她的个人密码(鲍勃知道)。
    • PwdHash生成一个“哈希密码”

  1. Alice使用刚创建的哈希作为主题向Bob写入消息。
  2. Bob接收消息,根据PwdHash算法散列当前的挑战和爱丽丝的密码,并查看其结果是否与消息主题匹配
  3. 如果是这样,Bob接受消息并发出包含新挑战的确认(实质上这是步骤1)。

优势:

  • 便宜和简单,甚至可以在合理的现代移动设备上运行。
  • 友好的人类(没有数学,容易记住,先决条件很容易在网上获得)
  • 不可能重放攻击
  • 线路上没有明文密码
  • 不会耗尽密码(就像一次性pads一样)
  • 没有固有的时间限制(就像RSA令牌一样)
  • PwdHash网站可以保存在磁盘上并在本地调用,这里不需要第三方依赖。

缺点:

  • 鲍勃和爱丽丝必须预先共享一个密钥(爱丽丝的密码),因此爱丽丝不能在场外更改她的密码。
  • 牺牲Alice的密码是最简单的攻击矢量(但几乎所有的密码保护系统都是这样的)

注意,PwdHash是一个开放的散列算法,Bob可以很容易地实现它。PwdHash网站的工作没有回发,一切都是客户端JavaScript,没有留下任何痕迹。

票数 11
EN

Stack Overflow用户

发布于 2009-02-20 11:27:45

我可以想到两种选择:

  • 发一张带有一次性密码的卡片(事实之前的通讯,笔记本)
  • 产生密码的电子设备(避免重播攻击)
票数 6
EN

Stack Overflow用户

发布于 2009-02-20 12:36:40

除了崔布的回答,您还可以使用一次性密码,而不是SecurID。详细信息请参见"完美纸质密码“。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/569183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档