Как не обломать мозг об пароли вроде eLkdC,lk#jB

    image

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

    1. Длиннее 8 символов,
    2. Содержит прописные, строчные буквы, числа и специальные символы,
    3. Не повторяет ни один из предыдущих,
    4. Меняется ежемесячно.

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

    Энтропия


    Классические пароли становятся более сложными для запоминания человеком и все более легкими в подборе для машины. Это прискорбно. На очередном очень важном и секьюрном сайте с кулинарными рецептами от вас требуют десятизначный пароль во всех регистрах и с цифрами? Тут могут быть три причины.

    1. Админ сайта упоротый криптопараноик, который открывает дверь в туалет вживленной RFID меткой.
    2. Админ немного переживает о том, что текущее железо очень быстро перемалывает утекшие базы, и неплохо бы хоть немного от этого защититься. Можно даже хеши посолить.
    3. Админ окончил трехмесячные курсы для продвинутых пользователей, поднял дефолтный Wordpress и понятия не имеет, что там у него за требования.

    Два основных направления атаки — перебор по словарю или брутфорс в надежде на низкую длину и энтропию пароля. Пароли вида iloveyou и password заведомо ущербны, пароли с низкой энтропией уязвимы для простого брутфорса.

    Сложность пароля в компьютерной индустрии обычно оценивают в терминах информационной энтропии (понятие из теории информации), измеряемой в битах. Вместо количества попыток, которые необходимо предпринять для угадывания пароля, вычисляется логарифм по основанию 2 от этого числа, и полученное число называется количеством «битов энтропии» в пароле. Пароль со, скажем, 42-битной сложностью, посчитанной таким способом, будет соответствовать случайно сгенерированному паролю длиной в 42 бита. Другими словами, чтобы методом полного перебора найти пароль с 42-битной сложностью, необходимо создать 242 паролей и попытаться использовать их; один из 242 паролей окажется правильным. Согласно формуле при увеличении длины пароля на один бит количество возможных паролей удвоится, что сделает задачу атакующего в два раза сложнее. В среднем атакующий должен будет проверить половину из всех возможных паролей до того, как найдет правильный.
    Википедия

    Оценить количество энтропии на символ можно в таблице ниже.
    Набор символов Количество символов, N Энтропия на один символ, H, биты
    Арабские цифры (0-9) 10 3,3219
    Цифры шестнадцатеричной системы счисления (0-9, A-F) 16 4,0000
    Строчные буквы латинского алфавита (a-z) 26 4,7004
    Арабские цифры и строчные буквы латинского алфавита (a-z, 0-9) 36 5,1699
    Строчные и заглавные буквы латинского алфавита (a-z, A-Z) 52 5,7004
    Арабские цифры, строчные и заглавные буквы латинского алфавита (a-z, A-Z, 0-9) 62 5,9542
    Все печатные символы ASCII 95 6,5699

    Скрепки в лошадях


    Складывается стойкое ощущение, что идеальный пароль должен содержать весь возможный набор символов, включая санскрит и улыбающийся pile of poo. Шесть с половиной бит на символ все-таки! Но тут мы сталкиваемся с проблемой применимости. Очень невесело пытаться достучаться до своего сервера, если на старом телефоне где-то в командировке нет возможности ввести арабские символы или иероглифы. Ок, думаем мы и двигаемся на строчку попроще — a-z, A-Z, 0-9. Почти 6 бит на символ. Но вот беда — запомнить фарш в духе Vh8GkCnbqbQDRv крайне трудно. Особенно, если учитывать нежелательность использования одного и того же ключа в разных местах. Да, для аккаунта в Digital Ocean или у доменного регистратора можно и нужно использовать пароли вида gZsa<(Dw}a+*5p. Но такие ключи требуют хранения в синхронизируемой зашифрованной базе вроде KeePassX, иначе на двадцатом таком ключе может потечь мозг.

    image

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

    Пароль @Vy[o8!B может быть довольно легко забыт, хотя и содержит 8*6,5699=52 бита энтропии. Более компромиссный вариант eastrightcloudexplore куда более криптостойкий при легкости запоминания: 21*4.7004 = 99 бит энтропии.

    Существует даже ресурс для генерации паролей по этому алгоритму с говорящим названием correcthorsebatterystaple.net. Хотя, конечно, онлайн генераторы паролей — крайне плохая идея. Сразу вспоминается старая притча:
    Сисадмин желал подобрать себе стойкий пароль для централизованной авторизации через radius-сервер. Он обратился за советом к Инь Фу Во.

    – Как вы думаете, Учитель, пароль "史達林格勒戰役" стойкий?
    Нет, – ответил мастер Инь, – это словарный пароль.
    – Но такого слова нет в словарях…
    – «Словарный» означает, что это сочетание символов есть в wordlists, то есть «словарях» для перебора, которые подключаются к программам криптоанализа. Эти словари составляются из всех сочетаний символов, которые когда-либо встречались в Сети.
    – А пароль «Pft,bcm» подойдёт?
    – Вряд ли. Он тоже словарный.
    – Но как же? Это же…
    – Введи это сочетание в Гугле – и сам увидишь.
    Сисадмин защёлкал клавишами.
    – О, да. Вы правы, Учитель.
    Через некоторое время Сисадмин воскликнул:
    – Учитель, я подобрал хороший пароль, которого не может быть в словарях.
    Инь Фу Во кивнул.
    – Я ввёл его в Гугле, – продолжал Сисадмин, – и убедился, что в Сети такого сочетания нет.
    – Теперь есть.

    Оффлайн генераторы паролей


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

    xkcdpass


    Для начала можно обратить внимание на xkcdpass, который работает на уже озвученном выше принципе. Установка для Debian-based дистрибутивов вполне привычная:

    sudo apt-get install xkcdpass

    Также можно вытащить исходники на python на Github: github.com/redacted/XKCD-password-generator. Можно также использовать pip install. Попадаются даже порты на iOS:

    image
    Основная фишка этого генератора — создание мнемонических последовательностей-акронимов. Для этого используется ключ --acrostic.

    
    meklon@meklon-desktop:~$ xkcdpass --count=5 --acrostic='habr' --delimiter='|' --min=9 --max=9 --valid_chars='[a-z]'
    holograph|archetype|brutishly|refutable
    hemstitch|allotropy|balalaika|revivable
    hardboard|ampleness|boundless|refurnish
    hypertext|adiabatic|backwards|replicate
    halfpence|arrowhead|blackbird|recommend
    

    Вариант с balalaika меня особенно порадовал) Главный недостаток такого метода — уродские сервисы с ограничениями по длине пароля. Никогда не понимал, что именно они при этом экономят. Тем более, что хранить им все равно только соленый хеш от ключа пользователя.

    pwgen


    Классический вариант. Может генерировать как удобные для запоминания ключи, так и истинно случайные последовательности. Установка:

    sudo apt-get install pwgen

    Синтаксис простой — pwgen [ключи] [длина_пароля] [количество_паролей]. Ключами можно как усложнить, так и упростить получаемые пароли. По умолчанию используются цифры и заглавные/строчные буквы.

    meklon@RegenLab-LinuxDesktop-1:~$ pwgen 8 4
    eesohy9E Ohqu3che Mo7aijeu ieb1Quie 

    Можно немного снизить энтропию и улучшить читаемость, выбросив цифры. Заодно давайте удлиним до 12 символов, чтобы это компенсировать (12*5.7004=68 бит энтропии).

    meklon@meklon-desktop:~$ pwgen 12 4 --no-numerals
    Eipohliemiwi WoLooJeemeir laishaisaTho oquaibahYori

    Добавление опции --secure делает пароли нечитаемыми, но полностью случайными:

    
    meklon@meklon-desktop:~$ pwgen 12 4 --secure
    YFSb5lqAfSLV nMa5GKJhMmw2 VczwRho2xuwG PPAc6SByedfh 
    

    gpw


    Еще один отличный генератор. При построении паролей он использует принцип комбинирования наиболее распространенных триграмм. Результат — крайне приятные для произношения ключи:

    
    meklon@meklon-desktop:~$ gpw 4 12
    oventryllyna
    slytersiderm
    raboalsollic
    testrisheocu
    

    APG


    Advanced Password Generator. Куча опций и возможностей. В дефолтном варианте очень удобно дробит пароль на фрагменты:

    
    meklon@meklon-desktop:~$ apg
    
    Please enter some random data (only first 16 are significant)
    (eg. your old password):>
    BidKasJuink6 (Bid-Kas-Ju-ink-SIX)
    ontEjsed6 (ont-Ej-sed-SIX)
    rordOWren4 (rord-O-Wren-FOUR)
    yalIkatEac0 (yal-Ik-at-Eac-ZERO)
    WruAdNevav1 (Wru-Ad-Nev-av-ONE)
    tipBevJieb8 (tip-Bev-Jieb-EIGHT)
    

    Здесь должен быть вывод, но автор устал


    Удачной генерации)

    UPD


    Решил добавить утилиту для проверки криптостойкости пароля. Небесполезная штука, ковыряет ключ по словарям и оценивает стойкость.
    
    sudo apt install libcrack2 
    

    Используется довольно просто. Можно скармливать что-то последовательно скриптом или просто забросить на вход пароль через echo. Проверим генераторы из поста:
    
    meklon@RegenLab-LinuxDesktop-1:~$ echo "abc123456" | cracklib-check
    abc123456: слишком простой
    meklon@RegenLab-LinuxDesktop-1:~$ echo "WruAdNevav1" | cracklib-check
    WruAdNevav1: OK
    meklon@RegenLab-LinuxDesktop-1:~$ echo "testrisheocu" | cracklib-check
    testrisheocu: OK
    meklon@RegenLab-LinuxDesktop-1:~$ echo "WoLooJeemeir" | cracklib-check
    WoLooJeemeir: OK
    

    На xkcdpass утилита смотрит подозрительно, но длинные пароли из смеси словарных слов признает валидными:
    
    meklon@RegenLab-LinuxDesktop-1:~$ echo "holograph|archetype|brutishly|refutable" | cracklib-check                
    holograph|archetype|brutishly|refutable: OK                                                                      
    meklon@RegenLab-LinuxDesktop-1:~$ echo "holograph" | cracklib-check                
    holograph: основан на слове из словаря                                                                           
    meklon@RegenLab-LinuxDesktop-1:~$ echo "archetype" | cracklib-check                
    archetype: основан на слове из словаря                                                                           
    meklon@RegenLab-LinuxDesktop-1:~$ echo "holograph|archetype" | cracklib-check                
    holograph|archetype: OK                                                            
    


    За редактуру спасибо in_green_shoes

    Комментарии 93

      0
      Если есть еще варианты интересных генераторов — пишите)
        +1
        Натыкался на вот такую забавную штуку:
        <1n255s4 Lisa's first newt zooms Fife's fifth shrewd four.
        t6pnjsnv Tony's sixth padlock nags John's spectacular number vainly.
        fqyumdc8 Fiona's quadrilateral yucca understands Murray's dormant calculating eight.
        ee6pk3cm Eve's egocentric six ponders Ken's third cagey magazine.
        q1giwn?n Quentin's first galaxy improves Wyn's nondescript question mark nastily.

        Aberystwyth University разрабатывал. Но кажется прикрыл. А мнемоника реально адская получалась.
          +1
          Я натыкался на подобный алгоритм генерации паролей у знакомых админов, что то вроде такого (на ходу сочиняю):
          Шла Саша по шоссе и сосала сушки => SHSpshiss => SHSpsh1ss => SHSpsh1$$
          Ехал грека через реку видит грека в реке рак => Egchrvgvrr => 3gchrvgvrr => 3gchr^g^rr

            0
            Что-то напомнило: «Сорок тысяч обезьян в жопу сунули банан»
        0

        Большую часть паролей кодирую по 5 основаниям (код, набор цифр, текст1, текст2, спецсимволы) так хотя бы, даже если забыл (есть сервисы, на которые раз в квартал захожу), то быстро можно перебрать по степени нужности сервиса

          0

          Некоторое время назад пошёл скучным путём – стал пользоваться 1Password.
          До этого – у меня было 3 относительно коротких рандомных пароля (до 10 символов каждый) в нескольких вариациях каждый, которые я помнил наизусть и использовал уже несколько лет.


          И вообще, "Сорок тысяч обезьян..."

            +2
            Лукьяненко прекрасен, да)
              +10

              К сожалению, только в контексте его книг. Да и то, лишь более-менее ранних...

                +3
                Сам он довольно мерзкий, да. И насчет позднего творчества согласен.
              +4
              Чтобы не было как в анекдоте про Сережу, все же процитирую оригинал)
              Фальшивые зеркала
              Я молчу. Это мой общий ключ. Теперь придется переупаковывать все базы данных. Темный Дайвер подносит трубку к Чингизу. Тот почему-то смотрит на меня почти с таким же негодованием, как и на Темного Дайвера. Но голос сохраняет спокойным:
              — Открыл первый шифр? Хорошо. Теперь набирай ключ… он простой… ламерский…
              Вот оно в чем дело!
              — Это фраза, первая буква строчная, все остальные прописные. Пробелы значимы. В конце должна стоять точка. Набирай… и повторяй по буквам.
              Чего он тянет…
              Чингиз выдыхает и ледяным голосом произносит:
              — Сорок тысяч обезьян в жопу сунули банан.
              Темный Дайвер сгибается от беззвучного хохота. Трубка в его руке пляшет у лица Чингиза. Падла издает хрюкающий звук, пытается скосить глаза на Чингиза, потом смотрит на меня.
              Я держусь. С трудом, но держусь.
              — Что? — Чингиза вдруг покидает самообладание. — Какой еще «абезьян»? Ты в зоопарк ходишь на «абезьян» посмотреть?
              Я не выдерживаю. Мы проиграли. Мы капитулировали перед Темным Дайвером. И неясно еще, оставит ли он нас в живых, получив файл. Но сейчас я валяюсь, парализованный, одновременно и в глубине, и в своей квартире. И веселюсь даже не столько от выбранного Чингизом пароля, сколько от нагоняя, который он сейчас устраивает.
              — Да! Банан!
              — Один на всех? — спрашивает Падла и заходится мелким, хихикающим смехом.
              — Все… теперь Тоха свой ключ скажет. Двоечник…
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  Такие пароли неудобно вводить со смартфонов, т.к. на экранной клавиатуре в латинском регистре не показываются русские символы, а слепой десятипальцевый неприменим. Ну и стойкости это добавляет совсем немного. Рекомендую заменить на
                  40thousandsdouchbagsisverybad*
                    0
                    Для гуглофонов есть Hacker's Keyboard. :)
                      0
                      офигеть, не знал, что она так умеет, спасибо!
              0
              Нашёл половину своих паролей в статье. Похоже, они словарные.

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

              Так что только своим умом и эрудицией стоит генерировать.
                0
                Все эти утилиты позволяют использовать любые словари. При добавлении пары цифр можно уже только застрелиться со словарным перебором, имхо. То есть последовательность слово-слово-слово-слово брутится легко, если есть предположение, что генерировалось по методу коней со скрепками. Но уже слово-слово-!;$-слово-слово тупо никак не брутится. Опять же генераторы в духе WruAdNevav1 (Wru-Ad-Nev-av-ONE) тоже должны давать хорошую энтропию. Тут нет словаря, только отбрасываются неблагозвучные варианты.
                  +1

                  Атаке перебором подвержены абсолютно все пароли. Вопрос исключительно в количестве возможных вариантов (и цене перебора). Злоумышленникам ничего совершенно не мешает. Но, скажем, взяв набор 8000 наиболее употребимых существительных в английском языке и сгенерив на его основе пароль из пяти слов, получим ~3.3×10¹⁹ вариантов или ~65 бит энтропии. Что не офигеть как круто, но терпимо. Примерно соответствует полностью случайному паролю из 10 латинских символов смешанного регистра, цифр и пунктуации. Или, кстати, предложенному выше WruAdNevav1. Конечно, на суперкомпьютере в оффлайне подобный пароль подбирается в среднем дня за четыре. Но четыре дня на суперкомпьютере — это довольно дорого.

                    0
                    От того, что вы знаете весь набор слов в словаре, это не отменяет сложность в 10000ˆ5(1e20) для пароля из 5 слов для словаря в 10000 слов.
                    Точно так же, как и то, что используя 8-символьный пароль из всего набора ascii, будет известное число вариантов перебора 255ˆ8(1.78e19).
                    Уже не в первый раз натыкаюсь на это странное убеждение, что при известном словаре очень просто взять и подобрать пароль, состоящий из слов в этом словаре.
                    В конце концов, ascii всем известна, и вариантов перебора там существенно меньше, чем в среднем словаре тех же английских слов.
                      0
                      Анекдот статье был не просто так. Гугл знает мою фразу — основной пароль. Энтропия 75 бит. Но в фразе присутствуют ошибки (не l33t, и не грамматические), — подобрать по словарю маловероятно.
                      0
                      Интересный, но бессмысленный обзор — главная проблема сейчас не в низкой энтропии, а в уникальности.

                      И тут спасёт только хранилка паролей с генератором этих ужасных последовательностей, чтобы каждый раз не менять шаблон под сайт вебмастера-параноика, забывшего включить вход через соц. сети.
                        0
                        Ключи созданные на основе триграмм или других вариантов благозвучных будут уникальны. Кажется, вероятность совпадения на 10+ символах стремится к нулю.
                        +2
                        «Более компромиссный вариант eastrightcloudexplore куда более криптостойкий при легкости запоминания: 21*4.7004 = 99 бит энтропии.» — не согласен. Энтропии тут гораздо меньше чем 21*4.7, если перебирать распространеные слова, помноженные на их количество. Такой подсчет энтропии не учитывает зависимость между символами. В любом мнемоническом пароле она существенно снижается.
                          0
                          Как оценить это? В целом согласен. Но тут нужно ещё оценить атакующего. Он не сможет применить знания о возможной взаимосвязи между символами. Он даже длины ключа не знает. Какова может быть тактика?
                            +1

                            Да бросьте, давно уже перебирают не брутфорсом, а по словарям с мутаторами (замена o на 0, и тп). Сделать алгоритм который перебирает заодно комбинации слов — никакая не проблема. Все слова в Вашем пароле входят в топ-2000 наиболее часто употребимых. Несложный расчет дает ~ 44 бита энтропии (да-да, прямо как в xkcd, потому что там взяты 4 слова из топ-2048), а совсем никаких не 99. Можете добавить еще чуть-чуть на разные разделители, получите ну может быть еще 2-3 бита.

                              0
                              Принято) Тогда остаются длинные бессмысленные пароли с хорошей фонетикой. Криптостойкие все равно почти никто не будет использовать. Дни рождения — наше все, увы.
                                +1

                                На самом деле нет, не совсем так. При выборе достаточно длинного вордлиста, количество энтропии в одном слове — вполне вменяемо. Я в другой ветке уже сказал, но повторюсь, что скажем взяв словарь из 8192 слов получим ~13 бит энтропии на слово (на самом деле поменьше, но не сильно). Пять слов (случайно выбранных!) дают уже 65 бит энтропии, что вполне на сегодняшний день терпимо. Шесть дают уже 78, что совсем даже неплохо. Семь даст 91, что будет вполне хорошо ближайшие лет 20, если конечно вдруг не окажется, что P=NP и криптография не работает. Так что не так все страшно.

                                  +1
                                  Так может лучше уходить в нетиповые слова? Жаргонизмы, имена-фамилии знакомых вам людей? Это и запоминаемость может повысить, если фразу выбрать вас лично чем-то цепляющую. Ну что-то типа «Васечкина не дает скатать домашку» — явно лучше, чем абстрактные батарейки со скрепками.
                                    0

                                    Увы нет, не лучше. Имена-фамилии такие же словарные, как и всё остальное. Жаргонизмы, может быть, не настолько (редко употребимы), но их много меньше, поэтому, если сильно уходить в них, энтропия только упадет. Не думаю, что Вы наскребёте хотя бы пару тысяч жаргонизмов даже в своей пассивной лексике. Абстрактные батарейки со скрепками заведомо случайны, в отличие от грамматически корректных предложений, рождённых Вашей фантазией — а значит имеют заведомо бóльшую энтропию, и мне кажется весьма значительно (но я не считал). Использовать "лично Вас чем-то цепляющую" фразу — заведомо плохо, потому что от целевой атаки такая парольная фраза спасает чуть лучше, чем никак. А вообще, при абстрактном анализе, оценивается только пространство возможных для данного алгоритма построения парольной фразы вариантов — молчаливо предполагается, что атакующему этот алгоритм известен, и словари у него те же, что и у Вас. Полагать иначе — это security through obscurity, что, как известно, не работает. На практике же, всё равно оказывается, что менеджер паролей наше всё, потому что какие бы легко запоминающиеся пароли ни были, держать в голове 4-5 сотен их и не путаться при этом редко кому под силу.

                                0
                                А если не слово целиком, а только часть? И злоумышленник не знает заранее, где целая часть, где корень, где окончание взято. И разбавлено цифрами, например.
                                  0
                                  В теории это снижает энтропию, но только в случае, когда мы закладываем это в алгоритм перебора. А вслепую разницы не будет с истинно случайными, имхо.
                                    0
                                    Не очень понял, как это снизит энтропию.
                                    Для тупого перебора всех комбинаций важна длина пароля и количество символов алфавита пароля.
                                    Для перебора по словарю важен словарь и наличие\отсутствие значимых частей пароля в них. И если при переборе по словарю надо проверять не только слово целиком, но и части этих слов — то словарь просто становится больше и количество комбинаций тоже, что увеличивает сложность подбора. Разве не так?
                                      0
                                      Смотри — максимум энтропии в варианте, когда каждый символ абсолютно независим от другого. Но для благозвучных паролей у нас выброшены комбинации вроде jzK. Что сужает общее количество вариантов.
                                        0
                                        Да, но вариант с полным словом, которое есть в словаре, снижает количество вариантов до перебора комбинаций слов.
                                        А если добавить чуть сложности для алгоритма перебора — дробные части слов, которые человек легко читает и запоминает — то сложность падает не настолько сильно, чтобы паниковать.
                                    0

                                    То вы получаете труднозапоминаемое месиво, которое собственно и имеем сейчас, Вам не кажется?

                                      +1
                                      Ну почему же. Вот например, пароль: «какойчудесныйдень». Состоит из трёх целых слов, которые наверняка все в словаре популярных слов.
                                      А если взять пароль «как1чуд2день3»? Вряд ли стало сильно сложнее запомнить — мешанины нет, читается легко, словарь для перебора нужен побогаче и алгоритм посложнее.
                                        0

                                        Именно в таком варианте выигрыш совсем небольшой. При анализе криптостойкости мы всегда исходим из того, что у атакующего достаточно умный алгоритм, потому что считать иначе это security through obscurity. "как", "день" несомненно словарные, "чуд" вероятно тоже. Комбинаторные алгоритмы на основе словарей есть. Цифры подряд, в восходящем порядке, на границах слов — алгоритмы, которые это учитывают, тоже уже есть. Так что выигрыш довольно сомнительный по сравнению с "какойчудесныйдень". Более рандомизированное распределение цифр поможет, но оно будет несомненно более сложным для запоминания.

                                          0
                                          Я лишь пример общей концепции привёл. Цифры можно любые, хоть дату рождения, хоть пин-код от банковской карточки. Можно не на границе каждого слова, можно в середине, да где угодно и не по одной цифре за раз. Лишь бы хорошо запоминалось.
                                          Алгоритмы есть, никто не спорит. Но количество вариантов возрастает очень сильно.
                                            0

                                            Я пытался донести, что в подавляющем большинстве случаев "легко запоминается" = "содержит тривиально формализуемые паттерны", а это уже представляет некоторую проблему. Самый простой способ сделать пароль более криптостойким — это сделать его более длинным. Идея с корректными лошадьми хороша тем, что редко кто думает символами, и запомнить 5-7 случайных слов ощутимо легче, чем 12-16 случайных символов. С этой точки зрения, делать фарш из слов и цифр (а может еще и пунктуации?) гораздо менее практично.

                                              0
                                              Возможно. Тут уже кто как способен запоминать.
                                0
                                  0
                                  О, спасибо.
                                0

                                Забыли бесплатный VipNet Password Generator. Вполне себе независимый продукт от всей остальной инфраструктуры.


                                скриншот

                                image

                                  +1
                                  Спасибо большое за статью! Однако же, боюсь, все это не поможет вспомнить пароль, который был установлен, скажем, год назад. Еще лет 9 назад я написал для себя генератор паролей, где на входе надо подать какую-нибудь набившую оскомину фразу, а на выходе можно получить хэш из первых/последних/средних n символов каждого слова. Мне казалось это достаточно надежным для запоминания, но однажды, доверив такой пароль браузеру, я, спустя два или три года, как ни старался, фразу вспомнить не смог. Все-таки фраз много, и через года три все это будет в голове перемешано, забыто, дополнено чем-то фантомным и пр.

                                  Даже не могу вспомнить, когда я впервые столкнулся с необходимостью научить людей, далеких от IT, составлять сложные в подборе, но легко запоминающиеся пароли. Я пытался по-разному, удалось не все и не со всеми, но кое-что реально получилось. По началу держал этот способ исключительно для родителей, девушек, друзей/знакомых/клиентов/и т.д., но теперь вовсю грешу им и сам. Так, на службу уникальности и стойкости пароля был поставлен великий могучий, а именно всеобщая любоффь каверкадь слова (особая заслуга в этом принадлежит уже сильно сдавшему свои позиции «падонкаффскому языку»). Удивительно, но мои родители (и не только они) до сих пор помнят все свои пароли, а подобрать их, не зная логики построения и гарантированно присутствующих элементов, за разумное время не выйдет. Кроме того, такие пароли легко вводить, в т.ч. человеку без особых навыков быстрой печати, а быстрый ввод всегда сильно снижает вероятность того, что кто-то этот пароль успеет подсмотреть.

                                  Как это происходит:
                                  1) Берем слово. Скажем, был у Вас в детстве песик, звали его Тузик, Вы его никогда не забудете (это только пример! В боевых условиях возьмите что-нибудь из своего профессионального словаря или оболтанное в узком кругу друзей слово, лишь бы оно твердо сидело в голове и с ним была прочная эмоциональная связь — ассоциации, события, не важно). Ну пёс это коротко, пусть будет Собака. Просто, словарно, малобукв — плохо. Вспомним язык падонкафф и наша Собака теперь Сцобако. Добавим букву — Сцобакен. Ну Тузик пусть для скорости сразу станет Тузегом. Это будет основа.
                                  2) Придумываем опциональный(ые) элемент(ы). Они помогут разнообразить пароль при условно неизменной базе. Если Вы забыли пароль, добавьте-уберите эти элементы, и подберете тот, что надо. Пусть это будет слово Ваще.
                                  3) Берем ресурсозависимый элемент. Скажем, часть имени сайта. Любую. Хоть весь (но не рекомендуется). Давайте условно для себя решим, что это всегда будут последние три символа доменного имени (от второго уровня) habrahabr это будет abr, ну то есть абр. Куда их ставить — дело Ваше.
                                  4) Цифры-спецсимволы — возьмем опять же известный мем про 146%. Хватит.
                                  5) Это последний пункт. Мы безобразно переводим все русские символы в английские простым переключением раскладки. И наш ТузегабрВащеСцобакен146% превратится в страшные Neptuf,hDfotCwj,frty146%, ну или NeptuDfotCwj,frty146%. Вот так вот, без стороннего софта для генерации или хранения пароля.

                                  Забыв сам пароль, но помня базу, Вы наверняка сможете его подобрать. Вы ведь как-то придумывали остальные элементы? :)

                                  Да, компрометация «базовой» части пароля может быть опасна, особенно в условиях использования этой базы для создания немного разных паролей для разных ресурсов. Здесь дополнительной защитой пароля будет Ваше воображение. Опциональные элементы могут быть разной длины и в разных местах. Для большинства случаев такой защиты может быть достаточно (если только не копают конкретно под Вас).

                                  P.S.
                                  Для реально серьезных ресурсов (aka платежные системы, к которым привязаны банковские карты) я все-таки использую старые добрые хардкорные пароли в 26+ символов.
                                    +2
                                    Мы безобразно переводим все русские символы в английские простым переключением раскладки.
                                    А потом попадаем в ситуацию, когда виртуальная клавиатура показывает только русские или только латинские буквы, или прилетаем в страну, где русских букв на клавиатурах вообще нет.
                                      0
                                      Согласен, с этим бороться сложно. Хотя и можно, банально нагуглив картинку/фото русской клавиатуры. Но это будет сложно, да.
                                        0
                                        Потому, пароли надо придумывать в самой распространенной раскладке. Я не теоретизирую — ибо сам попал с такую ситуацию с делал выводы.
                                        0
                                        Есть вагон сервисов для печати родных символов на неродных клавиатурах.
                                        А на андроиде сто лет как есть «клавиатура для паролей» с требуемым функционалом.
                                          0
                                          Только всем этим надо озаботиться заранее и не забыть, и на факт, что в самый нужный момент — на фото, ни программы не окажется под руками. Самоё простое — забыл телефон в номере.
                                        0
                                        Аналогично, только использую первые буквы довольно длинной фразы. На примере из «зеркал»:
                                        1. дтовжсб или на латинице dtovzsb
                                        2. заменяем буквы на цифры/спецсимволы и меняем регистр либо по порядку (например, всегда второй символ и последний или по смыслу во фразе): дТ0в№сБ, dT0v#sB
                                        там, где впервые читал про такой способ генерации паролей, рекомендовалось во фразе иметь матерные и непристойные слова для облегчения запоминания.
                                          +1
                                          Собственно о чем и рекомендует NIST SP 800-63 Digital Identity Guidelines. Использование парольных фраз.
                                          Интересно, что по рекомендациям пароли должны включать печатные символы (ASCII [RFC 20]), включая символ пробела, а также желательно символы Unicode [ISO / ISC 10646] — включая эмодзи
                                            0
                                            Ну эмодзи это отдельная тема. Их просто так не напечатаешь. А вот пробелы в качестве опциональных элементов очень даже.
                                              0
                                              Там стандарт больше не для пользователей, а для разработчиков. Типа на что ориентироваться, что предлагать пользователям, чего избегать.
                                          –1
                                          Совсем недавно тут была статья о том, что короткие но очень сложные пароли совершенно не стойкие и брутфорсятся без особых проблем, а максимально надежные — длинные, но легко заучиваемые фразы. Длина — рулит.
                                          0
                                          А нынче кто-то брутфорсит пароли? Хм. Может это и возможно в локальных условиях (когда сломали айфон например), но в условиях удаленного доступа школьники-брутфорсеры режутся банальным ограничением попыток авторизации.
                                          По сабжу — самый простой способ запомнить все пароли это запомнить один мастер-пароль и прибавлять к нему определенную комбинацию из букв и цифр связанную с целевым сайтом или программой. Проверить на устойчивость очень просто — генерерируешь хеш пароля, а затем пытаешься инвертировать его по базам хешей в интернете. Воруют хеши с сервера, а потом их пытаются инвертировать это одна из возможностей. Ни один вменяемый программист не будет хранить в базе данных пароли в открытом виде, хранят их хеши. К слову и десятизначный пароль может быть инвертирован, если его до этого подбирали и он попал в базу хешей, с такой точки зрения безопасности супер-пупер пароль из стапятисот символов может быть дырявым как бюджет России, а сравнительно простенький пароль из 6-8 символов устойчивым. Ну и конечно большинство взломов происходит не брутфорсом, а через уязвимости в системе и по глупости самих пользователей которые попадаются на банальный фишинг и не обновляют свои операционки.
                                            0
                                            Базы утекают цельным куском. Вот их и молотят оффлайн.
                                            –1
                                            Вариант с balalaika меня особенно порадовал) Главный недостаток такого метода — уродские сервисы с ограничениями по длине пароля. Никогда не понимал, что именно они при этом экономят. Тем более, что хранить им все равно только соленый хеш от ключа пользователя.

                                            Мне всегда казалось, что дело в ограничение хеша. Они хранят только определенную длину хеша и вводить пароли длиннее не видят смысла, так как сложность хеширования растет, а шанс коллизии больше.

                                              0
                                              А она значимо растёт в районе 10-100 символов? Мне всегда казалось, что это какие-то микросекунды. Просто одна видеокарта — это тысячи мегахешей в секунду, нет?
                                                0

                                                Вроде особо не должно, но миллисекунды в целом тоже бывают важны. Но мне кажется, основное ограничение в количестве хранимых символов. Если пароли выше 8 символов будут с вероятностью больше 50% иметь коллизию с паролем меньшей длинны, зачем их разрешать?

                                                  0
                                                  Коллизии явно редчайшее явление.
                                                  SHA-256(«The quick brown fox jumps over the lazy dog»)
                                                  = D7A8FBB3 07D78094 69CA9ABC B0082E4F 8D5651E4 6D3CDB76 2D02D0BF 37C9E592

                                                  64 символа. Один регистр букв и цифры. 36 вариантов на символ (26 букв и 10 цифр). Значит, количество вариантов 3664. А именно 4011991914547630480065053387702443812690402487741812225955731622655455723258857248542161222254985216. Это почти половина гугола (10100), что офигеть как много. Мне кажется возможность случайной коллизии здесь можно вообще не учитывать. Это заведомо больше. чем число атомов во всей вселенной.
                                                    0
                                                    Вы немного ошиблись, на выходе SHA-256 дает 10 цифр и 6 символов (A-F), соответственно, только 16^64 вариантов, на 33 порядка меньше.
                                                      0
                                                      64 символа. Один регистр букв и цифры. 36 вариантов на символ (26 букв и 10 цифр). Значит, количество вариантов 3664.

                                                      Это HEX, так что 6 букв всего. Вообще гадать не нужно, SHA256 — 256 bit — 2^256

                                                        0
                                                        Черт, да)
                                                          0
                                                          Всё же, связь между количеством вариантов и вероятностью коллизий не очевидна. Мне тут вспоминается парадокс дней рождения.
                                                +3
                                                Годный пароль на базу KeePass, а он уже хранит зубодробительные комбинации для разных сервисов.
                                                Что характерно, менять пароль раз в 3 месяца требует только один из них. Причём тот, которым я пользуюсь раз в месяц, но до сих пор не могу придумать, как доступ постороннего к этому сервису может мне навредить. Всё, что он позволяет — узнать график платежей по кредиту :D Никаких расходных операций банк через веб не умеет.
                                                  0
                                                  Я тоже так делаю для важных вещей. Для всякой фигни попроще неплохо использовать что-то удобоваримое. Получать доступ с чужого устройства непонятно откуда к своей базе иногда нетривиально. Несмотря на все синхронизации.
                                                    +1
                                                    У KeePass есть клиент под андроид. База в дропбоксе, локальная копия на всех ПК и на мобиле.
                                                    «доступ с чужого устройства непонятно откуда к своей базе» становится практически невероятной ситуацией.
                                                    А «Для всякой фигни попроще» пароль помнит браузер
                                                      0

                                                      Под андроидом использование паролей, которые ни прочитать с экрана, ни набрать с клавиатуры, пользы не приносит. А такие пароли и есть целевая аудитория.

                                                        0
                                                        андроидный клиент кипаса имеет ввод в виде отдельной клавиатуры — в поле ввода переключаем способ ввода на кипас и получаем уже введённый пароль в этом поле
                                                  +1
                                                  sudo apt install pass
                                                    0
                                                    А я где-то видел подобный текст. У меня даже послего его прочтения где-то полгода назад остался установленный pwgen)
                                                      +1
                                                      Да, но
                                                      *пост читать лень, а камменты еще ленивее*
                                                      Один фиг надо менеджером паролей пользоваться, чтобы уникальные пароли для сервисов хранить — это раз
                                                      И, самое главное. При смене пароля наступает самый трындец. Вот сменил ты пароль. Запомнил его. Пользуешься им ну, например, месяц. А потом едешь в отпуск на неделю, качественно отдыхаешь. Возвращаешься, вбиваешь пароль — а он не подходит! Через некоторое время до тебя доходит, что ты вбиваешь тот — старый — пароль! А новый — просто выбило отдыхом из мозга напрочь. Наглухо. И все, сидишь, сосешь палец.
                                                        0
                                                        Парольный менеджер — потенциальная утечка всех паролей, если он запущен на скомпрометированном устройстве.
                                                        Более-менее надёжный вариант — это специализированное устройство строго в оффлайне. Или даже старая добрая «бумажка» — причём не с паролями, а с полуфабрикатами оных.
                                                          0
                                                          О, ниже darkprof дал ссылку на сайт, где нечто подобное реализовано.
                                                            0
                                                            Да там свой ворох проблем. Безопасность — это всегда ползунок между риском несанкционированного доступа к твоему аккаунту и риском утраты доступа к своему аккаунту.
                                                            «Ой, я забыл ключи дома. Не могу читать почту/работать до вечера.»
                                                            «Дорогая, ты не видела тут такую бумажку у меня на столе? Как выкинула?»
                                                              0
                                                              Пароль от часто используемых сервисов запомнится без всякой бумажки — каким бы зубодробительным он ни был. Так что «не могу читать почту/работать до вечера» снимается. И потом, часто вы бумажник дома забываете?
                                                              Безвозвратная утрата ключа — это да, риск. Нужно хранить дубликат в безопасном, доступном и защищённом месте.
                                                          +1

                                                          Один из способов.
                                                          Пишем простенькое стихотворение, или просто кусочек текста. берём первые две буквы каждого слова — получается пароль. В такой текст можно и цифры и спецсимволы добавлять, чтобы учесть требования к паролям. Так как в основе слова, можно считать что набор включает 1000 символов. Из них строим 10-ти символьное слово (каждый символ — две первые буквы или цифры) записанное латиницей для совместимости.
                                                          Итого энтропия 100.

                                                            0

                                                            Ещё можно включить английскую раскладку. И вводить что нибудь смысловое по русской раскладке

                                                              0
                                                              Как писали выше — плохо заканчивается на нестандартных клавиатурах. Банально на телефоне не дублируются символы.
                                                                0
                                                                Надо с собой носить картинку русской клавы в качестве ключа :)
                                                              0
                                                              Использую Password Safe. А файл с паролями храню на флешке, что может подключаться и к компьютеру и к смартфону
                                                                0
                                                                Можно писать свою любимую фразу с одинаковыми гласными, заменив родные: «pasasawarada», например ;) энтропия 56.
                                                                  0
                                                                  Главный недостаток такого метода — уродские сервисы с ограничениями по длине пароля. Никогда не понимал, что именно они при этом экономят.

                                                                  Вообще, хоть какое-то ограничение на длину пароля оправдано, достаточно вспомнить баг в питоновском фреймворке Django: ссылка.
                                                                  Django does not impose any maximum on the length of the plaintext password, meaning that an attacker can simply submit arbitrarily large — and guaranteed-to-fail — passwords, forcing a server running Django to perform the resulting expensive hash computation in an attempt to check the password. A password one megabyte in size, for example, will require roughly one minute of computation to check when using the PBKDF2 hasher.

                                                                  То есть надежные хэши считаются медленно, и отправление заведомо неверного, но большого количества информации может привести к подвисанию сервиса. Сейчас ограничение на пароль в Django 4 КБ по умолчанию.
                                                                  Конечно, ограничивать пароль слишком сильно не стоит, но некоторые ограничения необходимы.
                                                                    0
                                                                    Как бы пары сотни символов точно должно хватить, а нагрузка никак не изменится.
                                                                    0

                                                                    Есть ещё любопытная утилита gnu-pw-mgr.
                                                                    А любопытна она тем, что делает безопаснее известный метод генерации паролей по имени сайта/пользователя и т. п.
                                                                    Метод включает в себя два компонента:


                                                                    • файл с ключом, который стоит защитить, но утеря не так опасна
                                                                    • секретный метод преобразования.

                                                                    Если я, например, хочу получить пароль для доступа на habrahabr.ru, то я ввожу в gnu-pw-mgr habra_SECRET_rbah.ru и получаю достаточно случайный пароль.


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

                                                                      0
                                                                      Забытые пароли не такая уж проблема, хуже, когда не помнишь логин или сайт, от которого эти логин с паролем.

                                                                      И да, требования каждый месяц обновлять пароль реально бесят.
                                                                        0

                                                                        Прям очень в тему. Только зарегистрировался для участия в конгрессе) Здесь все прекрасно. http, создание учетной записи через него и ввод паролей. Скан паспорта тоже туда улетел. А в качестве «неплохого» пароля был принят password)))
                                                                          0
                                                                          На одной площадке «парольная фраза» генерировалась подобным образом:
                                                                          zloi.kz/passgen
                                                                            0
                                                                            Как насчет такого пароля:
                                                                            "\x y -> sqrt (x*x) + (y*y)"

                                                                            Запомнить доволно легко
                                                                              0
                                                                              Для важных сайтов, почты и банкинга использую пароль карту. Для остального использую запоминалки паролей.
                                                                                0
                                                                                Идея правильная (something you know + something you have), несколько но:
                                                                                — Какой-то сторонний сервис знает вашу карту, и может попытаться подобрать пароли. Значит, нужно писать свою программу, которая сгенерит вашу карту.
                                                                                — Если кто-то завладел вашей картой, взломав сервис (или сам сервис оказался недобросовестным) — при использовании предложенных алгоритмов составления пароля количество комбинаций для подбора сокращается буквально до нескольких десятков. Скажем, 8 символов по диагонали сверху вниз — всего 22 пароля. Выкидываем те, что не содержат цифры — и вовсе 10. Значит, стандартные алгоритмы генерации пароля из карты использовать нельзя. Придётся использовать свой, более сложный в использовании.
                                                                                — Сохраняется необходимость помнить некоторую абстрактную комбинацию символа и цвета, что не так просто. Если же комбинация не абстрактная (скажем сбербанк — зелёный, альфа-банк — красный) то выбор паролей сужается ещё больше. При использовании усложнённого алгоритма составления пароля может понадобиться запоминать даже большее количество данных.
                                                                                  0
                                                                                  Мне кажется вы слишком все преувеличили. Даже если сервис взломают, сложно будет связать конкретного человека с картой. Получается вы и другие сайты для генерации паролей тоже под одну гребёнку гребёте (да, конечно, опасность есть. Но мне кажется вы слишком все преувеличили). Для того что бы связать придётся обращаться к провайдеру. На сайте нет авторизации. Можно конечно выбирать пароли по рядам, но это уже окружающие вас люди этим могут воспользоваться. Лучше выбрать другую систему, например зигзагом, квадратом или по диагонали и т. д. А вот что то запоминать все же придётся, это да — для некоторых может быть проблемой.
                                                                                0
                                                                                del

                                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                Самое читаемое