Почему хакерам так легко взламывать
Хотя может показаться, что создание пароля не такое уж и сложное дело, все же даже такие крупные и мощные компании как eBay, LinkedIn, а недавно и Facebook все же пострадали от этой проблемы, т.к. у многих их пользователей были скомпрометированы пароли. По словам Стива Лангана, руководителя специализированного страховщика Hiscox, в 2016 году ущерб глобальной экономике от кибер-преступлений составил более $450 миллиардов долларов США, было украдено свыше 2 миллиардов записей. Почему хакерам так легко подключаться к аккаунтам и получать безопасные пароли?
Во-первых, что самое главное, мы часто используем один и тот же пароль в разных местах. Свыше % населения используют одинаковый пароль на различных сайтах. А т.к. для % вообще трудно управлять своими паролями, то мы становимся невероятно открытыми для хакеров, особенно когда мы годами и даже десятилетиями не меняем свои пароли.
Люди также очень предсказуемы. Мы склонны использовать пароли, которые имеют то или иное отношение к нашей жизни, потому что их легко запомнить. Благодаря нашей способности визуальной памяти, нам проще запоминать изображения и информацию, с которой мы уже знакомы и которая имеет для нас определенное значение. Вот почему мы часто создаем простые для запоминания и весьма предсказуемые пароли, связанные, например, с членами нашей семьи, нашими животными или днями рождения.
Средний пользователь имеет порядка защищенных паролем аккаунтов, но для всех этих аккаунтов он имеет всего только пять различных паролей. Это делает нас более уязвимыми для взлома, особенно для атак типа «brute force». Свыше 85% американцев держат все свои пароли в голове, а ведь это практически невозможно запомнить 26 разных паролей. Имея множество разных паролей, следует установить программу, которая будет управлять паролями. Впрочем, такую программу использует всего 12% американцев.
Стандартное правило – менять пароли каждые 90 дней. Однако в последние годы этот метод был признан Лорри Кранор (Руководитель по технологиям в FTC и профессор компьютерных наук в Карнеги Меллон) неэффективным. Она обнаружила, что когда люди вынуждены менять свои пароли на регулярной основе, они применяют для этого меньше умственных усилий. Вот еще один способ, как хакеры могут воспользоваться отсутствием у людей усилий и желаний изменить или разнообразить свои пароли.
Сколько требуется хакерам времени, чтобы определить ваш пароль
Если ваш пароль очень простой, как слово “password” или “abcdefg”, то хакеру потребуется примерно 0,29 миллисекунд, чтобы его подобрать (по данным BetterBuys). Удивлены? А вот пароль типа 123456789 может быть подобран 431 раз за то время, пока вы моргаете. Даже более сложные пароли взламываются достаточно быстро. И если раньше на подбор какого-нибудь пароля у хакеров уходило до 3 лет, то теперь они могут это сделать за пару месяцев.
Хакеры сперва проверяют самые простые и распространенные пароли, а затем уже переходят к паролям с наименьшим числом символов. В то время как пароль с семью символами может быть взломан за 0,29 миллисекунд, то на взлом пароля из 12 символов может потребоваться до двух столетий. Чем длиннее пароли, тем больше времени требуется хакерам для получения правильной комбинации.
Солим
В терминах криптографии, «соль» – это последовательность случайных бит, которые добавляются к хэшируемой (или шифруемой) последовательности для «рандомизации» результата. Добавляя соли к паролям при хешировании, мы будем получать разные хэши для одинаковых паролей. Ну при условии, конечно же, что соль используется разная:
В качестве соли можно использовать (почти) что угодно: временную метку создания учетной записи, идентификатор или логин пользователя. Но лучше – случайную последовательность бит, не короче длины блока хэш-функции. И если вы используете в качестве hash функцию SHA2-256, то соль лучше брать 256-битную.
Схема взаимодействия чуть усложняется. Теперь сервер клиенту должен предварительно сообщать его соль, чтобы тот смог вычислить правильный хэш от своего пароля. Сам сервер не хранит ни пароль пользователя, ни прямой хэш от него. Он хранит предвычисленное значение hash(password, salt), которое ему сообщает пользователь один единственный раз в момент регистрации. При логине, сервер сравнивает полученный hash(password, salt) от пользователя с тем значением, что хранится у него в БД:
-
Клиент посылает серверу логин login
-
Сервер посылает клиенту соль salt для учетной записи login
-
Клиент вычисляет H = hash( password, salt ) и посылает серверу.
-
Сервер сравнивает H со значением, хранимым в БД.
Что мы имеем? Теперь взломщик БД столкнется с серьезным препятствием в деле восстановления исходных паролей пользователей. Радужные таблицы для всех возможных солей заранее не рассчитать. Особенно если у вас соли 256-битные. Также он не сможет использовать полученные хеши на других сайтах – они уникальны (при условии, что в качестве соли используется случайный набор бит, а не логин пользователя). И ещё – не сможет вычислить пользователей-«двойников».
Также заметим, что соль хоть и разная для разных пользователей, но не меняется со временем. А значит, злоумышленник MitM перехвативший однажды hash(password, salt), может использовать это значение для легального входа от имени жертвы. Тоже самое сможет сделать и взломщик БД.
1Password — сервис для семьи и бизнеса.
-
Облачное хранилище: 1-5 GB
-
Бесплатная версия: Нет
-
Плагины браузера: Chrome, Brave, Firefox, Edge
Для работы вам нужен мастер-пароль, однако вместо этого можно использовать биометрический логин, в качестве которого используется отпечаток пальца или лицо. Другой вариант 2FA — использовать ваш телефон для создания одноразового пароля.
Помимо всех основных платформ, 1Password поддерживает Chrome OS и командную строку. Что касается расширений браузера, вы можете выбрать Chrome, Firefox, Edge и Brave. Последний не поддерживается Dashlane и LastPass.
Этот менеджер паролей имеет автозаполнение и синхронизирует ваши данные на всех устройствах. Это также упрощает обмен паролями за счёт создания гостевых учётных записей. И самое приятное, 1Password не имеет ограничений на количество людей, которые могут пользоваться вашей учётной записью.
В 1Password есть ещё две функции, которые очень хороши. Первая называется Сторожевая башня. Это веб-сканер даркнета, похожий на тот, что есть у Dashlane. Однако он также проверяет, поддерживает ли веб-сайт 2FA и использует ли он HTTPS.
Режим путешествия — вторая функция, которую стоит упомянуть. Она нужна для сокрытия конфиденциальной информации на вашем телефоне, пока вас нет. Если вы потеряете телефон или кто-то украдет его, вы можете быть уверены, что вся личная информация в безопасности.
Перейти на 1Password очень просто. Вы можете импортировать данные из Chrome, обычного CSV и других популярных менеджеров паролей, включая LastPass и Dashlane. И хотя у него нет бесплатной версии, есть 30-дневная гарантия возврата денег, если вы передумаете.
Цена 1Passwords начинается с 2,99 доллара в месяц в год, но есть тарифный план на 5 пользователей, который стоит 4,99 доллара в месяц.
Плюсы
-
Проверяет взломанные пароли
-
Хорошая цена
-
30-дневная гарантия возврата денег
-
24/7 поддержка по электронной почте
Минусы
-
Нет бесплатной версии
-
Нет поддержки в чате
Насколько важен пользовательский пароль?
Ввиду повсеместного использования паролей для доступа к компьютерным системам всех типов, очевидно, что пароли очень важны. Но существует ли компромисс между безопасностью и удобством использования? Не привели ли попытки разработать политику, чтобы сделать более безопасными применяемые пароли, к фактическому снижению уровня безопасности системы из-за человеческого фактора? В известной статье Алекса Вайнерта (Microsoft) «Your Pa$word doesn’t matter» приведено описание реальных атак на пользовательские пароли, развеяны распространенные мифы о надежности паролей и поведении пользователей. Обобщенная информация представлена в следующей таблице:
Из всех распространенных атак, перечисленных выше, надежность пароля имеет значение только в двух случаях:
-
проводимые онлайн: перебор учетных записей (password spraying, password guessing);
-
проводимые офлайн: перебор паролей, взлом (brute force, database extraction, cracking).
Давайте рассмотрим их подробнее.
Обоюдный challenge
Казалось бы где тут подвох? Да почти нигде. Вот только, что если наш злоумышленник MitM вклинится в момент аутентификации и поменяет challenge от сервера на более простой (например – все нулевые биты, или вообще пустой)? Зачем? А чтобы попытаться облегчить себе задачу обратного восстановления H из Hs.
Защититься от такой потенциальной атаки можно, если клиент будет генерировать свой challenge и использовать его для хеширования пароля. Теперь на шаге 2, клиент вычисляет Hs = hash(H,server-challenge,client-challenge) и отправляет Hs вместе со своей версией challenge. Как результат, даже если сервер или клиент (или кто-то другой за них) случайно или намеренно решит поменять challenge на более примитивный, это не снизит уровень защиты исходного H, который, в свою очередь, защищает пароль.
NordPass — самый безопасный и удобный интерфейс
-
Облачное хранилище: 3 GB
-
Бесплатная версия: Да
-
Плагины браузера: Chrome, Firefox, Safari, Opera, Brave, Vivaldi, Edge
Диспетчер паролей NordPass является частью пакета онлайн-безопасности, который включает шифратор NordLocker и NordVPN. Чем же он хорош?
Начнём с того, что научиться пользоваться NordPass очень просто. Как и все остальные, он использует мастер-пароль для защиты вашего хранилища и синхронизирует все данные между устройствами. Также есть возможность использовать Touch ID или Face ID (только для iOS). Для двухфакторной аутентификации вам понадобится приложение для аутентификации и электронное письмо, на которое будет отправлен шестизначный код.
Этот менеджер паролей может работать на Windows, macOS, Linux, Android и iOS. С браузерами — та же история. Вы можете установить расширение NordPass в Chrome, Firefox, Safari, Opera, Brave, Vivaldi и Edge.
NordPass учитывает все особенности и потребность пользователя. Вы можете генерировать пароли и оценивать их надёжность, использовать автозаполнение и автосохранение, а также делиться учётными данными для входа. Разработчики недавно добавили сканер утечек данных, который сканирует утечки баз данных на предмет ваших паролей и данных кредитной карты. Не хватает лишь облачного хранилища для конфиденциальных файлов (есть отдельное приложение NordLocker, доступного через ту же учётную запись) или альтернативы внутреннему приложению аутентификатора.
Однако у NordPass есть некоторые уникальные особенности. Вы можете упорядочить данные в папках для облегчения доступа и использовать OCR для автоматического сканирования текстовой информации с кредитных карт, документов и фотографий. Более того, автономный режим позволит вам получить доступ к своему хранилищу, даже если нет подключения к интернету.
NordPass также предлагает множество возможностей для импорта ваших паролей. Сюда входят самые популярные менеджеры паролей, кроме Zoho Vault, и самые популярные браузеры, кроме Safari. К сожалению, вам придется вручную проверять, соответствует ли экспортированный файл критериям NordPass.
Наконец, NordPass предлагает шифрование XChaCha20 следующего поколения с использованием Argon 2 для получения ключей. Хотя нет ничего плохого в 256-битном AES, используемом конкурентами, XChaCha20 легче интегрировать и он меньше подвержен ошибкам в настройке. Добавьте сюда архитектуру с нулевым доверием, и вы получите действительно безопасное приложение для управления паролями.
NordPass имеет отличную службу поддержки, которая включает в себя круглосуточный чат, электронную почту и постоянно растущую базу знаний. Остается только дождаться появления большего количества функций и NordPass бросит вызов Dashlane в борьбе за первое место в списке лучших менеджеров паролей, это лишь вопрос времени.
Бесплатная версия мощная, но позволяет использовать только одно активное устройство и не предусматривает возможность безопасного обмена и доверенных контактов. Стоит 2,49 доллара США в месяц (при покупке на 2 года), и при этом NordPass даст вам 30 дней на то, чтобы передумать. Кроме того, он также принимает AmazonPay и криптовалюту.
Плюсы
-
Шифрование XChaCha20 нового поколения
-
Недорог
-
Многофакторная аутентификация
-
Мощная бесплатная версия
-
Вариант анонимной оплаты
-
Сканер утечки данных
Минусы
Нет облачного хранилища
Предлагаемый план действий
▍ Шаг 1 — примерно оцените свои риски
- Когда в последний раз обновляли и рассылали сотрудникам инструкцию по хранению паролей, и происходило ли это когда-нибудь?
- Указывает ли компания, какие браузеры считаются приемлемыми? Могут ли сотрудники устанавливать любой нужный им браузер? Есть ли у нас система инвентаризации ПО, показывающая, сколько установлено разных браузеров в нашей компании?
- Как отделы ИТ и Cloud Ops обмениваются неиндивидуальными паролями, например, аккаунтами от сервисов или логинами root?
- Есть ли в компании сотрудники, уже использующие специализированные менеджеры паролей по своей инициативе?
- У каких наиболее критически важных бизнес-систем необходимо защищать логины?
- Где мы обязательно требуем использовать 2FA / MFA или SSO для входа в критически важные системы?
▍ Шаг 2 — установите временную политику
- Все, кто пользуется для хранения паролей браузером Chrome, Firefox или Edge, должны включить функцию шифрования master- или primary-паролем.
- Все пароли, сохранённые в браузере до включения этой функции, должны считаться подозрительными и подлежат сбросу. Все пароли для критически важных бизнес-систем должны быть сброшены в течение дней, а все прочие должны быть сброшены в течение дней.
- Всем сотрудникам не рекомендуется сохранять новые пароли в своих браузерах, но это допускается при соблюдении приведённых выше условий.
- Не выполняющие эту политику сотрудники подвергают компанию потенциальной угрозе безопасности и могут быть подвергнуты дисциплинарным взысканиям.
▍ Шаг 3 — донесите до сотрудников изменения политики
Объявите о новой политике сотрудникам и предоставьте инструкции о том, как включить функцию шифрования в браузерах.
Отдел ИТ должен быть готов помогать сотрудникам с изменениями в конфигурации.
Сообщите об изменениях людям, занимающимся введением в штат новых сотрудников, чтобы они обучались политике с начала работы.
Повторяйте эту информацию в течение нескольких дней по разным каналам (электронная почта, чаты, совещания менеджеров и так далее), чтобы подчеркнуть важность политики и её соблюдения. Возможно, сотрудникам стоит в явной форме подтвердить своему руководителю или отделу ИТ, что они предприняли все необходимые шаги, указанные в политике.
▍ Шаг 4 — разработайте долговременное решение
Соберите высшее руководство, чтобы установить функциональные требования к менеджеру паролей, и выделите небольшую команду для проверки и оценки разных поставщиков
Особое внимание уделяйте функциям безопасности и управления. Обязательным требованием должна быть возможность централизованного принудительного включения 2FA / MFA.
Существует несколько продуктов с бесплатными версиями, которые могут быть экономным решением для масштабного развёртывания в крупной, чувствительной к затратам организации
Однако имейте в виду, что чаще всего бесплатные версии предназначены только для индивидуального использования, поэтому вы, скорее всего, не будете иметь контроля за их использованием (например, возможности принудительного включения 2FA / MFA).
После выбора продукта приложите большие усилия к разработке материалов обучения сотрудников и инструкций по администрированию для отделов ИТ до общего развёртывания системы для сотрудников. Донесите до всех, что может и чего не может сделать отдел ИТ в помощь сотрудникам, забывшим primary-пароль шифрования.
Разработайте план аудита всех хранилищ общих паролей. Как минимум раз в квартал проверяйте, что к общим паролям имеется доступ только у нужных людей.
Поработайте с людьми, отвечающими за введение и выведение из штата сотрудников, чтобы новые сотрудники обучались пользованию менеджером паролей и чтобы доступ уволенных сотрудников прекращался должным образом.
RememBear — хороший менеджер паролей для новичков
-
Облачное хранилище: Нет
-
Бесплатная версия: да
-
Плагины браузера: Chrome, Firefox и Safari
Создатели TunnelBear VPN создали RememBear, забавный, пушистый и удобный менеджер паролей. Но не позволяйте внешнему виду обмануть вас — внутри этого медведя вы найдете неограниченное пространство для хранения ваших данных, зашифрованных с помощью шифра банковского уровня.
RememBear — это менеджер паролей, который умеет хранить, синхронизировать и генерировать пароли. Вы также можете сохранять заметки, кредитные карты и логины, которые позже можно использовать для автозаполнения. Как и все остальные программы, RememBear поддерживает двухфакторную аутентификацию и биометрию (отпечаток пальца и лицо). А если вы потеряете свой мастер-пароль, для доступа к вашей учетной записи можно будет использовать уникальный ключ нового устройства.
У этого сервиса есть приложения для Windows, macOS, Android и iOS. Существуют также расширения для браузеров Chrome, Firefox и Safari, но они не являются автономными. В качестве причины компания ссылается на соображения безопасности, но это звучит странно, когда у конкурентов такой проблемы нет.
Что касается импорта данных, вы можете передавать пароли, кредитные карты и заметки из 1Password и LastPass. RememBear также может импортировать из Chrome.
Бесплатная версия демонстрирует лишь часть функций RememBear, Вы не сможете создать резервную копию своих паролей, то есть придётся хранить вторую копию в другом месте. Кроме того, синхронизация между устройствами не разрешена, поэтому после создания базы данных дома вы можете оказаться без доступа к паролям в дороге. И последнее, но не менее важное: бесплатная версия не имеет приоритетной поддержки, поэтому получение ответа может занять некоторое время. RememBear стоит от 2,5 долларов в месяц, что не так уж и дорого. К сожалению, большинство конкурентов бесплатно раздают функции, рекламируемые медведем как «Премиум». Даже приоритетная техподдержка не кажется такой захватывающей, потому что она не работает ни в режиме реального времени, ни в режиме 24/7.
RememBear стоит от 2,5 долларов в месяц, что не так уж и дорого. К сожалению, большинство конкурентов бесплатно раздают функции, рекламируемые медведем как «Премиум». Даже приоритетная техподдержка не кажется такой захватывающей, потому что она не работает ни в режиме реального времени, ни в режиме 24/7.
Плюсы
-
Один из самых дешевых
-
Неограниченное хранилище
-
Легко использовать
-
Простое восстановление мастер-пароля
Минусы
-
Небезопасность импорта
-
Бесплатная версия так себе
-
Нет анонимного платежа
4.2 Атаки, проводимые офлайн
Это единственный вариант, когда сложность пароля по-настоящему имеет значение. При такой атаке злоумышленник уже завладел базой данных учетных записей/паролей целевой компании, в которой пароли хранятся в хэшированном виде (вместо обычных текстовых паролей, что было бы слишком просто). В дальнейшем злоумышленник восстанавливает настоящие пароли из найденных хэш-сумм методом перебора с применением одного из множества свободно распространяемых инструментов (например, John the Ripper или L0phtCrack) или специальной программой, разработанной для этого самим злоумышленником.
Мы не будем подробно описывать принцип работы этих программ (существует множество открытых источников по взлому паролей), но в общем случае злоумышленник может сделать следующее:
-
Создать «брут-машину»: стандартное компьютерное оборудование с высокопроизводительной видеокартой, которое может вычислять и проверять несколько миллиардов несложных хэшей (MD5, SHA1, NTLM и т.д.) в секунду. Легкодоступные установки для добычи криптовалют (майнеры) могут без труда достичь скорости перебора в 100 миллиардов хэшей в секунду, а хорошо финансируемые злоумышленники (прогосударственные группировки) могут достичь скорости и в 100-1000 раз выше.
-
Перебрать все возможные пароли. При использовании майнера и предположении, что мощность словаря пароля составляет 96 символов, бездумное перебирание всех вариантов пароля займёт следующее время:
-
Ускорить перебор, используя дополнительные техники и знания:
-
изучив целевую организацию, злоумышленник может выяснить алгоритм хэширования и специфичные для неё правила генерации паролей (минимальная/максимальная длина, сложность и т. д.);
-
использовать списки паролей, полученные в результате предыдущих взломов (огромное количество паролей уже находятся в свободном доступе). После хеширования проводится проверка на совпадение с хэшами в целевой базе данных. По статистике, это позволяет взломать около 70% паролей пользователей;
-
если это не сработает, злоумышленник может составить список всех популярных фраз, текстов песен, заголовков новостей, частых запросов поисковых систем, википедии, популярных статей и т.д. Или взять готовый — подобные списки доступны в различных сообществах «хэшбрейкеров». Таким образом можно подобрать еще 5-7% паролей пользователей;
-
наконец, злоумышленник может использовать предугаданные шаблоны (например, пароль всегда начинается с заглавной буквы, затем 3-6 строчных букв, 2-4 цифры и восклицательный знак в конце) и подобрать более длинные пароли (до 12 символов). Это позволяет вскрыть еще 5-7% пользовательских паролей.
4. В случае использования «соли» для хранения паролей в базе (применения к хэшу дополнительного преобразования, усложняющего автоматический перебор), данные техники применяются не для всех хэшей, а для одного. Вместе с тем, атака проводится с высокой вероятностью успеха почти в 85% и за относительно короткий промежуток времени, что позволяет злоумышленнику перейти к следующей учетной записи и последовательно перебрать их все.
Здесь стоит отметить следующее:
-
данный метод перебора работает только в том случае, когда у атакующего есть база учетных записей/паролей. Как злоумышленник получил ее? Если уровень доступа атакующего достаточен, чтобы получить базу данных, то целью он, скорее всего, уже владеет;
-
если база данных учетных записей/паролей, полученная злоумышленником, не относится к цели, то взломанный пароль все равно нужно попробовать на реальной учетной записи в целевой системе;
-
человек вряд ли сможет создать надежный пароль, который выдержит описанные попытки взлома. Если противодействие им необходимо, используйте длинный и сложный пароль, сгенерированный автоматически. Например, созданный и управляемый менеджером паролей;
-
технические возможности для взлома хэшей постоянно растут. Неужели мы будем постоянно гнаться за ними, делая пароли всё длиннее, сложнее и труднее для запоминания, пытаясь справиться с одним-единственным сценарием атаки? Очевидно, будет лучше использовать более комплексный подход.
Таким образом, необходимости использования паролей со сложностью выше определенного разумного уровня нет. Так почему бы не разработать политику, поощряющую достаточно надежные пароли, которые легко создавать, запоминать и использовать? Данное руководство призвано помочь с этим, и мы продолжим в следующей части
Перевод: Аделина Любимова, Origin Security
-
TLS спасет мир
С тех пор много воды утекло. Разработчики стали опытнее, а взломщики – изворотливее. Массовое распространение получил HTTPS. Сейчас он продавливается так агрессивно, что кажется, будто вскоре вообще не окажется веб-приложений, не охваченных им. Правда это только кажется.
Ну а раз так, то зачем изобретать велосипеды? Передаем пароль как есть, и все дела. А о безопасности позаботится нижележащий слой TLS. Зря его что ли придумывали?
Кто-то удивится, но некоторые так и поступают. Пароль пользователя хранится в БД «как есть». Или передается «как есть» (в конце статьи приводятся примеры). А качестве бонуса разработчик получает возможность при смене пароля проверять, что он не совпадает с предыдущими версиями. И для пущей безопасности, заставим пользователя менять пароль каждые три месяца… Хочется сказать: «спасибо, что заботитесь о нас».
Вы можете не соглашаться, но факт есть факт: массовые утечки нехешированных паролей даже с крупных сайтов случаются. Точнее: именно благодаря таким утечкам мы и узнаем, что крупный сайт даже не удосужился захешировать наши пароли.
Кстати, почему только сайты. Многие аппаратные устройства хранят пароли в открытом виде.
Кто же может покушаться на процесс авторизации? Концептуально таких злоумышленников три класса:
-
«Человек-по-середине». Он же MitM, «сидящий на канале» клиент-сервер. Будем полагать, что у нас всегда активный MitM.
-
Взломщик БД, получивший в свое распоряжение дамп сайта и учётных записей его пользователей.
-
Атакующий на клиенте: всевозможные вирусы, трояны, клавиатурные шпионы, троянские скрипты на Web-странице от «партнерских» сайтов, административный ресурс.
Мы будем далее рассматривать только классы 1 и 2. Что касается атакующего на клиенте – то у него гораздо больше возможностей, чем у первых двух. И защититься от него в рамках нашей статьи не получится вовсе.
Также, давайте пока не будем обращать своё внимание на повсеместное распространение https. К нему много вопросов
И это тема отдельной статьи. Будем полагать, чего его нет вовсе. Тем более, что такое вполне может быть.
scrypt’им
В принципе, описанная выше схема уже надежна в некоторой степени. И уж более надежна чем предыдущие. Но тут есть одна засада.
Производительность компьютеров растет. И хотя закон Мура давно как не действует (по слухам, с 2006 года), и рост уже не экспоненциальный, на «плато» мы ещё не вышли. То что ранее считалось невозможным, теперь доступно многим. Например, аренда на время вычислительных кластеров с фантастической мощностью. Специализированных кластеров, заметим. Наточенных на число-дробильные операции, включая вычисление хешей. Спасибо за это криптовалютам.
Теперь взломщик БД может попытаться восстановить пароли интересующих его учетных записей, даже если они захешированы с солью (все восстанавливать нет смысла и не хватит времени).
Как? В начале по таблице известных паролей: синтетических qwerty, популярных 123 и когда-то угнанных реальных. Затем, путём тупого перебора символов из заданного алфавита. Алгоритм концептуально прост: берем пароль-кандидат, вычисляем hash( password, salt ), сравниваем результат. Соль учетной записи известна, ибо хранится рядом с хешем пароля.
На нашу беду, процесс перебора хорошо параллелится. А значит, в теории рост производительности не ограничен (правда только в теории; практика – вещь куда более суровая).
Этой проблемой озадачились уже достаточно давно. И в результате усилий криптографов, на свет появилась такая функция как scrypt.
Функция scrypt делает почти тоже самое, что и хэш-функция (на самом деле использует в качестве базы SHA2-256), но создана таким образом, чтобы усложнить атаку перебором при помощи ПЛИС: FPGA, ASIC и подобных. Она заставляет использовать в алгоритме много циклов и ветвлений (чего суперскаллярные процессоры крайне не любят), к тому же, требует слишком много памяти на одно ядро.
Поэтому, вместо стандартной хеширующей функции, мы будем использовать scrypt. WebCryptApi пока её не поддерживает, но для javascript-разработчиков есть уже реализованные библиотеки. В остальном схема взаимодействия пока остается прежней. И вроде бы, надежной.
Но защитит ли она от пассивного MitM? Нет. Ибо мы всё ещё посылаем на сервер всегда один и тот же хеш. А значит, перехватив передачу итогового хеша на сервер, злоумышленник может в последствии легально его использовать для входа под чужой учеткой.
Некоторые скажут, что MitM вообще можно было бы исключить из рассмотрения, ибо скоро нагрянет HTTPS. Но к этому протоколу большие вопросы. Использование https можно обойти и организационно. А надежность TLS – тема отдельной статьи. Да и к тому же, проектировать какие-либо защитные механизмы, надеясь на работу других средств безопасности, – наивно. Практика показывает, что более чем наивно.
Основные рекомендации по паролям: принцип их составления
Многие люди задаются вопросом о том, как защитить соцсети от взлома. Для того, чтобы существенно осложнить данный процесс, следует воспользоваться несколькими рекомендациями по выбору и составлению надежного пароля.
1. Борьба с наиболее распространенными паролями, в частности, qwerty.
Просто посмотрите на клавиатуру и обратите внимание, что клавиши расположены рядом друг с другом и никогда не совершайте такую глупость. Нельзя допускать, чтобы хотя бы два символа в пароле совпадали с раскладкой на ПК
2. Избежание коллизий.
Во время составления ключа шифрования избегайте такого момента, как повторение букв. Даже слово «Коллизия» – плохой шифр, поскольку в нем присутствуют две одинаковых буквы «Л». Запомните, что повторение одного и того же символа может существенно упростить подбор.
3. Установка ВПН.
Как бы это странно ни звучало, но VPN-сервис помогает обезопасить ваш аккаунт от взлома. Одним из таких является ALTVPN. Запомните, что кибер-преступники могут без проблем завладеть вашими данными, особенно в том случае, если вы активно используете точку Wi-Fi как общественную сеть.
4. Подбор оптимальной длины.
Почему-то некоторые пользователи думают, что, используя длинные слова, сумеют максимально обеспечить защиту своего аккаунта. Только здесь опять же часто встречаются повторы букв и есть возможность, что в какой-то момент код забудется.
5. Использование специального генератора.
Для тех, кто затрудняется придумать эффективный и надежный защитный ключ, который будет нереально взломать, существует генератор паролей Гугл. Этот сервис прост в использовании, поэтому можно буквально в течение нескольких секунд получить сложный, эффективный шифр.
Фишинговые атаки
Фишинговые атаки осуществляются хакерами, которые используют подложные электронные письма или веб-сайты для кражи ваших регистрационных данных. Речь чаще всего идет о письмах, которые маскируются под письма от вполне надежных и легальных компаний, в которых вас просят скачать файл или нажать на кнопку или ссылку. Чаще всего фишинговые атаки могут содержать хакерскую маскировку под ваш банк, что может привести к очень пагубным последствиям.
Как защитить себя
Будьте осторожны с письмами, которые приходят от непонятных отправителей, не персонализированы, просят вас подтвердить персональную или финансовую информацию или требуют от вас немедленных действий с помощью угрожающей информации. Не нажимайте на ссылки, не скачивайте файлы или не открывайте вложения от неизвестных отправителей. Никогда не отправляйте личную или финансовую информацию по электронной почте даже тем людям, кому вы доверяете, т.к. ваша почта может быть взломана.
Добавляем challenge
Ну хорошо. Давайте усложним жизнь и для MitM. Попытаемся добиться того, чтобы хеш от пароля на сервер передавался всегда разным. Как? А давайте «посолим» уже сам хэш! Тот самый, что нам дает функция scrypt( password, salt ). Для этого сервер сгенерирует и пошлет клиенту случайную последовательность байт (длина которой равна длине блока хеширующей функции), которую мы (по традиции) назовем challenge. Теперь схема взаимодействия клиента и сервера такова:
-
Клиент посылает серверу логин login
-
Сервер посылает клиенту соль salt для login и случайный challenge
-
Клиент вычисляет H = scrypt(password, salt) ; затем вычисляет Hs = hash(H, challenge); и отправляет серверу HS.
-
Сервер хранит оригинальный H клиента; он также вычисляет свою версию HS = hash(H,challenge) и сравнивает с присланной HS.
Разработчик этой схемы должен не забывать очищать на своей стороне challenge, который он использовал «только что», не давая вероятному MitM повторить вход пользователя «по горячим следам».