Today’s picks

为什么你的银行 App“安全键盘”并不能真正保护你的账户安全

在 1Password 开发团队最新一期的播客节目中,他们抛出了大量关于网络安全的“暴论”:通过邮箱发送的登录链接到底安不安全?密码会不会在 2026 年开始式微?VPN 真的能保护你的安全吗? 如果...

Source: https://www.myzaker.com/

在 1Password 开发团队最新一期的播客节目中,他们抛出了大量关于网络安全的“暴论”:通过邮箱发送的登录链接到底安不安全?密码会不会在 2026 年开始式微?VPN 真的能保护你的安全吗?

如果让我再补充一个网络安全领域的暴论,那我会说这一句:“安全键盘”并不能真正保护你的银行账户安全。这里所说的“安全键盘”,指的是许多手机银行 App——尤其是在中国大陆及部分其他地区——在密码输入框中强制用户使用的那套由应用自行实现的触屏键盘。

如果要评选过去十年来金融机构采用过的最离谱的安全“创新”,它至少能排进前三名。

“安全键盘”从何而来?

让我们把时间倒拨 30 年,回到个人电脑尚未全面普及的年代。早在 1997 年,招商银行就推出了面向零售与个人用户的网上银行服务——「一网通」。

这个时间点比大多数人想象的都要早。彼时,距离那封著名的“越过长城,走向世界”的电子邮件也才过去十年;QQ 甚至还不叫 QQ,而是 OICQ。家用电脑并不普及,即便有,也往往是一家人共用的“奢侈品”。

然而,互联网需求却率先爆发了。即时通讯、网络游戏、网上银行等应用迅速兴起,但硬件普及速度却跟不上,这种“远水解不了近渴”的矛盾,直接催生了一种特殊的基础设施——网吧,也就是提供公共电脑和公共网络接入的场所。

今天我们都很清楚,在公共设备上登录个人账户存在诸多安全风险:要退出登录、使用访客模式或无痕模式、避免保存密码等。

但在当年,有一种极其原始却异常致命的攻击方式非常流行——硬件键盘记录器

这种设备被安装在键盘与电脑的 PS/2 接口之间,可以悄无声息地记录下所有按键输入:你输入了什么字符、什么密码、发了什么消息,它全都记下来。为了隐蔽,它通常被做得很小,藏在机箱背面几乎不易察觉。

想象这样一个场景:你在网吧坐下,打开 QQ,用键盘输入账号和密码。你离开后,安装键盘记录器的人取回设备,在记录中翻找你的输入内容,很快就能在你和朋友的聊天记录中间找到你的 QQ 号和密码。几天后,你的 QQ 账号就被盗了。

腾讯等公司因此收到了大量投诉,只能不断提醒用户检查机箱背面是否插着奇怪的设备,但问题依然层出不穷。

于是,一位工程师想到了一个办法:键盘记录器只能记录键盘输入,却无法记录屏幕内容

那为什么不干脆绕过实体键盘呢?

这正是“软件键盘”在 PC 时代流行起来的原因。通过在屏幕上显示一个键盘界面,让用户用鼠标点击按键来输入字符,从而避开硬件键盘记录器。包括 QQ 在内的许多软件都加入了软键盘功能,甚至还建议用户输入密码时“软硬结合”:一部分用实体键盘,一部分用软键盘,以防止被拍照或录屏完整记录。

PC 时代的这种“软键盘”,正是如今手机银行 App 中“安全键盘”的前身。

更具体来说,许多银行 App 会在用户输入密码时,用自己实现的键盘替换系统键盘或第三方键盘。在中国金融行业中,诸如 JR/T 0068-2020、JR/T 0092-2019 等推荐性标准中,明确提到了逐字符加密、自定义软键盘、防键盘窃听等措施,用于保护敏感信息输入。

这里有两个关键点需要注意。

第一,这些标准的编号是 JR/T,其中的 “T” 代表推荐性标准,而非强制执行标准。

第二,标准只规定了“要达到什么效果”,并没有规定“必须如何实现”,这就导致各家银行在具体实现上八仙过海,水平参差不齐。

一些相对“善良守序”的 App,会使用系统提供的 Custom Input Views 等机制,尽量还原原生键盘体验;另一些则直接绘制一个假的输入框,再弹出一个层级很高的 UI 来“模拟”键盘。

还有一些实现则显得相当混乱。例如,某些 App 看似支持在密码框中“粘贴”,但如果你真的从 1Password 之类的密码管理器粘贴密码,就会提示错误;而完全使用安全键盘手动输入却能成功。这很可能意味着:它们只在逻辑层记录安全键盘的输入,UI 只是展示小圆点;或者在逻辑层对每个字符做了 Unicode 映射和替换。

于是,一个问题不可避免地浮现出来:这究竟是真正的安全,还是精心设计的“赛博安慰剂”?

“安全键盘”正在鼓励“不安全”

之所以花这么多篇幅回顾历史,是为了说明:安全键盘本质上是一个历史产物,它试图解决的是一个曾经极为重要的问题——在公共、不可信设备上登录敏感账户。

但我们早已不生活在网吧时代了。

个人电脑的普及大幅降低了硬件被篡改的风险;安全启动、内存校验等机制不断加强;用户的网络安全意识也显著提高。更重要的是,在人手一部手机的时代,想在触屏设备上复刻硬件键盘记录器的攻击模型,几乎是不现实的。

如果你想在硬件层面“记录”手机输入,就必须拦截屏幕显示或触控信号,这不仅难度极高,而且几乎不可能在规模化、无痕的前提下完成。

那软件层面呢?

事实证明,即便是系统级 App,也无法轻易通过屏幕录制接口获取用户的真实输入。对 iPhone 用户来说,即使日常使用第三方键盘,在密码输入框中也会被强制切换回系统自带键盘;部分国产 Android 手机同样默认启用“密码键盘”,在 SecurityField 激活时替换第三方输入法。

有人可能会想到通过陀螺仪等传感器推测输入内容,学术界确实有相关研究。但问题在于:不论是系统键盘还是银行自制的“安全键盘”,本质上都是软键盘。如果真能通过传感器推断输入,那攻击者完全可以“一视同仁”,并不会因为你用了安全键盘就放过你。

在这种极端假设下,唯一稍有意义的防御,可能是每次都打乱按键布局的随机键盘。但即便如此,现实中的攻击者仍需要突破一系列近乎不可能的门槛:绕过系统限制、长期后台运行、不被系统杀死、不拖慢手机性能,还要准确重建输入内容。

即便银行在这里把一切都做到了极致,真正的问题依然在后面等着。

阻断密码管理器,是一次自残式安全设计

许多“安全键盘”的实现,直接破坏或禁用了密码管理器的自动填充功能。

这是一个非常严重的问题。因为现代操作系统之所以提供系统级的密码填充能力,正是为了降低风险:无需手动输入,避免键盘记录和推断攻击,让传感器分析之类的手段彻底失效。

一旦 App 强制使用自定义键盘、魔改输入框,或在逻辑层篡改字符,密码管理器往往就无法识别输入字段,只能退回到“手动输入”。

而手动输入的代价非常现实。

当输入变得缓慢、麻烦、容易出错,尤其是在打乱布局的键盘上,用户自然会倾向于选择更好记、更好输的密码——也就是熵值更低的密码。

这与我们早年见过的“复杂密码策略”如出一辙:
必须包含大写字母、小写字母、数字、特殊符号,至少多少位……

看起来是在提升安全性,实际上却压缩了可能的密码空间,让攻击者更容易优化猜测,同时迫使用户采用高度可预测的“合规密码”,比如 P@ssw0rd1。更糟糕的是,很多人干脆设置一个“哪里都能用”的密码,在多个服务间重复使用。

安全键盘本质上也在做同样的事情:通过增加摩擦,诱导用户选择“还能忍”的密码,而不是通过密码管理器生成并使用真正高熵、唯一的密码。

讽刺的是,这种被宣传为“额外防护”的机制,反而在真实世界中降低了整体安全性

方便从来不是安全的敌人,麻烦才是

安全领域一直流传着一句话:安全与便利不可兼得。

但上网时间越久,你就越会发现,这更像是一句神话。

安全往往不是败给了“方便”,而是败给了“麻烦到让人绕过它”。

密码管理器正是因此而诞生的:人类天生不擅长生成、记忆和管理大量高熵、唯一的密码。给人一个符合行为习惯的系统,安全性反而会显著提升。

从今天的视角看,密码管理器与通行密钥(Passkeys)在用户体验上其实高度相似:都是由系统生成凭据、存储起来,在使用时只需一次生物识别或设备解锁即可完成认证。通行密钥通过非对称加密和设备绑定提升了抗钓鱼能力,而成熟使用下的密码管理器,早已解决了密码时代中最致命的现实问题。

真正的问题从来不在“密码本身”,而在它周围的一整套体系:如何存储、如何传输、如何避免复用、如何抵御钓鱼,以及最重要的——如何与人性相处。

这正是 FIDO 和通行密钥试图解决的核心:把复杂的问题标准化、封装起来,让用户不再背负额外的心智负担。只要按标准走,就能获得更安全、更顺畅的认证体验。

但现实是,标准无法一夜之间取代既成事实。密码使用了将近一百年,整个互联网的迁移注定需要时间。

在这段过渡期里,我们至少应该诚实地面对什么真正有帮助。

被强制使用的“安全键盘”,往往只是对过时威胁模型的条件反射式回应。它在很多实现中阻断了密码管理器、增加了摩擦、诱导了更弱的使用习惯,却几乎无法抵御当下最主要的攻击手段。

在网络安全中,最好的系统从来不是靠要求用户付出更多努力取胜的。

它们赢,是因为最安全的路径,恰恰也是最省事的那条路

所以,方便不是安全的敌人。

麻烦才是。

Keep a little curiosity for the next story.

Back to reading

Read next

All