Lockra 如何保护你的账号
本页介绍 Lockra 如何保护你的账号、每项安全设置的作用,以及它无法防范的情况。
主密码
所有账号保存在一个文件中,使用由主密码派生的密钥加密:Argon2id 使用 64 MiB 内存、3 轮迭代完成派生,因此逐个尝试密码的速度很慢。文件使用 XChaCha20-Poly1305 加密;只要其中任何部分被改动,哪怕只有 1 个字节,Lockra 都会拒绝打开,而不会读取被篡改的数据。
连续输错 3 次密码后,每次再尝试都需要等待,等待时间从 1 秒开始,每次加倍,最长 30 秒。
主密码无法找回。如果遗失了主密码,可以在解锁页选择「忘记主密码?」,并输入「重置」以确认,重置保险库:Lockra 会从一个空的保险库重新开始,旧文件改名后保留,没有它的密码仍然无法打开。
要修改主密码,请打开「设置 › 安全 › 修改主密码」。之前的备份仍然使用旧密码打开。
在本机记住
「设置 › 安全 › 在本机记住」会把一个密钥保存在系统钥匙串中(Windows 上为凭据管理器,macOS 上为钥匙串,Linux 上为 Secret Service),在这台电脑上解锁保险库时无需输入主密码。此后,任何能登录你这台电脑账户的人都能打开保险库,因此请只在仅供你本人使用的电脑上开启。
关闭这项设置时需要输入主密码。Lockra 会从钥匙串中删除密钥,并重新加密保险库,因此被删除的密钥此后无法打开任何内容。
Touch ID 与 Windows Hello
已发布 自 0.5.0 版起提供。在带 Touch ID 的 Mac 或支持 Windows Hello 的 Windows 电脑上,开启「设置 › 安全 › 使用 Touch ID 解锁」(Windows 上为「使用 Windows Hello 解锁」)。开启时会验证一次,确认可以使用,并同时开启「在本机记住」。解锁页随即显示「使用 Touch ID 解锁」(或「使用 Windows Hello 解锁」):先验证你的指纹,或 Windows Hello 的指纹、面容或 PIN,再用本机记住的密钥打开保险库。尚未开启时,支持 Touch ID 或 Windows Hello 的电脑会在解锁页提示开关的位置。关闭时需要输入主密码,「在本机记住」会保持开启。主密码始终可以解锁。
在 Windows 上,如果解锁的那一刻 Windows Hello 恰好不可用(例如另一个应用正在显示 Windows Hello 窗口),Windows 会改为要求输入你的 Windows 登录密码。
这项验证防范的是有人使用你已登录的电脑。以你的身份运行的程序仍然可以从钥匙串中读取本机记住的密钥,与不开启验证时相同。
默认解锁方式
已发布 自 0.7.0 版起提供。开启「使用 Touch ID 解锁」(或「使用 Windows Hello 解锁」)后,「设置 › 安全 › 默认解锁方式」决定解锁页先做什么。选择「Touch ID」(Windows 上为「Windows Hello」,默认选项)时,验证按钮排在最前,解锁页会自动请求验证:Lockra 启动时、窗口在前台时自动锁定时,以及在锁定状态下切回 Lockra 窗口时。你自己锁定或取消验证后,离开窗口再回来时才会再次请求。Lockra 在后台时不会请求。选择「主密码」时,先输入主密码,验证需要点按钮。
Android 上的指纹解锁
已发布 自 0.7.0 版起提供。在手机上,「设置 › 安全 › 使用指纹解锁」把保险库的密钥保存在手机的安全硬件中,只在指纹验证通过后的十秒内可以使用。开启时会验证一次;关闭时需要输入主密码,密钥随之删除。之后录入新的指纹会使这个密钥失效,此时使用主密码解锁,并可以重新开启这项设置。「默认解锁方式」为「指纹」时,打开或切回 Lockra 会自动请求指纹验证。在手机上,Lockra 始终无法被截屏,离开应用时保险库会锁定。
默认开启指纹解锁
已发布 自 0.7.1 版起提供。在录有指纹的手机上,新建保险库、从备份恢复或从同步加入时,欢迎页的「使用指纹解锁」默认打开:保险库打开后验证一次指纹即开启。关闭这个开关则不开启,之后也不再询问。已有的保险库用主密码解锁后,Lockra 会询问一次是否开启指纹解锁;选择「暂不」后,这部手机不再询问,仍可以在「设置 › 安全」中开启。
用指纹代替主密码
已发布 自 0.8.6 版起提供。开启「使用指纹解锁」后,手机上需要再次输入主密码的地方都可以改用指纹验证:显示密钥(「显示密钥…」)、导出账号、显示恢复密钥、邀请其他设备、修改存储设置,以及用邀请码或配对链接加入同步空间。「默认解锁方式」为「指纹」时,显示密钥、显示恢复密钥和邀请其他设备的页面打开后会自动请求指纹验证;导出、修改存储设置和加入同步的页面还需要填写其他内容,主密码留空即可,提交时再验证指纹。取消验证后,可以改为输入主密码。
指纹只用来确认操作的是你本人,不改变任何加密。因此,录入了指纹的人可以在这部手机上显示密钥、导出账号,或把保险库加入一个同步空间:请只录入你自己的指纹。新建保险库、修改主密码、关闭指纹解锁、开始同步和用恢复密钥恢复仍需要主密码。用指纹加入同步空间时的注意事项见在手机上用指纹代替主密码。
锁定
在没有按键或点击的情况下,Lockra 默认在 5 分钟后锁定(「设置 › 安全 › 自动锁定」:1 至 60 分钟,或从不);按 Ctrl L 或选择侧栏中的「锁定」会立即锁定。锁定会从内存中清除已解密的账号,并关闭正在进行的导入或导出。
剪贴板
复制的验证码会在 30 秒后从剪贴板中清除(「设置 › 安全 › 清空剪贴板」:10 至 90 秒,或从不),且只在剪贴板中仍是这个验证码时清除。在 Windows 上,验证码不会进入剪贴板历史、云剪贴板,也不会被剪贴板监视程序读取;在 macOS 和 Linux 上,验证码会被标记为不进入剪贴板历史,支持这个标记的剪贴板管理器会遵守它。
屏幕上的密钥
显示账号的密钥(「显示密钥…」)和显示导出二维码都需要再次输入主密码(手机上开启了指纹解锁时,也可以用指纹验证,见用指纹代替主密码),并会在 2 分钟后隐藏。显示期间,Windows 和 macOS 会把窗口排除在截屏和录屏之外。Linux 没有这样的控制手段:显示页面会说明这一点,请注意屏幕共享。
「设置 › 安全 › 隐藏验证码」会以圆点代替验证码,鼠标指向某个账号时才显示。
登录项的密码遵循该登录项的保护级别(登录项)。
登录项
已发布 自 0.10.0 版起提供。登录项与账号一起保存在保险库中,使用同一个主密码加密。登录项的密码、备注、隐藏字段和旧密码只在你要求时才会显示,并在两分钟后再次隐藏;显示期间,Windows 和 macOS 会把窗口排除在截屏和录屏之外。每个登录项的保护级别决定显示和复制时需要什么:
- 直接填充不需要任何验证:这类登录项的密码在 Lockra 中显示起来与填充一样方便。
- 填充前验证在显示、复制或填充秘密之前,需要输入主密码;Lockra 可以用 Touch ID、Windows Hello 或指纹解锁时,也可以用它们验证。
- 不交给扩展让浏览器扩展完全接触不到这个登录项。
复制的密码与复制的验证码一样处理:在系统允许时不进入剪贴板历史,并在「设置 › 安全 › 清空剪贴板」设定的时间后清除。生成历史只有在输入主密码或通过 Touch ID、Windows Hello 验证后才会打开,并且只保存在这台设备上(生成历史)。
浏览器扩展
已发布 自 0.10.0 版起提供。浏览器扩展只获得它所需要的信任:
- 只限本机。 它只经浏览器的 native messaging 连接同一台电脑上的 Lockra,两者之间的连接端到端加密:介入其间的程序可以中断连接,但无法读取内容。
- 配对。 只有 Lockra 与扩展直接相连时,两边才会显示相同的 6 位代码。请在批准之前核对代码,再输入主密码或通过 Touch ID、Windows Hello 批准;配对请求两分钟后过期。
- 锁定即不提供任何内容。 Lockra 锁定期间,扩展得不到任何内容,锁定还会断开所有连接。
- 由 Lockra 决定。 Lockra 只提供与浏览器报告的表单地址匹配的登录项,从不采信网页对自己的描述;除非你允许先询问,否则不会在其他网站的框架中填充;把
https://网址的登录项填入http://网页之前会先询问;保护级别为「填充前验证」的登录项会等待你的验证。 - 频率限制。 请求过于频繁的扩展会被暂停,直到你在「设置 › 浏览器」中恢复它。
- 权限保存在保险库中。 扩展可以做什么保存在保险库中,因此修改设置文件无法扩大它的权限;任何让扩展可以做更多事情的修改,都需要输入主密码或通过 Touch ID、Windows Hello 验证。页面加载时自动填充在你开启之前处于关闭状态。
- 网页中的点击。 Lockra 在网页中显示的菜单和提示,只有在显示至少 300 毫秒、没有被遮挡也没有移动之后才接受点击,因此网页无法诱使你点击它们。
开启「关闭窗口后继续运行」后,关闭窗口时保险库仍保持解锁状态,直到它自动锁定,或你从托盘中锁定。
同步
同步(0.4.0 版起)默认关闭,需要在你自己的存储或 Lockra 中继上开启。设备写入存储的一切内容都在设备上加密;从存储打开时,加密它们的密钥只有同时具备同步空间中某台设备的主密码和恢复密钥才能打开。邀请码本身包含这个密钥,拿到它的设备无需密码即可加入:Lockra 只在输入主密码或通过 Touch ID、Windows Hello、指纹验证后显示它,并在两分钟后隐藏;使用中继的同步空间可以复制长期有效的配对链接,拿到它的设备同样无需密码即可加入。每台设备只写自己的文件,设备之间不会覆盖彼此的修改;被修改或换回旧版本的文件会被拒绝。存储凭据和恢复密钥保存在加密的保险库中,不会出现在备份里。多设备同步说明了存储能看到哪些内容。
经 Lockra 中继同步
已发布 自 0.8.1 版起提供。你运行的 Lockra 中继与其他存储一样,不会获得更多信任:它保存同样的加密文件,加密这些文件的密钥和恢复密钥都不会到达中继。设备用一个由恢复密钥计算得出、无法反推出恢复密钥的值向中继证明身份,因此其他人无法读取或修改中继上的同步空间。中继的磁盘被人取走,或运营者被要求交出中继保存的内容时,对方得到的也只是这些加密文件和那个值的指纹:打开文件需要恢复密钥加上某台设备的主密码,或者邀请码中的密钥,这些都只在你的设备上,中继运营者也没有。中继能看到设备何时、从哪些网络地址同步,也可能删除同步空间或无法访问;无论哪种情况,设备都会保留所有账号(经 Lockra 中继同步)。
Lockra 无法防范的情况
- 以你的用户身份在电脑上运行的恶意软件可以读取你输入的内容,包括主密码。
- 开启「在本机记住」后,保险库的安全程度与你在这台电脑上的账户相同。
- 遗忘的主密码无法被任何人找回。
- 保护级别为「直接填充」的登录项,任何人在你已解锁的电脑上都能显示它的密码。
- 以你的用户身份运行的恶意软件可以从浏览器配置文件中复制浏览器扩展的密钥,冒充已配对的扩展,但仍受频率限制和登录项保护级别的约束。
- 登录项所匹配的网站上(包括它注册域下的任何子域)的恶意脚本,可以读取扩展在那里填入的内容;开启页面加载时自动填充后,它甚至不需要你的任何点击。
- 扩展填入的密码会经过浏览器的内存,Lockra 无法清除浏览器内存中的内容。
- 部分 Linux 桌面不显示托盘图标:在这些桌面上,没有任何迹象表明 Lockra 仍在后台运行且保持解锁。
- 开启同步后,拍下邀请码、拿到中继同步空间的配对链接,或拿到可以发送的邀请码及其口令的人,可以加入同步空间;配对链接长期有效,直到你开始新的同步空间。同时拿到存储内容和恢复密钥的人,可以在自己的电脑上逐一尝试各台设备的主密码;为每台设备设置足够长的主密码是唯一的防线。能写入存储的人可以删除同步空间,这会中断同步,但不会影响你的保险库。移除设备不会撤销其访问权限。
完整的设计请参阅安全模型。