Nano Hash - криптовалюты, майнинг, программирование

Как следует защищаться от атак методом перебора пароля в автономном режиме?

Мне было интересно, было ли обычной практикой солить и хешировать пароль, например

E (заполнение || хэш (соль || пароль))

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

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

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

14.04.2009

  • Зачем вам нужен транспорт базы паролей? 14.04.2009

Ответы:


1

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

Т.е. используйте что-то вроде PGP для транспорта.

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

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

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

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

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

14.04.2009
  • Это бесполезно на хосте, где им нужен ключ дешифрования, чтобы в любом случае прочитать файл паролей. 14.04.2009
  • это просто означает, что вам нужно украсть больше :) 14.04.2009
  • Насколько я понял, речь идет о транспортировке базы данных из точки А в точку Б (может быть, на DVD, может быть, через интернет) и о том, как ее лучше всего защитить. Таким образом, шифрование транспортного уровня (то есть шифрование DVD) кажется мне единственным жизнеспособным способом. Это также защитит слабые пароли в базе данных. 14.04.2009

  • 2
    1. Используйте пароли, которых нет в словаре.
    2. Используйте усиление ключей.

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

    14.04.2009
  • #1-#2 предполагают, что у вас есть контроль над самой базой данных паролей, как и большинство предложений, сделанных людьми. Отсюда мое альтернативное предложение. 14.04.2009

  • 3

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

    14.04.2009

    4

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

    Это действительно имеет значение, можете ли вы угадывать миллионы хэшей в секунду или всего несколько десятков.

    У CodingHorror есть отличная статья на эту тему: http://www.codinghorror.com/blog/2012/04/speed-hashing.html

    28.01.2013

    5

    Все остальные ответы хороши, но я бы добавил:

    Принудительная смена пароля на регулярной основе.

    Это верный способ предотвратить офлайн-атаки методом грубой силы. Труднее попасть в движущуюся цель.

    14.04.2009
  • Мой опыт показывает, что пользователи, которые вынуждены сменить пароль, просто используют тот же базовый пароль и добавляют одну букву/цифру. Если вы заставляете пользователей использовать зашифрованные пароли, они просто записывают их... В общем, пароли отстой :) 14.04.2009
  • Даже если они незначительно изменят пароль, это все равно поможет. Соление защищает от радужных атак с помощью одной цифры. Да, пароли отстой, но если вы не хотите использовать некоторые аппаратные методы, у вас не так много альтернатив. 14.04.2009
  • Парольные фразы из нескольких простых слов гораздо легче запомнить и более безопасны, чем относительно короткие (10 символов) строки случайного шума. xkcd.com/936 ИМХО, средства проверки надежности паролей должны отказаться от каких-либо требований к определенные символы в пароле и просто требуют, чтобы они были не менее 30 символов в длину. Но да, вы все еще регулярно меняете их в целях безопасности. Перебор любого хеширования — это всегда вопрос времени, а компьютеры продолжают становиться быстрее. 09.02.2012

  • 6

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

    это наверняка немного замедлит брутфорс

    14.04.2009
  • Нет, потому что взломщик закодирует свою программу так, чтобы не было этой задержки. 14.04.2009
  • # 2 в вашем ответе выше - это именно то, что я только что сказал :-D 14.04.2009
  • Возможно, но программы грубой силы полагаются на возможность попробовать что-то сотни раз в секунду. 14.04.2009
  • Фреду: Верно, но то, как вы это сформулировали, подразумевает использование сна или задержки. 14.04.2009
  • @Fredou: усиление клавиш НЕ означает установку таймера задержки. См. en.wikipedia.org/wiki/Key_strengthening. Речь идет об атаке в автономном режиме, когда злоумышленник, вероятно, использует свой собственный инструмент для взлома паролей. 14.04.2009
  • @Divo & @Brian, вы правы, говоря, что таймер был плохой идеей, я должен был точно указать, о чем я думал 14.04.2009
  • Я подчеркнул слова Offline, чтобы прояснить, что у пользователя, возможно, есть только время, скорость процессора и приемы алгоритмического компромисса с оперативной памятью, замедляющие его. 14.04.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..