第4讲 身份认证基本方法 第4章:操作系统基础安全性 第1部分/共5部分
本讲内容 主题:身份认证基本方法 教材内容: 第4.1节:操作系统安全概貌 第4.2节:身份标识与认证的基本方法 © 2009 电子工业出版社
操作系统安全简史 60年代初期,分时系统CTSS诞生于MIT计算中心。 60年代中后期,MIT、贝尔实验室和通用电气公司联合开发Multics系统。 60年代中后期,IBM开发基于虚拟机的分时系统CP/CMS,70年代初期,发展成VM/370。 60年代中后期,第一个安全操作系统Adept-50诞生。 60年代后期,B.W. Lampson建立形式化的访问控制模型。 70年代初期,D.E. Bell和L.J. Lapadula建立第一个可证明的安全模型—BLP模型。 1972年,J.P. Anderson提出引用监控机、引用验证机制、安全核和安全建模等重要思想。 © 2009 电子工业出版社
操作系统安全简史 1975年,J.H. Saltzer和M.D. Schroeder提出安全机制设计的八大原则。 1983年,美国国防部颁布第一个计算机安全评价标准—TCSEC。 1985年,美国国防部颁布了TCSEC的修订版,随后,形成彩虹系列。 1992年,美国推出联邦标准草案。 1993年,美国国防部在TAFIM计划中推出称为DGSA的新的安全体系结构。 1999年,CC标准成为信息安全评价的国际标准。 © 2009 电子工业出版社
操作系统安全的主要内容 内存保护:在多用户、多任务的系统中,实现内存空间的隔离与共享,防止不同进程间非法访问或破坏; 客体重用:在存储介质的分配中,防止遗留信息的泄漏; 身份标识与认证:标识用户的有效身份,认证用户使用系统的合法性; 访问控制:控制主体访问客体的行为,防止出现非法访问行为,根据需要,提供自主访问控制或强制访问控制; 可信路径:实现用户与可信软件之间、可信软件与可信软件之间的可信通信; © 2009 电子工业出版社
操作系统安全的主要内容 加密支持:提供信息加密和解密以及密钥管理的有效支持; 特权管理:实现特权的合理划分、使用和管理,以便支持最小特权原则; 安全审计:记录、管理和报告安全相关行为信息,为安全行为分析提供支持; 多安全策略的灵活支持:根据应用需要,支持多种安全策略,支持安全策略的灵活选择和配置; 隐蔽信道处理:防止或限制利用非法隐蔽通信途径泄漏信息; 完整性与可用性保护:防止系统或数据遭受非法篡改,提供系统失效后恢复正常工作的能力。 © 2009 电子工业出版社
用户身份标识 用户身份标识:为用户建立能够确定其身份状况的信息的过程。 用户帐户信息数据库: 帐户名 + 标示号 + 管理信息 用户使用 系统内部使用 © 2009 电子工业出版社
UNIX账户信息文件/etc/passwd © 2009 电子工业出版社
UNIX账户信息文件/etc/passwd 默认工作目录 登录后启动的程序 账户名 口令信息 身份标识 组标识 账户注释 © 2009 电子工业出版社
UNIX用户组信息文件/etc/group © 2009 电子工业出版社
UNIX用户组信息文件/etc/group 组名 口令信息 组标识 组成员用户账户名 © 2009 电子工业出版社
用户身份认证 用户身份认证:确认用户的合法身份的过程。 常用方法—基于口令的认证 用户登录操作系统时启动 验证账户名的合法性 验证口令的合法性 © 2009 电子工业出版社
Linux系统的用户登录过程 © 2009 电子工业出版社
在Linux系统中修改口令的过程 © 2009 电子工业出版社
口令信息管理的可能方法 方法一:在口令字段中保存口令的明文,身份认证时,直接取其值与用户输入的口令进行对比。 方法二:用确定的算法对口令进行加密,在口令字段中保存口令的密文,身份认证时,将口令的密文进行解密,用解密后的口令与用户输入的口令进行对比。 方法三:用确定的算法借助口令进行某种运算,在口令字段中保存运算的结果,身份认证时,借助用户输入的口令进行相同的运算,取口令字段中保存的结果与运算结果进行对比。 © 2009 电子工业出版社
加密的基本概念 加密:信息变换。例:2X,At。 流密码算法: 分组密码算法: 口令管理采用分组密码运算。 通过逐位处理的方式对信息进行加密的算法。 分组密码算法: 通过逐块处理的方式对信息进行加密的算法。 把信息分组,每组信息构成一个信息块。 对信息块进行加密。 口令管理采用分组密码运算。 © 2009 电子工业出版社
例4.2—口令信息管理的基本方案 选择分组密码算法Acrypt,取64位全0位串构成的数据块Dp,设K为密钥,使: Dc = Acrypt(K, Dp) 设计算法Atrans,把数据块Dc变换为字符串s,即: s = Atrans(Dc) 以用户口令作密钥K,在帐户信息数据库中保存运算得到的字符串s。 身份认证时,根据用户输入的口令生成字符串sr,比较sr和s。 © 2009 电子工业出版社
例4.3—64位的位串变换为字符串 以6位为单位,把64位的位串分成11组(最后一组取串中的后6位)。 每个位组对应一个无符号整数,取值在0~63之间。 把0~63的整数映射为以下64个字符: “.”,“/”,0~9,A~Z,a~z 根据映射规则把11个整数映射成11个字符,得到所需字符串。 © 2009 电子工业出版社
例4.4—生成增强的口令字段字符串 确定算法: 选择分组密码算法Acrypt,根据密钥K把数据块Dp加密成数据块Dc,即: Dc = Acrypt(K, Dp) 设计转换算法Atrans,把64位的数据块Dc变换成字符串s,即: s = Atrans(Dc) © 2009 电子工业出版社
例4.4—生成增强的口令字段字符串 生成口令字段字符串: ① 用64位全0位串构造数据块Dp, ② 取K = 用户的口令,i = 0; ③ Dc = Acrypt(K, Dp); ④ Dp = Dc,i = i + 1; ⑤ 如果 i < 25,则回到第③步; ⑥ s = Atrans(Dc),取s作为口令字段信息。 © 2009 电子工业出版社
向液体撒盐实验 C = f(A, X);D = f(B, Y)。对于随意的X和Y,根据C很难推知A,根据D很难推知B。 A C 撒入一把盐X © 2009 电子工业出版社
给口令撒盐 给口令撒盐:在口令中拌入随机数。 口令的盐值:拌入到口令中的随机数。 撒盐后: 同一个口令,不同的盐值,对应不同的结果。 根据撒盐后结果猜测口令,难度增大。 撒盐增加破解口令的难度。 © 2009 电子工业出版社
例4.5—口令撒盐基本方法 确定随机数生成算法Arandom,确定哈希算法Ahash,对任意口令Dpw,撒盐处理如下: ① 生成一个随机数:Dsalt = Arandom( ); ② 把随机数附加到口令上:Dtmp = Dpw || Dsalt; ③ 生成哈希值:Dhash = Ahash(Dtmp); ④ 把Dhash和Dsalt保存到系统中,作为口令字段信息。 “abcd” || “ABCD” “abcdABCD” 11000011 || 00111100 1100001100111100 © 2009 电子工业出版社
例4.6—基于撒盐口令的身份认证方案 第一环节:口令字段字符串的生成: s = Agen(Dsalt, Dpw) ① 给口令Dpw撒盐:Dpw = Asalt (Dsalt,Dpw); ② 用撒盐结果做密钥:K = Dpw; ③ 用一个64位的全0位串构造一个数据块Dp; ④ 设循环次数:i = 0; ⑤ 对数据块加密:Dc = Acrypt(K, Dp); ⑥ Dp = Dc,i = i + 1; ⑦ 如果 i < 25,则回到第⑤步; ⑧ 把数据块变换成字符串:s = Atrans(Dc); ⑨ 返回s。 © 2009 电子工业出版社
例4.6—基于撒盐口令的身份认证方案 第二环节:口令字段信息维护: ① 接收用户提供的口令Dpw; ② 生成一个盐值:Dsalt = Arandom( ); ③ 生成口令信息:s = Agen(Dsalt, Dpw); ④ 把口令信息s和Dsalt存入数据库的口令字段中。 © 2009 电子工业出版社
例4.6—基于撒盐口令的身份认证方案 第三环节:身份认证过程: ① 接收用户提供的帐户名Dname和口令Dpw; ② 在帐户信息数据库中检查Dname的合法性,如果合法,则找出其对应的s和Dsalt; ③ 生成临时口令信息:sr = Agen(Dsalt, Dpw); ④ 如果 sr与s相等,则认证成功,否则,认证失败。 © 2009 电子工业出版社
传统UNIX系统口令撒盐法 传统UNIX操作系统使用12位的盐值,保存时,变换成由2个字符构成的字符串,作为前缀与口令信息合在一起,存放在口令字段中。 口令 盐值 口令字段信息 nutmeg Mi MiqkFWCm1fNJI ellen1 ri ri79KNd7V6.Sk Sharon ./ ./2aN7ysff3qM norahs am amfIADT2iqjAf 7a 7azfT5tIdyh0I 相同口令,不同盐值,不同结果。 © 2009 电子工业出版社
Tname:Tpw:Tlstchg:Tmin:Tmax:Twarn:Tinact:Texpire:Treserved 把口令信息从账户信息中剥离出来 口令信息数据库记录格式 Tname:Tpw:Tlstchg:Tmin:Tmax:Twarn:Tinact:Texpire:Treserved 保留字段 过了Texpire天后帐户失效(从1970年1月1日算起) 口令过期后Tinact天帐户失效 口令过期前Twarn天提醒用户 过了Tmax天以后必须修改口令 过了Tmin天以后才能修改口令 上次口令修改是在第Tlstchg天进行的(从1970年1月1日算起) 口令信息 帐户名 1 2 3 4 5 6 7 8 9 © 2009 电子工业出版社
UNIX口令信息文件/etc/shadow © 2009 电子工业出版社
UNIX口令信息文件/etc/shadow 该账户已被锁定 该账户不与任何口令匹配 © 2009 电子工业出版社
问题? wenchang@ruc.edu.cn © 2009 电子工业出版社