> # ♻️ 资源
> **大小:** 4.24MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010713**](https://www.yuque.com/sxbn/ks/100010713)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87430271**](https://download.csdn.net/download/s1t16/87430271)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 基于 OpenPGP 的文件管理系统
## 一、实验要求
- 设计一个本地文件处理协议,基于 open PGP 实现本地加密文件夹:
- 对目标文件实现对存储者和调阅者的基于 pgp 的真实性认证和文件加密;
- 上述文件安全性不依赖于本地系统,即本地其他非授权用户(即便是系统管理员)无法以可理解的方式读出该文件夹中文件内容;
- 对处理过程中可能涉及的临时存储至少实现可靠的敏感信息残留覆盖;
- 选择 Linux 或 MS windows,实现该协议的一个 C++ 实现实例。包括软件设计文档、源代码及注释、可执行安装包、自测用例和测试分析报告、第三方资源及其说明。
### 1.1 OpenPGP 的加密与解密原理
OpenPGP 加密过程:随机生成一个的 Key,并通过对称加密算法使用这个 Key 加密数据,最后通过非对称加密算法(RSA)用接收者的公钥加密前者的 Key,得到加密的数据。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715043608456-c737a995-9911-470f-b7e1-d6b1bbd5cbcc.png#averageHue=%23f4f4f4&from=url&id=i0h41&originHeight=1042&originWidth=1024&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
### 1.2 OpenPGP 的数字签名
数字签名是 OpenPGP 的重要组成部分,数字签名是一个数学过程,与现实世界的签名功能相似,但更严谨、更安全且容易验证。数字签名保证了以下情况:
1. 验证发送者身份:确认发送者确实是他声称的身份。
2. 完整性:文件/邮件传输过程中未被更改。
3. 不可否认:发送者不可否认已发送的文件/邮件。
数字签名的原理:发送者先通过加密散列函数获取数据的哈希,然后使用发送者的私钥加密哈希,得到数字签名。接收者使用发送者的公钥解密数字签名得到一个哈希,并与自己计算的数据的哈希值对比,一致则数字签名有效且数据完整。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715043608537-c167aa39-3d41-41fa-bfc6-cd89ce5581bc.png#averageHue=%23f5f5f5&from=url&id=zPMFf&originHeight=750&originWidth=1000&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
### 1.3 OpenPGP 的公钥发布与吊销证书
我们知道公钥用于加密,可以公开发布,公钥可以点对点发送,也可以上传到密钥服务器。需要格外注意的是公钥中包含邮箱信息,如果你将公钥发布到密钥服务器(各个公钥服务器会互相同步),那么你将永远无法从密钥服务器上删除你的公钥信息。在某天你忘记密码口令或丢失私钥,你想要从密钥服务器上吊销你的公钥,唯一的补救措施是:你事先生成了吊销证书,使用吊销证书可以吊销公钥证书,使公钥其显示“吊销”字样,但依然无法从密钥服务器上删除公钥信息。
所以务必要谨慎上传公钥,务必生成吊销证书备用。
## 二、文件处理协议设计
**前提条件**
在该文件系统内,每个用户有一对公钥和私钥。
用户的公钥是公开的,系统内的所有用户都可以获得其他用户的公钥信息。
用户的私钥是私密的,仅该用户可以访问,其他用户不可访问。
**用语说明**
签名:签名是为了验证发件人的身份,以及内容的一致性(不被篡改),签名通常用于文件创建者的身份,或校验调阅文件的一致性(不被中间人篡改)等等。
加密和解密:加密和解密即使用密钥对中的公钥加密、私钥解密。如果我们需要将自己的文件加密保存,那么就使用自己的公钥加密、自己的私钥解密。如果我们需要给其他用户授权调阅文件,我们将使用对方的公钥加密文件内容,对方使用自己的私钥解密。加密(或签名并加密)后将得到.gpg 文件。
### 2.1 存储功能
单用户授权
目标:A 用户想要存储自己的文件,并仅自己拥有调阅权限。
步骤:
- 用户对文件签名:将文件数据通过 MD5 加密方式获得哈希值,再将哈希值通过 A 用户的私钥加密,附在文件末尾。
- 用户对文件加密:将第一步得到的文件通过 A 用户的公钥加密保存为.gpg 文件。
- 多用户授权
- 目标:A 用户想要存储自己的文件,并保证自己和 B 用户都拥有调阅权限。
步骤:
- 用户对文件签名:将文件数据通过 MD5 加密方式获得哈希值,再将哈希值通过 A 用户的私钥加密,附在文件末尾。
- 用户对文件加密:将第一步得到的文件通过 A 用户的公钥和 B 用户的公钥加密保存为.gpg 文件。
### 2.2 调阅功能
目标:A 用户调阅以.gpg 后缀结尾的文件。
步骤:
- 用户对文件解密:用自己的私钥解密文件,通过比对私钥的 key id 和加密文件的公钥的 key id 是否相同,相同则解密成功,不同则解密失败。
- 用户验证签名:用公钥库中的公钥对文件中的签名进行验证,如果验证成功,则输出文件创建者(签名者)的身份。
- 安全问题
### 2.3 存储者的真实性认证
用户创建文件必须有用户 A 的身份认证,即 A 用户对文件进行数字签名。在前提条件中,用户的公钥是公开的。假设 B 用户以 A 用户的名义创建文件,则 B 用户使用了 A 用户的公钥对文件进行加密,但由于 B 用户没有 A 的私钥,因此无法对文件进行签名。
在创建文件的过程中,我们的文件系统会进行身份核验,即计算文件的哈希值得到 h1使用 A 用户的公钥解密签名 h2判断是否相等(h1==h2),相等则身份认证通过。
因此,B 用户无法以 A 用户的身份创建文件。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715043608618-f65526be-176f-4042-a9e2-9b97e53990e2.png#averageHue=%23f8f8f8&from=url&id=Lo135&originHeight=411&originWidth=381&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
### 2.4 调阅者的真实性认证
用户 B 只能够查看用户 B 创建的,以及其他用户授权的文件。在前提假设中,用户的私钥是私密的。假设 B 想查看 A 的文件,那么有两种情况:
用户 A 给用户 B 授权:即用户 A 用自己的公钥和用户 B 的公钥对文件进行加密,因此用户 B 能够用自己的私钥进行解密,则能够查看用户 A 创建的文件。
用户 A 未给用户 B 授权:即用户 A 用自己的公钥对文件进行加密,因此用户 B 不能够用自己的私钥进行解密,则不能够查看用户 A 创建的文件。
因此,用户 B 能否查看文件取决于用户 A 有没有授权给用户 B。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1715043608682-3addf747-2910-4a93-aa75-d2baa2ce0dc9.png#averageHue=%23f9f9f9&from=url&id=OUlgj&originHeight=411&originWidth=381&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
#### 2.4.1 私钥保护
用户的私钥属于该文件系统的敏感信�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010713 通过本次实验,我们更加深入的了解到了哦内部结构和运行机制。PGP 协议是 PGP 加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成的可靠文件传输和加密协议,而 OpenPGP 又是主流的 PGP 搭建平台。此外,在我们进行身份认证的过程当中,考虑到了不同用户创建的文件之间的相互访问性以及在不涉及系统本身的认证功能的条件下实现不同用户之间认证功能是一个较为困难的事情。我们通过化繁为简的思想,首先完成 pgp 加密与解密的实现,进一步考虑身份的实现。
资源推荐
资源详情
资源评论
收起资源包目录
100010713-基于 C# OpenPGP 的文件管理系统.zip (11个子文件)
openpgp
LICENSE 1KB
软件
DidiSoft.Pgp.xml 1.69MB
OpenPGP_File_Manage.exe.config 189B
OpenPGP_File_Manage.pdb 38KB
OpenPGP_File_Manage.exe 16KB
README.txt 45B
DidiSoft.Pgp.dll 502KB
DidiSoft.BouncyCastle.dll 2.35MB
信息安全原理实验四报告-1953490-1953177.pdf 3.49MB
源码
Program.cs 42KB
README.md 53KB
共 11 条
- 1
资源评论
- whistleH2023-04-18资源内容总结地很全面,值得借鉴,对我来说很有用,解决了我的燃眉之急。
神仙别闹
- 粉丝: 2704
- 资源: 7645
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功