Hac*_*ese 9 security authentication hmac one-time-password
我有一个Web应用程序,我的任务是添加安全登录以增强安全性,类似于Google添加到Google帐户的内容.
用例
基本上,当用户登录时,我们想要检测用户是否先前已授权此计算机.如果计算机未经授权,则向用户发送他们必须输入的一次性密码(通过电子邮件,短信或电话),用户可以选择记住该计算机.在Web应用程序中,我们将跟踪授权设备,允许用户查看他们最后从该设备登录的时间/位置,并在他们选择时取消对任何设备的授权.
我们需要一种非常轻便的解决方案(意思是,不需要客户端软件安装),并且可以与Safari,Chrome,Firefox和IE 7+一起使用(不幸的是).我们将提供x509安全性,提供足够的安全性,但我们仍然需要为不能或不会使用x509的客户提供解决方案.
我的目的是使用cookie存储授权信息(或者,可能使用本地存储,降级为闪存cookie,然后是普通cookie).
在First Blush
跟踪两个单独的值(本地数据或cookie):表示安全登录令牌的哈希,以及设备令牌.这两个值都由Web应用程序驱动(并记录),并由客户端决定.SSO令牌取决于设备以及序列号.这有效地允许设备被取消(所有SSO令牌变得无效)并通过使用序列号减轻重放(但不是有效的,这就是为什么我问这个问题),并使用随机数.
问题
使用此解决方案,某人可以只复制SSO和设备令牌并在另一个请求中使用.虽然序列号将帮助我检测到这种滥用并因此取消对设备的授权,但检测和响应只能在有效设备和恶意请求都尝试访问之后发生,这是足够的时间来完成损坏.
我觉得使用HMAC会更好.使用私钥跟踪设备,序列,创建随机数,时间戳和散列,然后将散列加上这些值作为纯文本发送.服务器执行相同操作(除了验证设备和序列)并进行比较.这似乎更容易,更可靠......假设我们可以安全地协商,交换和存储私钥.
题
那么,我如何安全地为授权设备协商私钥,然后安全地存储该密钥?是否更有可能,至少,如果我决定使用本地存储或闪存cookie存储私钥,只是说它"足够好"?或者,我可以对原始草案做些什么来缓解我描述的漏洞?
我怀疑你要求的安全性高于系统所能提供的安全性.简而言之,如果您无法控制客户端,它可以(错误地)以无数(非预期)方式使用SSO和设备令牌,如您所知.无论你如何设计系统的其他部分; 这是你系统的致命弱点.
换句话说,在您描述的系统中,您正在任务并信任客户端的Web浏览器以提供其设备令牌和SSO令牌.对?如果是这样,你怎么能阻止这些令牌移动到其他设备?(见下文的缓解策略.)
现在,正好回答你的问题:
"那么,我如何安全地为授权设备协商私钥,然后安全地存储该密钥?"
这样做并没有什么坏处,但正如我在上面解释的那样,它没有帮助.
"至少,如果我决定使用本地存储或闪存cookie存储私钥,并且只是说它"足够好",那么它是否更有可能?
我不能告诉你"足够好"是什么.您应该清楚地传达"移动令牌"攻击并帮助客户做出明智的决定.
"或者,我能在原始草案中做些什么来缓解我描述的漏洞?"
肯定有一些缓解策略取决于您的用户安装基础和您的风险承受能力.
正如我所看到的那样,关键问题是 - 考虑那些可能将令牌从一台机器转移到另一台机器的人的技能和能力 - 您的缓解策略是否会对该行为产生重大影响而不会降低系统性能和可用性"诚实"的用户?
以下是一些想法:
您可以使用双因素身份验证,例如RSA SecurID.这不会阻止机器令牌的移动,但它需要TFA随之移动.
您可以尝试模糊或隐藏这些令牌的本地副本,但这似乎只是通过默默无闻的安全性.
您可以检查机器的MAC地址.如果克隆MAC地址比移动设备令牌更困难,那么这可能是一个有用的安全层.
您可以尝试要求使用某些"锁定"对这些令牌的访问权限的自定义浏览器.这只是一个想法; 我不知道它是否实用.
如果您知道机器本身不应移动,则可以检查网络属性以查找机器位于不同网络位置的证据,从而查找物理位置.
如果查询并存储(在服务器上,而不是客户端上)计算机配置信息,则可以检测令牌是否从具有一个配置的一台计算机移动到具有不同配置的计算机.(当然,这种方法会在机器升级时抱怨.)
您可能需要安装为Web应用程序提供身份验证API的应用程序,而不是存储本地设备令牌.这个应用程序可以将自己嵌入计算机上的某个地方,这个计算机很难被破解,根除或移动.(这样,这个应用程序将提供一个"双因素认证"系统的机器).
与上述想法一致或分开,您可以在设备上安装单独的"phone home"应用程序.它将不时与您的服务器"签入".如果它更改网络位置,设备配置或停止响应,您可以相应地拒绝访问.
我希望这有帮助.我不认为自己是安全专家,但我喜欢思考设计问题.如果你在问过你可能会得到一些更好的反应https://security.stackexchange.com/)
| 归档时间: |
|
| 查看次数: |
3959 次 |
| 最近记录: |