网络与协议安全复习 - 密钥分配和用户认证

密钥分配

基于对称加密的密钥分配

密钥分发能用很多种方法实现。A和B的可选方法:

  • A 选择一个密钥后以物理的方式传递给 B(适合小范围);
  • 第三方选择密钥后物理地传递 A 和 B(适合小范围);
  • 如果 A 和 B 先前或者最近使用过一个密钥,则一方可以将新密钥用旧密钥加密后发送给另一方(如果一个密钥泄露,随后所有密钥全部不再安全);
  • 如果A和B到第三方C有加密连接,则C可以在加密连接上传送密钥给A和B(A与C、B与C共享主密钥,C通过与A、B的共享主密钥分发A、B通信的临时会话密钥。 C是密钥分发中心)。

基于非对称加密的密钥分配

见下方非对称密钥分配部分。

身份认证

NS 协议

典型的基于密钥分配中心KDC的方法:Needham-Schroeder 协议。其中 KDC 负责为用户 A 和 B 之间的通信产生会话密钥。具体流程如下图:
在这里插入图片描述

  • 算法流程:
    (1)A 向 KDC 发送附加随机数 N 1 N_1 N1 I D A , I D B ID_A, ID_B IDA,IDB(个人理解 N 1 N_1 N1 是为了加密 ID),KDC验证 A 和 B 的身份;
    (2)A 安全获得 KDC 返回的新会话密钥 K s K_s Ks,通过接收到的 N 1 N_1 N1 验证不是重放。
    (3)A 将 KDC 加密后的部分发送给 B,此时该加密部分只能被 B 解密。B 通过解密后得到的 I D A ID_A IDA 认证 A。
    (4)B 取随机数 N 2 N_2 N2 用会话密钥 K s K_s Ks 加密发送给 A,此时说明 B 已知道会话密钥 K s K_s Ks
    (5)使 B 确信 A 也知道 K s K_s Ks,同时 f ( N 2 ) f(N_2) f(N2) 使 B 确信这是一条新的消息。
  • 问题
    可能遭受重放攻击。
    在第三步,如果一个过时的会话密钥被掌握,则在这一步可能会被重放以欺骗 B 使用旧的会话密钥 K s K_s Ks,使得 B 遭到破坏。
  • 解决方案
    (1)加入时间戳;
    (2)使用一个额外的临时会话号。

Kerberos 协议

Kerberos 协议通过提供一个集中的授权服务器来负责用户对服务器的认证和服务器对用户的认证,而不是对每个服务器提供详细的认证协议。

  • 特点
    (1)允许用户通过网络访问分布的服务器;
    (2)不需要信任所有的工作站和服务器,只要信任集中式的认证服务器即可;
    (3)Kerberos仅依赖于对称加密体制而未使用公钥体制;
    (4)Kerberos 实现时采用的是基于 Needham-Schroeder(NS) 的认证协议。
  • 算法流程
    为保证认证会话的安全,增加了票据授权服务器 TGS(Ticket-Granting Server)。认证服务器 AS 中存储分别与用户和 TGS 共享的密钥,专门负责识别用户身份,然后将TGS(Ticket-Granting Ticket)用 与 TGS 共享的密钥 加密交给用户,用户据此获得 TGS 的服务。TGS 产生 SGT(Service-Granting Ticket),用户据此获得其他服务器的服务。
    上述一大段话,实际就是:用户通过 AS 和 TGS 认证,再通过 TGS 和其他服务器认证。
    具体流程如下图所示:
    在这里插入图片描述
    在这张图中,(1)和(2)是用户识别和 TGT 颁发;(3)和(4)是 SGT 颁发;(5)是获取目标服务器认证和服务。对于要认证的不同服务器,重复(3)(4)步骤;对于相同服务器的通信回合,重复(5)步骤。
    在认证流程中,所发送的票据内容以下方方式组成:
    T G T → T i c k e t t g s = E K t g s [ I D C , A D C , I D t g s , T S 1 , L i f e t i m e 1 ] TGT → Ticket_{tgs} = E_{Ktgs}[ID_C, AD_C, ID_{tgs}, TS_1, Lifetime_1] TGTTickettgs=EKtgs[IDC,ADC,IDtgs,TS1,Lifetime1]
    S G T → T i c k e t v = E K v [ I D C , A D C , T S 2 , L i f e t i m e 2 ] SGT→Ticket_v = E_{Kv}[ID_C, AD_C, TS_2, Lifetime_2] SGTTicketv=EKv[IDC,ADC,TS2,Lifetime2]
    变量解释:
    I D C ID_C IDC:用户 C 的 ID;
    I D t g s ID_{tgs} IDtgs:TGS 的 ID;
    A D C AD_C ADC:用户C的网络地址;
    K V K_V KV:服务器 V 与 AS 共享的密钥;
    K t g s K_{tgs} Ktgs:服务器 V 与 TGS 共享的密钥;
    T S TS TS:时间戳。
  • 问题与解决
    攻击者可以截获 TGT 和 SGT,在有效的时间内实施重播攻击。解决办法是在提交 TGT 或 SGT 的同时必须向服务器证明其身份仍同前面取得 TGT 和 SGT 时的用户相同。
    长话短说:提交票据加入身份认证。
  • Kerberos V4
    这部分貌似不是很关键,简单提一句。
    对比上方的流程,V4 在认证过程中大量使用了时间戳 TS 和 ID,并在(3)加入了用户身份证明 Authenticator。
    A u t h e n t i c a t o r C = E K c , t g s [ I D C , A D C , T S 3 ] Authenticator_C = E_{Kc,tgs}[ID_C, AD_C, TS_3] AuthenticatorC=EKc,tgs[IDC,ADC,TS3]
  • Kerberos V5
    也是看个概念,不涉及算法内容。
    (1)Kerberos 的安全性问题
    使用时间戳防止重放攻击;
    使用口令做密钥,不安全;
    集中式管理,使用 AS 和 TGS,容易出危险。
    (2)Kerberos V5 的改进
    增加代理功能,委托授权与有限授权;
    改进安全机制;
    在鉴别符 A u t h e n t i c a t o r C Authenticator_C AuthenticatorC 中增加子密钥,可用于群通信;
    增加域名,名字的结构分为两部分;
    PDU 描述改为 ASN.1(高级数据描述语言),方便变长字段和可选字段的处理。

非对称密钥分配

下方列出一些存在的方法。

公钥的公开发布

用户分发自己的公钥给接收者或广播给通信各方。这种方式存在一个很大的缺陷:伪造。任何人都可以产生一个冒充真实发信者的公钥来进行欺骗。

公开可访问的目录

通过使用一个公共的公钥目录可以获得更大程度的安全性。目录应该是可信的,特点如下:
(1)包含 {姓名,公钥} 目录项;
(2)通信方只能安全的注册到目录中;
(3)通信方可在任何时刻进行密钥更替;
(4)目录定期发布或更新。
但是这样仍然存在缺点:存在被篡改伪造的风险,需在线服务。

公钥授权

通过更加严格的控制目录中的公钥分配,可使公钥分配更加安全。
人话:加入一个可信机构作为公钥授权第三方。
这种方式有下面两个缺点:
(1)用户与其他用户通信,就要向目录管理员申请对方公钥,公钥管理员成为系统的瓶颈;
(2)用户需要周期性的请求当前公钥信息来确保通信中的公钥是当前的公钥。
有一些改进方法:
(1)通信双方可以使用证书来交换密钥,这种方案与直接从公钥管理员处获取密钥的可靠性相同。
(2)证书包含公钥和公钥拥有者的标志并由可信的第三方进行签名。用户以安全的方式将公钥交给管理员,从而获得证书。对于证书的认证流程,可以参考下图。
在这里插入图片描述

X.509认证服务/证书机制

X.509 标准

  • 一般表达:
    证书机构 Y 颁发给用户 X 的证书表示为:Y<<X>>;Y 对信息 I 进行的签名表示为 Y{ I }。
    示例:CA<<A>> = C A { V , S N , A I , C A , U C A , A , U A , A p , T A } CA\{V, SN, AI, CA, UCA, A, UA, A_p, T^A\} CA{V,SN,AI,CA,UCA,A,UA,Ap,TA} 表示由 CA 签字的 A 公钥证书。
  • 变量说明:
    V V V:版本号, S N SN SN:证书序列号, A I AI AI:算法标识, C A CA CA:签署证书机构, U C A UCA UCA:签署证书机构的标识, A A A:用户名称, U A UA UA:用户标识, T A T^A TA:有效期, A p A_p Ap:用户A的公钥

证书的获取

(1)任何可以获得 CA 公钥的用户均可获得证书中用户公钥
(2)只有 CA 可以修改证书
(3)由于证书不可伪造,因此证书可以放在目录中而不需要特别的保护
(4)如果两个 CA 能够安全地交换各自的公钥,如下的过程可以使 A 获得 B 的公开密钥:A 获取 X1签名的 X2 的证书从而获取 X2 的公钥;A 获取 X2 签名的 B 的证书从而获取 B 的公钥,记作X1<<X2>>X2<<B>>。B 也可以反向获取 A 的公钥 X2<<X1>>X1<<A>>。
人话:
A 获取 B:先获取 X2 的公钥,再获取 B 的公钥。
B 获取 A:先获取 X1 的公钥,再获取 A 的公钥。
一级一级的获取。

证书的层次结构

  • 如果用户有共同的 CA,则他们应该知道彼此的公钥,否则CA必须形成层次结构并互相发放证书。
    人话:要么 A 和 B 知道彼此的公钥,要么能通过多个 CA 一路获取过去。
  • 每个 CA 目录入口包含两种证书:
    (1)向前证书:由其他 CA 发给 X 的证书;
    (2)向后证书:X 发给其他 CA 的证书。
    人话:
    向前:别人发给他;向后:他发给别人。
  • 每一个用户信任他的父节点的证书。
  • 通过层次化的结构,可以使一个CA下的用户验证任何其他CA下的用户的公钥证书。
    就是第一条想表达的意思。

总结:1、用户要能互相知道/获取公钥;2、每个 CA 可收发证书;3、子信任父。

层次结构的使用

在这里插入图片描述
这是一个示例的层次结构。图里每个 CA 的证书只是部分,并未全部列出,比如 V 还有 V<<Y>> 等等。
A 要获取 B,路径为:X<<W>>W<<V>>V<<Y>>Y<<Z>>Z<<B>>。
B 要获取 A,路径为:Z<<Y>>Y<<V>>V<<W>>W<<X>>X<<A>>

证书的撤销

  • 证书具有有效期,到期即失效。
  • 有时会提前撤销证书:
    (1)用户私钥不安全;
    (2)用户不信任该 CA;
    (3)CA 的证书不安全。
  • 每个 CA 维护一张证书撤销列表(CRL),用户在这里查看证书是否有效。

公钥基础设施PKI

PKI 的定义乱七八糟的不在这里放了,都是车轱辘话。
在这里插入图片描述
PKI (Public Key Infrastructure) 的架构如图中所描述。
PKI的结构模型:
PKI是公钥的管理机制,为域结构形态,每个PKI都有一定的覆盖范围,形成一个管理域。这些管理域通过交叉证书相互关联,构成更大的管理域,最终形成全局性公钥管理体系。
人话:每个 PKI 管理一个区域,通过交叉证书关联。

一些名词解释

CRL(Certificate Revocation List) 是 X.509 证书和证书撤销列表,由发布者数字签名,验证证书是否已被撤销。查有效与否的
PAA(Policy Approval Authority) 政策审批机构,负责制订整个体系结构的安全政策并制订所有下级机构都需要遵循的规章制度,主要是证书政策和证书使用规定。定制度的
CA(Certificate Authority) 证书管理中心负责具体的证书颁发与管理,如同颁发护照的部门,是可信任的第三方。发证书的
ORA(Organizational Registry Authority) 单位注册机构,帮助用户在 CA 处注册并获得证书。帮忙注册的
PMA(Policy Management Authority) 政策管理机构,对PKI进行宏观管理。整个管理的
端实体:数字签名和加密的实体。

  • 辨析:
    (1)两种管理实体:CA 和 RA,分别是管理中心和注册中心。前者负责发布撤销等维护活动,后者负责具体处理注册请求。
    (2)两种端实体:持证者(Holder) 和验证者(Verifier),前者是拥有证书的,后者是验证证书的。举个例子:A 拥有 X 的证书,X 验证后赋予 A 相应的权利。
    (3)PKI 的操作主要分为存取操作和管理操作。
  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值