статья параноидального характера
Thursday, 9 May 2013 02:48![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вообще чем больше я думаю о ssh-agent в n810, доступном по usb serial и требующем подтверждения (с тачскрина и клавиатуры ноклы) для каждой попытки использования ключа - тем больше мне нравится эта идея.
Это ведь максимальная секьюрити из возможных. Можно пользоваться ключами и ходить на сервера с любых _не_вполне_доверяемых_ компьютеров, ничего им не раскрывая.
Все другие варианты, все эти криптофлешки с стеганографическими криптоконтейнерами, разлочиваемыми на две секунды, чтобы показать ключ агенту, и тут же вынимаемыми - это всё туфта и театр. Они в итоге все упираются в доверие машине, на которой работает ссшагент. Причём не только на эти две секунды, агенту ведь тоже можно послать SIGSTOP и дампнуть память.
А я вот не уверен, что могу полностью доверять даже собственному нетбуку, на котором загружена собственная лайв-система. И все эти ssh-add -x (уходя вечером с работы), если чуть поднять планку, тоже оказываются security theater.
Знаете почему? Потому что весь софт кривой и глючный. Воткнув usb устройство специального вида (которое стоит $5 FYI), можно выполнить произвольный код в X сервере, например. И, если я включенный ноутбук оставил без присмотра на десять минут, как бы и чем бы я его не лочил, можно смело рассчитывать на как минимум кейлогер, который прочитает пароль от агент лока. И ssh-add -D не поможет, потому что утром мне придётся опять скармливать агенту ключи, и внедрённый троян прочитает их, а кейлогер узнает пароли от них.
Поэтому, между прочим, Кенсингтона продаёт железные порт локеры.
2Bclear - я говорю не о вырывании ногтей и тыкании паяльником в яйца, что, конечно, заставит меня отдать все ключи и пароли без долгих раздумий. Меня на самом деле беспокоит потенциально ненулевая вероятность _скрытой_ компрометации. То есть, ну, я хотел бы по крайней мере знать о каждом инциденте.
Поэтому полностью "аппаратный" ssh-agent - от хоста не зависящий ничем и ни в чём ему не доверяющий, сам читающий ключи с флешек, и сам флешки для этого раскриптовывающий, позволяющий хосту только использовать ключи, и только при аппаратном же подтверждении, - рулит.
Токены кстати тоже не рулят, если у них нет Кнопки на каждое использование: я воткнул токен, и вот уже неведомый процесс им пользуется вовсю, и даже если запрашивается пароль, то кейлогер его уже прочитал.
А вот из n810 вроде получается - у неё свой экран и своя кнопка.
Это ведь максимальная секьюрити из возможных. Можно пользоваться ключами и ходить на сервера с любых _не_вполне_доверяемых_ компьютеров, ничего им не раскрывая.
Все другие варианты, все эти криптофлешки с стеганографическими криптоконтейнерами, разлочиваемыми на две секунды, чтобы показать ключ агенту, и тут же вынимаемыми - это всё туфта и театр. Они в итоге все упираются в доверие машине, на которой работает ссшагент. Причём не только на эти две секунды, агенту ведь тоже можно послать SIGSTOP и дампнуть память.
А я вот не уверен, что могу полностью доверять даже собственному нетбуку, на котором загружена собственная лайв-система. И все эти ssh-add -x (уходя вечером с работы), если чуть поднять планку, тоже оказываются security theater.
Знаете почему? Потому что весь софт кривой и глючный. Воткнув usb устройство специального вида (которое стоит $5 FYI), можно выполнить произвольный код в X сервере, например. И, если я включенный ноутбук оставил без присмотра на десять минут, как бы и чем бы я его не лочил, можно смело рассчитывать на как минимум кейлогер, который прочитает пароль от агент лока. И ssh-add -D не поможет, потому что утром мне придётся опять скармливать агенту ключи, и внедрённый троян прочитает их, а кейлогер узнает пароли от них.
Поэтому, между прочим, Кенсингтона продаёт железные порт локеры.
2Bclear - я говорю не о вырывании ногтей и тыкании паяльником в яйца, что, конечно, заставит меня отдать все ключи и пароли без долгих раздумий. Меня на самом деле беспокоит потенциально ненулевая вероятность _скрытой_ компрометации. То есть, ну, я хотел бы по крайней мере знать о каждом инциденте.
Поэтому полностью "аппаратный" ssh-agent - от хоста не зависящий ничем и ни в чём ему не доверяющий, сам читающий ключи с флешек, и сам флешки для этого раскриптовывающий, позволяющий хосту только использовать ключи, и только при аппаратном же подтверждении, - рулит.
Токены кстати тоже не рулят, если у них нет Кнопки на каждое использование: я воткнул токен, и вот уже неведомый процесс им пользуется вовсю, и даже если запрашивается пароль, то кейлогер его уже прочитал.
А вот из n810 вроде получается - у неё свой экран и своя кнопка.
no subject
2013-05-09 06:53 (UTC)прикольнее , как по мне, ssh + wifi
т.е. "просто" ssh gate на девайсе - с "чужой" тачки ломимся на телефон по ssh (заодно можно fingerprint сверить) затем на телефоне "открываем" ключи и решаем куда форвардить сессию.
правда если так гонять иксы (или rdp) оно конечно телефон греться будет
no subject
2013-05-09 07:25 (UTC)значит в идеале программа на телефоне должна быть всего лишь клиентом к удаленному доверенному серверу, который уже и манажит всю секурную часть
no subject
2013-05-09 07:56 (UTC)в нокле - ssh-agent. он участвует в ssh сессии один раз в самом начале.
no subject
2013-05-09 08:53 (UTC)no subject
2013-05-09 14:56 (UTC)и я думаю можно даже обойтись без шифрования на телефоне.
"новая тачка" ломится сразу на "гейт" в интернете (свой доверенный сервер)
телефон (посредством https) получает извещение и должен его подтвердить\отменить
получается даже проще схема
no subject
2013-05-09 15:06 (UTC)а спрашивать пароль на телефоне при каждой входящей ссш сессии ещё надо придумать как добиться, для openssh не существует штатных решений и способов вклиниться в авторизацию (разве что pam, которого в телефоне нет).
я другого хочу - ключами, один раз показанными кпкшке, может воспользоваться любой компьютер как ssh ключами (scp, rsync, whatever), при этом не имея доступа к самим ключам. Если в него воткнут физически шнурок и если на кпкшке я подтверждаю.
это всё делается штатными средствами ssh, ssh-agent и ляликсовым g_serial. единственное что придётся написать, это достаточно тривиальный unix socket 2 serial прокси на питоне.
при этом нокла даже не знает, куда и зачем я иду с её ключом, не говоря уж о перехвате траффика.
no subject
2013-05-09 15:21 (UTC)как-то неправильно, что "чужой" комп получает ключ "на руки"
тут уж либо телефон должен работать как криптоплата (не выдавая ключи на руки), либо как отдельный механизм авторизации (для разрешения этому "чужому" компу зайти на тот "свой" сервер)
no subject
2013-05-09 15:33 (UTC)no subject
2013-05-09 15:41 (UTC)википедия знает
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.
no subject
2013-05-09 15:43 (UTC)no subject
2013-05-09 16:01 (UTC)но ты же хочешь передать ключ ssh-agent на чужом компе, и тут уж local system - чужой комп
no subject
2013-05-09 16:19 (UTC)агент - в нокле. клиент агента может пользоваться ключами, но не может их вытащить из агента.
no subject
2013-05-09 17:20 (UTC)но всеравно не совсем удобно - на чужем компе надо шаманить (подставляя правильного агента)
no subject
2013-05-09 17:24 (UTC)нокла сейчас моделька и пруфофконцепт, я хочу сделать настоящее устройство формфактора мк802, но с экранчиком и парой кнопочек в идеале.
no subject
2013-05-09 17:31 (UTC)no subject
2013-05-09 17:48 (UTC)а хижакинг мы обходим очень просто - ssh-add -c и правильно выставленный (на нокле) SSH_ASKPASS.
соответственно на каждое использование ключа агент в нокле спрашивает разрешения, вызывая указанный мной скрипт - и это второй питоновский скриптик, который надо написать.
no subject
2013-05-09 17:32 (UTC)rmmod xhci_hcd
rmmod ehci_hcd
при оставлянии в опасном месте
=)))
no subject
2013-05-09 17:50 (UTC)