16复习访问控制(1)
在51CTO安全频道特别策划的CISSP的成长之路系列的上一篇文章《系统架构和设计之安全标准》里,J0ker给大家介绍了CISSP知识体系中的第二个CBK系统——安全架构和设计。接下来的8个CBK里,我们将进入CISSP知识体系中更为具体的部分,它们也都更多的从技术层面来讲述如何使用各种安全方法和安全技术来实现信息安全目标——保密性、完整性和可用性。
访问控制(Access Control)是CISSP知识体系中的第三个CBK,它的内容包括如何使用多种系统提供的安全功能来控制对组织的信息和数据处理资源的访问,这些访问控制措施通过管理、物理和逻辑控制的手段,我们可以从第一个CBK——信息安全管理里面中了解到它们的实施原则, 我们来逐一了解下这三类手段的定义:
物理手段(Physical Control):是历史最悠久的访问控制手段,从许多个世纪前开始,人类就开始使用城墙、门锁等方式来限制其他人对自己财产的占有。另外一种古老的物理访问方法就是“口令”方式,要进入某个区域,进入者必须向哨兵提供一个口令,只有提供了正确的口令的人才能进入指定的区域。这些古老的物理访问控制方法经过发展仍然在我们现在的生活中发挥重要的左右,它们的基本原理依然没有改变,不同的也就是更多使用现代技术来实现。尽管访问控制这个CBK中提到的许多技术是用在物理访问控制方面的,但访问控制CBK的主要目的并非是物理访问控制,而是如何控制对信息系统的访问。关于物理安全的更多内容会在后面的一个CBK——物理安全中详细讲述。 逻辑手段(Logical Control):主要指的是在信息系统中部署的各种访问控制手段,其中我们日常生活中最常见到的就是“密码”这种方法,密码因为它的低成本易部署而成为绝大部分操作系统中的标准配置,但它的安全性并不高,也容易被恶意的攻击者所获得。在访问控制后面的内容里,我们还会了解到如何克服“密码”的弱点和更安全的逻辑访问控制方法。
管理手段(Administrative Control):是指通过特定的规章制度或工作流程来限制对业务资源和特定的工作目标进行限制的访问控制方法。和物理/逻辑访问控制方法针对的对象是资源为主不同的是,管理手段主要针对的是一个业务流程,主要的原则是防止单个人员能够独自的控制特定的业务流程,以防止欺诈等犯罪行为的出现。常见的管理访问控制方法有职责分离(Separation of Duties)、职责轮换(Rotation of Duties)和最低权限(Least Privilege)。
职责分离,就是指在完成一个关键的业务流程的时候,必须要根据业务的阶段分割,来安排不同的人员合作完成。比如在一个企业里面,如果一个职员能够负责设备的报废上报、审批和入库过程,他就有可能利用这个权利,将还没有符合报废标准的设备当作报废设备进行替换,然后再通过对仓库的控制权将其出售,在国外发生过类似的案件。因此,为了防止单个人员控制某个关键业务的整个流程,企业的管理层应该根据某个业务流程的阶段,安排不同的人员负责,进行互相监督,尽管这样有可能会导致合谋犯罪的发生,但这样进行权限分离后的风险仍然要比单个人员控制整个流程要安全得多。
在CISSP的考试中常常会出考察权限分离的情景题,回答这类题的关键就是要根据防止个人独自控制整个业务的原则来进行答案的筛选。
职责轮换,对于重要业务流程的某个职务或不太重要的业务流程,尽管进行了职责分离但仍然会有欺诈行为的风险,职责轮换便作为职责分离的补充被提出。在企业中常见的职责轮换的形式一般如下,管理层给重要岗位的员工安排假期,并在该员工休假期间进行目标岗位的工作审计。因为职责轮换一般都涉及到放假,所以职责轮换也通常成为强制放假。职责轮换除了可以进一步的防止重要岗位的欺诈之外,另外也可以让人员熟悉本来不属于他负责的其他工作,为业务流程的岗位安排带来人员备份和协调工作能力提升的好处。
最低权限,就是管理层只给用户分配满足他的日常工作所需的权限,比如财务部门的用户不允许访问审计部门的数据和资源、销售部门的用户不能访问产品定价等。在军事领域里面也有一个类似的“Need to know” 的原则,这就是最低权限原则的一个特例。最低权限原则还在系统架构设计、操作安全、网络安全等领域有所要求,属于CISSP知识体系中较为重要的概念,在复习时可以适当关注一下。
以上介绍到的都是属于访问控制CBK中最关键的概念,CISSP考试时对这几个概念的考察也是比较多的,在复习时可以充分结合工作经验或常见案例,掌握这几个概念。
17复习访问控制(2)
上一篇文章《复习访问控制》里,J0ker给大家介绍了访问控制的基本概念和三种访问控制类型(物理、逻辑和管理)的基本原则。我们知道,信息安全和每个安全相关的技术,目标都是为了保护信息资产的保密性、完整性和可用性(CIA)中的一个或全部不受损害,访问控制也是如此。因此,J0ker打算给大家介绍一下访问控制CBK所对应的C-I-A保护范围和涉及访问控制的一些常见威胁。 一、威胁的分类
访问控制通常部署在信息设施中,对信息处理环境——系统(包括硬件、操作系统和应用程序)、网络平台及连接(Intranet、Extranet和Internet)提供保护。除此之外,访问控制还对物理环境,诸如建筑物的入口、计算机中心,乃至特定的个人工作站。要更深入了解访问控制,必须先了解影响系统资源的各种威胁,单从保密性、完整性和可用性三者的层次上来说,这些威胁可以分类成: 保密性威胁:指某个实体,包括个人、程序或计算机获取对敏感信息的访问权。保密性威胁是访问控制针对的主要威胁类型之一。
完整性威胁:指某个实体未经授权访问并影响系统资源,另外一种完整性威胁的表现形式是实体未经授权的对系统资源进行添加或修改。完整性威胁也是访问控制针对的主要威胁类型之一。 可用性威胁:指系统中的某个资产被摧毁、使之不 可用或变得无用。 二、常见威胁列表
仅仅从C-I-A这个层次上去了解威胁的类型是远远不够的,我们在日常工作中所遭遇到的威胁往往更具体更技术化。下面J0ker再列举一下具体的威胁例子以帮助大家对访问控制所涉及的威胁有更深入的了解,当然,因为IT技术和威胁都在迅速的发展,J0ker不可能给出一个十分完整的威胁列表,下面所举出的例子,更多的是为了让大家了解常见威胁及其内容,并了解这些常见威胁属于哪种影响系统的威胁类型。另外,J0ker是按照这些威胁的英文单词顺序来列的,而非它们的重要程度或出现频率。
缓冲区溢出(Buffer Overflow): 缓冲区溢出是软件中最古老也最常见的问题,它是因为一个程序所获得的输入超出了它缓冲区的容量,导致程序出现异常并改变运行路径。缓冲区溢出通常会导致恶意代码的插入执行或程序获得管理员权限。缓冲区溢出属于破坏保密性和可用性的威胁。
隐蔽信道(Convert Channel):隐蔽信道指违反组织安全策略的隐蔽的数据传输路径,通常出现在两个或多个用户共享信息时。隐蔽信道包括时间信道(Timing Channel)和存储信道(Storage Channel)。隐蔽信道属于破坏保密性的威胁。
数据残余(Data Remanence):数据残余指在磁盘存储设备被消磁或数据被覆盖后,磁盘上仍存在的可被读出的数据。这些残余的数据可能会被有意或无意读出,并导致泄密。数据残余属于破坏保密性的威胁。
垃圾回收(Dumpster Diving):垃圾回收指攻击者通过翻找组织的垃圾桶,并在其中获得诸如用户名、密码等有价值信息的攻击手法。垃圾回收属于破坏保密性的威胁。
监听(Eavesdropping):指攻击者使用软件(如嗅探器等)监听网络,或使用设备对电信网络中所传输的数据进行监听的活动。监听属于破坏保密性的威胁。
电磁侦听(Emanations):指攻击者使用特殊的设备,对目标硬件设备散发出来的电磁辐射、各种无线网络的信号等进行获取并还原的行为。电磁侦听属于破坏保密性的威胁。
黑客(Hacker):黑客通常指通过技术手段获得非授权的系统访问,黑客有多种类型,如白帽黑客(White-Hat,合法的漏洞研究者)、黑帽黑客(Black-Hat,通过攻击来炫耀自己的技术人员)、恶意黑客(Malicious Hacker,会导致危害或损失的攻击者),通常我们常说的黑客,指的就是恶意黑客。
身份伪造(Impersonation):指攻击者伪装自己成为一个授权用户以获得未授权访问。身份伪造属于破坏保密性的威胁。
内部入侵者(Internal Intruder):指组织内部人员使用外部入侵者的手法对组织的敏感信息进行未授权访问。通常可以分为两种类型:授权用户尝试去访问没有得到授权的信息或资源;授权用户尝试物理访问没有得到授权的设备。内部入侵者属于破坏保密性的威胁。
处理能力损失(Loss of processing capability):指由于系统由于有意或意外的破坏停止进行信息处理。处理能力损失属于破坏可用性的威胁。
恶意代码(Malicious Code):指可以违反安全策略访问系统或获得最高系统权限的代码。恶意代码威胁还会在下面的文章中详细介绍。
中间人攻击(Man in the middle):指攻击者在网络中拦截并重定向数据通讯,以期获取数据通讯中的敏感信息。中间人攻击属于破坏保密性的威胁。
移动代码(Mobile Code):指通过网络从一个服务器上传输到客户端,并在客户端上执行的可执行内容,Java和VB script便是很好的例子。
目标重用(Object Reuse):指某个实体(用户、程序等)可以访问前一个实体访问磁盘、内存、临时文件等留下的信息,造成敏感信息的未授权访问。目标重用属于破坏保密性的威胁。
密码破解(Password Cracker):指专用于在密码文件里面获取加密密码的软件或程序,如果未授权用户能够对密码文件进行访问,就有可能通过破解密码文件内保持的密码,从而获得对敏感信息的访问权限。
物理访问(Physical Access):指对信息处理设施,如网络设备、主机、设施附属设施的物理访问。物理访问控制在物理安全CBK中会有详细介绍。
重放(Replay):指攻击者通过在在网络中捕获数据包并重新发送给目标主机以获得未授权的访问。重放攻击属于破坏保密性和完整性的威胁。
嗅探器(Sniffer):指能够在网络上读取或捕获数据包的软件工具,攻击者通常使用嗅探器来获得敏感信息。嗅探器属于破坏保密性的威胁。
IP欺骗(Spoofing):指攻击者通过IP欺骗获取只验证客户端IP的服务器访问权限。IP欺骗属于破坏保密性的威胁。
社会工程学(Social Engineering):指未授权用户通过欺骗授权用户以获取对敏感信息访问的行为。 间谍行为(Spying):指攻击者通过诸如窃听、摄像等高科技手段来获取敏感信息的活动。间谍活动属于破坏保密性的威胁。
针对性数据挖掘(Targeted data mining):指通过搜索数据库的可读信息,并根据可读信息推断出敏感信息内容的行为。针对性数据挖掘属于破坏保密性的威胁。
后门(Trapdoor):指系统开发者在系统程序中留下的可供其不经过验证就访问系统资源的功能。后门属于破坏保密性的威胁。
隧道(Tunneling):指跳过系统所提供的功能,直接访问底层设备的技术。隧道技术在使用底层访问方法的同时也跳过了系统的访问控制功能。隧道技术属于破坏保密性的威胁。
以上所列的只是常见的威胁保密性和完整性的威胁,而对于威胁可用性的拒绝服务威胁,和无法明确区分威胁类型的恶意代码,在下面的内容中J0ker还会继续介绍。在CISSP考试中,常常会考察以上威胁的概念和分类,有时候也会考察某个特定威胁的防御方法。
18详述网络威胁类型
给大家介绍了访问控制CBK里面一些常见的破坏信息资产保密性的威胁类型,那么什么类型的威胁会破坏信息资产的完整性和可用性?这便是本文将要介绍的两种具体威胁类型——拒绝服务(Denied of Services)和恶意代码(Malicious Code)。 一、攻击类型介绍
随着信息系统存在与外界进行数据交换的需求的增长,针对数据的传输过程的特定类型威胁也随着发展起来,并成为信息系统安全越来越严重的问题。我们可以按照这些威胁的作用形式,将它们分成两个攻击类型:主动攻击(Active Attack)和被动攻击(Passive Attack),它们的定义分别如下:
主动攻击:指攻击者对正常的数据传输进行修改,或插入伪造的数据传输。主动攻击类型的威胁会破坏数据传输的完整性。
被动攻击:指攻击者不对正常的数据传输的内容进行修改,而使用技术手段来获取数据传输的具体内容。被动攻击类型会破坏数据传输的保密性。
关于属于这两种攻击类型的具体威胁及信息,有兴趣的朋友可以在CISSP CBK中的电信和网络安全章节找到,J0ker在后面的文章中也会进行详细介绍。 1、拒绝服务攻击
并不是所有的攻击行为都能划分到主动或被动攻击这两个类型中,下面J0ker要介绍的拒绝服务攻击就不属于主动或被动攻击类型。拒绝服务攻击是所有破坏资料可用性的攻击的总称,它通常的表现是由服务系统接受到恶意或意外输入的错误数据而导致崩溃,进而导致其他合法用户也无法使用服务系统的资源。发起拒绝服务攻击的攻击者不会尝试去偷取或损害信息系统中的敏感信息,而只是要使系统中的合法用户无法使用系统的信息资源。我们在日常生活中最常遇到的垃圾邮件就属于拒绝服务攻击的一种,在垃圾邮件很多的情况下,用户的邮箱就会充斥着垃圾邮件,用户正常的邮件就无法收发。 拒绝服务攻击还包括其他的一些特例:
分布式拒绝服务攻击(DDoS,Distributed Denied of Service):攻击者控制成百上千台机器同时向目标服务器发送数据包,导致目标服务器因为处理能力不足而响应缓慢或直接当机。攻击者所控制的机器网络称之为“僵尸网络”,也即我们经常能在媒体上看到的Botnet。
图1 死亡之Ping(Ping of Death):Ping常用来在网络上确定指定系统是否在线,它使用ICMP包来询问目标系统是否在线,目标系统在收到Ping程序所发送的ICMP包后,会向发送者返回一个ICMP包已收到的状态报告。如果攻击者在短时间内同时向目标系统发送大量的Ping ICMP包,目标系统就会因为忙于处理ICMP包而无法响应合法用户的信息资源请求。死亡之Ping是流行于1996-1997年间的
拒绝服务攻击类型,由于它攻击成功的关键在于攻击者的带宽,因此随着通讯和软件技术的发展,近年来死亡之Ping这种拒绝服务攻击方式已经消亡,但作为CISSP了解拒绝服务攻击历史和来源的材料还是相当不错的。
Smurfing:同样是使用Ping ICMP包所实施的拒绝服务攻击类型。攻击者向一组系统或一个内部网络发送包含有源地址为目标系统的伪造Ping ICMP包,接收ICMP包的存活系统就都会向目标系统反馈信息,目标系统就有可能因为处理数量巨大的反馈信息而无法响应合法用户的信息资源请求。Smurfing攻击可以看作是死亡之Ping的升级版,近几年互联网上还出现过类似Smurfing的邮件拒绝服务攻击,也即攻击者以目标系统名义伪造大量的邮件发送给许多服务器,导致目标系统的邮件服务被大量的退信所淹没。
SYN洪水(SYN Flooding): SYN洪水是互联网上最流行的拒绝服务攻击方式,它利用了TCP协议需要进行三次握手的特点,向目标服务器发送了大量伪造源地址的SYN连接请求,占满目标服务器的连接队列,导致目标服务器无法响应合法的用户的信息资源请求。SYN洪水所需的网络资源不多,发起攻击的节点也不需要很多,因此这种拒绝服务攻击方式被攻击者广泛的使用在互联网上。下图是SYN洪水的示意图:
图2 2、恶意代码
恶意代码是破坏信息完整性和可用性的主要威胁之一,它也是我们日常最常碰到的威胁之一。根据各种恶意软件的表现形式不同,可以分成以下几种类型:
病毒(Virus):计算机病毒是一段可以附加到系统内已有可执行文件的可执行代码,它不能独立存在,只在程序被启动时随之启动,实施感染或破坏。病毒在发作时可能只显示一些玩笑信息,也可能会破坏系统文件,造成严重损失。
蠕虫(Worm):蠕虫是通过网络自动复制、传播自身的恶意软件,它是一个独立的程序。早期有名的蠕虫有1980年代的莫里斯蠕虫事件,当时的蠕虫只有自动复制传播的功能。现代蠕虫已经和密码盗取、敏感信息获取等犯罪行为相结合,并使用了多种高级的编程技术。
木马(Trojan Horse):木马是一种隐藏在用户系统中,并提供给攻击者访问到用户系统所有资源的恶意程序,它是一个或多个独立程序。木马不会像病毒那样将自己附加到系统内的可执行文件,也不会像蠕虫那样会自动复制传播,它通常通过网页浏览或电子邮件附件传播,是危害仅次于蠕虫的恶意软件。
逻辑炸弹(Logical Bomb):逻辑炸弹是一种隐藏在系统中,在特定条件(日期、时间、操作等)会激活并执行破坏行为的恶意程序。
下面我们来看看近几年造成较大经济损失的恶意软件事件:
图3
2003-2004年间的冲击波蠕虫以及2006-2008年的Storm蠕虫在扩散范围和造成经济损失的方面已经远远超越了它们的前辈。下面是来自SecureComputing的最新恶意软件分类。
19 详述安全威胁控制手段
详细的向大家介绍CISSP访问控制CBK里的威胁控制手段、以及现有的技术和工具。
传统上,访问控制的手段可以分成管理访问控制(Administrative Access Control,包括人员控制)、物理访问控制(Physical Access Control)和逻辑访问控制(Logical Access Control),它们都是通过限制对信息系统及资源的访问来实现控制的。
管理访问控制手段主要是从管理层面上进行限制,如组织的安全策略及信息系统使用流程。在管理访问控制手段中还包括针对人员的控制(Personnel Control),人员控制主要是通过在招聘员工时的背景检查和签署安全保密协议,来确保能够访问到信息系统和资源的人员的可靠性。
物理访问控制包括锁和证件等有形的物件,而逻辑访问控制就是安装在信息系统内,作为信息系统的一部分发挥访问控制作用的手段,如反病毒软件、密码限制手段和加密技术等。下面是访问控制手段的一些实现的列表:
◆逻辑控制(Technical/Logical Controls) 访问控制软件,如防火墙、代理服务器等 反病毒软件 密码控制
智能卡/生物识别/证件 加密
拨号回呼系统 日志审计 入侵检测系统
◆管理控制(Administrative Controls) 安全策略和流程 安全意识训练 职责分离 安全回顾和审计 职责轮换
人员雇佣和解雇策略 安全保密协议 背景检查 绩效评估 强制休假
◆物理控制(Physical Controls) 证件
十字转门(Turnstiles)
使用锁、门、警卫等手段限制对物理资源的访问
对大部分的组织来说,部署所有可用的访问控制手段是既不经济也没有必要的。因此,组织必须在需要部署的访问控制手段和可用的访问控制手段之间进行平衡,并最终使访问控制手段的部署满足组织的安全策略。
理解访问控制手段之系统访问
为了让大家更容易理解各种访问控制手段,我们可以根据控制的对象把它们分成两类:系统访问和数据访问。我们先来看系统访问。
针对系统访问的访问控制用于限制或控制对系统资源的访问,它的流程包括对系统资源访问者身份的识别和身份验证,也即识别(Identification)和验证(Authentication)流程。
我们在日常工作中常常需要做的输入用户名、输入密码, 这个过程便是用户的身份识别和验证过程。在识别和验证流程中,用户首先必须让系统知道访问者是谁,通常情况下这一步是由用户提供他在系统中的用户名,接下去的步骤是由系统根据用户所提供的信息来验证第一步。在这里要提醒一下,不要把验证(Authentication)和授权(Authorization)这两个单词所弄混了,验证是确认用户的身份正确,而授权的动作发生用户身份识别和验证之后,确认用户可以做什么不可以做什么。 1、身份识别的功能
身份识别是所有信息系统安全功能的基础,信息系统内的所有实体都必须有一个唯一的标识以与其他实体相区别。唯一的身份标识是访问控制流程的重要组成部分,它提供如下功能: 1、确认用户的身份
2、与日志审计功能结合以提供审计能力(accountability) ◆提供用户行为追踪能力 ◆用户需要对自己的行为负责
用户所使用的唯一个人标识在不同的场合有不同的叫法,比如登录ID(Logon ID)、用户ID(User ID)、账户号码(Account Number)等,但它最常见的叫法是用户名(User Name)——用户向系统提供用户名,以使系统辨认出使用者是谁。同理,在系统中有许多实体也需要有唯一的身份标识,如系统服务、硬件设备等,任何会对系统进行访问的功能或需求都需要分配一个唯一的标识。
由于目前网络的广泛分布及网络中用户数量巨大,因此,一些简单的管理方法往往会引入到身份识别管理流程中以降低管理成本,比如对系统中的用户名命名方式进行书面规定。有的组织使用用户的姓加上名的第一个字母组成用户名,也有的组织会使用用户的全名并在姓和名之间加入下划线组成用户名。不管组织使用的是哪种命名方式,它使用的原则都是根据组织的流程规定,而非取决于所使用的系统类型。
除了逻辑的身份识别方式之外,物理的卡片或证件系统也往往执行身份识别的职能,物理身份识别系统往往用于限制对某些区域的进入和访问,如对某个建筑物、服务器机房等。在一些组织中,卡片或证件系统往往也同时用作网络访问控制的手段,比如,智能卡系统在组织中常常被用作对能够接入网络的服务器机房或网络终端机房的进入进行限制,如果用户没有有效的智能卡,便不能从机房接入企业的网络。生物识别系统,如指纹识别、掌纹识别和语音识别系统也往往用于执行物理访问控制系统的用户身份识别功能。
身份识别功能的另外一个重要功能就是保证可审计性,一个唯一的身份标识可以使管理员通过日志审计功能,对该标识所属的实体——用户或系统服务所执行过的行为进行跟踪;同时,一个唯一的身份标识也会使用户在执行对系统访问及特定操作时对自己的行为负责。
2、身份识别使用指导:
确定性(Issuance):生成身份识别的过程必须是安全并经过文件记录的,从根本上说,身份识别的使用效率及安全性,与身份识别的生成过程密切相关。
命名标准(Naming Standard):用户或其他系统实体的身份识别必须遵守同一个命名的标准,如,系统中所有用户名的格式必须是名+姓的第一个字母,那么John Smith的用户名就应该是SmithJ。 不对工作责任进行描述(Non-descriptive for user’s job function):出于安全考虑,用户的身份识别不应该包括对应用户的工作职责,如系统管理员最好不要使用“Administrator“或”Manager”这样的名字做用户名。
非共享原则(No sharing):一个身份识别在整个系统或网络中应该只由一个用户或实体所有的,否则会造成授权或审计上的麻烦。
可校验性(Verifiable):身份识别要能够通过简单并有效的方法进行校验,校验方法还应该是任何时候在系统的任何部位都是可用的,自动化的。
唯一性(Unique):用户或实体的身份识别在整个系统或网络中必须是唯一的。
图4 除了在上一个文章和本文提到的威胁之外,和访问控制相关的威胁还包括密码威胁。密码作为使用最广泛部署成本最低的访问控制手段,常常会面临以下的威胁:
针对密码文件的攻击:攻击者常常会试图获取和破解存储有密码列表的密码文件,并获取其中的可用密码以进行非授权访问。
弱口令:用户常常使用容易被猜到或破解的强度很弱的密码,比如和用户名相同的密码、生日、姓名等。
社会工程学:攻击者可以通过欺骗用户获取有效的密码
嗅探器:攻击者可以使用嗅探器获取在网络上明文或加密传输的密码信息
硬件或软件记录器:攻击者可以使用键盘监听器(硬件)或Key logger(软件)这样的技术直接截获包含有用户密码的击键记录
木马程序:攻击者使用带有密码拦截功能的木马程序来获取用户的密码。
20讲解身份验证过程
上一篇文章《详述安全威胁控制手段》里,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、其他:一个保密强度高的密码短语的要素是:只有创建者知道;足够的长度以保证安全性;很难猜测,即使攻击者十分了解创建者也无法猜解;容易记忆并容易正确输入。
由于密码在访问控制上的重要作用,而许多系统往往把密码存储于密码文件中,因此保护系统中的密码文件也成为保证系统安全的关键因素。一般情况下,系统通常使用不可还原的单向加密方法来加密密码文件,同时还会限制一般用户对密码文件的访问。如果攻击者能够物理访问到存储有密码文件的服务器或文件备份,那么攻击者仍可以用自动化的密码破解工具破解密码文件中加密过的密码,因此,限制用户对服务器及文件备份的物理访问,也是保证密码安全性的重要措施。
说到密码破解,就不得不提一下信息系统针对密码破解的重要措施——账户锁定(Account Lockout),账户锁定是指系统在检测到某个账户登录密码错误设定次数后,自动关闭该账户的登录权限,并在一段时间后自动或由管理员重新开放。账户锁定能够有效的防御攻击者使用自动化密码破解工具所进行的攻击,也可以使管理员迅速发现攻击者的密码破解企图。一般情况下,我们常见的信息系统都会把账户锁定的次数设定为3到5次,密码错误次数达到规定数字后,通常会把账户锁定5至15分钟。
20用户持有凭证
上一篇文章《讲解身份验证过程》里,J0ker给大家介绍了用户验证时所依赖的三种验证要素、密码和密码短语及其安全使用原则。作为技术实施难度和成本最低的用户验证方案,基于密码的用户验证方案广泛应用于我们的日常生活和工作中。但由于密码本身的脆弱性,很容易被攻击者所破解或窃取,因此,在高安全级别的系统中,往往会在使用密码验证的基础上,再增加其他的验证手段,以增强系统的安全性——这便是本文要介绍的用户所有的凭证(Something you have)和下一篇文章要介绍的用户生物特征(Something you are)这两种用户验证手段。
用户所有的凭证,和传统的密码方式最大的不同在于,用户所有的凭证,对用户来说是他所有的一个物品,用户不需要了解它们具体是怎么运作的,只需要在系统要求用户进行身份验证时提供它们即可。大家可能会觉得J0ker这样说有点抽象,举个简单的例子,用户要进入一个有警卫看守的房间,如果只需要对上暗号而不需要警卫验证用户的其他属性就能进入,就是传统的密码方式。如果用户对上暗号之后,警卫还需要用户提供自己的工作证或者钥匙才能进入,这就是使用用户所有的凭证的验证方式,更进一步的,按照规定用户还必须是警卫认识的人,用户才能进入,这就是用户生物特征的身份验证方式。因此,用户所有的凭证,也就相当于用户进入系统的钥匙。
用户所有的凭证按照存在的形式还可以分成逻辑存在和物理存在: 逻辑存在的用户所有凭证通常是保存在用户的系统中,在使用时自动或由用户手动提交给验证系统,这种存在形式的用户所有凭证常见的有各种数字证书、某个包含有特殊字符或内容的文件,或者软件实现的Token一类的产品等。而物理存在的用户所有凭证则包括一次性密码(OTP)、存储卡和智能卡等,因为逻辑存在的用户所有凭证有被攻击者复制利用的风险,因此,物理存在的用户所有凭证在安全上要比逻辑存在的更胜一筹。 下面J0ker将给大家介绍目前使用最为广泛的两种用户所有凭证方案,一次性密码(OTP)和智能卡: 一次性密码(One Time Password,OTP)和传统的可多次使用密码不一样,一次性密码只能使用一次,使用之后便告失效。这样,即使用户的一次性密码被攻击者所获取,攻击者也不能使用一次性密码再去登录用户的系统,因为这个一次性密码已经失效。
和大家认为的不一样,一次性密码使用的历史相当长,一次性密码的使用甚至还早于计算机出现——近代军事和间谍领域常用的密码本,便可以认为是一次性密码的前身。直到现在,将许多个一次性密码列表打印在纸上,并交给用户使用,仍然是最为廉价但安全性相当高的一种一次性密码方案,国内有的银行在加强网上银行安全性的时候便选择了这样的一次性密码实现方式,大家可以在使用相关银行的网上银行时留意一下。当然,这种一次性密码实现的安全取决于用户是否能妥善保管打印有一次性密码的密码本。
更多的一次性密码方案采用电子和计算机技术来实现,这类一次性密码方案的用户端通常是一个类似于小的计算器或钥匙吊坠般外形的设备,上面有个数不等的按钮,行业里也将这个设备称为令牌设备(Token Device)。用户按照一定的规则向令牌设备输入数据,令牌设备计算后返回一个结果给用户,这个结果就是用户登录系统的一次性密码。令牌设备可以根据实现方式分成同步式令牌设备和异步式令牌设备:
同步式令牌设备(Synchronous Token):令牌设备内保存有和验证服务器相同的一个基准值,如精确到微秒的时间,或用管理员设置的一个可变数值。基于时间同步的令牌设备称为Clock-based Token,而基于可变数值计算的则称为Counter-based Token。它们生成一次性密码的方式大致相同,都是用户输入密码后,由令牌设备利用与服务器同步的变量作为一个参数,重新生成一个用于登录系统的一次性密码。而验证服务器端则会使用相同的变量及算法处理保存在数据库中的用户密码,如果用户提供的一次性密码和验证服务器计算的相同,就可以证明该用户是系统的合法用户。
图1,基于时间同步的令牌设备(Clock-based Token)的工作流程 图2,基于变量同步的令牌设备(Counter-based Token)的工作流程 异步式令牌设备(Asynchronous Token):由于同步式令牌设备需要和验证服务器相一致的时间或数值变量,所以同步式令牌设备的部署和维护并不轻松。异步式令牌设备则没有这个缺点,它不需要验证服务器维护和令牌设备之间的时间或变量同步。异步式令牌设备采取挑战-回答
(Challenge-Response)的一次性密码生成方式,在用户提出登录请求后,验证服务器将根据用户输入的密码返回一个数字,用户再将这个数字输入到令牌设备中进行计算后,把计算结果返回给验证服务器,验证服务器也会进行相同的计算步骤并将结果和用户的输入进行比较,如两个值相同,则验证通过,用户可以登入系统。
近几年市面上还出现了使用安装在用户系统内的令牌程序代替物理令牌设备的一次性密码方案,这种方案进一步降低了用户部署和维护的成本,也更加适用于追求安全性,又对验证方案的成本敏感的企业使用。
智能卡(Smart Card):智能卡是一张类似信用卡大小的塑料卡片,在它里面有一块微型的芯片,这款芯片可以存储一些与用户验证相关的信息。有的高级智能卡还包括专用的计算芯片,能够提供一定的加解密或其他运算功能。智能卡的使用要比一次性密码更为广泛,经常被企业用于提供物理安全的访问控制方案中。
因篇幅问题不能全部显示,请点此查看更多更全内容