解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题

前言:

解决Ubuntu Linux系统下安装VMware Workstation Pro无法弹出图形化安装界面以及安装完成后无法打开虚拟网络编辑器界面的问题。

继续阅读“解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题”

Windows上使用Thunderbird与GPG发送和解密公钥加密的电子邮件

作者:荒原之梦

非对称加密的原理:

最先出现的加密方法是对称加密。在对称加密算法中是不区分公钥和私钥的,加密与解密使用的都是同一个密码。但是很显然,如果需要对信息进行加密与解密的不是同一个人,使用对称加密算法就存在密钥泄露的极大可能。因此,一种非对称加密的想法在1974年最先由Ralph C. Merkle提出。目前主要的非对称加密算法有:RSA、EIGamal、ECC、背包算法和D-H公钥加密算法等。

1.公钥加密信息的工作过程:

A使用公钥加密算法创建一个自己的公钥A-1和私钥A-2。私钥A-2由A自己保管,不对外公开。公钥A-1则通过一些可信的渠道公布出去,例如使用了HTTPS的网页(这里之所以强调“HTTPS”是因为HTTPS协议对传输的信息做了加密,如果将公钥放在使用HTTP协议的网页上,由于HTTP是明文传输网页数据的,因此在传输的过程中有可能因为遭遇中间人攻击等而出现公钥被修改的可能。前文提到“可信的渠道”也是出于此原因。)、公钥服务器或者面对面传递公钥。B在拿到A的公钥A-1后,如果B想给A发送加密信息就可以使用公钥A-1进行加密后再发送给AA收到加密信息后使用自己知道的,与公钥A-1对应的私钥A-2解密B发来的加密信息。

上述信息加密过程的一个应用就是本文接下来要介绍的发送使用公钥加密的电子邮件并用对应的私钥解密该邮件。公钥加密算法还有一个应用就是用于身份认证,即数字签名技术。

2.数字签名的工作过程:

传统的签名可以通过签字人笔迹的唯一性确定信息的所有者。在计算机系统中,我们使用公钥加密算法进行数字签名。首先,仍然是生成一对公钥和私钥,公钥公布,私钥私有,但是这一次私钥不是用来解密的,而是用于加密的。由于私钥的与公钥具有数学上的关联性(虽然公钥与私钥具有相关性,但是使用目前主流的非对称加密算法并且在密钥长度足够复杂的情况下还没有找到破解这种关联性的有效的方法。20180210日注),即一个公钥只对应一个私钥,只要一份文件可以通过一个公钥解密,那么在一般情况这份文件就是由这个公钥所对应的私钥的持有者加密的。这样就可以进行身份认证。

总结一下:

信息加密中,公钥加密,私钥解密;

数字签名中,私钥加密,公钥解密;

无论信息加密还是数字签名都是:公钥公开,私钥保密。

前期准备:

  1. 下载和安装Thunderbird。

Thunderbird下载地址:https://www.mozilla.org/en-US/thunderbird/

    1. Thunderbird上登陆一个电子邮件帐号。
  1. 如果想对电子邮件加密技术有一个大致的了解,可以参考我的这篇博文:电子邮件加密技术初探

本文要用到的工具的介绍:

1.Thunderbird

这是一个邮件客户端,有很多插件可以使用,支持WindowsLinuxmacOS.

2.GPG

GPGGnuPG,是由自由软件基金会Free Software Foundation 开发的用于替代商业软件PGP的一款免费软件,可以用来加密数据以及进行数字签名。PGP中使用了具有专利的算法,不能免费使用,而GPG中则没有使用具有专利的算法,可以免费使用。

3.Enigmail
EnigmailThunderbird的一个插件,可以对将要发送的邮件进行GPG公钥加密或对收到的使用GPG加密的邮件进行解密。

发送公钥加密的电子邮件的过程如下:

1.下载安装GPG并创建密钥对
GPG
官网下载地址:https://www.gnupg.org/download/index.html

或者也可以使用Gpg4winGpg4win官网:https://www.gpg4win.org/index.html

本文中使用的是Gpg4win.

Gpg4win安装完成后在默认情况下会打开Kleopatra,点击“创建密钥对”。

输入名字和邮箱,依次点击:下一步>创建

创建的过程中会要求设置一个密码以保护将要生成的私钥,这样可以防止私钥被越权使用。
稍等一会我们就可以看到“密钥对已成功创建”的窗口提示。在该窗口里我们还可以看到密钥指纹(密钥指纹可以用来验证密钥在传输的过程中是否被修改。指纹的另一个重要用途就是,由于公钥服务器并不会对上传的公钥进行身份验证,因此任何人都可以以你的名义上传公钥,为了防止这种情况发生,你可以在你的个人主页上公布自己的密钥指纹,以提供给下载了你的公钥的人用于验证公钥的真伪。)以及“生成您的密钥对副本”、“通过电子邮件发送公钥”和“将公钥上传到目录服务”(如果将公钥上传到了公钥服务器,不同的公钥服务器之间会相互交换公钥,最终你上传到一台公钥服务器上的公钥会遍布全网所有公钥服务器。之后,任何人都可通过该公钥对应的电子邮件地址或者密钥ID查找对应的公钥,从而向我们发送加密信息)这三个选项。

密钥对创建完成后,我们可以在Kleopatra中看到刚才创建的项目,选中该项目可以导出“.asc”格式的公钥,右键可以进行“更改到期日期”等更多操作。

2.在Thunderbird中搜索安装插件Enigmail并配置密钥文件
关于在Thunderbird中安装插件的步骤,可以参考我的这篇文章Windows上设置Mozilla Thunderbird邮件客户端后台运行

打开Thunderbird的设置,依次找到Enigmail->Key Management->File->Import Keys from File 可以导入某个邮箱地址的公钥文件或者在搜索框中通过输入邮箱地址或密钥ID在公钥服务器上搜索对应的公钥。如果已使用GPG创建密钥对的电子邮件地址已经登陆了Thunderbird可以直接在Key Management里看到相关信息,不需要进行密钥文件配置。

安装Enigmail后,如果我们的Thunderbird上的一个邮箱账户没有设置GPG公钥,当我们使用该账户发信时就会弹出如下的警报:

The key ID 'XXX@XXX.XXX' configured for the current identity does not yield a usable OpenPGP key.

Please ensure that you have a valid, not expired OpenPGP key and that your account settings point to that key.

If your key is not expired, then check if you did set Owner trust to full or ultimate

这种情况下,除非对该账号设置GPG公钥或者卸载Enigmail,否则就无法在发送邮件时解除该警报,也无法在Thunderbird上使用该账号发送邮件。

3.发送加密电子邮件
假设我们需要向AAA@AAA.AAA这个电子邮件地址发送GPG加密邮件,首先应该使用第二步介绍的方法导入AAA@AAA.AAA对应的公钥文件(该文件将用于加密邮件),或者通过邮件地址AAA@AAA.AAA或对方的密钥ID在公钥服务器上搜索其公钥,搜索到的公钥需要进行指纹验证以确保该公钥不是伪造的。
当我们第一次使用一个已经设置
GPG公钥的电子邮件地址向另外一个具有GPG公钥的电子邮件地址发送邮件时会弹出确认提示:

You did not yet configure Enigmail security for the selected identity. Do you want to do this now?

点击Configure ,选中Enable OpenPGP support (Enigmail) for this identity ,点击OK . 之后会弹出窗口询问我们是想使用GPG进行加密还是进行身份认证以及使用哪种GPG加密方式:

Enigmail Encryption & Signing Settings

Encrypt Message

Sign Message

Use Inline PGP
Use PGP/MIME

这里我们选择Encrypt Message Use PGP/MIME ,点击OK .

在发送邮件之前,我们可以通过点击工具栏上的小锁在加密与不加密之间切换。

4.解密收到的加密电子邮件

假设我们的一个邮箱地址BBB@BBB.BBB接收到一封GPG加密的电子邮件(该邮件使用的是BBB@BBB.BBB的公钥进行的加密),那么,我们就可以在安装有GPG软件的电脑上(且该电脑上存储有BBB@BBB.BBB的私钥)使用邮件客户端,通过输入BBB@BBB.BBB的私钥加密密码的方式解密该邮件。在网页端登陆邮箱,需要配合插件来解密GPG加密的邮件。

1:前面设置密钥对时设置的密码并不是私钥,而是加密私钥的密码,仅仅使用该密码是不可以解密邮件的,必须配合私钥文件一起才能解密。

2GPG加密的邮件并不会加密邮件地址和标题。

Windows Server 2008取消登录前的Ctrl+Alt+Delete组合键操作

作者:荒原之梦

前言:

在Windows Server 2008服务器中,为了防止人们登录服务器时错误的将账户和密码输入其他地方导致信息泄漏,所以在我们登录Windows Server 2008服务器操作系统时会要求我们按“Ctrl+Alt+Delete”组合键才能打开登录界面。这样确实能减少人为失误造成信息泄漏的可能性,但是我在使用网页版远程登录连接我的Windows服务器时发现,一旦我按下了“Ctrl+Alt+Delete”组合键,就会被我的本地计算捕获这一操作指令,而远程服务器却没有反应。综上,同时也为了方便登陆(我的这台Windows服务器纯属个人使用,服务器中没有重要信息,因此可以为了方便使用牺牲一些安全性,如果是公司服务器等对安全性要求比较高的服务器还是要以确保安全为主。)

 

具体操作步骤:

1. Win+R组合键输入gpedit.msc,回车运行,打开“本地组策略编辑器”。

2 .依次打开“计算机配置->Windows设置->安全设置->本地策略->安全选项”

3 .点击“安全选项”,选中右侧窗口中的“交互式登录:无须按Ctrl+Alt+Del”,右键点击“属性”,将“已禁用”改为“已启用”。

4 .点击“应用”和“确定”,之后重启服务器。

5 .重启完成后再次使用Web方式登录服务器就直接进入到了登陆界面,不再需要按Ctrl+Alt+Delete组合键进入登陆界面。

 

注:

更改本地组策略后一定要记得重启服务器。经实际测试,一般情况下,不重启不会更新上述更改,因此更改也不会生效。

在Linux上使用PGP签名验证文件完整性

前言:文件在下载及存储过程中可能由于传输错误、硬件故障、文件系统错误等网络、硬件和软件方面的原因导致文件损坏,也可能在传输过程中受到攻击(如“中间人攻击”)导致下载的文件被篡改或者下载到了其它非原始文件。所以,在使用一个文件之前(如安装一个软件或操作系统)最好先对文件进行完整性(或者说“原始性”)的检验。常用的文件校验方法有SHA、MD5、CRC和PGP签名等。本文主要阐述一下在Linux上使用PGP证书校验文件完整性的操作步骤。

一、下载提供有PGP证书的文件

这里我们下载的是VeraCrypt(下载地址:https://veracrypt.codeplex.com/wikipage?title=Downloads#Title)。我们可以看到,每个文件后面都提供有对应的PGP Signature,下载时我们要把文件和文件对应的PGP Signature都下载下来放到一个文件夹里。

图 1

注:下面的操作步骤使用Ubuntu进行演示。需要注意的是,在Ubuntu中不能校验Windows下使用的文件对应的PGP数字签名。如图:

图 2

二、在文件和文件PGP签名所在的文件夹中打开终端

图 3

三、输入gpg -–verify PGP签名文件名

如我这里的PGP签名文件名是“veracrypt-1.21-setup.tar.bz2.sig”(签名文件一般以.sig或.asc结尾),所以我输入的命令就是:

gpg –verify veracrypt-1.21-setup.tar.bz2.sig

回车执行后如下图所示。这一步操作的目的主要是为了获取从公钥服务器上下载公钥的“钥匙号”,如图中的钥匙号为“54DDD393”。

图 4

但是,在上图中我们可以看到“完好的签名”这一提示,这表明PGP校验已经完成(“gpg -–verify PGP证书文件名”这一命令本身就可以在已经导入公钥的前提下直接校验文件完整性,但是在没有导入公钥时运行这一命令可以使用得到的钥匙号去公钥服务器上下载公钥)。这是因为我之前已经进行过一次检验,公钥已经导入到了本地,下面我们把本地公钥删除,重新进行一次校验。我们可以使用“gpg -k”命令查看当前系统中的公钥:

图 5

现在可以知道,公钥pubring.gpg在一个名为“gnupg”的隐藏文件夹里,我们进到这个文件夹里,用rm命令将它删除:

图 6

然后再执行“gpg -–verify PGP证书文件名”:

图 7

这次的运行后仍得到了钥匙号,但是没有出现“完好的签名”这样的提示,而是“无法检查签名”,这说明本地此时并没有可以用于检验签名的公钥。

注:在这里我们可以看到,我们要验证的是PGP签名,使用的却是“gpg”命令,关于PGP和GPG的更多内容可以查看我的另一篇博文http://blog.csdn.net/wy_bk/article/details/75330196

四、输入gpg –keyserver hkp://pgp.mit.edu –recv-keys 钥匙号

图 8

五、输入gpg -–verify PGP证书文件名

图 9

至此,我们看到了“完好的签名”这样的提示,这说明文件本身基本可以保证是完整的。

注:上一步出现了警告“没有找到任何绝对信任的秘钥”,这一步操作也有类似的警告“没有证据表明这个签名属于他所声称的持有者”。也就是说,秘钥本身也是可以被伪造的,PGP签名只是检测文件是否完整的一个参考。PGP签名的原理就是使用非对称秘钥加密技术和数字摘要技术产生一段只有文件的原始发布者才能产生的数字串。我们对文件进行PGP签名校验,就是要使用公钥解密文件的原始发布者使用私钥加密的签名,核对上述中的“数字串”是否和原来一致。为了方便获取公钥,人们一般把公钥上传到公钥服务器中。有时候人们为了防止PGP签名本身被伪造,还提供了SHA256用于对PGP签名文件本身的完整性进行检测。

附:PGP公钥服务器列表:

  • http://keyserver.ubuntu.com/
  • keys.gnupg.net
  • HKP://subkeys.pgp.net
  • HKP://pgp.mit.edu
  • HKP://pool.sks-keyservers.net
  • HKP://zimmermann.mayfirst.org这个网站不断统计着几乎所有公钥服务器上的公钥数目https://sks-keyservers.net/status/,如图:
    图 10

    后记:其实我一直觉得Linux操作系统很难使用,一方面在Windows上常使用的软件很少有支持Linux的,另一方面使用Linux时总会遇到各种障碍。当我学会在Linux上使用PGP证书校验文件完整性之前,我对Linux优势的了解仅仅是占用内存小且开源免费,自从实际操作了PGP证书校验文件我才真正开始感觉到了Linux在处理一些专业任务上的便捷性。

电子邮件加密技术初探(20170718-20170720探索日志)

作者:荒原之梦

前言:邮件加密一直是人们十分关心的问题。在我们还只能使用信纸进行通讯的时代,人们就发明了信封和火漆来防止信件被偷窥。在互联网时代,我们的信息安全面临着越来越多的挑战,除了需要国家出台相应的法律(我国已于2016年06月01日起正式实施中华人民共和国网络安全法)来保护我们个人的信息安全之外,还需要从我们自身做起才能有效的保护个人信息,防止被非法获取。当然,邮件加密绝不仅仅是设置更加复杂的密码,邮件传输信道的加密和邮件内容的加密以及我们自身对各种秘钥的管理——各个环节都需要我们的关注。这几天我主要了解了电子邮件加密的相关技术,下面列举如下,择日分类详述。

一、邮件加密技术基础

1.HTTPS协议

HTTPS=HTTP+SSL/TLS。这里需要明白的是HTTP,SSL,TLS的具体含义以及在实际使用过程中如何将信息进行加密解密。简单的讲,HTTPS协议就是将在网络中传输的数据进行加密,使得在服务器端和客户端之间传输的数据不再是明文数据。

注:这里补充一点:我们必须分清楚“邮件通信加密”和“邮件内容加密”。上述中提到的SSL指的是建立一条加密链路以加密邮件通讯,其实这个链路中传输的邮件内容是没有被SSL加密的。而下面将要提到的PGP加密指的是邮件内容的加密。

2.RSA公钥加密。

RSA公钥加密算法基于一个简单的事实,就是将两个大质数相乘很容易,但是想要在不知情的情况下根据结果找出是由哪两个数相乘得到的该结果却不容易,至少在当今一段时间和过去想要暴力破解使用了长秘钥的RSA加密信息是相当困难的。

3.数字签名。

数字签名的应用主要是为了证明信息的真实性,例如被加密的信息其实也可能被修改。正如我们在网上下载软件或者其他文件后通常会测试一下哈希值一样,目的之一就是为了排除我们收到的是一个被修改过的文件的可能性。

4.PGP邮件加密。

GnuPG是应用了PGP协议的开源加密软件,GnuPG的官网为https://gnupg.org/。GnuPG是GNU将OpenPGP(即PGP)中的专利算法去除后实现的开源软件。GnuPG整合了RSA公钥加密和数字签名技术,可以运行在Windows或Linux系统中,可以用来加密文件或者邮件。其实很多邮箱客户端都集成了GnuPG,例如在linux中可以在Evolution和Mozilla Thunderbird这两个邮箱客户端中使用GnuPG,在Windows(或Linux)中可以使用Kmail(Kmail是kontact的邮箱组件,网址https://userbase.kde.org/Kontact/zh-cn

图 1

在Windows中还可以使用Gpg4win(官网https://www.gpg4win.org/)来发送基于PGP加密的邮件。

图 2

另外Outlook邮箱客户端也有GnuPG的组件。

二、邮件加密的实现

想要在网络上进行加密通讯其实需要一个系统的工作,不仅需要多种信息加密工具的配合使用确保信息不被泄露以及不被篡改,还有有关人员身份的隐匿,而且在很大程度上还需要对“人”本身进行有效的管理,特别是在公司等组织内部,由于所需保密的信息可能涉及多人,此时对人的管理就显得尤为重要。

下面我就从技术的角度列举一下使用加密电子邮件的一些方法,下面的有些方法可以组合使用以提高保密强度:

1.使用电子邮件服务商提供的加密电子邮件服务

1.1 ProtonMail

ProtonMail官网:https://protonmail.com/

根据ProtonMail官网上的介绍,ProtonMail使用了End-to-End端到端加密技术,而且ProtonMail开放了自己的源代码。并且,注册ProtonMail是不需要提供手机号的,其总部和邮件服务器都位于瑞士。

图 3

1.2 Lavabit

Lavabit官网:https://lavabit.com/

Lavabit曾因棱镜门事件被关闭,不过在2017年Lavabit重新上线。

图 4

2.使用电子邮封加密电子邮件

电子邮封(百度百科:电子邮封)是一种比较方便使用的电子邮件加密软件。直观的讲,电子邮封就是给电子邮件加上了一个信封。MailCloak是一款电子邮封软件,可以实现对邮件内容的加密,有客户端版,火狐版等。MailCloak由GWEBS公司提供,此外GWEBS还提供有其他保障数据安全的软件。GWEBS官网:http://www.gwebs.com/

图 5

3.使用PGP加密邮件

前面已经提到多种实现了GnuPG加密的邮件客户端,使用GnuPG是一种较为可靠的邮件加密方法(从没有绝对的信息安全可言),但是这些软件的使用(如果你想发挥它们的最大功能的话)比较复杂,我将在另一篇文章里详细介绍安装和配置Gpg4win并使用Gpg4win发送加密文件,之后在另一台电脑上解密加密邮件的过程。

以上三种邮件加密方法需要收发信件的双方都使用相应的加密措施,否则有可能造成无法解密信息或者信息的泄露。

警示:所有信息加密技术都应该用于维护自身的合法利益,避免个人信息被别人非法获取后对我们自身造成伤害。所以,千万不要尝试使用信息加密技术做危害他人和社会的事情,我们必须在法律允许的范围内行事,不然再强大的加密技术也不可能让你做到永远高枕无忧。