安全协议
- 通常情况下,使用密码学技术通过一些短消息的交换就可以建立一个安全信道,这个信道可以保护所传输的信息免受各种安全攻击,然后通信双方就可以使用这个信道进行数据通信。
1.建立一个安全的信道,我们至少需要完成两项工作:
a)A和B之间双向的身份认证
b)A和B之间达成新的通信密钥k(又称会话密钥)【密钥协商】
2.然后,他们可以使用k和相应的密码学算法进行安全通信 - 一个安全信道可以提供以下安全服务:
保密性:只有被授权的人才能访问信息
完整性:消息在传输过程中未被更改
消息认证:消息的来源可以被验证
不可否认性:消息的发送者无法否认其生成了信息
攻击模型
攻击模型定义了攻击者的能力。一般的假设是攻击者可以是内部人士也可以是外部人士,他一般具有以下能力:
- 攻击者可以监听通信
- 攻击者可以篡改消息
- 攻击者可以伪造消息
- 攻击者可以改变消息的传播路径
- 攻击者可以重放消息
使用对称密钥进行身份认证
使用公钥体制
假设PUB_A和PRI_A分别是Alice的公钥和私钥,PUB_B和PRI_B分别是Bob的公钥和私钥,{}表示加密操作,[]表示签名操作。
注意:认证和加密不能使用相同的密钥对;
会话密钥
会话密钥K的目的是限制主密钥加密数据的数量,对每次新的会话都会使用新的会话密钥
会话密钥可以用来为传递的信息提供机密性和完整性的保护,其完整性可以通过MAC实现
双向认证+密钥协商
利用时间戳的双向认证+密钥协商+PFS
注意:协议中的签名和加密的顺序不能颠倒
实用协议分析
SSH
SSL
IPSec协议
代码练习
c/c++密码学算法实现在:
/usr/include/openssl/
java密码学算法实现在:
java.security.*