id: Гость   вход   регистрация
текущее время 14:31 15/07/2024
Автор темы: falkenberg, тема открыта 27/03/2012 01:57 Печать
Категории: софт, gnupg, операционные системы
https://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 След.
Комментарии
— unknown (02/04/2012 10:03)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Ещё раз подумал: в практической деятельности скорее работает принцип "конвенционализм на службе прагматизма". Безопасность — из этой же области. :)
— Гость (02/04/2012 11:25)   <#>
Система должна быть настроена так, чтобы программы разного рода опасности были бы запущены в разных «песочницах».
Система (язык) программирования Эрланг?
— spinore (14/04/2012 19:36)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786

Вообще, это странно. Обычно, если порядок опций нарушен, gpg ругается, с чем я периодически сталкивался.


IMHO, достаточно зашифрованный файл попытаться расшифровать как gpg -vvv -d file, и сразу всё базовое будет видно (страховка от отправки незашифрованным).


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

— Гость (14/04/2012 21:17)   <#>
Заебали писать мелким и прозрачным шрифтом. Протокол это стенограмма, а не ваша попытка стеганографироваться от читателя.
— sentaus (14/04/2012 22:53)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
(опция encrypt тихо проигнорировалась)


Кстати, злополучная команда сохранилась? Вполне вероятно, что вы баг какой-то нашли :)
— spinore (14/04/2012 23:13)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Гость (14/04/2012 21:17), чтобы не засорять эту тему оффтопиком, ответил вам в /comment52123.
— unknown (15/04/2012 01:01, исправлен 15/04/2012 01:04)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Да, удалось разобраться. Это не баг и не то чтобы фича. В команде присутствует --sign, а опцию --encrypt в конце забыл просто скопировать и вставить в нужное место, в таком виде и оставил в скрипте. При этом наличие опций --encrypt-to и --hidden-recipient просто тихо игнорируется, gpg не выдаёт никаких сообщений вида: "вы уверены, а зачем вам эти опции, если мы ничего не шифруем, может забыли поставить --encrypt?"

— Гость (02/06/2012 14:34)   <#>
Хорошее решение, спасибо.
Вот немного изменённая версия с помощью стандартных средств убунту, без xbindkey:

  • sudo apt-get install xsel xautomation
cat > "$HOME/signx" <<EOF
#!/bin/sh

xte 'keydown Control_L' 'key a' 'keyup Control_L'
xsel -o | gpg --no-tty -a --no-emit-version -s | head -c -1 | xsel -ib
xte 'keydown Control_L' 'key v' 'keyup Control_L'
xsel -c
xsel -bc
EOF
  • chmod +x "$HOME/signx"
  • System Settings → Keyboard → Shortcuts → Custom Shortcuts → добавить новый, назначить команду /home/ВАШ ПОЛЬЗОВАТЕЛЬ/signx и забиндить хоткей.
— Гость (28/12/2012 05:46)   <#>
spinore, попытался вытворить у себя ваш фокус и обломался, никаких "KeyPress event" в выводе xev не наблюдаю, при нажатии появляется "PropertyNotify event..." и ничего больше. Я правда схитрил, сделал все через два графических терминала под иксами и sudo, но если честно думал так будет еще уязвимей. ЧЯДНТ?
— Гость (28/12/2012 07:10)   <#>

Проверьте для теста в лоб, как написано в инструкции, для начала. Я сейчас перепроверил с двумя графическими терминалами под одними и теми же иксами, когда в одном терминале запускается xev, а в другом уже сделано su -l root (ещё до запуска xev) и производится ввод пассфразы для шифрования gpg симметричным ключом. Т.е. рут шифрует файл, вводит пароль, а юзер этот пароль записывает в FILE. Например, нажатые символы qw отображаются в FILE как
KeyPress event, serial 17, synthetic NO, window 0x1600009,
    root 0x12d, subw 0x160000e, time 242352810, (303,451), root:(303,451),
    state 0x0, keycode 24 (keysym 0x71, q), same_screen YES,
    XLookupString gives 1 bytes: (71) "q"
    XmbLookupString gives 1 bytes: (71) "q"
    XFilterEvent returns: False
 
KeyRelease event, serial 17, synthetic NO, window 0x1600009,
    root 0x12d, subw 0x160000e, time 242352920, (303,451), root:(303,451),
    state 0x0, keycode 24 (keysym 0x71, q), same_screen YES,
    XLookupString gives 1 bytes: (71) "q"
    XFilterEvent returns: False
 
KeyRelease event, serial 17, synthetic NO, window 0x1600009,
    root 0x12d, subw 0x160000e, time 242353059, (303,451), root:(303,451),
    state 0x0, keycode 25 (keysym 0x77, w), same_screen YES,
    XLookupString gives 1 bytes: (77) "w"
    XFilterEvent returns: False
 
KeyPress event, serial 17, synthetic NO, window 0x1600009,
    root 0x12d, subw 0x160000e, time 242353059, (303,451), root:(303,451),
    state 0x0, keycode 25 (keysym 0x77, w), same_screen YES,
    XLookupString gives 1 bytes: (77) "w"
    XmbLookupString gives 1 bytes: (77) "w"
    XFilterEvent returns: False
(почему каждый символ дважды — не знаю). Короче, УМВР. Или у вас оба терминала были под su/sudo? Тот терминал, под которым запускается xev, должен соответствовать текущим основным иксам. Могу гипотетически предположить, что как-то влияет тип оконного менеджера, но это вряд ли.
— Гость (28/12/2012 07:50)   <#>
Чтоб делать в лоб, нужно поднимать sshd, а я не хочу.

Давайте по порядку, может я тупой.
1. Запускаю две сакуры (Sakura – эмулятор терминала)
2. В одной пишу su -l root
3. Там же пишу gpg -c .rnd
4. Иду в другую сакуру, пишу xwininfo | grep "Window id", получаю

5. Там же ввожу xev -id 0x3a00004
6. Иду в первый терминал, начинаю вводить пароль
7. Получаю:

И т.д. (надеюсь нигде не спалился :) Причем вот эти PropertyNotify event – именно при нажатии на клавиши появляются.
Ах да, ось конечно далеко не бубунта, но линух. И в файл я не пишу, смотрю все в терминале. Отличий вроде больше нет.
...

Ладно, гружу в VirtualBox Tails, чтоб типа эталон был. Делаю все тоже самое, так вот там на нажатия клавиш вообще никакой реакции от xev.
— Гость (29/12/2012 07:29)   <#>

После запуска xwininfo щёлкаете по выбранному окну (тому, где запущено gpg -c .rnd)?

А если просто, т.е. без всяких ssh и su? Один терминал с xev может ловить нажатия клавиш, которые происходят в другом терминале под тем же юзером?

Может быть, указанное поведение как-то отключается в настройках иксов и в Tails и/или новых версиях иксов отключено. Пусть другие читатели форума проверят. Unknown, у вас работает?
— unknown (29/12/2012 10:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Всё работает, только если после xwininfo щёлкнуть мышью по нужному окну и скопировать оттуда id.
— Гость (29/12/2012 10:42)   <#>
Ну, без этой операции с xwininfo команда xev просто не будет знать, события с какого окна ему слушать.
— Гость (30/12/2012 02:15)   <#>

Естественно, иначе откуда бы реакция на нажатия.

То же самое.

Короче, можно юзать su и sudo, я понял :)
На страницу: 1, 2, 3 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3