Como assinar correspondência por email com uma chave GPG usando tokens PKCS # 11



Os serviços de correio modernos melhoram seu sistema de segurança de ano para ano. Primeiro, os mecanismos de autenticação apareceram via SMS, agora os mecanismos de aprendizado de máquina para analisar atividades suspeitas na caixa de correio já estão sendo aprimorados.

Mas e se alguém recebeu a senha desejada do seu e-mail e começou a ler toda a sua correspondência secreta, além de escrever algum lixo à direita e à esquerda. Como adicionar um nível adicional de proteção neste caso? GPG e cartões inteligentes vêm em socorro.


O GPG é um programa gratuito de código aberto que fornece a tecnologia necessária para mensagens seguras. Funciona de maneira muito simples: é um banco de dados com todas as chaves públicas dos participantes da rede com quem você deseja se comunicar. Você pode gerenciar essas chaves: adicione-as se tiver um novo conhecido ou exclua se decidir adicionar alguém à sua "lista negra". O GPG também armazena chaves públicas e privadas. Cada chave está associada a uma caixa de correio específica e a um usuário específico no sistema.


! GPG . : ; , , . .


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


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




Também forneceremos instruções para integrar o GPG a clientes de email populares como Thunderbird, KMail, Outlook e o cliente de email padrão no macOS. Essa integração ajudará as pessoas que receberam uma carta sua a entender que a carta foi realmente enviada por você.

Interessado em? Então vamos! Usuários do Windows que desejam seguir o caminho dos xamãs e coletar um demônio do zero, é aconselhável ter paciência ...


Instale GPG e gnupg-pkcs11-scd


Linux


Instale os pacotes necessários (use a linha dependendo do sistema em que você está executando, o primeiro para o Debian, o segundo para o 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

Verifique se a versão é:


gpg >= 2.1.19
gnupg-pkcs11-scd > 0.9.2

Para debian, pode ser necessário baixar e instalar a versão mais recente do daemon gnupg-pkcs11-scd smart card pkcs11 do repositório .


Você pode instalá-lo usando o seguinte comando:


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, .


Depois de instalar o Thunderbird, precisamos adicionar a caixa de correio que queremos usar e para a qual adicionamos as chaves e o certificado no GPG.


Adicionando um
plug-in GPG Chegou a hora de adicionar um plug-in do Enigmail para integrar o Thunderbird ao GPG. Para fazer isso, instale o plug- in ENIGMAIL . Vá para a guia Complementos e clique neles:





Na pesquisa, procure o plug-in do Enigmail e clique no botão "Adicionar ao Thunderbird":





Quando o plug-in estiver instalado, ele oferecerá a adição de chaves existentes. Concordamos com ele e clique no botão "Aplicar minhas chaves".





Quase tudo está pronto. Resta apenas vincular as chaves às contas de email.

Vinculação de chave a contas
Vamos para a configuração da conta:





Na janela pop-up, selecione a guia "Proteção OpenPGP" e selecione a chave que queremos usar para este e-mail. Você também pode configurar as opções padrão.





Tudo está pronto e tudo está montado!
Está desaparecido, está desaparecido ...
Velho, vamos fazer um piquenique!

Exame médico
completo Chegou o momento da verdade. Verifique se todo o sistema está funcionando corretamente. Reinicie o Thunderbird e tente enviar uma mensagem para algum usuário cuja chave pública esteja registrada no GPG. Para fazer isso, adicionei outra conta para verificar o resultado. Crie uma nova carta:





Verifique se a opção de criptografia da letra (se necessário) e a opção de assinatura estão ativadas. Além disso, durante o processo de envio, provavelmente seremos solicitados a inserir uma senha do token.

Verifique se a carta enviada chegou e foi descriptografada com sucesso e se a assinatura está sendo verificada.





Como você pode ver, tudo funciona com sucesso!

Configuração do Kmail


Para começar, baixe o kmail do repositório:


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

Inicie o KMail. Digite as informações da sua conta de e-mail e clique em "Adicionar conta".





Na janela pop-up, selecione "Usar GPG".





Selecionamos a chave que queremos usar para esta caixa de correio:





Configure o identificador de identidade nas configurações:





Defina as chaves para assinatura e criptografia:





Defina o email:





Vamos tentar enviar um email. Verifique se as opções de assinatura e criptografia estão definidas.





Verifique se a carta recebida passa com êxito na verificação da assinatura e descriptografa:





Como você pode ver, tudo deu certo!

Configuração do Outlook


Tudo é simples aqui, porque tudo o que você precisa para trabalhar você já possui e configurou: o plug-in GPGol estava contido no Gpg4Win e configurado automaticamente. Vamos apenas tentar enviar uma mensagem, indicando nas opções que ela precisa ser criptografada e adicionar uma assinatura.





Vamos olhar para a carta que veio. Você pode ver que a assinatura passou na verificação e a carta foi descriptografada.





Configuração do cliente de email


Pague Tim Cook,
moeda
cunhada ... moeda cunhada ...

Esse método, tradicionalmente para a Apple, é pago e é adequado se você estiver disposto a gastar seus shekels honestamente adquiridos no plug-in GPG Suite. Se você valoriza o seu ouro, pode usar a opção gratuita - Thunderbird.


Acesse o site do GPG Suite e faça o download da versão mais recente deste pacote.


Após a instalação, você precisará ativar o plugin GPGMail. Para fazer isso, vá para Correio> Preferências> Geral> Gerenciar configurações de plug-ins e ative GPGMailLoader.mailbundle.





O plugin está ativado. Vamos tentar enviar uma carta de teste. Observe que definimos a opção de assinar a mensagem e criptografá-la.





E verificaremos se a descriptografia e verificação da assinatura foram bem-sucedidas.





Viva, nós conseguimos!

Empregos em Kleopatra


O Kleopatra fornece ao usuário uma interface gráfica conveniente para trabalhar com GPG, como: assinatura, criptografia, verificação de assinatura, descriptografia, etc. No Windows, ele é instalado com o Gpg4Win e no Linux, através do gerenciador de pacotes:


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

Execute-o e veja se o trabalho no programa é intuitivo)


Total


GPG , -, , . , , .


, GPG .


All Articles