从KeePass到PassXYZ,一个关于密码管理软件的故事

13 篇文章 0 订阅
9 篇文章 0 订阅

转载自PassXYZ微信公众号,PassXYZ是一款可以运行在安卓和苹果手机以及Windows10上的KeePass兼容应用。可以通过苹果应用商店,微软应用商店,Google Play和华为应用商店搜索关键字PassXYZ来下载该应用。

十几年前开始,从事IT行业的我就被日益积累的大量用户名和密码组合所困扰。当时公司的账号加上个人账号有十几个之多,本来是全用一样的密码进行管理,这样统一起来比较好记,但很快,公司就强制规定每三个月必须换一次密码,而且密码的设定规则还必须包括字母大小写加数字和特殊符号。这种密码本来就不容易记,想了很久,准备了几个相关联的,打算就这么用下去了,但后来又发现,密码不能重复或循环使用,系统起码能记住你的前十个密码。没多久,事先准备的几个密码消耗完了。无奈之下,开始在不同的系统中随机选用相对复杂的密码。但是,密码的数量和复杂程度跟易忘程度是成正比的。为了解决忘记密码的问题,我开始寻找安全可靠的地方做记录。最开始使用的是Excel,但后来发现相当有问题。公司电脑是最常用的,但经常要送去给IT部门修理。不是信不信得过的问题,IT通常有系统权限,直接用Excel文件记录密码实在不安全。于是,想到了要寻找专门管理密码的软件来帮忙。

怎样选择密码管理软件呢?

因为当时整个 IT行业还在起步阶段,可以选择的范围很小。当时用得比较多的是一款叫CodeWallet的密码管理软件。今天,即使在百度上搜索,你也只能找到很少有关CodeWallet的介绍了。在使用过了多款密码管理软件之后,目前仍然一直保留使用的是大约在十年前开始用的KeePass,或者说是KeePass家族的密码管理软件。为什么会一直用KeePass家族的软件呢?这要从我选择密码管理软件的几个原则讲起。

安全性(开源还是闭源)

在换了很多个密码管理软件后,有一个问题一直困扰着我,那就是安全性问题,相信这也是密码管理软件使用者所关心的首要问题。那么如何挑选高安全性的密码管理软件?

大家首先想到的一定是软件开发者的资质,必须是可信的提供者。但大公司出的就一定可信吗?因为在大公司工作了很多年,大公司的每个部门其实就是一个小公司。除非是旗舰产品,否则开发团队和产品质量的保证跟初创公司是相差不多的。有办法解决安全性问题吗?有的,那就是开源软件。

当我在网上发现了KeePass之后,决定就用它了。KeePass应该是最早的开源密码管理软件之一。所以到今天为止,积累了大量的用户。为什么开源可以解决开发者资质的问题呢?对于程序员出生的我来说,开源软件跟自己写的没区别。把源程序拿来自己改,想写成啥样都没问题。自己写的软件还不放心吗?另外,开源软件的本身资质跟流行程度有非常大的关系,一款流行的开源软件是经过了大量的编程人员审阅的,各种问题都能得到有效的解决,代码的质量和安全性也随时间的推移不断提高。这也是开源软件的最大优势所在。

开源软件的另一好处就是有超强的生命周期。之前用的商用软件都死掉几轮了,KeePass还在。如果使用的是一款被淘汰的商用软件,唯一的办法就是换。但对KeePass来说,即使是换,你熟悉的文件格式也不用变。因为开源软件通常有一个很大的家族,同一系列选择非常多。如果去KeePass网站看一下,你可以发现多达几十款变种。

格式(专用还是通用)

讲到这里,就要说说选择密码管理软件的另一原则或考虑因素了。这就是文件格式。相信大多数人都用过微软的Word或Excel。在办公软件领域,文件格式是非常重要的考虑因素。虽然有很多的文字处理软件,但为什么大家最终还是会选择Microsoft Office呢?因为它是最通用的文件格式。

在密码管理软件里,也会有类似的问题。虽然问题没那么突出,但任何软件都是有生命周期的,当旧软件没人维护,不得不转换到新软件时,文件格式就决定了你转换的难易和成本。虽然,密码管理软件格式没那么统一,但KeePass格式应该是最为流行的格式之一了。

当最开始设计软件时,设计者应该还没想到文件格式的问题。KeePass最初是在Windows上开发的,当十几年前,微软推出Windows CE后,Windows CE设备就成了智能移动设备的领头羊。为了使KeePass可以在Windows CE设备上运行,KeePass把最主要的功能分离出来成为一个可以供开发人员使用的程序库,这就是KeePassLib。

KeePassLib被不同的开发者广泛地使用,使KeePass格式可以在众多的平台上使用,比如除Windows外的Linux, MacOS X, Android和iOS等。当Windows CE在智能设备市场败给了Android和iOS后,KeePassLib被开源社区在Android和iOS上重新开发了很多变种。这一格式的官方出处始终由KeePass的原开发者Dominik Reichl在Windows平台上发布。

KeePass是由Dominik Reichl在Windows开发环境中使用微软的C#语言开发的,为了把KeePassLib移植到Android和iOS上,要分别把C#翻译成Android所使用的Java语言和iOS所使用的Object C语言。这个过程所带来的问题就是版本更新的问题。当Dominik Reichl发布了新的KeePassLib后,不同的开发者就需要重新在Android和iOS上根据最新版的KeePassLib进行更新工作。这时,工作量就决定了更新的速度和完成的质量。这就是为什么,Android版和iOS版的KeePass衍生应用质量不高的主要原因。

直至微软收购了Xamarin后,情况才有所变化。Xamarin是一个可以用微软的.Net框架在Android,iOS,MacOS X和Linux上开发应用的跨平台解决方案。由于发行的时间比较晚,虽然看上去很理想,但被使用的却不是那么广泛,但这对于解决KeePassLib的移植却非常有帮助。

在Android上最成功的就是Keepass2Android,它较完整地保留了C#版的KeePassLib,可以说是功能最完整的KeePass衍生应用,我曾使用过好几年。但Keepass2Android也有个问题,它是个用C#写的Android应用,并没有把Xamarin的优势完全发挥出来。所以Keepass2Android的作者没有推出iOS应用。我既有iPhone也有iPad,所以一直想找一款理想的iOS版的KeePass应用。在等待了许久以后,决定自己开发。在做了这个决定后,我所做的第一件事就是把KeePassLib在尽量少改动的情况下移植到Xamarin框架下。这就是我在GitHub上的开源项目KeePass Portable Class Library (KPCLib). Portable Class Library (PCL) 是Xamarin的框架的基础代码库类型。当软件被包装成PCL后,就可以发布到微软的开源仓库NuGet上供开发者使用了。讲了许多关于KeePassLib历史的故事,想必大家对为什么我对KeePassLib情有独衷的原因有所了解吧?

一句话,KeePass格式是密码管理类软件的最佳选择,没有之一。

存储(本地还是云)

在聊过安全性和文件格式后,再来谈谈文件的存储。这是个矛盾的问题。为什么呢?它牵涉到相互矛盾的三个方面,安全性,易用性和可靠性。作为一个普通用户,我当然都想要,但很难做到。

我们来分析一下这三个方面,看看为什么它们是相互矛盾的。

对于安全性问题,先要讲到的是可能接触到密码文件的范围。范围越大越不安全。打个比方,为什么银行卡的提款密码还是使用6到8位的数字密码,而公司账号的密码却要求8位以上字母加数字和特殊符号的组合?难道公司账户的安全要求比银行账户的安全要求高吗?显然不是。这就是由密码可能的接触范围来决定的。银行制定的账户安全策略比公司制定的账户安全策略要高很多,能接触到银行账户密码的范围比公司账户的范围小很多。当银行系统被攻击时,银行账户的密码可能被盗取者在ATM上或银行的网站上进行登录尝试。攻击者的时间和空间是非常有限的,所以在还没试完所有6位数组合前,系统就会被锁定。而公司的密码文件,可能被很多人接触到甚至可能被拷贝。当攻击者取得了密码文件的拷贝后,试错的时间和空间几乎是无限的。如果是6位数数字密码,当使用暴力破解软件来试错时,几乎可以肯定在相当短的时间内就会被破解。理论上讲,任何密码都会被破解,但当一个密码复杂到需要花几周、几个月甚至几年时间时,攻击者放弃的概率就非常大了。

从以上例子不难看出,你怎么存储文件决定了你需要多复杂的密码。如果将数据文件存储在云端,毫无疑问,非常类似于公司账户密码的情况,因为可能接触到你密码文件的范围是你无法控制的,你需要最少8位字母和数字加特殊符号组合的密码。而如果将数据文件存储在本地,并能确保不会被其他人拷贝,那么相对比较简单容易记忆的密码是可以使用的。这里反应的就是安全性和易用性之间的矛盾。简单的密码和云端存储对使用来说一定会带来方便,但同时也带来了安全性的问题。

再来讲讲可靠性,云端和本地存储哪个更可靠?简单的讲,都不可靠。可靠性取决于良好的使用习惯。不管是存在云端或本地都有丢失或被损坏的可能性。解决的办法就是备份,养成经常备份的习惯直接关系到当文件损坏或丢失时所面对的损失程度。良好的使用习惯增加了复杂性和使用难度,减低了易用性。所以每个人应该在自己能接受的安全性,易用性和可靠性之间找到适合自己的平衡。

我经常会和问我关于个人信息安全问题的朋友说,当你的系统和使用习惯有多复杂,在面对攻击者时,攻击者所承受的阻力就有多大。你所希望的应该是,当攻击者在进行了一系列尝试后,把你归入需要放弃的那一类。

以上是我在选用密码管理软件及使用方面的心得,希望我的分享对您在这方面有所帮助。

其实,对于刚开始使用个人信息管理软件的人来说,建议本地存储加备份就可以了。备份可以是几个设备间的同步,不会太麻烦。

密码管理或个人信息管理软件的使用很简单,但养成良好的使用习惯和积累与之相关的知识,并不是在短时间内就能做到的。在这方面,除了本文里讲到的考虑因素,还有其他多方面需要综合考虑。PassXYZ微信公众号将陆续发表一些关于个人信息管理方面的知识和培养良好使用习惯的文章,欢迎大家关注。

PassXYZ是一款可以运行在安卓和苹果手机以及Windows10上的KeePass兼容应用。PassXYZ最大的特点是通过提供大量的个人信息记录模板来分享和传递良好的使用习惯。PassXYZ个人信息管理软件和PassXYZ公众号的目标是通过两者的结合来推动和提高公众的个人信息管理水平。

您可以通过苹果应用商店微软应用商店Google Play华为应用商店搜索关键字PassXYZ来下载该应用。如果您想获得更多模板或对个人信息安全及管理有兴趣,可以搜索关键字PassXYZ关注公众号。您也可以通过微信号passxyz_kpclib来添加此公众号。PassXYZ公众号专注于个人信息安全及管理的相关知识。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值