网络安全基础之笔记一(用户认证)

网络安全体系的五类服务

访问控制服务:根据实体身份决定访问权限

身份鉴别服务:消息来源确认、防假冒(密码技术)

保密性服务:加密

数据完整性服务:防篡改(数字摘要)

防抵赖服务:数字签名

 

攻击类型

被动攻击:消息内容泄露攻击、流量分析攻击(加密后仍可推测出双方位置、身份、信息频率及长度)

主动攻击:假冒、重放、改写、拒绝服务

 

安全机制

加密、数字签名、访问控制、数据完整性、认证交换、流量填充(干扰流量分析)、路由控制(安全通道)、公证。

可信功能、安全标签、事件检测、安全审计跟踪、安全恢复。

 

对抗统计分析

扰乱(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 || LifeTime|| Ttgs ]),其中Ttgs = E(Ktgs,[ Kc,tgs || 用户IP || 用户ID || TGS的ID || TS2 || LifeTime2 ])

③ C输入口令解密后-->TGS:    服务器ID || Ttgs || Authenticatorc,请求票据T, 其中Authenticatorc = E(Kc,tgs,[ 用户ID || 用户IP || TS3 ])

④ C<--TGS:    E(Kc,tgs,[ Kc,v || 服务器ID || TS4 || Tv ]),其中T= 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对 T进行解密后,从而获得了会话秘钥 Kc,。再使用 Kc,解密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+属性表示+身份映射(不同域的身份和属性可能不同)。

身份联合标准定义了票据的内容和格式、票据交换协议和票据管理任务(属性交换、身份映射、执行登录、审核功能)。

 单点登录原理与简单实现

SSO单点登录三种情况的实现方式详解

 

参考:https://www.zhihu.com/question/19816240/answer/63371634

          http://www.cnblogs.com/shijingjing07/p/6123664.html

          http://blog.csdn.net/wulantian/article/details/42418231

           《网络安全基础应用与标准》

原文地址:https://www.cnblogs.com/wanghuohuo/p/7668096.html