news 2026/8/24 17:40:41

拆解Proton Pass安全中心:如何检测密码复用、弱密码与泄露风险的4步引擎

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
拆解Proton Pass安全中心:如何检测密码复用、弱密码与泄露风险的4步引擎

拆解Proton Pass安全中心:如何检测密码复用、弱密码与泄露风险的4步引擎

【免费下载链接】android-passAndroid code for the Proton Pass application项目地址: https://gitcode.com/gh_mirrors/an/android-pass

Proton Pass 是一款开源的 Android 密码管理应用,其内置的**安全中心(Security Center)**会自动扫描你的密码库,检测密码复用、弱密码、缺失双因素认证(2FA)与数据泄露风险。本文带你拆解这个检测引擎的 4 个核心步骤:从采集密码库数据,到逐条评分打分,最后汇总成一份安全分析报告。

安全中心源码在哪里

整个功能拆成两个 Gradle 模块,职责清晰:

  • 检测引擎pass/security-center/):接口定义在 api 模块,具体检测器实现在 impl 模块,还配有 fakes 模块 供单元测试使用;
  • 界面层pass/features/security-center/):包含首页、报告、复用密码、弱密码、缺失 2FA、暗网监控等多个 Compose 页面。

4 步引擎总览如下:

步骤检测器负责发现
第 1 步ObserveSecurityAnalysisImpl采集监控条目,同步泄露情报
第 2 步RepeatedPasswordChecker🔁 密码复用
第 3 步InsecurePasswordChecker🔒 弱密码 / 易猜密码
第 4 步MissingTfaChecker+ 泄露密码源⚠️ 未开 2FA、已泄露密码

第 1 步:采集密码库数据,同步泄露情报

一切从 ObserveSecurityAnalysisImpl.kt 开始。它做两件事:

  1. 取数据:通过observeMonitoredItems(includeHiddenVaults = false)订阅所有受监控的密码条目(隐藏库不参与检测);
  2. 刷新情报:每次条目变化时触发refreshCompromisedPasswords(items),把当前密码与已知的泄露密码数据比对更新。

之后用 Kotlin Flow 的combine把 4 个检测器与泄露密码流并行合并成一份SecurityAnalysis结果。每个检测都包装成带加载态的LoadingResult,所以界面上每一项数字都会先显示"加载中"再变为真实计数。

第 2 步:密码复用检测——一个密码用在了几个网站

实现见 RepeatedPasswordChecker.kt,算法非常直白:

  1. 过滤掉用户手动排除检测的条目(isCheckExcluded(SecurityCheck.ReusedPassword));
  2. 在加密上下文中逐条解密登录密码,以明文密码作为 Key 建一张Map<密码, 条目列表>
  3. 任何 Key 对应的条目数大于 1,这个密码就算"被复用",整组条目进入报告。

值得注意的细节:报告里存的是重新加密后的密码,明文只在内存中短暂存在——密码永远不会以明文落盘或外传。

第 3 步:弱密码评分——让 Rust 引擎给密码打分

弱密码判定在 InsecurePasswordChecker.kt:对每条登录密码调用PasswordScorer,该评分器由 Rust 核心提供(见 PasswordScorerImpl.kt),输出三档结果:

  • VULNERABLE(易攻破):直接进入高危列表;
  • WEAK(弱):进入弱密码列表;
  • STRONG(强):不报告。

用 Rust 做评分意味着检测逻辑跨平台共享、性能稳定,且评分规则与桌面端、Web 端保持完全一致。

第 4 步:2FA 缺失与泄露密码检查

Missing2faChecker.kt 的判定逻辑是"5 个条件全满足才报警":

  1. 条目没有被用户排除 2FA 检查;
  2. 条目没有绑定 Passkey(有 Passkey 视为已有更强的第二因子);
  3. 是登录类型条目;
  4. 没有设置 TOTP 验证码;
  5. 该网站确实支持2FA——通过域名白名单Supports2fa判断,避免给不支持的网站报"误伤"。

同时,第 1 步刷新的泄露密码流(observeCompromisedPasswords)会持续统计有多少密码已出现在已知泄露数据中,与暗网监控(Sentinel)功能共同构成泄露风险检测。

结果如何呈现,用户能做什么

最终 5 路数据流被combine汇总为SecurityAnalysis,经distinctUntilChanged()去重后驱动界面。报告页 UI 见 SecurityCenterReportContent.kt,支持把条目"标记为已解决"。

用户也可以精细控制检测范围。SecurityCheck.kt 定义了 4 类检查(弱密码、泄露密码、复用密码、缺失 2FA),每条密码都能单独跳过其中任意一项检查——比如某个内部系统必须用弱密码,就不必让它反复报警。

小结

🔐 Proton Pass 安全中心的设计思路可以概括为一句话:"本地解密评分 + 远端泄露情报 + 白名单降噪"。4 步引擎全部跑在端侧,密码不离开加密边界;配合可排除机制与分档评分,让新手也能看懂"为什么这条密码有风险",并知道下一步该改什么。

【免费下载链接】android-passAndroid code for the Proton Pass application项目地址: https://gitcode.com/gh_mirrors/an/android-pass

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 17:40:18

智能体抽象推理新基准ARC-AGI-3:技术原理、实现路径与实战优化

1. 项目概述&#xff1a;当智能体遇上“抽象推理”的终极考场最近在智能体&#xff08;Agent&#xff09;和通用人工智能&#xff08;AGI&#xff09;的圈子里&#xff0c;一个名为“ARC-AGI-3”的新基准测试正在引发热议。如果你关注前沿AI研究&#xff0c;尤其是那些致力于让…

作者头像 李华
网站建设 2026/8/24 17:40:03

如何把QQ空间历史说说全部导出成Excel?GetQzonehistory备份完整教程

如何把QQ空间历史说说全部导出成Excel&#xff1f;GetQzonehistory备份完整教程 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一个免费开源的 QQ空间历史说说导出工…

作者头像 李华
网站建设 2026/8/24 17:38:30

具身智能TVA-VLA形态自适应与策略泛化机制

前沿技术探索&#xff1a;TVA智能体&#xff08;简称TVA&#xff09;TVA智能体&#xff08;亦称“AI智能体视觉”或“TVA视觉智能体”&#xff09;是依托Transformer架构与“因式智能体”理论构建的系统级视觉技术框架。它融合深度强化学习&#xff08;DRL&#xff09;、卷积神…

作者头像 李华
网站建设 2026/8/24 17:37:37

从模板到泛型编程:核心原理、技术价值与实践应用

1. 从“模板”到“泛型编程”&#xff1a;一种思维范式的跃迁“模板是泛型编程的基础&#xff0c;泛型编程即以一种独立于任何特定类型的方式编写代码”——这句话对于任何从C、Java或C#等语言入门的开发者来说&#xff0c;都像是一句刻在DNA里的箴言。但真正理解它&#xff0c…

作者头像 李华