Скачать презентацию 认证与证书 典型的认证应用 n 1 Kerberos认证 n Kerberos认证服务是由麻省理 学院的Project Скачать презентацию 认证与证书 典型的认证应用 n 1 Kerberos认证 n Kerberos认证服务是由麻省理 学院的Project

f52fd75be176a586f57a44a30eed3326.ppt

  • Количество слайдов: 93

认证与证书 认证与证书

典型的认证应用 n 1.Kerberos认证 n Kerberos认证服务是由麻省理 学院的Project Athena针对分布式环境的开放式系统开发的认证机制。 Kerberos提供了一种在开放式网络环境下(无保护) 进行身份认证的方法,它使网络上的用户可以相互证 明自己的身份。 它已被开放软件基金会(OSF)的分布式计算环境( DCE),以及许多网络操作系统供应商所采用。 n n 典型的认证应用 n 1.Kerberos认证 n Kerberos认证服务是由麻省理 学院的Project Athena针对分布式环境的开放式系统开发的认证机制。 Kerberos提供了一种在开放式网络环境下(无保护) 进行身份认证的方法,它使网络上的用户可以相互证 明自己的身份。 它已被开放软件基金会(OSF)的分布式计算环境( DCE),以及许多网络操作系统供应商所采用。 n n 常用的有两个版本:第 4版和第 5版。其中版本 5更正 了版本 4中的一些安全缺陷。

Kerberos认证 n Athena的计算环境由大量的匿名 作站和相对较少的独立 服务器组成。服务器提供例如文件存储、打印、邮件等服务, 作站主要用于交互和计算。我们希望服务器能够限定仅能 被授权用户访问,能够验证服务的请求。在此环境中,存在 如下3种威胁: n (1)用户可以访问特定的 作站并伪装成该 作站用户。 n (2)用户可以改动 Kerberos认证 n Athena的计算环境由大量的匿名 作站和相对较少的独立 服务器组成。服务器提供例如文件存储、打印、邮件等服务, 作站主要用于交互和计算。我们希望服务器能够限定仅能 被授权用户访问,能够验证服务的请求。在此环境中,存在 如下3种威胁: n (1)用户可以访问特定的 作站并伪装成该 作站用户。 n (2)用户可以改动 作站的网络地址伪装成其它 作站。 n (3)用户可以根据交换窃取消息,并使用重放攻击来进入 服务器。

Kerberos认证 n 在这样的环境下,Kerberos认证身份不依赖主机 操作系统的认证、不信任主机地址、不要求网络 中的主机保持物理上的安全。在整个网络中,除 了Kerberos服务器外,其他都是危险区域,任何 人都可以在网络上读取、修改、插入数据。 n 解决的问题: 认证、数据完整性、保密性 Kerberos认证 n 在这样的环境下,Kerberos认证身份不依赖主机 操作系统的认证、不信任主机地址、不要求网络 中的主机保持物理上的安全。在整个网络中,除 了Kerberos服务器外,其他都是危险区域,任何 人都可以在网络上读取、修改、插入数据。 n 解决的问题: 认证、数据完整性、保密性

作为一种认证协议 n 特点 q q 基于口令的认证协议 利用对称密码技术建立起来的认证协议 可伸缩性——可适用于分布式网络环境 环境特点 n n User-to-server authentication 密钥存储方案 作为一种认证协议 n 特点 q q 基于口令的认证协议 利用对称密码技术建立起来的认证协议 可伸缩性——可适用于分布式网络环境 环境特点 n n User-to-server authentication 密钥存储方案

认证协议:设计一个协议(一) n 假设A和B要进行通讯,A和B有一个共享的密 钥Kab, 如何利用这个密钥进行认证,并且商 定一个会话密钥Ks 告诉你Ks, 以后就用它, 别让别人知道 我是A A B Kab 好的,我用它 认证协议:设计一个协议(一) n 假设A和B要进行通讯,A和B有一个共享的密 钥Kab, 如何利用这个密钥进行认证,并且商 定一个会话密钥Ks 告诉你Ks, 以后就用它, 别让别人知道 我是A A B Kab 好的,我用它 试试,可我怎 么知道你是B呢 如果你知道Kab, 那么你就知道Ks, 我就知道你是A

认证协议:设计一个协议(二) n 假设A和B要进行通讯,A和B与KDC各有一个共享密钥Ka和Kb, 如 何利用这两个密钥进行认证,并且商定一个会话密钥Ks KDC 我是A,我 想和B通讯 A Ka 我把必要的 信息告诉你 我把消息给你,如果 你是B, 认证协议:设计一个协议(二) n 假设A和B要进行通讯,A和B与KDC各有一个共享密钥Ka和Kb, 如 何利用这两个密钥进行认证,并且商定一个会话密钥Ks KDC 我是A,我 想和B通讯 A Ka 我把必要的 信息告诉你 我把消息给你,如果 你是B, 你就可以解开 A KDC: (IDA||IDB) KDC A: EKa[Ks||IDB||EKb(Ks, IDA)] A B: EKb(Ks, IDA)||EKs(M) 会话密钥Ks, 由A送给B的 认证信息 Kb B

针对认证协议的一些常见攻击手段 和相应对策 n 中间人攻击(MITM, man in the middle) A u u u E B 针对认证协议的一些常见攻击手段 和相应对策 n 中间人攻击(MITM, man in the middle) A u u u E B 如果通讯双方没有任何先决条件,那么这种攻击 总是存在的 A和B的协商过程很容易受到这一类攻击 对策: u 增加A和B之间的先决知识

常见攻击和对策(二) n 重放攻击(replay attacks) B A E u u 偷听者可以记录下当前的通讯流量,以后在适当的时候 重发给通讯的某一方,达到欺骗的目的 对策: u 保证通讯的唯一性 常见攻击和对策(二) n 重放攻击(replay attacks) B A E u u 偷听者可以记录下当前的通讯流量,以后在适当的时候 重发给通讯的某一方,达到欺骗的目的 对策: u 保证通讯的唯一性 u 增加时间戳

常见攻击和对策(三) n 字典攻击 q q q 只要能够获得口令的密文形式,就可以实施字典攻 击 在线和离线 字典攻击的有效性 n n 判断一个口令是有效的 对策 常见攻击和对策(三) n 字典攻击 q q q 只要能够获得口令的密文形式,就可以实施字典攻 击 在线和离线 字典攻击的有效性 n n 判断一个口令是有效的 对策 q q 用户和管理员:选择好的口令 协议设计:对口令的使用过程中,不要泄露口令的 信息 在密文中增加口令以外的额外信息

常见攻击和对策(四) n 已知明文攻击 q 在许多认证协议中,一方会选择一个随机数,并且明文传输这个随机 数,另一方加密这个随机数,并送回来——Challenge/Response, 所以偷听者可以获得已知明文/密文对 q 对策: n n n 避免传输明文/密文对 增加已知明文攻击的难度 常见攻击和对策(四) n 已知明文攻击 q 在许多认证协议中,一方会选择一个随机数,并且明文传输这个随机 数,另一方加密这个随机数,并送回来——Challenge/Response, 所以偷听者可以获得已知明文/密文对 q 对策: n n n 避免传输明文/密文对 增加已知明文攻击的难度 选择明文攻击 q 在认证协议中,如果随机数的选择没有任何规则,那么中间人或者假 冒方就有可能选择随机数,从而实施选择明文攻击 q 对策 n 随机数的选择限制

认证协议中的常用技术(一) n 时间戳 q A收到一个消息,根据消息中的时间戳信息,判断消 息的有效性 n q 如果消息的时间戳与A所知道的当前时间足够接近 这种方法要求不同参与者之间的时钟需要同步 n n 在网络环境中,特别是在分布式网络环境中,时钟同步并 不容易做到 认证协议中的常用技术(一) n 时间戳 q A收到一个消息,根据消息中的时间戳信息,判断消 息的有效性 n q 如果消息的时间戳与A所知道的当前时间足够接近 这种方法要求不同参与者之间的时钟需要同步 n n 在网络环境中,特别是在分布式网络环境中,时钟同步并 不容易做到 一旦时钟同步失败 q q q 要么协议不能正常服务,影响可用性(availability),造成拒绝 服务(DOS) 要么放大时钟窗口,造成攻击的机会 时间窗大小的选择应根据消息的时效性来确定

认证协议中的常见技术(二) n 询问/应答方式(Challenge/Response) q A期望从B获得一个条件 n n n q 在有的协议中,这个challenge也称为nonce n q 可能明文传输,也可能密文传输 这个条件可以是知道某个口令,也可能是其他的事情 认证协议中的常见技术(二) n 询问/应答方式(Challenge/Response) q A期望从B获得一个条件 n n n q 在有的协议中,这个challenge也称为nonce n q 可能明文传输,也可能密文传输 这个条件可以是知道某个口令,也可能是其他的事情 n q 首先发给B一个随机值(challenge) B收到这个值之后,对它作某种变换,得到response,并送回 去 A收到这个response,可以验证B符合这个条件 变换例子:用密钥加密,说明B知道这个密钥; 简单运算,比如增一,说明B知道这个随机值 常用于交互式的认证协议中

例 n 假设:我去邮件服务器申请邮件,服务程序必须能验证我是 我所申明的那人 n 笨办法:服务器让我输入口令  (那么每个服务器必须知道用户的口令,如果网络有成千个 用户,那么每个服务器就要知道成千条口令,如果想改变口 令,就必须联系所有服务器,通知它们修改口令等) 解决:每个用户知道自己的口令    每个服务器也知道自己的口令    引入一个认证服务器——AS(Authentication Server),它 知道所有的口令,包括用户和服务器,并将口令保存在一个 例 n 假设:我去邮件服务器申请邮件,服务程序必须能验证我是 我所申明的那人 n 笨办法:服务器让我输入口令  (那么每个服务器必须知道用户的口令,如果网络有成千个 用户,那么每个服务器就要知道成千条口令,如果想改变口 令,就必须联系所有服务器,通知它们修改口令等) 解决:每个用户知道自己的口令    每个服务器也知道自己的口令    引入一个认证服务器——AS(Authentication Server),它 知道所有的口令,包括用户和服务器,并将口令保存在一个 单独的中央数据库中, 且AS和每台服务器共享惟一的密钥。

简单的认证对话 n (1)用户向AS请求认证,必须告诉AS使用哪个服务 n (2)AS请用户证明身份,用户将密码送给AS n (3)AS将密码与数据库中的密码想比较,如果相等,则通过验证 n (注:AS不能将邮件服务的密码给用户,否则下次用户想再次使用邮 件服务时,就可以绕过AS了) n (4)AS给用户一张票,票里有用户名,并且用邮件服务器的密码加 密 n 简单的认证对话 n (1)用户向AS请求认证,必须告诉AS使用哪个服务 n (2)AS请用户证明身份,用户将密码送给AS n (3)AS将密码与数据库中的密码想比较,如果相等,则通过验证 n (注:AS不能将邮件服务的密码给用户,否则下次用户想再次使用邮 件服务时,就可以绕过AS了) n (4)AS给用户一张票,票里有用户名,并且用邮件服务器的密码加 密 n (5)用户向邮件服务器提出请求,并用票来证明自己的身份 n (6)服务器用自己的密码来解开票,如果能正确解密,并得到用户 的名字,将这个名字与随票一起送上的用户名进行比较,相同则通过 验证。

问题:  当服务解密票据时,如何知道它是被正确地解密的呢? n 解决:  应该在票据里包含有服务的名字  当解开票后,通过找到自己的名字来判断解密的正确性。 n   票=(用户名+服务器名)用服务器的口令加密 问题:  当服务解密票据时,如何知道它是被正确地解密的呢? n 解决:  应该在票据里包含有服务的名字  当解开票后,通过找到自己的名字来判断解密的正确性。 n   票=(用户名+服务器名)用服务器的口令加密

问题:  假设AS在将用户的票传给用户过程中,被截取了,或复制 了,然后伪造成用户,并用窃取的票向邮件服务器提出请 求,则服务被盗用了。 n 解决:  票=用户名+用户地址+服务器名  因为伪造的 作站用户名相同,而网络地址不匹配。 n 问题:  假设AS在将用户的票传给用户过程中,被截取了,或复制 了,然后伪造成用户,并用窃取的票向邮件服务器提出请 求,则服务被盗用了。 n 解决:  票=用户名+用户地址+服务器名  因为伪造的 作站用户名相同,而网络地址不匹配。 n

n n n (1) C AS: IDc || Pc || IDs (2) AS C: n n n (1) C AS: IDc || Pc || IDs (2) AS C: Ticket (3) C S: IDc || Ticket=Eks[IDc || ADc || IDs ] 其中: C=客户机 AS=认证服务器 S=服务器 IDc=C上用户的标识符 IDs=S的标识符 Pc=C上用户的口令 ADc=C的网络地址 Ks=AS和S共享的加密密钥 ||=连接

更加安全的认证对话 问题: (1)用户每次想要得到服务都要取一张新票 (2)当用户每次向AS认证时,密码以明文形式在网络 上传输,如果口令被窃取,就可以伪造此用户来使用 任何服务了。 n 解决的目标: (1)用户口令只输入一次 (2)口令不能在网络上进行明文传输 n 解决的方法: 引入票据授权TGS(Ticket-Granting Server)服务器 更加安全的认证对话 问题: (1)用户每次想要得到服务都要取一张新票 (2)当用户每次向AS认证时,密码以明文形式在网络 上传输,如果口令被窃取,就可以伪造此用户来使用 任何服务了。 n 解决的目标: (1)用户口令只输入一次 (2)口令不能在网络上进行明文传输 n 解决的方法: 引入票据授权TGS(Ticket-Granting Server)服务器 n

n (1)用户与AS通讯,用户向AS证明自己的 身份,并取得一张票据授权票,现在用户想从 邮件服务器上取邮件,但没有邮件服务器的票, 所以用户要用“票据授权”票去取邮件服务的票。 n 不需要使用口令去取新的服务票,票据授权票 可以重复使用。 n (1)用户与AS通讯,用户向AS证明自己的 身份,并取得一张票据授权票,现在用户想从 邮件服务器上取邮件,但没有邮件服务器的票, 所以用户要用“票据授权”票去取邮件服务的票。 n 不需要使用口令去取新的服务票,票据授权票 可以重复使用。

n (2)用户取票据授权时,用户不将口令送给 AS,只是送用户名。 AS用用户名去查找用户口令,然后将票据授 权票的包用用户的口令去加密。 用户用自己的口令去解开包,就可以得到票据 授权的票了。 n (2)用户取票据授权时,用户不将口令送给 AS,只是送用户名。 AS用用户名去查找用户口令,然后将票据授 权票的包用用户的口令去加密。 用户用自己的口令去解开包,就可以得到票据 授权的票了。

n 问题: n 假设用户已在用一个不安全的 作站,在用户 登录各种服务后,无意中在退出时留下了这些 票,假设被人登录了 作站,并发现了这些票, 就可以骗取服务,并将票拷走,永远使用它们。 n 问题: n 假设用户已在用一个不安全的 作站,在用户 登录各种服务后,无意中在退出时留下了这些 票,假设被人登录了 作站,并发现了这些票, 就可以骗取服务,并将票拷走,永远使用它们。

n 解决:写一个程序,在用户退出时将票销毁。 n 但销毁不是一个好的办法:  因为当用户登录到 作站时,有人打开一个监 视网络并拷贝别人服务票据的程序并拷贝一份 用户的票,当用户退出并离开,将它的 作站 地址调整为用户刚登录时的地址,就可以欺骗 服务器了。(因为它已有了用户名,用户地址, 票据) n 解决:写一个程序,在用户退出时将票销毁。 n 但销毁不是一个好的办法:  因为当用户登录到 作站时,有人打开一个监 视网络并拷贝别人服务票据的程序并拷贝一份 用户的票,当用户退出并离开,将它的 作站 地址调整为用户刚登录时的地址,就可以欺骗 服务器了。(因为它已有了用户名,用户地址, 票据)

n 解决:票不能永远合法,给每张票一个有效期 n 票=用户名+用户地址+服务名+有效期+时 间戳 n 解决:票不能永远合法,给每张票一个有效期 n 票=用户名+用户地址+服务名+有效期+时 间戳

n n n n (1)C AS: IDc || IDtgs (2)AS C: Ekc[Tickettgs] (3)C TGS: n n n n (1)C AS: IDc || IDtgs (2)AS C: Ekc[Tickettgs] (3)C TGS: IDc || IDv || Tickettgs (4)TGS C: Tickets (5)C S: IDc || Tickets Tickettgs=Ektgs[IDc || ADc || IDtgs || TS 1 || Lifetime 1] Tickets=Eks[IDc || ADc || TS 2 || Litetime 2]

n 如果S能解开票, 则说明票来自TGS, 因为只有 TGS和S共享KS, 可以防止有人伪造假票。 n 检查票是否在有效期内, 如果过期, 则服务拒绝, 可以阻止使用旧票或偷来的票来骗取服务。 n 测试票的用户名和地址是否匹配请求者的用户 名和地址, n 如果S能解开票, 则说明票来自TGS, 因为只有 TGS和S共享KS, 可以防止有人伪造假票。 n 检查票是否在有效期内, 如果过期, 则服务拒绝, 可以阻止使用旧票或偷来的票来骗取服务。 n 测试票的用户名和地址是否匹配请求者的用户 名和地址, 如果测试失败, 则说明使用了别有 票。

n 问题: n (1)如果名字和地址匹配, 证明了什么, 什么也没 有, 因为票可以被偷走, 用户名和网络地址都可以 被改变, 票也可以在有效期内被盗用(如果票的有 效期为8个小时,那么用户在使用了2个小时后 提前退出了,那6个小时就有可能被盗用——有 效期内被盗用)。 n 问题: n (1)如果名字和地址匹配, 证明了什么, 什么也没 有, 因为票可以被偷走, 用户名和网络地址都可以 被改变, 票也可以在有效期内被盗用(如果票的有 效期为8个小时,那么用户在使用了2个小时后 提前退出了,那6个小时就有可能被盗用——有 效期内被盗用)。

n (2)服务不能确定票的发送者是不是合法用户, 服务 之所以无法判断是因为它没有与用户共享一个秘密。 n (3)票据授予票据的生存期, 如果短, 则需要重复输入 口令, 如果长, 则对手可能重放攻击。 n (4)要求服务器向用户认证自己, 伪造的服务器将会 n (2)服务不能确定票的发送者是不是合法用户, 服务 之所以无法判断是因为它没有与用户共享一个秘密。 n (3)票据授予票据的生存期, 如果短, 则需要重复输入 口令, 如果长, 则对手可能重放攻击。 n (4)要求服务器向用户认证自己, 伪造的服务器将会 充当真的服务器, 捕获来自用户的信息, 而拒绝提供真 正的服务。

n 解决: n Kerberos认证 n 解决: n Kerberos认证

Kerberos认证 n 为了减轻每个服务器的负担,Kerberos把身份认证的 任务集中在身份认证服务器上。 n Kerberos的认证服务任务被分配到两个相对独立的服 务器:认证服务器AS(Authenticator Server)和票 据许可服务器TGS(Ticket Granting Server),它们 同时连接并维护一个中央数据库存放用户口令、标识 等重要信息。 n Kerberos认证 n 为了减轻每个服务器的负担,Kerberos把身份认证的 任务集中在身份认证服务器上。 n Kerberos的认证服务任务被分配到两个相对独立的服 务器:认证服务器AS(Authenticator Server)和票 据许可服务器TGS(Ticket Granting Server),它们 同时连接并维护一个中央数据库存放用户口令、标识 等重要信息。 n 整个Kerberos系统由四部分组成:AS,TGS,Client, Server。

Kerberos认证 n Kerberos使用两类凭证:票据(ticket)和鉴 别码(authenticator)。该两种凭证均使用私 有密钥加密,但加密的密钥不同。 Kerberos认证 n Kerberos使用两类凭证:票据(ticket)和鉴 别码(authenticator)。该两种凭证均使用私 有密钥加密,但加密的密钥不同。

n Ticket用来安全的在认证服务器和用户请求的 服务之间传递用户的身份,同时也传递附加信 息用来保证使用ticket的用户必须是Ticket中指 定的用户。Ticket一旦生成,在生存时间指定 的时间内可以被client多次使用来申请同一个 server的服务。 n Ticket用来安全的在认证服务器和用户请求的 服务之间传递用户的身份,同时也传递附加信 息用来保证使用ticket的用户必须是Ticket中指 定的用户。Ticket一旦生成,在生存时间指定 的时间内可以被client多次使用来申请同一个 server的服务。

n Authenticator则提供信息与Ticket中的信息进 行比较,一起保证发出Ticket的用户就是 Ticket中指定的用户。Authenticator只能在一 次服务请求中使用,每当client向server申请服 务时,必须重新生成Authenticator。 n Authenticator则提供信息与Ticket中的信息进 行比较,一起保证发出Ticket的用户就是 Ticket中指定的用户。Authenticator只能在一 次服务请求中使用,每当client向server申请服 务时,必须重新生成Authenticator。

Kerberos认证 Kerberos的记号 C n 这里我们 首先介绍 Kerberos 认证版本 4 的内容, 在叙述中 我们使用 以下记号: 客户 Kerberos认证 Kerberos的记号 C n 这里我们 首先介绍 Kerberos 认证版本 4 的内容, 在叙述中 我们使用 以下记号: 客户 S 服务器 ADc 客户的网络地址 Lifetime 票据的生存期 TS 时间戳 Kx x的秘密密钥 Kx, y x与y的会话密钥 Ex[m] 以x的秘密密钥加密的m Ticket x x的票据 Authenticator x x的鉴别码

Kerberos版本 4认证过程 n 用户c请求服务s的整个Kerberos认证协议过程 如下。 n(1)C请求票据许可票据 n(2)AS发放票据许可票据 和[C,TGS]间会话密钥 n(3)C请求服务器票据 n(4)TGS发放服务器票据 和[C,S]间会话密钥 n(5)C请求服务 n(6)S提供服务器认证信息 Kerberos版本 4认证过程 n 用户c请求服务s的整个Kerberos认证协议过程 如下。 n(1)C请求票据许可票据 n(2)AS发放票据许可票据 和[C,TGS]间会话密钥 n(3)C请求服务器票据 n(4)TGS发放服务器票据 和[C,S]间会话密钥 n(5)C请求服务 n(6)S提供服务器认证信息

Kerberos认证框图 以上是Kerberos V 4过程 的简要描述,详细过程分为 以下3个阶段,共 6步。 Kerberos认证框图 以上是Kerberos V 4过程 的简要描述,详细过程分为 以下3个阶段,共 6步。

Kerberos版本 4认证过程 n (1)C请求票据许可票据 n 用户得到票据许可票据的 作在登录 作站时 进行。登录时用户被要求输入用户名,输入后 系统会向认证服务器AS以明文方式发送一条 包含用户和TGS服务两者名字的请求。 n C n Kerberos版本 4认证过程 n (1)C请求票据许可票据 n 用户得到票据许可票据的 作在登录 作站时 进行。登录时用户被要求输入用户名,输入后 系统会向认证服务器AS以明文方式发送一条 包含用户和TGS服务两者名字的请求。 n C n IDC是 作站的标识,其中的时间戳是用来防 回放攻击的。 AS: IDC || IDtgs || TS 1

Kerberos版本 4认证过程 n (2)AS发放票据许可票据和会话密钥 n 认证服务器检查用户是否有效,如果有效,则随机产 生一个用户用来和TGS通信的会话密钥Kc, tgs,然后 创建一个票据许可票据Tickettgs,票据许可票据中包 含有用户名,TGS服务名,用户地址,当前时间,有 效时间,还有刚才创建的会话密钥。票据许可票据使 用Ktgs加密。认证服务器向用户发送票据许可票据和 会话密钥Kc, tgs,发送的消息用只有用户和认证服务 Kerberos版本 4认证过程 n (2)AS发放票据许可票据和会话密钥 n 认证服务器检查用户是否有效,如果有效,则随机产 生一个用户用来和TGS通信的会话密钥Kc, tgs,然后 创建一个票据许可票据Tickettgs,票据许可票据中包 含有用户名,TGS服务名,用户地址,当前时间,有 效时间,还有刚才创建的会话密钥。票据许可票据使 用Ktgs加密。认证服务器向用户发送票据许可票据和 会话密钥Kc, tgs,发送的消息用只有用户和认证服务 器知道的Kc来加密,Kc的值基于用户的密码。

Kerberos版本 4认证过程 n AS C: EKc[Kc, tgs || IDtgs || TS 2 || Lifetime Kerberos版本 4认证过程 n AS C: EKc[Kc, tgs || IDtgs || TS 2 || Lifetime 2 || Tickettgs] n 这里: n Tickettgs=EKtgs[Kc,tgs || IDc || ADc || IDtgs || TS 2 || Lifetime 2] n Lifetime与Ticket相关联,如果太短需要重 复申请,太长会增加重放攻击的机会。

AS发送的报文 AS发送的报文

Kerberos版本 4认证过程 n (3)C请求服务器票据 n 用户 作站收到认证服务器回应后,就会要求用 户输入密码,将密码转化为DES密钥Kc,然后将 认证服务器发回的信息解开,将票据和会话密钥 保存用于以后的通信,为了安全性用户密码和密 钥Kc则被删掉。 Kerberos版本 4认证过程 n (3)C请求服务器票据 n 用户 作站收到认证服务器回应后,就会要求用 户输入密码,将密码转化为DES密钥Kc,然后将 认证服务器发回的信息解开,将票据和会话密钥 保存用于以后的通信,为了安全性用户密码和密 钥Kc则被删掉。

Kerberos版本 4认证过程 n n n 当用户的登录时间超过了票据的有效时间时,用户的请求就会失败, 这时系统会要求用户重新申请票据Tickettgs。用户可以查看自己所 拥有的令牌的当前状态。 一个票据只能申请一个特定的服务,所以用户必须为每一个服务s申 请新的票据,用户可以从TGS处得到票据Tickets。 用户首先向TGS发出申请服务器票据的请求。请求信息中包含s的名 字,上一步中得到的请求TGS服务的加密票据Tickettgs,还有用会 话密钥加密过的Authenticator信息。 C Kerberos版本 4认证过程 n n n 当用户的登录时间超过了票据的有效时间时,用户的请求就会失败, 这时系统会要求用户重新申请票据Tickettgs。用户可以查看自己所 拥有的令牌的当前状态。 一个票据只能申请一个特定的服务,所以用户必须为每一个服务s申 请新的票据,用户可以从TGS处得到票据Tickets。 用户首先向TGS发出申请服务器票据的请求。请求信息中包含s的名 字,上一步中得到的请求TGS服务的加密票据Tickettgs,还有用会 话密钥加密过的Authenticator信息。 C TGS: IDs || Tickettgs || Authenticatorc Tickettgs=EKtgs[Kc, tgs || IDc || ADc || IDtgs || TS 2 || Lifetime 2] Authenticatorc=Ekc, tgs[IDc || ADc || TS 3]

用户向服务器申请服务的报文 用户向服务器申请服务的报文

Kerberos版本 4认证过程 n (4)TGS发放服务器票据和会话密钥 n TGS得到请求后,用私有密钥Ktgs和会话密钥Kc,tgs解开请求得 到Tickettgs和Authenticatorc的内容,根据两者的信息鉴定用户身 份是否有效。如果有效,TGS生成用于c和s之间通信的会话密钥 Kc, s,并生成用于c申请得到s服务的票据Tickets,其中包含c和s的 名字,c的网络地址,当前时间,有效时间和刚才产生的会话密钥。 票据Tickets的有效时间是票据Tickettgs剩余的有效时间和所申请的 服务缺省有效时间中最短的时间。 n Kerberos版本 4认证过程 n (4)TGS发放服务器票据和会话密钥 n TGS得到请求后,用私有密钥Ktgs和会话密钥Kc,tgs解开请求得 到Tickettgs和Authenticatorc的内容,根据两者的信息鉴定用户身 份是否有效。如果有效,TGS生成用于c和s之间通信的会话密钥 Kc, s,并生成用于c申请得到s服务的票据Tickets,其中包含c和s的 名字,c的网络地址,当前时间,有效时间和刚才产生的会话密钥。 票据Tickets的有效时间是票据Tickettgs剩余的有效时间和所申请的 服务缺省有效时间中最短的时间。 n Tgs最后将加密后的票据Tickets和会话密钥Kc, s用用户和TGS之间 的会话密钥Kc, tgs加密后发送给用户。用户c得到回答后,用Kc, tgs 解密,得到所请求的票据和会话密钥。 n TGS n 这里:Tickets=EKs[Kc, s || IDc || ADc || IDs || TS 4 || Lifetime 4] C: Ekc, tgs[Kc, s || IDs || TS 4 || Tickets]

Kerberos版本 4认证过程 n n n (5)C请求服务 用户申请服务s的 作与(3)相似,只不过申请的服务由 TGS变为s。 用户首先向s发送包含票据Tickets和Authenticatorc的请求, s收到请求后将其分别解密,比较得到的用户名,网络地 址,时间等信息,判断请求是否有效。用户和服务程序之 间的时钟必须同步在几分钟的时间段内,当请求的时间与 系统当前时间相差太远时,认为请求是无效的,用来防止 Kerberos版本 4认证过程 n n n (5)C请求服务 用户申请服务s的 作与(3)相似,只不过申请的服务由 TGS变为s。 用户首先向s发送包含票据Tickets和Authenticatorc的请求, s收到请求后将其分别解密,比较得到的用户名,网络地 址,时间等信息,判断请求是否有效。用户和服务程序之 间的时钟必须同步在几分钟的时间段内,当请求的时间与 系统当前时间相差太远时,认为请求是无效的,用来防止 重放攻击。 C S: Tickets || Authenticatorc 这里:Tickets=EKs[Kc, s || IDc || ADc || IDs || TS 4 || Lifetime 4] Authenticatorc=Ekc, s[IDc || ADc || TS 5]

Kerberos版本 4认证过程 n (6)S提供服务器认证信息 n 当C也想验证S的身份时,S将收到的时间戳加 1,并用会 话密钥Kc,s加密后发送给用户,用户收到回答后,用会 话密钥解密来确定S的身份。 n S n 通过上面六步之后,用户C和服务S互相验证了彼此的身 份,并且拥有只有C和S两者知道的会话密钥Kc, Kerberos版本 4认证过程 n (6)S提供服务器认证信息 n 当C也想验证S的身份时,S将收到的时间戳加 1,并用会 话密钥Kc,s加密后发送给用户,用户收到回答后,用会 话密钥解密来确定S的身份。 n S n 通过上面六步之后,用户C和服务S互相验证了彼此的身 份,并且拥有只有C和S两者知道的会话密钥Kc, s,以后 的通信都可以通过会话密钥得到保护。 C: Ekc, s[TS 5+1]

Kerberos版本 5 n Kerberos版本 5对Kerberos只做了两处改变: n (1)因为意识到验证器用少于五分钟的有效期 不足以防止攻击者进行重演。 Kerberos版本 5 中,验证器真正只能用一次,因为服务器用“重 演缓冲区”保存了最近一次提交的验证器的信息。 如果攻击者试图截取验证器并重用它,“重演缓 冲区”会发现验证器已经被提交了。 Kerberos版本 5 n Kerberos版本 5对Kerberos只做了两处改变: n (1)因为意识到验证器用少于五分钟的有效期 不足以防止攻击者进行重演。 Kerberos版本 5 中,验证器真正只能用一次,因为服务器用“重 演缓冲区”保存了最近一次提交的验证器的信息。 如果攻击者试图截取验证器并重用它,“重演缓 冲区”会发现验证器已经被提交了。

n (2)改变了Kerberos送给用户的票的时候, 票不再用用户的口令加密。 因为它已经用票据授权服务的口令加过密了。 票据授权服务的票被用来获取其它票的时候, 它直接就被传输了。因此票不需要再用用户的 口令加密一次。 n (2)改变了Kerberos送给用户的票的时候, 票不再用用户的口令加密。 因为它已经用票据授权服务的口令加过密了。 票据授权服务的票被用来获取其它票的时候, 它直接就被传输了。因此票不需要再用用户的 口令加密一次。

Kerberos版本 5认证过程 n n n n Kerberos版本 5认证过程: 在下面所述的认证过程中,我们用以下的记号: Times-时间标志:表明票据的开始使用时间、截止使 用时间等; Nonce-随机数:用于保证信息总是最新的和防止重放 攻击; Realm-在大型网络中,可能有多个Kerberos形成分级 Kerberos版本 5认证过程 n n n n Kerberos版本 5认证过程: 在下面所述的认证过程中,我们用以下的记号: Times-时间标志:表明票据的开始使用时间、截止使 用时间等; Nonce-随机数:用于保证信息总是最新的和防止重放 攻击; Realm-在大型网络中,可能有多个Kerberos形成分级 Kerberos体制,Realm表示用户C所属的领域; Options-用户请求的包含在票据中的特殊标志。 ADx-X的网络地址。

Kerberos版本 5认证过程 n n n 用户C从AS获得访问TGS的票据Ttgs (1)C → AS:IDC‖IDtgs‖Times‖Options‖Nonce 1‖Realm. C (2)AS → C: Kerberos版本 5认证过程 n n n 用户C从AS获得访问TGS的票据Ttgs (1)C → AS:IDC‖IDtgs‖Times‖Options‖Nonce 1‖Realm. C (2)AS → C: IDC‖Realm. C‖Tickettgs‖EKC(KC, tgs‖Times‖Nonce 1‖Re almtgs‖IDtgs) 其中: Tickettgs=EKtgs(KC, tgs‖IDC‖ADC‖Times‖Realm. C‖Flag s) Ticket中的Flags字段支持更多的功能。 用户C从TGS获得访问Server的票据Tickets

n n (3)C → TGS: Options‖IDs‖Times‖Nonce 2‖Tickettgs‖Authentic ator. C (4)TGS → C: Realm. C‖IDC‖Ticket. n n (3)C → TGS: Options‖IDs‖Times‖Nonce 2‖Tickettgs‖Authentic ator. C (4)TGS → C: Realm. C‖IDC‖Ticket. S‖EKC, tgs(KC, S‖Times‖Non ce 2‖Realm. S‖IDS) 其中: Authenticator. C=EKC, tgs(IDC‖Realm. C‖TS 1) Ticket. S=EKS(Flags‖KC, S‖Realm. C‖IDC‖ADC‖Ti mes)

Kerberos版本 5认证过程 n n 用户C将Ticket. S提交给Server, 获得服务 (5)C → S:Options‖Ticket. S‖Authenticator. C (6)S → Kerberos版本 5认证过程 n n 用户C将Ticket. S提交给Server, 获得服务 (5)C → S:Options‖Ticket. S‖Authenticator. C (6)S → C:EKC, S(TS 2‖Subkey‖Seq) 其中: Authenticator. C=EKC, S(IDC‖Realm. C‖TS 2‖Subk ey‖Seq) Subkey和Seq均为可选项,Subkey指定此次会话 的密钥,若不指定Subkey则会话密钥为KC, S; Seq为本次会话指定的起始序列号,以防止重传 攻击。

Kerberos版本 5认证过程 n 消息(1)、(3)、(5)在两个版本中是基本相同的。 第 5版删除了v 4中消息(2)、(4)的票据双重加密; 增加了多重地址;用开始可结束时间替代有效 时间;并在鉴别码里增加了包括一个附加密钥 的选项; n V 4只支持DES(数据加密标准)算法,V 5采用独 Kerberos版本 5认证过程 n 消息(1)、(3)、(5)在两个版本中是基本相同的。 第 5版删除了v 4中消息(2)、(4)的票据双重加密; 增加了多重地址;用开始可结束时间替代有效 时间;并在鉴别码里增加了包括一个附加密钥 的选项; n V 4只支持DES(数据加密标准)算法,V 5采用独 立的加密模块,可用其它加密算法替换;

n V 4版里,为防止重放攻击,nonce由时间戳实现,这就 带来了时间同步问题。即使利用网络时间协议(Network Time Protocol)或国际标准时间(Coordinated universaltime)能在一定程度上解决时间同步问题,但网 络上关于时间的协议并不安全。 n V 5 版允许nonce可以是一个数字序列,但要求它唯一。 由于服务器无法保证不同用户的nonce不冲突,偶然的 冲突可能将合法用户的服务器申请当作重放攻击而拒之 n V 4版里,为防止重放攻击,nonce由时间戳实现,这就 带来了时间同步问题。即使利用网络时间协议(Network Time Protocol)或国际标准时间(Coordinated universaltime)能在一定程度上解决时间同步问题,但网 络上关于时间的协议并不安全。 n V 5 版允许nonce可以是一个数字序列,但要求它唯一。 由于服务器无法保证不同用户的nonce不冲突,偶然的 冲突可能将合法用户的服务器申请当作重放攻击而拒之 门外。

Kerberos协议的优势 n n n Kerberos协议具有以下的一些优势: (1)与授权机制相结合; (2)实现了一次性签放的机制,并且签放的 票据都有一个有效期; (3)支持双向的身份认证; (4)支持分布式网络环境下的域间认证。 Kerberos协议的优势 n n n Kerberos协议具有以下的一些优势: (1)与授权机制相结合; (2)实现了一次性签放的机制,并且签放的 票据都有一个有效期; (3)支持双向的身份认证; (4)支持分布式网络环境下的域间认证。

Kerberos协议的安全分析 n 在Kerberos认证机制中,也存在一些安全稳患。Kerberos机 制的实现要求一个时钟基本同步的环境,这样需要引入时间 同步机制,并且该机制也需要考虑安全性,否则攻击者可以 通过调节某主机的时间实施重放攻击(Replay Attack)。在 Kerberos系统中,Kerberos服务器假想共享密钥是完全保密 的,如果一个入侵者获得了用户的密钥,他就可以假装成合 法用户。攻击者还可以采用离线方式攻击用户口令。如果用 户口令被破获,系统将是不安全的。又如,如果系统的login 程序被替换,则用户的口令会被窃取。 Kerberos协议的安全分析 n 在Kerberos认证机制中,也存在一些安全稳患。Kerberos机 制的实现要求一个时钟基本同步的环境,这样需要引入时间 同步机制,并且该机制也需要考虑安全性,否则攻击者可以 通过调节某主机的时间实施重放攻击(Replay Attack)。在 Kerberos系统中,Kerberos服务器假想共享密钥是完全保密 的,如果一个入侵者获得了用户的密钥,他就可以假装成合 法用户。攻击者还可以采用离线方式攻击用户口令。如果用 户口令被破获,系统将是不安全的。又如,如果系统的login 程序被替换,则用户的口令会被窃取。

Kerberos区域与多区域的 Kerberos的一个完整服 务范围由一个Kerberos服务 器、多个客户机和多个服务 器构成,并且满足以下两个 要求: ① Kerberos服务器必须在它 Kerberos区域与多区域的 Kerberos的一个完整服 务范围由一个Kerberos服务 器、多个客户机和多个服务 器构成,并且满足以下两个 要求: ① Kerberos服务器必须在它

Kerberos区域与多区域的 Kerberos 满足以上两个要求的 Kerberos的一个完整服务范 围称为Kerberos的一个区域。 网络中隶属于不同行政机构 的客户和服务器则构成不同 的区域,一个区域的用户如 Kerberos区域与多区域的 Kerberos 满足以上两个要求的 Kerberos的一个完整服务范 围称为Kerberos的一个区域。 网络中隶属于不同行政机构 的客户和服务器则构成不同 的区域,一个区域的用户如

Kerberos区域与多区域的Kerberos服务还要求在两个区域间,第 1个区域 的Kerberos服务器信任第 2区域的Kerberos服务器对本区域中 用户的认证,而且第 2区域的服务器也应信任第 1区域的 Kerberos服务器。 下图是两个区域的Kerberos服务示意图,其中区域A中的 用户希望得到区域B中服务器的服务。为此,用户通过自己 的客户机首先向本区域的TGS申请一个访问远程TGS(即区 域B中的TGS)的票据许可票据,然后用这个票据许可票据 向远程TGS申请获得服务器服务的服务许可票据。具体描述 如下: Kerberos区域与多区域的Kerberos服务还要求在两个区域间,第 1个区域 的Kerberos服务器信任第 2区域的Kerberos服务器对本区域中 用户的认证,而且第 2区域的服务器也应信任第 1区域的 Kerberos服务器。 下图是两个区域的Kerberos服务示意图,其中区域A中的 用户希望得到区域B中服务器的服务。为此,用户通过自己 的客户机首先向本区域的TGS申请一个访问远程TGS(即区 域B中的TGS)的票据许可票据,然后用这个票据许可票据 向远程TGS申请获得服务器服务的服务许可票据。具体描述 如下:

两个区域的Kerberos服务 ① 客户向本地AS申请访问本区域 TGS的票据 ② AS向客户发放访问本区域TGS的 票据 ③ 客户向本地TGS申请访问远程TGS 的票据许可票据 ④ TGS向客户发放访问远程TGS的 票据许可票据 ⑤ 两个区域的Kerberos服务 ① 客户向本地AS申请访问本区域 TGS的票据 ② AS向客户发放访问本区域TGS的 票据 ③ 客户向本地TGS申请访问远程TGS 的票据许可票据 ④ TGS向客户发放访问远程TGS的 票据许可票据 ⑤ 客户向远程TGS申请获得服务器服 务的服务许可票据 ⑥ 远程TGS向客户发放服务许可票据 ⑦ 客户申请远程服务器的服务

Kerberos区域与多区域的Kerberos ① 客户向本地AS申请访问本区域TGS的票据: C→AS:IDC‖IDtgs‖TS 1。 ② AS向客户发放访问本区域TGS的票据: AS→C:EKC[Kc, tgs‖IDtgs‖TS 2‖lifetime 2‖Tickettgs]。 ③ 客户向本地TGS申请访问远程TGS的票据许可票据: C→TGS:IDtgsrem‖Tickettgs‖Authenticatorc。 Kerberos区域与多区域的Kerberos ① 客户向本地AS申请访问本区域TGS的票据: C→AS:IDC‖IDtgs‖TS 1。 ② AS向客户发放访问本区域TGS的票据: AS→C:EKC[Kc, tgs‖IDtgs‖TS 2‖lifetime 2‖Tickettgs]。 ③ 客户向本地TGS申请访问远程TGS的票据许可票据: C→TGS:IDtgsrem‖Tickettgs‖Authenticatorc。 ④ TGS向客户发放访问远程TGS的票据许可票据: TGS→C:EKc, tgs[Kc, tgsrem‖IDtgsrem‖TS 4‖Tickettgsrem]。

Kerberos区域与多区域的 Kerberos ⑤ 客户向远程TGS申请获得 服务器服务的服务许可票据: C→TGSrem:IDvrem‖Tickettgsrem‖Authenticatorc。 ⑥ 远程TGS向客户发放服务 许可票据: TGS→C: EKc, tgsrem[Kc, vrem‖IDvrem‖TS 6‖Ticketvrem]。 Kerberos区域与多区域的 Kerberos ⑤ 客户向远程TGS申请获得 服务器服务的服务许可票据: C→TGSrem:IDvrem‖Tickettgsrem‖Authenticatorc。 ⑥ 远程TGS向客户发放服务 许可票据: TGS→C: EKc, tgsrem[Kc, vrem‖IDvrem‖TS 6‖Ticketvrem]。 ⑦ 客户申请远程服务器的服 务:

Kerberos区域与多区域的 Kerberos 对有很多个区域的情况 来说,以上方案的扩充性不 好,因为如果有N个区域, 则必须有N(N-2)/2次密钥交 换才可使每个Kerberos区域 Kerberos区域与多区域的 Kerberos 对有很多个区域的情况 来说,以上方案的扩充性不 好,因为如果有N个区域, 则必须有N(N-2)/2次密钥交 换才可使每个Kerberos区域

认证业务与证书 认证业务与证书

X. 509 认证业务 如果每个想要为某些资料做签名的人,都到 CA那里申请各种不同类型的证书,那么管理 各种不同的证书格式很快就成为一个问题。 n 为了解决这个问题,ITU (国际电信同盟)设计 并批准了一个专门针对证书格式的标准。  该标准被称为X. 509,现在已经广泛应用于 Internet上,自从1988年首次被标准化以来, 它已经经历了三个版本。 X. 509 认证业务 如果每个想要为某些资料做签名的人,都到 CA那里申请各种不同类型的证书,那么管理 各种不同的证书格式很快就成为一个问题。 n 为了解决这个问题,ITU (国际电信同盟)设计 并批准了一个专门针对证书格式的标准。  该标准被称为X. 509,现在已经广泛应用于 Internet上,自从1988年首次被标准化以来, 它已经经历了三个版本。 n

X. 509 认证业务   X. 509作为定义目录业务的X. 500系列的一个组成 部分,是由ITU建议的,这里所说的目录实际上是维护 用户信息数据库的服务器或分布式服务器集合,用户信 息包括用户名到网络地址的映射和用户的其他属性。X. 509定义了X. 500目录向用户提供认证业务的一个框架, 目录的作用是存放用户的公钥证书。   X. 509还定义了基于公钥证书的认证协议。 X. 509 认证业务   X. 509作为定义目录业务的X. 500系列的一个组成 部分,是由ITU建议的,这里所说的目录实际上是维护 用户信息数据库的服务器或分布式服务器集合,用户信 息包括用户名到网络地址的映射和用户的其他属性。X. 509定义了X. 500目录向用户提供认证业务的一个框架, 目录的作用是存放用户的公钥证书。   X. 509还定义了基于公钥证书的认证协议。   由于X. 509中定义的证书结构和认证协议已被广泛 应用于S/MIME、IPSec、SSL/TLS以及SET等诸多应用 过程,因此X. 509已成为一个重要的标准。

X. 509 认证业务 X. 509的基础是公钥密码 体制和数字签字,但其中未 特别指明使用哪种密码体制( 建议使用RSA),也未特别指 明数字签字中使用哪种杂凑 X. 509 认证业务 X. 509的基础是公钥密码 体制和数字签字,但其中未 特别指明使用哪种密码体制( 建议使用RSA),也未特别指 明数字签字中使用哪种杂凑

证书 1. 证书的格式 用户的公钥证书是X. 509 的核心问题,证书由某个可 信的证书发放机构CA建立, 并由CA或用户自己将其放入 证书 1. 证书的格式 用户的公钥证书是X. 509 的核心问题,证书由某个可 信的证书发放机构CA建立, 并由CA或用户自己将其放入

X. 509的证书格式和证书吊 销列表 X. 509的证书格式和证书吊 销列表

X. 509 证书格式 ① 版本号 默认值为第 1版。如果证书中需有发放者惟一识 别符或主体惟一识别符,则版本号一定是 2,如果有一个或 多个扩充项,则版本号为 3。 ② 顺序号 为一整数,由同一CA发放的每一证书的顺序号 X. 509 证书格式 ① 版本号 默认值为第 1版。如果证书中需有发放者惟一识 别符或主体惟一识别符,则版本号一定是 2,如果有一个或 多个扩充项,则版本号为 3。 ② 顺序号 为一整数,由同一CA发放的每一证书的顺序号 是惟一的。 ③ 签字算法识别符 ④ 发放者名称 ⑤ 有效期 据项。 签署证书所用的算法及相应的参数。 指建立和签署证书的CA名称。 包括证书有效期的起始时间和终止时间两个数

X. 509 证书格式 ⑥ 主体名称 指证书所属用户的名称,即这一证书用来证 明持有秘密钥用户的相应公开钥。 ⑦ 主体的公开钥信息 包括主体的公开钥、使用这一公开 钥的算法的标识符及相应的参数。 ⑧ 发放者惟一识别符 这一数据项是可选用的,当发放者 X. 509 证书格式 ⑥ 主体名称 指证书所属用户的名称,即这一证书用来证 明持有秘密钥用户的相应公开钥。 ⑦ 主体的公开钥信息 包括主体的公开钥、使用这一公开 钥的算法的标识符及相应的参数。 ⑧ 发放者惟一识别符 这一数据项是可选用的,当发放者 (CA)的名称被重新用于其他实体时,则用这一识别符来 惟一标识发放者。 ⑨ 主体惟一识别符 这一数据项也是可选用的,当主体的 名称被重新用于其他实体时,则用这一识别符来惟一地标 识主体。 ⑩ 扩充域 其中包括一个或多个扩充的数据项,仅在第 3版 中使用。

X. 509 证书格式 签字 CA用自己的秘密钥 对上述域的杂凑值签字的结 果,此外,这个域还包括签 字算法标识符。 X. 509中使用以下表示法 来定义证书: X. 509 证书格式 签字 CA用自己的秘密钥 对上述域的杂凑值签字的结 果,此外,这个域还包括签 字算法标识符。 X. 509中使用以下表示法 来定义证书:

n 例 n 例

X. 509 证书获取 2. 证书的获取 CA为用户产生的证书应有以 下特性: ① 其他任一用户只要得到 CA的公开钥,就能由此得到 CA为该用户签署的公开钥。 ② 除CA以外,任何其他人 X. 509 证书获取 2. 证书的获取 CA为用户产生的证书应有以 下特性: ① 其他任一用户只要得到 CA的公开钥,就能由此得到 CA为该用户签署的公开钥。 ② 除CA以外,任何其他人

X. 509 证书获取 如果所有用户都由同一CA为自己签署证书,则这一CA 就必须取得所有用户的信任。用户证书除了能放在目录中 以供他人访问外,还可以由用户直接发给其他用户。用户B 得到用户A的证书后,可相信用A的公开钥加密的消息不会 被他人获悉,还相信用A的秘密钥签署的消息是不可伪造的。 如果用户数量极多,则仅一个CA负责为用户签署证书 就有点不现实,因为每一用户都必须以绝对安全(指完整 性和真实性)的方式得到CA的公开钥,以验证CA签署的证 书。因此在用户数目极多的情况下,应有多个CA,每一CA 仅为一部分用户签署证书。 X. 509 证书获取 如果所有用户都由同一CA为自己签署证书,则这一CA 就必须取得所有用户的信任。用户证书除了能放在目录中 以供他人访问外,还可以由用户直接发给其他用户。用户B 得到用户A的证书后,可相信用A的公开钥加密的消息不会 被他人获悉,还相信用A的秘密钥签署的消息是不可伪造的。 如果用户数量极多,则仅一个CA负责为用户签署证书 就有点不现实,因为每一用户都必须以绝对安全(指完整 性和真实性)的方式得到CA的公开钥,以验证CA签署的证 书。因此在用户数目极多的情况下,应有多个CA,每一CA 仅为一部分用户签署证书。

X. 509 证书获取 设用户A已从证书发放机构X 1处获取了公钥证书,用户B 已从X 2处获取了证书。如果A不知X 2的公开钥,他虽然能读 取B的证书,但却无法验证X 2的签字,因此B的证书对A来说 是没有用处的。然而,如果两个CA X 1和X 2彼此间已经安全 X. 509 证书获取 设用户A已从证书发放机构X 1处获取了公钥证书,用户B 已从X 2处获取了证书。如果A不知X 2的公开钥,他虽然能读 取B的证书,但却无法验证X 2的签字,因此B的证书对A来说 是没有用处的。然而,如果两个CA X 1和X 2彼此间已经安全 地交换了公开钥,则A可通过以下过程获取B的公开钥: ① A从目录中获取由X 1签署的X 2的证书,因A知道X 1的公开 钥,所以能验证X 2的证书,并从中得到X 2的公开钥。 ② A再从目录中获取由X 2签署的B的证书,并由X 2的公开钥 对此加以验证,然后从中得到B的公开钥。

X. 509 证书获取 以上过程中,A是通过一 个证书链来获取B的公开钥, 证书链可表示为 X 1《X 2》X 2《B》 类似地,B能通过相反的 证书链获取A的公开钥,表 示为X 2《X X. 509 证书获取 以上过程中,A是通过一 个证书链来获取B的公开钥, 证书链可表示为 X 1《X 2》X 2《B》 类似地,B能通过相反的 证书链获取A的公开钥,表 示为X 2《X 1》X 1《A》。

X. 509 证书获取 此时任意两个相邻的 CA Xi和Xi+1已彼此间为对方 建立了证书,对每一CA来说, 由其他CA为这一CA建立的 所有证书都应存放于目录中, X. 509 证书获取 此时任意两个相邻的 CA Xi和Xi+1已彼此间为对方 建立了证书,对每一CA来说, 由其他CA为这一CA建立的 所有证书都应存放于目录中,

X. 509 证书获取 下图 是X. 509的CA层次结构 的一个例子,其中的内部结 点表示CA,叶结点表示用户。 用户A可从目录中得到相应 的证书以建立到B的以下证 书链: X《W》W《V》V《Y》Y《 X. 509 证书获取 下图 是X. 509的CA层次结构 的一个例子,其中的内部结 点表示CA,叶结点表示用户。 用户A可从目录中得到相应 的证书以建立到B的以下证 书链: X《W》W《V》V《Y》Y《

X. 509的层次结构 X. 509的层次结构

X. 509 证书吊销 3. 证书的吊销 每一证书都有一有效期,然而有些证书还未到截止日期 就会被发放该证书的CA吊销,这是由于用户的秘密钥有可 能已被泄露,或者该用户不再由该CA来认证,或者CA为该 用户签署证书的秘密钥有可能已泄露。为此每一CA还必须 维护一个证书吊销列表CRL(certificate revocation list),其中存 放所有未到期而被提前吊销的证书,包括该CA发放给用户 和发放给其他CA的证书。CRL还必须经该CA签字,然后存 X. 509 证书吊销 3. 证书的吊销 每一证书都有一有效期,然而有些证书还未到截止日期 就会被发放该证书的CA吊销,这是由于用户的秘密钥有可 能已被泄露,或者该用户不再由该CA来认证,或者CA为该 用户签署证书的秘密钥有可能已泄露。为此每一CA还必须 维护一个证书吊销列表CRL(certificate revocation list),其中存 放所有未到期而被提前吊销的证书,包括该CA发放给用户 和发放给其他CA的证书。CRL还必须经该CA签字,然后存 放于目录以供他人查询。

X. 509 证书吊销 CRL中的数据域包括发放者CA的名称、建立CRL的日期、 计划公布下一CRL的日期,以及每一被吊销的证书数据域, 而被吊销的证书数据域包括该证书的顺序号和被吊销的日 期。因为对一个CA来说,他发放的每一证书的顺序号是惟 一的,所以可用顺序号来识别每一证书。 每一用户收到他人消息中的证书时,都必须通过目录检 查这一证书是否已被吊销。为避免搜索目录引起的延迟以 及由此而增加的费用,用户自己也可维护一个有效证书和 被吊销证书的局部缓存区。 X. 509 证书吊销 CRL中的数据域包括发放者CA的名称、建立CRL的日期、 计划公布下一CRL的日期,以及每一被吊销的证书数据域, 而被吊销的证书数据域包括该证书的顺序号和被吊销的日 期。因为对一个CA来说,他发放的每一证书的顺序号是惟 一的,所以可用顺序号来识别每一证书。 每一用户收到他人消息中的证书时,都必须通过目录检 查这一证书是否已被吊销。为避免搜索目录引起的延迟以 及由此而增加的费用,用户自己也可维护一个有效证书和 被吊销证书的局部缓存区。

X. 509认证 n X. 509是个重要的标准,除了定义证书结 构外,它还定义了基于使用公开密钥证书的可 选认证协议。该协议基于公开密钥加密体制, 每个用户拥有一对密钥:公开密钥和秘密密钥。 按照双方交换认证信息的不同,可以分为单向 认证、双向认证和三向认证三种不同的方案。 X. 509认证 n X. 509是个重要的标准,除了定义证书结 构外,它还定义了基于使用公开密钥证书的可 选认证协议。该协议基于公开密钥加密体制, 每个用户拥有一对密钥:公开密钥和秘密密钥。 按照双方交换认证信息的不同,可以分为单向 认证、双向认证和三向认证三种不同的方案。

一路单向认证、二路双向认证和三路双向认证 一路单向认证、二路双向认证和三路双向认证

X. 509的认证过程 X. 509的认证过程

x. 509 一路单向认证 n (1)一路单向认证 n A → B:A||Sa(Ta||Ra||B||Eb(Ya)) n 这里Sa()是A的签名,Eb()是使用B的公开密钥进行的加密,Eb(Ks)是 可选项。A 、B是A、B的标识。Yx是用户x的数据。 n x. 509 一路单向认证 n (1)一路单向认证 n A → B:A||Sa(Ta||Ra||B||Eb(Ya)) n 这里Sa()是A的签名,Eb()是使用B的公开密钥进行的加密,Eb(Ks)是 可选项。A 、B是A、B的标识。Yx是用户x的数据。 n Ra临时值。A生成不会重复的数字Ra,Ra用来检测重放攻击并且也 用来防止伪造。Ta是一个时戳。Ta包括一个或者两个以下数据:标 志产生的时间和有效时间。 n B取得A的公钥,并验证A的证书的有效性。使用A的公钥验证签名, 并验证数据的完整性。验证在A发送过来的信息中,指明的接收用户 是不是B。验证发送过来的时戳是不是当前时间。作为可选的步骤, 可以验证Ra有没有重复。

n n n 证实了下列内容: (1)用户A的身份和消息是由A产生的 (2)消息是供B使用的。 (3)消息的完整性和原始性    (这个消息没有发送多次等) n n n 证实了下列内容: (1)用户A的身份和消息是由A产生的 (2)消息是供B使用的。 (3)消息的完整性和原始性    (这个消息没有发送多次等)

x. 509 二路双向认证 n n (2)二路双向认证 A → B:A||Sa(Ta||Ra||B||Eb(Ya)) B → A:Sb(Tb||Rb||A||Ra||Ea(Yb)) Eb(Kab)、Ea(Kba)是可选项。双向认证不仅 实现了B认证A,也实现了A认证B。 x. 509 二路双向认证 n n (2)二路双向认证 A → B:A||Sa(Ta||Ra||B||Eb(Ya)) B → A:Sb(Tb||Rb||A||Ra||Ea(Yb)) Eb(Kab)、Ea(Kba)是可选项。双向认证不仅 实现了B认证A,也实现了A认证B。

  双向认证是在单向认证 的基础上,B再向A作出应答, 以证明: B的身份、应答消息 是由B产生的;应答的意欲 接收者是A;应答消息是完   双向认证是在单向认证 的基础上,B再向A作出应答, 以证明: B的身份、应答消息 是由B产生的;应答的意欲 接收者是A;应答消息是完

n n n n (1)用户A的身份和消息是由A产生的 (2)消息是供B使用的。 (3)消息的完整性和原始性    (这个消息没有发送多次等) 增加以下认证内容  (4)B的身份和应答消息是由B产生的  (5)消息是供A使用的  (6)应答消息的完整性的原始性 n n n n (1)用户A的身份和消息是由A产生的 (2)消息是供B使用的。 (3)消息的完整性和原始性    (这个消息没有发送多次等) 增加以下认证内容  (4)B的身份和应答消息是由B产生的  (5)消息是供A使用的  (6)应答消息的完整性的原始性

x. 509 三路双向认证 n n (3)三路双向认证 A → B:A||Sa(Ta||Ra||B||Eb(Ya)) B → A:Sb(Tb||Rb||A||Ra||Ea(Yb)) A → x. 509 三路双向认证 n n (3)三路双向认证 A → B:A||Sa(Ta||Ra||B||Eb(Ya)) B → A:Sb(Tb||Rb||A||Ra||Ea(Yb)) A → B:Sa(Rb ||B)

在上述双向认证完成后,A 再对从B发来的一次性随机 数签字后发往B,即构成第 三向认证。三向认证的目的 是双方将收到的对方发来的 在上述双向认证完成后,A 再对从B发来的一次性随机 数签字后发往B,即构成第 三向认证。三向认证的目的 是双方将收到的对方发来的

x. 509 认证协议的攻击 n n n 攻击者对B重放消息A||Sa(Ta||Ra||B||Eb(Ya)), 由于B不对时戳进行验证,B不会发现是旧的 消息 B选取新的随机数Rb,发送消息 Sb(Tb||Rb||A||Ra||Ea(Yb)),攻击者截获该消 息,并利用B的公钥获得Rb。攻击者为了获得 Sa(Rb),他给A发送消息让A开始对攻击者进 行认证。认证结束的时候,攻击者获得A发来 x. 509 认证协议的攻击 n n n 攻击者对B重放消息A||Sa(Ta||Ra||B||Eb(Ya)), 由于B不对时戳进行验证,B不会发现是旧的 消息 B选取新的随机数Rb,发送消息 Sb(Tb||Rb||A||Ra||Ea(Yb)),攻击者截获该消 息,并利用B的公钥获得Rb。攻击者为了获得 Sa(Rb),他给A发送消息让A开始对攻击者进 行认证。认证结束的时候,攻击者获得A发来 的Sa(Rb)。 攻击者利用获得的Sa(Rb)冒充A成功。