Для Windows – имеется пакет Gpg4Win.
Для Linux-систем – пакет gnupg.
GNU Privacy Guard (GnuPG, GPG) – позволяет шифровать данные между двумя пользователи, например – безопасно пересылать другие RSA-ключи.
После установки – необходимо создать свою пару ключей:
d:>gpg --gen-key gpg (GnuPG) 1.4.13; Copyright (C) 2012 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) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits 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 ... Real name: Test User Email address: [email protected] Comment: You selected this USER-ID: "Test User <[email protected]>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. ... gpg: key 2F1FB48D marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u pub 2048R/2F1FB48D 2015-06-30 Key fingerprint = ED45 2FFE 91D5 1151 D75C D1BE 8214 0153 2F1F B48D uid Test User <[email protected]> sub 2048R/4C28EF58 2015-06-30
Просмотреть список доступных ключей можно с помощью --list-keys
:
d:>gpg --list-keys C:/Users/zia/AppData/Roaming/gnupgpubring.gpg ---------------------------------------------- pub 2048R/88352DB2 2015-04-09 uid Arseny Name <[email protected]> sub 2048R/1F504D77 2015-04-09 pub 4096R/31997DFF 2015-06-29 uid Matthew Name <[email protected]> pub 2048R/2F1FB48D 2015-06-30 uid Test User <[email protected]> sub 2048R/4C28EF58 2015-06-30
Теперь – можно создать публичную часть ключа, которую будем передавать людям:
d:>gpg --output testuserpubkey.gpg --export [email protected]
В таком виде – ключ будет создан в двоичном виде, который нельзя прочитать. Что бы экспортировать его в ASCII виде – используйте опцию --armor
:
d:>gpg -armor --output testuserpubkey.gpg --export [email protected] File `testuserpubkey.gpg' exists. Overwrite? (y/N) y
d:>type testuserpubkey.gpg -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.13 (MingW32) mQENBFWSVokBCADNZV1ZKRnUCZ01CWEaXavWit7mp97/p5Dn9TXH+E6wg3jRFVrz jpB5tgnB5JAL7k/tVQDRvj6GZs6aKwVWVRtLnfLw5PzWIDJjHVaKVTqmvcTgVBUn JjE/0zgSePcd93vqDwTDkljIVaXrw6lgIl8OZuzB7zJkNAuiD45K/rjvqdLqbyaL ... vKPPDiQ95WxH4T3eW9WV2L2xz+/lHK67ZVbk1MFeJsJ2tyjL3IXcZyBNrZzWfcKI K1pOjFpirg+C3IlWQQIvU9JiDY/SOGsG4ou7HBN2ArC1DaT34UoEUnMv9MX+hdJk 0a0EJydKrPiCk+kfIJtN9MD05HRICxcYafrp+ERa =QGgb -----END PGP PUBLIC KEY BLOCK-----
Шифрование файлов
Что бы зашировать файл вашим ключём – используйте --encrypt
(или -e
).
Например – имеется файл с текстом:
d:>type textfile.txt Hi, this is text file
Зашифруем его:
d:>gpg --encrypt --recipient "Test User" textfile.txt
В результате – получаем файл с тем же именем, но расширением .gpg:
d:>dir /b ... textfile.txt textfile.txt.gpg
Что бы сохранить его под другим именем – используйте --output
:
d:>gpg --output "newfile.gpg" --encrypt --recipient "Test User" textfile.txt
d:>dir /b ... newfile.gpg ... textfile.txt textfile.txt.gpg
При попытке прочтения которого – получаем абракадабру:
d:>type newfile.gpg à☺♀♥¶¼<☺L(´X☺²
Что бы расшифровать его – используйте --decrypt
:
d:>gpg --decrypt newfile.gpg You need a passphrase to unlock the secret key for user: "Test User <[email protected]>" 2048-bit RSA key, ID 4C28EF58, created 2015-06-30 (main key ID 2F1FB48D) gpg: encrypted with 2048-bit RSA key, ID 4C28EF58, created 2015-06-30 "Test User <[email protected]>" Hi, this is text file
Что бы зашировать файл для другого пользователя – он вам должен предоставить свою публичную часть ключа.
Например – у меня есть файл mjw-rsa-2015, который является публичной часть ключа коллеги.
Добавляем его в хранилище:
d:Temp555>gpg --import mjw-rsa-2015 gpg: key 31997DFF: public key "Matthew Name <[email protected]>" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
Проверяем:
d:Temp555>gpg --list-keys C:/Users/zia/AppData/Roaming/gnupgpubring.gpg ---------------------------------------------- pub 2048R/88352DB2 2015-04-09 uid Arseny Name <[email protected]> sub 2048R/1F504D77 2015-04-09 pub 2048R/2F1FB48D 2015-06-30 uid Test User <[email protected]> sub 2048R/4C28EF58 2015-06-30 pub 4096R/31997DFF 2015-06-29 uid Matthew Name <[email protected]>
Подписываем ключ другого пользователя:
d:Temp555>gpg --edit-key Matthew Name gpg (GnuPG) 1.4.13; Copyright (C) 2012 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. pub 4096R/31997DFF created: 2015-06-29 expires: never usage: SCE trust: unknown validity: unknown [ unknown] (1). Matthew Name <[email protected]> gpg> fpr pub 4096R/31997DFF 2015-06-29 Matthew Name <[email protected]> Primary key fingerprint: 881B 1FAC 86B4 330E AE25 CF36 02A2 000B 3199 7DFF gpg> sign pub 4096R/31997DFF created: 2015-06-29 expires: never usage: SCE trust: unknown validity: unknown Primary key fingerprint: 881B 1FAC 86B4 330E AE25 CF36 02A2 000B 3199 7DFF Matthew Name <[email protected]> Are you sure that you want to sign this key with your key "Arseny Name <[email protected]>" (88352DB2) Really sign? (y/N) y You need a passphrase to unlock the secret key for user: "Arseny Name <[email protected]>" 2048-bit RSA key, ID 88352DB2, created 2015-04-09 gpg> check uid Matthew Name <[email protected]> sig!3 31997DFF 2015-06-29 [self-signature] sig! 88352DB2 2015-06-30 Arseny Name <[email protected]>
И создаём для него письмо:
d:>gpg --encrypt --output for_matt.gpg --sign --armor --recipient [email protected] textfile.txt You need a passphrase to unlock the secret key for user: "Arseny Name <[email protected]>" 2048-bit RSA key, ID 88352DB2, created 2015-04-09
Опции тут:
--sign
– письмо подписывается вашим приватным ключём, гарантируя, что письмо/файл созданы вами;--armor
– позволяет создать файл в текстовом виде;--recipient
– получатель, который сможет расшировать письмо.
Что бы удалить ключ из хранилища – используйте –delete-keys:
d:>gpg --delete-keys [email protected]
Ссылки по теме
https://www.digitalocean.com
https://www.madboa.com
https://www.gnupg.org