Salus populi suprema lex (988) (don_katalan) wrote,
Salus populi suprema lex (988)
don_katalan

Category:

Пра культ карго и "дуал-фактор"

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

Есть методы идентификации и методы аутентификации, и это две большие разницы. И там есть "факторные" методы. Однофакторные, двухфакторные, десятифакторные если захотеть. Где "фактором" может быть все что угодно, от знания пароля до какой нибудь железки. Есть разные системы контроля доступа, то есть авторизации, которые очень грубо делятся на 2 большие категории, MAC и DAC. Там все понятно в целом, но не всем понятно. Особенно в случае "распределенных систем" частным случаем которых есть и "удаленный доступ". Где сразу все совсем иначе, но не все это понимают.

Фишка в том что в "распределенных" системах авторизуется не так сам пользователь, как "удаленная" СИСТЕМА. А "пользователь" то уже потом. Там снова таки есть 2 принципиально разные модели, по одной из которых "удаленная система" является "доверенной" сама по себе, и идентифицируется, авторизуется и т.д. отдельно от пользователя. И уже потом авторизует некоего пользователя (или нескольких) уже "своими силами", но в рамках (и в сотрудничестве с) некоей общей РАСПРЕДЕЛЕННОЙ системой авторизации, идентификации и т.п. И это отдельный случай. Примерно так работают виндовые домены например и прочий kerberos. Но в данной схеме сама "удаленная система" (а даже не юзер) является объектом идентификации и авторизации. И даже его субъектом. И таки да, в том же AD "доменный компьютер" уже и есть по сути "пользователем", принципалом. С какими то там своими полномочиями, разрешениями и таким прочим. Это если кто не знал, а кто не верит - возьмите и просто посмотрите. Такой подход не просто так возник и он имеет некие достоинства, как впрочем и свои недостатки, о чем поговорим ниже.

Есть другой подход, где любая система с которой "настоящий пользователь" осуществляет вход - считается "доверенной" по умолчанию. Ну то есть считается что если пользователь таки пытается "с нее зайти" то он таки знает что он делает, и сам несет ответственность за "удаленную систему", а заодно - за все возможные последствия. Такая схема проще, но она несет свои специфические риски, и выдвигает там определенные требования к архитектуре. Примерами такого подхода есть большинство "интернет-сервисов" как то например почта (pop или imap). И то там "в чистом виде" так не делают, и все равно обычно есть некие ограничения на "удаленную систему" и попытки ее хоть как то идентифицировать (ну например по адресу сети). Ибо совсем уже "разрешить все" там плохо заканчивается.

Как первая так и вторая схема несут свои угрозы, как в первом случае - например всякая вирусня, банально файловая, или не очень банально, навродя всяких NoPetya. Во втором случае примерно то же самое, но иначе :) Ну как например черви почтовые и тому подобные пляски вокруг спама. Глобальная проблема в том заключается что если "удаленная система" скомпрометирована, то рано или поздно зловред получит доступ от имени самой системы (по первой модели) а так же и от имени самого авторизованного юзера который через нее работает. И это фундаментально. Этого не победить.

По сути дела это та же самая проблема MiM (человек посередине), которая является фундаментальной для любых "удаленных" или "распределенных" приложений. Проблема эта не нова и хорошо известна, и там есть целый ряд методов борьбы (более-менее эффективных) но все эти методы требуют определенных действий (и ресурсов) на обоих концах соединения. То есть требуют грубо говоря помощи как от "локальной" так и "удаленной" систем. Они должны чего то делать там "довольно умного" дабы угрозе этой противостоять. И в подавляющем большинстве случаев это что-то завязано на крипту. То есть на какие то нетривиальные (и очень быстрые) действия с циферками. То что может сделать компьютер, но не может сделать человек. То есть это по сути два компьютера между собой должны там как то посотрудничать ради "устранения угрозы", и обе стороны при этом должны быть добросовестны. Это может сделать компьютер, но не может сделать человек (пользователь) просто потому что он не в состоянии "в уме" использовать те алгоритмы, он не умеет настолько быстро дробить числа и даже их запоминать в таком количестве.

Что это дословно означает? Это означает что если хоть одна из систем, "локальная" или "удаленная" будут скомпрометированы, или вообще "изначально враждебны" то работать это не будет. То есть возможно будет воспроизвести ту же самую MiM-атаку но уже не из "канала связи" а "сбоку от него", изнутри любой из тех систем, локальной или удаленной. Той которая скомпрометирована. И это острая проблема, особенно во "втором сценарии". То есть с "неавторизуемой удаленной системой". И с горя там даже начали применять костыли, говно и палки, как то например капчу. То самое что должно взаимодействовать как раз "напрямую с пользователем", а не с "удаленной системой" к которой нет доверия. Делать что то такое чего человек может (пока что) сделать лучше чем компьютер. Что в случае капчи сводится задаче распознавания образов. Но это все говно и палки и вовсе не системное решение проблемы.

Теперь вернемся к "многофакторности", ко всем этим брелкам, свисткам, карточкам и т.д. Это определенное решение которое чего то там решает. Оно позволяет надежнее идентифицировать удаленную систему (и пользователя что на ней), отчасти помогает бороться например с тайным похищением ключей, паролей и т.д. Но никак не решает вопрос доверия к системе, локальной или удаленной. Никак не может нам помочь от того самого MiM ни в транспорте, ни уж тем более внутри оконечных систем. И даже наоборот, усугубляет ту проблему. Ибо скомпрометированная система получает доступ к "фактору" и может его использовать по собственному разумению даже без ведома пользователя (в общем виде). Во всяком случае так оно работает сейчас, в имеющемся виде.

И это не случайно, ибо все эти решения разрабатывались для работы в каких то "защищенных средах", корпоративных или даже государственных, военных и т.д. Где вопрос защиты локальных систем (и к ним доверия) решался целым комплексом мероприятий на что тратились большие деньги и усилия, просто по умолчанию. Эти механизмы никогда не имели своей целью защиту оконечных систем. Более того хочу сказать, вообще "двухфакторка" с аппаратными ключами наиболее актуальна именно в "первом сценарии", с авторизацией удаленной системы (именно как системы) и доверием к ней. Именно для тех сценариев все это было придумано и создано. Ибо именно та удаленная система (доверенная) выполняет важную часть функций по обслуживанию того "второго фактора", без которых его применение будет просто невозможным, или как минимум бессмысленным. А то и просто опасным. Таким это придумано, таким и остается.

Но тут следует отметить что попытки решить проблему - были. Например все эти вот "пароли через СМС" и прочее - теоретически являются тоже "вторым фактором", вернее даже третьим. То есть там какая то информация (подтверждающая например) передается по "независимому каналу" который вообще никак не связан с "потенциально ненадежной" локальной системой юзера, которая может быть скомпрометирована. То есть компрометация компа клиента никак не поможет предотвратить к примеру СМС. И "оба потока данных" по итогу пересекутся уже только через человека, через глаза клиента (и экраны двух устройств) а в голову к нему трояна не засадишь. Верней засадишь (и засаживают) но это уже "просто лохотрон", другая дисциплина.

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

Вот так вот точно и "двухфакторка" при ее использовании через заведомо ненадежные (и вообще никак не контролируемые) "локальные системы" станет огромнейшей дырой в любом секъюрити, вектором атак и прочих негараздив. С еще гораздо более разрушительными результатами. Ибо нужно же хоть в общем понимать как должно работать то чем ты собрался пользоваться, а не просто раздавать мартышкам ящики гранат. Решением проблем это не станет, но станет их источником.

Так что же делать, как спасаться? Есть ли вообще надежда на "цифровой рай"? В принципе она конечно есть. И все тут упомянутые сложности вполне решаемы. Если конечно понимать саму природу их, понимать в чем проблемы и в чем сама задача. Смотрите сюда внимательно, показываю на пальцАх. С "MiM" в разных его ипостасях можно бороться, но эту борьбу должны вести там 2 компьютера, с обоих концов "зоны риска". И они оба "должны быть надежны", быть в зоне доверия. Сервер провайдера услуги еще так-сяк можно обеспечить относительно этого условия (хотя и то не обязательно НА САМОМ ДЕЛЕ), а вот "клиентскую систему" увы. Во всяком случае в ее имеющемся виде (то есть значит фиг знает какой комп с кучей левого софта, и уж тем более - смартфон). Какое может быть решение? Поставить ту свистелку что "борется с угрозами" ЕЩЕ дальше по цепочке, ЗА тот "клиентский комп" а не "вовнутрь его", и обеспечить той свистелке "прямой интерфейс в мозгъ юзера". Только и всего. Элементарно.

То есть та "свистелка" которая должна быть кстати "доверенной системой" и "защищенной" должна не только (и даже не столько) "хранить ключи". А именно что "обеспечивать защищенный протокол взаимодействия" с системой удаленной, или какой то там ее "доверенной частью". В том числе с использованием всех криптоперделок и криптосвистелок, ключей с сертификатами и сильного колдунства про КСЗИ. Она должна висеть "в конце цепочки" и иметь "прямой интерфейс в мозгъ юзера" который уже некому и нечем перехватывать, который никак не зависит от потенциально компрометируемых элементов системы. Все крайне просто.

Де факто это должна быть просто коробочка какая то залитая трехсантиметровым слоем чугуния с тем же самым крипточипом внутри, но "чуть более умным", способным реализовать не только лишь хранение ключей но и какие то протоколы, многостадийные взаимодействия с "ответной частью" способные противостоять тем MiM атакам где бы не находился их источник, в т.ч. прямо "в системе пользователя". Все просто. И еще эта "коробочка" должна иметь экран какой то и хоть пару кнопок. То есть "интерфейс прямо в мозгъ". С функционалом близким к этим самым "СМС" что мы их уже обсудили. И все, и телемаркет. Должна ли она иметь при том какие то "независимые каналы связи", мобильные возможности, и прочее? Нет, не должна, ибо это дополнительный вектор атаки. Она должна быть проста и сурова как утюг, и даже еще суровее. Но это должно быть устройство совершенно отдельное и от компа и от мобилы и от всего гламура, имеющее крайне узкие свои функции. Вот это вам таки поможет. А ничего другого - не поможет.

Да, это дорого. Ну как "дорого", ну баксов 20 оно будет стоить. Ну может 50. Не особенно дороже "двухфакторного токена" и заметно дешевле мобилы. И то цена там будет в основном определяться толщиной чугуния. Кстати примерно такую же штуку можно применить и "на том конце" собственно "серверной части", со стороны поставщика каких то там услуг. Сильно упростив там вопросы секьюрности (и всякой валидации, сертификации) его софта, и даже железа. И даже при большом желании можно использовать ту вундервафлю в каких-нибудь фискальных даже целях. То есть подобная архитектура имеет возможности достаточно широкие и значительный потенциал при самых минимальных рисках. Вернее сильно сужая пространство этих рисков и сильно сокращая необходимую "зону доверия" а значит и затраты на ее контроль, верификацию, администрирование, эксплуатацию и т.д. То есть так что бы совсем на шару (понапихать в чужие смартфоны "приложений" от студентов) оно не будет. Хотя если посчитать стоимость хоть минимальной валидации и сертификации тех всех студенческих поделий, стоимость последующей их эксплуатации и кстати цену там проблем, которые возникнут, то неизвестно еще что дешевле будет. Зато тут "инновация" и даже еврогеи сдохнут от зависти, а может даже и суровые китайцы со своим "большим братом". Ну то есть тут уже "гулять так гулять" , если конечно гулять...


Пост спочатку надрукований тут: https://don-katalan.dreamwidth.org/2014069.html.
Tags: анализ, кукарека
Subscribe
promo don_katalan december 29, 2014 14:39 113
Buy for 50 tokens
Расшифровка секретного плана адмиистративно-территориального устройства России после ее распада От гуляющих по сети различных вариантов "государственного" устройства будущего российских территорий отличается наличием территорий в совместном управлении, возвратом исторических территорий…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment