GPG в убунту в Иксах. Делюсь опытом
Итак, поскольку постоянно обращаться к консоли при попытке прочесть чью-нибудь подпись несколько утомительно, я решил это немного автоматизировать. Успешным опытом чего собираюсь поделиться.
- Создаём дефолтный .xbindkeysrc:
- Для того чтобы выводить окно с результатом проверки на экран я использую gmessage. Если его нет – установить с помощью atp-get
- Для работы с клипбордом использую xclip. Если его нет – установить с помощью atp-get
- Редактируем .xbindkeysrc добавив в него следующее:
- Проверим что xbindkey запускается при старте X-сессии. В Убунту это так по дефолту.
Все. Теперь для проверки чьей-либо подписи просто выделяем текст мышью и жмем Ctrl-~ (Контрл-тильду). Появится окно с результатом проверки.
Я сделал то же самое для того чтобы аттачить свою подпись к выделенному фрагменту. Для этого добавим в .xbindkeysrc следующее:
Как видим, потребуется еще программа xte. Она позволяет генерировать события в X, в данном случае ее вызов аналогичен нажатию на кнопки Shift-Ins, что то же самое что вставка из буфера обмена. Теперь по нажатию Ctrl-1 выделенный текст будет заменяться на такой же, но подписанный. CAFC2EEE – это ID моего ключа. Соответственно, заменить на свой.
Следует учесть, что Убунту по дефолту запускает xbindkey когда gpg-agent еще не запущен. В этом случае он не сможет расшифровать секретный ключ для подписи на лету. Чтобы это все работало, надо запретить его старт автоматом из Xsession.d Для этого создаем пустой файл в хоумдире с именем .xbindkeys.noauto Теперь xbindkey не запускается сам. Запускаем его либо ручками после запуска сессии, либо добавив его в список автозапускающихся программ. Для этого служит утилита Startup Applications
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 9796 документов: 488 редакций: 5664
комментариев: 1515 документов: 44 редакций: 5786
PROFIT!LOSS!И повторю ещё раз, специально для unknown'а: sudo небезопасно :)
Для тех, кто ничего не понял:
В качестве тривиального следствия можно поразмыслить, как много интересного узнает троян под скомпрометированным пользователем, если оный пользуется свистелками для администрирования системы и на каждый чих вводит пароль рута.
По поводу топика: проверять таким образом подписи можно, но сильно надеяться на их сверку я бы не стал, делать же что-то более серьёзное (то, что требует пассфразу на ключ) — и тем более.
При неумелом использовании/настройке sudo возникает множество дыр. Про истории, когда посторнний пользователь с шеллом получал права рута из-за того, что судо пароль как-то закэшировало (или наоборот, незакэшировало?) наслышан.
комментариев: 20 документов: 1 редакций: 12
ИМХО – все это параноя. Ну какой смысл взламывать себя самого? В том, что события, переданные *как-бы* из под другого аккаунта будут логированы нет ничего удивительного, ведь X-сессия, в контексте которой запущен xterm в котором запущен ssh, залогиненный на другой аккаунт таки запущена из-под того пользователя, кто собственно запустил X. Логично что события, относящиеся к этой сессия подлежат наблюдению. В "тот шелл", который с другого аккаунта все наши нажатия все равно идут через оригинальную сессию, но что в этом такого? Мы сами установили доверительные отношения между ними, залогинившись ssh-ем. Я не вижу возможности для "внешнего" интрудера перехватить эту сессию, если я что-то пропустил – укажите. Правда не вижу.
Троян под скомпроментированным пользователем вообще может узнать много чего, правда сначала этого пользователя надо скопрометировать. Вообще все, что было под этим самым скопрометированным пользователем лучше всего считать скомпрометированным. В случае PGP правильнее всего просто не хранить мастер-ключ на таком компьютере, а только саб-ключи. В случае их компрометации – просто отозвать.
Еще вопрос: почему не стоит надеяться на сверку подписи? Предложенный способ лишь выводит на экран то, что сделала бы консоль, и ничего более. Почему степень доверия к такой проверке меньше чем к консоли? Думаю должна быть такой же.
PS. Прочитал тред про gksu. Пришел к выводу что вообще надо пользоваться отдельными компами для каждой задачи: одним для браузера, другим – для ворда, третьим – для PGP :)) Ну или по крайней мере виртуалками для каждого из оных )
PPS. Удобство = k очумелых_ручек / Безопасность
комментариев: 1515 документов: 44 редакций: 5786
Простейший пример — эксплуатация злонамеренным сайтом дыры в браузере. Выше был приведён пример скайпа1. Список можно продолжать. Любое приложение, работающее с сетью, таит в себе угрозу, и джаббер-клиент, если имеет доступ к приватному PGP-ключу, тоже.
Система должна быть настроена так, чтобы программы разного рода опасности были бы запущены в разных «песочницах». В реальном мире нет идеальных программ, значит, защиту надо строить так, чтобы бороться с их уязвимостью. Некогда я написал на эту тему черновик будущего FAQ.
Абсолютно верно. И ключи лучше сделать временными. И для программ, работающих с приватными ключами автоматически (джаббер-клиенты), лучше иметь отдельный ключ2.
Потому, что обмануть графические приложения в среднем проще. Чем больше степеней свободы у системы, тем больше свободы и у атакующего такую систему. Вы завязываете в один узелок иксовые утилиты, хоткеи и PGP. Достаточно, чтобы в одном месте произошла ошибка, и вы в пролёте. Мне не хочется сейчас фантазировать на эту тему, но мысль должна быть понятна. Даже в консоли есть неожиданности, о которых среднестатистический пользователь даже не подозревает.
Да, и про всё это я уже многократно писал. По крайней мере, анонимный и неанонимный пользователь3 никак не должны сосуществовать в одной и той же ОС, а программы повышенного риска4 должны работать из-под отдельного пользователя и не иметь доступа к файлам (событиям/окнам) вашего юзера в $HOME вообще.
Основной итог таков, что чем больше знаешь, тем лучше осознаёшь, насколько легко и дёшево вся защита обходится, а максима начинает казаться не художественным преувеличением, а горькой правдой жизни.
1Как потенциально возможного трояна в системе с удалённым управлением.
2Как это SATtva, к примеру, сделал.
3Там, где анонимность — не довесок, а реально критична.
4Браузер, Skype, какие-то другие сетевые.
комментариев: 9796 документов: 488 редакций: 5664
Могу привести недавний пример.
Давно не отправлял gpg-писем.
Но поторопился отправить SATtva письмо (так что он не даст соврать :) о переводе материала для сайта.
Продлевал действие ключа, добавлял подключи. Заодно то ли что-то менял до этого в скриптах-алиасах, то ли как.
Ситуацию в точности воспроизвести не удалось, хотя было бы поучительно.
Но, как оказалось, в команде шифрования из-за нагромождения опций --encrypt-to, --hidden-encrypt-to и
неправильного их расположения (сначала нужно было бы ставить опции, а затем операции — --encrypt, --sign) и
злополучном применении опции --armor, то текст выглядел … закодированным в армор, понятное дело.
Но при этом оказался … подписанным, но незашифрованным (опция encrypt тихо проигнорировалась) и в таком виде и был отправлен. А armor кодировка скрыла сей факт от глаз.
Теперь для всех операций делаю gpg -v, перенаправление потоков в отдельные файлы и изучение выхлопа каждой
операции. А перед отправкой чего-либо важного делаю ещё и контрольное расшифрование (если добавлялось шифрование
на свой ключ).
Или действительно нужно пользоваться стандартным интерфейсом, пусть даже графическим. Или убеждаться, что иногда никакой злоумышленник не сможет так эффектно протроянить систему безопасности как её собственный самоуверенный пользователь.
Этот ваш пгп такая камасутра? А еще нужно с бубном вокруг костра побегать?
К чему это я – если для отправки сообщения в супер-пупер системе нужно сделать перечень телодвижений, то обязательно случится так что пользователь забудет или бубен, или костер...
комментариев: 9796 документов: 488 редакций: 5664
Для рядовых пользователей лучше использовать стандартные плагины к почтовым программам. Да и не рядовым иногда лучше не выпендриваться и не играть в камасутру, чтобы не получалось вот так. Но зато такие интересные фичи, как подпись сообщений в окошках тех программ, где это стандартно не прикручено, так легко не получатся. С другой стороны и разработчики готовых решений, которые прикрутили такую возможность к какому-нибудь чатик-клиенту, могли думать о безопасности в последнюю очередь.
комментариев: 20 документов: 1 редакций: 12
to spinore:
В целом согласен. За исключением пожалуй максимализма
Оно в целом верно, если рассматривать безопасность как абсолют. В смысле асолюта безопасным себя чувствовать может лишь покойник (правда, ему надо сначала научиться что-то чувствовать – каламбур!) Для всех остальных она определяется с одной стороны степенью защищенности самого слабого звена, а с другой – ценностью того, что можно украсть. Технологически PGP думаю использует те же самые алгоритмы, что защищают ядерный чемоданчик, но было бы наивно считать что супер-мега-данные, хранящиеся у меня на компьютере, защищены с такой же степенью. Да даже если не на компьютере, а на флешке, хранящейся в сейфе. Потому как и его не спасти от взлома.. фомкой. Или там если вежливо попросят. Для хорошей защиты данные надо зашифровать, положить в яйцо, яйцо – в рыбу, рыбу – в птицу, птицу – в зайца, зайца – в клетку, засунуть его в замок, окружить тройным рвом. И еще подписать договор о ненападении со всеми ближлежащими иванами-царевичами. Другое дело что кому нужен доступ до любимой порнушки, чтобы ради нее идти на все это? Да даже ценность моего личного PGP-ключа не такова, чтобы внедрить мне трояна с помощью ментальных волн или каким-нибудь еще более простым способом. Конечно никто не застрахован на 100% от фишероф, но тут сильно помогает простая компьютерная гигиена. Кроме того есть еще какие-то правовые нормы по защите прайваси, не позволяющие внедрять троянов (ну... явных троянов) в программный код производителями ПО, поскольку они ответят за это по закону рублем или долларом. И все это в конце-концов упирается в понятие доверия. Как софту, который ты используешь, так и железу, на котором все это крутиться.
Можно конечно искать компромиссы и пытаться изолировать программы друг от друга. И в целом это неплохо. Но надо понимать что абсолюта не добьешся и в этом случае, а вот удобство работы может сильно пострадать. В современном десктопе приложения глубоко интегрированы друг с другом. В Windows браузер и система используют один и тот же keystore для сертификатов. Это так, лишь пример. Все равно все упрется в итоге в доверие к тому, что используешь. И, исходя из этого, (само)ограничение в доступных средствах.
Исходя из этого я нахожу предложенный способ не таким уж плохим. Если конечно с этого десктопа не управляют атомной станцией :)
PS. Только что пришел с семинара по облачным решениям от COMPAREX. Вот уж где без установления доверительных отношений вообще делать нечего! А ведь это – уже даже не завтрашний день, а сегодня. Имею в виду не именно COMPAREX конечно, а нынешнюю моду на облака.
комментариев: 1060 документов: 16 редакций: 32
Вы много таких случаев знаете? :)
комментариев: 9796 документов: 488 редакций: 5664
Если верить русской википедии (похоже эти факты действительно были):
Не следует думать, что какие-либо "стратегические объекты" хорошо охраняют (по крайней мере в информационном плане), просто более тщательно скрывают провалы и интенсивнее разыгрывают "театр безопасности".
комментариев: 1060 документов: 16 редакций: 32
Хочется верить, что их хотя бы хорошо охраняют по старинке, "оффлайново" :)
комментариев: 20 документов: 1 редакций: 12
комментариев: 9796 документов: 488 редакций: 5664
Напомнило (SATtva):