Можно ли восстановить криптографический ключ хеша - PullRequest
4 голосов
/ 19 февраля 2010

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

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

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

Ответы [ 5 ]

6 голосов
/ 19 февраля 2010

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

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

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

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

4 голосов
/ 19 февраля 2010

Короче говоря, да .

1 голос
/ 19 февраля 2010

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

Например, если я пытаюсь запретить доступ на основе моего идентификатора пользователя. Я бы хэшировал мой идентификатор пользователя и соль. Скажем, например, MD5. Мой идентификатор пользователя "12345", а соль "abcde"

Так что я буду хешировать строку «12345_abcde», которая возвращает хеш «7b322f78afeeb81ad92873b776558368»

Теперь я передам проверяющему приложению хэш и открытый ключ, «12345», который является открытым ключом и имеет.

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

0 голосов
/ 21 февраля 2013

Современные атаки методом грубой силы с использованием нескольких графических процессоров могут взломать это в короткие сроки.Я рекомендую вам следовать рекомендациям по хранению пароля для этого приложения.Вот текущие рекомендации по хранению паролей от OWASP .В настоящее время они рекомендуют длинное солт-значение и PBKDF2 с 64 000 итераций, что итеративно растягивает ключ и усложняет вычислительную обработку грубой силы входных значений.Обратите внимание, что это также усложнит для вас вычислительные значения для генерации значений ключей, но идея заключается в том, что вы будете генерировать ключи гораздо реже, чем злоумышленник.Тем не менее, ваш дизайн требует гораздо больше ключевых выводов, чем обычное приложение для хранения паролей / паролей, поэтому ваш дизайн может быть фатальным.Также имейте в виду, что число итераций должно удваиваться каждые 18 месяцев, чтобы вычислительная сложность соответствовала закону Мура.Это означает, что вашей системе потребуется какой-то способ, позволяющий вам перефразировать эти значения (возможно, путем объединения методов хеширования).Со временем вы обнаружите, что старые функции HMAC нарушены криптоаналитиками, и вы должны быть готовы обновить свои алгоритмы.Например, одной итерации MD5 или SHA-1 было достаточно, но ее больше нет.Существуют и другие функции HMAC, которые также могут удовлетворить ваши потребности, для которых не требуется PBKDF2 (например, bcrypt или scrypt), но PBKDF2 в настоящее время является отраслевым стандартом, который получил наибольшее внимание.Можно утверждать, что bcrypt или scrypt также подойдут, но это еще одна причина, по которой следует использовать подключаемую схему, чтобы позволить вам со временем обновлять функции HMAC.

0 голосов
/ 19 февраля 2010

Да, это возможно, но не в этой жизни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...