使用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.加密后得到一段密文,粘贴在报告中,别人会用自己的私钥解密查看。
使用GPG实现密码学应用相关推荐
- gpg加密命令 linux_加密方案 GNUPG amp; Yubikey
随着时间流逝,我生活中出现的设备越来越多,密码也越来越多,因为记忆成本很多密码强度都不够高,不安全,所以迫切需要一款密码学加密工具来真正解放主动记忆密码,能够将密码存储在一个文件中并且保证这个文件绝对 ...
- GPG对称加密与非对称加密
一.加/解密概述 1.信息传递中的风险 数据加密,是一门历史悠久的技术(如二战期间的摩斯密码),指通过加密算法和加密秘钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文.它的核心是密 ...
- 项目管理 之七 SSH、GPG 密钥生成步骤、部署 Github、Gitee 及使用效果
最近有需要在 Github 上配置 SSH 和 GPG,因此,将过程记录下来形成本文.没啥技术含量,就是一个记录.我这里使用的主机环境是 Ubuntu 22.04 LTS 和 Windows 22 ...
- MIT 计算机操作环境导论Missing Semester Lesson 9 安全和密码学
去年的这节课我们从计算机 用户 的角度探讨了增强隐私保护和安全的方法. 今年我们将关注比如散列函数.密钥生成函数.对称/非对称密码体系这些安全和密码学的概念是如何应用于前几节课所学到的工具(Git和S ...
- linux 怎么不检查gpg,如何在Linux上使用GPG加密和解密文件 | MOS86
如何在Linux上使用GPG加密和解密文件... GnuPrivacy Guard (GPG) allows you to securely encrypt files so that only th ...
- gpg加密 java小程序,使用GPG
Manage public private key How to generate a key pair? / 怎样生成公私钥对? gpg --gen-key 请选择您要使用的密钥种类: (1) RS ...
- .NET中的密码学--对称加密
作者:未知 介绍 在.NET之前,使用非托管的Win32APIs加密解密数据是一件非常痛苦的事情.为了这个加密解密的目的,.NET配置了一组类(和命名空间).现在你有很多类可以使用每种不同的算法保护你 ...
- gpg加密命令 linux_用 PGP 保护代码完整性(五):将子密钥移到一个硬件设备中 | Linux 中国...
在这个系列教程中,将为你提供使用 PGP 和保护你的私钥的最佳体验.-- Konstantin Ryabitsev致谢译自 | linux.com 作者 | Konstantin Ryabitsev译 ...
- 学习之路-现代密码学基础-001
学习之路-现代密码学基础-第一章密码学概论 转载于:https://www.cnblogs.com/vegetables-Adanos/p/5371420.html
- 密码学是如何保护区块链的
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 密码学是如何保护区块链的 摘要:密码学是应用数学函数以保证数据安全性的科学. 许多风靡的影视作品都在向人们暗示:只要有足 ...
最新文章
- electron 主进程向渲染进程发送事件,渲染进程监听事件
- 【视频】网易杭州研究院副院长汪源2016QCon大会专访
- ./和bash的区别
- 小小一招解决“INSERT EXEC 语句不能嵌套”的问题
- CentOS6 下Samba服务器的安装与配置
- 计算机中丢失setupxml.dll,Win7电脑安装VideoStudio Pro X6显示丢失SetupXML.dll文件怎么解决...
- 如何知道AppDomain租约是否已过期呢
- php 访问url curl,推荐PHP一个用CURL访问URL的函数
- JSON.parse()和JSON.stringify()的解析与用途
- linux 内核 触摸屏,7. Linux - 触摸屏(电阻屏)驱动程序实现
- WindowsServer实训项目——第一章:安装与激活WindowsServer
- html文件下载时的header设置
- 《分形艺术,当科学嫁给了艺术》作者:林晨 风达
- Linux系统下,redis集群的搭建
- 关于极光推送通知栏无法正确显示应用图标
- 计算机算法在生物信息学中的应用,生物信息学在系统发育分析中的应用(自己原创) - 生物科学 - 小木虫 - 学术 科研 互动社区...
- Ubuntu16.04下好用的pdf阅读器
- spring boot使用jasypt加密原理解析
- 洛谷P3758 [TJOI2017]可乐
- window.showmodaldialog 兼容谷歌方案