一部手机失窃引发的后续思考,如何提高我的个人账号安全?

 

背景

大概在几个月前,一篇名为<<一部手机失窃而揭露的窃取个人信息实现资金盗取的黑色产业链>>的文章出圈在公众视野引起了不小的轰动.

据作者老骆驼描述过程,其家人遭遇专业团伙作案,在手机失窃后SIM卡被冒用手机锁屏被破解,并且黑产团伙通过社工掌握了受害者个人信息,作为一个信安从业者,他在几轮对抗后,依然受到了不小的经济损失.

笔者在读完这篇文章后,一段时间都在反复思索,如果把文中主角换成自己,在遭遇手机丢失后岂不是更加被动?作为依赖电脑进行工作的人群,平时更多的信息保存在电脑中,会不会有笔电失窃的场景,甚至遭遇商业竞争性质的社工?发生更严重的信息泄露?自己有哪些具有可行性的手段,提高个人安全,避免陷入这种被动状态?笔者在实践了一些能够平衡安全和便捷性的可行方案后,准备在这里和大伙分享一些体会.

 

复盘问题出在哪里?

(1)厂商:

互联网厂商:

解决问题,首先还得确定问题出在哪,互联网产品,为了方便用户使用,提高用户留存率,在用户验证方式上,普遍的比较依赖SIM卡验证方式,而SIM卡虽然很便捷,但其作为安全信任链条的根源,存在着先天缺陷,并不100%靠谱.

在这个前提下,实力强的公司,会通过多层风控 理赔 法律等手段给用户兜底,弥补SIM卡的缺点和问题,即使小部分用户遇到相应问题也在厂商承受范围内,用资本实力实现了便捷与安全的平衡.

很多时候安全和便捷是冲突的,无法轻易兼顾的,一般的公司,依赖SIM卡验证手段提高用户体验的同时,没有条件去配套同大厂同样的安全设施,,这就打破了安全和便捷的平衡,当风控出现漏洞,理赔推卸责任,法律抓不到人,用户只能自己承担一系列损失.

SIM卡厂商:

由于地区发展差异,各地各品牌SIM卡的管理和服务情况参差不齐,一些地方SIM的业务现状,很可能处于和老骆驼文中同样的情况,给作案团伙留下展开社会工程学的空间.

(2)用户设备:

作为承载信息的实体,手机和电脑存储我们的各种账号信息,其中一小部分至关重要,一旦泄露被其他人接触,会大概率造成财产或声誉损失.保护手机电脑内容的锁屏功能,成为保护个人数据财产战役中的重要防线.而锁屏保护能否奏效,也取决于多个因素,每家手机厂商的安全能力参差不齐,可能在手机ROM和固件层面就存在漏洞,也可能有的设备因为停止了软件的更新维护,没有修补漏洞的条件.或者是用户禁用更新,关闭锁屏的情况.

(3)用户行为

没有安全意识

受限于专业和知识,无法意识到SIM卡密码 SIM卡漏洞 社会工程学 手机电脑锁屏等内容的关键意义.或者被互联网产品驯化,只管使用它们带来的便捷性,出了事只想着追究厂商责任.

侥幸心理

从来没觉得自己会弄丢电脑手机遇上专业团伙,成为骆驼文中的倒霉蛋.

受限于成本

只有千日做贼,没有千日防贼.保护个人信息安全当做一场战役,把犯罪团伙作为假想敌来对线,用户是没办法躺赢的,需要持续的投入成本才能维持自身安全.

这种成本是经济形态的,比如更新换代手机,选择更安全更新的设备.也可能是时间和注意力形态的,比如设置复杂的密码,设置不共用的密码,学习哪些点是安全的,哪些是不靠谱的.

人们都会天生的排斥那些复杂的事情,安全总是要为眼前的注意力和方便妥协.

 

对我们个人来说,哪些问题是可控的?哪些是不可控的?

先看上述这些问题中我没办法控制的:

厂商方面,少数互联网巨头公司每年都会在安全方面投入巨资让用户放心,但现实是很多公司没有这种条件,当发生<<一部手机失窃…>>文中的情景,黑产通过这些公司的贷款风控漏洞方式进行提现,通过xxxx人社类似的网站搜集建立社工信息,通过SIM卡服务流程漏洞解绑,用户对这些不稳定因素没有太多办法,会非常的被动.

用户设备方面,随着时间的推移,电脑手机软件系统总会被发现新的漏洞,例如一些早先是安全的手机,在停止更新维护后出现绕过屏锁,ROOT越狱漏洞等,用户可没能力修复漏洞,而对黑产团伙来讲这种设备属于不设防状态.

哪些是我可以控制的:

个人意识:

虽然没有办法影响各家互联网公司的安全水平,但是可以换个角度去想事情,既然他们都是不稳定因素,那干脆做最坏的打算,假设网龄很长,注册过很多应用,信息泄露和社工一定发生过了,我的全套资料在社工库都可查到,假设网贷都是三流公司,安全建设的投入很低,假设所有SIM卡天生就有缺陷和漏洞,假设所有SIM卡客服都是不靠谱的,假设SIM卡可复制,密码也能被绕过,这样直接一开始就完全不信任他们,从悲观的出发点考虑问题.

投入成本:

读完<<一部手机失窃…>>之后我的第一反应是这个犯罪团伙太努力了,真的是训练有素分工明确,为达目的无所不用的地步.

作为一个普通人连设置个SIM密码,使用不通用密码这样简单的事都懒得做,跟人家对线肯定是全程被动,被一顿毒打的.

所以想躺赢是不可能的,控制不了外部因素,但是自己可以花钱投精力在这方面.

 

接下来怎么办?

对于有人参与的环节,放弃幻想,完全不信任.

对于物和技术的方面,舍得投入成本,有使用新的安全技术的产品出来该换就换,选择产品时除了性价比还要多关注一下安全性的问题,还要舍得花时间去理解这种安全技术是不是起作用的,大概什么时间会变得不起作用,动态的去验证它.

梳理到上面这个阶段,提升和改造自己账号安全的逻辑已经清晰了,剩下的就是把该逻辑,贯彻到实际改造中.

 

从一个实际场景切入,开始我的改造工程

随便找一个网站注册账号,打开登录页面,思路涌现,脑子里浮现出4个关键概念:

(1)入口 (2)信任链条 (3)多因素验证 (4)密码管理

(1)入口

登录这个网站有4种方式,密码,短信,手机扫码,三方账号

只要有1种泄露或有问题,其他几种保护的再好也无济于事.

根据这个特性,提高账号安全性,即尽可能减少登录入口,如同关闭通向终点的通道一般.

(2)信任链条

用这个站中的三方账号登录方式举例,

Bilibili——>三方号码——>邮箱号/手机号

安全问题是一个信任链条,Bilibili账号如果绑了三方账号,它的登录验证就取决于绑定的三方号是不是安全的,而三方号是不是安全的取决于它绑定的邮箱或SIM卡是不是安全的,一环扣一环.

根据这个特性可以发现,越是链条靠后的环节越为关键.

若最后一个节点出问题,整个链条的安全性就不存在了,信安范畴里类似的说法叫Root of Trust信任之根.

对普通用户来说,提高账号安全性,即选择可靠的信任根.

哪些东西是理想的信任根?哪些是不靠谱的信任根?

我在参考了一些资料后做了些梳理.

https://security.googleblog.com/2019/05/new-research-how-effective-is-basic.html

https://security.googleblog.com/2017/11/new-research-understanding-root-cause.html

一般SIM卡/邮箱/USB安全密钥是最常见的信任根,其中SIM卡很方便,但最不可控不靠谱,关于SIM卡的攻击案例数不胜数.

邮箱作为信任根的话,具体看厂商的安全投入和建设,其中Gmail比较出色,Google针对高危人群,推出了基于纯物理安全密钥的高级保护计划,尤其在公司内部普遍给员工配置Titan SecurityKey.

USB安全密钥是最安全的,密码学设备要比人稳定可控的多,但缺点是要额外花银子去买它,目前有Yubikey ,Feitian TitanSecurityKey,开源的nRF52可选择.

总的来说,提高账号安全性,即避免用SIM卡作为信任根.

这个想法不错,但实际去执行又发现不可行,很多网站只支持用SIM卡手机号作为信任根,不给用户做选择的机会.

提高账号安全性变成了,使用SIM卡作为信任根,怎么保证相对的安全?

一般来说假想敌想要控制SIM卡有两个障碍,能物理访问SIM卡,且突破SIM卡PIN码.

用户要设置好PIN码PUK码是最基本的,但根据上面的悲观方法论和从不信任人的原则,SIM卡运营商有重置PIN码的权限,保不准就被专业团伙忽悠了.

自己每天都会带着手机到处晃悠,概率上也存在弄丢手机的可能性,自己作为人也是不可信的.

这种情况下我能想到的策略是隔离,专门弄一张SIM卡用作账号信任根,放家里隔离好,不做其它使用.

考虑到便捷性,所有账号都用那张专用SIM卡作为信任根,还不让把该SIM卡和手机随身携带肯定是不现实的.

还是要区分账号的重要性,只在重要号码绑专用SIM卡.

(3)多因素验证

要求访问者在登陆网站或执行高危操作时,除了提供密码,还要再提供更多证明,作为验证要素.

这个很好理解,银行的动态口令卡和U盾,早期网易游戏的将军令,都属于多因素验证的东西.

所以,提高账号安全性,即给账号增加多因素验证.

关于多因素验证的概念也比较杂,总的来说要搞清OTP和FIDO的使用.

受限于篇幅,我将一些简介内容放在另外的链接,这里只做些简单的总结.

2FA 代表双因素验证

MFA 代表多因素验证

OTP 狭义上可以理解为动态口令方式的多因素验证

FIDO 一个联盟,负责制定和推广标准(FIDO标准)

U2F 物理形态的认证方案(FIDO标准的)

UAF 生物特征形态的认证方案(FIDO标准的)

https://www.jianshu.com/p/8e9d5597896f

(4)密码管理

减少账号登录入口,使用最安全的信任根,到此为止了么?

还没有,众所周知的密码存在一些现实缺陷,如:

1 长度短有规律的弱密码存在爆破问题,
2 多个网站使用同一个密码,有一个网站应用泄露了信息,其他站点账号也就不安全了.
3 让人去记忆多个强密码,是反人类的,违反自然规律的.
4 而且密码过长反复输入不仅不方便,容易被摄像头和周围人记录.
5 输入的设备不可信,比如存在键盘记录器,或是设备不设屏保防护密码又有明文记录(如Chrome).

所以,提高账号安全性,即使用强密码,一站一密码不复用,且避免手动输入过程,且确认载体是安全的.

可以通过密码管理器实现上述需求,通过一个主密码管理众多密码,但这相当于把”密码安全问题”转化成了”密码管理器的安全问题”和”运行密码管理器的电子设备的安全问题”.

密码管理器和电子设备是靠谱可信的吗?我觉得这是动态变化的,要取决于使用工具的人,即用户掌握的信息和愿意投入的经济成本.

 

提高密码管理器的安全性

密码管理器的选择

首要问题是选择哪一个密码管理器,密码管理器分软件和硬件形态.

硬件密码管理器更可控一些,密码密钥存储在硬件黑箱中,一般又自带显示屏,没有连接PC和网络的接口与导出通道,基本上把密码安全问题转化成了物理安全问题.

但是便捷性上比软件的管理器差,如果预算充足并且有购买渠道,可以准备一个,把最关键的密码 各种充当信任根的内容存出到其中,常用的密码还是使用软件密码管理器.

软件如 1Password KeePass LastPass,苹果家的钥匙串等等,它们有各自的特点,感觉总体水平都差不多,端到端加密方案,用户数据不上传到服务器起码的,具体每个软件都有独自的特性,有偏爱的用户群,我觉得这样也不错,所有人选择不同的软件分散风险,可以避免集中被一窝端的事情发生.

管理器主密码的安全

考虑到管理器会被频繁使用,以及解锁它的主密码的复杂度造成的输入难度,以及输入过程可能被周围人和摄像头记录,还有其他一些现实问题,我觉得一定要实现密码管理器的免密解锁,提高密码管理器的安全性,即避免频繁输入管理器主密码.

Mac和大多手机普遍配有指纹功能,做到这一点应该不难.

这里笔者是Win10和1Password的环境,要麻烦一些.

在经过实践后发现,有两种方式可以在PC上实现免密解锁1Password.

方法1是将1Password设置为通过Windows Hello来解锁,恰好我得笔记本是支持的,所以”管理器主密码登录验证问题”,转化为”Windows登录验证问题”,要考虑如何提高Windows登录验证的安全性.

方法2是使用模拟键盘模拟输入密码,比如一种叫YuBikey的USB设备,这是一种强大且多功能的个人安全设备,它的其中一项功能是充当模拟键盘,可以给它设定一串固定字符输出,当用户物理触碰它时输出这串字符.

即把”长密码难以输入的问题”,转化成了”YuBikey的物理安全问题”.

这样的缺点是需要用户随身携带YuBikey不离手才行,希望以后会出一个指纹版的YuBikey,增加一个验证环节才触发输出.

提高操作系统的安全性

软件密码管理器运行在系统上,顺理成章的,提高账号安全转化成了提高操作系统安全.

使用普通账户作为主力环境的可行性

对于广大Windows用户,装一个杀毒软件防火墙是没有难度的,但是我还想再向前迈一步.

现代操作系统普遍要区分管理员和普通账户,这一点作为Linux Mac IOS Android用户应该都有比较多的体会,唯独在Windows上,难以实现普通账户作为主力环境.

一方面是软件生态导致的程序普遍需要管理员运行权限,我觉得还有一个重要因素,弹UAC窗口天天输管理员密码,是一个非常烦人的事情,强迫用户改变操作习惯是违反自然规律,不具有可行性.

所以配置一个带有指纹模块的笔记本,在弹UAC切账户时,做到免输密码,相对是让人可以接受的,我猜这可能也是Windows Hello出现的意义.

如果没有指纹模块,配置一个YuBikey模拟键盘免输密码也是可行的,但要注意YuBikey的物理安全.

锁屏密码的有效性

对于Android用户,选择一个靠谱的大厂品牌,在确认手机没有过时停止维护更新的前提下,把系统升级到较高的版本,确认没有解锁漏洞也无法轻易ROOT,在这个基础上设置好锁屏,普通用户和程序员们做到这种程度感觉差不多够用了,比较难的可能就是要舍得花钱追新手机新设备.

对于Mac IOS用户,过程类似Android,再就是多关注AppleID和固件密码,总的来说作为Apple用户比较省心.

对于Windows,锁屏密码也是至关重要的,电脑上诸多资料都受到它的保护,像主流浏览器通常具有保存密码的功能,用户存储过的密码可以很容易的在浏览器中查询到明文记录,Chrome对这个记录的访问验证就使用了Windows密码.

所以剩下一个问题,如何让Windows密码有效?

 

提高设备的安全性

磁盘加密

在PC上仅设置了账户密码还没有结束,目前硬盘上的Windows系统文件还处于一种不设防状态,有非常多的办法来绕过Windows密码,没有启动BitLocker的Windows锁屏好似马奇诺防线,在手机上也有类似的情况,我估计也是AndroidI IOS普遍开启了全盘加密的原因之一,还是不要去关闭全盘加密提高性能.

关于BitLocker,用户需要注意它的解锁方式和攻击面,再有就是域账户的情况下,BitLocker要管理员来配置.

解锁方式方面,有纯Password形式,USB密钥形式,智能卡形式,TPM+PIN码形式,各有适用的场景,其中USB密钥和智能卡两种方式可以实现免密解锁.

磁盘加密的攻击面,很多案例非常有参考价值,了解这些攻击面能一定程度的加强对其防范意识.

如女佣攻击,冷启动攻击,雷电 1394 PCIE接口的DMA攻击,硬盘自加密漏洞等等.

受限于篇幅,我将一些有关BitLocker的简介放在另外的链接

https://www.jianshu.com/p/258585c3025a

安全启动

在现实场景中,磁盘加密技术自身一般没有严重漏洞,问题常常出在启动环节的较早时机,黑阔可以通过伪造一个BitLocker输入界面,诱导用户输入密码,实现骗取解锁信息,即邪恶女佣攻击.

这样的话要实现安全闭环,还要向前挪一步,考虑前面发生的过程,即SecureBoot安全启动.

在进入操作系统之前,还有两个环节是OSLoader和BIOS/UEFI,SecureBoot的意义一般就是保障OSLoader的安全性,防止黑阔在较早时机插入类似Rootkit的东西做手脚,这个机制在手机平台普遍被落地,但在PC上常常被用户忽略,还是要多留意些,让这项功能发挥作用.

受限于篇幅,我将一些有关SecureBoot的简介放在另外的链接

https://www.jianshu.com/p/bb61e4e174fd

可信执行环境

SecureBoot环节保障了系统加载器是安全的,可是谁保证SecureBoot是靠谱的呢?

我们发现从密码管理器——OS——锁屏——磁盘加密——SecureBoot的过程,又形成了信任链条,最后还是需要一个信任根,建立整条信任链的安全性.

电子设备上对于信任根普遍的解决方案,是制造一个被隔离的黑箱环境,将验证安全性的部分算法和密钥放入黑箱中,限制外部环境对它的干扰(如读取密钥或篡改运行结果),保证该过程相对可信,即可信执行环境.

在PC平台上,这部分的技术实现为TPM和Intel SGX,需要普通用户在UEFI设置中找到它们并开启.

其他平台名字各不同,如AppleT2,GoogleTitanM,ARMTrustZone,SecureEnclave等等,但思想大致是一致的.

在购买新设备时可留意是否有配有类似的技术,一般指纹和固件锁的功能都依赖于它们.

受限于篇幅,我只好将一些有关可信执行环境的介绍,放在另外的链接.

TPM安全芯片

https://www.jianshu.com/p/088c8ac885ea

TrustZone

https://www.jianshu.com/p/bcdbbfc2f457

Intel SGX

https://www.jianshu.com/p/84f4d9e93924

至此终于,亡羊补牢,给自己的账号建立了一套闭环的屏障,虽然这个状态下仍然存在诸多问题,但还是要比以往的不设防状态强上不少.

(完)