id: Гость   вход   регистрация
текущее время 18:18 29/03/2024
Автор темы: falkenberg, тема открыта 27/03/2012 01:57 Печать
Категории: софт, gnupg, операционные системы
http://www.pgpru.com/Форум/РаботаСGnuPG/GPGВУбунтуВИксахДелюсьОпытом
создать
просмотр
ссылки

GPG в убунту в Иксах. Делюсь опытом


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


  1. Создаём дефолтный .xbindkeysrc:

  2. Для того чтобы выводить окно с результатом проверки на экран я использую gmessage. Если его нет – установить с помощью atp-get
  3. Для работы с клипбордом использую xclip. Если его нет – установить с помощью atp-get
  4. Редактируем .xbindkeysrc добавив в него следующее:

  5. Проверим что xbindkey запускается при старте X-сессии. В Убунту это так по дефолту.

Все. Теперь для проверки чьей-либо подписи просто выделяем текст мышью и жмем Ctrl-~ (Контрл-тильду). Появится окно с результатом проверки.


Я сделал то же самое для того чтобы аттачить свою подпись к выделенному фрагменту. Для этого добавим в .xbindkeysrc следующее:


Как видим, потребуется еще программа xte. Она позволяет генерировать события в X, в данном случае ее вызов аналогичен нажатию на кнопки Shift-Ins, что то же самое что вставка из буфера обмена. Теперь по нажатию Ctrl-1 выделенный текст будет заменяться на такой же, но подписанный. CAFC2EEE – это ID моего ключа. Соответственно, заменить на свой.


Следует учесть, что Убунту по дефолту запускает xbindkey когда gpg-agent еще не запущен. В этом случае он не сможет расшифровать секретный ключ для подписи на лету. Чтобы это все работало, надо запретить его старт автоматом из Xsession.d Для этого создаем пустой файл в хоумдире с именем .xbindkeys.noauto Теперь xbindkey не запускается сам. Запускаем его либо ручками после запуска сессии, либо добавив его в список автозапускающихся программ. Для этого служит утилита Startup Applications


 
На страницу: 1, 2, 3 След.
Комментарии
— SATtva (27/03/2012 22:05)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Интересное решение, спасибо.
— unknown (27/03/2012 22:10)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Вот только некоторые пользователи настолько суровы, что даже к sudo относятся с таки подозрением, что совсем его в систему не ставят, а тут gpg-агент и иксовые утилиты :) Но действительно интересно, можно полезное почерпнуть, даже для чего-нибудь другого.
— spinore (27/03/2012 23:42)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Примерно такие же мысли, как у unknown'а. Для тех, кто не знает, в пику обсуждений про gksu (в окрестности /comment45227) и этот топик показываю фокус. Внимательно следите за руками:

  1. Логинимся в терминале как
    $ ssh -X другой_юзер@localhost
    Это типа среда для исполнения потенциально опасных приложений (например, Skype). Надеемся, будто бы эта среда реально безопасна.
  2. Из-под другого_юзера запускаем
    $ xwininfo
    Щёлкаем мышкой по понравившемуся нам окну (например, терминалy под стандартным юзером), чтобы получить его идентификатор. После щелчка приглашение комстроки возвращается, и там будет написано что-то в духе
    xwininfo: Window id: 0xXXXXXXX "NAME"
  3. Из-под другого_юзера запускаем
    $ xev -id 0xXXXXXXX > FILE
  4. Возвращаемся в выбранный терминал под стандартным юзером и выполняем что-нибудь типа
    $ gpg -d file.gpg
    Вводим пассфразу.
  5. Открываем файл FILE и читаем его. Каждый символ будет иметь вид (здесь пример для символа «g»):
    KeyPress event, serial 17, synthetic NO, window 0xXXXXXXX,
        root 0xXXX, subw 0xXXXXXXX, time XXXXXXXXX, (XXX,XXX), root:(XXX,XXX),
        state 0x0, keycode 42 (keysym 0x67, g), same_screen YES,
        XLookupString gives 1 bytes: (67) "g"
        XmbLookupString gives 1 bytes: (67) "g"
        XFilterEvent returns: False
  6. PROFIT! LOSS!

И повторю ещё раз, специально для unknown'а: sudo небезопасно :)

Для тех, кто ничего не понял:
Любая программа, запущенная под иксами, имеет возможность ловить все инвенты во всех окнах под этими иксами (простейший кейлоггер можно реализовать на шелл-скрипте), даже если запущена из-под другого юзера, а уж про такую банальность как
$ scrot -d 5 file.png
из-под другого_юзера я вообще молчу. Думайте над этим, когда запускаете приложения под своими иксами.

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


По поводу топика: проверять таким образом подписи можно, но сильно надеяться на их сверку я бы не стал, делать же что-то более серьёзное (то, что требует пассфразу на ключ) — и тем более.

При неумелом использовании/настройке sudo возникает множество дыр. Про истории, когда посторнний пользователь с шеллом получал права рута из-за того, что судо пароль как-то закэшировало (или наоборот, незакэшировало?) наслышан.
— falkenberg (28/03/2012 00:33, исправлен 28/03/2012 02:13)   профиль/связь   <#>
комментариев: 20   документов: 1   редакций: 12

ИМХО – все это параноя. Ну какой смысл взламывать себя самого? В том, что события, переданные *как-бы* из под другого аккаунта будут логированы нет ничего удивительного, ведь X-сессия, в контексте которой запущен xterm в котором запущен ssh, залогиненный на другой аккаунт таки запущена из-под того пользователя, кто собственно запустил X. Логично что события, относящиеся к этой сессия подлежат наблюдению. В "тот шелл", который с другого аккаунта все наши нажатия все равно идут через оригинальную сессию, но что в этом такого? Мы сами установили доверительные отношения между ними, залогинившись ssh-ем. Я не вижу возможности для "внешнего" интрудера перехватить эту сессию, если я что-то пропустил – укажите. Правда не вижу.
Троян под скомпроментированным пользователем вообще может узнать много чего, правда сначала этого пользователя надо скопрометировать. Вообще все, что было под этим самым скопрометированным пользователем лучше всего считать скомпрометированным. В случае PGP правильнее всего просто не хранить мастер-ключ на таком компьютере, а только саб-ключи. В случае их компрометации – просто отозвать.
Еще вопрос: почему не стоит надеяться на сверку подписи? Предложенный способ лишь выводит на экран то, что сделала бы консоль, и ничего более. Почему степень доверия к такой проверке меньше чем к консоли? Думаю должна быть такой же.


PS. Прочитал тред про gksu. Пришел к выводу что вообще надо пользоваться отдельными компами для каждой задачи: одним для браузера, другим – для ворда, третьим – для PGP :)) Ну или по крайней мере виртуалками для каждого из оных )
PPS. Удобство = k очумелых_ручек / Безопасность

— spinore (28/03/2012 05:07)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786

Простейший пример — эксплуатация злонамеренным сайтом дыры в браузере. Выше был приведён пример скайпа1. Список можно продолжать. Любое приложение, работающее с сетью, таит в себе угрозу, и джаббер-клиент, если имеет доступ к приватному PGP-ключу, тоже.


Система должна быть настроена так, чтобы программы разного рода опасности были бы запущены в разных «песочницах». В реальном мире нет идеальных программ, значит, защиту надо строить так, чтобы бороться с их уязвимостью. Некогда я написал на эту тему черновик будущего FAQ.


Абсолютно верно. И ключи лучше сделать временными. И для программ, работающих с приватными ключами автоматически (джаббер-клиенты), лучше иметь отдельный ключ2.


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


Да, и про всё это я уже многократно писал. По крайней мере, анонимный и неанонимный пользователь3 никак не должны сосуществовать в одной и той же ОС, а программы повышенного риска4 должны работать из-под отдельного пользователя и не иметь доступа к файлам (событиям/окнам) вашего юзера в $HOME вообще.

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


1Как потенциально возможного трояна в системе с удалённым управлением.
2Как это SATtva, к примеру, сделал.
3Там, где анонимность — не довесок, а реально критична.
4Браузер, Skype, какие-то другие сетевые.
— unknown (28/03/2012 10:39, исправлен 28/03/2012 11:05)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Могу привести недавний пример.


Давно не отправлял gpg-писем.
Но поторопился отправить SATtva письмо (так что он не даст соврать :) о переводе материала для сайта.
Продлевал действие ключа, добавлял подключи. Заодно то ли что-то менял до этого в скриптах-алиасах, то ли как.
Ситуацию в точности воспроизвести не удалось, хотя было бы поучительно.


Но, как оказалось, в команде шифрования из-за нагромождения опций --encrypt-to, --hidden-encrypt-to и
неправильного их расположения (сначала нужно было бы ставить опции, а затем операции — --encrypt, --sign) и
злополучном применении опции --armor, то текст выглядел … закодированным в армор, понятное дело.
Но при этом оказался … подписанным, но незашифрованным (опция encrypt тихо проигнорировалась) и в таком виде и был отправлен. А armor кодировка скрыла сей факт от глаз.


Теперь для всех операций делаю gpg -v, перенаправление потоков в отдельные файлы и изучение выхлопа каждой
операции. А перед отправкой чего-либо важного делаю ещё и контрольное расшифрование (если добавлялось шифрование
на свой ключ).


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

— Гость (28/03/2012 11:05)   <#>
А перед отправкой чего-либо важного делаю ещё и контрольное расшифрование (если добавлялось шифрование
на свой ключ).

Этот ваш пгп такая камасутра? А еще нужно с бубном вокруг костра побегать?

К чему это я – если для отправки сообщения в супер-пупер системе нужно сделать перечень телодвижений, то обязательно случится так что пользователь забудет или бубен, или костер...
— unknown (28/03/2012 11:32, исправлен 28/03/2012 11:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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

— falkenberg (28/03/2012 15:20, исправлен 28/03/2012 15:34)   профиль/связь   <#>
комментариев: 20   документов: 1   редакций: 12

to spinore:
В целом согласен. За исключением пожалуй максимализма

Основной итог таков, что чем больше знаешь, тем лучше осознаёшь, насколько легко и дёшево вся защита обходится...

Оно в целом верно, если рассматривать безопасность как абсолют. В смысле асолюта безопасным себя чувствовать может лишь покойник (правда, ему надо сначала научиться что-то чувствовать – каламбур!) Для всех остальных она определяется с одной стороны степенью защищенности самого слабого звена, а с другой – ценностью того, что можно украсть. Технологически PGP думаю использует те же самые алгоритмы, что защищают ядерный чемоданчик, но было бы наивно считать что супер-мега-данные, хранящиеся у меня на компьютере, защищены с такой же степенью. Да даже если не на компьютере, а на флешке, хранящейся в сейфе. Потому как и его не спасти от взлома.. фомкой. Или там если вежливо попросят. Для хорошей защиты данные надо зашифровать, положить в яйцо, яйцо – в рыбу, рыбу – в птицу, птицу – в зайца, зайца – в клетку, засунуть его в замок, окружить тройным рвом. И еще подписать договор о ненападении со всеми ближлежащими иванами-царевичами. Другое дело что кому нужен доступ до любимой порнушки, чтобы ради нее идти на все это? Да даже ценность моего личного PGP-ключа не такова, чтобы внедрить мне трояна с помощью ментальных волн или каким-нибудь еще более простым способом. Конечно никто не застрахован на 100% от фишероф, но тут сильно помогает простая компьютерная гигиена. Кроме того есть еще какие-то правовые нормы по защите прайваси, не позволяющие внедрять троянов (ну... явных троянов) в программный код производителями ПО, поскольку они ответят за это по закону рублем или долларом. И все это в конце-концов упирается в понятие доверия. Как софту, который ты используешь, так и железу, на котором все это крутиться.
Можно конечно искать компромиссы и пытаться изолировать программы друг от друга. И в целом это неплохо. Но надо понимать что абсолюта не добьешся и в этом случае, а вот удобство работы может сильно пострадать. В современном десктопе приложения глубоко интегрированы друг с другом. В Windows браузер и система используют один и тот же keystore для сертификатов. Это так, лишь пример. Все равно все упрется в итоге в доверие к тому, что используешь. И, исходя из этого, (само)ограничение в доступных средствах.
Исходя из этого я нахожу предложенный способ не таким уж плохим. Если конечно с этого десктопа не управляют атомной станцией :)


PS. Только что пришел с семинара по облачным решениям от COMPAREX. Вот уж где без установления доверительных отношений вообще делать нечего! А ведь это – уже даже не завтрашний день, а сегодня. Имею в виду не именно COMPAREX конечно, а нынешнюю моду на облака.

— sentaus (28/03/2012 15:41)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
Кроме того есть еще какие-то правовые нормы по защите прайваси, не позволяющие внедрять троянов (ну... явных троянов) в программный код производителями ПО, поскольку они ответят за это по закону рублем или долларом.


Вы много таких случаев знаете? :)
— unknown (28/03/2012 15:47)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Технологически PGP думаю использует те же самые алгоритмы, что защищают ядерный чемоданчик, но было бы наивно считать что супер-мега-данные, хранящиеся у меня на компьютере, защищены с такой же степенью.

Если верить русской википедии (похоже эти факты действительно были):
* Джимми Картер носил коды запуска в пиджаке. Рональд Рейган — в бумажнике.
  • Однажды Джимми Картер забыл свой личный идентификатор (нужный для того, чтобы воспользоваться чемоданчиком) в кармане пиджака, отправленного в химчистку.
  • По утверждению генерала Хью Шелтона, где-то в 2000 году помощник, который хранит коды доступа, признался, что коды утеряны несколько месяцев назад.
Не следует думать, что какие-либо "стратегические объекты" хорошо охраняют (по крайней мере в информационном плане), просто более тщательно скрывают провалы и интенсивнее разыгрывают "театр безопасности".
— sentaus (28/03/2012 16:02)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
Не следует думать, что какие-либо "стратегические объекты" хорошо охраняют

Хочется верить, что их хотя бы хорошо охраняют по старинке, "оффлайново" :)
— falkenberg (28/03/2012 16:26)   профиль/связь   <#>
комментариев: 20   документов: 1   редакций: 12
Вера – движущая сила всего и вся :) Только она убеждает нас работать месяц, чтобы получить цыфирьки на свой счет в банке, или обменивать материальные блага или услуги на резаную бумагу. Она же убеждает нас в собсвенной физической и информационной безопасности, что, в общем, совсем неплохо. Иначе было бы гораздо хуже ;)
— unknown (28/03/2012 17:41)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Ну значит у большинства конвенционализм — своего рода религия.
— Гость (02/04/2012 06:55)   <#>

Напомнило (SATtva):
если ведётся обработка сверхценных данных, машина должна быть полностью автономной, никаких сетей, всё взаимодействие с внешним миром — через оператора и принтер.
На страницу: 1, 2, 3 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3