「别人可以修改你的支付宝密码」漏洞,是哪里出了问题?
图片:Yestone.com 版权图片库安全从业者,非阿里
支付宝的验证,其实是个认证问题,它自创了一类认证因子。
认证问题是什么?
是你如何向我证明你是你。
想象一个外貌口音上你完全没见过的人,告诉你他代你一个朋友取走存放在你这的钱。
OK,你如何相信他?
最简单的确认办法就是让他告诉你一个你和你朋友才知道的「秘密」。
这个确认秘密的过程就是认证。
无论是密码,或者指纹,或者手机,或者钥匙,都是用来完成认证的「秘密」。不同的秘密也叫做不同的「认证因子」。
确定何时使用何种认证因子,是安全设计中要解决的。
想象一下,你显然不能因为陌生人提了你朋友的名字,就把朋友的钱给他。因为名字这种认证因子 ,并不足够秘密,在涉及资金时,我们说「认证强度不够」。
当然,如果只是取一块钱,或者向你问路,提名字这种认证方式还是够的。这是「根据不同场景确定不同强度认证」。
我们回过头来看阿里在修改密码这个场景的认证。这个问题火了,是大家在质疑找回密码场景下,这种认证因子的认证强度不够。
后来又出现澄清,说检测了网络环境,这是「补充认证」 ,或者叫「多因子认证」。
OK,这涉及到如何评估不同场景下需要的认证因子及其强度。
我们做安全,知道危害性取决于:威胁、价值、脆弱性 (或者按其他模型,也是一个意思)。
那么我们怎么评估不同场景下认证因子的安全性呢。
一方面,是考虑场景需要的认证强度,做这个操作,我需要多确定对方的身份? 对应于「价值」。
另一方面,考虑认证因子的秘密程度,这个秘密其他人可能知道或猜到吗?对应于「脆弱性」。
再有一个方面,是根据场景考虑认证因子的特点,精液指纹头发这样的东西不是随便人都能获得的,只有近距离接触的人才能获得的吧? 对应于「威胁」。
那我们回来看支付宝找回密码的这个认证。
找回密码这个场景下,涉及资金,价值大,认证强度的要求应当是高的。
那么两次九选一,1/81 显然是脆弱的。
但是它另一个认证因子,网络环境,有效地降低了威胁。也就是说面对的不再是网络上无数的潜在攻击者,而是共处一室可追查的几个人。
那么几个人中的 1/81,认证强度确实不见得比无数人 1/1000000 猜短信验证码低。
所以阿里用这种认证因子替代了短信验证码,是有一定的合理性的。
而不合理的地方在哪呢,是没有充分考虑这种认证因子的特点,导致可被有心人针对性攻击,造成「认证击穿」。
所以阿里的产品经理也确实需要提高一下自己的安全设计水平。
转载请注明:微图摘 » 「别人可以修改你的支付宝密码」漏洞,是哪里出了问题?