当前位置:  开发笔记 > 编程语言 > 正文

穷人的认证算法?

如何解决《穷人的认证算法?》经验,为你挑选了4个好方法。

头脑风暴要求

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

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

限制:

    "传输层"是电子邮件

    发送者(' Alice ')是一个人

    Alice只能访问网络浏览器和互联网访问(包括网络邮件帐户)作为她的工具; 因此她无法进行非常复杂的计算

    接收器(' Bob ')是一台无法互联网直接访问的计算机.

    Bob有一个定期检查的电子邮件帐户.

    鲍勃可以发送电子邮件

    没有向第三方发送信息:AliceBob无法发送任何带外信息.阅读一些公开信息(例如来自时间服务器的时间)是可以的.

假设:

Alice可以在本地访问一些信息:也许她带有笔记本,或者我们甚至可以认为她的网络邮件帐户是防黑客的,因此敏感信息可以存储在那里.

AliceBob可以在验证之前直接交换敏感信息(私钥?)

非目标:

不需要编码消息的实际有效载荷.

速度/延迟不是(大)问题

一些让你入门的想法:

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

    蛮力攻击(不太可能)

    如果通信以明文形式进行,则可以进行窃听,然后重放可能的攻击

    基于当前日期/时间的简单算法
    示例:Alice添加当前日期,小时和分钟,并将结果作为身份验证令牌发送,Bob可以验证.我们假设对时间服务器的只读访问不违反规则#7(没有第三方).
    问题:

    通过默默无闻的安全性:算法有点安全,只是因为它不公开(嗯,它现在......哎呀!)

    某种挑战 - 响应机制 - Alice发送认证请求,Bob回复挑战,Alice发送预期响应和实际有效负载.
    该机制的细节是什么?我不知道 :)

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

编辑:

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



1> Tomalak..:

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

    Bob每次收到有效消息时都会更改挑战(例如,他制作当前时间的盐渍哈希值)

    发送给Bob的每条无效消息都会让他回复当前的挑战,因此Alice可以通过发送空邮件来查询他

    一旦Alice知道挑战,她就会去https://www.pwdhash.com/

    在"网站地址"中她输入了当前的挑战

    在"网站密码"中,她输入了她的个人密码(Bob知道)

    PwdHash生成"哈希密码"

    Alice使用刚创建的哈希作为主题向Bob写一条消息

    Bob根据PwdHash算法接收消息,散列当前挑战和Alice的密码,并查看他的结果是否与消息主题匹配

    如果是这样,Bob接受该消息并发出包含新挑战的确认(基本上这是第1步)

好处:

便宜又简单,甚至可以在合理的现代移动设备上运行

人性化(没有数学,容易记住,网上很容易获得先决条件)

没有重播攻击可能

电线没有明文密码

不会用完密码(就像一次性填充一样)

没有固有的时间限制(比如RSA令牌)

PwdHash网站可以保存在磁盘上并在本地调用,此处没有第三方依赖

缺点:

Bob和Alice必须预先共享密钥(Alice的密码),因此Alice无法在异地更改密码

妥协Alice的密码是最简单的攻击媒介(但几乎所有受密码保护的系统都是如此)

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



2> angry person..:

我能想到的两个选择:

发行一次性密码卡(事先通信,笔记本)

产生密码的电子设备(避免重放攻击)



3> lacop..:

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



4> Johan..:

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

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

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有