На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Мир Linux » Программы и Работа в Linux

Использование GnuPG - часть 2

Создание сети доверия.

«Сеть доверия» (Web of trust) – это сложный термин, нуждающийся в обьяснении. Основа сети доверия – в том, что люди обмениваются подписями открытых ключей с теми, кому они доверяют. Главная идея – ключ автоматически считается достоверным, если выполняются 2 условия:

1) Он подписан достаточным количеством ключей, то есть:
– Либо вы сами подписали его,
– Либо он подписан одним из полностью достоверных ключей,
– Либо он подписан тремя частично достоверными ключами.
2) Количество подписанных ключей в цепочке от этого ключа до вашего ключа – 5 или меньше.

Последнее условие нуждается в обьяснении. Например, вы подписали ключ Joe. Joe подписывает ключ для Bob. Bob подписывает ключ для Jim. Jim подписывает ключ для Barb. Barb подписывает ключ для Pat. Pat подписывает ключ для Cathy. Даже если вы считаете все ключи этой цепочки полностью достоверными, то ключ Cathy нельзя считать достоверным, потому что он находится на 6 шаге цепочки ключей (Joe – шаг 1, Bob – шаг 2, Jim – шаг 3, Barb – шаг 4, Pat – шаг 5, и Cathy – шаг 6).

Скорее всего, вы уже запутались во всем этом. В эту концепцию можно особо не вникать, главное – это то, что она проверена и работает. Теперь вам нужно научиться присваивать ключам уровни достоверности и подписывать ключи.

Чтобы отредактировать уровень достоверности ключа, вам нужно отредактировать этот ключ. Используйте команду «trust», когда вы находитесь в режиме редактирования. Установка уровня достоверности ключа – важная возможность GPG, и при ее использовании вы должны понимать смысл того, что вы делаете. Существует 4 уровня достоверности:

1) Don't know – Не знаю (вы не знаете ничего о владельце этого ключа).
2) I do NOT trust – Я не доверяю (вы не доверяете этому человеку).
3) I trust marginally – Я доверяю частично (вы знаете этого человека, доверяете ему, но не уверены в том, что ключ принадлежит ему).
4) I trust fully – Я доверяю полностью (вы знаете этого человека и персонально удостоверились в том, что ключ принадлежит ему).

Некоторые люди могут подумать, что все эти правила слишком параноидальны, и это – хорошо. Основа сети доверия – в том, что если вы начнете подписывать ключи, насчет которых вы не очень уверены, то это может повлиять не только на вашу безопасность, но и на безопасность других людей, которые вам доверяют. Итак – как можно удостовериться в том, что ключ принадлежит именно тому человеку? Рекомендуется делать ключ полностью достоверным только тогда, когда вы с владельцем этого ключа персонально обменяетесь копиями ваших ключей на твердых носителях (на дискетах или CD), проверите его идентификатор и удостоверитесь, что это – именно тот человек (если вы не знаете его, то вы можете потребовать какие-нибудь документы). Если все эти условия кажутся вам излишними, то вы можете проверить ключ любым другим образом, но – помните, что от вас зависит надежность вашей сети доверия.

Когда вы уже решили, какой уровень достоверности вы присвоите ключу, выберите этот уровень с помощью команды trust. Теперь ключ будет иметь новый уровень достоверности (новый ключ всегда имеет уровень достоверности «-» или «q»). Уровням достоверности соответствуют следующие буквы: «q» – неизвестный, «n» – нет доверия, «m» – частичное доверие, и «f» – полное доверие.

Чтобы подписать ключ (вы должны делать это только тогда, когда вы полностью доверяете владельцу этого ключа!), используйте команду «sign». Вам будет задан вопрос: «Вы уверены в том, что хотите подписать этот ключ с использованием вашего секретного ключа?». Если вы выберете «Да», то вам нужно будет ввести вашу ключевую фразу. При подписывании ключа к нему добавляется ваш ключ. Поэтому после этого вы должны отправить уже подписанный вами ключ его владельцу. Для этого используется команда экспорта:

[user@mdk]# gpg --export -a someuser@somedomain.com > someuser.asc

Вам нужно взять someuser.asc и отправить его владельцу. Он импортирует этот ключ так же, как и любой другой открытый ключ. После этого GPG сообщит, что к ключу была добавлена новая подпись. Теперь владелец ключа должен экспортировать свой новый ключ и заново отправить его на сервер обмена ключами (или заново поместить его на свой сайт). Его открытый ключ теперь будет содержать вашу подпись – это значит, что вы полностью ему доверяете. Если кто-нибудь другой полностью доверяет вам, то он автоматически считается полностью доверяющим этому человеку. Если кто-нибудь другой частично доверяет вам и еще двоим, подписавшим тот же самый ключ, то он автоматически считается полностью доверяющим этому человеку. Так работает сеть доверия.

Чтобы посмотреть все подписи ключа, используйте команду:

[user@mdk]$ gpg --list-sigs someuser@somedomain.com

Эта команда показывает информацию о ключе и все его подписи. Например, информация для моего ключа смотрится так (конечно же, все Email-адреса были удалены, чтобы они не стали добычей спамеров):

pub 1024D/FE6F2AFD 2000-01-22 Vincent Danen
sig FE6F2AFD 2002-01-10 Vincent Danen
sig 641E358B 2002-04-09 Ben Reser
uid Vincent Danen
sig FE6F2AFD 2001-04-05 Vincent Danen
sig 9B4A4024 2001-03-21 MandrakeSoft (MandrakeSoft official keys)
sig 22458A98 2001-03-21 Mandrake Linux Security Team
sig 1C55200B 2001-04-05 Vincent Danen (root-1)
sig 27269202 2001-04-05 Vincent Danen (root-2)
sig 96F699B3 2001-04-05 Vincent Danen
sig 40BEBEFF 2001-10-09 Yoann Vandoorselaere
sig 124DB94E 2001-12-02 Stephen Olesen (Slepp Lukwai)
sig 641E358B 2002-04-09 Ben Reser
uid Vincent Danen
sig FE6F2AFD 2001-04-05 Vincent Danen
sig 9B4A4024 2001-03-21 MandrakeSoft (MandrakeSoft official keys)
sig 22458A98 2001-03-21 Mandrake Linux Security Team
sig 1C55200B 2001-04-05 Vincent Danen (root-1)
sig 27269202 2001-04-05 Vincent Danen (root-2)
sig 96F699B3 2001-04-05 Vincent Danen
sig 40BEBEFF 2001-10-09 Yoann Vandoorselaere
sig 124DB94E 2001-12-02 Stephen Olesen (Slepp Lukwai)
sig 641E358B 2002-04-09 Ben Reser
uid Vincent Danen
sig FE6F2AFD 2001-04-05 Vincent Danen
sig 9B4A4024 2001-03-21 MandrakeSoft (MandrakeSoft official keys)
sig 22458A98 2001-03-21 Mandrake Linux Security Team
sig 1C55200B 2001-04-05 Vincent Danen (root-1)
sig 27269202 2001-04-05 Vincent Danen (root-2)
sig 96F699B3 2001-04-05 Vincent Danen
sig 124DB94E 2001-12-02 Stephen Olesen (Slepp Lukwai)
sig 348E29D8 2001-03-25 Jerome Dumonteil
sig 40BEBEFF 2001-10-09 Yoann Vandoorselaere
sig 641E358B 2002-04-09 Ben Reser
sub 1024g/7A788C85 2000-01-22
sig FE6F2AFD 2000-01-22 Vincent Danen

Как вы видите, у моего открытого ключа имеется большое количество подписей. Это – основа надежной сети доверия. Самое сложное в построении надежной сети доверия – это найти людей, которые согласятся подписать ваш ключ. Представьте себе, что вы ищете спонсоров для вашего проекта – точно такие же принципы применяются и для GPG.

Уничтожение ключа GPG.

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

Чтобы создать сертификат, введите:

[user@mdk]$ gpg --gen-revoke user@mdk.host

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

После этого нужно ввести ключевую фразу, и сертификат будет выведен на stdout. Вам нужно сохранить его в текстовом файле с понятным названием (например, lostkey-revoke-certificate.gpg). Сертификаты для удаления нужно хранить в надежном месте, потому что любой может воспользоваться ими и удалить ваш ключ из базы данных серверов обмена ключами.

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

[user@mdk]$ gpg --import user-lostpasswordrevokecert.gpg
[user@mdk]$ gpg --send-keys --keyserver wwwkeys.pgp.net user@mdk.host

Подписи GPG в файлах RPM.

RPM-пакеты так же могут иметь встроенные подписи GPG. Обычно это делается во время создания пакета. Так же можно создать подпись заново после построения RPM. По умолчанию RPM включает в себя только подпись MD5.

MandrakeSoft уже много лет использует цифровую подпись пакетов. Все пакеты, входящие в дистрибутив, подписаны тем или иным ключом. В последних версиях Mandrake Linux официальные ключи MandrakeSoft сразу же входят в набор ключей GPG для root'а.

Чтобы проверить подписи RPM-пакета, используйте команду:

[user@mdk]$ rpm -K gnupg-1.0.6-5mdk.i586.rpm
gnupg-1.0.6-5mdk.i586.rpm: md5 gpg OK
[user@mdk]$

Это означает, что файл – в порядке, и его подписи MD5 и GPG корректны. Если RPM-пакет неподписан, то вы увидите только «md5 OK». Чтобы посмотреть, кем подписан пакет, используйте команду:

[user@mdk]$ rpm -Kv gnupg-1.0.6-5mdk.i586.rpm
gnupg-1.0.6-5mdk.i586.rpm:
MD5 sum OK: 80014f77015b1a58c6cf684e57295998
gpg: Signature made Wed 13 Mar 2002 02:27:27 PM MST using DSA key ID 70771FF3
gpg: Good signature from «Mandrake Linux <mandrake@mandrakesoft.com>»
[user@mdk]$

Если в вашем наборе ключей нет нужного открытого ключа, то вы увидите соответствующее сообщение:

[user@mdk]$ rpm -K gnupg-1.0.6-5mdk.i586.rpm
gnupg-1.0.6-5mdk.i586.rpm: md5 (GPG) OK (MISSING KEYS: GPG#70771FF3)
[user@mdk]$ rpm -Kv gnupg-1.0.6-5mdk.i586.rpm
gnupg-1.0.6-5mdk.i586.rpm:
MD5 sum OK: 80014f77015b1a58c6cf684e57295998
gpg: Signature made Wed 13 Mar 2002 02:27:27 PM MST using DSA key ID
70771FF3
gpg: Can't check signature: public key not found
[user@mdk]$

Если вы скачали RPM-пакет с неверной подписью GPG или MD5 – лучше не устанавливайте его. Возможно, что в пакет был помещен троян. Сейчас менеджеры RPM, такие, как MandrakeUpdate/rpmdrake, могут автоматически проверять правильность подписей перед установкой. Но у urpmi еше нет такой возможности.

Заключение.

GPG может сначала показаться сложным, и, действительно, иногда при работе с ним могут встретиться сложные ситуации. Но в основном работа с GPG проста и понятна. Самое главное – помнить о том, что чужие ключи нужно подписывать с максимальной подозрительностью, потому что от этого зависит ваша репутация. Но подписывать ключи все же надо, потому что это – главный принцип построения сети доверия. А сеть доверия – это очень важная и чрезвычайно нужная вещь...

Другие информационные ресурсы:

Man-страница GPG на русском
GnuPG Privacy Handbook на русском
GnuPG FAQ
GnuPG Privacy Handbook
Статья о GPG в двух частях на сайте MandrakeUser.org
Сервера обмена ключами MandrakeSoft
Список рассылки KeySigning
Key Signing Coordination Webpage

Валерий Качуров
Softerra

Лучшие статьи раздела читайте в еженедельном сетевом журнале
"I2R Computer"
Подпишитесь на рассылку
"Мир Linux. И2Р"
Подписка на Subscribe.Ru
Другие разделы
Идеология
Программы
Linux против Microsoft
Установка и первые шаги
Практикум в Linux
Фольклор
Новое в разделе
FAQ по Linux
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100