在《J0ker的CISSP之路》系列的上一篇文章里,J0ker给大家简单介绍了Access Control CBK中的身份识别知识。在访问实体(用户、进程等)为了访问信息资源提供了自己独特的身份识别信息后,信息系统需要通过一定的技术手段来确认访问实体是否和其所提供的身份识别信息所符合,这个过程,便是J0ker将要介绍的身份验证(Authentication)过程。
要理解身份验证,我们可以先来看一个在日常工作中经常遇到的例子:在绝大多数的企业或组织的信息系统或网络里,用户要访问自己的文件,必须先向系统提供自己的身份识别,然后系统验证用户的身份,如果验证通过,用户才能获得对自己文件的访问。可以这样理解,在访问资源的过程中,身份识别是用户提供给系统的,而身份验证及其结果则是系统提供给用户的。
信息系统可以使用三种因素,或称为方法来验证用户的身份,这三个因素是用户已知道的凭证(Something you know)、用户所有的凭证(Something you have)或者是用户的生物特征(Something you are)。我们常常可以在使用身份验证技术的场合看到诸如单因素身份验证方法、双因素身份验证方法这样的概念,单因素身份验证方法就是只使用单一凭证的用户身份验证方法,如在许多信息系统中默认使用的密码身份验证方式(验证用户已知道的凭证);双因素身份验证方法就是同时使用两种凭证的用户身份验证方法,如在一些信息系统中使用的用户密码加指纹识别(验证用户的生物特征)的联合验证,双因素或多因素身份验证通常用在安全要求较高的信息系统上。以下是一个三个验证因素的对比表格:
验证方法
|
应用举例
|
优点
|
缺点
|
用户已知道的凭证
|
密码、个人识别号码(PIN)等
|
部署容易,用户操作简单
|
容易遭受猜解、字典或暴力破解攻击、用户也常常不妥善保管他们的密码
|
用户已有的凭证
|
Token令牌、存储卡、智能卡
|
针对这种验证方法的攻击都很难成功
|
有可能会丢失或被盗,部署所需的成本高昂
|
用户的生物特征
|
诸如指纹识别、语音识别、虹膜扫描等生物识别设备
|
可提供简单并可靠简单的用户验证
|
部署所需的成本高昂、用户接受程度有限、错误拒绝/接受率需要满足安全策略的要求
|
为了帮助大家更好的理解上述的三种身份验证因素,并理解一些关键的名词,下面J0ker将详细的介绍三种身份验证因素中常见的技术实现及其特点:
用户已知道的凭证:
在这种身份验证因素中,最常见的技术实现便是密码(Password),密码是一个保密的单词(或一个字符串),用户可以通过提供正确的密码,确认自己的身份并获得对系统及信息资源的访问权限。密码的优点便是容易部署和使用,密码也是几乎所有的信息系统所默认支持的身份验证方法,但密码的缺点和它的优点一样显著,密码的保密性很弱,用户常常会为了记住复杂的密码,而将密码写在纸上,贴到容易被其他人发现的屏幕旁边或键盘底下;有的用户也会为了好记而使用容易被猜解的密码。因此,由于密码保护很容易被破坏,密码身份验证方式并不被认为是一种足够安全的身份验证方法。
为了克服单纯使用密码所带来的身份验证风险,一个被称为密码短语(Passphrase)的概念被引入到身份验证技术中。密码短语和密码并无实质上的不同,它们都是一个指定长度的字符串,它们之间唯一的区别是用户的理解上——密码这个单词看起来鼓励用户使用简单并且好记的单词,而密码短语看起来则是鼓励用户使用一个更复杂的短语。如,一个标准的密码短语可以从任意意义的句子或者成语中获得,如一个来自于”To be or not to be“的密码短语可以是TOBEORNOTTOBE。尽管密码短语要比密码的强度更高,但攻击者仍然可以轻易的使用自动化的密码破解工具来破解一个强度不够的密码短语。
密码短语也常常作为加密算法的密钥使用。在这种情况下,密码短语和密码的区别在于长度,密码的长度通常为6至8位,而密码短语则根据加密算法的不同,常常可以达到100多位甚至更长。
下面是J0ker对大家在日常工作中使用密码的一些建议:
1、密码应该定期更换,密码的有效时间需要取决于多个因素,如更换密码的成本、如果密码被破解所造成的影响、密码分发时的风险和密码使用的频率。通常高安全要求的信息系统需要每天更改密码,而低安全要求的信息系统可以每周、每月、每个季度乃至每年更换一次密码,一般情况下我们可以采取每一个半月更换一次密码的方法。
2、用户创建密码时,不应该使用词典中可以找到的单词或名字
3、用户在创建密码时,应该同时使用大写、小写字母、数字和特殊字符——如“Th3re!5aC4t”这样的密码。
4、用户应该尽量使用较长的密码,一个16位的密码要远比一个8位的密码安全。
5、其他:一个保密强度高的密码短语的要素是:只有创建者知道;足够的长度以保证安全性;很难猜测,即使攻击者十分了解创建者也无法猜解;容易记忆并容易正确输入。
2、用户创建密码时,不应该使用词典中可以找到的单词或名字
3、用户在创建密码时,应该同时使用大写、小写字母、数字和特殊字符——如“Th3re!5aC4t”这样的密码。
4、用户应该尽量使用较长的密码,一个16位的密码要远比一个8位的密码安全。
5、其他:一个保密强度高的密码短语的要素是:只有创建者知道;足够的长度以保证安全性;很难猜测,即使攻击者十分了解创建者也无法猜解;容易记忆并容易正确输入。
由于密码在访问控制上的重要作用,而许多系统往往把密码存储于密码文件中,因此保护系统中的密码文件也成为保证系统安全的关键因素。一般情况下,系统通常使用不可还原的单向加密方法来加密密码文件,同时还会限制一般用户对密码文件的访问。如果攻击者能够物理访问到存储有密码文件的服务器或文件备份,那么攻击者仍可以用自动化的密码破解工具破解密码文件中加密过的密码,因此,限制用户对服务器及文件备份的物理访问,也是保证密码安全性的重要措施。
说到密码破解,就不得不提一下信息系统针对密码破解的重要措施——账户锁定(Account Lockout),账户锁定是指系统在检测到某个账户登录密码错误设定次数后,自动关闭该账户的登录权限,并在一段时间后自动或由管理员重新开放。账户锁定能够有效的防御攻击者使用自动化密码破解工具所进行的攻击,也可以使管理员迅速发现攻击者的密码破解企图。一般情况下,我们常见的信息系统都会把账户锁定的次数设定为3到5次,密码错误次数达到规定数字后,通常会把账户锁定5至15分钟。
下篇预告:《Access Control(6)》,J0ker将会向大家继续介绍身份验证方法,敬请期待!
本文转自J0ker51CTO博客,原文链接:http://blog.51cto.com/J0ker/63103,如需转载请自行联系原作者