И напоследок самое главное: никакие алгоритмы, упрощающие запоминание, не помогут, если пароли вводить из хранилища, и никогда не делать этого по памяти. Поэтому вначале каждый день нужно проверять сохранность всех паролей в памяти. И лишь спустя время можно будет устраивать такие проверки реже, но не менее одного раза в неделю.
Хороший пароль – хешированный пароль
Развивая идею об изменении паролей в соответствии с алгоритмом, мы неизбежно придем к мысли о возможности написания программы для легкой генерации списка хоть на сто лет вперед. Вообще-то, идея генерировать пароль программными средствами не слишком хороша, так как всегда придется иметь в распоряжении соответствующую утилиту. И если ее утратить, это может стать проблемой. С другой стороны, помня алгоритм, и умея написать рабочую версию 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.