实验课程

THIS NAME

实验课程

当前位置: 首页 >> 实验课程 >> 正文

应用密码学-基于PGP的加密编码实验

发布日期:2024-08-05    作者:周胜亮     来源:     点击:

基于PGP的加密编码实验

一、实验目的

掌握 PGP 软件的工作原理和了解 PGP 软件的功能并利用 PGP 对文件进行加密解密

二、实验目标

使用 linux 系统中的 PGP 加密工具加解密

三、实验环境

l 操作系统:Centos 7

l 其它:gpg-2.0.22

undefined

四、实验原理

1、PGP 软件介绍

加密软件 PGP( Pretty Good Privacy),其创始人是美国的 Phil Zimmermann。PGP 采用了 RSA 与传统加密相结合的加密算法,既可以解决 RSA 加密速度慢地问题,又可以避免传统加密算法出现的安全性问题。可以通过 PGP 做这些事:

1)、在任何软件中进行加密/签名以及解密/校验。通过 PGP 选项和电子邮件插件,可以在任何软件当中使用 PGP 的功能。

2)、创建以及管理密钥。使用 PGPkeys 来创建、查看、和维护 PGP 密钥对;以及把任何人的公钥加入公钥库中。

3)、创建自解密压缩文档(self-decrypting archives,SDA)。建立一个自动解密的可执行文件。任何人不需要事先安装 PGP,只要得知该文件的加密密码,就可以把这个文件解密这个功能尤其在需要把文件发送给没有安装 PGP 的人的时候特别好用。并且,此功能还能对内嵌其中的文件进行压缩,压缩率与 ZIP 相似,比 RAR 略低(某些时候略高,比如含有大量文本)。总的来说,该功能是相当出色的。

4)、永久的粉碎销毁文件、文件夹,并释放出磁盘空间。使用 PGP 粉碎工具来永久地删除那些敏感的文件和文件夹,而不会遗留任何的数据片段在硬盘上。也可以使用 PGP自由空间粉碎器来再次清除已经被删除的文件实际占用的硬盘空间。这两个工具都是要确保所删除的数据将永远不可能被别有用心的人恢复。

2、PGP 加密原理

PGR 加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。

PGP 采用的传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP 都随机产生一个 128 位的 DDEA 会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。

PGP 中的每个公钥和私钥都伴随着一个密钥证书。它一般包含以下内容:

密钥内容(用长达百位的大数字表示的密钥);

密钥类型(表示该密钥为公钥还是私钥);

密钥长度(密钥的长度,以二进制位表示);

密钥编号(用以唯一标识该密钥)。

3、PGP 公钥、私钥加密特性

pgp 系统里经常遇到公钥、私钥,大家如果不理解就无法使用了。公钥、私钥只是个代号而己,这里称它们为a钥、b钥。

a、b钥就像一对密码本,但是它很特殊:

1)用a加密的东西只能用b来解,b加密的东西只能用a解:

2)a不能解密a自己加密的东西。b不能解密b自己加密的东西:

3)a有且仅有一个b与自己配对。b有且仅有一个a与自己配对。不存在第三者

如果把a留给自己用,把b发给别人,那a就称为“私钥”(),b就称为“公钥”。当然反过来那b就称为“私钥”,a就称为“公钥”。系统只是自动给了个名称,防止你以后搞不清到底是把a当公钥发给别人了,还是把b当公钥发给别人了。

4、 PGP 相关的加密、解密方法以及 PGP 的密钥管理机制

PGP 是一种供大众使用的加密软件。电子邮件通过开放的网络传输,网络上的其他人都可以监听或者截取邮件,来获得邮件的内容,因而邮件的安全问题就比较突出了。保护信息不被第三者获得,这就需要加密技术。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,这就需要数字签名技术。RSA 公匙体系的特点使它非常适合用来满足上述两个要求:保密性(Privacy)和认证性(Authentication)。

五、实验过程

使用 gen-key 参数生成自己的密钥,默认选择第一个选项,表示加密和签名都使用 RSA 算法。

undefined

undefined

然后,系统就会问密钥的长度,密钥越长越安全,默认是2048 位,回车即可。

undefined

接着,设定密钥的有效期,如果密钥只是个人使用,并且很确定可以有效保管私钥,建议选择第一个选项,即永不过期。

undefined

回答完上面三个问题以后,系统确认:

undefined

以上正确吗?(y/n),输入y,系统就要求提供个人信息,之后输入自己的个人信息。

undefined

undefined

然后,"用户 ID"生成了。

undefined

"真实姓名"是"xiaoming","电子邮件地址"是"12345678@168.com"。所以我的"用户 ID'就是"xiaoming12345678@168.com"。系统会让你最后确认一次。

undefined

接着,系统需要设定一个最少八位的私钥的密码并且需要输入两次来防止输入错误。这是为了防止误操作,或者系统被侵入时有人擅自动用私钥。

undefined

undefined

undefined

需要一个密码来保护私钥:

然后,系统就开始生成密钥了,这时会要求做一些随机的举动,以生成一个随机数,几分钟以后,系统提示密钥已经生成了。

undefined

请注意上面的字符串"FDE1BECB",这是"用户 ID"的 Hash 字符串,可以用来替代"用户ID",

输入 gpg --list-key 列出系统中已有的密钥。

undefined

第一行显示公钥文件名(pubring.gpg),第二行显示公钥特征(4096 位,Hash 字符串和生成时间),第三行显示"用户 I",第四行显示私钥特征。

如果要从密钥列表中删除某个密钥,可以使用 delete-key 参数。此步请完成下面实验后再次尝试,同学们可以自行选择是否要进行操作。

这里要先删除私钥(gpg -delete-secret-keys [用户 ID])才可以删除公钥(gpg --delete-key[用户 ID])

公钥文件(.gnupgpubring.gpg)以二进制形式储存,armor 参数可以将其转换为 ASCII码显示。将密钥对的公钥导出,公钥文件名称为「用户 ID]:

undefined

undefined

输入命令 vi GPG1.txt 查看被加密过的密钥文件"GPG1.txt"。

undefined

"GPG1.txt"发送给需要的用户,用户接收后,在命令行输入以下命令来导入公钥:

gpg --import GPGl.txt。

undefined

新建一个"1.txt"文件内容输入 xiaoming,并进行加密。

undefined

recipient 参数指定接收者的公钥,output 参数指定加密后的文件名,encrypt 参数指定源文件。

查看 1.en.txt,并使用私钥进行解密。

undefined

undefined

undefined

签名。

:本小节为扩展内容,有兴趣的同学可以自己动手实验一下,本次实验就不将全部结果图展示出来了

有时,不需要加密文件,只需要对文件签名,表示这个文件确实是本人发出的。sign 参数用来签名。

gpg --sign demo.txt

运行上面的命令后(需要先创建一个 demo.txt 文件),当前目录下生成 demo.txt.gpg 文件,这就是签名后的文件。这个文件默认采用二进制储存,如果想生成 ASCI 码的签名文件,可以使用 clearsign 参数。

8pg --clearsign demo.txt

运行上面的命令后 ,当前目录下生成 demmo.txt.asc 文件,后缀名 asc 表示该文件是 ASCII 码形式的。

如果想生成单独的签名文件,与文件内容分开存放,可以使用 detach-sign 参数。

gpg -detach-sign demo.txt

运行上面的命令后,当前目录下生成一个单独的签名文件 demo.txt.sig。该文件是二进制形式的,如果想采用 ASCII 码形式,要加上 armor 参数。

gpg --armor -detach-sign demo.txt

签名+加密

:本小节为扩展内容,有兴趣的同学可以自己动手实验一下,本次实验就不将全部结果图展示出来了

上一节的参数,都是只签名不加密。如果想同时签名和加密,可以使用下面的命令。

gpg --local-user [发信者ID]--recipient[接收者ID]--armor --sign -encrypt demo.txt1oca1-user 参数指定用发信者的私钥签名,recipient 参数指定用接收者的公钥加密,armor 参数表示采用 ASCI 码形式显示,sign 参数表示需要签名,encrypt 参数表示指定源文件。

验证签名

:本小节为扩展内容,有兴趣的同学可以自己动手实验一下,本次实验就不将全部结果图展示出来了

我们收到别人签名后的文件,需要用对方的公钥验证签名是否为真。verify 参数用来验

gpg -verify demo.txt.asc demo.txt

举例来说,openvpn 网站就提供每一个下载包的 gpg 签名文件。可以根据它的说明,验证这些下载包是否为真。

六、安全性分析

PGP 加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。PGP 采用的传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP 都随机产生一个 128 位的IDEA 会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。

现在这种技术和相应工具仍在被广泛应用于数字签名和电子邮件加密上,近年之内也不会被取代,所以说安全性还算有保障,但经年之后,随着量子力学等的进一步发展,此种加密技术手段应该会逐渐退出历史舞台。

上一条:应用密码学-凯撒密码实验 下一条:应用密码学-SHA编码实验

关闭