隐私政策 Privacy Policy

Account Password Helper 浏览器扩展 Account Password Helper Browser Extension

最后更新:2026年10月27日 · 生效日期:2026年10月27日 Last updated: October 27, 2026 · Effective: October 27, 2026

核心承诺:账号、密码、URL、备注、TOTP 密钥与个人信息逐字段加密后只写入您本机的浏览器存储,不上传任何服务器;本扩展的全部网络行为只有第 4 节列出的两类匿名请求。本政策另逐节说明了数据保留与删除的具体路径(第 8 节)、我们采取的安全措施(第 9 节)、每一类数据的使用目的与单一用途(第 10 节)、不出售不共享不转移(第 11 节),以及 GDPR / CCPA 等法规下您的权利如何行使(第 12 节)。

1. 概述

Account Password Helper(以下简称"本扩展")是一款开源的 Chrome 浏览器扩展,用于管理和自动填充账号密码。本隐私政策说明我们如何收集、使用和保护您的信息。

本扩展的源代码完全开源,您可以在 GitHub 上查阅和审计所有代码。

2. 数据收集

本扩展不收集、不接收、也不传输您的任何个人数据。您录入的账号、密码、URL、备注、TOTP 密钥与个人信息,自始至终只在您自己的设备上被处理;我们之所以能这样承诺,是因为本扩展没有任何自有服务器,也没有任何数据上报通道——不存在一个「我们这边」可以存放您的数据的地方。具体来说:

  • 不使用任何分析工具(如 Google Analytics、Mixpanel 等)
  • 不包含任何遥测或追踪代码
  • 不记录用户行为或使用统计
  • 不收集设备信息或浏览器指纹
  • 不要求注册账号、不采集邮箱或姓名,安装即可使用,因此我们不持有可用于识别您的标识符
  • 页面上读取的表单结构(输入框位置、选择器、域名)只用于定位要填充或锚定的字段,用完即弃,不写入任何存储、不外传
  • 「自动保存」为可选项且默认关闭:只有您在登录后的确认弹窗中点击保存,该条凭据才会加密写入本机存储(详见第 3 节)

3. 数据存储

所有数据仅存储在您的本地浏览器中(使用 Chrome Storage Local API),不会同步到云端或任何远程服务器。

敏感数据(用户名、密码、URL、备注、两步验证码密钥)逐字段使用以下方式加密:

  • 加密算法:AES-256-GCM(认证加密)
  • 密钥派生:PBKDF2,600,000 次迭代,SHA-256
  • 加密实现:浏览器原生 Web Crypto API(无第三方加密库)
  • 随机数:使用密码学安全的随机数生成器(crypto.getRandomValues)

主密码不以原文或可逆密文保存,其校验使用加盐的 PBKDF2(SHA-256,600,000 次迭代)校验值。

可选离线恢复:默认不启用、没有自动迁移。在「安全设置 → 离线恢复密钥」输入当前主密码可创建、换发或停用;创建和换发须先保存并回填验证套件,成功后才启用。 恢复密钥 R 由 32 随机字节生成,经 HKDF-SHA256 域分离派生不可导出的 AES-GCM 包裹钥 KEK,用当前主密码配置作 AAD 绑定数据钥 DK。 恢复功能仅在本机持久化包裹 DK 与非敏感元数据,不保存 R 或 KEK。此恢复包独立于会话,锁定或过期不会将其停用;它不新增网络请求、权限或遥测,既有匿名版本检查不变。

恢复套件不是备份:.aphrecovery 仅含恢复密钥、套件标识、版本和时间,不含密码库,请与设备和数据备份分开保管。 创建、换发或停用都不是备份;持有旧 R 与匹配旧恢复包/密文的人,不会因为您换发或停用而失去已复制数据的访问能力。怀疑泄漏时应修改主密码轮换数据钥,但历史副本无法收回。 已启用者正常改主密码也须先保存并验证新套件,成功后旧 R 不再适用于当前本机入口;未启用者保留原改密交互。若密码或回收站里有记录解不开,改密默认整笔中止;中止后可在明确知情下携带这些记录继续,但新主密码无法读取它们。

恢复套件是未加密的明文:.aphrecovery 内含恢复密钥; 拿到它并取得这台电脑的库数据即可解密,泄露后果等同于第二把万能钥匙。请与设备和数据备份分开保管, 不要留在下载目录,也不要经邮件或网盘传递;换发后请删除旧套件。

请这样理解「保持登录」:会话有效期内,用于恢复登录状态的密钥材料(数据密钥的包装值与包裹密钥)会随密文一起留在本机磁盘上, 这既是不重新输入主密码就能重启浏览器的原因,也意味着能读取这台电脑上该浏览器配置文件的程序,在此期间足以把数据解密。 手动锁定、闲置锁定或会话过期都会立即销毁这份密钥材料(只留一枚打不开任何东西的随机包裹密钥)。在共用电脑上,请在「自动锁定设置」中开启「浏览器重启锁定」: 完全关闭浏览器后密钥材料即被清除,重新打开必须输入主密码。

明文例外之一(到期提醒的账号名):为某条密码设置到期提醒时,该条的账号名会以明文冗余记录在本地的到期提醒表中(提醒由系统在任意时刻发出桌面通知, 含已锁定状态,账号名用于让通知指明是哪个账号),它同时会留下「哪个账号将在何时到期」这一信息;删除该条提醒、删除对应条目或清空回收站都会连带清除这条明文记录。

明文例外之二(主密码提示语):设置主密码时您可以自愿留一句提示语,它以明文保存在本机的 master_password_config 里,用途是在您忘记主密码、连续输错几次后帮自己回想——用主密码加密它就等于「忘了才需要看、看了却解不开」,因此明文是这项功能的前提而非疏漏。 提示语不参与任何密钥派生,也不包含主密码材料;它只是帮您回想,不构成找回机制。建议不要写入主密码本身或其变形,共用电脑上请勿设置,或只写只有您能解读的间接线索。

个人信息(姓名、证件号、手机号、邮箱、住址、银行卡信息与自定义字段)单独成库,整块以 AES-256-GCM 认证加密后写入本地存储,默认掩码显示;打开该库是否要求验证主密码由「个人信息库复验设置」决定(默认同一管理页会话内只问一次,锁定、会话过期或刷新、重开管理页后会重新问),库内的查看与复制不再额外索要主密码。 从网页输入框右键「从个人信息库选择」进入该库时,该菜单项不读取右键目标与字段内容、不预填检索词、不把库内的值回填页面,跨上下文只传递一个由浏览器盖章的来源标签页编号(一个整数,不含页面地址、不含字段内容、不含任何库内数据),用途是在库内给出「回到原网页」出口;这个编号不落盘,切回前还会复核来源页是否仍在原站点,不符即作废该出口。页面字段提示气泡上的同名按钮会额外带一个可选检索词:只在您点下按钮的那一刻读一次,取同一表单里判定为本人姓名那个框的值,或该格的标签文字,读完即用——不落盘、不进日志、不参与解密。两条入口都仍要过原有的主密码复验门槛,库内的值只由你逐字段或整卡经剪贴板限时清除通道复制。

4. 网络通信

本扩展仅进行以下两类网络请求,二者均不携带任何用户数据:

  • Chrome 应用商店可达性探测:版本检查时先向 chromewebstore.google.com 发送一次轻量 HEAD 请求(结果本地缓存 24 小时),仅用于判断您能否直接在商店里更新。
  • 版本更新检查:每 6 小时一次;当上一步探测到商店不可达(如网络受限环境)时,改向 GitHub 公开 API(api.github.com)发送一次只读请求,此请求不发送任何用户数据,仅接收版本号和更新说明。

除此之外,本扩展不进行任何其他网络通信。密码的导入/导出、邮件备份提醒均为本地操作。

5. 权限使用说明

本扩展使用以下 Chrome 权限,每项均有明确的功能用途:

权限 用途
storage 在本地浏览器中存储加密后的密码数据、个人信息和用户设置
activeTab 在当前标签页中检测登录表单并执行自动填充
scripting 向网页注入表单检测和自动填充脚本
sidePanel 提供侧边栏面板用于管理密码
alarms 定时检查版本更新、自动备份提醒和 Service Worker 常驻保活(后台约每 20 秒唤醒一次,用于保证侧边栏秒开)
notifications 发送版本更新和备份提醒通知
idle 检测用户空闲状态以实现自动锁定
clipboardWrite 复制密码到剪贴板并自动清除
clipboardRead 读取剪贴板以验证自动清除前内容未被替换
webNavigation 监听页面导航事件以优化表单检测时机
contextMenus 在网页右键菜单中提供填充入口(填充用户名/密码/两步验证码、生成强密码、打开侧边栏或管理页),以及「从个人信息库选择」——该项只做跳转:不读取右键目标与字段内容、不预填检索词、不把库内的值回填页面,个人信息始终留在管理页内由你逐字段复制
favicon 读取 Chrome 本地图标缓存(_favicon/ 端点),在密码列表与侧边栏展示站点图标,零外部网络请求
<all_urls>(host) 在任意网站上检测登录表单并提供自动填充功能

6. 第三方服务

本扩展在运行时不使用任何第三方服务、CDN 或外部脚本。所有代码均打包在扩展内部运行,内容安全策略(CSP)限制为仅允许加载自身资源(script-src 'self'; object-src 'self')。

7. 数据导出与备份

本扩展提供多种本地数据导出方式:

  • CSV/JSON 导出:生成本地文件下载,不经过任何服务器;文件为明文(含账号与密码),请妥善保管,长期留存建议改用加密备份
  • 加密备份(.aph):使用 AES-256-GCM 加密的本地文件
  • 个人信息加密备份(.aphid):使用 AES-256-GCM 加密的本地文件,仅本地导出导入;个人信息不参与自动备份,请定期手动导出
  • 个人信息明文导出 / 导入(.json,可选):供迁移到其他工具查看的未加密导出,需验证主密码并经风险二次确认后方可进行;文件为明文(含姓名、证件号、银行卡号、CVV 等),任何能访问该文件的人均可直接读取。该明文 .json 也可经「导入」按 id 合并重新导入(同样需验证主密码并确认风险),请谨慎使用并妥善保管
  • 邮件备份:默认走「加密备份」档,导出 .aph 密文文件后经 mailto: 唤起系统邮件客户端;改选「不加密备份」会先要求风险二次确认、再复验主密码,产物是含账号与密码的明文 CSV。两种形态下扩展本身都不发送邮件、也不接触邮件服务器
  • 站点规则导出(JSON):仅为该域名的填充选择器配置(域名 + CSS 选择器),不含账号、密码等任何凭据;文件为明文本地下载,不经过任何服务器,用于备份或团队共享

8. 数据保留与删除

保留位置与期限:您的全部数据只保存在本机的 chrome.storage.local 中,保留到您主动删除它们或卸载本扩展为止。我们没有任何服务端副本、日志、数据库或远程备份——因此不存在「请你们那边删掉」这种请求的对象;删除动作全部发生在您自己的设备上。

您可以使用的删除路径:

  • 删除单条条目:条目先移入回收站,在回收站中彻底删除或「清空回收站」后,其密文即从本机存储移除
  • 个人信息库:整块独立加密存储,删除条目即移除对应的密文块;清空回收站同样连带清理
  • 到期提醒:删除该条提醒、删除对应条目或清空回收站,都会一并清除提醒表里那条明文的账号名记录(见第 3 节)
  • 「忘记密码?查看找回方法」:主密码本身不能找回,提示语只是记忆辅助、不是安全提问。若已提前启用离线恢复且保留匹配密钥,可在锁屏输入密钥或导入套件,设置新主密码,再保存并验证新套件,恢复当前本机的密码、密码回收站、密码历史、个人信息与个人信息回收站。 默认任一数据无法解密都会阻止原地恢复,数据不做任何改动;只有恢复被中止后,用户明确知情选择携带,才会恢复其余数据,解不开的记录会原样留在库里、新主密码无法读取,也不会出现在列表或备份中。成功后保持锁定,用新主密码解锁。 没有可用密钥时,先在向导只读验证 .aph / .aphid,再到另一设备或独立浏览器 Profile 导入核对,最后才考虑清除原库,不能先清再试。 两种独立备份格式不变,仍需导出时的主密码,新恢复密钥不能解开旧备份;若导出时与当前是同一密码且已遗忘,旧备份仍打不开。明文 CSV / JSON 导出也是数据来源。 没有可用恢复密钥或可解备份时仍无法恢复,最后的「重置所有数据」经二次确认后清空本机库且不可撤销。数据或 Profile 丢失时,仅有恢复密钥无用,仍需匹配数据备份;也不能事后给锁死库补恢复
  • 卸载扩展:扩展被移除时,Chrome 会一并清除它在 chrome.storage.local 中的数据
  • 密码历史快照:每条默认保留 3 份旧密码(可配 1~10),随所属条目一同删除

您导出的文件(CSV / JSON / .aph / .aphid / .aphrecovery /站点规则 JSON)离开扩展后就归您所有,删除只能在您存放它们的位置进行;其中明文形态的文件包含可直接读取的凭据,请按第 7 节的提示妥善保管。

9. 安全措施

  • 静态加密:账号、密码、URL、备注、TOTP 密钥逐字段以 AES-256-GCM 认证加密后落盘;个人信息库整块加密
  • 密钥来源:数据密钥由主密码经 PBKDF2-SHA-256(600,000 次迭代 + 随机盐)在本机派生;主密码本身从不保存,磁盘上只留有加盐的校验值
  • 本地运算:全部加解密由浏览器原生 Web Crypto API 完成,不引入第三方加密库,也不调用任何远端密码学服务
  • 会话密钥销毁:手动锁定、闲置锁定与会话到期都会立即销毁内存与磁盘上的会话密钥材料;「保持登录」在这段有效期内留下的密钥材料及其风险已在第 3 节明示,共用电脑建议开启「浏览器重启锁定」
  • 剪贴板:复制密码后自动清除,并在清除前校验内容未被替换(这是 clipboardRead 权限的唯一用途)
  • 二次验证:打开个人信息库是否要求验证主密码由复验策略决定(默认同一管理页会话内只问一次),机密字段默认掩码显示;明文导出与「不加密备份」需风险二次确认并复验主密码
  • 投递面收窄:自动填充默认按精确主机名匹配站点规则才放宽,避免把凭据投递到仿冒或相邻域名;主密码输入框实时检测大写锁定
  • 代码与权限边界:CSP 限制为 script-src 'self'; object-src 'self',不加载远程代码;权限取最小集合且逐项标注用途(第 5 节);页面 DOM、导入文件与运行时消息一律按不可信输入做类型、长度与来源校验
  • 可审计性:源代码以 GPL-3.0 完整公开,上述每一条都可以在仓库中对照实现验证,无需相信我们的自述

10. 数据的使用目的(单一用途)

本扩展的用途是单一的:在您本机安全地保存账号凭据,并替您在自己的网站上完成填充与登录辅助。每一类被经手的信息只服务于这条链路上的一个目的:

  • 凭据(账号 / 密码 / TOTP 密钥 / 个人信息):只用于「加密存储 → 会话内解密 → 填充、复制或展示」,以及您主动发起的导出与备份
  • 页面表单结构与当前域名:只用于定位要填充的输入框、锚定要填写的验证码胶囊,以及决定该展示哪些条目和按哪一档匹配
  • 您自定义的站点规则:只用于在您指定的域名上改用您指定的选择器
  • 版本信息:更新检查只读取公开的最新版本号与不超过 200 字的更新说明,唯一用途是提示您可以升级(第 4 节)

明确不做用途之外的处理:不用于广告投放或用户画像,不用于训练任何模型,不出售、不共享(第 11 节),也不与第 4 节之外的任何系统或第三方交换数据。

11. 不出售、不共享、不转移

我们不出售、不出租、不以物易物,也不以任何方式向第三方共享或转移您的个人数据或凭据信息;不使用广告网络、数据经纪商或分析服务商;不把数据托管到任何云存储服务。由于没有任何数据离开您的设备,也就不存在云服务提供商访问、跨境转移或第三方执法调取数据副本的情形——没有可被调取的副本。本扩展不在任何意义上是您的数据的管理者或中间人。

12. 适用法规与您的权利

因为我们不接收、不持有也不传输您的任何个人数据,本扩展的开发者不担任任何个人数据的控制者或处理者。GDPR、CCPA/CPRA 等法规赋予的访问、更正、删除、可携带、退出「出售」或「共享」等权利,在这里都对应一个更简单的动作:本机数据由您直接删除,或卸载扩展(见第 8 节),无需向我们提出请求,也无需等待响应。

如果您仍希望就隐私事项联系开发者(例如所在组织的合规审查需要书面说明),请使用第 15 节的联系方式;我们会按适用法律予以响应。

13. 儿童隐私

本扩展不会有意收集任何用户(包括 13 岁以下儿童)的个人信息。所有数据仅存储在用户本地设备上。

14. 隐私政策变更

如本隐私政策有任何变更,将在本页面更新并标注变更日期。重大变更将通过扩展内通知提示用户。

15. 联系我们

如对本隐私政策有任何疑问,请通过以下方式联系:

Core Commitment: Account names, passwords, URLs, notes, TOTP secrets and personal info fields are encrypted field by field and written only to your browser's local storage — never uploaded to any server. All network activity this extension performs is limited to the two anonymous requests listed in Section 4. This policy also sets out, section by section: how long data is retained and every path you can use to delete it (Section 8), the security measures we take (Section 9), the purpose of use for each category of information and our single-purpose commitment (Section 10), that we do not sell, share or transfer anything (Section 11), and how you exercise your rights under GDPR, CCPA and similar laws (Section 12).

1. Overview

Account Password Helper (hereafter "the Extension") is an open-source Chrome browser extension for managing and auto-filling account credentials. This Privacy Policy explains how we collect, use, and protect your information.

The Extension's source code is fully open-source. You can review and audit all code on GitHub.

2. Data Collection

The Extension does not collect, receive, or transmit any of your personal data. The account names, passwords, URLs, notes, TOTP secrets and personal info fields you enter are processed exclusively on your own device. We can make that commitment because the Extension has no servers of its own and no data-reporting channel — there is no "our side" where your data could ever end up. Specifically:

  • No analytics tools are used (no Google Analytics, Mixpanel, etc.)
  • No telemetry or tracking code is included
  • No user behavior or usage statistics are recorded
  • No device information or browser fingerprints are collected
  • No account sign-up, email address or name is required, so we hold no identifier that could be used to recognise you
  • Page structure we read (input positions, selectors, the current domain) is used only to locate the field to fill or the code capsule to anchor, is discarded immediately, never written to storage and never sent anywhere
  • "Auto-save" is optional and off by default: a credential is encrypted into local storage only after you tap Save in the confirmation dialog that follows your sign-in (see Section 3)

3. Data Storage

All data is stored exclusively in your local browser (via Chrome Storage Local API) and is never synced to the cloud or any remote server.

Sensitive data (usernames, passwords, URLs, remarks, TOTP secrets) is encrypted field by field with the following:

  • Encryption: AES-256-GCM (authenticated encryption)
  • Key Derivation: PBKDF2 with 600,000 iterations, SHA-256
  • Implementation: Browser-native Web Crypto API (no third-party crypto libraries)
  • Randomness: Cryptographically secure random number generator (crypto.getRandomValues)

The master password is never stored as plaintext or reversible ciphertext. Verification uses a salted PBKDF2 (SHA-256, 600,000 iterations) verifier.

Optional offline recovery: off by default, with no automatic migration. Under Security Settings → Offline Recovery Key, enter the current master password to create, replace or disable it. Creation and replacement require saving and re-entering the kit for verification before activation. Recovery key R is generated from 32 random bytes. Domain-separated HKDF-SHA256 derives a non-exportable AES-GCM wrapping key KEK; the current master-password configuration is AAD binding the data key DK. Recovery persists only wrapped DK and non-sensitive metadata locally, never R or KEK. This envelope is separate from the session and is not disabled on lock or expiry. Recovery adds no requests, permissions or telemetry; existing anonymous version checks remain.

A recovery kit is not a backup: .aphrecovery contains only the recovery key, kit ID, version and time, not the vault. Keep it separate from the device and data backups. Creating, replacing or disabling recovery is not a backup. Anyone with old R and its matching old envelope/ciphertext retains access to those copied data even after replacement or disabling. If exposure is suspected, change the master password to rotate the data key; historical copies cannot be recalled. Ordinary password changes with recovery enabled also require saving and verifying a new kit first; after success old R no longer works at the current local entry point. Users without recovery keep the original password-change interaction.

What "stay signed in" really means: while a session is valid, the key material that restores it (the wrapped data key and its wrap key) stays on this device's disk alongside the ciphertext. That is why a browser restart needs no master password — and it also means any program able to read this browser profile on this machine can decrypt your data during that window. Manual lock, idle lock and session expiry destroy that key material immediately (leaving a random wrap key that opens nothing). On a shared computer, turn on "Lock on browser restart" under Auto lock settings: fully closing the browser then clears the key material, and reopening requires the master password.

Plaintext exception 1 (expiry-reminder account names): when you set an expiry reminder for an entry, that entry's username is redundantly recorded in plaintext in the local reminder table, because reminders fire as desktop notifications at any moment — including while locked — and the username is what makes the notice name an account. It also leaves behind which account is expiring and when. Deleting that reminder, deleting the entry, or emptying the trash clears the record.

Plaintext exception 2 (the master password hint): you may optionally leave a hint when setting the master password. It is stored in plain text in master_password_config on this machine so that it can still be read after you forget the password — encrypting it with that password would make it useless exactly when it is needed, so plaintext is the feature's premise rather than an oversight. The hint takes no part in key derivation and contains no password material; it only helps you recall, and it is not a recovery mechanism. Do not put the master password itself or a variation of it in the hint, and on shared computers either leave it empty or write only an indirect cue only you can decode.

Personal information (name, ID number, phone, email, address, bank card details and custom fields) is kept in a separate vault, stored locally only as one AES-256-GCM authenticated-encrypted blob; it is masked by default, and whether opening that vault asks for the master password follows a configurable policy (once per manager-page session by default) — viewing or copying inside an already opened vault asks nothing further. Opening that vault from a web page through the right-click item "Pick from Personal Info Vault" does not read the field under the cursor or any page content, prefills nothing and never writes a vault value back into the page; the only thing that crosses contexts is a source tab number stamped by the browser itself (an integer — no page address, no field content, no vault data) used to offer a "Back to the page" exit inside the dialog. That number is never persisted, and the origin is re-checked against the page you came from immediately before switching — if it no longer matches, the exit is voided. The identically named button on the in-page field hint carries one extra optional search term, read once at the moment you click it — the value of the field judged to be your own name in that same form, or the label of that field — and used and discarded there: never stored, never logged, never involved in decryption. Either route still passes the existing master-password verification gate, and values leave the vault only through your own per-field or whole-card copy under the timed clipboard wipe.

4. Network Communication

The Extension makes only the two requests below, and neither one carries any user data:

  • Chrome Web Store reachability probe: when checking for updates, one lightweight HEAD request goes to chromewebstore.google.com (the result is cached locally for 24 hours) purely to work out whether you can update right inside the store.
  • Version update check: every 6 hours; only when the probe above reports the store as unreachable (e.g. restricted networks) is a read-only request sent to GitHub's public API (api.github.com). No user data is sent — only version numbers and release notes are received.

No other network communication occurs. Password import/export and email backup reminders are all local operations.

5. Permissions Usage

The Extension uses the following Chrome permissions, each with a specific functional purpose:

Permission Purpose
storage Store encrypted password data, personal information and user settings locally
activeTab Detect login forms and perform auto-fill on the current tab
scripting Inject form detection and auto-fill scripts into web pages
sidePanel Provide a side panel for password management
alarms Schedule version update checks, auto-backup reminders, and always-on Service Worker keepalive (background wakeup roughly every 20 seconds to keep the side panel instantly available)
notifications Send version update and backup reminder notifications
idle Detect user idle state for auto-lock functionality
clipboardWrite Copy passwords to clipboard with auto-clear
clipboardRead Read clipboard to verify content hasn't been replaced before auto-clearing
webNavigation Monitor page navigation events to optimize form detection timing
contextMenus Provide fill entries in the page right-click menu (fill username/password/2FA code, generate a strong password, open the side panel or manager page), plus "Pick from Personal Info Vault" — that item only navigates: it reads no field content and no page content, prefills nothing and never writes a vault value back into the page; personal info stays on the manager page and is copied out by you, field by field
favicon Read site icons from Chrome's local favicon cache (the _favicon/ endpoint) for password list and side panel entries — zero external network requests
<all_urls> (host) Detect login forms and provide auto-fill on any website

6. Third-Party Services

The Extension does not use any third-party services, CDNs, or external scripts at runtime. All code is bundled within the extension, and the Content Security Policy (CSP) restricts loading to self-only resources (script-src 'self'; object-src 'self').

7. Data Export & Backup

The Extension provides several local data export options:

  • CSV/JSON Export: Local file downloads without passing through any server; the files are plaintext (usernames and passwords included), so store them safely — prefer an encrypted backup for long-term retention
  • Encrypted Backup (.aph): AES-256-GCM encrypted local files
  • Personal info encrypted backup (.aphid): AES-256-GCM encrypted local files, exported and imported locally only; personal information is not covered by automatic backups, so export it regularly
  • Personal info plaintext export / import (.json, optional): an unencrypted export for migrating to other tools, allowed only after verifying the master password and confirming the risk; the file is plaintext (name, ID number, card number, CVV, etc.) readable by anyone who can access it. The same plaintext .json can also be re-imported through the personal info import entry and merged by id, likewise requiring master-password verification and risk confirmation — use with care and store securely
  • Email Backup: defaults to the encrypted tier, producing an .aph ciphertext file handed to your mail client via the mailto: protocol; choosing "Plain backup" first requires a risk acknowledgement and then master-password re-verification, and the artifact is a plaintext CSV holding usernames and passwords. Either way the Extension sends no email and touches no mail server
  • Site Rule Export (JSON): fill-selector configuration only (domains plus CSS selectors), no usernames, passwords or any other credentials; the file is plaintext downloaded locally without passing through any server, intended for backup or team sharing

8. Data Retention & Deletion

Where and how long: all of your data lives only in chrome.storage.local on your own machine, and is retained until you delete it or uninstall the Extension. We keep no server-side copy, log, database or remote backup of any kind — so there is no object for a "please delete it on your side" request; every deletion happens on your device.

Deletion paths available to you:

  • Single entry: a deleted entry first moves to the trash; permanently removing it there or emptying the trash removes its ciphertext from local storage
  • Personal info vault: stored as its own encrypted block — removing an entry removes that block, and emptying the trash cleans it up as well
  • Expiry reminders: removing the reminder, removing the related entry, or emptying the trash all clear the plaintext account-name record kept in the reminder table (see Section 3)
  • "Forgot password? See recovery options": the master password itself cannot be retrieved; hints aid memory, not security-question unlocking. If recovery was enabled beforehand and you kept its matching key, enter the key or import the kit on the lock screen, set a new master password, then save and verify a new kit to recover the current local passwords, password trash, password history, personal info and personal info trash. By default, any undecryptable data blocks in-place recovery and nothing is changed. Only after such an abort, and only with explicit informed consent, can the rest be recovered; those records stay in the vault as-is, remain unreadable under the new master password, and are omitted from lists and backups. After success the vault stays locked; unlock with the new master password. Without a usable key, verify .aph / .aphid read-only in the wizard, then import on another device or in a separate browser profile to check the result before considering a wipe — never wipe first and test later. Both independent backup formats are unchanged and still need their export-time master password, not a new recovery key. If that was the same password now forgotten, old backups remain unreadable. Plaintext CSV / JSON exports are another data source. With no usable key or decryptable backup, data remains unrecoverable; the last-resort reset irreversibly clears the local vault after confirmation. If data or the profile is lost, a recovery key alone is useless and a matching data backup is still needed. Recovery cannot be added after lockout
  • Uninstalling the Extension: Chrome clears the extension's chrome.storage.local data when the extension is removed
  • Password history snapshots: 3 previous values per entry by default (configurable 1~10), removed together with the entry they belong to

Files you export (CSV / JSON / .aph / .aphid / .aphrecovery / site-rule JSON) leave the Extension and become yours to keep; they can only be deleted wherever you store them. Plaintext forms contain directly readable credentials, so handle them as Section 7 advises.

9. Security Measures

  • Encryption at rest: usernames, passwords, URLs, notes and TOTP secrets are encrypted field by field with AES-256-GCM (authenticated encryption); the personal info vault is encrypted as a whole block
  • Key origin: the data key is derived on your device from the master password via PBKDF2-SHA-256 (600,000 iterations + random salt); the master password itself is never stored — only a salted verifier stays on disk
  • Local computation only: all cryptography runs through the browser-native Web Crypto API — no third-party crypto library, no remote cryptographic service
  • Session key destruction: manual lock, idle lock and session expiry all destroy the session key material immediately; the key material that "keep me signed in" leaves on disk during a valid session, and the risk that implies, are spelled out in Section 3 — enable "lock on browser restart" on shared machines
  • Clipboard: copied passwords are cleared automatically, and the content is verified unchanged before clearing (the sole purpose of the clipboardRead permission)
  • Step-up verification: personal info fields are masked by default, and opening the vault asks for the master password per the configurable verification policy (once per manager-page session by default); plaintext exports and the "unencrypted backup" tier require a risk acknowledgement plus master-password re-verification
  • Narrow delivery surface: autofill matches the exact hostname by default and only widens through the tiers or site rules you choose, so credentials are not delivered to look-alike or neighbouring domains; the master-password field detects Caps Lock in real time
  • Code and permission boundaries: CSP is script-src 'self'; object-src 'self' with no remote code; permissions are the minimal set, each with its purpose listed in Section 5; page DOM, imported files and runtime messages are all treated as untrusted input and validated for type, length and origin
  • Auditability: the full source is published under GPL-3.0, so every claim above can be verified against the implementation rather than taken on our word

10. Purpose of Use (Single Purpose)

The Extension has one purpose: to store your credentials securely on your machine and to help you fill and sign in on your own sites. Every category of information it handles serves exactly one step of that chain:

  • Credentials (username / password / TOTP secret / personal info fields): used only for "encrypt at rest → decrypt within the session → fill, copy or display", plus the exports and backups you start yourself
  • Page form structure and the current domain: used only to locate the input to fill, the code capsule to anchor, and to decide which entries to show and which matching tier applies
  • Site rules you define: used only to substitute your own selectors on the domains you specify
  • Version information: the update check reads only the public latest version number and a release note of at most 200 characters, used solely to tell you an upgrade is available (Section 4)

Nothing beyond that purpose: no advertising or user profiling, no training of any model, no sale or sharing (Section 11), and no data exchanged with any system or third party other than the two anonymous requests in Section 4.

11. No Sale, No Sharing, No Transfer

We do not sell, rent, trade, or otherwise share or transfer your personal data or credentials with any third party; we use no ad networks, data brokers, or analytics providers; and your data is never hosted on any cloud storage service. Because no data leaves your device, there is no cloud-provider access, no cross-border transfer, and no copy that could be subpoenaed — there is nothing to subpoena. In no sense are we a custodian or intermediary of your data.

12. Applicable Laws & Your Rights

Since we neither receive, hold, nor transmit any of your personal data, the developer of this Extension acts as neither controller nor processor of any personal data. The rights granted by GDPR, CCPA/CPRA and similar laws — access, rectification, erasure, portability, opting out of "sale" or "sharing" — map here onto a single simpler action: you delete the local data directly, or uninstall the Extension (see Section 8), without filing a request with us or waiting for a response.

If you still wish to reach the developer about privacy matters (for example, your organisation's compliance review needs it in writing), use the contact details in Section 15; we will respond in line with applicable law.

13. Children's Privacy

The Extension does not knowingly collect personal information from any user, including children under 13. All data is stored only on the user's local device.

14. Changes to This Policy

Any changes to this Privacy Policy will be updated on this page with the revised date. Significant changes will be communicated to users via in-extension notifications.

15. Contact Us

If you have any questions about this Privacy Policy, please contact us at: