使用一次性密码解决方案更安全地验证身份--.doc

使用一次性密码解决方案更安全地验证身份--.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用一次性密码解决方案更安全地验证身份--.doc

  使用一次性密码解决方案更安全地验证身份   本文示例源代码或素材下载   文讨论:   密码存在的问题   生成一次性密码   构建基于 AC:键入-散列法用于信息身份验证,是 go.microsoft.ficrosoft.fit(提交)按钮进行身份验证。OTP 插件模块从 IIS 得到通知,并且随后调用 Web 服务来检验身份验证请求。Web 服务在 SQL Server 表中查找用户的密钥和计数器值、检验 OTP 计算,并响应身份验证为成功还是失败。   图 1 显示了示例解决方案的体系结构。请记住:在生产环境中,应通过在客户端和服务器之间配置信任关系以及限制无效的登录尝试等方法,进一步强化此体系结构来杜绝拒绝服务 (DoS) 攻击。 12345下一页 这篇文章来自..,。  图 1一次性密码解决方案组件   本文附带的示例代码(位于《MSDNreg; 杂志》网站的下载区)包含一个 Visual Studioreg; 2005 解决方案,其中有用于生成 OTP 的一个 C++ DLL (HmacOtpDll)。由于该 DLL 供 OtpClient 和 L 文件来存储加密代码和计数器。每次重建应用程序时,它都会将 XML 从项目根目录复制到目标目录,从而将计数器重置为 0。   名为 IIS7Module 的 IIS 模块提供了 OTP 身份验证服务,并且该模块使用一个名为 AC) 是基于密钥的一种加密哈希。或换句话说,HMAC 接受任意消息和密钥,并将消息映射成固定长度的摘要值(如 20 字节),从而确保只有具有相同密钥的人才能从相同的消息生成相同的摘要值。   HMAC-OTP 的首个计算步骤是接受计数值,并将其编码为 HMAC 计算的输入消息。实际使用时,消息是设为计数器值的 8 字节缓冲区。图 2 描述了这一步骤以及接下来的两个步骤。下一计算步骤是使用用户密钥计算上述消息的 HMAC。请注意,我在该实现中对字节顺序进行了编址以确保它与 RFC 兼容。   图 2一次性密码流程   随后,通过对 20 字节的 HMAC 结果进行十进制编码,从而将此结果转换为 OTP 值。其中包含两个实践要求:第一,我需要保留尽可能多的 HMAC 计算位,最多为 OTP 结果的长度(在本例中为六位数),因为丢失位会把计算暴露给加密攻击。第二,我需要创建与尽可能多的输入设备类型兼容的 OTP。这一兼容要求正是我采用十进制编码的原因所在。(这种强身份验证实现甚至与拨号式兼容!)   示例网站   我的目标是确保所设计的站点能正确地显示用户是否使用 OTP 实现成功登录。为便于测试,此 OTP 解决方案包含一个示例网站。该网站的首页是 Default.htm,此登录页面用于向通过身份验证的用户展示 OTP 模块如何保护非 ASP. 页面。其中还包含用于显示当前已通过身份验证的用户名的 Test.aspx 文件,以及显示 Test.aspx 页面如何从 System.odule.dll 文件的 Visual Studio 项目解决方案。   IIS HTTP OTP 插件模块是该网站的一个组件。该模块与 IIS 交互,并将用户重定向到可在其中输入用户名和 OTP 的 odule 接口。实际上,该模块非常简单,仅包括三个公共方法。第一个是 Init,如下所示: public void Init(HttpApplication application) {  application.BeginRequest += new EventHandler(application_BeginRequest); }  如您所见,该模块使用此方法来注册 BeginRequest 处理程序 application_BeginRequest。OTP BeginRequest 处理程序的目的是确保所有 HTTP 请求均来自通过身份验证的用户。具体实现方式为使用以下几个帮助函数:一个函数用于确定调用方是否已通过身份验证,还有几个函数用于在调用方尚未通过身份验证时对其执行身份验证。还有一点值得一提:在 BeginRequest 事件过程中截取请求的方式不会遵循 ASP. 应用程序所使用的标准身份验证模式。但是,如果不希望其他模块看到此请求(甚至是那些设计为在进行身份验证之前截取请求的模块), 上一页12345下一页 这篇文章来自..,。则建议使用此方法。   IsAuthenticated 帮助函数将确定请求是否指明需要一个已通过身份验证的用户。实现方法是:使用 System.L 元素组成:一个初始为空的错误消息字段,一个用户名字段、一个密码字段、一个提交按钮以及

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档