网络安全体系的五类服务
访问控制服务:根据实体身份决定访问权限
身份鉴别服务:消息来源确认、防假冒(密码技术)
保密性服务:加密
数据完整性服务:防篡改(数字摘要)
防抵赖服务:数字签名
攻击类型
被动攻击:消息内容泄露攻击、流量分析攻击(加密后仍可推测出双方位置、身份、信息频率及长度)
主动攻击:假冒、重放、改写、拒绝服务
安全机制
加密、数字签名、访问控制、数据完整性、认证交换、流量填充(干扰流量分析)、路由控制(安全通道)、公证。
可信功能、安全标签、事件检测、安全审计跟踪、安全恢复。
对抗统计分析
扰乱(confusion):使密文和加密秘钥之间的关系尽量复杂。
扩散(diffusion):明文统计结构扩散消失到大批密文统计特性中,使明文密文之间的统计关系尽量复杂。
流密码与分组密码的区别
分组密码:高扩散性,无法插入符号,但是有加密较慢和错误扩散的问题。
流密码:转换速度快,低错误扩散率,但是低扩散性且易被恶意插入和篡改。
网络安全基本模型
单向散列函数的消息认证
HMAC算法的实现过程需要一个加密用的散列函数(表示为H)和一个密钥(S为双方的共享秘密值)。
HASH性质:任意长输入、固定长输出、单向性、抗碰撞性(找到满足H(x)=H(y)的任意一对(x,y)在计算上是不可行的)、抗弱碰撞攻击性(找到满足H(x)=H(y)的y≠x在计算上是不可行的)。
使用加密防止窃听,使用摘要防止篡改,使用数字签名防止仿冒,使用证书防止中间人攻击。
重放攻击防御:①时间戳+签名 ②序号递增 ③挑战与应答(token) ④https
公钥密码系统
非对称,三类应用:①加密/解密 ②数字签名 ③会话秘钥交换
Kerberos v4
应用于分布式环境中的身份鉴别,采用集中认证服务器(Authentication Server,AS)实现用户与服务器之间的双向认证。认证一次后可访问多个服务器。
依赖于对称秘钥的秘钥分配,AS把所有用户口令存储在集中式数据库中,并与TGS共享一个秘密秘钥Ktgs,TSG与每个服务器共享一个独立的秘密秘钥Kv(已安全分发)。
安全性:防止窃听、防止重放攻击、保护数据完整性,但没有抗否认性。
票据不证明任何人的身份,只是安全分发秘钥的一种方法。票据可重用:客户端在获取票据后存储起来,以便下次访问时使用,但访问不同的服务时第一次都需要新票据。
TGS——Ticket-Granting Server,票据授权服务器 Kc——用户口令派生出的秘钥 Kc,tgs——客户端与TGS的会话秘钥 Kc,v——客户端与服务器的会话秘钥
TS——发出时的时间戳 LifeTime——有效期 Authenticator——认证符(只能使用一次且有效期非常短)
认证会话过程:
① C-->AS: 用户ID || TGS的ID || TS1,请求票据授权票据Ttgs
② C<--AS: E(Kc,[ Kc,tgs || TGS的ID || TS2 || LifeTime2 || Ttgs ]),其中Ttgs = E(Ktgs,[ Kc,tgs || 用户IP || 用户ID || TGS的ID || TS2 || LifeTime2 ])
③ C输入口令解密后-->TGS: 服务器ID || Ttgs || Authenticatorc,请求票据Tv , 其中Authenticatorc = E(Kc,tgs,[ 用户ID || 用户IP || TS3 ])
④ C<--TGS: E(Kc,tgs,[ Kc,v || 服务器ID || TS4 || Tv ]),其中Tv = E(Kv,[ Kc,v || 用户IP || 用户ID || 服务器ID || TS4 || LifeTime4 ])
⑤ C-->V: Tv || Authenticatorc ,其中Authenticatorc = E(Kc,v,[ 用户ID || 用户IP || TS5 ])
⑥ C<--V: E(Kc,v,[ TS5+1 ])
域间认证:对于有许多域的情况的可伸缩性不好,N2阶Kerberos-Kerberos关系。
【问题1】为什么要发送用户的IP?
答:仅当用户从同一个客户端发出票据时,它才是合法的。
【问题2】票据中的TS和LifeTime有什么作用?
答:防止攻击者截获了③中的登录票据Ttgs,将自己的IP设置成用户的IP后,欺骗TGS获取Tv。在对拼接的信息进行比较之前,会先提取Authenticator中的Timestamp,同当前的时间进行比较,如果他们之间的偏差超出一个可以接受的时间范围(一般是5mins),Server会直接拒绝该Client的请求。Server维护着一个列表,这个列表记录着在这个可接受的时间范围内所有进行认证的Client和认证的时间。对于时间偏差在这个可接受的范围中的Client,Server会从这个这个列表中获得最近一个该Client的认证时间,只有当Authenticator中的Timestamp晚于通过一个Client的最近的认证时间的情况下,Server采用进行后续的认证流程。这种基于Timestamp的认证机制只有在Client和Server端的时间保持同步的情况才有意义。所以保持Time Synchronization在整个认证过程中显得尤为重要。在一个Domain中,一般通过访问同一个Time Service获得当前时间的方式来实现时间的同步。
【问题3】Kerberos怎样对票据加密?
答:对Ttgs加密是利用用户口令Kc加密后传输,对Tv加密是利用会话秘钥Kc,tgs加密后传输。
【问题4】Kerberos为什么能实现双向认证?
答:Server对Client进行认证:Server对 Tv 进行解密后,从而获得了会话秘钥 Kc,v 。再使用 Kc,v 解密Authenticator,通过比较Authenticator中的Client Info和Tv中的Client Info从而实现对Client的认证。
Client对Server进行认证:向Server发送的Credential中设置一个是否需要认证的Flag。Server在对Client认证成功之后,会把Authenticator中的Timestamp提取出来,通过会话秘钥进行加密,当Client接收到并使用会话秘钥进行解密之后,如果确认Timestamp和原来的完全一致,那么他可以认定Server正是他试图访问的Server。
那么为什么Server不直接把通过会话秘钥进行加密的Authenticator原样发送给Client,而要把Timestamp提取出来加密发送给Client呢?原因在于防止恶意的监听者通过获取的Client发送的Authenticator冒充Server以此获得Client的认证。
Kerberos v5
与v4的比较:
① v4使用DES,v5可选算法、密钥类型、密钥长度等
② v4使用IP地址,不支持其他地址类型
③ v4中的有效值由8比特表示,以5分钟为一个基本单位,最长有效期为28*5=1280分钟,v5中可以有任意有效期
④ v5提供了认证转发功能——客户端A访问服务器B,B可以以A的名义访问服务器C中关于A的文件
⑤ v5域间认证使用更少的关系
v4的缺陷:
① 在步骤2、4中票据经过了双重加密,一次被目标服务器的秘密秘钥加密,另一次被客户端所知道的秘密密钥加密,第二次加密不必要,计算开销增大了
② PCBC加密易受攻击,v5中使用CBC,并在CBC之前将散列码附加在消息中
③ 同一个票据可能被用来重放,v5中客户端与服务器可以协商子会话秘钥,且每次连接都会更新子会话秘钥
④ 截获步骤3后,攻击者可口令攻击,v5的预认证机制可以使口令攻击更加困难
认证会话过程:
Realm——域 Options——票据中可设置某些选项 Times——from(起始时间)+till(过期时间)+rtime(更新后的过期时间) Nonce——一个随机数,保证②是实时的,而不是重放的
① C-->AS: Options || IDc || IDtgs || Realmc || Times || Nonce1
② C<--AS: Realmc || IDc || Ttgs || E(Kc, [ Kc,tgs || Times || Nonce1 || Realmtgs || IDtgs ]), 其中Ttgs = E(Ktgs,[ Flags || Kc,tgs || Realmc || IDc || C的IP || Times ])
③ C-->TGS: Options || IDv || Times || Nonce2 || Ttgs || Authenticatorc, 其中Authenticatorc = E(Kc,tgs,[ IDc || Realmc || TS1 ])
④ C<--TGS: Realmc || IDc || Tv || E(Kc,tgs, [ Kc,v || Times || Nonce2 || Realmv || IDv ]), 其中Tv = E(Kv,[ Flags || Kc,v || Realmc || TS2 || Subkey || Seq# ])
⑤ C-->V: Options || Tv || Authenticatorc, 其中Authenticatorc = E(Kc,v,[ IDc || Realmc || TS2 || Subkey || Seq# ])
⑥ C<--V: E(Kc,v,[ TS2 || Subkey || Seq# ])
Subkey是用户选择用来保护本次会话的子会话秘钥。Seq#是序列号的起始值,可以通过顺序编号检测重放。
公钥证书
X.509证书
基于公钥加密(非对称)和数字签名,应用于IP安全、SSL/TLS、安全电子交易(SET)和S/MIME。X.509推荐使用RSA,也可使用别的算法。
多CA间的A/B公钥传递
PKIX
CA(认证中心):证书发放者+撤销证书列表(CRL)
RA(注册中心):可选部分
CRL发放者:可选部分,代理CA发布CRL
数据库:存储证书和CRL
管理功能
注册:通过离线或在线的步骤与RA相互认证,将共享秘密密钥发放给端实体
初始化:安装密钥资料(需要公钥和用于验证证书路径的信息)
认证:为用户的公钥发放一个证书,将证书发放给用户客户端或存储在数据库中
密钥对恢复:允许端实体从一个被授权的密钥备份设施(通常是CA)处恢复他们的加密/解密密钥对
密钥对更新:当证书过期或撤销时,定期更新并发放新证书
撤销申请:当私钥泄露、合作方变化、名称改变等情况发生时
交叉认证:两个CA相互交换用于建立交叉证书信息
管理协议
证书管理协议(CMP)
证书管理消息(CMC)
联合身份管理
身份管理系统的中心思想是单点登录(SSO),用户经过认证后能接入所有的网络资源。Kerberos包含身份管理的许多要素。
身份联合将身份联合扩展到多个安全域(内部单位、外部公司、第三方应用服务),通过共享数字身份,用户认证一次就可以接入多个域。
身份联合管理提供SSO+属性表示+身份映射(不同域的身份和属性可能不同)。
身份联合标准定义了票据的内容和格式、票据交换协议和票据管理任务(属性交换、身份映射、执行登录、审核功能)。