基于眼动追踪的安全PIN输入

SafetyPIN:通过眼动追踪实现安全的个人识别码输入

1 引言

如今,使用个人识别码(PIN)作为身份验证的密码已无处不在。这一点在银行应用中尤为突出,通常将令牌(例如银行卡)与用户的秘密个人识别码相结合来验证交易。在金融应用中,个人识别码通常是四位数,共有10000种可能的组合。系统的安全性依赖于攻击者很难猜中正确的个人识别码,并且系统(例如自动取款机)限制用户输入正确个人识别码的尝试次数(例如3次)。由于大多数使用个人识别码进行身份验证的应用都运行在公共环境中,因此常见的攻击方式是试图观察并记录用户输入个人识别码的过程(窥视攻击)。这些安全问题早已被人们所认识,研究人员也提出了多种不同的方案以降低个人识别码输入被窥视的风险。其中一种提出的替代性个人识别码输入方法要求用户输入的信息并非直接的个人识别码,而是由实际个人识别码与系统显示的某些附加信息组合后推导得出的结果。

另一种方法建议使用复杂的硬件来使个人识别码输入能够抵御观察攻击。然而,这些方法尚未被引入实际应用中,因为用户需要重新学习一种完全不同的个人识别码输入方式,并且硬件设置涉及显著的额外成本。

在安全PIN项目中,我们的目标是在保留用户已熟悉的工作流程的同时,防止输入个人识别码时的观察攻击,并将额外的硬件成本降至最低。我们的装置可以轻松集成到现有的自动取款机(ATM)和销售点系统设计中。为避免肩窥攻击并使用户能够无惧被窥视地输入个人识别码,我们开发了一种采用眼动追踪设备的系统。使用安全PIN时,用户只需注视屏幕上显示的数字,即可通过眼睛选择个人识别码数字。由于输入个人识别码时不使用物理按键,因此不会通过视觉观察向攻击者泄露所输入数字的任何信息。同时,假键盘的使用也变得不再必要。

本文的其余部分结构如下。在第2节中,提到了一些与防止窥视攻击和使用眼动交互相关的先前研究。第3节解释了安全PIN的概念性方法。第4节详细描述了实现过程。第5节讨论了初步评估及结果。第6节对全文进行总结。

2 相关工作

研究人员一直在评估使用眼动追踪设备将用户视线作为交互方法的效果。1987年,韦尔等人[3]评估了两种利用眼睛作为输入与计算机进行交互的方法:凝视停留和注视即选。凝视停留方法依赖于用户在屏幕上感兴趣区域停留一定时间来实现操作。而在注视即选方法中,用户先注视感兴趣区域,然后通过物理按键点击预定义的按钮以激活该区域。与注视即选方法相比,凝视停留方法需要更长的激活时间,因为它需要一定的停留时间来避免误触发。另一方面,尽管注视即选方法速度更快,但通过按钮点击反馈会向潜在的肩窥攻击者泄露更多信息。这两种方法都需要针对单个用户进行校准。

库马尔等人[4]评估了上述两种用于避免窥视攻击的ATM密码输入方法。他们使用了Tobii 1750眼动仪和QWERTY字母数字小键盘来进行此项研究。评估结果表明,这些方法能够有效阻止肩窥者,同时输入密码所需时间与传统键盘相当。他们还建议将用户的校准数据直接存储在ATM卡中,从而无需每次进行校准。

德卢卡等人[5],除了上述方法外,还引入了一种视线手势输入法进行密码输入,并将其与另外两种方法进行了比较。视线手势输入法要求用户记住一个图形模式,然后通过眼睛进行手势操作来输入该模式[6,7]。这种方法的优点是无需校准,因为它依赖于眼睛的相对位置,而不是绝对位置。然而,它在可用性方面表现不佳,因为用户需要多次重试才能正确输入模式。

其他类似的努力可见于[8,9]。在安全PIN中,我们实现了一种名为眨眼激活方法的新激活方式,以及另外两种方法。在此方法中,与注视即选不同,用户注视想要激活的区域,然后通过眨眼睛来激活该区域,而不是按键。这种方法比注视即选更安全,因为它完全避免了肩窥者通过物理按键操作获得的反馈。

与凝视方法相比,此方法也更不易出错,因为误触发的可能性更低。

3 概念性方法

我们的初始原型在标准Windows个人电脑上运行,并使用低成本的Tobii EyeX眼动仪。该眼动仪由一个小巧的条形传感器组成,可附着在显示屏上,并可在后续阶段集成到自动取款机中。传感器条包含微型投影仪,向用户的眼睛投射不同的红外光图案。这些图案的反射光随后被传感器条中的红外摄像头记录下来。通过图像处理检测用户的眼睛并追踪眼球运动,从而确定用户的注视点。

示意图0

示意图1

注视点:用户视线当前在屏幕上聚焦的位置。对于个人识别码输入,我们在屏幕上显示可能的数字(见图1和图2)。

从实际角度来看,安全PIN方法的一个关键优势是仅需极少的额外硬件,即可轻松集成到现有终端中。由于传感器条体积小巧且直接放置在屏幕下方,因此可以集成到现有终端的屏幕外壳中,从而简化了集成安全PIN输入功能的新版本终端的开发,并为现有终端的改造提供了可能。

4 实现

该原型旨在模拟典型的自动取款机个人识别码输入屏幕,并允许用户通过三种不同的交互方法输入个人识别码:注视即选、凝视激活和眨眼激活。图形用户界面是一个 1680×720像素的窗口,包含标有0到9以及‘,’和‘.’的按钮。图形用户界面按钮的尺寸为 160×100像素,按钮之间的间距为50像素。用户需输入一个预设的数字序列作为其个人识别码。软件随后会针对上述三种输入方法分别检查所输入个人识别码的准确性与速度。该软件已在VC++中开发完成。

示意图2

Tobii SDK[10]为眼动追踪设备提供驱动程序,以及一个C/C++库引擎,该引擎提供与设备交互的应用程序编程接口。这些应用程序编程接口提供的功能高于来自设备的原始眼动位置数据。该引擎提供两种高级操作。一方面,应用程序可以告知引擎其所希望激活的区域边界。然后,引擎将通知应用程序用户何时注视于指定的区域之一。该方案免除了应用程序必须从设备轮询传入的原始位置数据的负担。另一方面,应用程序可以注册其希望接收通知的多种事件之一。例如,当用户注视某个区域超过半秒时,可通知一个凝视事件;当设备超过一秒未检测到用户的眼睛时,可根据应用程序是否已注册该事件来通知一个缺席事件。这些通知被用于我们的图形用户界面应用程序中。

以下借助伪代码和序列图描述三种不同的激活方法。

4.1 看并射击

图3中的序列图展示了该软件的三个主要模块,并概述了它们之间的交互。图形用户界面通过EyeX接口模块与EyeX引擎进行交互。图形用户界面初始化窗口和按钮组件,并将按钮的坐标发送给EyeX接口,后者继而向EyeX引擎请求周期性的眼球位置更新。EyeX引擎直接与控制器设备通信。当EyeX接口从EyeX引擎接收到位置坐标后,会检查用户当前注视的位置是否落在任一按钮的范围内。如果是,它将请求EyeX引擎在预定义的激活按钮(本例中为右控制键)被按下时通知它。一旦接收到此激活事件,EyeX接口便向图形用户界面发送包含要激活的按钮编号的消息。图形用户界面在接收到该消息后,存储被激活的个人识别码。算法1以伪代码形式描述了此过程。

算法1。注视射击激活方法的算法

初始化;
while Wait for data/events from EyeX do
    if coordinates received correspond to a GUI button then
        if the activation button is pressed then
            存储个人识别码对应的被激活按钮;
        end
    end
end

4.2 凝视激活

图4展示了凝视激活方法的交互过程。这种情况下主要的区别是,在从EyeX引擎接收到位置坐标后,EyeX接口在执行边界检查后请求凝视事件通知。当用户在同一区域凝视超过半秒时,EyeX引擎会生成此通知。但发现该时间过短,容易导致误触发。因此,通过在EyeX接口中进行验证,将凝视时间增加至超过一秒。此后,消息由EyeX接口模块传递给图形用户界面。

示意图3

算法2。凝视激活方法的算法

初始化;
while Wait for data/events from EyeX do
    if coordinates received correspond to a GUI button then
        if gaze event notification is received for the current GUI button then
            存储对应于激活按钮的个人识别码;
        end
    end
end

4.3 眨眼激活

图5展示了眨眼激活方法的交互过程。此种情况下的主要区别在于,当从EyeX接收到位置坐标后,引擎执行边界检查并临时保存按钮编号后,EyeX接口会请求“用户缺席”通知。如果设备超过一秒无法检测到用户的眼睛,EyeX引擎将生成此通知。因此,当用户闭眼持续一秒时,设备即判定为用户缺席,并触发相应的通知。接收到该通知后,EyeX接口随即请求“用户在场”通知,实质上等待用户重新睁眼,从而完成一次眨眼操作。一旦用户睁开眼睛,EyeX引擎便发送相应通知,随后EyeX接口将已保存按钮的组件编号发送至图形用户界面。

示意图4

算法3。眨眼激活算法

初始化;
while Wait for data/events from EyeX do
    if coordinates received correspond to a GUI button then
        临时记住此图形用户界面按钮;
        if user absence event notification is received then
            if user presence event notification received then
                存储与已记住按钮对应的个人识别码;
            end
        end
    end
end

示意图5

5 评估

在初步的用户测试中,我们考察了技术方面(如校准误差的影响、眼镜和其他眼部设备的影响)、实际可用性方面(如错误率和用户满意度),以及用户对安全与安保方面的感知。

对9名用户进行了测试,每名用户需使用眼动仪输入一个12位PIN码的命令序列(见图6)。该测试针对三种激活方法中的每一种均重复进行了四次。用户输入的PIN码被记录下来,并与命令PIN码进行比对,以统计出现的错误数量。同时记录了用户完成测试所用的时间。测试完成后,向用户发放问卷,收集他们关于系统可用性和实用性的反馈。同时也记录了用户对系统安全性的意见。

这些测试在所有三种激活方法中都取得了非常令人鼓舞的结果。平均错误率约为5%,每次数字输入的平均耗时约为1.6秒,典型的4位PIN码输入总耗时约为6.7秒。大多数错误是由于用户记错个人识别码而输入了错误的PIN,并非意外激活了非预期的个人识别码。用户认为该系统易于使用,并且相比传统的个人识别码输入方式,这是一种更安全的个人识别码输入方法。

6 结论

为了在自动取款机上输入个人识别码时保护用户免受窥视攻击,目前正在评估新的个人识别码输入方法。随着眼动追踪技术成本的降低,利用眼动交互进行个人识别码输入正成为一种实用的解决方案。本文讨论了安全PIN,该方案建议为自动取款机加装眼动追踪设备,使用户无需使用键盘即可输入个人识别码。在我们的原型中,已在PC上实现并评估了该系统。除了“注视即选”和凝视激活方法外,我们还引入了一种新的激活方法——眨眼激活。初步的用户评估取得了令人鼓舞的结果,促使进一步的研究工作。

演示了为无线无人机电池充电设计的感应电力传输(IPT)系统 Dynamic Wireless Charging for (UAV) using Inductive Coupling 模拟了为无人机(UAV)量身定制的无线电力传输(WPT)系统。该模型演示了直流电到高频交流电的转换,通过磁共振在气隙中无线传输能量,以及整流回直流电用于电池充电。 系统拓扑包括: 输入级:使用IGBT/二极管开关连接到全桥逆变器的直流电压源(12V)。 开关控制:脉冲发生器以85 kHz(周期:1/85000秒)的开关频率运行,这是SAE J2954无线充电标准的标准频率。 耦合级:使用互感和线性变压器块来模拟具有特定耦合系数的发射(Tx)和接收(Rx)线圈。 补偿:包括串联RLC分支,用于模拟谐振补偿网络(将线圈调谐到谐振频率)。 输出级:桥式整流器(基于二极管),用于将高频交流电转换回直流电,以供负载使用。 仪器:使用示波器块进行全面的电压和电流测量,用于分析输入/输出波形和效率。 模拟详细信息: 求解器:离散Tustin/向后Euler(通过powergui)。 采样时间:50e-6秒。 4.主要特点 高频逆变:模拟85 kHz下IGBT的开关瞬态。 磁耦合:模拟无人机着陆垫和机载接收器之间的松耦合行为。 Power GUI集成:用于专用电力系统离散仿真的设置。 波形分析:预配置的范围,用于查看逆变器输出电压、初级/次级电流和整流直流电压。 5.安装与使用 确保您已安装MATLAB和Simulink。 所需工具箱:必须安装Simscape Electrical(以前称为SimPowerSystems)工具箱才能运行sps_lib块。 打开文件并运行模拟。
基于OpenMV的视频追踪小车控制系统设计可参考以下方面: - **系统整体设计**:设计一款基于OpenMV的智能三轮车图像识别与跟踪系统,利用图像处理技术和PID控制算法,实现实时识别特定颜色的小球并精确跟踪其运轨迹 [^1]。 - **控制算法运用**:使用PID控制器,通过精确的参数调整和算法优化,实现小车更为敏捷和稳定的运控制 [^2]。 - **图像采集与处理**:采用图像采集与颜色分割技术,涉及OpenMV的图像采集原理,以此为基础处理采集到的视频图像信息,识别目标物体 [^2]。 - **代码实现**:以car.py代码为例,通过对引脚的设置和函数的编写来控制小车的运行,代码中定义了小车左右轮的引脚,以及控制小车左右轮速度的`run`函数,根据输入的左右轮速度值,对引脚进行高低电平设置和PWM脉冲宽度百分比的调整,从而实现小车的运控制 [^4]。 以下是一个简单示例代码框架,模拟了基本的视频追踪小车控制逻辑: ```python from pyb import Pin, Timer import sensor, image, time # 初始化摄像头 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) sensor.set_auto_whitebal(False) # 初始化电机控制引脚 inverse_left = False inverse_right = False ain1 = Pin('P0', Pin.OUT_PP) ain2 = Pin('P1', Pin.OUT_PP) bin1 = Pin('P2', Pin.OUT_PP) bin2 = Pin('P3', Pin.OUT_PP) ain1.low() ain2.low() bin1.low() bin2.low() pwma = Pin('P7') pwmb = Pin('P8') tim = Timer(4, freq=1000) ch1 = tim.channel(1, Timer.PWM, pin=pwma) ch2 = tim.channel(2, Timer.PWM, pin=pwmb) ch1.pulse_width_percent(0) ch2.pulse_width_percent(0) def run(left_speed, right_speed): if inverse_left: left_speed = -left_speed if inverse_right: right_speed = -right_speed if left_speed < 0: ain1.low() ain2.high() else: ain1.high() ain2.low() ch1.pulse_width_percent(int(abs(left_speed))) if right_speed < 0: bin1.low() bin2.high() else: bin1.high() bin2.low() ch2.pulse_width_percent(int(abs(right_speed))) while(True): img = sensor.snapshot() # 这里添加目标识别逻辑,例如识别特定颜色的小球 # 假设识别到目标后,根据目标位置计算左右轮速度 left_speed = 50 right_speed = 50 run(left_speed, right_speed) time.sleep(10) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值