Слитые хешированные пароли Slack, утечки данных в Twitter, сообщения о взломе менеджера паролей LastPass. И это только малая часть того, чем пестрели новостные ленты в 2022 году.

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

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

«Меня прислал Кен»

Пароли или их эквиваленты использовались на протяжении веков. «Сторожевые слова» использовали древние римляне для получения доступа к охраняемым территориям. 

Шифры для кодирования и декодирования сообщений между военными командирами появились в Древней Греции около 400 года до нашей эры. Шифры выполняют ту же функцию, что и сторожевые слова и пароли — обеспечивают безопасность и ограничивают доступ.

Одно из самых ранних сообщений об использовании паролей содержится в книге Судей. Два семитских племени — гилеадиты и  эфраимиты — враждовали. Когда гилеадиты тайно проникли на территорию эфраимитов, те, чтобы обнаружить вражеских солдат, требовали от всех подозрительных чужаков произнести слово «shibboleth». Всё потому, что в их языках было тонкое различие в произношении слова shibboleth, а именно: согласного звука sh. По тому, как оно произносилось, определяли «своих». Не прошедших аутентификацию убивали.

«Случай с шибболетом» с картины Х. де Блуа, 1908 г.
«Случай с шибболетом» с картины Х. де Блуа, 1908 г.

Подобный способ аутентификации использовался на протяжении всей истории. Во время Битвы при Куртре (1302) фламандцы обнаруживали французов по их неспособности выговорить «Schild ende Vriend» (Щит и друг).

Во время фризского восстания (1515–1523) использовалась фраза «Buter, brea, en griene tsiis; wa’t dat net sizze kin, is gjin oprjochte Fries» (Масло, ржаной хлеб и зеленый сыр — кто не может это выговорить, не настоящий фриз). Корабли, экипаж которых не мог это произнести, не впускались в порт и захватывались.

А вот относительно современная история, известная как «резня петрушкой». В течение пяти дней в октябре 1937 года в Доминиканской Республике было убито около 35 000 гаитян. Доминиканские солдаты опознавали гаитян, держа в руках веточку петрушки и прося их произнести название. Если человек не мог произнести звук «р» в испанском названии петрушки (perejil), его убивали.

Пароли нашли свое применение и в США в эпоху сухого закона в 1920-х годах. Чтобы попасть в нелегальные бары, любители выпить сначала должны были назвать швейцару действующий пароль. Про это рассказывается не только в голливудских фильмах, но и в одной из первых успешных графических компьютерных игр Leisure Suit Larry in the Land of Lounge Lizards (1987), где герой должен назвать пароль, чтобы войти в бар. Фраза «Меня прислал Кен» с тех пор приобрела культовый статус. 

Ночной кошмар Фернандо Корбато

С тех пор система управления доступом «если у меня есть секрет, то есть и право на вход» трансформировалась в способ подтверждения личности — «если у меня есть секрет, то я тот, за кого себя выдаю». Вставка символов в определённом порядке, известном только пользователю с правом доступа, стала решением, позволяющим подтвердить свою личность.

Первый официальный пароль для компьютеров появился, когда американский учёный Фернандо Корбато представил его концепцию в Массачусетском технологическом институте в 1960 году. 

В 1960 году компьютеры в MIT использовались совместно несколькими пользователями в рамках системы CTSS (Compatible Time-Sharing System). Чтобы разные люди могли пользоваться одним компьютером и при этом хранить личные данные, к которым никто другой не имел доступа, Фернандо Корбато предложил первую систему защиты файлов паролем.

А уже через некоторое время появились и первые взломщики. Ранние пароли хранились в виде простых текстовых файлов. Докторант Алан Шир, который хотел больше времени проводить за общим компьютером, смог распечатать файл паролей системы и использовал «одолженные» учётные данные для входа в систему под разными именами, чтобы продолжать работу над собственным проектом. Через много лет, в 2014 году, сам Корбато назовет пароли «кошмаром». 

Фернандо «отец компьютерных паролей» Корбато собственной персоной
Фернандо «отец компьютерных паролей» Корбато собственной персоной

Со временем внимание к безопасности паролей возросло, предпринимались попытки сделать их надёжнее. 

В начале 1970-х годов криптограф и специалист по обработке данных Роберт Моррис (отец Роберта Таппана Морриса, который в 1988 создаст печально известного червя Морриса) разработал систему в составе ОС Unix, в которой пароли для аутентификации юзеров хранились в зашифрованном виде.

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

Чтобы добавить ещё один уровень безопасности, можно также «посолить» пароль — добавить дополнительное значение в конец пароля. «Соление» помогает предотвратить атаки с использованием хэш-таблиц и замедляет атаки перебором и по словарю.

Qwerty123

В 1988 году червь Морриса стал первым компьютерным червём в интернете. Он заразил каждый десятый компьютер в сети всего за 24 часа после своего появления. 

Червь использовал уязвимости в почтовом сервере Sendmail с подбором паролей по словарю. В те годы имя учётной записи (обычно реальное имя пользователя) часто совпадало с паролем.

Как и у Алана Шеера, намерения «червя Морриса» были безобидными, но этот инцидент положил начало новой эре кибербезопасности и подкинул хакерам новые идеи для краж паролей.

Как устранить пробел? Очевидно, что усложнять и сам пароль, и процедуру аутентификации.

Больше сложных паролей богу паролей
Больше сложных паролей богу паролей

Различные компании и регулирующие органы предъявляют свои требования к безопасности паролей.

Например, российский приказ Федеральной службы по интеллектуальной собственности от 14 июля 2015 г. N 97 «Об утверждении Положения по организации парольной защиты в Федеральной службе по интеллектуальной собственности» говорит следующее:

  • длина пароля должна быть не менее 8 символов;

  • в числе символов пароля обязательно должны присутствовать прописные буквы английского алфавита от А до Z, строчные буквы английского алфавита от а до z, десятичные цифры (от 0 до 10), неалфавитные символы (@, #,

  • пароль не должен включать в себя легко вычисляемые сочетания символов (имена, фамилии, наименования рабочих станций и т.д.), а также общепринятые сокращения и термины (qwerty, pa$$w0rd и т.п.);

  • при смене пароля новый пароль должен отличаться от старого не менее, чем двумя символами.

Со временем усложнялась и процедура входа.

В 1998 году компания AT&T получила патент на двухфакторную аутентификацию (2FA). За двухфакторной последовала многофакторная аутентификация (MFA).

MFA состоит из трёх основных элементов: что-то, что вы знаете (пароль), что-то, что у вас есть (телефон или MFA-токен, смарт-карта и т. д.), и что-то, чем вы являетесь (биометрия). Есть и четвёртый вариант, основанный на местоположении.

К 2022 году особо ничего не поменялось — люди как использовали слабые пароли, так и продолжают использовать. Самый распространённый пароль в мире — password, и хакерам требуется менее одной секунды, чтобы взломать его. То же самое можно сказать о втором и третьем по распространённости паролях: 123456 и 123456789 соответственно. 

Даже сами айтишники время от времени с удовольствием прибегают к «простым решениям». Это стало очевидным, когда хакерская группа OurMine атаковала аккаунты Twitter и Pinterest Марка Цукерберга. Пароль, который выбрал Цукерберг, оказался "dadada". Команда OurMine утверждала, что нашла его благодаря утечке данных на бизнес-сервисе LinkedIn, произошедшей в 2012 году.

Служить и сохранять

Если сильный пароль длинный и не интуитивный, то как запомнить всё то множество паролей для разных сервисов? Не на бумажке же записывать.

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

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

Например, самый популярный браузер Chrome использует DPAPI для шифрования паролей в Windows. Любое приложение, запущенное пользователем, может восстановить исходные пароли с помощью CryptUnprotectData.

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

Менеджеры паролей второго поколения используют сложные алгоритмы для защиты паролей с помощью мастер-пароля — ключа к разблокировке хранилища. Password Safe (2002 год) и KeePass (2003 год) — два известных менеджера паролей с открытым исходным кодом и защитой мастер-паролем.

Например, в KeePass 2.x  используются алгоритмы ChaCha20 и AES / Rijndael, считающиеся очень безопасными. AES (Rijndael) вступил в силу в качестве стандарта федерального правительства США и одобрен Агентством национальной безопасности для совершенно секретной информации. 

ChaCha20 — это преемник алгоритма Salsa20. Его ядром является генератор псевдослучайных чисел, и алгоритм основан на операциях Add-Rotate-XOR (ARX). Зашифрованный текст получается путём проведения операций XOR над открытым текстом с потоком псевдослучайных чисел.

Пример шифровки и дешифровки ChaCha20
Пример шифровки и дешифровки ChaCha20

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

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

Пример такого облачного менеджера паролей — 1Password. Для решения проблем с доступом к хранилищу в компании разработали алгоритм выведения двух секретных ключей (Two Secret Key Derivation, 2SKD).

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

Но несмотря на все уровни защиты, атакован может быть любой менеджер паролей. И мы хорошо в этом убедились на примере Last Pass. Буквально на днях инженер LastPass написал о деталях утечки. Вкратце: мастер-пароль пользователя используется для создания мастер-ключа к базе записей в контейнере и шифрования записей. Ключ генерируется как pbkdf2, но количество раундов (чем больше итераций, тем сложнее подобрать ключ) было разным. У новых пользователей по умолчанию были 100100 итераций, а у старых могло быть 5000, что делало их уязвимыми к методу перебора.

Беспарольный доступ будущего

Пароль по-прежнему критикуют за низкий уровень безопасности, поскольку в его основе лежат принципы, несовместимые с высоким уровнем безопасности. Сам принцип — общий секрет — приводит к двум векторам атаки:

  • Данные в пути: когда пароль может утечь или быть украден через прокси-сервер.

  • Данные в состоянии покоя: когда используются методы хранения с низким уровнем безопасности (обратимое шифрование вместо необратимого хэша, старый протокол типа sha-1, отсутствие соления или хранение пароля в виде обычного текста, прямо как в 60-е).

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

Также уязвимое место любой системы — это люди. Они плохо генерируют и запоминают сложные пароли, склонны пренебрегать правилами безопасности, а кроме того людей можно «взломать» методами социальной инженерии.

О том, что традиционный пароль должен умереть, Билл Гейтс говорил ещё в 2004 году. В ближайшее время это, вероятно, не произойдёт, но путь к беспарольной аутентификации начался уже давно — от брелоков, содержащих встроенные компоненты аутентификации для доступа к компьютерным системам в 80-х, до биометрического доступа сейчас.

Когда AT&T запатентовала первый инструмент MFA, компании включились в развитие беспарольных технологий. В 2004 году Microsoft помогла разработать устойчивую к взлому биометрическую идентификационную карту.

Пятого мая 2022 года Apple, Google и Microsoft объявили о планах по расширению поддержки стандарта беспарольного входа в систему, созданного FIDO Alliance  и World Wide Web Consortium.

Беспарольную аутентификацию можно разделить на две основные категории факторов владения: владение и биометрия. 

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

Примерами биометрической аутентификации может быть всё, что связано с уникальными физическими характеристиками человека, например, сканирование сетчатки глаза или отпечатков пальцев, а также распознавание голоса и лица. Например, как Face ID в iPhone.

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

Также не следует путать её и с двухэтапной верификацией (2SV), которая требует от пользователя выполнения ровно двух одинаковых действий, например, ввода пароля, а затем PIN-кода (оба основаны на знаниях).

О перспективах беспарольной аутентификации могут сказать рыночные тенденции. Ожидается, что к 2025 году рынок достигнет 25,2 млрд. долларов и постепенно увеличится до почти 53,6 млрд. к 2030 году. 

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


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Комментарии (23)


  1. swanrnd
    17.01.2023 14:40
    +6

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

    И получается, что если его выполнять, то надо историю паролей хранить в открытом виде. Очень вредный пункт


    1. DarthVictor
      17.01.2023 15:08

       что если его выполнять, то надо историю паролей хранить в открытом виде

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


      1. swanrnd
        17.01.2023 15:41

        Получается у нас был пароль 12345678 и хотим что-то вроде 123X5678.
        Храним хеши:
        2345678
        1345678
        ...
        Итого 8 хешей на минимальный пароль + основной. Это если замена будет символа на другой.
        Тут все классно.
        А вот, когда мы добавляем символ в начало, конец или середину 12345678X.
        Теперь надо каждый символ попробовать удалить. Получается 9.

        То есть в сумме храним 9 хешей вместо одного и при смене пароля делаем 18 вычислений хешей (8 + 9 + 1 (это проверка такого же пароля).
        Вроде не так страшно, но интересно кто-то так делает. Или я что-то не учел.



      1. aamonster
        17.01.2023 15:51

        Навскидку фильтр Блума можно пристегнуть, но не уверен, что это хорошая идея.


      1. user5000
        18.01.2023 10:26

        Хэши ещё и "солить" надо и "соль" каждый раз должна быть разная.


      1. doctorw
        18.01.2023 16:43

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


    1. Monrage
      17.01.2023 18:02
      +1

      А если при смене просить ввести старый пароль и сравнивать, и все это на стороне клиента?


    1. imbasoft
      17.01.2023 20:39

      при смене пароля новый пароль должен отличаться от старого не менее, чем двумя символами

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


      1. user5000
        18.01.2023 10:25

        А если у меня пароль vasya123, а затем я его поменял на petya456, а потом решил его опять поменять на vasya123 ?


        1. YMA
          18.01.2023 10:48

          Такого контроля (что новый пароль должен на N символов отличаться от предыдущих M паролей) я не встречал. Есть проверки, что не должен совпадать с предыдущими паролями, а это решается сохранением истории хэшей.


          1. user5000
            18.01.2023 12:27

            del


    1. Germanjon
      18.01.2023 07:27

      Тоже подумалось про ввод текущего пароля


    1. Tarakanator
      19.01.2023 09:38

      Не надо. В момент смены пароля пользователь вводит новый и старый пароль.
      Система может их сравнить, без обращения к своей БД.


  1. aamonster
    17.01.2023 15:45

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

    Вообще-то зависит от операционной системы. Доступ к защищённому хранилищу в норме делится по приложениям (естественно, это требует, чтобы приложения были подписаны).


    1. Tarakanator
      19.01.2023 09:40

      даже с мастер паролем не идеально. Почему чтобы расшифровать 1 пароль, я должен давать возможность расшифровать ВСЕ пароли?


  1. savostin
    17.01.2023 16:01
    +3

    Читал-читал (ну ладно, много скипал) и ждал в конце решений беспарольного доступа будущего. Но, видно, до этого будущего еще далеко.


    1. YMA
      17.01.2023 16:07

      Один из вариантов - comp128v3 в уме, запрос rand от компьютера, вычисляем в уме sres и вводим. Вуаля, мы аутентифицированы.

      Осталось только внедрить мозговые импланты из соседней хабротемы про контроль ИИ. :)

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


  1. anzay911
    17.01.2023 16:38
    +4

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


  1. v753
    17.01.2023 19:12
    +1

    Мастер-пароли пользователей были скомпрометированы.

    А везде пишут что: При этом в LastPass в очередной раз отметили, что мастер-пароли пользователей остались не тронутыми. 


  1. armid
    17.01.2023 20:56

    Насколько безопасно использовать https://www.passwordstore.org/ open source. Там по умолчанию GnuPG шифрование. Насколько оно стойкое?


  1. eugeneb0
    18.01.2023 10:52

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

    А это важно, если "стал злом" не владелец лица или руки, но владелец проверяющего его сервиса. Или чиновник, или корпорация. Пароль в этой ситуации можно сменить и уйти из-под несправедливого ограничения. Лицо или электронный "паспорт" -- нет.

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


    1. konst90
      19.01.2023 18:55

      Биометрия это не пароль, это связка логин+пароль. Она и идентифицирует вас, и (в идеале) не может быть скопирована другим человеком.

      А проблема "стал злом" и "несправедливое ограничение" это не про пароль, это про логин. Если вас забанят на Хабре, то вы можете сколько угодно менять пароль - право доступа вы себе не вернёте. Если вам принудительно поменяют пароль (а такое возможно) - зайти на Хабр под своей учёткой вы не сможете. Если вам запретят менять пароль (например, не показывая страницу смены пароля) - поменять пароль вы не сможете.

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


  1. aleks_raiden
    19.01.2023 22:26

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