вторник, 22 ноября 2011 г.

Камо грядеши?

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

Я долго не мог понять, как бы получше сформулировать то, что не дает мне покоя.

Попробую своими словами.

Проблема безопасности современных информационных систем, с ростом их масштаба, это проблема аутентификации пользователей.

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

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

Сначала немного школоло.

Давайте вспомним три основных вида аутентификации, существующие в природе.

Первый - "У меня есть". Ключ, смарт-карта, кредитка, крипто-токен.
Второй - "Я знаю". Пароль, отзыв, секретное слово, фразу, ответ.
Третий - "Я являюсь". Отпечаток пальца, голоса, сетчатки глаза.

Все три не являются идеальными.

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

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

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

Костыльное решение - многофакторная аутентификация, которая преподносится чуть ли не как панацея от всех бед, дьявольски неудобна для пользователей. И также недостаточно надежна и может быть взломана. Стоит вспомнить SNkey.

Инфраструктура PKI, несмотря на повсеместные дифирамбы дилетантов, как и было предсказано все тем же Брюсом, страдает целым рядом фатальных недостатков концептуального характера и за серьезную систему безопасности считаться не может вообще, до сих пор, несмотря на повсеместное распространение. В частности, именно в области аутентификации.

Но отставим пока enterprise authentification  в сторону. 

Поговорим о другой проблеме. Которую создали себе самостоятельно и собственноручно.

Я о миллионах хомячья в социальных сетях и аутентификации в веб-среде.

Традиционная аутентификация в вебе в большинстве случаев завязана на реальный e-mail пользователя с подтверждающей проверкой. Туда же обычно завязываются службы восстановления паролей, вспомните хотя бы ICQ.

А теперь внимание. Вдумайтесь. Для целей аутентификации используется один из самых древних и незащищенных протоколов - SMTP/POP3.

Я оставляю за скобками всякие блэкберри с их черным ходом для спецслужб. Или навороты Гугла с доступом к почте под SSL. Это все паллиативы, причем дерьмовые палливативы, если хорошо подумать и поднять глазки вверх, вспомнив о пробоях SSL. Эти "решения" я даже комментировать не хочу. Любому здравомыслящему теху очевидно, что это - не решение.

Ваш пароль передается по фактически открытому протоколу, S/MIME так и не прижился в более-менее приличном исполнении.

Оставим за скобками также так называемое шифрование, применяемое в повседневной практике. Существование OpenCL и устройства с названием Tesla не оставляет камня на камне от прикладных шифров. На видеокарте класса nVidia 8800 хэш MD5 берется за минуты на писюке-локалхосте.

Вернемся к проблеме аутентификации.

То, что электронная почта не может являться основой для аутентификации, на мой взгляд, очевидно. Отправка SMTP-почты телнетом от имени ЛЮБОГО адреса в дым разбивает идею тождества личности с ее мэйлом. Спамеры это ежедневно доказывают. Всякого рода disposable-мэйлы из той же серии.

Это прекрасно поняли некоторые социалки, которые стали подпирать аутентификацию пользователей сотовыми телефонами.

Идея опять-таки бредовая с учетом существующих реалий. Сим-карты клонируют. Не во всех странах действует ублюдочное законодательство о предьявлении паспорта при покупке сим-карты. Помимо существования необходимости такой вещи, как, например, прайвиси и необходимости/обоснованного желания остаться в ряде случаев анонимным. (усмехаясь) Скажете, на кой? Я простой человек, мне скрывать нечего? Расскажете это, кстати, Евгению Касперскому. Русскому человеку прайвиси - совершенно чужеродная концепция, в большинстве случаев. 

Но я отвлекся.

Вернемся к нашим баранам. У нас есть проблема с аутентификацией в Web 2.0. 

Причем проблема практически нерешаемая. 

Скан паспорта? Фейсбук и ВКонтакт пытаются использовать этот бред. Однако хочу процитировать один абзац из вышеприведенной ссылки:

"Личность в интернетах вообще НЕ МОЖЕТ доказать факт собственного существования. Фотографии, описания жизнедеятельности, отсканированные документы — доказательством не являются.
В интернетах нет ни меня, ни вас. Вещественны только мысли, а сама личность существует в форме «ментальной субстанции», которая является креативной единицей общего информационного поля."

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

Скан паспорта? Состряпаем в шопе или откорректируем скан своего паспорта. Редактирование растровых изображений - милое дело.

Кстати, помните ту забавную историю с Фейсбуком и Ахмедом Салманом Рушди? Да-да, тем самым. Которого отказались регистрировать под авторским именем даже после предъявления скана паспорта, результатом чего была схватка Салмана с администрацией Фейсбука.

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

А аутентификация на основе аккаунтов социалок и еще более бредовая вещь. Даже всевозможные OpenID являются фейком. Поскольку неверны концепции и предпосылки первичной аутентификации.

Одно время в вебе 1.0 действовала аутентификация на основе проверки существования кредитной карты путем фиктивной транзакции суммой 1 доллар. Однако и это фейк. Так как кредитка не является уникальным неподделываемем артефактом.

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

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

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

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

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

Контрвопрос. Допустим, вы - преступник. Как доказать вашу виновность в преступлении, совершенном, скажем, в интернете?

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

Опять-таки, возвращаясь к заголовку, существует ли в природе вообще сколько-нибудь достоверный способ убедиться, что человек именно тот, за кого себя выдает? Или что это тело именно ТОГО человека?

В общем-то, таких способов два.

Первый общеизвестен. Многоточечная проверка знания общих секретов, известных лишь очень ограниченному кругу лиц. Такая примитивная концепция, как "разделяемый общий секрет" все еще актуальна IRL. Особенно при достаточной глубине проверки и надежности проверяемых данных. "В каком баре мы с тобой надрались в Рио в 19мохнатом году и как звали проститутку, который ты набил морду?" ;)

Второй менее очевиден, и, в общем-то, менее достоверен. Молекулярный анализ ДНК, при условии, что у нас есть эталонный образец ДНК, полученный в условиях, исключающих подмену. Я не случайно выделил данную фразу. Как, например, США убедились, что перед ними Усама Бин Ладен? У них был образец ДНК маленького Усамы в роддоме? (оставим роддомы в покое. Аутентичность детей знают лишь акушерки и это отнюдь не исключает ни подмены, ни путаницы детей - намеренной или случайной).

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

Так что, "Никогда не говори, что человек мертв, пока ты не увидишь его тела. Но даже тогда ты можешь ошибиться" (С) Фрэнк Херберт, "Дюна".