聚焦安全:互联网场景的身份认证方法分析
文 / 肖新光2011年末多家国内网站用户信息泄露,让许多人意识到安全不再是与自己无关的话题。2012年3月《程序员》封面报道,我们分别从身份认证、数据库安全、中间平台、终端用户、云计算等几个角度为大家剖析安全所涉的方方面面。互联网之前的身份认证身份认证是一个古老的话题,从最早的户籍造册,到今天的2代身份证或社会保险号码,“我是谁”或“他是谁”的问题贯穿着人类社会的发展。身份认证...
·
文 / 肖新光
2011年末多家国内网站用户信息泄露,让许多人意识到安全不再是与自己无关的话题。2012年3月《程序员》封面报道,我们分别从身份认证、数据库安全、中间平台、终端用户、云计算等几个角度为大家剖析安全所涉的方方面面。
互联网之前的身份认证 身份认证是一个古老的话题,从最早的户籍造册,到今天的2代身份证或社会保险号码,“我是谁”或“他是谁”的问题贯穿着人类社会的发展。 身份认证的历史,是辨识方式演进的历史。辨识可能是基于个体,如悬赏缉拿画影图形,也可能是针对群体,比如两军对垒,要身着不同的盔甲以做混战中的辨识。身份认证的历史,也是与仿冒和窃取对抗的历史,从兵符形状相合到盖在圣旨上的“皇帝之宝”图章,都是在与诈符矫诏进行着斗争。因此,互联网身份认证,并不是孤立新生的技术,它具有传统的特点,也具有新生的便利性,同时也带来了新的困难与挑战。
如果说网络对身份识别方式的最大挑战是身份与物理实体的脱离,那么,一个开放的互联网所带来的最大挑战就是身份的虚拟化一般来说,在现实社会中,一个合法公民的身份是唯一的、终身的,但在网络上并非如此。对于大多数网络应用,用户都可以自由拥有多个身份,并可以随时新建或废止它们,当然也包括一不小心遗失它们。
用户名/口令 最原始的用户名/口令安全模式,据说出现在1962年MIT的CTSS计算机之上。其中用户名用来保证虚拟身份唯一,口令则用于保证虚拟身份安全。用户名一经建立不可改变,而密码则可以随时更改。 没有人发现这其中的革命性意义吗?身份和凭证被区分开了,因为与现实世界一样,身份是不变的,但凭证则可以更新。互联网身份认证的威胁也与传统安全要素一脉相承,包括验证场景的安全性、传递通道的安全性、凭据的质量等。
第一波威胁 传统的用户名/口令机制遇到的威胁,多来自其围绕着早期UNIX系统那种非常明显的君子时代的痕迹,但回头来看,这些威胁实际一直演化至今。
口令猜测:早期系统可以在低权限条件下实现用户名列表的获取,而同时还有默认用户名和内建账户的存在(默认口令可能为空),这就使口令猜测成为可能。依托某些信息,进行单点的密码猜解是一直存在的安全威胁,并逐渐推演出,单用户大密码档猜测、多用户常见密码猜测和今天的拖库后的撞库攻击。
登录过程嗅探:对于Telnet 、FTP这些非常原始的远程行命令工具来说,其连接场景都不是基于加密协议的。而HUB设备本身却基于广播,Sniffer是非常容易的事情。而今天基于主机在TDI、NDIS等层次的本机Sniffer,基于ARP欺骗的监听,和针对无线信号的各种威胁都显得更加普遍。
口令文件的抓取:尽管早期的UNIX系统进行了基于MD5或DES的加密,但其权限配置经常相对薄弱,其Shadow文件易于抓取,之后就可以进行从容地猜测或者暴力破解,这也可以视为“拖库攻击”的雏形。 但在1998-2000年,随着Switch取代HUB提升了Sniffer的实施成本,随着Server系统的安全性普遍提高,随着SSL的逐步广泛应用,安全威胁呈现出走向桌面的趋势,围绕着登录场景的安全构成了对口令安全的第一轮攻击。
登录场景的安全 登录场景的安全,焦点在于攻击者通过木马等手段,对系统输入和输出信息的获取。其中包括KeyLog(键盘记录)、录屏、远程控制等手段。攻击者利用这些手段截取用户名和口令的输入过程,从而可以在另一地点冒用身份进行登录,或者在用户本机进行非用户本人的操作。 而随着主流桌面系统日趋复杂,更容易遭到相关手段的威胁,根据不完全整理,上述威胁点如表1所示。 [caption id="attachment_10547" align="aligncenter" width="562" caption="表1 常见登录场景威胁"]
[/caption] 从场景安全的角度出发,安全工作者和应用开发者想到了很多方法来改善场景安全,除了主机检查、主机加固和反病毒软件外,也对登录过程的安全做了有针对性的尝试。
软键盘:用以对抗Keylog,通过鼠标点击进行密码输入,其主要问题是不能抵御远程录屏。
加扰:在输入过程加入扰动和解码两部分内容,使原始的Keylog获取不到真正的键盘记录信息,其主要问题在于扰动和解码代码本身难以有效对抗逆向分析,同时攻击者总能实现更底层的获取,实现在加扰前或者解码后获得真实的信息。
前置检查:用以在登录过程之间进行安全检查,包括环境检查(一般是针对Keylog的各个挂接点)和病毒检查两部分。而病毒检查有独立检查和外调反病毒软件两种。对于独立检查,由于不能挂载完整的反病毒引擎和库,一般都采用的是有针对性的小规则集或者采用云检测技术。 尽管有很多产品,声称已经彻底解决了登录过程的安全问题,但多数安全研究者依然倾向认为,在主机环境安全无法有得到效保障的前提下,很难实现这样一种安全登录方案—其过程是高安全等级的,并能与其他应用良好的兼容。 因此,安全工作者开始寻找其他方法,从双因数的思想出发,寻觅不依赖于主机场景的安全机制。
密保卡/矩阵卡 密保卡/矩阵卡作为一度在网游保护中普遍应用的产品,显然是受到了传统密码本思路的启发。 其基本思想是,服务商建立若干组不同的位置+信息数据,每组数据对应唯一ID,这个ID与位置+信息的数据以印刷的方式制成物理介质分发给用户,用户将相关ID与自身账号建立关联绑定。之后,服务商则不仅要求用户登录过程中输入用户名和密码,亦会要求用户输入在该介质上的一些位置信息。 这是一种典型的双因数安全思想。其密钥分发通过传统的销售渠道来进行,从而不具备在网络上监听的可能。而其自身又通过了刮刮卡等方式保护ID信息,来避免在分发渠道中遭遇翻拍记录等威胁。 但该机制很快遭遇到了安全挑战,那就是所谓的位置累计攻击。由于用户登录场景安全难以保证,每次位置询问的信息均难以避免不被获取,特别是为了避免对单个位置信息的猜测式破解,一般该机制都是同时生成多个位置,要求用户输入对应信息。因此,攻击者可以对相关位置信息进行累计。当信息累计到一定程度,攻击者就可能进行多次登录试探,当全部位置都落入攻击者之手,攻击者就进入系统,取消用户账户与密保/矩阵卡的关联。 这其实反映出了矩阵卡面临的主要问题,就是其口令空间明显受到了“工艺”和纸张大小的约束,使其为有限集。为了对抗这种攻击,服务商只能通过增加张数的方式来增加密码本的厚度,比如每月一张甚至每周一张。 如果我们从传统密码学的角度看待这种问题,亦能找到原因。目前只有一种密码机制具备者理论证明级的安全,那就是一次一密。但这一机制由于受到密码空间的限制,因此显然是“伪一次一密”。完全是民用级别的安全性。当然由于成本、易于携带等因素,其应用依然十分广泛。 有人认为由于矩阵卡基于印刷技术,因而成本低廉,但实际并非完全如此。与一般印刷不同,任何两张密保卡的内容都不同,同时还需要在印刷后准确切割。因此密保卡都需要特制设备印刷。在密保卡刚刚兴起的时期,相关印刷设备均价值百万。只有在印量足够大的情况下,相对电子令牌才有成本优势。 当然,作为一种频繁更换的产品,它也为网游厂商创造了一种增值服务的形式。
手机动态口令 对采用一次一密思路的体系来说,最大的困难不只在于大量密钥的生成和管理,如何低成本安全地传递密钥也是关键。 在PKI体系中,公钥算法被作为在同一个信道下可以实施安全会话密钥传递的方案。但落实到目前的节点安全场景来看,无论是Private Key本身,还是用以保护它的Passphrase,都可能被入侵者非常容易地获取。因此,PKI除非依托专用硬件,保证Private Key不被获取,否则在解决登录场景不安全条件下的登录安全的问题方面,并无优势可言。 由于手机的普及,使用文字短信作为动态口令分发的方法,成为一种可行的方案。它的优点是不需要增加其他动态口令设备的成本,而只依托现有电信服务就可以解决问题。 但这样的问题,也是明显的:
- 第一,如果短信有一定滞后,用户等待的体验并不理想,开玩笑地说,手机动态口令最普遍的场景是运营商的网上营业厅,因为只有运营商能保证自己的短信及时到达;
- 第二,对GSM网络来说,其监听成本日趋低廉,在定向攻击中,采用GSM动态口令的安全性,可能反而不如PC+静态口令安全。
- 第三,相对更大而更尴尬的问题出在手机上,传统手机的安全性在一定程度上来自于其简单。当它不再是那个只能进行语音通话和文字短信的无线终端,而变成一个掌上平台,当各种木马开始捆绑进入官方和非官方的App Store或电子市场,当越来越多的预装和复制的应用难以确定其安全性和真实来源时,手机安全性已经明显呈现出比PC更差的趋势。
更多推荐
已为社区贡献1642条内容
所有评论(0)