你好!我是一名独立开发者,我想分享我开发应用程序Keyri的旅程——一个严格的本地首先数字保险箱,适用于Android。

问题:隐私 vs 方便性

我一直很担心隐私。多年来,我拒绝使用基于云的密码管理器(并且看到大公司的泄露并没有帮助)。因此,我采取的解决方案是……老实说,很糟糕。我的所有密码都储存在一个密码保护的压缩的Word文档中,只在我的PC上存储。因为我也很害怕失去一切,所以我还在USB驱动器上保留了一个备份副本。这样做整个过程变得更加痛苦:每次更新密码都需要手动同步PC副本和USB备份之间的密码。每次我需要在手机上登录或更新密码时,我都必须:

  • 启动我的PC
  • 解压文件
  • 输入主密码
  • 搜索条目
  • 手动更新
  • 记得更新USB备份

有一天我意识到我迫切需要一个移动解决方案,但我仍然不想让敏感数据存储在别人的服务器上。

旅程:从Python脚本到Flutter应用

我一直喜欢编码,但从来没有有时间深入到应用开发。所以我使用这个问题作为借口,终于开始学习。Keyri的第一版实际上只是一个运行在我的PC上的本地Python脚本。它工作了,但显然没有解决移动问题。所以我决定学习Flutter。我花了几个月的时间在晚上和周末重建逻辑,构建一个真正的Android应用。随着我继续为自己添加功能,我意识到可能还有其他重视隐私的人正在寻找一个完全本地的替代方案。所以我最终打磨了它并将其发布到Play Store。

技术挑战与经验教训

以下是几个我需要解决的问题,没有依赖后端:

本地处理图像

我想让用户存储身份证、收据和敏感文件。图像在设备上压缩,使用ChaCha20进行本地加密,并且存储在应用程序沙盒内。

密码泄露检查不暴露密码

我将HaveIBeenPwned API集成到k-匿名性中。密码在本地进行哈希,并只发送前5个哈希字符。真正的密码从未离开设备。

条形码和QR扫描

我使用Google ML Kit进行条形码扫描,确保图像处理始终在设备上进行。

数据迁移不使用云同步

由于没有传统的云账户系统,我构建了加密的JSON备份/导入支持和CSV导入工具,以从浏览器如Chrome迁移。

备份实验

我正在测试可选的加密备份集成,目前正在尝试保持应用程序的本地首先哲学不变。

应用程序今天做什么

Keyri(以前称为SilentSaver)现在是一个完整的本地首先数字保险箱,支持:

  • 密码
  • 支付卡
  • 安全笔记
  • 加密图像/文档

它还包括:

  • 生物识别解锁
  • Android Autofill集成
  • 本地泄露检查
  • 加密备份
  • 零广告
  • 零跟踪
  • 零强制账户

Play Store链接:https://play.google.com/store/apps/details?id=com.nick.applab.silentsaver

我真诚地希望听到您的反馈,特别是来自重视隐私、安全或本地首先软件的人。感谢阅读!