用户认证的概念
- 验证系统实体自己声称或第三方为其声称的身份的过程,包括两个步骤
- 向安全系统提供身份表示符
- 安全系统产生认证信息,来确定实体和标识符之间是否存在对于的关系
- 认证方法
- 个人所知道的信息:口令,用户身份标示码以及预先设定的问题的答案
- 个人所拥有的物品:电子钥匙,智能卡以及物理钥匙,这些被称为令牌
- 个人静态生理特征:指纹,虹膜以及人脸识别
- 个人动态生理特征:语音模式和笔记特征
基于口令的认证
- 口令的作用就是对登录到系统上的用户ID进行认证,用户ID通过以下方式来提供安全性:
- 用户ID限制了哪些用户可以对系统进行访问
- 用户ID指明了用户访问系统所具有的权限
- 用户ID还可以用于自主访问控制系统中,将自己的权限转让给别人。
- 口令攻击常见方式以及对策
- 离线字典攻击
攻击者通过绕过系统的访问控制机制,从而获得对常见口令的访问权,攻击者通过将一些常用的口令进行散列之后的结果与口令文件中的散列值进行比较,如果匹配,则攻击者便可以登录到系统中。
对策:修改一些不安全的口令;防止非授权的对口令文件的访问;使用入侵检测机制对危害系统的行为进行检测。
- 特定账户攻击
攻击者把目标锁定为一个具体的账户,不对对其口令进行猜测
对策:采用账户锁定策略,口令尝试错误达到一定次数,对账户锁定。
- 常用口令攻击
用常用的口令对大量的用户ID进行尝试
对策:禁止用户使用常用的口令;对请求者的IP地址和用户提交的cookie模式进行扫描
- 单用户口令猜测
攻击者企图获得账户拥有者的信息和系统口令的保护策略,来猜测用户的口令。
对策:使用更复杂的口令保护策略
- 工作站劫持
攻击者确认管理员已经登录,并在管理员不注意的情况下进行入侵,占领工作站。
对策:引入工作站在不使用时进行自动注销机制;使用入侵检测机制对用户的行为进行检测。
- 利用用户的疏漏
对于一些系统分配的口令,难于记忆,用户一般会将其在某个地方记下来,那么就给攻击者提供到了读到口令的机会。
对策:用户培训;使用入侵检测机制;使用口令和其他认证方式向组合的方式
- 利用口令重用
用户在一个或多个系统使用相同或相近的口令
对策:禁止在多个系统中使用相同或相近的口令
- 电子监视
如果用户需要登陆到远程的一个系统上,那么就有可能存在被窃听的风险
对策:使用加密,但是加密对重放攻击可能不太有效
- 散列口令在系统中的使用
- 用户通过设置一个口令或者被分配一个口令,这个口令和一个固定长度的盐值组合起来,作为散列函数的输入数据,产生一个定长的散列码,将用户ID,盐值和散列码一起存储在口令文件中
- 用户登陆时,系统根据用户提供的用户ID来检索口令文件,找到对应的散列码,并将提供的口令和用户口令文件中的盐值作为散列函数的输入,将得到的散列码与口令文件的散列码进行比较,如果匹配,则允许用户登陆。
- 使用盐值的目的:
防止使用相同口令的用户进行散列后得到的散列值相同
增加离线字典攻击的难度
防止攻击者发现用户在多个系统中使用相同的口令
- UNIX中实现散列的方案:
最初的策略:每个用户选择一个长度至多为8个字符的口令,这个口令被转换为一个长度为56为的**,作为加密函数的输入**,这个函数就是crypt(3),它是DES算法的修改版,这种算法要求一个64位的全0数据块的输入,算法的输出作为下一轮的输入,总共进行25轮迭代,最后得出的结果被转换成11个字符组成的字符序列,在将盐值附加在序列前,得到13个字符的输入。
crypt(key, salt)函数:key用户输入的口令,salt即盐值,2个字符长度。
md5方案:使用一个48位的随机值盐值,并对用户的口令长度没有限制,这种方法比crypt方式要慢,因为其内部进行了1000次迭代。
最安全的散列方案—Bcrypt:Bcrypt允许用户设置的口令长度最多为55个字符,并使用一个128位的随机盐值,产生一个192位的散列值,Bcrypt还支持设置一个代价变量,代价变量的值越大,Bcrypt进行散列运算的时间会更长,因此可以为一个系统管理员指定一个较高的代价变量。
- 口令**方法-彩虹表
对于口令字典中的每一个口令,攻击者尝试用可能的盐值对其进行散列,产生一个巨大的散列表被称为????表,以空间换时间的方式。 - 口令文件的访问控制
- 一种阻止口令攻击的方法就是拒绝攻击者访问口令文件,口令文件仅允许特权用户访问。
- 通常散列后的口令会与用户ID分离保存在单独的文件中,这个文件被称为影子文件。
- 当前口令文件保护存在的问题:
攻击者可能会利用操作系统软件的漏洞获得对口令文件的访问权
用户可能在不同系统中使用相同的口令,一个系统的口令被**会威胁到另一个系统
通过网络监听来收集用户ID和口令
- 口令选择策略
- 用户教育
应该告知用户使用一些难于猜测的口令以及给用户选择口令的一些指导原则
- 计算机生成口令
由系统为用户自动生成口令,但是通常难于记忆
- 后验检查口令
系统周期运行口令**程序来找到一些容易被猜测到的口令,然后取消这些口令,并通知用户
- 先验检查口令
允许用户自己选择口令,但是在选择的过程中,系统会对用户选择的口令进行检查,以决定是否允许用户设置该口令。
口令**器:
构造一个由不能作为口令选择的口令字典
缺点:存储口令字典需要耗费一定的空间;在口令字典中进行检索需要耗费一定的时间。马尔可夫模型:
如图一个简化的马尔可夫模型的例子,马尔可夫模型可以用一个四元祖表示[m,A,T,k],m表示状态数,如图该模型有a,b,c三种状态,A是状态空间,T是转移概率矩阵,矩阵中的每一项表示一个字母紧随另一个字母出现的概率,k是马尔可夫模型的阶数,该模型为1阶,表示一个字母出现的概率仅受前面一个字母的影响。 对于一个口令能否被用户使用,判断该口令能否由状态转移矩阵产生,能由状态转移矩阵产生的口令,则拒绝被用户使用。Bloom过滤器:
一个k阶的Bloom过滤器有k个散列函数组成H1(x),H2(x),···,Hk(x),组成,每个散列函数将口令映射为0到N-1之间的数。
Hi(xj)=y,其中
1<=i<=k; i代表第i个散列函数
1<=j<=D; j代表口令字典中的第j个词汇,D代表口令字典词汇总数
0<=y<=N-1;
对口令字典进行如下过程:
定义一个N位的散列表,初始化将每位的数值置为0
对于口令字典中的每一个口令,计算其k个散列函数的散列值,并将其作为散列表的下标,将散列表对应的值置为1
验证过程:
对于用户输入的新口令,计算其k个散列值,如果k个散列值对应的散列表中值均为1,则拒绝用户此次输入的口令。
存在的问题:误判
假设口令undertake,always在口令字典中,alice不在口令字典中
H1(undertake)=1 H1(always)=4 H1(alice)=1
H2(undertake)=5 H2(always)=7 H2(alice)=4
那么系统会误判alice也在口令字典中
基于令牌的认证
- 令牌就是用户持用的能用于身份认证的物品
- 两种广泛使用的令牌
- 存储卡:只能存储数据而不能处理数据
使用方式:可单独用于物理访问如酒店的房卡,应用于计算机系统时还需要配合用户口令或个人标识码。
缺陷:需要配合读卡器使用,增加使用成本
令牌丢失会导致用户无法进入系统
应用在计算机系统中不方便
- 智能卡
物理特征:智能卡包含一个嵌入的微处理器
接口:包含键盘区和显示设备的接口,能够完成人机交互
智能卡的认证协议:静态协议:用户首先完成自己对令牌的认证,随后令牌完成计算机对用户的认证
动态口令生成器:令牌每隔一段时间就会产生一个新的口令用于计算机和令牌之间的认证,这个口令可以是令牌自动生成的,也可以是用户手动生成的,令牌与计算机必须保持一致,从而计算机才能知道当前令牌使用的口令
质询-响应协议:计算机系统会产生一个质询信号,通常为一系列随机字符串,令牌会产生一个基于这个质询信号的响应信号。智能卡包括一个完整的微处理器,由cpu,内存,输入输出端口组成
一种典型的智能卡包括三种存储器:只读存储器(ROM):存储的数据在整个智能卡的生命周期内不会发生改变,例如存储卡的***以及持卡人的姓名。
电可擦写可编程存储器(EEPROM):存储应用程序和数据
随机存储器(RAM):存储应用程序的临时数据交互过程:
当智能卡插入到读卡器时,读卡器会产生一个复位信号对参数进行初始化
完成复位后,智能卡会产生一个复位应答消息(ATR),该消息指明智能卡所能使用的参数,协议以及可以执行的功能。
计算机系统可以通过PTS命令来改变使用的协议和参数
智能卡产生一个PTS响应来确认使用的协议和参数
之后,智能卡和终端就可以执行应用程序了
生物特征认证
- 生物认证系统是通过一个人特有的身体特征来实现认证的
- 能用于生物认证的身体特征:
- 面部特征:基于相对位置和关键器官的形状来刻画面部特征。
- 指纹:指纹识别和匹配系统会自动的对指纹的特征进行提取,并将指纹的全部模式进行数字化的存储。
- 手形:根据手掌的形状
- 视网膜:视网膜认证系统通过发送低强度的可见光或者红外线扫描眼睛得到视网膜的数字图像特征。
- 虹膜
- 签名
- 语音
- 采用生物特征进行认证时,系统必须确定用户提供的生物特征与系统存储的生物特征接近到什么程度,才认为是匹配的。
- 生物特征系统的工作原理
- 注册生物特征
用户需要提交给系统一个用户名以及口令或PIN,同时认证系统的传感器需要采集用户的生物特征。
系统将采集的生物特征数字化并提取出特征集合,将这些代表唯一生物特征的数据或数据集合保存起来,这些数据集合称为用户模版
注册完成后,系统维护者用户ID,口令或者PIN,以及生物特征模版信息。
- 验证和识别
验证:用户需要提供一个PIN,并使用传感器采集生物特征信息,系统将采集到的消息与系统中存储的模版相比较,若匹配用户验证通过。
识别:用户只需要通过传感器采集生物特征信息,系统将采集到的消息与系统中存储的所有模版进行比较,若找到匹配的项,用户被识别。
- 生物特征认证的准确度
- 系统可以设置一个阀值t,在阀值的右侧代表匹配成功,在阀值的左侧代表匹配失败。
- 阀值t右边的阴影部分代表误匹配的概率,阀值t左边的阴影部分代表漏匹配的概率,误匹配率的下降必然意味着漏匹配率的上升。
- 对于一些高安去性的应用,一般要求误匹配率尽可能的低,应该尽量选取曲线左侧的点;对于一些取证应用,应该尽量降低漏匹配率,应该尽量选取曲线右侧的点。
远程用户认证
- 可以通过质询-响应协议应对远程用户认证的攻击
- 口令协议
用户首先把他的身份U发送给远程主机,远程主机返回一个随机r,并且指定两个函数h(),f(),这个过程称为质询。用户响应是函数f(r’, h(P ‘))的值,其中r’=r,P’是用户的口令,系统收到响应的值后,根据用户的身份来找到系统中存储的用户口令的散列值,并计算f(r,h(P(U)))的值,将计算的值与收到的值相比较,数值相同,则用户被认证。
使用一个适当的散列函数f(),可以保证口令在传输的过程中不会被截获;使用一个随机数r,可以对付重放攻击。
- 令牌协议
用户首先将其身份U发送给系统,系统返回一个随机数r,同时指定两个函数h(),f(),用户输入口令通过令牌将其转换成验证码,对于静态验证码,令牌和远程主机都存储的这个验证码的值。对于一次性随机验证码,远程主机必须与一定的方式与令牌保持同步,令牌响应的是函数f(r’,h(W’))的值,同样系统收到函数值后,与本地存储的值进行比较。
- 静态生物特征认证协议
用户首先将其身份U发送给远程主机,远程主机返回随机数r和加密函数E(),用户通过生物特征采集设备生成一个生物特征模版BT’,用户响应的是加密函数E(r’,D’,BT’)的值,其中D’是特定的生物采集设备,远程主机收到后,进行解密,得到r’,D’,BT’,并与本地存储的数据进行对比。其中,一定有r’=r,BT’与远程主机存储的模版匹配分数一定会超过预先设定的阀值,D’也必须在主机数据库的注册设备列表。这样用户才能被认证。
- 动态生物特征认证协议
用户首先将身份U发送给远程主机,远程主机返回一个随机数r,一个随机数序列x和加密函数E(),其中随机数序列可以是数字,字符或单词的序列。用户通过发音,打字或手写这个随机数序列x来产生一个BS’(x’)模版,用户响应加密函数E(r’,BS’(x’))的值,远程主机收到后进行解密,其中,r’=r,并且BS’(x’)与本地存储模版匹配分数超过设置的阀值,用户被认证。
用户认证的攻击方式
- 客户端攻击:在不访问远程主机的情况下,攻击者试图伪装成一个合法的用户完成用户认证。
对于一个基于口令的认证系统,用户可能会试图对口令进行多种猜测以**用户口令。
对策:选择既长又不可预测的口令,这种口令熵很大;限制信源在一定时间内的尝试次数。
熵:将语言转换成二进制数字,熵是每个字需要的二进制数字的平均数,熵越大,不确定性越大,就越难被**。对于一个基于令牌的认证系统,可以用一个熵值很低的PIN或者口令产生一个熵值很高的验证码。
- 主机攻击:直接对存储在主机上的用户文件进行攻击,主机上存储着用户口令,令牌验证码或者生物特征模版。
口令:窃听。
令牌:令牌被盗或者对令牌进行物理复制。
生物特征威胁:复制或模仿生物特征参数而生成想要的模版。采用动态生物特征或者对静态生物特征认证时还需要认证采集设备。
重放:采用质询-响应协议进行对抗
- 特洛伊木马:应用或物理设备冒充成认证服务所使用的应用或物理设备来捕获用户口令,验证码或生物特征信息,之后,攻击者可以使用捕获到的信息冒充合法用户。
- 拒绝服务攻击:通过大规模认证请求是认证服务失效。