Автор md5crypt просит больше не пользоваться его скремблером

    Автор md5crypt Пол-Хеннинг Камп (Poul-Henning Kamp) опубликовал на персональном сайте призыв ко всем разработчикам прекратить использовать этот алгоритм для шифрования (скремблирования) паролей.

    Камп говорит, что для своего времени md5crypt был достаточно надёжной защитой для паролей, но с момента его выхода в 1995 году прошло очень много времени. Последние тесты показывают, что на коммерчески доступном GPU можно перебирать варианты со скоростью 1 миллион в секунду, то есть MD5 сейчас уязвим перед брутфорсом точно в той же степени, в какой был уязвим основанный на DES скремблер crypt в 1995 году. Любой пароль из 8 символов можно взломать за пару дней.

    «Как автор md5crypt, я умоляю всех не откладывая перейти на более надёжный скремблер паролей», — говорит Пол-Хеннинг Камп.

    Камп не называет конкретно, что выбрать вместо md5crypt. Он говорит, что не является видным специалистом по криптографии и не намерен писать новую программу для шифрования паролей. Однако, может дать пару рекомендаций. Во-первых, на самом лучшем GPU программный алгоритм должен срабатывать не быстрее чем за 0,1 секунды.

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

    Алгоритм должен быть основан на повторяемых итерациях с данными, задействуя несколько сложных односторонних хеш-функций — MD5, SHA1, SHA2, Blowfish и так далее. Камп говорит, что можно использовать их все, лишь бы «высосать» максимальное количество аппаратных ресурсов у взломщика.

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

    Впрочем, с последней рекомендацией можно поспорить. Известный криптограф Брюс Шнайер в книге «Секреты и ложь» пишет: «Любой, кто создает собственный образец шифрования, — либо гений, либо глупец». Учитывая количество веб-сайтов в мире, сложно представить такое количество гениев.
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 286
    • +10
      DEFINE("TBP_SALT", "Соль. Ключ. Называйте, как хотите. Чем длиннее, тем лучше, как обычно. Ограничений по алфавиту нет.");
      
      DEFINE("TBP_SALT_p1", substr(
        md5(TBP_SALT),
        min(
          abs(strlen(TBP_SALT)%32-15),
          abs(strlen(TBP_SALT)%32-32)
          ),
        max(
          abs(strlen(TBP_SALT)%32-15),
          abs(strlen(TBP_SALT)%32-32)
          )
        ));
      DEFINE("TBP_SALT_p2", substr(
        md5(strrev(TBP_SALT)),
        min(
          abs(strlen(TBP_SALT)%30-15),
          abs(strlen(TBP_SALT)%32-26)
          ),
        max(
          abs(strlen(TBP_SALT)%32-15),
          abs(strlen(TBP_SALT)%32-26)
          )
        ));
      
      function TBP_PWD($v)
      {
        return md5(
          TBP_SALT_p1.
            md5(
              substr(TBP_SALT, 0, strlen(TBP_SALT)/3).
              $v.
              substr(TBP_SALT, 2*strlen(TBP_SALT)/3, strlen(TBP_SALT)-1)
              )
          .TBP_SALT_p2);
      }
      
      • +8
        Случайно нажал кнопку отправки.

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

        Хранение ключа — вопрос совершенно отдельной темы. Я просто хотел привести пример, как можно чуть лучше, чем тривиально, усложнить жизнь злоумышленнику с GPU.
        • +6
          Вы не учли, что длинны хеша md5() на сегодняшний день для хорошей защиты недостаточно по причине существования коллизий, и брутфорсом можно подобрать если не настоящий пароль, то тот, который имеет такой же md5 хеш, думаю, автор и об этом в том числе говорит.
          Нужен не только более сложный алгоритм в плане вычислений, но и большая длина конечного хеша.
          • +12
            Ага. 128 бит.
            2^128
            Перебираем по миллиарду (~2^30) паролей в секунду. Получаем 2^98 секунд. Гугл подсказывает, что это ~10^22 лет. Возраст Вселенной — примерно 10^10 лет. Т.е. получаем, что на подбор пароля с таким же хешем нам понадобится всего лишь триллион сроков существования Вселенной. Говорить не о чем:)
            • +8
              Я думаю человек выше имел ввиду, что существует вероятность того, что для каждого пароля существуют коллизии.

              И, к сожалению, есть вероятность того, что для вашего супер длинного пароля в минимум 30 символов найдется коллизия, которая будет намного короче (например в 1 байт), и будет случайно найденна при брутофорсе.

              А насчет длинны, то все банальнее. Чем длиннее хеш — тем меньше вероятность того, что такая коллизия существует или будет случайно найденна при брутофорсе.
              • 0
                Ну да. md5 псевдослучайна, и вроде бы никаких эффективных способов ее обратить на текущий момент неизвестно. Значит, нет ничего лучше, чем просто перебирать разные строки и сравнивать их хеш с имеющимся.
                Вероятность совпадения для каждой фиксированной строки есть 2^{-128}. Т.е. в среднем придется перебрать 2^{128}. Это очень, очень долго.
                Конечно, среди паролей длиной в 30 символов есть такие, чьи хеши совпадают с хешами каких-то более коротких паролей. Почти наверняка есть и с хешем, совпадающим с хешем однобуквенного пароля. Но вероятность наткнуться на такой пренебрежимо мала.
                • +26
                  Не могу не процитировать древний баян: «edonkey — крупнейшая сеть для восстановления файлов по их md5-хэшу»
                  • +3
                    Вы забываете, что есть так называемый «парадокс дней рождений», который парадоксом на самом деле не является. В соответствии с ним для нахождения коллизии нам требуется перебрать лишь квадратный корень от длины ключа [случайных] сообщений, чтобы наткнуться на коллизию со значением, которое вы мне предоставили. Т. е. при длине в хэша 128 бит я переберу не 2^128 строк, а всего лишь sqrt(2^128) == 2^64, что тоже не так уж и мало, но уже достаточно, чтобы успешно осуществить перебор. К тому же никто не запрещает распараллелить перебор на большом количество ядер/машин. Например, одна пойдет перебирать с начала, вторая – с конца.
                    • +1
                      ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%B4%D0%BD%D0%B5%D0%B9_%D1%80%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F

                      Отлично, распараллелите на миллиард ядер. Тогда Вам понадобится всего лишь тысяча сроков существования Вселенной)
                      • +1
                        На миллиарде ядер, которые могут выполнять по миллион переборов в секунду, нужно будет всего 5 часов.
                        • +1
                          10^9 ядер
                          10^6 операций в секунду
                          5 часов < 10^5 секунд
                          10^20 < 2^70 вариантов
                          А для нахождения пароля, дающего такой же 128-битный хеш, что и наш, надо в среднем 2^128 попыток. Вы немного обсчитались.
                          • 0
                            в секунду выходит 10^15 операций. или 3.6 * 10^18 в час
                            2^64 = 1.8*10^19

                            Делим первое на второй, получаем 5.124. Для нахождения пароля, как говорили выше, достаточно 2^64 попыток (в большинстве случаев).
                            • +2
                              Ссылку на википедию Вы проигнорировали. Прочитайте, что такое парадокс дней рождения и для чего на самом деле достаточно 2^64. Если будут вопросы — спрашивайте, попробую объяснить:)
                              • 0
                                Я исходил и условия что такие достаточно;) В любом случае, я считаю что проблема надумана и соль вполнее ее решает (может быть в комбинированном варианте). Проблема подбора коллизии. Пароль гораздо проще получить другими способами, чем пытаться посчитать коллизию.
                                • +1
                                  Проблема в следующем:

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

                                  Я не могу понять, зачем люди приплели сюда всякие дни рождения и всё остальное.
                                  • 0
                                    Что он сможет подобрать?
                                    Может я не понимаю, но допустим hash=md5(md5(pass)+salt). Можно узнать, какой pass даст по этой формуле с такой-же солью нужный хеш. Но если соль поменять, то pass уже не подойдет. Т.е. можно будет залогиниться только на этот-же сайт, где взять хеши.

                                    Пароли не скомпрометированы, результат пары дней работы кластера это возможность входа в один аккаунт. При том, что как-то с этого-же сайта уже стянули базу и код (соль). Как-то не очень осмысленно. Наверное, проще соль поместить в таком месте, где ее сложно достать, чем переходить на медленные хеши.
                                    • 0
                                      У нас есть формула:
                                      hash=md5(md5(pass)+salt)

                                      Из этой формулы у нас известны — salt, hash и алгоритм.
                                      Неизвестная одна — pass. Мы подбираем пароль. допустим он у нас «sex123». Теперь у нас есть пароль пользователя. Даже если сервер поменял соль:
                                      hash2=md5(md5(pass)+salt2)
                                      Мы уже знаем пароль пользователя — он не меняется.
                                      • 0
                                        Ну да, я не учел, что в случае короткого пароля, он первым и вылезет при поиске коллизии) Тем не менее — не проще ли спрятать соль? Не хранить ее на диске в открытом виде, а качественно шифруя внутри некого сервиса генерации хешей, который работает в виде бинарного файла. Такой сервис может запускаться долго (шифровать соль по какому-то 2048бит ключу среди кучи мусорных данных), но после запуска иметь соль в памяти для быстрого доступа.
                                        • +1
                                          security through obscurity
                                          • 0
                                            А вы считаете, что долгий хеш будет так уж сложно подобрать ботнетом?
                                            • 0
                                              Я считаю, что при наличии нормального пароля подбирать будет долго и быстрый хеш. Конечно, если производительность вырастет еще во столько же раз, во сколько она выросла с изобретения компьютеров — 128 битов может уже оказаться мало. Но на текущий момент и в ближайшей перспективе перебор 2^128 вариантов является нерешаемой задачей, даже если Вы задействуете всю существующую на планете электронику.
                                              • 0
                                                2^128 это минимум 20 символов пароля (24, если использовать только base64 символы). Согласитесь, заставлять пользователей массового сервиса использовать даже половину от такой сложности пароля, это не очень решаемая задача. Все равно, будут использовать sex123 и дале медленные хеши будут так-же уязвимы, как и быстрые (чуть с большими затратами).

                                                А если сделать сильно медленный хеш, то сервис сам задолбается его считать, серверов не напасешься (еще и с видеокартами).
                                                • 0
                                                  Ну да, пользователей с плохими паролями спасти вряд ли возможно.
                                      • 0
                                        Брутфорс имеет смысл только для простых паролей — коротких либо словарных. Вероятность того, что два разных простых пароля дадут с данной солью один и тот же хеш — исчезающе мала.
                                    • +1
                                      Я исходил и условия что такие достаточно

                                      Расшифруйте, пожалуйста:)

                                      Что именно Вы понимаете под подбором коллизии — нахождение какого-нибудь прообраза по данному хешу, или нахождение пары разных строк с одинаковыми хешами?
                                      Первое требует в среднем проверки 2^128 вариантов.
                                      Второе может быть реализовано с помощью атаки дней рождения и генерации 2^64 хешей — среди этих хешей скорее всего будут хотя бы два одинаковых. Но чем нам поможет нахождение этих двух строк?
                                      • 0
                                        Я просто посчитал, сколько времени нужно будет для перебора 2^64 вариантов, не более.
                                        • +1
                                          А, ну да. Если внезапно нам достаточно перебрать 2^64 вариантов, то всё делается быстро. А если 2^0 — то еще быстрее.
                                          Ветка начиналась с «брутфорсом можно подобрать если не настоящий пароль, то тот, который имеет такой же md5 хеш». И для этого надо 2^128 вариантов.
                                          • 0
                                            Ну по теме брутфорса — надо соль прятать, тогда не смогут брутфорсом поломать хеш;) Вероятность того, что сольют не только базу, но и грамотно спрятанный хеш, очень небольшая.
                          • 0
                            Отлично, распараллелите на миллиард ядер. Тогда Вам понадобится всего лишь тысяча сроков существования Вселенной)

                            Не стоит тратить время, доказывая невозможность того, что люди уже делают.
                            Тебе что-ли дать пару разных .sh скриптов с одинаковыми md5 ключами, чтобы ты поверил?
                            • 0
                              Нет. Мне дать отличный от моего .sh скрипт, у которого будет то же md5 хеш:)
                              Вот скрипт:
                              • 0
                                Промазал, нажал отправить:(
                                while [ `date +%s` -lt 1577833200 ]; do echo 'Обращение md5 на случайном входе - задача нерешаемая при нынешних мощностях'; done
                                

                                Прошу другой скрипт, у которого будет такой же md5, как у этого)
                                • 0
                                  Вы это — habrahabr.ru/post/113127/ — читали, конечно же?:)
                                  • 0
                                    Я это, конечно же, читал. Но я не прошу Вас предъявить пару разных строк с одинаковыми хешами. Я прошу предъявить строку, отличную от моей, у которой такой же хеш.
                                    Изначально речь была именно об этом:
                                    И, к сожалению, есть вероятность того, что для вашего супер длинного пароля в минимум 30 символов найдется коллизия, которая будет намного короче (например в 1 байт), и будет случайно найденна при брутофорсе.
                                • 0
                                  Ситуация примерно такая: kingpin предложил метод, не подходящий к изначальной задаче. Он был неправ. Но дальше ты начал говорить о том, что данный метод невозможно использовать из-за огромных временных затрат. Это неверно, о чём я и сообщил. Метод работает вполне быстро (особенно после нескольких технологических прорывов, касающихся конкретно MD5).
                            • 0
                              Поддерживаю. Причем есть же ботнеты, которые брутят разные хэши паролей толпой в том числе и на гпу.
                              • +1
                                это здесь не причем. парадокс дней рождения применим к нахождению случайных коллизий, и по последним данным это можно сделать значительно быстрее, чем за 2^64… что-то около 2^20. чтобы найти прообраз хеш-значения, все равно потребуется перебирать диапазон, пропорциональный выходному диапазону хеш-функции (и то, при условии ее сюрьективноcти).
                            • 0
                              А с чего вы взяли, что на сервисе не шифруются какие-либо данные пользователя его паролем? В этом случае другой пароль с таким же хэшем бесполезен.
                            • +1
                              В целом вы правы, я немного разогнался с этим утверждением, но некоторые размышления на эту тему всё же напишу.
                              Скрытый текст
                              За это время вы переберете все вообще существующие комбинации.
                              Я подсчитал, что большая ферма видеокарт (современный суперкомпьютер) может уложиться в возраст Вселенной, а если посчитать, сколько комбинаций он сможет высчитать за год — это примерно 0,00 000 001% от всех возможных комбинаций в природе. Да, это мало, но это от всех вообще возможных комбинаций.
                              Конечно, это всё сказки (пока что), но мне кажется, что в обозримом будущем такой стремительный рост мощностей компьютера позволит делать подобные вычисления не только на суперкомпьютерах, но и на более доступных вещах (уже сейчас практикуются такие вещи, как вычисления на видеокартах через интернет), а раз хотя бы миллиардную часть процента (цифра выше) хешей можно будет расшифровать — это уже нельзя использовать в сферах с повышенной требовательностью к безопасности, ибо миллиардная часть от ничем не ограниченного количества возможных комбинаций паролей — это уже существенно.
                              • –1
                                А где хранить информацию? Атомов вселенной недостаточно
                                • 0
                                  Ответить не могу, но почему-то вспомнил Билла Гейтса и 64 Кб

                                  Количество атомов в наблюдаемой Вселенной составляет по разным оценкам от 4*1079 до 1081
                                  • +4
                                    Случайно речь не про 640кб и цитата 1981 года? Если да, то это глубокое заблуждение:

                                    No! That makes me so mad I can't believe it! Do you realize the pain the industry went through while the IBM PC was limited to 640K? The machine was going to be 512K at one point, and we kept pushing it up. I never said that statement–I said the opposite of that.

                                    Gates talks
                                    • +1
                                      И вы ему верите?
                                      Помните, телемост с америкой и случай с «в СССР секса нет». Потом та дама тоже утверждала, что говорила она ровно противоположное. Однако, свидетели ещё живы и, при желании, можно найти видео (кстати, сказала она и не ту фразу, которую ей приписывают, но и не ту, на которой она настаивала постфактум. Реальный вариант ещё смешнее).
                                      Так что я бы не полагался на отмазки дяди Билла.
                                      • +3
                                        Там дама спросила даму, есть ли у них [т.е., у нас] такое же обилие секса в рекламе. Дама ответила даме, мол, нет [у нас в рекламе] никакого секса [как и рекламы] и мы категорически против этого [что такое реклама?].

                                        Т.е., в принципе, можно понять, что она имела в виду, что сказала и что хотела сказать. :)
                                        Всё верно, — она говорила ровно противоположное. %)
                                        • –1
                                          Угу. Только она сказала «ровно противоположное» и тому, что утверждала постфактум :). Вы помните, потом она утверждала, что сказала тогда «в ссср секса нет, а есть любовь и дружба». Ни слова ни о телевидении, ни о рекламе.
                                          А на телемосте все всё правильно поняли. Поржали, потом сквозь смех поправили, — в СССР секс есть, нет рекламы. Американцам, кстати, этот выкрик из зала не перевели, они потрясённо молчали, потом кто-то тихонько спросил что-то вроде, — а откуда у вас дети беруться :)

                                          Всё правильно. Я это и привёл с целью демонстрации того, что последующие утверждения автора высказывания вполне могут отличаться как от того, что им приписывает молва, так и от того, что он в действительности сказал. Поэтому утверждениям Гейтса о том, что сказал Гейтс в начале времён вера ровно такая же, как и исходной урбан-легенд. Нужен независимый источник.
                                        • +1
                                          только что пересмотрел отрывок телемоста, по контексту понятно что нет «секса» на телевидении… да и рекламы практически не было…
                                          • +1
                                            Из нас троих: alekciy, dime и Билла Гейтса на указанный конфе был только последний. Более того, обсуждаемая фраза ему и принадлежит. Так, что ему, как автору, наверное виднее из нас троих, что он там имеел в виду. Поэтому да, верю. Тем паче отлично знаю, как могут искажаться фразы при вырывании их из контекста.
                                            • 0
                                              Ну-у-у. Я же специально про «секса нет» упомянул.
                                              Из нас четверых вас, меня, госпожи Ивановой (или как её там — пусть будет Ивановой) и Билла Гейтса, только госпожа Иванова была на том телешоу. Я его видел по телеку, вы — не знаю, а дядя Билл точно не смотрел.
                                              Собираем вместе — госпожа Иванова утверждает, что упомянутую фразу ей приписали. И утверждает, что она сказала иное (фигня про любовь и дружбу).
                                              Я — действительно приписали. Но и то, что она утверждает сейчас тоже не то, что она тогда говорила! И то, что прозвучало в реальности, всё же ближе к народной молве, нежели к её последующим утверждениям Проверить можно по сохранившимся записям.
                                              Вы — ???
                                              Билл — ему пофиг.

                                              Итого — никому верить нельзя (ц) /но иногда можно свидетелям — свидетельские показания к истине оказались ближе, нежели показания ответчика./
                                              • 0
                                                Я про конкретную фразу в 640кб, давайте сюда не будем приплетать Иванову. Эта два абсолютно разных случая с абсолютно разными людьми.
                                                • 0
                                                  А чем они разные? Прямая аналогия.
                                                  Человеку приписано (либо он действительно так сказал) нечто, в чём ему сейчас неприятно признаваться, либо выглядит вообще полной глупостью. Человек пытается оправдаться выдвигая собственную версию. Она не совпадает с приписываемой и, скорее всего, не совпадает и с реальной. Кто кроме самого Билла подтверждает его утверждения постфактум? Кто, кроме Ивановой подтверждает её утверждения постфактум?
                                            • 0
                                              >И вы ему верите?

                                              Я ему не только верю, но и благодарен. Благодарен за то, что он с дикими усилиями выбил из IBM, которая делала собственно компьютеры (а что, есть дураки, которые думают, что эти 634Kb пошли из софта?), эти самые 640 килобайт. Если бы не он, жили бы с 500 килобайтами.

                                              Что он сказал (в 1981 году, спустя лет 6 лет после), так это, что он надеялся, что сумел оттянуть время, когда памяти перестанет хватать, на 10 лет, но хватило только на 6.
                                      • 0
                                        тут еще стоить учесть, что с каждым годом производительность компьютеров растет, а что еще более важно, стоимость FLOPS падает за каждый год почти в два раза (http://en.wikipedia.org/wiki/FLOPS). и такой «суперкомпьютер» значительно проще будет иметь одному пользователю через несколько лет.
                                    • +1
                                      на самом деле там 2123.4, так что время немного уменьшится. Дело в том, что вычисленные, пусть и на видеокартах данные (таблицы) нужно где-то хранить, с этим пока не так гладко.
                                      www.springerlink.com/content/d7pm142n58853467
                                      • 0
                                        Да, сокращение времени с триллиона сроков существования Вселенной до тридцати миллиардов нам сильно поможет)
                                        За ссылку — спасибо. Не знал.
                                      • 0
                                        Если вспомнить про парадокс дней рождений то на оакажется, что на самом деле достаточно ~ sqrt(2^128) = 2^64 итераций чтобы найти коллизию. Это примерно ~500 лет, то есть имея достаточные средства на железо можно построить вполне рабочую систему для поиска коллизий.
                                        Кстати, пару лет назад я слышал про проект, в котором подключали компьюетры всех желающих для поиска как раз хешей (не уверен что это был MD5).

                                        Чтобы защититься от этой атаки достаточно использовать хеш-функцию с большей длиной хеша. Например SHA-256
                                        • +2
                                          2^64 итераций потребуется чтобы найти два СЛУЧАЙНЫХ блока с одинаковым хешем, это ни в коем случае не поможет вычислить коллизию для заданного значения. И если уж говорить о таком случае то ни о каких 500 годах и речи нет. 15 секунд на пентиуме 4. habrahabr.ru/post/113127/ (соори за саморекламу).
                                          • 0
                                            Парадокс дней рождения заключается, что в выборке размером в корень из числа возможных вариантов скорее всего будут коллизии. Но он никак не помогает в нахождении прообраза для фиксированного хеша (или даже для какого-нибудь из фиксированного миллиарда хешей).
                                          • 0
                                            Да, до полного перебора далеко. Но автор md5crypt утверждает что любой 8ми символьный пароль, зашифрованный md5crypt, уже сейчас может быть вскрыт за пару дней. Если учесть что md5crypt как минимум в 1000 раз медленнее простого md5, получается при простом хешировании через md5 любой восьмисимвольный пароль можно вскрыть за полчаса. :)
                                            Понятно, что такой брутфорсер пока недоступен массам взломщиков, но это, согласитесь, неприятно.
                                            • 0
                                              что ж я тогда над гибридным GPU-брутфорсером бился, ежели 8 символов можно за полчаса вскрыть. Да, в случае алфавита из символов одного регистра — так, но это несколько странно, использовать пароль из 8 символов, без спецзнаков. Тогда, вероятно это просто слово из словаря, которое можно найти за секунды.
                                              • 0
                                                Ну вы в общем то, надеюсь, понимаете что утверждение «пароль из 8 символов, без спецзнаков. Тогда, вероятно это просто слово из словаря, которое можно найти за секунды» в общем и целом неверно?
                                                Я даже рискну предположить что большинство паролей именно такие, но далеко они не все словарные — врядли у кого есть словарь на 302231454903657293676544 паролей.
                                                Про полчаса я конечно был не прав, но Камп ссылается именно на это
                                                image
                                                И это в общем то не предел, скорости GPU растут.
                                                • 0
                                                  ну и вы, надеюсь, представляете, что словарный пароль — не только тот, который лежит в некотором файле из 3022… паролей, а еще тот, который легко декомпозируется на несколько (скажем до трех) строк из словаря среднего размера. Для подобной техники не трудно написать программу, а оставшиеся 2-3 процента паролей в случае массового аудита не так интересны (это в общем-то даже целая задача, придумать пароль из 8 маленьких символов, который нельзя разумно декомпозировать по стокилобайтному словарю).
                                                  • 0
                                                    Вот Вам решение этой задачи:)
                                                    from random import choice
                                                    from string import lowercase
                                                    print ''.join([choice(lowercase) for i in range(8)])
                                                    
                                                    • 0
                                                      Я так понял, что автор предполагал все таки более интелектуальную декомпозицию, по аналогии с описанной в habrahabr.ru/post/122633/
                                                      • 0
                                                        Ну, удачи в придумывании интеллектуальной декомпозиции для такого пароля)
                                                        • 0
                                                          Ну вопрос тут конечно в массовости подобных паролей, и он, конечно, открыт.
                                                          • 0
                                                            Да, 90% процентов пользователей — идиоты, и ставят дурацкие пароли. Мне нередко удается подобрать пароль к закрытой точке wifi вручную)

                                                            Но это не делает верным утверждение «это в общем-то даже целая задача, придумать пароль из 8 маленьких символов, который нельзя разумно декомпозировать»
                                                      • 0
                                                        слово «разумно» вы проигнорировали :)
                                                        • 0
                                                          Нет, конечно. Попробуйте построить разумную декомпозицию полученного таким образом пароля)
                                                      • 0
                                                        Простите, даже специально перечитывал несколько раз ваше сообщение, но не уловил сути. В теории — декомпозируйте любой словарь хоть сколько угодно раз вы и близко не приблизитесь к цифре в 3022… паролей. А если говорить о реальности — какой процент реальных паролей <= 8 символов является словарным — то все зависит от словаря с одной стороны и от паролей с другой. Тут можно долго теоретизировать — реальных цифр все равно взять неоткуда.
                                                        • 0
                                                          Ну почему неоткуда? В открытом доступе есть куча слитых паролей.
                                                          И было высказано утверждение «это в общем-то даже целая задача, придумать пароль из 8 маленьких символов, который нельзя разумно декомпозировать по стокилобайтному словарю». Приведенный мной код решает эту задачу)
                                                          • 0
                                                            Выскажу тоже предположение — что ваши что мои слова это пустое сотрясание воздуха. В теории — это 302231454903657293676544 паролей даже без цифр и в теории же ничтожная часть паролей словарны. Есть желание проверить практику — можете заняться проверкой, я буду лучше использовать хеши понадежнее, помедленнее и предназначенные для хеширования паролей, благо это ничего не стоит.
                                                            • 0
                                                              Еще раз. sic утверждал, что придумать словарь из 8 символов, не декомпозирующийся по словарю — задача сложная. Я указал, что это не так.

                                                              А откуда Вы взяли именно число 2^78, если не секрет?) Это явно гораздо больше, чем 8символьных паролей (которых, очевидно, меньше 2^64).
                                                              • 0
                                                                А, прошу прощения, я чего то подумал что наоборот. :)
                                                                И да, я конечно протупил, то количество 8ми символьных паролей из 26 возможных символов всего 208 827 064 576 = 26^8, а не 8^26 = 2^78 ;)
                                                                Мог бы сразу прикинуть что число великовато получается для миллиарда хешей в секунду…
                                              • 0
                                                А если брать пароль, брать от него SHA2, делить SHA2 на 3 части, каждую часть в md5 и склеивать через три символа (1 символ из первого хэша второй из второго третий из третьего)?
                                                • +1
                                                  Если количество символов не меняется — это только защита от радужных таблиц, но не от коллизий и полного перебора.
                                                  • 0
                                                    Как вы собираетесь перебирать кашу из трех склееных хэшей? Более того можно задать правило по которому они будут перемешиваться.
                                                    • 0
                                                      Таки да, пароль узнать не получится.
                                                      Что-то мне уже пока спать…
                                                    • +1
                                                      Вот так и перебирать. Брутфорс на то и брутфорс, чтобы на вход произвольному алгоритму скармливать всё подряд и ждать некоторого значения.

                                                      И склеивать, делить — практически никак процесс брутфорса не усложняет.
                                                      • 0
                                                        ps: я дал верхний ответ, предполагая, что злоумышленнику известен алгоритм (худший случай развития событий)
                                                        • +1
                                                          «злоумышленнику известен алгоритм» — стандартный вариант развития событий
                                                  • +5
                                                    Видимо, также как и вытащил твой хеш, хацкер вытащит твой алгоритм.
                                                    Крайне не рекомендуется что-то выдумывать в области безопасности, тем более, такой бред.
                                                    Лучше следовать рекомендациям, придуманным умными людьми, и делать это аккуратно.
                                                    • –2
                                                      Вешаем работу алгоритма на другой сервер, оставляем там только алгоритм и более ничего, чем меньше служб запущеных служб тем лучше, негде будет найти дыру.
                                                      • +1
                                                        Узнать алгоритм куда более простая задача, чем узнать пароль, так что всегда предполагается, что алгоритм известен. Иначе можно было бы не париться с хешами, а просто хитро-хитро перетасовывать пароль — и держать хитрый алгоритм в секрете.
                                                    • 0
                                                      Думать нужно не о мешанине, а о расходе ресурсов потенциального хакера. Уж лучше 100 раз делать SHA с солью, чем заниматься ерундой.

                                                      А чтоб собственный сервер не сдох при авторизации, делать первые Х итераций на стороне клиента, а У на стороне сервера. Соотношение Х/У зависит от того что важнее доступ к сервису или пароль конечного пользователя.
                                                      • 0
                                                        Или использовать OTP.
                                                  • +2
                                                    Далее — в вопросах разработки и оценки безопасности систем хорошо было бы руководствоваться чем-то вроде en.wikipedia.org/wiki/Kerckhoffs's_principle.

                                                    С этой точки зрения ваше

                                                    > даже подобрав первый раунд md5, злоумышленнику придется сначала отыскать, где именно в строке лежит второй md5 с подсоленным секретом.

                                                    это security by obscurity, которое никакой security не является вообще.

                                                    И рассматривать скорее худший случай, когда о вашей системе всё известно. В этом случае посоленные одинаковой солью пароли менее стойки, чем посоленные рандомными и своими для каждого из паролей.
                                                    • 0
                                                      Хочу привести ссылку на комент недавней статьи, где есть хорошая ссылка на другой комент
                                                      habrahabr.ru/post/145448/#comment_4887222

                                                      Тем кому лень. Нет надёжного метода, причина — короткие и простые пароли юзеров.
                                                      • 0
                                                        Так то оно так. Но одно дело когда хакер вскрет пароли типа 1234 и словарные — другое дело когда вскроет 95% всех паролей как было с Lastfm — которые и исаользовали как раз md5.
                                                    • +4
                                                      Соль должна быть рандомная и уникальная для каждого из паролей.

                                                      Все пляски вокруг вырезания подстроки из md5 от соли и добавления к паролю АБСОЛЮТНО никакой криптостойкости не прибавляют.
                                                      • –1
                                                        Согласен. Можно так же менять соль и хеш при каждой успешной авторизации.
                                                        • 0
                                                          Это ничего не изменит.
                                                          • 0
                                                            Разве? Пи атаке на коллизиях, если подбор коллизии занимает неделю, а хэш меняется каждый день, то смысла искать коллизии нет, только восстанавливать оригинальное значение пароля.
                                                            • +1
                                                              Ну я, вообще говоря, говорил о позиции с точки зрения пользователя и защищённости его пароля от узнавания.

                                                              Далее — если вы взломщик и получили какое-то мгновенное значение соли и хэша — то опять же факт что эта соль была изменена за секунду до взлома, и будет изменена через секунду после точно так же ничего не изменит, потому что у вас уже есть мгновенное значение.
                                                              • 0
                                                                При факте взлома — принудительная смена пароля. Да и можно, ли говорить о безопастности, если хакер уже всё знает :).
                                                                • 0
                                                                  Мы говорим о защите пароля пользователя, потому как есть ненулевой шанс, что он его использовал где-то ещё.
                                                                  • 0
                                                                    Мы говорим о повышении криптостойкости, при подсаливании пароля. Подсаливание отметает радужные таблицы и колизии (в случае с непрямым md5). От атаки в лоб не спасёт ни какое шифрование. Всё зависит от ресурсов, которыми распологает потенциальный взломщик. Если у него дата-центр, то там как ни шифруй…
                                                                    p.s. панацеи нет, есть только время взлома, с оговоркой на необходимые ресурсы.
                                                                    • 0
                                                                      Пожалуйста, перечитайте всю ветку сначала.

                                                                      Вы предложили менять соль после каждой авторизацию. Я сказал что это не имеет никакого смысла. М?
                                                                      • 0
                                                                        Если хакер знает хеш, но незнает алгоритм — это заметно увеличит криптостойкость. Или я не прав?
                                                                        • +1
                                                                          Начали за здравие…

                                                                          Ещё раз: вы предложили менять соль — это ничего не изменит.

                                                                          Далее: Незнание алгоритма процесс усложнит, верно, но в вопросах оценки безопасности системы принято оценивать худшие случаи, когда мы полагаем, что у злоумышленника есть всё, до чего в принципе возможно дотянуться.
                                                                          • 0
                                                                            Ссори за нубский вопрос и за спасибо за терпение :), но какой тогда вообще смысл в защите информации, если у хакера уже есть всё, до чего возможно дотянутся?
                                                                            • 0
                                                                              Смысл в том (я повторяю это уже во второй раз), чтобы сделать процесс получения исходного пароля пользователя экономически невыгодным.
                                                                              • 0
                                                                                А зачем ему пароль? У него уже есть вся информация.
                                                                                • 0
                                                                                  Затем, что этот же пароль пользователь может использовать, к примеру, на пейпале. Или на гмейле. (это я тоже уже говорил, хоть это и очевидно)
                                                                                  • 0
                                                                                    Спасибо, что разжевали…
                                                                                    • 0
                                                                                      Было бы интересно узнать, какой способ защиты вы предложите.
                                                                                      • 0
                                                                                        Я в этой самой ветке уже предлагал в самом начале. Видимо всё придётся повторять дважды: использовать рандомную соль, для каждого пароля свою
                                                                                        • –3
                                                                                          Вы же выше писали, что
                                                                                          в вопросах оценки безопасности системы принято оценивать худшие случаи, когда мы полагаем, что у злоумышленника есть всё, до чего в принципе возможно дотянуться
                                                                                          .

                                                                                          Тогда получается зачем вообще солить? Кормим брутфорсу соль и сидим так же ждём.
                                                                                          • 0
                                                                                            О боже мой, солить для того, чтобы нельзя было использовать радужные таблицы. А разная соль нужна, чтобы каждый пароль пришлось брутить отдельно.
                                                                                            • –1
                                                                                              «чтобы каждый пароль пришлось брутить отдельно» и как это спасёт пароль? Зачем кому-то брутить всю базу юзеров? Всегда достаточно одного.
                                                                                              • 0
                                                                                                Отсюда получается, что уникальность соли — рута не спасёт. Как и любого другого юзера.
                                                                                                • +1
                                                                                                  Я устал повторять очевидные вещи, но я всё таки сделаю это в последний раз: соль призвана не защитить на 100% пароль (защита системы от взлома вообще никак к соли не относится), а сделать брутфорс экономически невыгодным.

                                                                                                  Пароли для важных аккаунтов должны быть достаточно длинными (знаков 15) и составленными из букв разного регистра, цифр и спецсимволов.

                                                                                                  Вкупе всё сказанное выше делает перебор невозможным в этом столетии.
                                                                                                  • –1
                                                                                                    «Пароли для важных аккаунтов должны быть достаточно длинными (знаков 15) и составленными из букв разного регистра, цифр и спецсимволов».

                                                                                                    Да только не каждому это объяснишь. И к уникальности соли это никак не отсноситься. Если взломщик знает, соль и хеш жертвы, то ему всё равно какая соль у пользователя на строчку ниже или выше. Он запустит бот сеть и далее будет с чувством выполненного долга мирно похрапывать.
                                                                                                    • 0
                                                                                                      Я не понимаю, к чему вы клоните. Я рассказал зачем нужна соль и как лучше всего её применять.

                                                                                                      > И к уникальности соли это никак не отсноситься. Если взломщик знает, соль и хеш жертвы, то ему всё равно какая соль у пользователя на строчку ниже или выше

                                                                                                      Если жертва конкретный человек — да. Если жертвы — все пользователи из дампа, тогда не всё равно (я это уже повторил здесь минимум дважды, это третий раз).

                                                                                                      Так или иначе — в капитана мне играть надоело. По существу у вас есть что сказать?
                                                                                                      • –1
                                                                                                        Ну раз на то пошло, то видимо придётся роль капитана очевидности принять на себя.
                                                                                                        — «Если у хакера есть база юзеров с хешами и солью, то ему ненужно ломать всю базу, достаточно одного юзера, который имеет права админа. Поэтому уникальная соль никакой пользы, в данном случае не даёт.»

                                                                                                        Если же расматривать такую ситауцию в которой, взломщик не имеет прямого доступа к базе и не может узнать соль любого другого пользователя кроме своего, то да ваш вариант сработает. Но! В 90% случаев хеш и соль будет храниться в БД и скорее всего в одной таблице, поэтому узнать хеш без соли — мало вероятный сценарий.
                                                                                                        • 0
                                                                                                          Я и не говорил про узнавание хэша без соли, не знаю даже с чего вы это взяли.

                                                                                                          Соль должна быть рандомной, она не должна быть секретной.

                                                                                                          Я могу повторить в четвертый раз: назначение соли — уберечь от применения радужных таблиц.

                                                                                                          > Если же расматривать такую ситауцию в которой, взломщик не имеет прямого доступа к базе и не может узнать соль любого другого пользователя кроме своего, то да ваш вариант сработает

                                                                                                          Он сработает и с известной рандомной солью. Пожалуйста, перечитайте тред снова. А потом немного подумайте.

                                                                                                          Повторю прошлый вопрос: по существу обсуждаемого топика (не придумывая, что я сказал) у вас есть что сказать?
                                                                                                          • –4
                                                                                                            Я смотрю вы людите всё считать, тогда перечитайте еще раз, что я вам пытаюсь донести. Соль не должны быть секретной? А какой толк от такой соли? Вы играете словами как жанглёр в цирке. Я вам пытаюсь донести, что знание соли, хеша и алгоритма никак не защитит от брутфорса.
                                                                                                            Для защиты от радужных таблиц достаточно и одной соли.
                                                                                                            И рассматривать варианты, когда хакер знает всё — бессмысленно.
                                                                                                            Чтобы реально усложнить жизнь взломщику нужно сделать так, чтобы кол-во ключевых элементов необходимых для брутфорса было как можно больше. Чтобы это произошло нужно приблизить к нулю кол-во констант в выражении «хеш+соль+алгоритм=пароль». Следовательно алгоритм, как и соль, должен быть тоже переменной. Тем самым мы снижаем вероятность обладания сразу всеми состовляющими, «с точки зрения пользователя и защищённости его пароля от узнавания».
                                                                                                            «Подальше спрячешь — поближе возмешь»
                                                                                                            • +2
                                                                                                              > Я смотрю вы людите всё считать, тогда перечитайте еще раз, что я вам пытаюсь донести. Соль не должны быть секретной? А какой толк от такой соли? Вы играете словами как жанглёр в цирке. Я вам пытаюсь донести, что знание соли, хеша и алгоритма никак не защитит от брутфорса.

                                                                                                              Я НИГДЕ НЕ ГОВОРИЛ, ЧТО МОЖНО ЗАЩИТИТЬСЯ ОТ БРУТФОРСА

                                                                                                              Толкт от соли (абсолютно не принципиально, секретной или не секретной) — защита от радужных таблиц.

                                                                                                              > Для защиты от радужных таблиц достаточно и одной соли.

                                                                                                              Недостаточно.

                                                                                                              Повторю себя же: «Если у вас на руках база в 800М юзеров — то брутить каждого по отдельности или всех за раз — разница колоссальная.»

                                                                                                              > Тем самым мы снижаем вероятность обладания сразу всеми состовляющими, «с точки зрения пользователя и защищённости его пароля от узнавания».

                                                                                                              Я говорил не о теории вероятностей, я говорил о криптостойкости.

                                                                                                              Я устал повторять одно и то же. Думайте что хотите. Если это прекратит этот бессмысленный диалог (в котором я повторяю одно и то же, а вы пытаетесь подход security by obscurity возвести в абсолют) и вы наконец угомонитесь писать вещи, которые вообще не о теме разговора — то «я неправ». Окей?
                                                                                                              • –4
                                                                                                                Смысл в том (я повторяю это уже во второй раз), чтобы сделать процесс получения исходного пароля пользователя экономически невыгодным.
                                                                                                                • +1
                                                                                                                  Всё верно. Рандомная соль вкупе с медленнэм алгоритмом хеширования этот процесс таковым и делает (это я повторяю в третий раз).

                                                                                                                  Вы издеваетесь?
                                                                                                                  • –2
                                                                                                                    Или я пропустил первые два раза или Вы всегда с трёх начинаете считать.
                                                                                                                    • 0
                                                                                                                      Про рандомные я говорил много раз, про медленный алгоритм — вам лично сказал как минимум один раз: habrahabr.ru/post/145454/#comment_4890716

                                                                                                                      Окей, пускай не в третий, во второй.

                                                                                                                      У вас кроме этого есть что сказать? Предлагаю начать докапываться до пунктуации и орфографии.
                                                                                                                      • –3
                                                                                                                        Я хотел тем самым обратить ваше внимание, что вы изменяете суть сказанного не в первый раз. И заметье, что в том комментарии Вы это говорили уже три раза. Я сомневаюсь, что вы вообще умеете считать.
                                                                                                                        • 0
                                                                                                                          Я не изменял сути сказанного. Пожалуйста, укажите на моменты, когда я «изменил суть сказанного». Я последователен в этом диалоге и повторяю те же тезисы из раза в раз. А вы кидаетесь от одного к другому.

                                                                                                                          Перечитайте весь тред, в этот раз «внимательно».

                                                                                                                          Хочу особо отметить, что тред начался с вашей фразы о смене соли каждый раз. Вы от этого своего предложения уже открестились что ли?
                                                                                                                        • –2
                                                                                                                          От медленного алгоритма скорее сервер помрёт.
                                                                                                                          • 0
                                                                                                                            У вас сервер помрёт раньше от нагрузки, до того момента, как вы сможете набрать аудиторию, чтобы она (аудитория) своими авторизациями создала сколь-нибудь видимую на общем фоне нагрузку.

                                                                                                                            Это уже несколько раз (и мной, и другими людьми) обсуждалось в этом тредике. Перечитайте все обсуждения, чтобы не пришлось повторять всё по нескольку раз и в этом случае.
                                                                                                                            • –1
                                                                                                                              Вообщем бесмысленный разговор. Я свою позицию высказал. Пытался объяснить своё виденье до Вас, но весь диалого постоянно сводиться к монологу о кол-ве повторений себя же. Может стоит отложить калькулятор в сторону и людям будет проще найти взаимопонимание?
                                                                                                                              • 0
                                                                                                                                *своё виденье для Вас
                                                                                                                                • 0
                                                                                                                                  Давайте отложим.

                                                                                                                                  Выскажите тезисно свои мысли.

                                                                                                                                  То что я уже видел от вас:

                                                                                                                                  1. Нужно менять соль после авторизации — смысла не имеет
                                                                                                                                  2. Соль не защищает от брутфорса — не защищает, и не должна по определению. Она его усложняет, но не делает невозможным.
                                                                                                                                  3. Рандомная соль не защищает пользователей — перекликается с пунктом 2. Соль не должна защищать на 100%, она должна делать процесс невыгодным. Рандомная соль это позволяет делать.

                                                                                                                                  У вас есть что ещё сказать?
                                                                                                                                  • –2
                                                                                                                                    Вы как всегда упустили добрый кусок смысла.
                                                                                                                                    ключевых элементов необходимых для брутфорса было как можно больше. Чтобы это произошло нужно приблизить к нулю кол-во констант в выражении «хеш+соль+алгоритм=пароль». Следовательно алгоритм, как и соль, должен быть тоже переменной.
                                                                                                                                    • 0
                                                                                                                                      Я оцениваю the worst case, когда злоумышленнику известно всё.

                                                                                                                                      Весь этот пост посвящён ситуации минимизации после утечки ВСЕГО, ЧЕГО ТОЛЬКО ВОЗМОЖНО.

                                                                                                                                      А то, о чём говорите вы, называется security through obscurity и секьюрити на самом деле является мало.

                                                                                                                                      Вы готовы/хотите продолжить обсуждение в ключе «злоумышленнику известно всё»? (именно в этом ключе и обсуждается безопасность в этом посте и именно этому он и был посвящён)
                                                                                                                                      • –2
                                                                                                                                        Вы классический софист. Специально для вас название поста «Автор md5crypt просит им больше не пользоваться». Могу пояснить еще раз пост вообще не про «способы использования md5 в ситации полной утечки». Пост сообщает, что нужно искать новые методы шифрования/хеширования.

                                                                                                                                        А то, о чём говорите вы, называется security through obscurity и секьюрити на самом деле является мало.

                                                                                                                                        Названия сути не меняет. Вы предлагаете придумать способ медленного шифрования, я же предлагаю просто увеличить, кол-во неизвестных до максимума. О чем, кстати, и говорит нам автор md5crypt, предлагая возможные векторы дальнейшего развития. Только лишь я делаю ставку на то, что хакер не сможет узнать все компоненты хеширования (алгоритм, соль и хеш), а вы делаете ставку на ресурсоёмкость алгоритма.

                                                                                                                                        p.s. может кстати порекомендуете, какой-нибудь алгоритм?
                                                                                                                                        • 0
                                                                                                                                          Вообщем вывод из нашего диалога следующий нужна золотая середина. Вопрос как её найти?
                                                                                                                                          • 0
                                                                                                                                            > Вы предлагаете придумать способ медленного шифрования

                                                                                                                                            Не я, но и автор md5crypt

                                                                                                                                            Цитата из топика:

                                                                                                                                            > Только лишь я делаю ставку на то, что хакер не сможет узнать все компоненты хеширования (алгоритм, соль и хеш), а вы делаете ставку на ресурсоёмкость алгоритма.

                                                                                                                                            Вы надеетесь, что хакер не сможет узнать. Это и есть through obscurity. А я на это не полагаюсь. Я не говорю, что нужно писать как попало — естественно защищаться от утечек данных/кода нужно, но я обсуждаю возможность защиты от последствий утечки, принимая это за случившийся факт.

                                                                                                                                            > p.s. может кстати порекомендуете, какой-нибудь алгоритм?

                                                                                                                                            en.wikipedia.org/wiki/Bcrypt и побольше раундов

                                                                                                                                            В соседних комментариях это обсуждалось.j
                                                                                                                                            • 0
                                                                                                                                              Цитата из топика не приложилась :-(

                                                                                                                                              > Камп говорит, что можно использовать их все, лишь бы «высосать» максимальное количество аппаратных ресурсов у взломщика
                                                                                                                • 0
                                                                                                                  > — «Если у хакера есть база юзеров с хешами и солью, то ему ненужно ломать всю базу, достаточно одного юзера, который имеет права админа. Поэтому уникальная соль никакой пользы, в данном случае не даёт.»

                                                                                                                  Удачного вам взлома. В случае правильного пароля — будете перебирать тысячи лет. В случае неправильного — вам никто и не говорил, что применение соли на 100% защитит от узнавания.

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

                                                                                                                  Пожалуйста, перестаньте отвечать в эту ветвь, по 4 или 5 раз повторять одно и то же мне уже терпения не хватит.
                                                                                                        • 0
                                                                                                          Если у вас на руках база в 800М юзеров — то брутить каждого по отдельности или всех за раз — разница колоссальная.
                                                                                              • 0
                                                                                                У него может быть только read only доступ, а хочется провести пару транзакций.
                                                                                            • 0
                                                                                              Мы ведь (и это я повторяю во второй раз) говорим о защите пароля пользователя, а не о сферической защите от сферического непонятно чего.
                                                                              • +1
                                                                                Уже обсуждалось: habrahabr.ru/post/136580/#comment_4544628
                                                                                Если мы будем перебирать не подряд, а в случайном порядке (с возможными повторами), то изменения хеша ожидание времени перебора не увеличат.
                                                                                Пусть у нас всего M возможных паролей. Тогда чтобы наткнуться на данный с вероятностью 1/2 при последовательном переборе нам надо сделать M/2 попыток.
                                                                                При случайном переборе вероятность наткнуться на данный за K попыток составляет 1 — (1 — 1/M)^K.
                                                                                1 — (1 — 1/M)^K = 1/2
                                                                                (1 — 1/M)^K = 1/2
                                                                                K*ln(1 — 1/M) = -ln(2)
                                                                                K*(1/M) = ln(2)
                                                                                K = M*ln(2)
                                                                                Т.е. нам понадобится примерно 0.7M попыток. Что всгео лишь в полтора раза больше чем при последовательном переборе.
                                                                                • 0
                                                                                  Плюс рандомный порядок обязывает нас где-то хранить уже испробованные варианты. И перед очередной попыткой проверять.
                                                                                  • +1
                                                                                    с возможными повторами
                                                                            • 0
                                                                              А смысл? Теоретически это даже хуже, т.к. получается большое количество криптотекстов с разной солью и одним и тем же паролем.
                                                                              • 0
                                                                                В случае умного процесса ломания — это было бы хуже (а умных способов для md5 ещё не придумали ведь?)

                                                                                А для брута — те же яйца
                                                                                • 0
                                                                                  Если система скомпрометирована, а классическая Ева сохраняет каждый сгенерированный хеш, то наличие нескольких хешей с разной солью и одним паролем серьезно влияет на стойкость пароля.