Децентрализованная беспарольная система безопасности

Рассказывая про технологическую сторону блокчейна в статьях из цикла «Погружение в технологию блокчейн» мы столкнулись с вопросами: «Зачем это нужно? Какие проблемы решает? Как использовать?» Поэтому этот материал решили посвятить ответам на них на примере emcSSL – системы идентификации пользователей WWW на основе подсистемы NVS криптовалюты EmerCoin и децентрализованных клиентских SSL-сертификатов.

Что происходит?

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

Эта парадигма, идеальная для персональных компьютеров, стала давать слабину в многопользовательских системах, где взломщик, имея непривилегированный доступ, запускал на своём терминале программу, симулирующую стандартный логин, и таким образом оставлял ловушку для следующего оператора. Такие системы имели ограниченную популярность в студенческой среде 80-х, когда особо пронырливый студент вместо завершения сессии оставлял после себя такую вот ловушку в компьютерном классе. Эдакий прообраз современного фишинга.

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

Недавний пример – захват домена blockchain.info с последующим выуживанием паролей пользователей фальшивым сайтом и хищением биткоинов со счетов пользователей. 8 миллионов учётных записей оказались потенциально скомпрометированы. При этом сам сайт не был взломан, но была взломана сетевая инфраструктура, что и сделало возможным «выуживание» паролей фальшивым сайтом.

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

Например, несколько громких инцидентов последнего времени:

Adultfriendfinder – украдено 412 миллионов учётных записей;
OPM (база государственных служащих США) – украдено 22 миллиона записей;
Отечественные хакеры тоже не отстают – Взлом «ВКонтакте» скомпрометировал 171 миллион учётных записей.

Здесь уже не удаётся списать такие инциденты на «исключительный частный случай», можно говорить о том, что прослеживается система. Конечно, не будем спорить – каждый взлом был уникален по-своему, но результат одинаков – массовая компрометация учётных записей пользователей, репутационные потери сайтов и организаций, и в каких-то случаях – значительные финансовые потери как пользователей, так и для сайтов и их владельцев.

Глядя на текущее бедственное положение дел, встают два извечных русских вопроса, сформулированные ещё Герценом и Чернышевским:

Кто виноват?
Что делать?

Попробуем ответить на них по порядку.

Кто виноват?

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

Ключевой недостаток парольной аутентификации заключается в том, что оператор, предъявляя устройству пароль, полностью раскрывает свой секрет. Для доверенного устройства — это не страшно. Но в случае недоверенного устройства, или вмешательства злоумышленника, последний, перехватив пароль, получает полный доступ к учётным записям пользователя. Другими словами, пользователь, единожды раскрыв пароль, становится беззащитным против злонамеренных действий «с той стороны монитора». А так как вряд ли какое-либо устройство в современном сетевом мире можно считать доверенным, то хищение паролей становится неизбежным и систематическим. Попытки улучшить эту систему принуждением пользователей к частой смене паролей – раздражает пользователей, создаёт им массу проблем, и по сути является паллиативным решением. Таким же паллиативным решением являются современные системы двухфакторной авторизации на основе СМС, в которых требуется подтвердить владение ещё одним недоверенным устройством, подключённым к ещё одной недоверенной сети.

Вторым ключевым недостатком является централизация учётных записей, то есть хранение их в огромных базах. Если бы в учётной записи содержался бы только UserID, то «слив» такой базы не приводил бы к катастрофе – в конце концов, просто UserID не является секретной информацией. Но в базах, наряду с UserID, хранится и другая информация, разглашению не подлежащая – например хеши паролей. Да, хеш конечно же – не пароль. Но имея соответствующий словарь, по хешам удаётся восстановить значительную часть паролей слитой базы, порядка трети. К тому же, эвристические атаки на слабые пароли тоже кое-что добавляют. А далее – секрет известен, и ключи в руках злоумышленника.

Резюмируя вышесказанное – имеем:

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

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

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

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

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

Что делать?

Как было замечено выше, систематическая компрометации базы пользователей имеет смысл в случае применения обоих механизмов устаревшей архитектуры – паролей с полным раскрытием секрета, и централизации, делающей привлекательным и экономически выгодным хищение базы пользователей с их паролями. Отказ от любого из этих механизмов (а лучше – от обоих сразу) сделает бессмысленными взломы, подобные тем, которые рассмотрены выше.

Иными словами, необходима новая архитектура аутентификации, которая:

a. Не раскрывает секрет пользователя в процессе аутентификации серверу.
b. Использует децентрализованное хранение учётных записей.

В идеале – сервер должен знать о пользователе только UserID, и ничего более.

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

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

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

На основе этого инструмента такая архитектура была создана, и уже более года находится в эксплуатации. Встречайте героев нашего времени – emcSSL+InfoCard!