C.4. Gnu Privacy Guard

Чтобы помочь вам защитить свою корреспонденцию от посторонних глаз, в дистрибутив НауЛинукс включено программное средство GnuPG GNU Privacy Guard, устанавливаемое по умолчанию при стандартной установке НауЛинукс. Эта программа также носит название GPG .

GnuPG — это средство обеспечения безопасности соединений и хранения данных, бесплатный полный аналог технологии PGP (Pretty Good Privacy), очень популярного приложения по шифрованию. Используя GnuPG, вы можете зашифровывать ваши данные и корреспонденцию, а также заверять свои письма при помощи технологии цифровой подписи. А еще GnuPG умеет расшифровывать и проверять PGP 5.x.

Поскольку GnuPG совместим с другими стандартами шифрования, ваша переписка будет легко декодирована почтовыми клиентами других операционных систем, таких как Windows и MacOS.

GnuPG использует технологию открытого ключа для обеспечения шифрованного обмена между пользователями. В технологии открытого ключа вы генерируете пару ключей: открытый и закрытый ключи. Вы обмениваетесь своим открытым ключом с вашими корреспондентами или оставляете его на сервере ключей. Свой закрытый ключ не показывайте никому.

Тип шифрования зависит от того, как вы пользуетесь ключами. В симметричном шифровании на обоих концах используется одинаковый ключ, который используется для шифрования/расшифровывания сообщения. В технологии с открытым ключом сосуществуют два типа ключей: открытый и закрытый. Пользователь или организация хранит в строгом секрете свой закрытый ключ и публикует свой открытый ключ. Данные, закодированные открытым ключом, могут быть раскодированы только с помощью закрытого ключа. И наоборот, данные, закодированные закрытым ключом, могут быть раскодированы только с помощью открытого ключа.

[Важно]Важно

Помните, что свой открытый ключ вы можете дать кому угодно, с кем собираетесь вести секретную переписку. Но никогда и никому не давайте свой закрытый ключ!

Криптография — это очень сложная наука и, к сожалению, данное руководство не сможет в подробностях осветить все аспекты шифрования. Мы постараемся рассказать о таком инструменте, как GnuPG, и объяснить, как сделать вашу переписку более защищенной. Если же вы захотите узнать более подробно о GnuPG, PGP и других технологиях шифрования, обратитесь к Разд. C.4.7, Дополнительные ресурсы.

C.4.1. Файл настроек GnuPG

При первом запуске команды GnuPG в вашем домашнем каталоге создастся каталог .gnupg. Если этого не произошло, создайте такой каталог вручную, введя в командной строке

mkdir ~/.gnupg

Начиная с версии 1.2, файл настроек называется .gnupg/gpg.conf, а не .gnupg/options, как было ранее. Если в вашем домашнем каталоге не будет найден файл .gnupg/gpg.conf, будет использоваться файл .gnupg/options. Если все же вы планируете использовать версию 1.2 или выше, рекомендуется изменить название файла при помощи следующей команды:

mv ~/.gnupg/options ~/.gnupg/gpg.conf

Если вы произвели обновление с версии, меньшей чем 1.0.7, вы можете закэшировать вашу подпись в личной базе ключей (keyring), чтобы уменьшить время доступа к вашей личной коллекции ключей. Для этого выполните следующую команду:

gpg --rebuild-keydb-caches

C.4.2. Предупреждающие сообщения

Выполняя команды GnuPG, вы можете увидеть сообщения такого рода:

gpg: Warning: using insecure memory!

Это сообщение появляется, поскольку обычный пользователь не имеет права на блокировку страниц памяти. В противном случае было бы возможно проведение DoS (Denial of Service) атак, вызывающих недостаток памяти. Это может быть серьезной дырой в безопасности системы. За деталями рекомендуется обратиться к http://www.gnupg.org/(en)/documentation/faqs.html#q6.1.

Вы также можете увидеть такое сообщение:

gpg: WARNING: unsafe permissions on configuration 
file "/home/username/.gnupg/gpg.conf"

Это сообщение появляется, если другие пользователи могут читать ваши файлы настроек. Получив такое сообщение, выполните следующую команду для изменения прав доступа:

chmod 600 ~/.gnupg/gpg.conf

Другое распространенное сообщение:

gpg: WARNING: unsafe enclosing directory permissions on configuration 
file "/home/username/.gnupg/gpg.conf"

говорит о доступности на чтение другими пользователями каталога с файлами настроек. Если появилось такое сообщение, выполните:

chmod 700 ~/.gnupg

Если вы обновляли пакет GnuPG, вы можете увидеть следующее:


gpg: /home/username/.gnupg/gpg.conf:82: deprecated option 
"honor-http-proxy"gpg: please use "keyserver-options honor-http-proxy"
instead

Сообщение появляется, потому что файл ~/.gnupg/gpg.conf содержит такую строку:

honor-http-proxy

Начиная с версии 1.0.7 синтаксис был изменен, поэтому замените ее на следующую строку:

keyserver-options honor-http-proxy

C.4.3. Генерация ключевых пар

Прежде чем начать использовать GnuPG, необходимо сгенерировать ключевые пары: открытый и закрытый ключи.

Для этого введите следующую команду:

gpg --gen-key

Впоследствии вы будете работать под вашим пользовательским именем, поэтому необходимо выполнить это действие, находясь в вашей пользовательской сессии (не от имени пользователя root).

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

gpg (GnuPG) 1.2.6; Copyright (C) 2004 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.

Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection?

На большей части экранов, которые вы увидите, будет предложено выбрать какие-либо опции, также вы увидите предлагаемое системой значение по умолчанию, указанное в скобках. Для выбора значения по умолчанию достаточно нажать на [Enter].

На первом экране выбирайте значение по умолчанию: (1) DSA and ElGamal. Это значение позволит вам создать цифровую подпись и зашифровывать (расшифровывать) данные, используя эти две технологии. Введите 1 и нажмите [Enter].

Затем выберите длину ключа. Чем больше длина ключа, тем больше времени необходимо на его взламывание. Значение по умолчанию 1024 бит, и этого вполне достаточно для большинства ситуаций, поэтому можете смело нажать [Enter].

Следующий параметр определяет время жизни вашего ключа. По умолчанию 0 = без ограничения срока действия (0 = key does not expire). Если вы решили выбрать дату окончания действия ключа, учтите, что тот кому вы выслали открытый ключ, будет уведомлен об окончании срока действия ключа, и должен быть снабжен новым. Если вы не хотите менять значение по умолчанию, подтвердите свое решение нажатием на [y].

На следующем шаге для обеспечения пользовательского идентификатора вы вводите краткую информацию о себе: имя, электронный адрес и другие данные. В заключение будет показана вся введенная вами информация.

Если вы принимаете выбранные параметры, следует ввести секретную парольную фразу.

[Подсказка]Подсказка

Как и при выборе пароля, хорошо выбранная парольная фраза обеспечивает более высокий уровень секретности. Например, смесь прописных и строчных букв, использование цифр или других знаков.

После ввода парольной фразы произойдет генерация ключей, и вы увидите примерно такой экран:


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

Ключи будут созданы и размещены в каталоге .gnupg в вашем домашнем каталоге. Для просмотра ключей введите команду:

gpg --list-keys

Вы увидите примерно следующее:

/home/username/.gnupg/pubring.gpg
-----------------------------------------
pub  1024D/7ADAD979 2006-03-14 Your Name
<you@example.com>
sub  1024g/BBD484H1 2006-03-14

Если вы создавали ключи GnuPG версии 1.0.6 или ниже, экспортировали ключи из старой системы, а потом импортировали их в новую, нужно сделать так, чтобы новая система (версии 1.0.7 и выше) смогла доверять старым ключам. Для этого введите команду (заменив <user-id>):

gpg --edit-key <user-id>

В приглашении Command> введите trust и выберите 5 = I trust ultimately, чтобы довериться вашим ключам.

C.4.4. Создание сертификата отзыва

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

[Замечание]Замечание

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

Для тех, кто читает вашу корреспонденцию, ваша подпись будет действительной до тех пор, пока вы не воспользуетесь функцией «отзыва». Для генерации такого рода сертификата воспользуйтесь опцией --gen-revoke:

gpg --output revoke.asc --gen-revoke  you@example.com

Обратите внимание, что если вы опустите опцию --output revoke.asc, ваш новый сертификат будет послан в стандартный поток вывода, а это по умолчанию ваш монитор. Потом вам придется скопировать полученный сертификат с экрана и записать его с помощью любого текстового редактора в файл. Все же значительно проще воспользоваться вышеописанной опцией. После получения сертификата вам необходимо сохранить его в надежном месте, например на дискете или компакт-диске.

Примерный экран работы программы генерации сертификата:

sec  1024D/975D25A9 2006-03-16  Your Name <you@example.com>
Create a revocation certificate for this key?

Нажмите [Y], чтобы создать сертификат отзыва для приведенного ключа, после этого вас попросят ввести описание причины, по которой вам потребовалась генерация сертификата, далее введите парольную фразу.

Созданный вами сертификат отзыва (revoke.asc) будет помещен в ваш домашний каталог. Вы должны скопировать сертификат на дискету и хранить ее в безопасном месте. Если вы не знаете, как скопировать файл на дискету или компакт-диск, обратитесь к Гл. 11, Сменные устройства и накопители.

C.4.5. Экспорт вашего открытого ключа

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

После экспорта вы можете разместить ваш открытый ключ на веб-сервере или вставить его в почтовое сообщение. Для экспорта ключа введите:

gpg --armor --export you@example.com > mykey.asc

Вы ничего не увидите на экране, потому что сделали не только экспорт ключа, но и запись его в файл mykey.asc. (Если бы вы не указали в команде > mykey.asc, ваш открытый ключ был бы выведен на экран.)

Теперь файл mykey.asc может быть легко вставлен в сообщение или размещен на сервере ключей. Для того чтобы увидеть ваш ключ, введите less mykey.asc (для выхода введите [q]). Вы увидите примерно следующее:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org
	
mQGiBDkHP3URBACkWGsYh43pkXU9wj/X1G67K8/DSrl85r7dNtHNfLL/ewil10k2
q8saWJn26QZPsDVqdUJMOdHfJ6kQTAt9NzQbgcVrxLYNfgeBsvkHF/POtnYcZRgL
tZ6syBBWs8JB4xt5V09iJSGAMPUQE8Jpdn2aRXPApdoDw179LM8Rq6r+gwCg5ZZa
pGNlkgFu24WM5wC1zg4QTbMD/3MJCSxfL99Ek5HXcB3yhj+o0LmIrGAVBgoWdrRd
BIGjQQFhV1NSwC8YhN/4nGHWpaTxgEtnb4CI1wI/G3DK9olYMyRJinkGJ6XYfP3b
cCQmqATDF5ugIAmdditnw7deXqn/eavaMxRXJM/RQSgJJyVpbAO2OqKe6L6Inb5H
kjcZA/9obTm499dDMRQ/CNR92fA5pr0zriy/ziLUow+cqI59nt+bEb9nY1mfmUN6
SW0jCH+pIQH5lerV+EookyOyq3ocUdjeRYF/d2jl9xmeSyL2H3tDvnuE6vgqFU/N
sdvby4B2Iku7S/h06W6GPQAe+pzdyX9vS+Pnf8osu7W3j60WprQkUGF1bCBHYWxs
YWdoZXIgPHBhdWxnYWxsQHJlZGhhdC5jb20+iFYEExECABYFAjkHP3UECwoEAwMV
AwIDFgIBAheAAAoJEJECmvGCPSWpMjQAoNF2zvRgdR/8or9pBhu95zeSnkb7AKCm
/uXVS0a5KoN7J61/1vEwx11poLkBDQQ5Bz+MEAQA8ztcWRJjW8cHCgLaE402jyqQ
37gDT/n4VS66nU+YItzDFScVmgMuFRzhibLblfO9TpZzxEbSF3T6p9hLLnHCQ1bD
HRsKfh0eJYMMqB3+HyUpNeqCMEEd9AnWD9P4rQtO7Pes38sV0lX0OSvsTyMG9wEB
vSNZk+Rl+phA55r1s8cAAwUEAJjqazvk0bgFrw1OPG9m7fEeDlvPSV6HSA0fvz4w
c7ckfpuxg/URQNf3TJA00Acprk8Gg8J2CtebAyR/sP5IsrK5l1luGdk+l0M85FpT
/cen2OdJtToAF/6fGnIkeCeP1O5aWTbDgdAUHBRykpdWU3GJ7NS6923fVg5khQWg
uwrAiEYEGBECAAYFAjkHP4wACgkQkQKa8YI9JamliwCfXox/HjlorMKnQRJkeBcZ
iLyPH1QAoI33Ft/0HBqLtqdtP4vWYQRbibjW
=BMEc
-----END PGP PUBLIC KEY BLOCK-----

C.4.5.1. Размещение ключа на сервере ключей

Если вы переписываетесь только с несколькими корреспондентами, вы можете послать им ваш открытый ключ лично, если вы общаетесь с большим количеством людей, вы можете потерять массу времени только на рассылку ключа, но выход есть — необходимо разместить ключ на сервере ключей.

Сервер ключей представляет собой размещенное в Интернете хранилище, в котором хранятся и через которое распространяются ключи. Многие серверы являются общедоступными, некоторые синхронизированы между собой, таким образом, нет необходимости размещать ключ на всех известных вам серверах, достаточно отослать его на один, а он уже распространит его по другим серверам. Любой человек может обратиться к серверу ключей за вашим открытым ключом, потом он импортирует ваш ключ к себе в систему, и вы сможете обмениваться шифрованными сообщениями.

[Подсказка]Подсказка

Можно отослать ваш ключ только на один из серверов ключей. Так как между серверами настроена синхронизация, ваш ключ будет распространен и на все другие серверы ключей. За более подробной информацией о серверах ключей обратитесь к Keyserver, доступному на http://www.keyserver.net/.

Вы можете отослать ваш открытый ключ как из командной строки, так и из браузера. При этом у вас должен быть активирован доступ в Интернет.

  • Для отсылки ключа из командной строки введите:

    gpg --keyserver search.keyserver.net --send-key you@example.com
    
  • Для отсылки ключа из браузера зайдите на Keyserver (http://www.keyserver.net/) и выберите опцию по добавлению вашего собственного открытого PGP-ключа.

    На следующем шаге необходимо скопировать и вставить ваш ключ в соответствующую область на веб-странице. Далее следуют инструкции, как это сделать:

    • Откройте файл с вашим экспортированным открытым ключом (например, mykey.asc, который был получен нами на предыдущем этапе в Разд. C.4.5, Экспорт вашего открытого ключа), воспользовавшись, например, командой less mykey.asc.

    • Используя мышь, скопируйте строки, начиная с BEGIN PGP и заканчивая END PGP (см. Рис. C.3).

    • Вставьте только что вырезанный фрагмент файла mykey.asc в соответствующую область веб-страницы сервера Keyserver. Далее нажмите на кнопку Submit. (Если вы допустили ошибку, нажмите на кнопку Reset, чтобы стереть только что вставленный ключ.)

Вставка вашего открытого ключа

Рисунок C.3. Вставка вашего открытого ключа

Обратите внимание, что если вы выбрали другой сервер для размещения ключа, то, скорее всего, процедура будет аналогичной.

Вот и все, что вам было необходимо сделать. Независимо от того, чем вы пользовались при размещении ключа на сервере (командной строкой или браузером), вы увидите сообщение о том, что ваш ключ успешно размещен на сервере ключей. После этого ваши друзья могут получить ваш ключ и импортировать его себе в систему.

C.4.6. Импорт открытого ключа

Другая сторона процедуры обмена ключами — это импорт чужих открытых ключей в систему. Эта процедура аналогична экспорту ключа. Как только вы импортируете чужие открытые ключи, у вас появится возможность расшифровывать письма оппонентов и проверять их подлинность.

Один из самых простых способов импорта ключей — это скачивание их с веб-сайтов.

После того как вы скачали ключ и сохранили его в файл key.asc, воспользуйтесь следующей командой для добавления ключа в хранилище ключей (keyring):

gpg --import key.asc

Другой путь сохранить ключ — скопировать его из окна браузера при помощи мыши и поместить в файл. Далее вы можете импортировать ключ в хранилище, но не забудьте название файла, куда вы сохранили ключ. Например, если вы сохранили ключ в файл newkey.txt, для импорта ключа наберите в командной строке следующее:

gpg --import newkey.txt

Результат команды будет выглядеть примерно так:

gpg: key F78FFE84: public key imported
gpg: Total number processed: 1
gpg:               imported: 1

Теперь, чтобы убедиться, что процесс импорта прошел удачно, введите gpg --list-keys. Вы должны увидеть только что импортированный ключ в хранилище ключей.

Когда вы импортируете открытый ключ, вы добавляете его в хранилище — специальный файл, где хранятся открытые и закрытые ключи. Теперь, получив документ или файл, вы можете проверить его достоверность с помощью одного из ключей хранилища.

C.4.7. Дополнительные ресурсы

Не так много мы смогли написать о криптотехнологиях в этой главе о GnuPG, слишком много осталось за рамками этого повествования, для более подробного знакомства обратитесь к следующим ресурсам.

C.4.7.1. Установленная документация

man gpg и info gpg — краткий справочник команд и опций GnuPG.

C.4.7.2. Полезные ссылки

  • http://www.gnupg.org/ — Страничка проекта GnuPG с самыми свежими версиями, полное руководство пользователя GnuPG и другие материалы по криптографии.

  • http://hotwired.lycos.com/webmonkey/backend/security/tutorials/tutorial1.html — Познакомьтесь с Encryption Tutorial от Webmonkey, чтобы узнать больше о криптографии и возможностях криптографических методов.

  • http://www.eff.org/pub/Privacy/ — The Electronic Frontier Foundation, архив «Privacy, Security, Crypto, & Surveillance».

C.4.7.3. Полезные книги

  • The Official PGP User's Guide by Philip R. Zimmerman; MIT Press.

  • PGP: Pretty Good Privacy by Simson Garfinkel; O'Reilly & Associates, Inc.

  • E-Mail Security: How to Keep Your Electronic Messages Private by Bruce Schneier; John Wiley & Sons.