поиск по сайту
Вынужденная небезопасность при хранении паролей

Вынужденная небезопасность при хранении паролей

В. В. Кравец

С широким распространением социальных сетей и других популярных интернет-сервисов многие пользователи компьютеров начали понимать необходимость надлежащим образом обеспечивать свою безопасность при работе в интернете. Легко представить ход мыслей обычного пользователя: «Если кто-то узнает мой пароль от социальной сети, то узнает с кем я общаюсь, о чем, как долго...», «Если кто-то узнает мой пароль от почты, то узнает какие новостные рассылки мне интересны, какие товары я покупаю, мои пароли от других сервисов...». Компрометация пароля к почтовому ящику приводит, пожалуй, к самым серьезным угрозам. Сейчас почти все сервисы используют привязку к e-mail, а значит, злоумышленник, получив доступ к почте, сможет получить доступ к аккаунтам привязанных сервисов, например через функции аналогичные восстановлению забытых паролей. Тот, кто знает, пароль может выдать себя за реального владельца аккаунта того или иного сервиса.

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

Большинство систем безопасности работают на одном из двух аутентификационных признаков: «Я знаю что-то уникальное» или «Я владею чем-то уникальным». Границы между этими двумя понятиями не всегда достаточно четкие, но все-таки знание пароля больше подходит под первый пункт. Поэтому, когда мы вводим пароль, то мы тем самым предъявляем «имеющееся уникальное знание», которое сервер проверяет. Мы нажали кнопку «сохранить пароль» и наше знание оцифровывается, переводиться в последовательность байт и теперь это уже не «уникальное знание» у пользователя, а «владение уникальной последовательностью байт» у компьютера. Если мы попробуем зайти на сайт, для которого сохранили пароль, то теперь браузер (прозрачно для нас) предъявит серверу последовательность байт, на основе которой сервер примет решение о том прошли ли мы процедуру аутентификации или нет.

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

Для удобства восприятия я предлагаю следующую схему разделения способов хранения паролей.

Способ хранения пароля

Пароль в открытом виде

Пароль в зашифрованном виде

Не хранение пароля как такового, а только производная информация

Привязка к компьютеру

Без привязки к компьютеру

Приведем короткие описания с примерами по каждому пункту.

1) Хранение пароля в открытом виде.

С одной стороны это просто ужасно. Только представьте себе, что злоумышленник получил доступ к вашему компьютеру всего на одну минуту и этого будет достаточно, чтобы все пароли оказались у него. Так хранят пароли, например, браузеры Google Chrome и Firefox. Почему разработчики, для которых вопрос защиты информации является одним из ключевых, поступают именно так? На самом деле причина такого решения вполне понятна: браузер не может предусмотреть все возможные способы проверки пароля, поэтому недостаточно хранить хэш или какую-то другую информацию. Всегда найдется сайт, который для аутентификации выберет новую хэш функцию или вообще предоставит свою.

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

В качестве примера программы, которая просто хранит пароль в открытом виде — достаточно популярный интернет-мессенжер Pidgin. В ответ на вопрос, почему пароль храниться именно так, авторы программы отвечают: «If someone else can access your files and you can’t trust them not to misuse stored sensitive data, don’t store the sensitive data.» («Если кто-то еще имеет доступ к вашим файлам, и вы не можете положиться на то, что он не будет использовать ваши конфиденциальные данные, то не стоит их вообще хранить.»).

2) Хранение пароля в зашифрованном виде без привязки к компьютеру.

К такому методу хранения прибегает очень большое количество разработчиков программных продуктов. На самом деле это просто ужасная практика. Пользователь считает, что его конфиденциальные данные надежно защищены, хотя на самом деле это «визуальное» шифрование. Расшифровать такие данные не составляет ровным счетом никаких проблем, поскольку чаще всего используется безключевое шифрование («шифрование Цезаря», ROT13, xor), либо симметричное шифрование с фиксированным ключом. К этому разделу очень сложно подобрать пример, по той причине, что таких программ очень много и сложно выбрать ту, пример которой будет нагляднее. Приведу такой список: Total Commander, FAR Manager, The Bat!, Opera, QIP. Хотя для Opera можно сделать оговорку аналогичную той, что я сделал в предыдущем пункте — поддерживается функция «Мастер-пароль».

3) Хранение пароля в зашифрованном виде с привязкой к компьютеру.

Редко используемый способ, но выгодно отличающийся от предыдущих двух пунктов. При выборе такого способа хранения, пароль можно расшифровать только на том компьютере, на котором данные были зашифрованы. Такой механизм используют, например, встроенные программы Windows для работы с ftp. Еще один пример — программа Microsoft Office Outlook. При использовании таких программ, мы защищены от ситуации, когда злоумышленник каким-то образом завладел нашими данными, и будет пытаться расшифровать их на своих мощностях. Но, если злоумышленник имеет доступ к нашему компьютеру (аккаунту в системе), то, скорее всего, такое шифрование его не остановит.

4) Хранение не самого пароля, а некоторой производной информации.

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

К сожалению, такой способ применим только для узкого класса программ — те, которые узкоспециализированы и работают на одном конкретном протоколе. Поэтому, например, нельзя реализовать такое хранение паролей для браузеров, ftp-клиентов, email-клиентов, im.

Что же делать, если мы хотим уберечь свои пароли? Рассмотрим плюсы и минусы основных вариантов решения данной проблемы.

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

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

3) Пользоваться внешними сервисами хранения паролей. Достаточно удобный способ — достаточно запомнить главный пароль и в любом месте, в любое время, указав только один пароль, получить доступ ко всем своим данным. У всех таких сервисов и программ есть одна большая проблема — при компрометации мастер-пароля, все ваши пароли перестанут быть конфиденциальными.

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


ФорумФорум
Форум ОКБ САПР
Вопросы специалистовВопросы специалистов
Вопросы, которые нам присылают, и наши ответы на них