GPG (Gnu Privacy Guard)

Yuriy O.

Что такое GPG ?

logo-gnupg-light-purple-bg

GNU Privacy Guard, GnuPG, GPG — свободная альтернатива набору криптографического ПО PGP, выпущенная под лицензией General Public License. Является частью проекта GNU, получила гранты от Германского правительства. GnuPG полностью совместим со стандартом IETF OpenPGP. Текущие версии GnuPG могут взаимодействовать с PGP и другими OpenPGP-совместимыми системами в режиме совместимости. GnuPG позволяет шифровать и подписывать данные в целях безопасного хранения и передачи информации.

И на этом хватит…

Далее я Вам хочу рассказать о задачах, которые мы можем выполнить с помощью GPG.

Итак, пропишем gpg --help

И мы видим список команд:

Команды:

-s, --sign [file]             создать подпись к файлу
     --clearsign [file]        создать прозрачную подпись к файлу
-b, --detach-sign             создать отделенную подпись
-e, --encrypt                 зашифровать данные
-c, --symmetric               зашифровать только симметричным шифром
-d, --decrypt                 расшифровать данные (по умолчанию)
     --verify                  проверить подпись
     --list-keys               вывести список ключей
     --list-sigs               вывести список ключей и подписей
     --check-sigs              вывести и проверить подписи ключей
     --fingerprint             вывести список ключей и их отпечатков
-K, --list-secret-keys        вывести список секретных ключей
     --gen-key                 создать новую пару ключей
     --delete-keys             удалить ключи из таблицы открытых ключей
     --delete-secret-keys      удалить ключи из таблицы закрытых ключей
     --sign-key                подписать ключ
     --lsign-key               подписать ключ локально
     --edit-key                подписать или редактировать ключ
     --gen-revoke              создать сертификат отзыва
     --export                  экспортировать ключи
     --send-keys               экспортировать ключи на сервер ключей
     --recv-keys               импортировать ключи с сервера ключей
     --search-keys             искать ключи на сервере ключей
     --refresh-keys            обновить все ключи с сервера ключей
     --import                  импортировать/объединить ключи
     --card-status             показать состояние карты
     --card-edit               изменить данные на карте
     --change-pin              сменить PIN карты
     --update-trustdb          обновить таблицу доверий
     --print-md algo [files]   вывести хэши файлов

Параметры:

-a, --armor                   вывод в ASCII формате
-r, --recipient NAME          зашифровать для получателя NAME
-u, --local-user              использовать данный User ID для подписывания и ра
сшифрования
-z N                          установить уровень сжатия N (по умолчанию - 0)
     --textmode                использовать канонический текстовый режим
-o, --output                  вывод в указанный файл
-v, --verbose                 подробно
-n, --dry-run                 не делать никаких изменений
-i, --interactive             спросить перед перезаписью
     --openpgp                 строго следовать стандарту OpenPGP
     --pgp2                    создает сообщение совместимым с PGP 2.x

(См. документацию для более полного ознакомления с командами и параметрами)

Примеры:

-se -r Bob [файл]          подписать и зашифровать для получателя Bob
--clearsign [файл]         создать прозрачную подпись
--detach-sign [файл]       создать отделенную подпись
--list-keys [имена]        показать ключи
--fingerprint [имена]      показать отпечатки

О найденных ошибка сообщайте gnupg-bugs@gnu.org.

 

итак, начнем…

1) Установим GNU Privacy Guard.

2) Создаем пару ключей (секретный и открытый). Для этого в консоли вводят команду gpg --gen-key, после чего необходимо выбрать тип используемой цифровой подписи, размер ключа, период действия ключа.

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Выберите тип ключа:
   (1) DSA и ElGamal (по умолчанию)
   (2) DSA (только для подписи)
   (5) RSA (только для подписи)
Ваш выбор (?-подробнее)? ?
Выберите алгоритм.

DSA (aka DSS) - Digital Signature Algorithm может использоваться
только для подписей.

Elgamal - алгоритм используемый только для шифрования.

RSA может использоваться и для подписи, и для шифрования.

Первый (главный) ключ всегда должен быть подписывающим.
Ваш выбор (?-подробнее)?
Пара ключей DSA будет иметь длину 1024 бит.
ключи ELG-E могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)
Запрашиваемый размер ключа 2048 бит
Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет
Ключ действителен до? (0)
Ключ не имеет ограничения срока действительности
Все верно? (y/N) Y

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя: dukeinvisible
Email-адрес: dukeinvisible@live.ru
Комментарий: testkey
Вы выбрали следующий User ID:
    "dukeinvisible (testkey) <dukeinvisible@live.ru>"

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? O
Для защиты секретного ключа необходим пароль.

Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
+++++.+++++++++++++++++++++++++.++++++++++.++++++++++.++++++++++..++++++++++++++
+.++++++++++.++++++++++++++++++++.+++++++++++++++++++++++++>++++++++++..>+++++..
.............................................................................+++
++
Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
++++++++++++++++++++++++++++++.++++++++++++++++++++...++++++++++++++++++++....++
++++++++.+++++++++++++++.+++++++++++++++.++++++++++.+++++++++++++++++++++++++>++
++++++++>.+++++.............................................<+++++..............
.............>+++++....+++++^^^
gpg: ключ BB8B51F6 помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   1  подписанных:   0  доверия: 0-, 0q, 0n, 0m, 0f,
1u
pub   1024D/BB8B51F6 2010-03-15
Отпечаток ключа = 0498 6E05 1C1F 27FC 7E63  4B6B 4661 CAE1 BB8B 51F6
uid                  dukeinvisible (testkey) <dukeinvisible@live.ru>
sub   2048g/13C2CCCE 2010-03-15

3) Можно и позднее при необходимости просмотреть hash всех известных ключей: c:pgp>gpg --fingerprint

 

C:/Users/▐Ёшщ/AppData/Roaming/gnupgpubring.gpg
-----------------------------------------------
pub   1024D/BB8B51F6 2010-03-15
Отпечаток ключа = 0498 6E05 1C1F 27FC 7E63  4B6B 4661 CAE1 BB8B 51F6
uid                  dukeinvisible (testkey) <dukeinvisible@live.ru>
sub   2048g/13C2CCCE 2010-03-15

4) Рассмотрим варианты цифровой подписи в GnuPG.

Сначала произведем шифрование без ЦП. Используем текстовый файл 11.txt, содержимое которого:

Появление шифров

Ряд систем шифрования дошел до нас из глубокой древности. Скорее всего они появились одновременно с письменностью в 4 тысячелетии до нашей эры. Методы секретной переписки были изобретены независимо во многих древних обществах, таких как Египет, Шумер и Китай, но детальное состояние криптологии в них неизвестно. Криптограммы выискиваются даже в древние времена, хотя из-за применяемого в древнем мире идеографического письма в виде стилизованных картинок были примитивны. Шумеры, по-видимому, пользовались тайнописью. Археологами найдены глиняные клинописные таблички, где первая запись замазывалась слоем глины, на котором делалась вторая запись. Происхождение таких странных таблиц могло быть вызвано и тайнописью, и утилизацией. Оттого что число знаков идеографического письма было более тысячи, то запоминание их представляло собой трудную задачу - тут не до шифрования.

Применим команду:

c:pgp>gpg -s c:g11.txt

В результате выполнения команды будет создан файл 11.gpg, содержимле которого:

 

ЈeTї‹$E^пБЃ



ѓK^b63Ьy‚€Ѓ‰Ѓ(‚Ў`&№Ѓ‘€j&|к?`Ё‘Бq‡pЉzЮ‰‡‘ФФф»~УХх¦ЄzзfЦ^·эЄgv]4˜йккчг{ЯыЮыјёёwбТ»7>xрннѓЈЗѕЮїюцWЇNЮ?xееЗ‹»Ъ[З^˜6rФЈbфk_R”˜ёЩ]/=•єa‡т&’T4wнLk]PШzЌI¦DчjМЕИFћ+©Z"Ѓ8‰З¤ҐWёaп•"-q7њc:>!KПҐ.цkvњDЉ2!Х†D‡±в¤eG№њ<2У’

#N-D4л~HҐ3|fЯ#П•±ҐQІJЌЧ№¬pсФЩЗdНjLЙФёЁMMЯПeЙiLґ[1]Љ­%™Е˜Ђ˜JNЖ{e@ hн3kTY&uЌмђ‰<KeЭл!‹y0MУ‘н2kNR

Ґж!N[Lщ<рcЖD+M}®fR™bґ‚лћ«gи5а&%з

‡ІжX6

»f°µшZЊР­nРKЯamBЇх)o9ѓ$±>3=TЯДR'рM;uЗ9ВРMРв5g9™ТН°вLЃi

-[” ­тЯыЋ©Ж!вЊ’™9YЧ2¦yЙ№}ЦфT™ЏЖTВјD§(/ЏBjMґЃ.ШmM,.Ој§t7ЁД•>,5o[SШЦ;д} ѕыsпЛWџєьЧеЯ?|нгg>»уЮП'/^7п<Шывщ+Я¬цЯьaя“ЮєсЖэЏћькхЫOя


Создание файла, содержимое которого не изменяется, а ЦП дописывается в конце в виде дополнительной строки.

c:pgp>gpg -s --clearsign c:g11.txt

Создается файл с расширением *.asc. Его содержимое:

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1

Появление шифров

Ряд систем шифрования дошел до нас из глубокой древности. Скорее всего они появились одновременно с письменностью в 4 тысячелетии до нашей эры. Методы секретной переписки были изобретены независимо во многих древних обществах, таких как Египет, Шумер и Китай, но детальное состояние криптологии в них неизвестно. Криптограммы выискиваются даже в древние времена, хотя из-за применяемого в древнем мире идеографического письма в виде стилизованных картинок были примитивны. Шумеры, по-видимому, пользовались тайнописью. Археологами найдены глиняные клинописные таблички, где первая запись замазывалась слоем глины, на котором делалась вторая запись. Происхождение таких странных таблиц могло быть вызвано и тайнописью, и утилизацией. Оттого что число знаков идеографического письма было более тысячи, то запоминание их представляло собой трудную задачу - тут не до шифрования.

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.2.2 (MingW32)

iD8DBQFIRARpbZ1+1rbDdPkRAjiCAJ9vgHTmBCnA++XyEuThte6bdGxl1ACggLbz

9Bpe5jGCBBZkpKIMKOpBVzQ=

=shGW

-----END PGP SIGNATURE-----

Создадим файл с обычной ЦП, но сжатый относительно исходного txt-файла. Кроме того, применяемое преобразование Radix-64 позволит представить любое содержимое создаваемого файла в виде букв. Такой файл имеет расширение *.asc. Команда

c:pgp>gpg -sa c:g11.txt

Содержимое файла:

-----BEGIN PGP MESSAGE-----

Version: GnuPG v1.2.2 (MingW32)

owFlVD2PHEUQPe4woJUmsCySSyiJdHeFMTkJgSHjH1gEJEB2EiQgMjsBITnFARkJ

KSmWLSwLIQ6DhAh7e6c8ddPTtd09t949zfmG17N7xwmC3enpqY9Xr17VN8Xezu7V

T+598dePDw9OXvjhyt0PXrp+fXrw2cHNd1787lB769gL01qOg9piVIx+70uKEhM3

20vjpadS1+zwT95Ekormrp1prUdUBrZeY5Ip0ZNaA3MxspHnSuqFFkggTuIpaenV

Bm7Ye6VIC9wN55hOz8jSW0Spi/2KHSeRYoRMSLXmI6LnoUPsXzlp2RFFrgMnj8y0

4MCIUwsRzTqXH1LpDJ/Zd8XIc2WsRGmUrFLjdS7LDVw8dXbCMVmzHFMyNS5qU9PP

c1lwGtPfbcOBgOIXSeZoTEBMJSfjTr0yIAC09pk1qoMskjqERnYLyIhEnqWyiO51

ihCDxTyYpunIdhmuNWcpglLzlAenDaZ8HvgxY6Klpj5XM6lMMVoEwXXPjYLVCwf0

hxoJcJOSc4JjWXGsB5uBXTPYWnwtRuiPAzfope+AsDYhidf6nLecQZJYn5kequ8A

YqETeIO/ph0DhbrTHGHoJmjxmrOcTel+WHKmwDSClh2VIB/yEN/7jqnGIRviXIyS

jAIavEHbnYEJvYyVnhAFU1mIK6M+Rpb0X5mCi0vLgAJXtVK7CHmp5FZP6cGF4iND

p/BGLOOOgTvlsUFT35w0lxfIZlPl9YHtsW3LZisRtlZ+u/EGbdsJlI8bDDt6gIvV

RuARWjFZtVTZth4IgagwsJ4HLeLDuQHmJ+YNgGH/E6hPBgVuBYESmtZJ5gNJz5nY

ro1BQdntztt7V3byPj7f01d3H5ude6/tXXv5809f/fruo9vv7b/y1eu7H+3f2vm2

uPnwzvvP/bUv353d/vDjw+/3f7r16B8=

=cAvw

-----END PGP MESSAGE-----

Создадим отдельный файл с ЦП.

c:pgp>gpg -b c:g11.txt

Будет создан файл 11.sig. Его содержимое –отдельная ЦП:

€?



HD8mќ~Ц¶Гtщ[1]-  •д<•я~V2–ЩТ«ЌЕ'·ЗсС{ џћ!;ж­сДЧ|/wc+–чяЭ

5) Можно подсчитать hash передаваемого сообщения

c:pgp>gpg --print-md sha1 c:g11.txt

c:g11.txt: 4F7D 16A8 2062 F7F2 4A51 7AD5 F41F 8EA8 3DB4 CB06

6) Зашифровка файла для пользователя

c:pgp>gpg -r dukeinvisible -f c:g11.txt

Расшифровка файла для пользователя и перенаправление в файл:

c:pgp>gpg -r dukeinvisible -d c:g11.gpg > c:g111.gpg

В полученном файле будет содержаться открытый текст сообщения

7) Просмотрим все существующие секретные ключи

c:pgp>gpg --list-secret-keys

C:/GnuPGsecring.gpg

--------------------

sec 1024D/B6C374F9 2008-06-02 dukeinvisible (imaginary) dukeinvisible@live.ru

ssb 1024g/4468FD32 2008-06-02

 

8) Необходимо обменяться открытыми ключами с другими пользователями. Для этого сохраним (экспортируем) открытый ключ в файл .gpg и передадим по сети.

c:pgp>gpg --export dukeinvisible >C:gKeyN.gpg

Содержимое файла KeyN.gpg

™ў



HCюф

У°8~©—Ў(Ч&іЛjКUWМЩЙ.ЩP№Ёџ'3`єsћ<}3щDкЎ07$5 yaы„µ8h Њ

·cћi8ИЗ.HлЅ®ѕ±Ѕ7wdЧФ

‘ЉяGЮc4>‚ "ё}ЊVџ].iЌ5ьЅ}{џЯ?FбL=aХ!"ЙW˜Сd·ч

ҐЗE°®C^ц†!TЁБr˜•

ю8џеXЂ

I&ІPд‹—˜Ф}Ѓ+ј}(‰г

“?4ЊгхЩЬ` 0’о9±п:NУOєиў+PБ©И µЬїf яgЁВІвr!hEПЬ¶цЅ*

RБюcіђ–Пщ¬Q»d‑а2ґЩ€ 9НЌZФіГSВ‹2ёЕ‰`е№:

њ~›маЧКЯоiTeјK…C

g(а–;$oЙSЉэжјoв.]ѕ@X8Ч‘b_ёО¬”д 'ЈФ’ҐБIџ#:[1]Гcoя‡"џeг<є]ч«F¦<“вЫ;bwpЛ±ыІa —€&КЛ"Б±}Џ~оJZџ*ЕtJ‚SZ …ґ,Natalka (imaginary) <firefox2006@bigmir.net>€[

[1] [1]HCюф

[1]

[1]


[1][1]‑[1]Ђ mќ~Ц¶ГtщДd ћ"?*шa—{ѓJяЭ'k_Ѕtl џPТЂидMэИg%f¤еЌ±E#№

HCюх

ПЖФбПвRфB4ШГkј!јn}uЙ5„ЏNЁј!™Y~КA–ЉчkHЖа"Бм;ї$На№нDґ~"ЫOЮe›_н.­бґ;я–=6»2(Фэч©а­‡eхжСёl¶QuH+€—ЋOn*aRtіЛ&‑‰6яхoю5Zќaї#


ю!ЦO8[1]>Т?рзЦыµЙ“#Юоо$smЧ 8!TEC*IЙ¤<*Е†¶WОылhРrIT&Б­!=b+@¤?ЪЩ$р©Ж¶јQэV…§3ТVЛ˜>ICЋ[щiв#7®ді8тJ‹ОS}лmьа'Є0иu’,QеK·Ца€F

[1] [1]HCюх mќ~Ц¶Гtщ•Р Ј^Вы™Лщч<3±Ё‰{<Ы" ™К3ДхюBТЧ$-·!фвн

Полученный ключ другого пользователя необходимо импортировать для дальнейшего использования

c:pgp>gpg --import C:gDoker

key A9A36E06: public key "Doker(white) <anna051@mail.ru>" imported

Total number processed: 1

imported: 1

Ключ добавлен в общий список открытых ключей

c:pgp>gpg --list-keys

C:/GnuPGpubring.gpg

----------------

1024D/B6C374F9 2008-06-02 dukeinvisible(imaginary) dukeinvisible@live.ru

1024g/1DC1D965 2008-06-02

1024D/A9A36E06 2008-06-02 Doker(white) <anna051@mail.ru>

1024g/A76FB94D 2008-06-02

Теперь возможно шифрования и подписывания файла для пользователя Doker. Для этого будет использоваться открытый ключ пользователя. Для расшифровки же пользователь применит свой секретный ключ.

Осуществим подписывание и шифрование для пользователя Anna:

c:pgp>gpg -se -r Anna c:g11.txt

Для расшифровки пользователь должен применить команду

c:pgp>gpg -d c:g11.gpg > c:gfile.txt

 

…ну вот и все!

Написать комментарий