认证
认证可以分为实体认证和消息认证两种。
1.实体认证是识别通信对方的身份,防止假冒,可以使用数字签名的方法。
2.消息认证是验证消息在传送或存储过程中有没有被篡改,通常使用报文摘要的方法。
一:基于共享密钥的认证
如果通信双方有一个共享的密钥,则可以确认对方的真实身份。这种算法依赖于一个双方都信赖的密钥分发中心(KDC)如下图,A和B可以分别代表发送者和接收者,KA表示A与KDC之间的共享密钥,KB表示B与KDC之间的共享密钥。
认证过程:A向KDC发出消息{A,KA(B,KS)},说明A要和B进行通信,并指定了与B进行会话的密钥KS,这个消息中(B,KS)是用KA进行加密了的,所以别人不能了解消息的内容。KDC收到A发来的消息之后,就构造了一个消息{KB,(A,KS)}发送给B,B用KB解密后就得到了A和KS,KS为A指定和B进行会话的密钥。所以此时B就可以用KS与A进行会话。
基于共享密钥的认证,在使用过程中,主动攻击者对这种方式可能会进行重放攻击。
例如: A为公司职员,B为公司,C为A的司机,C通过把A职员送到B公司来获得报酬,C送A一次就获得一次报酬,假如C 偷听并复制了A到达B后的报文。那么C就可以按照原来的次序向B重发A到达B的报文,冒充A到达B,那么C就可以多次获得报酬。
注意:C是不需要获取A和B进行会话的密钥KS,只要猜测密文的内容对自己是否有利。
二:基于公钥的认证:
前提:双方都知道对方的公钥。
如下图所示
A给B发出EB(A,RA),此报文用B的公钥加密,B返回EA(A,RA,RB,KS),用A的公钥加密,这两个报文中分别有A和B指定的随机数RA和RB,因此能排除重发的可能性。
通信双方都用对方的公钥加密,用各自的私钥解密,应答简单,KS是B指定的会话
数字签名
数字签名系统向通信双方提供服务,使得A向B发送签名的消息P,可以达到以下要求。
- B可以验证消息P确实来源于A
- A以后不能否认发送过P
- B不能编造或改变消息P
一:基于密钥的数字签名
如下图所示:
设C是A和B共同信赖的仲裁人。KA和KB分别是A和B与C之间的密钥,而KC是只有C才知道的密钥,P是A发送给B的消息,t是时间戳,C解读了A的报文{A,KA(B,RA,t,P)}以后产生了一个签名的消息KC(A,t,p) ,并装配成发给B的报文{KB(A,RA,t,P,KC(A,t,P))},B可以解密该报文,阅读消息P,并保留证据 KC(A,t,P) ,由于此证据,A不能否认发送过消息P,B也不能改变得到的消息P。 因为C仲裁时可能会用KC解密KC(A,t,P) 得到发送人,发送时间和消息P。
二:基于公钥是数字签名
如图所示
若A方否认,B可以拿出DA(P),并用A的公钥EA解密得到P,证明P是A发送的。 如果B把消息P篡改了,当A要求B出示原来的DA(P)时,B拿不出来。
报文摘要
报文摘要方案是计算密码校验和,即固定长度的认证码,附加在消息后面发送,根据认证码检测报文是否被篡改。设M是可变长的吧报文,K是发送者和接收者共享的密钥,令MD=CK(M),这就是算出的报文摘要。
由于报文摘要是原报文唯一的压缩表,代表了原报文的特征,也叫做数字指纹。
报文摘要可应用于加速数字签名算法。在基于密钥的数字签名中,C给B的报文P实际上出现了两次,一次是明文,一次是密文,增大了传送的数据量,把KC(A,t,P)减少为MD(P),可加快传送过程。
以上知识为学习总结所用,若有错误,请及时指正。