使用GPG实现密码学应用

GPG

1991年,程序员Phil Zimmermann为了避开政府的监视,开发了加密软件PGP。因为这个软件非常好用,迅速流传开来成为许多程序员的必备工具。但是,它是商业软不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品取名为GnuPG,因此GPG就诞生了。GPG是GNU Privacy Guard的缩写,是自由软件基金会的GNU计划的一部分。它是一种基于密钥的加密方式,使用了一对密钥对消息进行加密和解密,来保证消息的安全传输。一开始,用户通过数字证书认证软件生成一对公钥和私钥。任何其他想给该用户发送加密消息的用户,需要先从证书机构的公共目录获取接收者的公钥,然后用公钥加密信息,再发送给接收者。当接收者收到加密消息后,他可以用自己的私钥来解密,而私钥是不应该被其他人拿到的。

GPG项目是一套命令行程序,而且是为 Linux 等开源操作系统设计的。在Windows平台下可以使用Gpg4win,是Windows平台GPG及图形前端的集合安装包,有多个组件。

PGP加密原理

在PGP中,每个常规密钥只使用一次,即对每个报文生成新的128bit的随机数。为了保护密钥,使用接收者的公开密钥对它进行加密。图中显示了这一步骤,描述如下:

(1)发送者生成报文和用作该报文会话密钥的128bit随机数;

(2)发送者采用CAST-128加密算法,使用会话密钥对报文进行加密。也可使用IDEA或3DES;

(3)发送者采用RSA算法,使用接收者的公开密钥对会话密钥进行加密,并附加到报文前面;

(4)接收者采用RSA算法,使用自己的私有密钥解密和恢复会话密钥;

(5)接收者使用会话密钥解密报文。

PGP如果需要对消息同时进行签名和加密,由下图所示,具体原理可以参考理论课知识点。

实践进行时:

一、下载安装和使用GPG

1.请到官方网站下载:http://www.gpg4win.org/,或于此处下载安装软件:

https://download.csdn.net/download/qq_37865996/10845428

2.之后运行安装程序,保持默认设置即可。

3.打开Kleopatra,首先需要生成一对公钥和私钥。

4.选择第一个生成个人OpenPGP密钥对即可。

5.之后会提示输入用户密码(passphrase),注意这并不是会话密钥(session key)、公钥(public key)、私钥(private),这只是方便用户记忆的密码,为了保护用户能安全的从私钥环中提取私钥。可以在图3中理解这几种密钥的区别。

6.生成密钥

7.密钥对生成好之后,有3个选项,1是备份自己的密钥,2是通过Email把密钥发送给自己的联系人,3是把自己的公钥上传了目录服务器,方便别人查询下载。

8.生成密钥对列表会显示在界面中,可以点击Sign/Encrypt 对文件进行加密。

9.在弹出的对话框中,可以选择一个文件进行签名和加密,例如test.txt,可以事先编辑一下文本。注意,签名指用自己的私钥进行加密,加密会使用到对方(收件人)的公钥,两个不一样。

10.加密后,多出一个新文件,可以放心的把该密文发送给对方。

11.用文本编辑器打开,可以发现都是密文。

12.点击Decrypt/Verify实现解密,如果之前加密时使用了签名,还可以进行签名验证。

二、使用GPG4win加/解密邮件

1.GPG可以对任意剪贴板(ClipBoard)里面的文本进行加密,例如写一份邮件

注:剪贴板(ClipBoard)是内存中的一块区域,是Windows内置的一个非常有用的工具,通过小小的剪贴板,架起了一座彩桥,使得在各种应用程序之间,传递和共享信息成为可能。然而美中不足的是,剪贴板只能保留一份数据,每当新的数据传入,旧的便会被覆盖。举个简单的例子,选定一段文字,点完“复制”按钮,这段文字就在剪贴板里面了。

2.选择这段文字,然后点击“复制”

3.在主界面的Clipboard里面,点击Encrypt

4.弹出对话框询问给哪一个收件人发信,点击左下角的“Add Recipient”按钮,如图所示。选择一个收信人后,就会使用对方的公钥信息进行处理,通过生成会话密钥、加密等一系列的处理,生成密文,存在剪贴板中。

5.回到邮件发送解密,选择“粘贴”,替换原来的明文,就发现使用PGP格式的加密消息,如图所示。

6.切换到收件人的角色,打开邮箱,可以看到发送来的密文邮件‘

7.选择全部密文,右键点击复制

8.打开Kleopatra主界面,点击Tools的Verify

9.系统会需要输入用户密码(Passphrase),该密码用于提取用户私钥

10.如果密码正确,可以正确解密,打开记事本新建一个空白文档,然后粘贴,可以看到解密后的明文。

三、使用GPG4win给老师发送悄悄话

1.双击别人提供的公钥chenwei.asc,Kleopatra的主界面中会显示已添加了公钥。

2.类似于任务二的加解密操作,在记事本或其他文本编辑器中,输入消息

3.打开Kleopatra主界面,这次“Add Recipient”时,选择别人的公钥。

4.加密后得到一段密文,粘贴在报告中,别人会用自己的私钥解密查看。

猜你喜欢

转载自blog.csdn.net/qq_37865996/article/details/84971535