《信息安全技术》实验一 PGP的原理与使用
《信息安全技术》实验一 PGP的原理与使用(macOS High Sierra下实现)
实验目的
- 理解传统加密、公钥加密、混合加密、数字签名等概念
- 理解公钥、私钥、会话密钥、对称密钥等概念及其应用
- 掌握电子邮件安全应用
- 熟悉PGP工具的使用
实验内容
- 使用PGP进行传统加密
- 使用PGP进行生成密钥对
- 使用PGP进行混合方式加密
- 使用PGP进行数字签名
- 使用PGP交换并验证公钥
- 使用PGP分割私钥
实验原理
在一个基于公钥密码体制的安全应用系统中,假设用户A和B分别拥有自己的公钥和私钥:
- 在产生A和B的密钥时,如果采用RSA算法,选取的模数n至少为1024位。
- 为了预防A抵赖,B要求A对其发送的消息进行签名。A将使用A的私钥对消息签名;B使用A的公钥对A的签名进行验签。如果要求对消息保密传输,A将使用B的公钥对消息加密,B使用B的私钥解密消息。
- 实际应用中为了缩短签名的长度、提高签名的速度,而且为了更安全,常对信息的消息摘要进行签名。
- 实际应用中,通常需要进行身份认证。基于口令的认证简单易用,但是口令明文存储与传输很不安全,对口令认证机制可以进行如下改进:
- 利用不需使用密钥的哈希算法加密口令,使口令能够以密文形式存储与传输。
实验步骤
一、安装GPG(macOS High Sierra下)
-
访问GPGTools网站,点击Download GPG Suite,下载GPG Suite for OS X 2017.1:
-
双击打开GPG_Suite-2017.1.dmg,运行安装操作:
-
双击Install,出现安装界面,单击继续:
-
在选择安装类型(Installation Type)的时候,选择自定义安装(Customize),单击自定:
-
去掉"GPGMail"前面的勾,单击安装:
-
再输入用户密码获取权限,随后安装完成。
二、创建PGP密钥
- 打开GPG,菜单栏中点击"新建",弹出"Generate new key pair"窗口,输入姓名、电子邮件和密码,创建PGP密钥:
- 展开"高级选项(Advanced options)",配置密钥类型、密钥长度和有效期:
- GPG会弹窗提示密码长度过短QAQ不过由于实验方便还是就用短一点的密码吧~点击"Continue with simple password"继续生成:
随后GPG会生成4096个随机字节:
密钥成功创建!此时一定要点击"Upload Public Key",将公钥上传!
密钥成功生成如下:
三、设置PGP快捷键
-
点击"🍎"-->"系统偏好设置"-->"键盘"-->"快捷键",点击左边的“服务”选项,在右侧中找到一系列以“OpenPGP开头”的操作,把前面的勾去掉:
-
打勾启用以下四个操作,并设置快捷键:
- OpenPGP: Decrypt设置为:
control+option+command+minus
(-) - OpenPGP: Encrypt设置为:
control+option+command+equals
(=) - OpenPGP: Sign设置为:
control+option+command+open bracket
([) - OpenPGP: Verify设置为:
control+option+command+close bracket
(])
- OpenPGP: Decrypt设置为:
四、发送加密邮件
- 选择邮件内容,按
control+option+command+open bracket
进行签名,GPG会弹窗提示输入Passphrase:
点击确认后获得签名(SIGNATURE)后的邮件:
- 打开GPG Keychain Access应用,按
command+F
输入接收者的邮箱地址,软件会去公共密钥服务器上去搜索邮件接收者的公钥,如果对方有多个密钥,选择最新的一个:
- 会看到一条确认信息,对方的公钥已经下载完成。点击"好"关闭:
- 退出GPG Keychain Access回到邮件撰写页面,全选邮件内容,按
control+option+command+equals
进行加密,系统会弹出一个窗口,咨询接收者是谁,选择接收者的公钥,点击“OK”。此时,邮件的内容以及加密完成,可以安全发送:
五、解密邮件
- 复制邮件所有内容到文本编辑器Pages,包括“-----BEGIN PGP MESSAGE---”和“-----END PGP MESSAGE---”:
- 选中所有内容,按
control+option+command+minus
进行解密,输入设置的Passphrase,按“OK”就可以看到解密的邮件内容:
得到揭秘之后的消息(待验签):
- 复制消息到Pages,点击"Pages"-->"服务"-->"OpenPGP:Verify Signature of Selection"验证签名:
成功验证签名:
思考题
根据PGP的加密原理,说明为什么PGP要比RSA加密速度要快得多。
- 答:PGP不是加密方法,是一个软件。由于RSA算法是公钥加密算法,计算过程涉及到很大的幂指数运算,计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,IDEA加解密的速度比RSA快得多。PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。收件人同样是用RSA解出随机密钥,再用IEDA解出原文。这样的链式加密既有RSA算法的保密性(Privacy)和认证性(Authentication),又保持了IDEA算法速度快的优势。