Cómo firmar correspondencia por correo electrónico con una clave GPG usando tokens PKCS # 11



Los servicios de correo modernos mejoran su sistema de seguridad de año en año. Primero, aparecieron mecanismos de autenticación por SMS, ahora los mecanismos de aprendizaje automático para analizar actividades sospechosas en el buzón ya se están mejorando.

Pero, ¿qué pasaría si alguien recibiera la codiciada contraseña de su correo y comenzara a leer toda su correspondencia secreta, además de escribir algo de basura de derecha a izquierda? ¿Cómo agregar un nivel adicional de protección en este caso? GPG y tarjetas inteligentes vienen al rescate.


GPG es un programa gratuito de código abierto que proporciona la tecnología necesaria para la mensajería segura. Funciona de manera muy simple: es una base de datos con todas las claves públicas de los participantes de la red con los que desea comunicarse. Puede administrar estas claves: agréguelas si ha conocido a una nueva persona o elimínelas si decide agregar a alguien a su "lista negra". GPG también almacena claves públicas y privadas. Cada clave está asociada con un buzón específico y un usuario específico en el sistema.


! GPG . : ; , , . .


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


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




También proporcionaremos instrucciones para integrar GPG en clientes de correo electrónico populares como Thunderbird, KMail, Outlook y el cliente de correo estándar en macOS. Esta integración ayudará a las personas que han recibido una carta de usted a comprender que realmente envió la carta.

¿Interesado en? ¡Entonces vamos! Los usuarios de Windows que quieran seguir el camino de los chamanes y recoger un demonio desde cero deben ser pacientes ...


Instale GPG y gnupg-pkcs11-scd


Linux


Instale los paquetes necesarios (use la línea según el sistema en el que se esté ejecutando, el primero para Debian, el segundo para 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

Asegúrese de que la versión sea:


gpg >= 2.1.19
gnupg-pkcs11-scd > 0.9.2

Para debian, es posible que deba descargar e instalar la última versión del demonio gnupg-pkcs11-scd smart card pkcs11 desde el repositorio .


Puede instalarlo con el siguiente 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, .


Después de instalar Thunderbird, necesitamos agregar el buzón que queremos usar, y para el cual agregamos las claves y el certificado en GPG.


Agregar un
complemento GPG Es hora de agregar un complemento Enigmail para integrar Thunderbird con GPG. Para hacer esto, instale el complemento ENIGMAIL . Vaya a la pestaña Complementos y haga clic en ellos:





En la búsqueda, busque el complemento Enigmail y haga clic en el botón "Agregar a Thunderbird":





cuando el complemento esté instalado, ofrecerá agregar claves existentes. Estamos de acuerdo con él y hacemos clic en el botón "Aplicar mis claves".





Casi todo está listo. Solo queda vincular las claves a las cuentas de correo.

Enlace de clave a cuentas
Vayamos a la configuración de la cuenta:





En la ventana emergente, seleccione la pestaña "Protección OpenPGP" y seleccione la clave que queremos usar para este correo. También puede configurar las opciones predeterminadas.





¡Todo está listo y todo está ensamblado!
Te estás perdiendo, te estás perdiendo ...
Viejo, ¡vamos de picnic!

Control de salud
Ha llegado el momento de la verdad. Compruebe que todo el sistema funciona correctamente. Reinicie Thunderbird e intente enviar un mensaje a algún usuario cuya clave pública esté registrada en GPG. Para hacer esto, agregué otra cuenta para verificar el resultado. Crea una nueva carta:





Asegúrese de que la opción de cifrado de la carta (si es necesario) y la opción de firma estén habilitadas. Además, durante el proceso de envío, probablemente se nos pedirá que ingresemos una contraseña de token.

Verifique que la carta enviada haya llegado y que se haya descifrado con éxito, y que se esté verificando la firma.





Como puede ver, ¡todo funciona con éxito!

Configuración de Kmail


Para comenzar, descargue kmail desde el repositorio:


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

Lanzamiento de KMail. Ingrese la información de su cuenta de correo y haga clic en "Agregar cuenta".





En la ventana emergente, seleccione "Usar GPG".





Seleccionamos la clave que queremos usar para este buzón:





configure el identificador de identidad en la configuración:





establezca las claves para la firma y el cifrado:





configure el correo electrónico:





intentemos enviar un correo electrónico. Asegúrese de que las opciones de firma y cifrado estén establecidas.





Verifique que la carta recibida pase con éxito la verificación de firma y descifre: ¡





Como puede ver, todo funcionó con éxito!

Configuración de Outlook


Aquí todo es simple, porque todo lo que necesita para el trabajo que ya tiene y configuró: el complemento GPGol estaba contenido en Gpg4Win y se configuraba automáticamente. Intentemos enviar un mensaje, indicando en las opciones que necesita ser encriptado y agregue una firma.





Miremos la carta que vino. Puede ver que la firma pasó la verificación y se descifró la carta.





Configuración del cliente de correo


Pague a Tim Cook,
moneda
acuñada ... Moneda acuñada ...

Este método, tradicionalmente para Apple, es de pago, y es adecuado si está dispuesto a gastar sus shekels adquiridos honestamente en el complemento GPG Suite. Si valoras tu oro, puedes usar la opción gratuita: Thunderbird.


Vaya al sitio web de GPG Suite y descargue la última versión de este paquete.


Después de la instalación, deberá activar el complemento GPGMail. Para hacer esto, vaya a Correo> Preferencias> General> Administrar configuraciones de complementos y active GPGMailLoader.mailbundle.





El complemento está activado. Intentemos enviar una carta de prueba. Tenga en cuenta que hemos configurado la opción de firmar el mensaje y cifrarlo.





Y verificaremos que el descifrado y la verificación de la firma fueron exitosos.





¡Hurra, lo hicimos!

Empleos en Kleopatra


Kleopatra proporciona al usuario una interfaz gráfica conveniente para trabajar con GPG, como: firma, cifrado, verificación de firma, descifrado, etc. En Windows, se instala con Gpg4Win, y en Linux se puede instalar a través del administrador de paquetes:


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

Ejecútelo y vea que el trabajo en el programa es intuitivo)


Total


GPG , -, , . , , .


, GPG .


All Articles