Что такое GPG ?
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
…ну вот и все!