Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Приемы работы в Ubuntu.
Глава 7: Безопасность

Оригинал: "Ubuntu Hacks: Chapter 7 - Security"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: октябрь 2010 г.

Совет # 71: Зашифровываем ваши электронные письма и важные файлы

Лучше перестраховаться и защитить ваши мысли и данные с помощью мощной системы шифрования.

Шифрование является важным инструментом, с которым должны быть знакомы все пользователи Ubuntu. Один из лучших способов шифрования электронной почты и файлов — это использование пакета GPG (GNU Privacy Guard). Как и его вдохновитель - пакет PGP, пакет GPG использует шифрование с открытым ключом. В сущности, каждый пользователь имеет два собственных ключа: закрытый ключ, используемый для расшифровки сообщения, посылаемых пользователю, и открытый ключ, которым пользуются другие для шифрования сообщений, которые они посылаю этому пользователю. Поэтому для того, чтобы эта система работала, люди, которые хотят отправлять зашифрованные сообщения друг-другу, должны обменяться открытыми, а не закрытыми ключами.

После того, как вы настроите и запустите пакет GPG, вы сможете с его помощью делать следующее:

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

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

Подсказка. Графический интерфейс имеется практически для всех команд, что будет подтверждено в этом совете. Для KDE есть отличный инструмент KGpg (из пакета kgpg). Пользователи GNOME должны попробовать приложение Seahorse (из пакета seahorse, которое в меню GNOME указано как Encryption Key Manager — Менеджер ключей шифрования).

Генерируем пару ключей GPG

Создать пару собственных ключей GPG очень просто (если у вас уже есть пара ключей на другом компьютере, то перейдите к следующему разделу):

$ gpg --gen-key

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

1. DSA and ElGamal (default)
2. DSA (sign only)
5. RSA (sign only)

Нажмите клавишу Enter для того, чтобы выбрать вариант 1, используемый по умолчанию, затем вам будет задан вопрос о размере вашего ключа. По умолчанию размер равен 2048, что отлично, так что просто нажмите клавишу Enter, чтобы подтвердить выбор. Затем вам будет задан вопрос о том, в течение какаго времени должен действовать ключ. Значение 0, используемое по умолчанию, означает, что срок действия ключа никогда не истечет, и обычно это хороший вариант в случае, если вы планируете хранить этот ключ и использовать его в будущем. Если же вы хотите использовать ключ в течение ограниченного времени, укажите количество дней, недель, месяцев или лет, в течение которых вы хотите использовать ключ, и нажмите клавишу Enter. После того, как вы проверите введенную продолжительность времени, введите y и снова нажмите клавишу Enter.

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

Теперь о важном: о фразе-пароле для ваших секретных ключей. Как вы можете догадаться, здесь нужно использовать что-то стоящее, а не только password, scooter или 123456. Обратите внимание, что вы можете использовать фразу-пароль (passphrase), а не только пароль (password), так что выберите что-то запоминающееся с пробелами, что для вас памятно. Проблема? Посмотрите по ссылке http://www.securityfocus.com/columnists/245 статью "Pass the Chocolate", которую я написал для SecurityFocus и в которой есть советы по выбору хороших паролей и фраз-паролей. Введите вашу фразу-пароль, затем проверьте, а потом, бах! Пакет GPG начнет генерацию ключей. На экране будут появляться случайные символы и GPG попросит вас поперемещать вашу мышку, понабирать символы на клавиатуре, а также будет активировать работу диска, что поможет улучшить ключ за счет получения случайных данных, которыми он воспользуется. Наконец, GPG завершит создание новых ключей, что можно проверить с помощью следующей команды:

$ gpg --list-keys
/home/scott/.gnupg/pubring.gpg
---------------------------------
pub 1024D/73CA5DE6 2006-03-20
uid                  Scott Granneman (St. Louis, MO) <scott@granneman.com>
sub   2048g/675B19A0 2006-03-20

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

Импорт ключей GPG

Если вы хотите использовать те же самые открытые и закрытые ключи, которые есть на другом компьютере, просто скопируйте их с другого компьютера на новый. Если вы уже создавали какие-либо ключи, примите решение, будете ли вы их переписывать на новый компьютер, поскольку это может быть правильным решением. Я использовал одни и те же ключи в течение многих лет, просто копируя их с машины на машину и этого было достаточно. Ниже показано как с помощью команды scp скопировать ключи со старой машины, имеющей имя eliot.

$ mkdir ~/.gnupg
$ scp eliot :~/.gnupg/* ~/.gnupg

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

$ gpg --import /home/ username /Desktop/pubring.gpg

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

Если ключи вам непосредственно не доступны, но вы знаете, что пользователи, чьи ключи вы хотите импортировать, загрузили их на сервер, вы всегда можете импортировать их оттуда. Например, предположим, вы хотите импортировать мой ключ. Во-первых, вам нужно найти идентификатор моего ключа. С помощью веб-браузера, перейдите по ссылке http://pgp.mit.edu на сервер открытых ключей MIT PGP Public Key Server и найдите там Скотта Граннемана (Scott Granneman). Вы получите три результата, но обратите внимание на один, датированный от 08/08/2004, который выглядит следующим образом:

Type bits /keyID    Date      User ID
pub  1024D/6503F88C 2004/08/08 Scott Granneman <scott@granneman.com>
                             Scott Granneman (www.granneman.com) <scott@granneman.com>

Обратите внимание на идентификатор ключа, который имеет значение 6503F88C. С его помощью вы можете импортировать конкретный ключ с помощью следующей команды:

$ gpg --keyserver pgp.mit.edu --recv-keys 6503F88C
gpg: requesting key 6503F88C from hkp server pgp.mit.edu
gpg: key 6503F88C: public key "Scott Granneman <scott@granneman.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Все оказалось просто, не так ли?

Подписываем ключ GPG

Прежде, чем вы сможете послать кому-нибудь файл или сообщение, зашифрованное с помощью GPG, вам необходимо подписать ключ, который вы собираетесь использовать. Подписывая ключ, проверьте, что он принадлежит соответствующему лицу. В лучшем случае вы должны получать ключ непосредственно от соответствующего лица, возможно, при личной встрече или, возможно, через электронную почту. Если вы знаете, что ключ, который вы только что импортировали, принадлежит Скотту Граннеману (Scott Granneman), вы можете выполнить следующую команду:

$ gpg --sign-key www.granneman.com

В действительности, после параметра --sign-key вы можете указать любые данные, которые однозначно идентифицируют ключ. Я использовал адрес www.granneman.com, поскольку он уникален для ключа, который вы ранее импортировали. Для того, чтобы посмотреть данные, которыми вы пользуетесь, просто запустите команду gpg --list-keys. Например, идентификатор ключа 6503F88C может быть также хорошим вариантом, поскольку он, очевидно, уникален именно для этого ключа.

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

Шифрование файлов с помощью GPG

Вы подписали мой ключ, так что теперь пора отправить мне зашифрованный файл. Откройте ваш любимый текстовый редактор и наберите какое-нибудь сообщение, например, "Can't sleep...clowns will eat me" ("Не могу спать ... клоуны съедят меня"). Сохраните файл на рабочий столе с именем test_encryption и закройте редактор. Введите в вашем терминале следующую команду:

$ gpg -r "Scott Granneman" --encrypt test_encryption
Подсказка. Пожалуйста, не посылайте мне на самом деле файлы, которые вы зашифровали. У этой книги будет по всему миру огромная аудитория читателей и я не смогу отвечать на тестовые сообщения, которые могут быть созданы читателями, а также отвечать на тысячи писем, которые я получаю каждый день. Спасибо!

Теперь на вашем рабочем столе есть новый файл: text_encryption.gpg. Это двоичный файл, который вы можете прикрепить к электронному письму и отправить. Однако, вам не следует создавать двоичные файлы, поскольку их нельзя прикреплять к письмам; но вы можете вместо него сгенерировать текстовое сообщение в формате ASCII, которое подходит для вставки в электронное письмо. Чтобы сделать это, выполните следующую команду:

$ gpg -r "Scott Granneman" --armor --encrypt test_encryption

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

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

hQIOAwcs+U2/zd/NEAf+IR5zIX/ggNxemqkoa4HhCDeEm5hiu1rJivzd7fi504Di
MfeE11Do7p6WMWBi+fzH5FtowwMXi/+OFt6erO65Cb3sVsBDyH01W1NrDLRNPTgN
HC88OJOiWpB16/w65rQXQC9Lgczc8kNsqMCMWUo3tHLBxFNg7d+SW62zgicX2qza
fqHq1Y5ekRPWhmmqkItbYhsXMwz8YE7jq38TP17RBcStiNEKlSAyRrFKMC2L5OI9
VCj2GV6gaKK8nDKFD87hw3V8TN29JHAcPZ5R11wJJNVRv+muDgX+bY8z/9RpTsMs
ALn3ET5J8kzquJg5tctrpXvSN4vBKpvjCH1Y30gDDQgAxRHuNLRo8muBh63N7twc
Gx5VJZlx9AfBYTTWqXPC0VA7O2DSbfgwUdDQS9mL+8ckR1XI921q9ih05IqHG40x
cibPCyg8kXRSK1PUxk4IXiOjbUs62OxMtqMvZtfSzbuOxoNRezrWXO79Q5N2KZVs
HtexYLKm9Wf4RhCQylSwosMojeg4eoTsz+R3MArG8XR/MbI/sLZKGhi3nuwpO3oK
YqaWUhob+U0ZLfCf1l3WPhO7nkJ+6xgcVKIXiycTBYeH6xfN5Gq+WHx546XKJbkB
fTutzRsqUdAr3TED77Pr6zPi8PBZL0f76KXE5KX05zClkwd97vCkIVaQkm4etsGc
4dJwAQ5fhUGqRlmMScO3UbtS3Hh43ZQ8Ndnn+Jpid7D4thZEub9lcpkGw3PLeOco
jRu9smNJHUd8J5ODapAOunqGt0whmpcePbrxEkbL1upigAxqFc9DV7g7pDgJsSLr
i+Bm7tUbhQq2vLpINDeVnzchNQ==
=yBG6
-----END PGP MESSAGE-----

Вы можете прикрепить файл ASCII к электронному письму или скопировать весь текст в буфер и вставить его прямо в письмо.

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

$ gpg -r "Scott Granneman" --armor --sign --encrypt test_encryption

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

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

Расшифровываем файлы с помощью GPG

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

$ gpg --output business_plans.odt --decrypt business_plans.odt.gpg

Если вместо него он прислал мне файл ASCII, я должен использовать следующее:

$ gpg --output business_plans.odt --decrypt business_plans.odt.asc

В любом случае, я должен ввести мою секретную фразу-пароль. После этого, GPG расшифрует файл, записав его мне с именем, который я указал в параметре --output. Без этого параметра GPG отправит результат декодирования в стандартный выходной поток STDOUT, в котором ничего не удастся разобрать, если документ в формате OpenOffice.org.

Конечно, в большинстве хороших программ Linux, используемых для с электронной почты, шифрование GPG включено прямо в их интерфейс. Пакет KMail, используемый по умолчанию в Kubuntu, позволяет легко работать с зашифрованной электронной почтой и вложениями, тогда как в пакете Evolution, используемом по умолчанию в Ubuntu, это не так просто, но, безусловно, выполнимо. В самом деле, нет никаких причин не использовать GPG для шифрования электронной почты и файлов. При полном отсутствии минусов и массе веских причин, а на ум сразу приходят конфиденциальность и безопасность, вы должны сегодня же настроить свое хранилище ключей и начать использовать GPG.

Подсказка. Более подробную информацию о GPG смотрите с помощью команды man gpg, либо зайдите на веб-сайт GnuPG по ссылке http://www.gnupg.org.

Назад Оглавление Вперед