Shell's Home

Oct 22, 2015 - 1 minute read - Comments

说说密码和安全设计

趁着某站密码泄漏,我review了一下整个密码和安全系统。下面总结一下要点,大家可以参考一下。但是我觉得多数人无法照抄。

基础

假定

  1. **会随时找我谈话。(不要以为不现实,想想我得分最高的项目)
  2. 手机是会丢的。但是窃贼不会攻击经济无关帐号。

设计

  1. 尽量使得问题只出现于局部,不会波及全部系统。
  2. 在不严重的情况下,尽量简化使用,而不是增加复杂性。
  3. 在“大部分情况下更严密,小部分情况更糟糕”和“平均化”的选择中。只要小部分发生概率不高,选择大部分情况更严密,并尽力避免小部分情况。

帐号体系

  • 能用Oauth自动登录的尽量绑自动登录。能不自己管认证体系的尽量别自己管。
  • 境外关键服务,应绑定邮箱,不可绑定手机。其余服务应绑定手机和邮箱。如果没有假定1,能绑啥绑啥。
  • 集中绑定能减少帐号系统复杂性。其代价就是当基础手机/邮箱出问题时,后果会很严重。因此需要设计对应措施。
  • 重要服务(尤其涉及钱)只能有一个绑定寻回,切忌绑了邮箱绑手机,还都能寻回。一个出问题,帐号很危险。
  • 基础手机/邮箱之间严禁互相绑定,以防一个出问题全部出问题。
  • 多个身份间不要串帐号。一个帐号体系和另一个帐号体系之间可以发生来往,但是不能发生混同。想一下妹子用自己手机号帮多个男的登记开房的事。。。
  • 基础邮箱/手机的信任问题不是信任问题,是信仰问题。对应措施无法对应基础系统自身的问题,例如供应商恶意作恶,或者供应商出了问题。所以选择谁是个信仰问题,要仔细选择信仰。

OTP管理

  • 能开OTP的统统开起来。把emergency token抄纸条上丟家里。
  • 可以使用OTP的列表
  • 上面的补充:Microsoft, CloudFlare,Slack,Vultr,Tumblr,Ifttt,Eveonline,阿里云, DigitalOcean,dnspod,btc-e。
  • ms家会让你装他自己的app。请在手机系统的选项里选other,这样他就乖乖出一个QR让你扫了。
  • OTP的保存时间和系统安全性有关。可信系统上可以保存一个月,不可信系统上尽量在一天以内。太长时间可以登录不需要输入OTP等于没有OTP。

密码管理

  • 使用密码数据库保存数据。
  • 密码数据库管理程序应彻底开源。
  • 使用同步网盘保存和同步密码数据库(加密后的)。
  • 要注意防护整个系统突然失效。从出现概率分析,系统失效概率比被盗概率要高。而一旦发生失效,你的大多数帐号就全都失控了。
  • 手机上不应同步密码库,而应手工复制更新。以防同步系统出错清了所有副本。
  • 可以定期将基础密码(主要是邮箱)抄出来,放在家里的角落里。万一不得已,可以对所有系统做密码寻回。
  • 密码维护建议在同一个环境上进行(例如全是windows),以防两种不同版本的软件冲突导致数据丢失。
  • 不应在不可信系统上输入主密码。否则主密码和密码文件都会丢失,等于所有密码丢失。所以不要在不安全系统上使用密码管理系统做任何操作。
  • 要谨慎使用粘帖板管理程序。保存粘帖板历史的程序不要开。
  • 搞一个足够安全的系统随身。推论可知,系统越多,出问题可能性越高。搞一个足够安全的系统随身,可以避免万一的情况下被迫要在不安全的系统上输密码。
  • 这基本就是需要你有一只足够安全的手机。

手机

  • 如果手机有root,不算安全系统,不能使用密码管理系统。
  • 注意手机上的“可以收取短信”和“可以访问剪贴板”权限。如果一个应用可以访问这两个,基本就可以访问大半密码数据库,并收取验证码。也就是可以在无察觉的情况下把某个帐号偷跑。
  • 手机上保存的帐号尽量不使用手机寻回帐号,尤其是涉及钱的。如果帐号保存在手机上,而且可以用手机寻回。一旦手机丢失,拿到的人就可以长驱直入了。按照假定2,这很危险。

  • 银行卡升级到高密卡。低密卡的安全性问题就不说了。
  • 目前高密卡还是可以按照低密使用的,这其实仍然不安全,因为复制后还是可以偷钱。增强卡安全需要全部系统强制废弃低密卡。
  • 经济相关帐号需要一个“防止手机丢失”的手段,否则不应在里面长期放大量资金(可视为这笔钱会随手机丢失)。
  • 支付宝的设计是“手机高于一切”。所以在“手机会丢”的假定下,直接出局。微信的设计也类似,所以也出局。
  • 银行帐号,其密码无法通过手机寻回的,可视为安全。
  • 如果能通过手机寻回密码的,有转出限额(无法通过手机更改)也可以接受。

吐槽

  • QQ现在要求我用申诉的方法才能改密。但是申诉需要三个以前好友的帮助。我TM从98年开始用的,连同学都没几个还在上了。你让我去找麻花藤来申诉啊。。。
  • 支付宝本来还支持字母支付密码,后来直接改成了6位数字。手机应用本来还需要解锁,现在只在特定情况下需要输入手势锁。本来还有宝令,现在已经没有了。总体来说,支付宝的安全性是越做越差的。
  • 在整个密码体系里,就属支付宝和微信的安全性最差,就属他们涉及的钱最多。