头脑风暴要求
我需要一个具有一些不寻常要求的认证算法的想法.
该算法将用于验证消息的发送者是否合法.
"传输层"是电子邮件
发送者(' Alice ')是一个人
Alice只能访问网络浏览器和互联网访问(包括网络邮件帐户)作为她的工具; 因此她无法进行非常复杂的计算
接收器(' Bob ')是一台无法从互联网直接访问的计算机.
Bob有一个定期检查的电子邮件帐户.
鲍勃可以发送电子邮件
没有向第三方发送信息:Alice和Bob无法发送任何带外信息.阅读一些公开信息(例如来自时间服务器的时间)是可以的.
Alice可以在本地访问一些信息:也许她带有笔记本,或者我们甚至可以认为她的网络邮件帐户是防黑客的,因此敏感信息可以存储在那里.
Alice和Bob可以在验证之前直接交换敏感信息(私钥?)
不需要编码消息的实际有效载荷.
速度/延迟不是(大)问题
简单的旧硬编码密码.
问题:
蛮力攻击(不太可能)
如果通信以明文形式进行,则可以进行窃听,然后重放可能的攻击
基于当前日期/时间的简单算法
示例:Alice添加当前日期,小时和分钟,并将结果作为身份验证令牌发送,Bob可以验证.我们假设对时间服务器的只读访问不违反规则#7(没有第三方).
问题:
通过默默无闻的安全性:算法有点安全,只是因为它不公开(嗯,它现在......哎呀!)
某种挑战 - 响应机制 - Alice发送认证请求,Bob回复挑战,Alice发送预期响应和实际有效负载.
该机制的细节是什么?我不知道 :)
有什么可以你想到什么?我希望看到一些有创意的答案;-)
编辑:
也许一个例子可以使规则#3更清晰:让我们假设Alice使用专有的闭源设备
iPhone
访问互联网,或者她站在公共互联网信息亭前.
我对人性化的低技术挑战 - 响应机制的想法:
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,没有遗留任何痕迹.
我能想到的两个选择:
发行一次性密码卡(事先通信,笔记本)
产生密码的电子设备(避免重放攻击)
除了Treb的答案,您可以使用可以打印的一次性密码而不是SecurID.有关详细信息,请参阅" 完美纸张密码 ".
在建议使用简单的公钥/私钥并签署电子邮件时,我是否遗漏了一些明显的内容?
Firefox至少有一个扩展名允许在Webmail中使用GPG.