您好、欢迎来到现金彩票网!
当前位置:21点 > 子例程 >

用鼠标力学扩展用户验证方式

发布时间:2019-07-07 17:32 来源:未知 编辑:admin

  developerWorks 中国 正在向 IBM Developer 过渡。 我们将为您呈现一个全新的界面和更新的主题领域,并一如既往地提供您希望获得的精彩内容。

  使用 Perl、cnee 和自定义算法来测量用户移动鼠标和单击按钮的特定性

  登入到计算机中需要输入用户 ID、密码,在某些 ThinkPad 中,还包括读取指纹。但是如我在前三篇文章中所述,也可以用其他方法验证用户。请将这些文章视为独立于其他凭证的用户验证方法的概念证明。

  在本文中,我们将讨论单击鼠标时按下的时间或者键盘及鼠标行为结合在一起如何能够实现更高级别的访问验证。了解如何在应用程序中应用开源工具 cnee 和 Perl 来测量用户操作鼠标的特点。

  除了在我的前三篇文章中讨论的击键力学所提供的许多识别方法之外,鼠标使用情况将提供更多数据来帮助确定用户身份。本文将使用示例代码来演示鼠标力学,从而增强在验证和连续使用应用程序时的安全性。通过示例登录应用程序并使用 cnee 工具来测量鼠标事件,了解如何添加额外的用户交互需求层。

  Linux 是必需的,还要设置可以正常运行的 X Window System。1999 年以后发布的附带有图形桌面的所有发行版都应当提供了初始的预配置环境。您还需要用直接连接的鼠标实际访问计算机。瘦客户机、VNC 连接和虚拟客户机在理论上可以工作,但是不同处理层和网络延迟可能导致异常行为。

  创建演示界面、测量单击时间及将它们与存储的签名进行最终比较是由 demoLogin.pl 程序执行的。该程序将使用 Tk GUI 生成模块呈现类似 GDM face 浏览器的界面。cnee 程序的实例将在后台运行以精确记录鼠标数据。这种方法可用于记录特定应用程序或整个 X Window System 的属性。本文将主要演示如何监视单一应用程序,以及有效地生成和比较签名所需的框架。

  图 1 显示了 demoLogin.pl 程序所创建的界面。该界面中提供了标准登录 UI 部件:高亮显示的用户图片、密码文本框和Submit按钮。这些部件将被用户逐个单击并且测量单击持续时间以创建用户身份签名。

  在包括必备模块并指定使用要求之后,定义全局变量。注意$checkRng变量及其描述。修改此变量对于确定在匹配单击时间签名时可以接受的可变性非常关键。demoLogin.pl 比较签名一节包含此变量及其用法的更多信息。清单 2 将继续展示该程序及 GUI 设置。

  如述,系统将在后台启动 cnee(Xnee 包的一部分)以在 Tk GUI 运行时监视鼠标事件。将创建存储动态和静态图像列表的两个数组,然后创建 Tk 画布以提供动态和静态图像的背景。清单 3 包含其余的 GUI 界面代码。

  每张静态用户图象将被载入画布,并且创建回调以在用户单击时覆盖动态图像。在循环完成后,另一套画布、密码文本框和Submit按钮将被创建并封装到 Tk 主窗口中。清单 4 显示了用于在单击图像时提供用户反馈的clickImage子例程。

  在静态图像上简单地覆盖动态图像足够满足此演示程序的需要。清单 5 将继续介绍 UI 回调。

  如果在 Tk 鼠标被按下Submit之后立即提取事件,cnee 程序将不会提取鼠标按下事件(及后续释放事件)。等待 1 秒钟可以确保所有事件有足够时间通过 cnee 事件检测器和输出阶段。仅在记录模式下,单击计时事件将被输出到 STDOUT 中,以及这些特殊事件的散列签名。清单 6 显示了在清单 5 中调用的 processEvents 子例程。

  鼠标位置和按钮信息将以清单 7 中所示的形式输出。子例程processEvents将记录鼠标按下和释放的时间,然后提取该时间内的最高位。例如,下面所示的鼠标按下时间为 574 毫秒。清单 6 中所示的sprintf函数调用将把单击时间改为 57 毫秒。这将允许在匹配按键时间签名时获得更合理的搜索空间。

  清单 8 显示了用于设置与 cnee 程序之间的后台连接的createPipe子例程。

  请将这些代码样例另存为demoLogin.pl并遵循以下说明开始测量鼠标力学。

  从源代码归档中解压缩images目录。用perl demoLogin.pl record命令运行程序。您应当会看到类似图 1 所示的窗口弹出。

  在其他 UI 元素上尝试不同的单击按下时间。例如,在图像上按住鼠标将近 2 秒钟,然后按照 “正常” 释放时间单击密码输入框和Submit按钮。这将得到计算如下所示单击签名的程序。

  三个数字表示单击三次,第一个数字表示按住时间中的 196/10 秒。其余两个数字表示更 “正常” 的单击按住时间 4/10 秒和 2/10 秒。

  根据单击按住时间的重复技巧,您可以选择基于单击次数创建签名。只需要求用户单击特定次数,例如要求在密码输入框中双击。然后单击签名将在 mouse.signatures 文件中储存必要的单击次数。

  在一组重复计时和鼠标签名就绪后,可以将demoLogin.pl程序修改为支持签名比较。首先用下面几行替换第 90 行(}#if in record mode)。

  在构建包含checkRng参数所定义的全部可能性的签名时,checkDynamics子例程将递归调用自身。传递给mkpasswd的每个字符串都是从鼠标单击按住时间到每次记录的用户单击按住时间逐级构建的。例如,如果单击按住时间为 “197 10 10”,checkDynamics子例程将遍历必要的排列以检查 “192 5 5”、“203 15 15” 及两者之间的排列。松散匹配(带有很高的checkRng值)将显著增加检查所有可能性所需的时间量。

  您可以使用本文中所述的技术来增强现有 Perl 应用程序的验证选项,或者监视现有程序中的鼠标使用情况。

  此外,鼠标力学是少数几个可以使用生物测量学进行连续验证的领域之一。考虑将应用程序修改为使用本文所述的一些技术,检测和跟踪应用程序用户特有的常见单击位置、单击按住时间和其他鼠标使用情况。尝试通过为 Web 验证应用程序测量单击按住时间,进一步推动 captcha 技术。

http://korinkorin.com/zilicheng/166.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有