WEB开发网
开发学院数据库MSSQL Server 使用一次性密码解决方案更安全地验证身份 阅读

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

 2009-02-09 10:20:21 来源:WEB开发网   
核心提示: 图 1一次性密码解决方案组件本文附带的示例代码(位于《MSDN® 杂志》网站的下载区)包含一个 Visual Studio® 2005 解决方案,其中有用于生成 OTP 的一个 C++ DLL (HmacOtpDll),使用一次性密码解决方案更安全地验证身份(4),由于该

图 1一次性密码解决方案组件

本文附带的示例代码(位于《MSDN® 杂志》网站的下载区)包含一个 Visual Studio® 2005 解决方案,其中有用于生成 OTP 的一个 C++ DLL (HmacOtpDll)。由于该 DLL 供 OtpClient 和 Web 服务使用,我将其放在 system32 文件夹中。(我使用生成后事件来将其自动复制到该位置。)此示例还包含一个名为 OtpClient 的控制台应用程序,可用它来生成 OTP 值。OtpClient 使用 XML 文件来存储加密代码和计数器。每次重建应用程序时,它都会将 XML 从项目根目录复制到目标目录,从而将计数器重置为 0。

名为 IIS7Module 的 IIS 模块提供了 OTP 身份验证服务,并且该模块使用一个名为 WebService 的 Web 服务来检验 OTP 值。该 Web 服务包含一个位于 App_Data 中的 SQL Server Express 数据库。最后,我在 TestWebsite 项目中包括了用于测试该解决方案的网页。

测试 OTP 生成器客户端

测试 OTP 生成器客户端应用程序是一个独立的工具,它允许用户获取 OTP 身份验证值。它免除了在实际部署中通常必需的硬件设备和挑战(如 PIN 请求)。为计算 OTP,该客户端组件使用与身份验证 Web 服务共享的 DLL。在本示例应用程序中,用户将运行此工具来创建下一个 OTP,然后将该值手动键入到 Web 浏览器的表格中。我将使用 C# 和一些 C 来完成所有工作。(我选择使用 C 来实现底层 OTP 加密。)

您已了解 OTP 在用户级别的工作原理,但此解决方案是如何在功能级别上工作的呢?这个基于哈希的 OTP 解决方案有两个输入值:密钥和计数。但是,OTP 解决方案还具有与实现程序相关的元数据,包括执行身份验证时用户必须键入的密钥的长度和预期 OTP 值的长度。

我的示例程序将生成长度为六个字符的 OTP,并且可支持最多八个字符。为简单起见,该实现使用将密钥长度限制为 64 个字节的一些固定长度缓冲区。但是,假设密钥是密码学角度上的高质量随机数字,则会需要巨大的密钥空间。此类密钥将不会成为生产部署中的脆弱环节。(目前随机密钥通常为 256 位,即 32 字节。)

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:使用 一次性 密码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接