口令安全
随着互联网的发展,人们的日常生活不断网络化,资产不断数字化,身份认证逐渐成为保障用户信息安全的基本手段,20世纪90年代互联网进入千家万户以来,互联网服务(如邮件、电子商务、社交网络)蓬勃发展,口令成为互联网世界里保护用户信息安全的最主要手段之一。
口令,又称密码(Password或Passcode)。由于口令具有简单易用、低成本、易实现等特性,已经成为当前应用最为广泛的身份认证方法之一,是各种信息系统安全的第一道防线。且绝大多数的账号系统甚至是智能终端都是使用口令作为唯一的访问控制的机制,一旦口令出现问题,如使用弱口令、没有防暴力破解机制等,将会造成账号内财产被窃、个人隐私泄露等损失,如果大量的智能终端被攻击者控制,将会引发了严重的安全问题,如2016年10月发生的在美国的“美国断网”事件等就是由于弱口令造成的最典型的案例。
随着信息化进程的不断推进,一方面越来越多的服务需要口令保护,另一方面人类大脑能力有限,只能记忆5-7个口令,导致用户不可避免地使用低信息熵(简单、易记)的弱口令,在多个网站中重用同一口令,甚至在纸上记口令,这些都带来严重的安全威胁。
2004年,比尔·盖茨对外宣告口令将消亡,微软公司将使用多因子认证替代纯口令认证,与此同时,大量的替代口令的认证方案不断被提出,比如图形口令、生物认证、行为认证等,但是事与愿违,这些技术并未能如口令机制这样得到普及和推广。时至今日,口令的地位在业界不仅丝毫没有被撼动,反而在越来越多的被使用。
究其原因,虽然这些替代型方案有的在安全性方面优于口令,有的在可用性方面胜过口令,但几乎都在可部署性方面劣于口令,并且各自存在一些固有的缺陷比如,基于硬件(如智能卡、USBkey等)的认证技术成本高昂,使用不方便;基于生物(如指纹、虹膜)的认证技术不具有可撤销性,且存在隐私泄露问题。因此,在可预见的未来,口令仍将是最主要的身份认证方式。
口令认证过程的威胁可以分为三类。第一类是针对用户和口令输入界面的威胁,称之为用户端威胁;第二类是从网络上发起和针对网络传输的威胁,称之为网络威胁;第三类是针对设备上存储的口令文件的威胁,称之为设备端威胁。
用户端威胁主要包括:
肩窥:指的是某人越过其他人的肩膀观察其按键动作或偷看计算机屏幕上显示的数据。
社会工程:攻击者通过欺骗、诱导等社交手段来获取设备口令。
猜测:攻击者通过已经掌握的关于设备、用户的信息来猜测设备的口令。使用设备默认口令或个人信息衍生的口令都容易遭受猜测攻击。
网络威胁主要包括:
嗅探:一种被动网络攻击方式,通过侦听网络流量来捕获用户向系统设备中的认证程序证发送的口令。
重放攻击:攻击者复制认证过程的数据,并在其他时候重复使用这些数据来认证。
暴力攻击:使用工具,通过组合许多可能的字符、数字和符号来循环反复的尝试登录设备。
字典攻击:使用包含大量口令的字典文件与用户的口令进行比较,直至发现匹配的口令。
设备端威胁主要包括:
彩虹表:攻击者事先制作一张包含所有口令和对应散列值的表,然后使用口令文件中的散列值反查这张表获得口令。
离线破解:攻击者模拟口令认证的过程,针对口令文件通过分析或者穷举来找到口令。
逆向固件:攻击者通过反编译设备固件中的口令认证部分来找出可绕过认证的漏洞或者硬编码口令。
为了克服上述的安全威胁,我们需要从技术和管理两个方面入手,来增强口令认证的安全性。从技术层面,系统设备厂商应该在设计阶段就考虑口令安全保护问题,做到内建安全;在管理层面,培养和增强用户的安全意识。口令安全应该从账号安全、口令安全和用户安全三个方面进行考虑。前两个方面主要是针对系统或设备的设计实现方面的,后一个方面是对用户提出的。具体建议如下:
如何设计安全口令机制
在新建和修改账号时,系统设备应保证账号不能与已有账号重复,以做到一个账号可以唯一标识一个用户,以便于事后追溯。设备还应对账号进行命名规则检查,对特殊字符如等号、单引号、&等进行过滤,以预防SQL注入攻击,并且便于账号的输入和显示。
系统/设备应在口令设置时对口令的复杂度进行检查,使用户不能设置过于简单的口令,防止对于口令的猜测攻击和暴力破解。综合安全性和易用性的要求,参考业界的最佳实践,对于智能联网设备口令复杂度的要求应满足:对于随机生成的口令,长度应该不小于6个字符,对于人为设置的口令长度应该不小于8个字符,口令中要包含大小写字母、数字、特殊符号中的两种或两种以上。在用户设置口令的时候,设备应当对口令的复杂度进行检查,不允许用户设置不满足口令复杂度要求的口令。
用户设置口令时,设备应该显示口令的安全等级,以引导用户设置复杂度高的口令。通常口令的安全等级分为弱、中、强三个等级,口令的安全等级根据口令的长度、包含的字符种类等因素来确定。
为了防止肩窥,用户输入口令时要掩码显示,比如显示为*********;设备应禁止口令输入框的复制功能,防止恶意程序通过复制获取口令明文;为了减少口令暴露的风险,即使用户认证通过后,也不能通过用户界面或者API来读取口令明文。
用户修改口令时,要求用户输入旧口令,并且两次输入新口令进行确认,在旧口令验证通过后才将口令更改为新口令。口令修改过程应以原子操作的形式实现。
为了防止攻击者通过嗅探网络上的数据获得设备口令,在口令认证过程中不应传输口令的明文,应该传输口令计算的哈希值,并且采用挑战应答的方式,例如采用摘要认证的模式;为了增加安全性,口令认证的通道应采用安全通道,如TLS,https等。
用户如何安全使用口令
增强安全意识是提高口令认证安全性的一个不容忽视的环节。用户在使用和管理账号/口令时应注意如下的基本事项:
开始使用账号时应该及时修改账号的初始口令,并为账号设置一个满足口令复杂度要求的高安全级别的口令。
应为不同类型的账号设置不同的口令,防止一种账号的口令泄露,造成全盘的损失。
对于已知曾被泄露的口令,可能已经在黑客的口令字典里,用户应该避免使用。
用户在设置口令的时候,要避免常见的弱口令,比如有意义的单词,如Password,重复或顺序的单词,如abcd1234,QWER1234,以及上下文相关的字眼,比如admin12345。
应该妥善的保管用户名、口令。比如不能把口令写在纸条上,贴在显示器上,或者放到键盘下面。
应该定期对口令进行修改。
口令认证是当前普遍采用的身份认证方式。口令认证虽然具有便于使用、成本低等优点,但也存在诸多威胁,成为黑客攻击智能联网设备的重要切入点。所以不论是统设备生产制造商还是用户在设计、实现和使用时必须加强对口令的安全保护。