gns_ua: (russe)
gns_ua ([personal profile] gns_ua) wrote2013-05-09 02:48 am
Entry tags:

статья параноидального характера

Вообще чем больше я думаю о ssh-agent в n810, доступном по usb serial и требующем подтверждения (с тачскрина и клавиатуры ноклы) для каждой попытки использования ключа - тем больше мне нравится эта идея.

Это ведь максимальная секьюрити из возможных. Можно пользоваться ключами и ходить на сервера с любых _не_вполне_доверяемых_ компьютеров, ничего им не раскрывая.

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

А я вот не уверен, что могу полностью доверять даже собственному нетбуку, на котором загружена собственная лайв-система. И все эти ssh-add -x (уходя вечером с работы), если чуть поднять планку, тоже оказываются security theater.

Знаете почему? Потому что весь софт кривой и глючный. Воткнув usb устройство специального вида (которое стоит $5 FYI), можно выполнить произвольный код в X сервере, например. И, если я включенный ноутбук оставил без присмотра на десять минут, как бы и чем бы я его не лочил, можно смело рассчитывать на как минимум кейлогер, который прочитает пароль от агент лока. И ssh-add -D не поможет, потому что утром мне придётся опять скармливать агенту ключи, и внедрённый троян прочитает их, а кейлогер узнает пароли от них.

Поэтому, между прочим, Кенсингтона продаёт железные порт локеры.

2Bclear - я говорю не о вырывании ногтей и тыкании паяльником в яйца, что, конечно, заставит меня отдать все ключи и пароли без долгих раздумий. Меня на самом деле беспокоит потенциально ненулевая вероятность _скрытой_ компрометации. То есть, ну, я хотел бы по крайней мере знать о каждом инциденте.

Поэтому полностью "аппаратный" ssh-agent - от хоста не зависящий ничем и ни в чём ему не доверяющий, сам читающий ключи с флешек, и сам флешки для этого раскриптовывающий, позволяющий хосту только использовать ключи, и только при аппаратном же подтверждении, - рулит.

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

А вот из n810 вроде получается - у неё свой экран и своя кнопка.

[identity profile] ctype.livejournal.com 2013-05-09 06:53 am (UTC)(link)
меня смущает usb serial - этак можно сессию логать.
прикольнее , как по мне, ssh + wifi

т.е. "просто" ssh gate на девайсе - с "чужой" тачки ломимся на телефон по ssh (заодно можно fingerprint сверить) затем на телефоне "открываем" ключи и решаем куда форвардить сессию.
правда если так гонять иксы (или rdp) оно конечно телефон греться будет

[identity profile] ctype.livejournal.com 2013-05-09 07:25 am (UTC)(link)
но если углублятся дальше, то и сам девайс - слабое звено.
значит в идеале программа на телефоне должна быть всего лишь клиентом к удаленному доверенному серверу, который уже и манажит всю секурную часть


[identity profile] gns-ua.livejournal.com 2013-05-09 07:56 am (UTC)(link)
ты о чём? никакой не гейт и не форвард сесии.

в нокле - ssh-agent. он участвует в ssh сессии один раз в самом начале.

[identity profile] gns-ua.livejournal.com 2013-05-09 08:53 am (UTC)(link)
ты ломишься с чужой тачки на телефон по ссш, и - хоп! теперь чужая тачка умеет сама ходить на твой телефон. здорово придумано.

[identity profile] ctype.livejournal.com 2013-05-09 02:56 pm (UTC)(link)
ага. только при каждой новой сессии телефон просит ввести пароль. ты же єтого хотел ?
и я думаю можно даже обойтись без шифрования на телефоне.
"новая тачка" ломится сразу на "гейт" в интернете (свой доверенный сервер)
телефон (посредством https) получает извещение и должен его подтвердить\отменить
получается даже проще схема

[identity profile] gns-ua.livejournal.com 2013-05-09 03:06 pm (UTC)(link)
ты в курсе, как работает и что именно делает агент? через него трафик не ходит.

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

я другого хочу - ключами, один раз показанными кпкшке, может воспользоваться любой компьютер как ssh ключами (scp, rsync, whatever), при этом не имея доступа к самим ключам. Если в него воткнут физически шнурок и если на кпкшке я подтверждаю.

это всё делается штатными средствами ssh, ssh-agent и ляликсовым g_serial. единственное что придётся написать, это достаточно тривиальный unix socket 2 serial прокси на питоне.

при этом нокла даже не знает, куда и зачем я иду с её ключом, не говоря уж о перехвате траффика.

[identity profile] ctype.livejournal.com 2013-05-09 03:21 pm (UTC)(link)
>>я другого хочу - ключами, один раз показанными кпкшке, может воспользоваться любой компьютер как ssh ключами (scp, rsync, whatever), при этом не имея доступа к самим ключам.
как-то неправильно, что "чужой" комп получает ключ "на руки"
тут уж либо телефон должен работать как криптоплата (не выдавая ключи на руки), либо как отдельный механизм авторизации (для разрешения этому "чужому" компу зайти на тот "свой" сервер)

[identity profile] gns-ua.livejournal.com 2013-05-09 03:33 pm (UTC)(link)
он НЕ получает ключ на руки ни при каких обстоятельствах. Ты в курсе, как работает ssh-agent?;))

[identity profile] ctype.livejournal.com 2013-05-09 03:41 pm (UTC)(link)
>> он НЕ получает ключ на руки ни при каких обстоятельствах. Ты в курсе, как работает ssh-agent?;))
википедия знает
On the local system, it is important that the root user is trustworthy, because the root user can, amongst other things, just read the key file directly.



[identity profile] gns-ua.livejournal.com 2013-05-09 03:43 pm (UTC)(link)
local system в данном случае нокла. да и файла ключа не существует, как только он загружен в агента.

[identity profile] ctype.livejournal.com 2013-05-09 04:01 pm (UTC)(link)
ну если нокла устанавливает ssh соединение, то да, она для ssh-agent - local system
но ты же хочешь передать ключ ssh-agent на чужом компе, и тут уж local system - чужой комп

[identity profile] gns-ua.livejournal.com 2013-05-09 04:19 pm (UTC)(link)
соединение устанавливает чужой комп, и для этого пользуется сокетом ссшагента (в данном случае проведенного через usbserial).

агент - в нокле. клиент агента может пользоваться ключами, но не может их вытащить из агента.

[identity profile] ctype.livejournal.com 2013-05-09 05:20 pm (UTC)(link)
да. ты прав
но всеравно не совсем удобно - на чужем компе надо шаманить (подставляя правильного агента)

[identity profile] gns-ua.livejournal.com 2013-05-09 05:24 pm (UTC)(link)
а агента подсовываешь любым socat/netcat. по факту нокла может ещё выдать ридонли "флешку" или даже "сидюк" с правильным агентврапером.

нокла сейчас моделька и пруфофконцепт, я хочу сделать настоящее устройство формфактора мк802, но с экранчиком и парой кнопочек в идеале.

[identity profile] ctype.livejournal.com 2013-05-09 05:31 pm (UTC)(link)
ну и не совсем понятно как ты собираешь обходить ssh agent hijacking (да. я таки прочитал доку)

[identity profile] gns-ua.livejournal.com 2013-05-09 05:48 pm (UTC)(link)
ну слава Богу, а то я уж подумывал озвучить прайс на чтение вслух манов =)

а хижакинг мы обходим очень просто - ssh-add -c и правильно выставленный (на нокле) SSH_ASKPASS.

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

[identity profile] fsck-all.livejournal.com 2013-05-09 05:32 pm (UTC)(link)
>Воткнув usb устройство специального вида (которое стоит $5 FYI), можно выполнить произвольный код в X сервере

rmmod xhci_hcd
rmmod ehci_hcd

при оставлянии в опасном месте

=)))

[identity profile] gns-ua.livejournal.com 2013-05-09 05:50 pm (UTC)(link)
ты понимаешь, это действительно путь, - но он требует бросить курить =)