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

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

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

Я использовал MD5 почти исключительно уже много лет, и я задаюсь вопросом, существует ли что-то больше, что я должен делать. Я должен рассматривать другой алгоритм?

Другой связанный вопрос: Какой длины поле должно обычно быть для такого зашифрованного пароля? Я должен признать, что фактически ничего не знаю о шифровании, но я предполагаю, что MD5 хеширует (как пример), может быть длиннее и по-видимому взял бы больше вычислительной мощности для взламывания. Или длина поля не имеют значение вообще, при условии, что зашифрованный пароль помещается в него во-первых?

56
задан Scott Arciszewski 28 May 2019 в 20:47
поделиться

7 ответов

Warning: С тех пор как эта заметка была написана в 2010 году, графические процессоры широко использовались для перебора хэшей паролей. Графические процессоры средней ценовой категории могут выполнять десять миллиардов MD5 в секунду. Это означает, что даже полностью случайный 8-символьный буквенно-цифровой пароль (62 возможных символов) можно перебрать за 6 часов. SHA-1 лишь немного медленнее, на это потребуется один день. Пароли ваших пользователей намного слабее, и (даже с засолкой) будут падать со скоростью тысячи паролей в секунду. Хэш-функции разработаны, чтобы быть быстрыми. Вы не хотите этого для паролей. Используйте scrypt, bcrypt или PBKDF-2.

MD5 был признан слабым еще в 1996 году, и не должен больше использоваться для криптографических целей. SHA-1 является широко используемой заменой, но имеет аналогичные проблемы. Семейство SHA-2 хэш-функций является текущей заменой SHA-1. Члены SHA-2 по отдельности называются SHA-224, SHA-256, SHA-384 и SHA-512.

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

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

Предупреждение: bcrypt основан на старом алгоритме двустороннего шифрования Blowfish, для которого сегодня существуют лучшие альтернативы. Я не думаю, что свойства криптографического хэширования bcrypt полностью понятны. Кто-нибудь поправьте меня, если я ошибаюсь; я не нашел надежного источника, в котором бы обсуждались свойства bcrypt (кроме его медлительности) с криптографической точки зрения.

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

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

59
ответ дан 26 November 2019 в 17:26
поделиться

добавление пароля всегда является дополнительным уровнем защиты

$salt = 'asfasdfasdf0a8sdflkjasdfapsdufp';
$hashed = md5( $userPassword . $salt );
3
ответ дан 26 November 2019 в 17:26
поделиться

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

По нашим оценкам, на современном оборудовании (2009 г.), если на вычисление производного ключа потрачено 5 секунд, стоимость аппаратной атаки методом грубой силы на scrypt примерно в 4000 раз превышает стоимость аналогичной атаки. против bcrypt (чтобы найти тот же пароль) и в 20000 раз превосходит аналогичную атаку против PBKDF2.

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

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

1
ответ дан 26 November 2019 в 17:26
поделиться

В настоящее время NIST проводит конкурс на выбор нового алгоритма хеширования, точно так же, как они делали это при выборе алгоритма шифрования AES. Так что ответ на этот вопрос, скорее всего, будет другим через пару лет.

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

0
ответ дан 26 November 2019 в 17:26
поделиться

Отличный вопрос! Эта страница прочитана хорошо. В частности, автор утверждает, что MD5 не подходит для хеширования паролей:

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

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

Далее в статье объясняются некоторые альтернативы и рекомендуется Bcrypt как «правильный выбор» (его слова, а не мои).

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

10
ответ дан 26 November 2019 в 17:26
поделиться

Я много этим занимаюсь. Туннель такой: ssh -nvCXAN -L 1494: 10.0.2.39: 1494 www.starshipping.com &

Тогда вам нужен ICA-файл, указывающий на localhost.

[WFClient]
Version=2

[ApplicationServers]
Connection To Citrix Server=

[Connection To Citrix Server]
WinStationDriver=ICA 3.0
TransportDriver=TCP/IP
ClientAudio=Off
DesiredColor=8
Username=yourusername
Domain=yourdomain
Password=xxxxxxxxx ; has to be encrypted. I pulled from another ICA file generated internally
ScreenPercent=97
TWIMode=OFF
Address=localhost

Все это очень хорошо работало на OSX, пока Citrix не выдал новую версию клиента Citrix, которая теперь называется Citrix Online Plugin. С тех пор не мог заставить его работать. Тем временем, наш VPN работает нормально, так что не слишком беспокоился об этом.

-121--2736598-

Из того, что я понимаю, есть две части вашего вопроса:

1 - Остановка кнопки возврата браузера - она не работает & me-думает, что мы никогда не должны останавливать пользователя от нажатия назад. Таким образом, возможно, вы могли бы использовать META тэга для истечения срока действия содержимого, чтобы пользователь увидел страницу с истекшим сроком действия содержимого и должен перезагрузиться, чтобы получить последнее содержимое

2 - Остановить несколько POST - по определению, POST не является возмещением. должно быть возможно выполнение нескольких операций POST. Возможным механизмом является отключение кнопки POST/SUBMIT после завершения первого сообщения. Так, пользователь не сможет сделать это второй раз.

HTH.

-121--4028597-

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

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

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

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


1 Только потому, что MD5 «сломан», не означает, что вы можете просто повернуть его вспять, когда захотите.

3
ответ дан 26 November 2019 в 17:26
поделиться

Чтобы повысить надежность пароля, вы должны использовать более широкий набор символов. Если у вас 8-10 символов в пароле, его будет довольно сложно взломать. Хотя увеличение длины сделает его более безопасным, только если вы используете числовые / буквенные / другие символы.

SHA1 - это еще один алгоритм хеширования (одностороннего шифрования), он медленнее, но имеет более длинный дайджест. (закодированное сообщение) (160 бит), где MD5 имеет только 128 бит.

Тогда SHA2 еще более безопасен, но использует меньше.

6
ответ дан 26 November 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: