SATtva Персональная страница
темы архив все rss xml 2.0
 
 
блог
досье
связь
english
 

emerge-delta-webrsync с проверкой pgp-подписей

27.05.2009
pgp

Допилил тут гентушный скрипт emerge-delta-webrsync, чтобы он сверял pgp-подписи со снапшотов портежа: как с новых, так и с реконструированных по дельтам. То есть после синхронизации портежа, независимо от того, с каких зеркал качались снапшоты и дельты (при этом по открытым каналам), остаётся гарантия, что портеж находится в том виде, в каком был заверен на сервере Gentoo Foundation, и ничего лишнего в него не понапихали злобные враги.

Если оно кому нужно, то архив вот (правой кнопкой > сохранить как), подпись здесь.

Скрипт пригоден для автоматической работы по крону. Помимо прочего добавил в него дополнительный логгинг: все неудачные сверки подписей будут выводиться в authpriv с приоритетом warning. Разумеется, если подпись по той или иной причине не сверяется, скрипт немедленно прерывает исполнение ещё до синхронизации снапшота с рабочим деревом портежа в /usr/portage.

Для установки скопируйте сам emerge-delta-webrsync и небольшой скрипт-хэлпер gpg-check-file.py в /usr/bin или иной каталог, прописанный в PATH. Затем добавьте в /etc/make.conf следующие переменные:

SNAPSHOT_GPG_KEY="отпечаток ключа Gentoo Portage Snapshot Signing Key", которым заверяются снапшоты. (Если что, отпечаток текущего ключа, действующего до конца года, -- AE54 54F9 67B5 6AB0 9AE1 6064 0838 C26E 239C 75C4. Скопировать можно в таком виде, с пробелами или без, в любом регистре.) Эта переменная обязательна, без неё скрипт откажется работать.

PORTAGE_GPG_DIR="путь к домашнему каталогу GnuPG, где находится связка с указанным выше ключом". Отсутствие этой переменной (в отличие от предыдущей) некритично, по умолчанию принимается путь /root/.gnupg, но тогда убедитесь, что открытый ключ Portage Snapshot Signing Key действительно находится на связке ключей у рута.

DELTASYNC_MIRRORS="разделённый запятыми список зеркал для скачивания дельт и снапшотов". Поскольку я использую разные зеркала для получения дельт и исходников, посчитал такое расширение для себя удобным. Но если не хочется держать два списка, то при отсутствии этой переменной используются зеркала из основного списка GENTOO_MIRRORS.

Залогиньтесь рутом, скачайте ключ, заверяющий снапшоты, и заверьте его неэкспортируемой подписью (или что там предусматривает ваша политика сертификации):
gpg --keyserver subkeys.gpg.net --recv-key 0x239C75C4
gpg --lsign 0x239C75C4

В случае проблем сообщайте.

ДОБАВЛЕНО (30.05): Отредактировал постинг в соответствии с изменениями в скрипте. Спасибо Mellon'у за дельные советы.

ДОБАВЛЕНО (04.01): Бэкпорт багфикса #299443 из официальной версии emerge-delta-webrsync-3.5.1-r3 (случилась локальная Проблема-2010):
sed 's/portage-200\*/portage-2[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/g'

Продление действия PGP-подключей несовместимо с серверами ключей

14.01.2008
pgp

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

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

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

Короче, если ключ, взятый вами с сервера, отказывается работать, обновите копию из "официального источника".

Замена открытого ключа

22.12.2006
pgp

Подходит к концу год, и одновременно заканчивается срок действия моего OpenPGP-ключа 0x4D8BB49E. В принципе, срок действия базового ключа подписи у него не ограничен, и для продления было достаточно создать новый шифровальный подключ, однако, он уже морально устарел, и не всегда за три с лишним года использовался в полном смысле безопасным образом. Сегодня была изготовлена замена.

Ключ 0x8443620A уже доступен на этом сайте и в базах основных депозитариев интернета; за две-три недели он должен обойти всю сеть pgp.net. Новый ключ имеет перекрёстные подписи с прежним, что должно упростить вам (если вы мой постоянный корреспондент) установление его подлинности.

Базовый ключ подписи -- это RSA v4 4096 бит с неограниченным сроком. Основное же отличие схемы нового ключа в том, что среднесрочные (на один год) подключи теперь будут применяться как для шифрования, так и для подписи данных, а базовый ключ, хранящийся отдельно и особо безопасным образом, будет использоваться исключительно в целях сертификации.

Такая схема сломает совместимость с некоторыми ранними версиями ПО, впрочем, большинство пользователей уже переключились на PGP 9 и GnuPG 1.4.x, что должно сгладить этот недостаток. Если же трудности возникнут у слишком многих, я добавлю ещё один временный подключ к прежнему открытому ключу и продлю его жизнь до будущего лета. Затем ключ 0x4D8BB49E будет аннулирован и, вероятно, удалён.

Концепция: открытость

08.05.2006
pgp

Слухи о том, что я решил забросить проект "PGP в России" и прекратить обновления сайта, сильно преувеличены. Действительно, активность в работе над контентом в последние месяцы снизилась, однако причиной тому стала, во-первых, моя занятость с другими делами и, во-вторых, полная переработка дизайна сайта и концепции его построения.

Некоторые участники форума уже в курсе планируемых изменений, которые затронут даже название проекта. Главным отличием pgpru.com 2.0 станет его открытость для участия простых читателей и посетителей благодаря его построению на базе системы wiki. Это, однако, будет модерируемая, а не стихийная wiki, что позволит сохранить структуру сайта и удобство навигации.

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

Бесплатная альтернатива небесплатному PGP

12.02.2005
pgp

Как и любому вебмастеру, мне приходится периодически просматривать статистику сайта: посещаемость, популярность страниц и тому подобные сведения. И всякий раз в статистике поисковых запросов обращаю внимание на стабильность позиций поиска пиратских лицензионных номеров для PGP. Столь же стабильны обращения с таким вопросом по icq и email. Однако, тут запрос уже не обезличен, и у меня есть возможность, со своей стороны, поинтересоваться, зачем человеку коммерческая версия программы. Примерно двум третям респондентов нужен PGPdisk, другие же ищут большего комфорта от использования почтовых плагинов.

Оставим в стороне моральный и правовой аспекты проблемы – у каждого человека свои убеждения, мотивы и отношения с совестью. Вместо этого я бы хотел поделиться с искателями более чистым во всех отношениях решением. Ведь PGP, в конце концов, основан на интероперативном стандарте OpenPGP, так почему бы не заменить программу и все её компоненты альтернативными продуктами, почти ничем не уступающими PGP? Конечно, это предложение прежде всего обращено к частным пользователям – в корпоративной среде альтернативы зачастую невозможны.

Итак, из каких основных кирпичиков-функций "состоит" коммерческая версия PGP? Прежде всего, это криптографическое ядро. С ним всё понятно, и его в полной мере может заменить GnuPG. В то же время, консоль GnuPG неудобна пользователям, привыкшим к графическим интерфейсам. Значит, нам нужен графический интерфейс. Загляните сюда и выберите тот, который больше придётся по вкусу. Я сам предпочитаю WinPT, который ближе по духу к PGPtray/PGPkeys, к тому же предоставляет такие функции, как уничтожение файлов, очистка свободного пространства дисков и вычисление контрольных сумм (и то, что он распространяется в исходных текстах, тоже не будет лишним). Чтобы шифровать файлы из Проводника, не забудьте про GPG Shell Extensions.

Итак, у нас уже есть полный функциональный аналог PGP Freeware, но самого главного всё ещё не хватает. PGPdisk вам заменит свободная программа TrueCrypt, по ряду параметров превосходящая даже решение от PGP Corporation. Например, с его помощью можно вместо создания криптоконтейнернов зашифровывать логические разделы жёстких дисков и других накопителей целиком. А ещё он умеет создавать "скрытые" и "переносные" контейнеры, что для кого-то может оказаться очень ценной возможностью.

Остались почтовые плагины. Пользователи Outlook могут воспользоваться плагином G-DATA, доступным со страницы расширений GnuPG. Но если вы ищите настоящего удобства и комфорта от использования GnuPG, взгляните на связку Thunderbird-Enigmail-GnuPG (на той же странице приведена подробная инструкция по установке GnuPG). Enigmail обладает собственным весьма развитым менеджером ключей, поддерживает PGP/MIME, и после некоторой предварительной настройки делает защиту переписки совершенно необременительной и даже незаметной для пользователя.

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

Рудимент или контрмера?

21.06.2004
pgp

Немного занимательной теории. Как известно, при сверке любого подписанного(+зашифрованного) сообщения PGP в блоке своих заголовков в строке *** Verified: отображает время сличения подписи. Некоторых пользователей удивляет наличие этой строки, ведь логично предположить, что дата и время, указанные в ней, должны совпадать с текущими показаниями системного таймера. Тогда зачем она нужна? Именно за этим...

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

*** PGP SIGNATURE VERIFICATION ***
*** Status: Good Signature
*** Signer: Vasya Pupkin (0xDEADBEEF)
*** Signed: 19.06.04 19:39:17
*** Verified: 21.06.04 4:40:09
*** BEGIN PGP DECRYPTED/VERIFIED MESSAGE ***

В заголовке *** PGP SIGNATURE VERIFICATION *** он заменяет одну из английских букв русской со схожим начертанием (например, английскую "пи" на русскую "эр"). Это делается для того, чтобы чтобы ваша программа не заметила подвоха и не заменила предваряющие тройные звёздочки (***) на правые угловые скобки (>>>) в качестве меры противодействия такой атаке. Как вы увидите ниже, противодействие это весьма условное.

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

*** PGP SIGNATURE VERIFICATION ***
*** Status: Good Signature
*** Signer: Vasya Pupkin (0xDEADBEEF)
*** Signed: 19.06.04 19:39:17
*** Verified: 21.06.04 4:40:09
*** BEGIN PGP DECRYPTED/VERIFIED MESSAGE ***

Борис, я провожу плановое обслуживание нашей сети. Вышли, пожалуйста, на адрес evilhacker@domain.com пароль доступа к твоей системе.

Твой друг Вася

*** END PGP DECRYPTED/VERIFIED MESSAGE ***

...а после шифрования становится таким:

-----BEGIN PGP MESSAGE-----
Version: PGP 8.0.3

qANQR1DDDQQCAwKaWGgLEGkiE2DJwJHMZ3La9HWuUfGECGSmxuKB7n9GHZg8Mdvs
0KEONtuhNkKuRd2EpY+9IwUR5NY8YLGTtrN17a+qMK8xOTwQiGGgpytiUyPxbLuL
uVz0Be2gYdceFK0e95bQQ5a2F9T3RN9KdJwJ+yG5pz5YUMQ89t71mIbOir+TzlDf
mNWyRjlnX1QJ1EYkZEBVjakXmzPJTbNpz86nmVmEbkpaS25+DX40eUdrMPHgEb6j
eSaC399jX5dgyP5aq4ar/K0LgWnPAsUkntrG+k6npaF3KWchsv//c2DKPfooLd6N
rd5gSU86JqIUKQ9Cq0GGgb63a7aK0pIuP/QwCyHfuMQD24kxqeLrG5FCefs3EiYv
5Arn3vjJaBvvZU0HoAc/El5sxxayz6lV68GLhHkC2ph4ckgJPnT+4DEBp7/1fvTh
M0JwY00L/qxp9Zp/KLQ5XHZI8AZldkKF
=ySHP
-----END PGP MESSAGE-----

Теперь, расшифровав такое сообщение, получатель увидит текст, выглядящий так, словно действительно был подписан его постоянным корреспондентом. А раз текст криптографически подписан, подумает он, то его содержанию можно доверять. (Можете проверить сами: скопируйте приведённый выше блок в буфер обмена и расшифруйте его паролем "123", без кавычек, разумеется.)

Ненаблюталельный Борис может посчитать, что получил письмо из надёжного источника. Но если бы он обратил внимание на строку *** Verified:, то обнаружил бы, что указанные там дата/время отличаются от текущих. Эта строка в заголовке расшифрованных сообщений используется как мера защиты от мошеннических атак на формат PGP: её практически невозможно подделать, ведь злоумышленник не может доподлинно знать, в какую секунду вы откроете полученное сообщение.

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