这是一篇写在产品创作期间的文章,记录自己从开发密码卫士以来的一些心路历程。这篇文章原本是写在密码卫士产品文档里的一篇文章,刚好前几天发布在少数派的第一篇文章里看到有派友在评论区提到想了解一下开发过程。索性我就将这篇文章稍作修改首发布在少数派,满足大家的好奇心。

由于目前整个团队只有我一个人,产品草稿、UI设计、研发、测试、文案、国际化翻译等等,所有的事情都是自己亲力亲为,很多解决方案都在完成后因为达不到我的高标准要求推倒重来,一遍又一遍。由于工作日只有下班后的1-2个小时,整个创作过程其实非常艰辛。

因此我认为很有必要以文字的方式将这段不堪回首的创作过程记录下来,就当是一部电影或唱片的幕后花絮吧。

 

上线前夜

今天是2023年8月8日,晚上00:08,立秋。房间里一片安静💤。屋子外,响了一天的建筑工地钢铁的敲打声也早已停歇。每天晚上下班后,乘坐地铁结束一天的工作,穿越整个城市,回到家打开电脑开始我的另一份“工作”,这样的日子已经持续大半年了。从立项至今,为了尽可能地满足用户真正的需求和体验优化,很多东西改了又改改了又改。整个过程充满了心酸、焦虑、痛苦。

凌晨三点的夜景,拍摄于自家阳台

那些痛苦的开发回忆

因为这个世界有独立音乐人(比如刀郎、朴树、许巍、李健、周杰伦等等),所以也应该有独立开发者。他们除了能独立完成词曲演唱,还有对原创音乐的坚持。我相信,他们的大部分歌词和曲谱在发布前都经过反反复复的修改打磨。就像刀郎最近的《罗刹海市》,在他消失的10年里,很可能前面的七八年都在阅读大量的书籍,从中找到创作音乐的灵感。最终他被《聊斋志异》里的故事吸引,结合他过往的经历和当今社会的一些现象,最终才有了后来全球播放量破百亿的《罗刹海市》。(2023年七八月,罗刹海市风靡一时)

一、应用名称与LOGO设计

也就是品牌设计,第一个问题就是软件名称和LOGO应该是什么?起初密码卫士叫“Passbook”,挺酷的名字,就像Facebook,而且没有考虑中文名。后来在研发期间总感觉不太好,英文名终究没有中文名通俗易懂。经过大概半个月的时间考虑后,最终在“密码管家”和“密码卫士”中选择了后者。

而LOGO的问题,一开始其实也不是现在这个紫色风格,而是那个暗黑系,暗黑系可能比较符合隐私安全的产品定位,但是显得过于低调。大约在7月份,我考虑到LOGO在App Store上应该是可以引人注目的,于是又花了2个晚上把LOGO重新设计了一遍。当然也包括那些副本图标(密码卫士支持切换桌面图标,不应该引人注意,所以设计了好几种水果风格的logo,当然后来觉得太丑花钱找专业设计师重新制作了一套副本)的重新设计,添加了一些光泽图册,显得有一些3D感,3D感也是紧随iOS17和即将可能适配的Vision的设计风格。

附上当时刚重新设计好的LOGO

二、隐私安全问题

对于“密码卫士”来说,这应该是最重要的原则问题。你可能会容忍设计丑一点、体验差一点,但是不能容忍出现数据安全问题吧。所以,从iCloud私有数据库的设计、文本数据的加密、图片二进制的加密,都尽可能地考虑到这些原则问题,也因此断送了我们兼容安卓、Windows等平台的想法,起码短时间内是不会兼容的。我在另外一篇文章中《🔐如何保证数据的安全性》针对安全问题详细陈述了我们在保证您数据安全上所作的努力。

我不知道少数派是否支持语雀文档外链,原文在产品内部文档。这里简单说下:

1、分布式存储:与比特币类似,所有的数据默认都保存在设备本地或者iCloud私有数据库,我们无法从iCloud控制台读取用户的数据。这在软件内部iCloud控制台演示中可以验证,如果你有所怀疑,我们随时可以通过线下或直播共享屏幕的方式查看我们所有的数据控制台。

2、RSA和AES256混合加密:分布式存储的设计已经可以阻止99.99%的风险,但还需要防止苹果或者iCloud工作人员(云上贵州)读取您的数据,所以我们采用了RSA和AES256混合加密。如果有攻击者想要破解您在密码卫士上存储的数据,他需要付出多大的成本?先说答案:假设您有一台每秒可以计算20亿次的超级计算机,连续不断地计算,破解一个AES128加密的数据大约需要210400000000亿年,没错,2104亿亿年,这个时间远远大于宇宙的寿命6*10^9亿年。难度比把地球上所有的水煮沸腾还要难。而密码卫士采用的是AES256加密算法,难度在AES128需要的时间上再呈几何倍数增加,实际需要的时间已经超出人类和计算机所知的范畴。

3、开源。从2.0.0版本开始,我们将代码公开到GitHub了。但作为密码管理器,我们不敢100%开源,一些涉及安全的问题,比如密钥怎么生成和管理的,加密算法的用处,工程配置等等都是闭源的。如果你是程序员,请站在真实用户的角度考虑。善与恶都是这个世界客观存在的事实,如果100%开源可运行,会发生什么事大家很清楚,所以敬请谅解🙏

三、一套代码实现iOS、iPadOS、macOS的兼容。

从一开始对「密码卫士」的定位,就是苹果生态环境下的隐私安全守护者,那就必须一次性兼容iPhone、iPad以及Mac。多屏幕的适配意味着我将花费额外的开发时间。而Mac端的多窗口、自适应缩放、特殊的布局,iPad端的横竖屏,都将研发成本拉高了。

四、功能设计上的反复优化

在开发期间,由于整个团队只有我一个人,所有的事情都需要亲力亲为。考虑到这是一个高度隐私的产品,我更不敢把一个半成品发布上去,把早期的用户当小白鼠,这是极不负责任的行为。因此很多功能在开发中都尽量考虑全面,在这里记录一些曾经令我改了又改的几个点。

1、登录问题

最早的想法是用户不需要登录直接默认注册和登录,但如果不做登录,苹果审核人员、和用户肯定会有人觉得这款产品不够严谨,所以最终还是决定集成Apple ID的登录方式。现已改成自动登录iCloud,即使不登录,也可以离线使用。

2、其次就是用户信息问题。

应该为用户设计哪些信息,昵称、头像必不可少,因为这是非常基本的,可以方便用户区分当前登录的是哪个账户。最早只有几个本地图标,用户无法选择相册里面的图,因为这涉及到另外一个相对麻烦点的技术点。在这一切做完后发现,本地提供的头像太丑了,于是一顿整改后才有了现在这套头像图标。

默认头像

3、是否将开发者信息放在显著位置的问题

正如你在应用程序中看到的“开发者”页面(目前已改成“透明度“),这个页面我犹豫了很久,因为那是最重要的四个页面之一,它太重要了。经过我的再三思考,答案是:非常有必要,公开透明是我们的核心价值观之一。不同于其他软件,这是一个守护您隐私安全的软件。你在应用内存储的信息应该都是你非常重要的数据,那我们就不能像其他产品一样藏着掖着,我们随时欢迎您联系我们,就像与朋友聊天一样。

4、是否自定义图标问题

这是一个曾经令我奔溃的问题,刚开始,我尝试为每个可能被添加的账户设计一个图标,但是后来发现,这是一个永远也无法完成的工作。于是,不断地在寻求一些公共资源,最后选择了IconFinder(一家来自哥本哈根的设计公司)。它帮助“密码卫士”无缝对接了700多万个图标,您可以根据你的需要搜索你想要的图标。有了IconFinder还不够,因为总会有你找不到的图标,因此我们在软件内部添加了向开发者提出设计需求的入口。

没错,这个问题已经令我奔溃,在还没上线就已经pass掉。截止2023年9月:图标问题目前已经采用自动化的方式解决,顺便还解决了自动添加网址的问题,如果按照上面手动添加的方式,这绝对是一个永远也无法完成而且也做不好的工作。为什么需要网址?因为这是快速自动填充密码的必要信息,否则只能手动填充密码。

5、多个密码保险库的问题

“密码卫士”最初也没有多密码本的想法,在数据库设计上仅仅是专注于个人密码本。但是如果我一开始就这么设计,后面再想要设计多密码本的话,带来的改造成本会更加高昂。所以你们现在也看到了,它除了支持您添加自己的个人密码本,也可以创建你的家庭密码本、工作密码本等等。无论你是个人需要,还是团队需要。

写在最后

密码卫士是我最喜欢,但也是最令我伤心的一个产品。具体的原因可以参考我在少数派的第一篇文章。这篇文章是在开发期间写在语雀文档的一篇文章,没错,我在产品内写了一套针对简体中文、繁体中文、英语、阿拉伯语的产品文档,当然外文都是记录在Notion。这些文档花费了我大量的时间,所以在产品内部以“早期故事”命名,而且暂时没有更新的打算。今后会不定期将一些文章同步到少数派。并且会更新一些在出海过程中遇到的经验分享。