如何使用PKCS#11令牌与GPG密钥签署电子邮件通信



现代邮件服务逐年改进其安全系统。首先,通过SMS出现身份验证机制,现在已经改进了用于分析邮箱中可疑活动的机器学习机制。

但是,如果有人从您的邮件中收到令人垂涎的密码,并开始阅读您所有的秘密信件,并左右左右写些垃圾,该怎么办?在这种情况下,如何增加额外的保护等级?GPG和智能卡可以解救。


GPG是一个免费的开源程序,为安全消息传递提供了必要的技术。它的工作非常简单:它是一个数据库,其中包含您要与之通信的网络参与者的所有公钥。您可以管理以下密钥:如果您是新认识的人,则添加它们;如果您决定将某人添加到“黑名单”中,则将其删除。GPG还存储公钥和私钥。每个密钥与系​​统中的特定邮箱和特定用户相关联。


! GPG . : ; , , . .


: GPG -. , , . “ ! ”, — - . — , . , , . , , (PIN-) .


GPG -, OpenPGP SmartCard. -, PKCS#11, , PKCS#11 -. -, PKCS#11 , OpenPGP. , , , , PKI 2.0. PKI , .. RSA.




下面还将介绍将GPG集成到流行的电子邮件客户端(如Thunderbird,KMail,Outlook和macOS上的标准邮件客户端Mail)的说明。这种集成将帮助收到您的来信的人了解这封信确实是您发送的。

有兴趣?那我们走吧!Windows用户想要走萨满祭司的方式并从头开始收集恶魔,建议您耐心等待...


安装GPG和gnupg-pkcs11-scd


的Linux


安装必要的软件包(根据您所使用的系统使用该行,第一个用于Debian,第二个用于Red Hat):


sudo apt-get install gpg opensc libpkcs11-helper1-dev openssl libgpg-error-dev libassuan-dev libgcrypt20-dev autoconf pkg-config # Debian
sudo yum instal gnupg2 gnupg-pkcs11-scd opensc # Red Hat

确保版本为:


gpg >= 2.1.19
gnupg-pkcs11-scd > 0.9.2

对于debian,您可能需要从存储库中下载并安装gnupg-pkcs11-scd智能卡pkcs11守护程序的最新版本


您可以使用以下命令进行安装:


autoreconf -i && ./configure --prefix /usr && make -j 4 && sudo make install

librtpkcs11ecp.so , .


~/.gnupg/gpg-agent.conf :


scdaemon-program /usr/bin/gnupg-pkcs11-scd

~/.gnupg/gnupg-pkcs11-scd.conf :


providers rutoken
provider-rutoken-library /usr/lib64/librtpkcs11ecp.so

Windows


, , . , gnupg-pkcs11-scd , libgnupg-error, libassuan, openssl, pkcs11-helper, libgcrypt. Linux ( ), windows , .


, , . . , . , .



, Gpg4Win .


.


, .


, %APPDATA%/gnupg. gpg-agent.conf :


scdaemon-program C:/HERE_IS_PATH_TO/gnupg-pkcs11-scd.exe

gnupg-pkcs11-scd.conf :


providers rutoken
provider-rutoken-library C:/Windows/System32/rtPKCS11ECP.dll


Welcome to the club, buddy!

. pkcs11 - Windows. , , . , .


Gpg4Win msys2, .


msys2.


, , . , gnupg-pkcs11-scd , . Linux macOS , . , - , :


pacman -Syuu

.


pacman -S --needed git base-devel mingw-w64-i686-toolchain man2html pkg-config openssl-devel

(libgpg-error)


libgpg-error .


:


./configure --with-cygwin-native
make
make install

Voilà! !


(libassuan)


libassuan , :


./configure --with-cygwin-native
make
make install

(pkcs11-helper)


pkcs11-helper .


pkcs11-helper:


autoreconf --install
./configure --with-cygwin-native
make
make install

(libgcrypt)


libgcrypt , :


./configure --with-cygwin-native
make
make install

, (gnupg-pkcs11-scd)


? ! , .


:


autoreconf --install
./configure --with-cygwin-native
make
make install

Fatality


.


, %APPDATA%/gnupg. gpg-agent.conf :


scdaemon-program C:/msys32/mingw32/bin/gnupg-pkcs11-scd.exe

gnupg-pkcs11-scd.conf :


providers rutoken
provider-rutoken-library C:/Windows/System32/rtPKCS11ECP.dll

macOS


brew .
, , gpg gnupg-pkcs11-scd:



brew install gpg gnupg-pkcs11-scd

librtpkcs11ecp .


~/.gnupg/gpg-agent.conf :


scdaemon-program /usr/local/lib/gnupg-pkcs11-scd

~/.gnupg/gnupg-pkcs11-scd.conf :


providers rutoken
provider-rutoken-library /usr/local/lib/librtpkcs11ecp.so


! ! , .


, RSA-, - . RSA- ( ).


, , - , SDK pkcs11-tool


gpg-agent. gpgconf. : Linux macOS gpg, Windows Gpg4Win. :


gpgconf --kill gpg-agent

, :


gpg --card-status

:


[lo1ol@localhost .gnupg]$ gpg --card-status
Application ID ...: D2760001240111503131CAE8D55A1111
Version ..........: 11.50
Manufacturer .....: unknown
Serial number ....: CAE8D55A
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: 1R 1R 1R
Max. PIN lengths .: 0 0 0
PIN retry counter : 0 0 0
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

, gpg-agent. gpg-agent :


gpg-agent --server
SCD LEARN

Bad certificate, , , GPG. :


[lo1ol@localhost .gnupg]$ gpg-agent --server
OK Pleased to meet you
SCD LEARN
....
S KEYPAIRINFO 892E053AE031FC23F3E7CCC73BC60859F11F6B90 Aktiv\x20Co\x2E/Rutoken\x20ECP/3ac67ae9/Rutoken\x20ECP\x20\x3Cno\x20label\x3E/45
OK

GPG


-, :


gpg-agent --server
SCD LEARN

, S KEYPAIRINFO. , :


S KEYPAIRINFO 892E053AE031FC23F3E7CCC73BC60859F11F6B90 Aktiv\x20Co\x2E/Rutoken\x20ECP/3ac67ae9/Rutoken\x20ECP\x20\x3Cno\x20label\x3E/45

892E053AE031FC23F3E7CCC73BC60859F11F6B90. , GPG. :


gpg --expert --full-generate-key

, . RSA (13 ):


lo1ol@lo1ol-VirtualBox:~$ gpg --expert --full-generate-key
gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(9) ECC and ECC
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(13) Existing key
Your selection? 13

:


Enter the keygrip: 892E053AE031FC23F3E7CCC73BC60859F11F6B90

, e-mail . , . e-mail, :


Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Certify Encrypt

(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection?
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: lo1ol
Email address: lo1ol@mail.ru
Comment:
You selected this USER-ID:
"lo1ol <lo1ol@mail.ru>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

. :


gpg: /home/lo1ol/.gnupg/trustdb.gpg: trustdb created
gpg: key 676E42AAAFBCF227 marked as ultimately trusted
gpg: directory '/home/lo1ol/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/lo1ol/.gnupg/openpgp-revocs.d/0CD2B9CEE398990609D6C164676E42AAAFBCF227.rev'
public and secret key created and signed.

pub rsa2048 2019-10-25 [SCE]
0CD2B9CEE398990609D6C164676E42AAAFBCF227
uid lo1ol <lo1ol@mail.ru>

, , — .


, , , , GPG — . GPG ( X.509), : , , .. , , GPG.


GPG , , Kleopatra, , . , , X.509.



Thunderbird


, GPG Thunderbird. , , Linux, Windows macOS. ( ).



, . Linux macOS :


sudo apt-get install thunderbird # Debian
sudo yum install thunderbird # Red Hat
brew cask install thunderbird #

Windows macOS c . , Thunderbird, .


在安装Thunderbird之后,我们需要添加要使用的邮箱,并在GPG中为其添加了密钥和证书。


添加GPG
插件现在是时候添加Enigmail插件以将Thunderbird与GPG集成了。为此,请安装ENIGMAIL插件转到加载项选项卡,然后单击它们:





在搜索中,查找Enigmail插件,然后单击“添加到Thunderbird”按钮:





安装该插件后,它将提供添加现有密钥的功能。我们同意他的观点,然后单击“应用我的密钥”按钮。





几乎一切都准备就绪。它仅保留将密钥绑定到邮件帐户的功能。

与帐户
键绑定让我们进入帐户设置:





在弹出窗口中,选择“ OpenPGP保护”选项卡,然后选择我们要用于此邮件的密钥。您还可以配置默认选项。





一切准备就绪,一切组装完毕!
你想念,你想念...
老人,我们去野餐吧!

健康检查关键
时刻到来了。检查整个系统是否正常运行。重新启动Thunderbird,然后尝试向公共密钥已在GPG中注册的某些用户发送消息。为此,我添加了另一个帐户来检查结果。创建一个新字母:





确保已启用字母的加密选项(如有必要)和签名选项。另外,在发送过程中,可能会要求我们输入令牌密码。

检查已发送的信件是否已到达并已成功解密,并且正在验证签名。





如您所见,一切顺利!

Kmail设置


首先,从存储库下载kmail:


sudo apt-get install kmail # Debian
sudo yum install kmail # Red Hat

启动KMail。输入您的邮件帐户信息,然后单击“添加帐户”。





在弹出窗口中,选择“使用GPG”。





我们选择要用于此邮箱 的密钥





:在设置中配置身份标识符:





设置用于签名和加密的密钥:





设置电子邮件:





让我们尝试发送电子邮件。确保已设置签名和加密选项。





检查收到的信件是否成功通过签名验证并解密:





如您所见,一切都成功完成!

Outlook设定


这里的一切都很简单,因为 您已经拥有并配置的工作所需的一切:GPGol插件包含在Gpg4Win中并自动配置。让我们尝试发送一条消息,在选项中指出需要加密并添加签名。





让我们看看这封信。您可以看到签名已通过验证,并且信件已解密。





邮件客户端配置


支付Tim Cook,
铸造硬币...
铸造硬币...

这种方法(传统上适用于Apple)是有偿的,如果您愿意将诚实获得的谢克尔花在GPG Suite插件上,则该方法非常适合。如果您珍视自己的黄金,那么可以使用免费选项-Thunderbird。


转到GPG Suite网站并下载此软件包的最新版本。


安装后,您将需要激活GPGMail插件。为此,请转到设置>邮件>首选项>常规>管理插件,然后激活GPGMailLoader.mailbundle。





插件已激活。让我们尝试发送一封测试信。请注意,我们已经设置了对邮件进行签名和加密的选项。





并且我们将验证签名的解密和验证是否成功。





万岁,我们做到了!

克娄巴特拉的工作


Kleopatra为用户提供了一个方便的图形界面来使用GPG,例如:签名,加密,签名验证,解密等。在Windows上,它与Gpg4Win一起安装,在Linux上,可以通过程序包管理器安装:


sudo apt-get install kleopatra # Debian
sudo yum install kleopatra # Red Hat

运行它,看看程序中的工作是直观的)



GPG , -, , . , , .


, GPG .


All Articles