Строительство дач
Отделочные работы
Песок карьерный мытый
Щебень известняковый
Гранитный щебень
Коттеджные поселки
Ландшафтное проектирование
Архитектурное проектирование
Проектирование канализации
Реконстукция зданий

СТРОИТЕЛЬНЫЕ РАБОТЫ

Выписка прописка одновременно


9111.ru - страница не найдена

  • — Главная
  • — Каталог юристов
  • — Вопрос юристу
  • Задать вопрос
  • Автомобильное право
  • Административное право
  • Алименты
  • Банковское право
  • Банкротство
  • Взыскание задолженности
  • Военное право
  • ГИБДД
  • Гражданское право
  • Гражданство
  • Договор
  • Долевое участие в строительстве
  • Жалоба
  • Жилищное право
  • Завещание
  • Защита прав потребителей
  • Заявления
  • Земельное право
  • Имущество
  • Инвалидность
  • Иск
  • Исполнительное производство
  • Кредит
  • Курение и алкоголь
  • Лицензирование
  • Льготы и компенсации
  • Медицинское право
  • Международное право
  • Миграционное право
  • Надбавки
  • Налоги
  • Наследство
  • Недвижимость
  • Нотариат
  • Образование
  • Опека
  • Пенсии и пособия
  • Полиция
  • Право собственности
  • Развод
  • Семейное право
  • Социальное обеспечение
  • Страхование
  • Субсидии
  • Судопроизводство
  • Таможенное право
  • Трудовое право
  • Уголовное право
  • Финансовое право
  • Юридические лица

R: Как извлечь даты из временного ряда

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Публичные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним технические возможности карьерного роста
  5. Талант Нанимать технический талант
  6. реклама Связаться с разработчиками по всему миру

Загрузка…

    python - извлечение только месяца и года отдельно от столбца Pandas Datetime Переполнение стека
    1. Товары
    2. Клиенты
    3. Случаи использования
    1. Переполнение стека Публичные вопросы и ответы
    2. Команды Частные вопросы и ответы для вашей команды
    3. предприятие Частные вопросы и ответы для вашего предприятия
    4. работы Программирование и связанные с ним технические возможности карьерного роста
    5. Талант Нанимать технический талант
    6. реклама Связаться с разработчиками по всему миру

    Загрузка…

    ,
    Безопасное хеширование защищенных паролей - как это сделать правильно Поиск хэша (apple) в хэш-списке пользователей ...: совпадения [alice3, 0bob0, charles8]
    Поиск хэша (blueberry) в хэш-списке пользователей ...: совпадения [usr10101, timmy, john91]
    Поиск hash (letmein) в списке хэшей пользователей ...: совпадения [wilson10, dragonslayerX, joe1984]
    Поиск хэша (s3cr3t) в списке хешей пользователей ...: совпадения [bruce19, knuth2337, john87]
    поиск хеша ( z @ 29hjja) в хеш-списке пользователей...: Ни один пользователь не использовал этот пароль

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

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

  1. Радужные Столы

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

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

    Добавление соли

    хэш ( "Привет") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
    хэш ( "Привет" + "QxLUF1bgIAdeQX") = 9e209040c863f84a31e719795b2577523954739fe5ed3b58a75cff2127075ed1
    хэш ( "Привет" + "bv5PehSMfV11Cd") = d1d3ec2e6f20fd420d50e2642992841d8338a314b8ea157c9e18477aaef226ab
    хэш ( "Привет" + "YYLmfY6IehjZMQ") = a49670c3c18b9e079b9cfaf51634f563dc8ae3070db2c4a8544305df1b60f007

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

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

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

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

    НЕПРАВИЛЬНЫЙ путь: короткая соль и повторное использование соли

    Наиболее распространенные ошибки реализации соли - повторное использование одной соли в нескольких хэши или использование слишком короткой соли.

    Повторное использование соли

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

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

    короткая соль

    Если соль слишком короткая, злоумышленник может построить таблицу поиска для каждого возможная соль. Например, если соль только три символа ASCII, то есть только 95x95x95 = 857,375 возможных солей. Это может показаться много, но если каждая справочная таблица содержит только 1 МБ наиболее распространенных паролей, вместе они будут только 837 ГБ, что не так много, учитывая, что 1000 ГБ жестких дисков могут быть купленным сегодня за 100 долларов.

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

    Чтобы злоумышленник не смог создать справочную таблицу для каждого возможна соль, соль должна быть длинной. Хорошее правило - использовать соль, которая имеет тот же размер, что и выходные данные хэш-функции.Например, вывод SHA256 имеет 256 бит (32 байта), поэтому соль должна быть не менее 32 случайных байтов.

    НЕПРАВИЛЬНЫЙ способ: двойное хеширование и дурацкие хэш-функции

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

    Вот несколько примеров плохих дурацких хеш-функций, которые я видел на форумах в Интернете.

    • MD5 (sha1 (пароль))
    • MD5 (MD5 (соль) + MD5 (пароль))
    • sha1 (sha1 (пароль))
    • sha1 (str_rot13 (пароль + соль))
    • md5 (sha1 (md5 (md5 (пароль) + sha1 (пароль)) + md5 (пароль)))

    Не используйте ни один из них.

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

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

    Если вы действительно хотите использовать стандартизированную "дурацкую" хеш-функцию, такую ​​как HMAC, тогда все в порядке. Но если ваша причина состоит в том, чтобы замедлить вычисление хеша, сначала прочитайте раздел о растяжении ключа.

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

    Hash Collisions

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

    Столкновительные атаки являются признаком того, что для строки, отличной от пароль пользователя, чтобы иметь тот же хэш. Тем не менее, обнаружение столкновений даже в Слабая хеш-функция, такая как MD5, требует много вычислительной мощности, поэтому Маловероятно, что эти столкновения произойдут «случайно» на практике. пароль хешируется с использованием MD5 и соль, для всех практических целей, так же, как надежно, как если бы он был хеширован SHA256 и солью. Тем не менее, это хороший Идея использовать более безопасную хеш-функцию, такую ​​как SHA256, SHA512, RipeMD или WHIRLPOOL, если это возможно.

    ПРАВИЛЬНЫЙ ПУТЬ: Как правильно хешировать

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

    Основы: смешивание с солью

    Предупреждение: не просто читайте этот раздел. Вы обязательно должны реализовать материал в следующем разделе: «Усиление взлома паролей: медленный хэш» Функции ".

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

    Соль должна генерироваться с использованием криптографически безопасного псевдослучайного кода Генератор номеров (CSPRNG).CSPRNG сильно отличаются от обычных генераторы псевдослучайных чисел, такие как язык "C" функция rand (). Как следует из названия, CSPRNGs разработаны, чтобы быть криптографически безопасными, то есть они обеспечивают высокий уровень случайность и совершенно непредсказуемы. Мы не хотим, чтобы наши соли были предсказуемо, поэтому мы должны использовать CSPRNG. В следующей таблице перечислены некоторые CSPRNG которые существуют для некоторых популярных платформ программирования.

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

    Сохранить пароль
    1. Создайте длинную случайную соль, используя CSPRNG.
    2. Добавьте соль к паролю и хэшируйте его с помощью стандартной функции хеширования пароля, такой как Argon2, bcrypt, scrypt или PBKDF2.
    3. Сохраните соль и хеш в записи базы данных пользователя.
    Подтвердить пароль
    1. Получить соль пользователя и хэш из базы данных.
    2. Добавить соль к заданному паролю и хэшировать, используя ту же хеш-функцию.
    3. Сравните хеш данного пароля с хешем из базы данных. Если они совпадают, пароль правильный. В противном случае пароль неверен.
    В веб-приложении всегда хеша на сервере

    Если вы пишете веб-приложение, вы можете спросить , где хэшировать.Должен ли пароль быть хеширован в браузере пользователя с помощью JavaScript, или должен он будет отправлен на сервер "в открытом виде" и там хешируется?

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

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

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

    • Хеширование пароля на стороне клиента - это , а не вместо HTTPS. (SSL / TLS). Если соединение между браузером и сервером небезопасно, человек посередине может изменить код JavaScript, как это скачать, чтобы удалить функцию хеширования и получить пользователя пароль.

    • Некоторые веб-браузеры не поддерживают JavaScript, а некоторые пользователи отключают JavaScript в их браузере. Так что для максимальной совместимости, ваше приложение должен определить, поддерживает ли браузер JavaScript и эмулировать хэш на стороне клиента на сервере, если это не так.

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

    Усиление взлома паролей: медленные хэш-функции

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

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

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

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

    Если вы используете хеш растяжения ключа в веб-приложении, имейте в виду, что вы потребуются дополнительные вычислительные ресурсы для обработки больших объемов запросы на аутентификацию, и что растяжение ключа может облегчить запуск DoS-атака на ваш сайт.Я все еще рекомендую использовать ключ растяжение, но с меньшим количеством итераций. Вы должны рассчитать количество итераций на основе ваших вычислительных ресурсов и ожидаемого максимальная частота запросов на аутентификацию. Угроза отказа в обслуживании может быть устраняется, заставляя пользователя решать CAPTCHA каждый раз, когда он входит в систему. Всегда проектируйте свою систему так, чтобы счетчик итераций мог быть увеличен или уменьшился в будущем.

    Если вы беспокоитесь о вычислительной нагрузке, но все еще хотите использовать ключ растяжение в веб-приложении, рассмотрите возможность запуска ключа растяжения алгоритм в браузере пользователя с JavaScript.Stanford JavaScript Crypto Библиотека включает в себя PBKDF2. Количество итераций должно быть достаточно низким что систему можно использовать с более медленными клиентами, такими как мобильные устройства, и система должна вернуться к вычислениям на стороне сервера, если браузер пользователя не поддерживает JavaScript. Растяжение ключа на стороне клиента не удаляет необходимость хеширования на стороне сервера. Вы должны хешировать хеш, сгенерированный клиентом так же, как вы бы хэшировали нормальный пароль.

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

    Пока злоумышленник может использовать хеш, чтобы проверить, является ли пароль предположительным Правильно или неправильно, они могут запустить словарь или атаку грубой силой на хеш.Следующим шагом является добавление секретного ключа к хешу, чтобы только кто-то кто знает ключ может использовать хеш для проверки пароля. Это может быть сделано двумя способами. Либо хеш может быть зашифрован с использованием шифра, как AES или секретный ключ может быть включен в хеш с использованием хеша с ключом Алгоритм как HMAC.

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

    Я настоятельно рекомендую этот подход для любого крупного масштаба (более 100 000 пользователи) сервис. Я считаю необходимым для любого сервиса хостинг более 1 000 000 учетных записей пользователей.

    Если вы не можете позволить себе несколько выделенных серверов или специальных аппаратных устройств, вы все еще можете получить некоторые преимущества ключевых хэшей в стандартной сети сервер.Большинство баз данных взломано с использованием SQL-инъекций, которые в большинстве случаев не дают злоумышленникам доступ к локальной файловой системе (отключите доступ к локальной файловой системе на вашем SQL-сервере, если он имеет эту функцию). Если вы генерируете случайный ключ и сохраняете его в файле, который недоступен из Интернета и включите его в соленые хэши, тогда хэши не будут быть уязвимым, если ваша база данных взломана с помощью простой инъекции SQL атака. Не кодируйте ключ в исходный код, генерируйте его случайным образом когда приложение установлено.Это не так безопасно, как использование отдельного Система для хеширования паролей, потому что если есть SQL-инъекция Уязвимости в веб-приложении, возможно, есть и другие типы, такие как как включение локального файла, что злоумышленник может использовать для чтения секретного ключа файл. Но это лучше, чем ничего.

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

    Прочие меры безопасности

    Хеширование паролей защищает пароли в случае взлома безопасности. Оно делает не сделать приложение в целом более безопасным. Многое еще нужно сделать, чтобы предотвратить хэши паролей (и другие пользовательские данные) от кражи в первом место.

    Даже опытные разработчики должны быть обучены безопасности, чтобы писать защищенные приложения. Отличным ресурсом для изучения уязвимостей веб-приложений является Открытое веб-приложение Проект безопасности (OWASP).Хорошее введение - это Список уязвимостей OWASP. Если вы не понимаете все уязвимости в списке, не пытайтесь написать веб-приложение, которое имеет дело с конфиденциальными данными. Это работодатель ответственность за обеспечение того, чтобы все разработчики были надлежащим образом обучены разработка приложения.

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

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

    Часто задаваемые вопросы

    Какой алгоритм хеширования мне следует использовать?

    DO использовать:
    НЕ использовать:
    • Быстрые криптографические хеш-функции, такие как MD5, SHA1, SHA256, SHA512, RipeMD, WHIRLPOOL, SHA3 и т. Д.
    • Небезопасные версии склепа ($ 1 $, $ 2 $, $ 2x $, $ 3 $).
    • Любой алгоритм, который вы разработали сами. Используйте только те технологии, которые являются общественным достоянием и хорошо проверены опытными криптографами.

    Несмотря на то, что нет криптографических атак на MD5 или SHA1, которые делают их хэши легче взломать, они старые и широко распространены (несколько неверно) быть неадекватным для хранения пароля. Так что я не рекомендую использовать их. Исключением из этого правила является PBKDF2, который часто реализуется с использованием SHA1 в качестве основной хеш-функции.

    Как мне разрешить пользователям сбрасывать свой пароль, когда они его забывают?

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

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

    Срок действия токена должен истечь через 15 минут или после его использования, в зависимости от того, что приходит первым Также хорошей идеей будет истечение срока действия любых существующих токенов пароля, когда пользователь входит в систему (он запомнил свой пароль) или запрашивает другой сброс маркер. Если токен не истекает, его можно использовать для взлома учетная запись пользователя. Электронная почта (SMTP) - это текстовый протокол, который может быть Вредоносные роутеры в интернете записывают почтовый трафик. И электронная почта пользователя учетная запись (включая ссылку для сброса) может быть взломана еще долго после ввода пароля был изменен.Как только срок действия токена истекает, подверженность пользователя этим атакам.

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

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

    Что мне делать, если моя база данных учетных записей пользователя утекла / взломана?

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

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

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

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

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

    Какой должна быть моя политика паролей? Должен ли я применять надежные пароли?

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

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

    Если злоумышленник имеет доступ к моей базе данных, он не может просто заменить хэш моего пароля своим собственным хэшем и логином?

    Да, но если кто-то имеет доступ к вашей базе данных, он, вероятно, уже имеет доступ ко всему на вашем сервере, поэтому им не нужно будет входить в ваш аккаунт, чтобы получить то, что они хотят. Цель хеширования пароля (в контексте сайта) не для защиты сайта от взлома, а для защиты пароли в случае нарушения.

    Вы можете предотвратить замену хешей во время атаки SQL-инъекцией подключение к базе данных с двумя пользователями с разными разрешениями. Один для код «создать учетную запись» и один код «логин». «Создать учетную запись» код должен быть в состоянии читать и записывать в пользовательскую таблицу, но код входа в систему должен только уметь читать.

    Почему я должен использовать специальный алгоритм, такой как HMAC? Почему я не могу просто добавить пароль к секретному ключу?

    Хеш-функции, такие как MD5, SHA1 и SHA2, используют Строительство Меркле-Дамгарда, что делает их уязвимыми для того, что известно как удлинение атаки.Это означает, что, учитывая хэш H (X), злоумышленник может найти значение H (pad (X) + Y) для любой другой строки Y, не зная X. pad (X) - это функция заполнения, используемая хешем.

    Это означает, что с учетом хэша H (клавиша + сообщение) злоумышленник может вычислить H (клавиша (клавиша +). сообщение) + расширение), не зная ключа. Если хеш использовался как код аутентификации сообщения, использующий ключ для предотвращения взлома возможность изменить сообщение и заменить его другим действительным хешем, система потерпела неудачу, так как злоумышленник теперь имеет действительный хэш сообщения + расширение.

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

    Должна ли соль приходить до или после пароля?

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

    Почему код хеширования на этой странице сравнивает хэши в «Длина-константа» время?

    Сравнение хэшей в «постоянной длины» гарантирует, что злоумышленник не может извлечь хеш пароля в онлайн-системе, используя время атаки, затем взломать его в автономном режиме.

    Стандартный способ проверить, совпадают ли две последовательности байтов (строк) сравните первый байт, затем второй, третий и так далее. Как только вы найдете байт, который не совпадает для обеих строк, вы знаете, что они отличается и может немедленно вернуть отрицательный ответ.Если вы сделаете это через обе строки без нахождения байтов, которые отличаются, вы знаете, строки являются То же самое и может вернуть положительный результат. Это означает, что сравнение двух строк может займет различное количество времени в зависимости от того, сколько строк соответствует.

    Например, стандартное сравнение строк «xyzabc» и «abcxyz» сразу увидит, что первый символ отличается и не стал бы проверять остаток строки. С другой стороны, когда Строки "aaaaaaaaaaB" и "aaaaaaaaaaZ" сравниваются, Алгоритм сравнения просматривает блок «а», прежде чем он определит Строки неравны.

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

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

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

    Как работает код SlowEquals?

    Предыдущий вопрос объясняет, почему SlowEquals необходим, этот объясняет как код на самом деле работает.

    1. частное статическое логическое значение slowEquals (byte [] a, byte [] b)
    2.Оператор для сравнения целых чисел вместо оператор "==". Причина, почему объясняется ниже. Результат XORing два целых числа будут равны нулю тогда и только тогда, когда они абсолютно одинаковы. Это потому что 0 XOR 0 = 0, 1 XOR 1 = 0, 0 XOR 1 = 1, 1 XOR 0 = 1. Если мы применим это к все биты в обоих целых числах, результат будет нулевым, только если все биты соответствует.

    Итак, в первой строке, если a.length равно b.length , переменная diff получит нулевое значение, но если нет, то получит некоторое ненулевое значение.Далее мы сравниваем байты, используя XOR, и ИЛИ результат в diff. Это установит diff к ненулевому значению, если байты отличаются. Поскольку ORing никогда не сбрасывает биты, в конце различий будет только ноль. цикл равен нулю до начала цикла (a.length == b.length) и все байтов в двух массивах совпадают (ни один из XOR не привел к ненулевому стоимость).

    Причина, по которой нам нужно использовать XOR вместо оператора "==" для сравнения целых чисел является то, что "==" обычно переводится / компилируется / интерпретируется как ветвь.b "должен компилироваться во что-то вроде следующее, время выполнения которого не зависит от равенства целые числа:

    MOV EAX, [A]
    XOR EAX, [B]
    ИЛИ [DIFF], EAX

    Зачем беспокоиться о хешировании?

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

    ,

    Смотрите также

Поиск