验证加密与数字签名实验
以下是Person1和Person2使用对称加密(DES)和非对称加密(RSA数字签名)进行安全通信的完整流程,确保保密性、完整性和身份认证:
1. 准备工作
1.1 生成RSA密钥对
Person1和Person2各自使用签名工具生成密钥对:
Person1:
公钥:`Person1_pub.dat`(发送给Person2)
私钥:`Person1_priv.dat`(严格保密)
Person2:
公钥:`Person2_pub.dat`(发送给Person1)
私钥:`Person2_priv.dat`(严格保密)
1.2 交换公钥
Person1和Person2通过安全渠道(如U盘、面对面交换)互相传输公钥文件(`Person1_pub.dat`和`Person2_pub.dat`)。
2. Person2发送加密消息给Person1
2.1 准备明文消息
Person2创建明文文件:`message.txt`
2.2 对消息进行数字签名
1. 使用签名工具:
输入文件:`message.txt`
私钥文件:`Person2_priv.dat`
生成签名文件:`sign_by_Person2.dat`
2.3 生成随机DES密钥
Person2随机生成一个810位的DES密钥(如 `X5k9pL2`),并保存为 `des_key.txt`。
2.4 加密消息和签名
1. 加密明文消息(使用DES工具):
输入文件:`message.txt`
输出文件:`message.des`
密钥:`X5k9pL2`
点击加密。
2. 加密签名文件(使用DES工具):
输入文件:`sign_by_Person2.dat`
输出文件:`sign_by_Person2.des`
密钥:`X5k9pL2`
点击加密。
2.5 person2加密DES密钥(使用Person1的公钥)
1. 使用RSA工具加密DES密钥:
输入文件:`des_key.txt`
公钥文件:`Person1_pub.dat`
输出文件:`encrypted_des_key.dat`
2.6 发送加密文件
Person2将以下文件发送给Person1:
`message.des`(加密消息)
`sign_by_Person2.des`(加密签名)
`encrypted_des_key.dat`(加密的DES密钥)
3. Person1接收并解密消息
3.1 解密DES密钥
1. 使用RSA工具解密DES密钥:
输入文件:`encrypted_des_key.dat`
私钥文件:`Person1_priv.dat`
输出文件:`des_key.txt`(得到密钥 `X5k9pL2`)
3.2 解密消息和签名
1. 解密密文消息(使用DES工具):
输入文件:`message.des`
输出文件:`message.txt`
密钥:`X5k9pL2`
点击解密。
2. 解密签名文件(使用DES工具):
输入文件:`sign_by_Person2.des`
输出文件:`sign_by_Person2.dat`
密钥:`X5k9pL2`
点击解密。
3.3 验证签名
1. 使用签名工具验证签名:
原始文档:`message.txt`
公钥文件:`Person2_pub.dat`
签名文件:`sign_by_Person2.dat`
点击验证签名,确认消息的完整性和发送方身份。
4. 关键安全措施
| 步骤 | 安全机制 | 防御目标 |
||||
| DES密钥加密 | 用Person1的公钥加密 | 防止密钥被截获 |
| 消息加密 | DES对称加密 | 确保消息保密性 |
| 数字签名 | RSA私钥签名 + 公钥验证 | 身份认证 + 防篡改 |
| 临时DES密钥 | 每次会话随机生成 | 防止密钥重用攻击 |
5. 注意事项
1. 密钥管理:
DES密钥:每次通信后立即删除明文`des_key.txt`。
RSA私钥:绝不通过网络传输,仅保存在本地。
2. 文件清理:
Person1在解密后删除临时文件(如`encrypted_des_key.dat`)。
Person2在发送后删除明文`message.txt`和`sign_by_Person2.dat`。
3. 公钥真实性:
通过线下验证公钥指纹(如SHA256哈希值),防止中间人攻击。
6. 完整文件列表
Person2发送的文件
`message.des`(DES加密的消息)
`sign_by_Person2.des`(DES加密的签名)
`encrypted_des_key.dat`(RSA加密的DES密钥)
Person1解密的文件
`message.txt`(解密后的明文)
`sign_by_Person2.dat`(解密后的签名)
`des_key.txt`(解密后的DES密钥,使用后删除)