Грамотная работа с паролями

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

Какие пароли можно держать только в памяти

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

Привыкший к комфорту читатель может спросить, а зачем такие сложности? Не проще ли зашифровать файлы, и дело с концом? Разумеется, так проще, но есть нюансы. Например в Великобритании за отказ предоставить доступ полиции к зашифрованным файлам можно угодить в тюрьму. И это отнюдь не абстрактная страшилка, реальные приговоры уже выносились. В странах, где такого закона пока нет, отказ предоставить правоохранительным органам доступ к закрытой информации будет квалифицирован как препятствование расследованию с тем же результатом. Если же доступ захотят получить менее озабоченные соблюдением законности граждане, может получиться совсем уж некрасиво. Так что проще еще не значит лучше. Мы не устаем повторять простую, но важную истину: безопасность и удобство сочетаются плохо. Обычно ради одного приходится частично жертвовать другим.

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

Немного мнемоники

Допустим, нам надо придумать годный к запоминанию изменяющийся пароль к сервисам гугла. Для начала придумаем слово, которое у нас будет намертво ассоциироваться с гуглом. Например - булка. Так и запомним себе: гугл - булка. Первая часть пароля готова: bulka. Далее ставим счетчик изменений пароля. Поскольку пароль у нас первый, так и пишем: 01. Вторая часть пароля готова, и все вместе будет: bulka01. А дальше самое интересное.

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

Допустим мы выбрали стартовым числом 8571. Тогда самый первый пароль будет: bulka018571. А в качестве алгоритма возьмем сложение третьей части пароля со счетчиком, умножение этой суммы на 13, и отбрасывание цифр слева таким образом, чтобы осталось всего четыре цифры. Посмотрим, что получится при изменениях нашего пароля.

Первый пароль: bulka018571. Булка указывает на гугл, 01 это порядковый номер пароля в череде изменений, а 8571 это стартовое число, которое надо запомнить раз и навсегда. Его можно безбоязненно написать на самом видном месте, и все будут думать, что это пин код от какой-то безвестной банковской карты или телефона.

По прошествии времени надо будет поменять пароль в целях безопасности. При следующем изменении пароля bulka остается неизменной, как и при всех последующих изменениях для гугла. 01 превращается в 02 - к счетчику изменений пароля всякий раз прибавляется единичка. С числом 8571 производим действия согласно алгоритму. Счетчик в пароле был 01, поэтому к 8571 прибавляем единичку и получаем 8572. Полученное 8572 умножаем на 13 и получаем 111436. Далее от этого числа отбрасываем столько циферок слева, сколько нужно, чтобы осталось четырехзначное число. В итоге от 111436 остается 1436. Это и будет третьей частью измененного пароля. Полностью измененный пароль теперь выглядит так: bulka021436.

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

bulka018571

bulka021436

bulka038694

bulka043061

bulka059845

Для яндекса, мейл ру и прочих сервисов цифровая часть пароля остается в точности такой же, меняется только слово. Таким образом мы получаем единый алгоритм изменения паролей для всех сервисов, и все это вполне реально удержать в памяти! Только чтобы не запутаться, пароли придется одновременно менять для всех сервисов, тогда номер счетчика и вся цифровая часть пароля будут одинаковы для всех сервисов. Запомнить придется слово для каждого сервиса, одинаковое для всех стартовое число, и порядковый номер изменения. Если пароли менять не часто, то и первая, и вторая, и третья части пароля удерживаются в памяти.

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

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

Хороший пароль - хешированный пароль

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

Мы хотим предложить компромиссный вариант: программу, которую можно не только быстро написать, но и скачать из разных источников в интернете, и заказать у любого программиста, не вызывая подозрений. Разумеется, речь идет о хешировании. Эта, в общем-то, алгоритмически довольно сложная процедура распространена настолько широко, что получить к ней доступ можно всегда. Призываем неискушенного читателя не бояться непонятного слова. Считайте, что над придуманным вами паролем надо будет совершить еще одно преобразование, которое хорошо известно всем программистам. В его тонкости вникать нет необходимости, все уже продумано до вас. Надо только скачать программу с приглянувшегося ресурса в сети, и нажать на кнопку Старт. Приведем пример использования хеша для вывода пароля.

Требование наличия кодового слова, ассоциированного с сервисом, остается. То есть, продолжая пример, первая часть пароля для гугла остается прежней: bulka. Счетчик изменений тоже остается: 01. Зато больше запоминать ничего не надо. Если к паролю bulka01 применить операцию хеширования, и отделить первые двенадцать символов вычисленного хеша, мы получим очень качественный двенадцатисимвольный пароль: MTEyMGRiM2Fj. Небольшая тонкость в том, что разновидностей процедур хеширования достаточно много, и нужно еще помнить, какая именно используется. Но тут многообразие обманчиво, и выбирать особенно не из чего. Функция SHA256 на сегодняшний день является стандартом, и на ней смело можно остановиться.

У хеш-функции есть две приятные особенности. Во-первых, она необратима. Это значит, что по хешу определить исходную фразу настолько тяжело, что с этим не справятся современные компьютеры за обозримое время. А по первым двенадцати символам хеша восстановить ключевую фразу невозможно даже теоретически. Во-вторых, изменение даже одного символа в исходной фразе повлечет за собой кардинальное изменение всего хеша. Например, следующий в череде изменений пароль bulka02 после хеширования алгоритмом SHA256 и отделения первых двенадцати символов будет иметь вид: ZDE5YTQ3Njgx. Сравните с MTEyMGRiM2Fj (хешем от bulka01) - ничего общего. Таким образом, случайная компрометация хешированного пароля не даст злоумышленнику ключа к системе, по которой меняются пароли.

Применение хеширования избавляет от необходимости подгадывать определенное количество символов, чтобы пароль не получился слишком длинным (о длине пароля мы еще поговорим). Более того, чем длиннее пароль перед хешированием, тем он надежнее. Мы предлагаем пользоваться не отдельными словами, а целыми фразами. Например, возьмем в качестве пароля фразу: to be, or not to be, that is the question. Удалим из нее знаки препинания, пробелы, и добавим четырехзначный счетчик: tobeornottobethatisthequestion0001. Затем применим функцию SHA256, отделим первые двенадцать символов, и получим: ZmM2Zjg0N2Mx. Точно так же можно брать и фразы на русском, написанные транслитом или в английской раскладке клавиатуры.

Теперь несколько практических рекомендаций. В сети есть очень много предложений вычислить хеш прямо онлайн, ничего не скачивая. Так делать нельзя, потому что ваш пароль утечет в интернет. Надо найти программу, скачать ее, и установить у себя на компьютере. Запускать ее лучше в песочнице, на случай вирусов. Также будет полезно не разрешить ей соединяться с интернетом. Программе, рассчитывающей хеш, интернет не нужен, и если она пытается туда выйти, значит дело не чисто. И последнее. Установив программу, проследите, чтобы она считала хеш так же, как и все те программы, что делают это онлайн на разных сайтах. Учтите, что один и тот же хеш можно выводить разными символами. Ищите результат, похожий на приведенные выше примеры. Если увидите, что в результатах нет букв k,l,m,n и далее, значит это не то, что надо. Кроме того, программирование с ошибками никто не отменял. В качестве проверки программы можете ввести bulka01 и прочесть первые двенадцать символов. Это должно быть MTEyMGRiM2Fj.

Сколько и каких символов должен содержать пароль

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

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

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

Сложный способ требует модификации алгоритма получения конечного пароля. Здесь самым удобным будет вариант брать не 1-12 символы из хеша, а 2-13. Если и с этим паролем что-то не так, то 3-14, и так далее. Вероятность того, что любые идущие подряд 12 символов длинной последовательности полного хеша будут забракованы, стремится к нулю. Но теоретически такое возможно. Тогда придется проскочить один порядковый номер в очереди при смене пароля. Например, если будут забракованы все возможные 12-символьные пароли, получающиеся из bulka59 не подойдут, то надо пропустить этот пароль, и сразу ставить bulka60.

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

Логин тоже важен

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

Худший из всех возможных логинов тот, который содержит ваши персональные данные. Sokolov1994 - очень плохой логин, если ваша фамилия Соколов, и вы родились в 1994 году. Vasya_10_12, ChertanovoYuzhnoe, Pythonprogrammer - тоже отвратительные логины. Но это как бы лежит на поверхности. Юзер, который кажется себе тонким конспиратором, может взять ник Vasya, в то время, как его зовут Петя, и радоваться, что всех перехитрил. А по факту он во всеуслышание заявил о своей принадлежности к русскоговорящему сообществу. Выдать могут не только буквы, но и цифры. Наличие трех шестерок в нике сообщит о христианском культурном пространстве, а специфический порядок написания числа и месяца выдаст американца.

Хороший ник это обычное английское слово и несколько одинаковых или идущих подряд цифр (кроме 666). Простое английское слово может знать и китаец, и индус, и француз. А постучать пальцем по какой-нибудь цифре это первое, что придет в голову человеку любой национальности, когда ник с его любимым словом занят. Хорошие ники это cucumber111 и tomato1234.

Пара слов о софте

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

1. Открытый исходный код.

2. Бесплатность.

3. Использование стойкого алгоритма AES (256-бит).

4. Портативная версия для Windows.

5. Порт под линукс: KeePassX.

6. Удобная организация каталогов.

7. Настройка автозаполнения.

8. Возможность хранить текстовую информацию

9. Возможность присоединять файлы и хранить их в зашифрованной базе.

10. Встроенный генератор паролей.

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

Рекомендуемое

Вальтер Граукригер

Как действуют террористы и как от них защититься


Как действуют террористы и как от них защититься
Подробнее

Вальтер Граукригер

Как действуют вымогатели и как от них защититься


Как действуют вымогатели и как от них защититься
Подробнее

Вальтер Граукригер

Как действуют киллеры и как от них защититься


Как действуют киллеры и как от них защититься
Подробнее