Chapter 5 用户身份认证机制
一、身份认证概述
1、认证(Authentication)
是证明一个对象的身份的过程
2、身份认证系统架构
- 认证服务器(Authentication Server):负责进行使用者身份认证的工作,服务器上存放使用者的私有密钥、认证方式及其他使用者认证的信息。
- 认证系统用户端软件(Authentication Client Software):通常是需要进行登陆的设备或系统,在这些设备及系统中必须具备可以与认证服务器协同运作的认证协定
- 认证设备(Authenticator):认证设备是使用者用来产生或计算密码的软硬件设备。
二、基于口令的身份认证
1、特点
最简单、最普遍的身份识别技术 口令具有共享秘密的属性,是相互约定的代码,只有用户和系统知道口令可以由用户选择或系统分配
2、 安全口令与不安全口令:
- 安全口令:
1) 位数 >=8 位。2) 大小写字母混合。3) 字母与数字混合。4) 口令有字母、数字以外的符号。
-
不安全口令:(1)使用用户名(帐号)作为口令。(2)使用用户名(帐号)的变换形式作为口令。(3)使用自己或者亲友的生日作为口令。(4)使用常用的英文单词作为口令。(5) 使用 8 位以下的字符作为口令。
3、 Windows下LM Hash值生成原理
过程:1)若明文中含英文小写,首先全部转换为大写。再将口令字符串大写转后后的字符串变换成二进制串
2)切割成两组7字节的数据(不足的补0),将两组经str_to_key()函数处理得到两组8字节数据
3)两组8字节数据作为DES KEY对魔术字符串“KGS!@#$%”进行标准DES加密
4)将加密后的这两组数据简单拼接,就得到了最后的LM Hash
4、 Windows下NTLM Hash生成原理
过程:1)首先将明文转换成Unicode字符串
2)对所获取的Unicode串进行标准MD4单向哈希(无论数据源多少字节,固定产生128比特的哈希值)
5、Linux口令身份认证机制
将用户账户文件分为两部分:口令文件/etc/passwd和影子口令文件/etc/shadow;
- 影子口令文件保存加密的口令;/etc/passwd文件里的password所有变成x。Shadow仅仅能是root可读,从而保证了安全。
- 两种文件都只有root用户具有修改权限
- passwd文件格式——username:用户密码(用x代替):UID:GID:相关信息:目录:用户环境。如pp : x : 500 : 500 : : /home/ pp : /bin / bash
- shadow文件格式——username:加密口令:上一次改动的时间(从1970年1月1日起的天数):口令在两次改动间的最小天数:口令改动之前向用户发出警告的天数:口令终止后账号被禁用的天数:从1970年1月1日起账号被禁用的天数:保留域
1)Shadow口令加密机制:
加密口令格式位:$加密算法代号$盐值$密文
其中
1)加密算法代号分别表示1——MD5;2——Blowfish;5——SHA-256;6——SHA-512。
2)盐值是一个base64编码的随机串:有关base64只用了解它是将二进制串每6位分成一组并根据数字在编码表中查到相应的字符。且最小编码单位是24bit,即四个字符。
3)具体加密过程如下:
2)身份认证机制
6、口令攻击
1)穷举尝试(Brute Force):使用字符串的全集作为字典。
2) 字典攻击:由于多数用户习惯使用有意义的单词或数字作为密码,某些攻击者会使用字典中的单词来尝试用户的密码
3)窥探:攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令
4)社交工程:攻击者冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令
5)口令文件泄露:存储用户身份信息和口令的文件泄露,导致用户多个平台被入侵
6)网络数据流窃听:由于认证信息要通过网络传递,并且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某种特定系统的认证数据,并提取出用户名和口令。
7)认证信息截取/重放(Record/Replay):如果攻击者无法用网络数据流窃听方式推算出密码,可以使用截取/重放方式
攻击者从网络上截取主机A to 主机B的报文,并将A加密的报文发送给B。
主机B误认为攻击者等于主机A,主机B向攻击者发送应当发送给A的报文
7、口令攻击防护
1)抵御重放的方法
1 )在认证交换中使用一个 序数 来给每一个消息报文编号 ,仅当收到的消息序号合法时才接受;2 )使用 时间戳 (A 接受一个新消息仅当该消息包含一个 A 认为是足够接近 A 所知道的时间戳 );3 ) 询问 / 应答 方式 (A 期望从 B 获得一个新消息 ,则先发给 B 一个 临时值 ( Nonce) ,并要求后续从B收到的消息包含正确的这个临时值 )
2)抵御口令文件泄露的方法
1 ) 使用机器相关函数 - ErsatzPasswords基本思想:密码和机器特征绑定,窃取无用2 ) 使用门限密码方案 - PAKE基本思想:密码分割、窃取部分无用3 ) 放置假口令 - Honeywords基本思想:欺骗迷糊,及时检测
三、基于智能卡的身份认证
1、智能卡的安全性
智能卡是一种将具有加密、存储、处理能力的集成电路芯片嵌装于塑料基片上而制成的卡片
- 基于智能卡的认证机制:应用程序与读卡器通信,而读卡器通过标准协议与智能卡通信。在用户进行商务交易前,服务器首先使用智能卡完成用户身份的认证。
-
身份认证过程中为了产生变动的密码一般采用双运算因子的计算方式,也就是加密算法的输入值有两个数值:一为 用户密钥 、另一为 变动因子
-
服务器及智能卡必须 随时保持相同的变动因子 ,才能算出相同的动态密码
2、 询问/应答认证(质询—响应认证)
变动因子是由服务器产生的随机数字。
具体过程:
1)登录请求。客户机首先向服务器发出登录请求,服务器提示用户输入用户ID和PIN 。
2) 询问。用户提供ID给服务器,然后服务器 提供一个随机串X(Challenge)给插在客户端 的智能卡作为验证算法的输入,服务器则根据用户ID取出对应的密钥K后,利用发送给客 户机的随机串X,在服务器上用加密引擎进行运算,得到运算结果RS。
3)应答。智能卡根据X与内在密钥K使用硬件加密引擎运算,也得到一个运算结果RC,并发送给服务器。
4)验证。比较RS和RC便可确定用户的合法性
安全性保证:
1)由于密钥存在于智能卡中,运算过程也是在智能卡中完成,密钥认证是通过加密算 法来实现的,因而极大地提高了安全性。
2)每当客户端有一次服务申请时,服务器便产生一个随机串给客户,即使在网上传输的认证数据被截获,也不能带来安全上的问题
3、时间同步认证
4、事件同步认证
-
事件同步认证卡依据认证卡上的私有密钥产生一序列的动态密码。
-
一旦一个密码被使用过后,在密码序列中所有这个密码之前的密码都会失效。
- 如果使用者意外多产生了几组密码造成不同步的状态,服务器会自动重新同步到目前使用的密码。
优点 缺点 询问/应答认证 1、没有同步的问题。2、一片认证卡可以用来存取被不同认证服务器所保护的系统。3、最安全的认证方式。1、使用者必须按较多的按钮,操作较繁复。2、比较多输入的失误。时间同步认证 易于使用 1、时间同步困难,可能造成必须重新输入新 密码。软体认证卡采用PC 的时刻,很可能随时被修改。常常需要与服务器重新对时。2、不如 Challenge/Response 认证更安全事件同步认证 1、容易使用。2、由于使用者无法知道序列数字,所以安全性高,序列号码绝不会显示出来。需要密码序列,较复杂
四、局域网身份认证-Kerberos
1、概述
- Kerberos希望实现三个功能:身份认证、记账、审核。
-
Kerberos 的认证模型如下:1) 认证服务器 AS:它同时连接并维护一个中央数据库存放用户口令、标识等,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)2) 票据许可服务器TGS(Ticket Granting Server):用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(ticket)3) Client4) Server
-
Kerberos 有两种证书: 票据 ticket 和 认证符authenticator 。两种证书都使用对称加密算法进行加密,但加密的密钥不同。
- ticket的种类 :
1)Ticket_ tgs (tgs_Tickets) 组成:用户名,用户地址,TGS 服务名, 当前时间,有效时间,会话密钥Kc,tgs作用:确定用户的身份,使用户能访问TGS( 通行证 )2)Tickets 组成: C 和 S 的名字, C 的网络地址,当前时间,有效时间和会话密钥Kc,s作用:确定服务器的身份,使用户能获得服务器服务( 服务卡 )
- 认证符(Authenticator)的组成:client的名字、client的地址、记录当前时间的时间戳
Authenticator 只能在一次服务请求中使用,每当client 向 server 申请服务时,必须重新生成Authenticator。 作用:用于验证时效性
2、用户C请求服务S的整个Kerberos认证过程:
1)第一阶段 身份验证服务阶段
作用:完成身份认证,获得访问TGS的票据
2)第二阶段 票据授予服务交换
作用:获取访问服务器S的票据
3) 第三阶段 客户与服务器身份验证交换
最终用户C和服务S互相验证彼此的身份,并且拥有只有C和S两者知道 的会话密钥K(c,s)
整体流程图:
3、Kerberos的局限性:
- 时间同步问题
- 口令猜测问题
- 认证域之间的信任问题
- 重放攻击的问题
- 密钥的存储问题
- 系统程序的安全性、完整性问题
五、统一身份认证-PAM
1、概述
- 概念:Linux-PAM(Pluggable Authentication Modules)(基于Linux的插入式验证模块)是一组共享库,使用这些模块,系统管理者可以自由选择应用程序使用的验证机制。也就是说,勿需重新编译应用程序就可以切换应用程序使用的验证机制。甚至,不必触动应用程序就可以完全升级系统使用的验证机制
- 目的:分离应用软件和验证机制的开发。
- 架构:
- 构成:(1)PAM应用编程接口(API) (2)PAM模块(动态装载库),提供以下服务支持:身份认证(auth)、账户管理(account)、口令管理(password)、会话管理(session) (3)PAM配置文件