Критическая ошибка в криптографическом пакете OpenSSL стала одной из самых серьёзных угроз безопасности за всю историю интернета. На протяжении двух лет через неё можно было выполнять скрытый и совершенно бесследный несанкционированный доступ к большей части узлов Всемирной паутины. Как защитить себя во враждебном сетевом окружении, где разом было утрачено доверие к SSL-сертификатам и защищённому протоколу HTTPS?
Из-за уязвимости Heartbleed под ударом оказались серверы популярных сайтов, компьютеры удалённых пользователей и сетевые устройства сложнее хаба. Компания Cisco представила впечатляющий список оборудования, который подвержен данной ошибке. Другие фирмы сейчас либо готовят аналогичные списки, либо просто игнорируют проблему.
![Игровой сайт mmdoc.ru остаётся уязвимым спустя четыре дня после выхода патча (скриншот сайта possible.lv).](http://www.computerra.ru/wp-content/uploads/2014/04/Vulnerable.jpg)
Даже после выхода патча многие узлы в сети останутся уязвимыми неопределённо долго. Авторизация на сайтах и в почте, использование онлайн-банкинга и интернет-магазинов — всё это теперь крайне рискованно. Пользователям следует перестать полагаться исключительно на репутацию брендов и начать самим предпринимать активные шаги. Вот краткий перечень того, как можно повысить свою безопасность:
- проверить домашний роутер по спискам уязвимого оборудования, обновить прошивку (если она вышла после седьмого апреля) или отключить удалённое администрирование;
- выполнять проверку наличия незакрытой уязвимости Heartbleed на всех сайтах, работающих по протоколу HTTPS, перед их посещением;
- сгенерировать стойкие пароли. Их не обязательно хранить или помнить: есть проверенный способ, о котором написано ниже;
- сменить все пароли (а также секретные вопросы для их восстановления);
- перейти (где это технически возможно) на двухфакторную авторизацию.
Теперь обо всех перечисленных этапах подробнее.
Когда стало известно об уязвимости Heratbleed, владельцы сайтов поспешили перейти на исправленную версию пакета OpenSSL и перевыпустили скомпрометировавший себя цифровой сертификат SSL. К сожалению, столь разумно пока среагировали лишь единицы.
Помимо слегка перегруженного сайта Possible, ещё одна форма для проверки любого сайта представлена здесь. Реализована она далеко не идеально — требует прямого указания порта (обычно это 443) и грешит ложноположительными результатами.
![Проверка наличия уязвимости Heartlbeed на сайте магазина Google Play (скриншот сайта filippo.io).](http://www.computerra.ru/wp-content/uploads/2014/04/Check-google.jpg)
(скриншот сайта filippo.io).
Косвенно убедиться в том, что на конкретном сайте проблема была устранена, можно по дате выдачи его сертификата. Он должен быть сгенерирован после седьмого апреля этого года — дня публикации патча. Сделать такую проверку можно на специализированном веб-сервисе. Просто введите имя сайта и… скорее всего, вы убедитесь, что он до сих пор уязвим к данному виду атаки.
![Проверка наличия уязвимости Heartlbeed на сайте Facebook (скриншот сайта lastpass.com).](http://www.computerra.ru/wp-content/uploads/2014/04/LastPass-facebook.jpg)
Более продвинутая методика тестирования сайта работает на сайте SSL Labs. Недавно в неё была добавлена отдельная проверка на уязвимость Heartbleed.
![Проверка сайта дополнений для браузера Firefox (скриншот сайта ssllabs.com).](http://www.computerra.ru/wp-content/uploads/2014/04/Qualys_SSL-Labs.jpg)
Коснулась ли ошибка в OpenSSL именно вас, узнать практически невозможно. Её использование не оставляет никаких следов и выглядит совершенно легитимно для всех защитных программ. Поэтому на уровне пользователя в таких случаях срабатывает универсальное правило смены всех паролей доступа.
Здесь возникает новая дилемма: поскольку десятки новых паролей легко забыть, их либо придумывают попроще, либо где-то записывают. Часто это обыкновенная бумажка или текстовый файл.
Брелок — устройство, позволяющее потерять все ключи одновременно.
Более продвинутые пользователи используют менеджеры паролей. В этих программах все данные для авторизации на различных ресурсах хранятся в зашифрованном файловом контейнере, доступ к которому открывается после ввода мастер-пароля — единственного, который в такой схеме приходится помнить.
Главный недостаток метода заключается в том, что, забыв мастер-пароль или повредив базу, пользователь лишается доступа сразу ко всему. Аналогично, в случае удачной атаки на зашифрованный контейнер, такая программа позволяет скомпрометировать все ваши пароли сразу.
К тому же надёжность большинства менеджеров паролей довольно сомнительна. Они сами часто содержат ошибки в реализации криптографических схем или вовсе дублируют данные в открытом виде, забывая удалять их из оперативной памяти и временных файлов. Например, во время аудита программы LastPass 2.0.20 специалисты Sophos обнаружили, что все пароли браузера Internet Explorer сохраняются в дампе памяти.
Не хранить, а творить!
Между тем существует универсальный способ превратить легко запоминающийся и даже очевидный пароль в стойкий ко взлому. Основан он на свойствах хеш-функций и весьма удобен в повседневной практике.
Лёгкий пароль должен содержать какую-то очевидную переменную часть. Например, имя сайта. Помимо неё, надо добавить что-то уникальное и постоянное, называемое «солью». Пусть в нашем примере это будет число сорок два. Выбираем любую хеш-функцию (как вариант — MD5) и вычисляем её, подставляя в качестве исходных данных наш «солёный» пароль.
Таким образом примитивный пароль «vk.com42» превращается в стойкий «EE61518029FF5AF634C1A867B064D600», а «twitter.com42» — преобразуется в «28D1FF535970D9927B099BB0897677CF». Именно эти последовательности из тридцати двух символов и следует использовать для доступа на сайты «ВКонтакте» и Twitter соответственно.
Запоминать их нет смысла, так как легко вспомнить сам метод получения. Нужный пароль отображается сразу после ввода комбинации [имя_сайта + соль] в любом хеш-калькуляторе и переносится через буфер обмена (который потом сразу очищается вручную).
![Вычисление хеш-функции MD5 произвольной строки (скриншот).](http://www.computerra.ru/wp-content/uploads/2014/04/DAMN_Hash_Calc.jpg)
Для Windows это может быть бесплатный DAMN Hash Calculator, а для Android — Hash Droid. Кроме того, существуют онлайн-сервисы вычисления хеш-функций строки или файла через простейшую форму на сайте.
![Веб-сервис для вычисления хэш-функции MD5 (скриншот сайта onlinemd5.com/).](http://www.computerra.ru/wp-content/uploads/2014/04/MD5_online.jpg)
Примечание: Старайтесь использовать только цифры и символы латиницы. Буквы кириллицы имеют разные коды в национальных кодировках. Содержащие их пароли будут по-разному обрабатываться другими хеш-калькуляторами.
Дополнительно можно повысить стойкость таких паролей, внеся в них некоторые модификации. Например, удалить последний знак, поменять местами два первых, использовать одну хеш-функцию и сокращать результат до размера другой… Вариантов масса. Каким будете пользоваться именно вы, узнать практически невозможно.
Когда есть сомнения в надёжности самой схемы авторизации, считают, что атакующая сторона способна перехватить пароль. В таком случае его длина и сложность уже не играют важной роли, а требуется дополнительный уровень защиты.
Двухфакторная схема авторизации подразумевает, что, помимо пароля, легитимный пользователь предоставляет для входа в систему что-то ещё. Это может быть аппаратный ключ, биометрические данные или дополнительный пароль, отправляемый ему после ввода первого по другому каналу связи (например, в СМС).
Именно таким образом уже работает большинство платёжных систем. Есть надежда, что уязвимость Heartbleed простимулирует более широкое внедрение двухфакторных схем аутентификации, обратит внимание пользователей на современные методы защиты данных и поспособствует оздоровлению интернета в целом.