闲着没事,看了一下非对称加密算法,然后打算用MMA实现以下,发现签名还是有点麻烦,所以索性直接使用现成的工具进行加密和签名。OpenGPG是一套用于讯息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用。它可以对文件、电子邮件等进行加密和签名。而与之对应的软件就是GnuPG了,在Windows下面是GPG4WIN。关于GnuPG,用Wikipedia来描述一下:
GNU Privacy Guard(GnuPG或GPG)是一种加密软件,它是PGP加密软件的满足GPL的替代物。GnuPG依照由IETF订定的OpenPGP技术标准设计。GnuPG用于加密、数字签名及产生非对称匙对的软件。IETF正在为PGP协议进行标准化,标准化的PGP称为OpenPGP。当前版本的PGP及Veridis’ Filecrypt与GnuPG或其他OpenPGP系统兼容。GnuPG是自由软件基金会的GNU计划的一部分,目前受德国政府资助。以GNU通用公共许可证第三版授权。
1.安装及证书生成
GPG4WIN官网:https://www.gpg4win.org/
下载完成之后可以直接双击安装,将所有的附加组件都进行安装:
安装完成之后,打开Kleopatra准备生成证书,Kleopatra是一个用于管理证书的工具:
选择personal OpenPGP key pair生成个人密钥对:
在生成之前需要填写一些相关的信息,如下图所示:
点击Advanced Setting…按钮进入高级设置,在这里可以设置加密采用的算法:
完成之后,点击下一步可以查看到一个Review:
在正式生成证书之前需要填写一个密码,这个密码配合私钥可以对公钥的密文进行解密:
确定之后就可以生成一个个人证书:
2.证书的导出和撤销
证书导出比较简单,对刚才生成的证书右键,选择Export Certificates…即可导出公钥证书:
选择Export Certificates to Server…可以将公钥证书部署到Server上,但是如果不是自己的Server的话,则部署之后不能删除,一旦密钥泄露比较容易造成信息泄露,因此需要生成一个撤销凭证(Revocation Certificate)。这个撤下凭证只能在CMD命令行中生成。打开命令行,输入:
1 |
gpg --list-keys |
会显示当前证书列表,记录下自己的ID后用下面的命令生成撤销凭证:
1 |
gpg --output revoke.asc --gen-revoke ######## |
然后会让你选择撤销凭证的理由:
- 0 = No reason specified 没有特别的理由
- 1 = Key has been compromised 密钥泄漏
- 2 = Key is superseded 密钥被取代
- 3 = Key is no longer used 密钥不再使用
- Q = Cancel
选择理由之后输入描述,以空行结尾后输入个人密码,即可生成撤销凭证:
撤销凭证的位置是在计算机个人目录下:%userprofile%
3.信息加密
信息加密比较简单,如果没有加密证书需要先导入公钥证书:
选择菜单中的加密/签名选项:
选择要加密或者签名的文件,之后下一步:
选择加密,然后选择相应的证书:
即可完成相应的文件加密工作。
4.信息解密
对完成加密后的文件进行解密工作和加密是一样的步骤,首先选择还是先导入私钥证书,然后进行解密操作:
选择保存位置,以及是否带有签名:
输入私钥证书密码:
解密成功:
当然也可以对文件直接右键,选择菜单中的加密选项进行加密操作。
5.End小结
前两天了解了一下企业QQ,发现企业QQ原来是能够监视客户端的所有操作的,还有一些企业软件和病毒木马有的一拼,直接监控键盘操作之类,果然现在这个时代,大家都在裸奔。虽然很想用MMA实现这个操作,但是对于二进制文件的读取和控制还存在一些问题,所以还是采用最常见的软件进行加密比较稳定。
PS: 还可以用GPG4WIN对邮件加密