1、1认证nAlice必须向Bob证明自己的身份,nAlice 和 Bob可以是人或计算机 nAlice也需要Bob证明他是Bob(相互认证)n可能还需要建立一个会话密钥 n可能有其他需求,如 n只使用公钥 n只使用对称密钥 n只使用哈希函数 n匿名性,不可否认性等等。2认证n认证在一台独立的计算机上是相当简单的 n“安全路径”是首要问题 n重点关注的是对认证软件的攻击n在网络上的认证复杂得多 n攻击者可以窃听消息(被动攻击)n重放消息n主动攻击也是可能的,如插入,删除,更改信息3简单认证 AliceBob“我是 Alice”证明这一点我的口令是“frank”n在独立的计算机系统上是简单可行的。n
2、在网络系统上是不安全的n除重放攻击 nBob 必须知道 Alice的口令4对认证的攻击AliceBob“我是 Alice”证明这一点我的口令是“frank”Trudy5对认证的攻击Bob“我是 Alice”证明这一点我的口令是“frank”Trudyn重放攻击 n怎样才能防止重放?6简单认证AliceBob我是 Alice,我的口令是“frank”n更有效n和之前的协议同样的问题7改进的认证协议AliceBob“我是 Alice”证明这一点H(Alice的口令)n更好,因为它隐藏了Alice的密码n但仍然存在重放攻击8挑战与响应 n为了防止重放,使用挑战和响应 nSuppose Bob 想要验
3、证 AlicenBob向Alice发一个挑战n只有 Alice可以提供正确的响应 n挑战的选择可以防止重放n怎么做到这一点?n只有Alice知道口令n保持新鲜性:一个数字只使用一次或使用一次性随机数9挑战与响应 Bob“我是 Alice”NonceH(Alices password,Nonce)q Nonce 是挑战 challengeq 哈希是响应 responseq Nonce 防止重放,保持了新鲜q 只有Alice知道口令q 请注意:Bob必须知道Alice的口令Alice10挑战与响应 Bob“我是 Alice”NonceSomething that could only beAlic
4、efrom Alice(and Bob can verify)n我们可以用什么来实现这一目标?n哈希口令,加密可能会更好 11协议的结构n这里的结构指的是密钥建立协议的结构。主要以以下的结构标准来区分不同的协议:n哪些密钥是已经建立的(例如长期密钥)n会话密钥如何产生n参与密钥建立的用户的数目。12n我们把公钥证书的使用看作是使用一种离线的可信服务器(CA)这里两个协议参与建立一个新的会话密钥主要有三种可能的方式:n两个参与者之间已经共享了某个密钥n离线服务器的使用,这里指参与者之间使用公钥加密体制进行通信。n在线服务器的使用。每个参与者与服务器共享一个密钥。通过服务器转发彼此的通信内容。13
5、会话密钥的产生n会话密钥由密钥建立协议的参与者之一产生并传输给各个用户。这里的密钥产生者一般是一个可信的服务器。这就是密钥分配协议。n会话密钥由每个协议参与者分别产生的参数通过一定的计算得出,即密钥协商协议。n混合协议指会话密钥由一部分的参与者协商产生并分配给其余的用户。14n例子:使用在线服务器,混合密钥生成方式的两用户的密钥建立协议:1.A B:A,NA 2.B S:NB,A,BKBS,NA 3.S A:KAB,A,B,NAKAS,NS 4.A B:NS,A,BKAB 5.B A:B,AKAB 这里KABf(NB,NS),对于B来说,这是一个协商产生的会话密钥。对于A来说是一个分配的会话密
6、钥。15协议目标n隐式密钥认证n密钥确认n显式密钥认证16协议目标n已知会话密钥安全n前向安全n抵抗密钥泄露伪造攻击n未知密钥共享安全n会话密钥的不可控性n密钥完整性17新鲜性n新鲜性是大多数协议必须具有的安全性质之一。新鲜性的保证可以有效的抵抗重放攻击。n保证消息新鲜性的方法主要包括两种:1.用户自己选择新鲜的消息加入到协议传输的消息当 中。例如:KABf(NA,NB)2.用户收到的信息当中包括本身具有新鲜性的一部分信息。例如:F(KAB,N)用户必须能够验证该消息的起源认证和数据完整性然后通过验证N的新鲜性保证消息的新鲜性。验证N新鲜性的方式包括四种:18时间戳:消息发送者在消息种加入消息发送的时间。接受者根据时间戳的时间和本地时间的对比确定消息的新鲜性。难度在于使用时间戳必须保证时钟的同步性。随机挑战(nonce):消息的接收者先产生一个随机数发送给消息的发送者然后根据随后收到的消息中包含的随机数验证消息是否新鲜。必须注意的是产生随机数的方式,即产生的随机数的质量计数器:消息发送者和接收者各自拥有同步计数器,计数器的值随消息的发送增加。难度在于计数器的管理,计数器必须存储所有参与者的状态。混合方法:将计数器和时间戳结合使用。