Насколько сильна эта техника хэшина?
-
10-10-2019 - |
Вопрос
Используйте AES/Rijndael или любое симметричное шифрование.
Шифровать скрытое значение, используя себя в качестве ключа и случайного IV.
Храните зашифрованный текст + iv. Отбросьте все остальное.
Чтобы проверить хэш: попробуйте расшифровать, используя предоставленный открытый текст. Если предоставлено == расшифровано, то все в порядке.
Игнорировать проблемы длины шифрового текста.
Это безопасно?
Решение
Как описано, у него есть проблема в том смысле, что он раскрывает информацию о длине хэшированных данных. Это само по себе было бы какой -то слабостью.
Во -вторых ... неясно, что вы сможете проверить хэш. Было бы необходимо хранить случайно сгенерированного IV с хэшем.
Я думал об этом во время велосипеда дома, и еще одна возможная проблема. С типичной схемой хеширования для хранения пароля лучше всего запустить кучу итераций (например, PBKDF2). Это делает его гораздо дороже, чтобы провести грубую атаку силы. Одной из возможностей ввести эту идею в вашу схему может быть многократно перевернуть зашифрованные данные (например, вернуть зашифрованный блок обратно в себя).
Другие советы
Существует существующий метод генерации хэша или Mac с использованием блока -шифра, подобного AES. Это называется CBC-MAC. Анкет Это операция довольно проста. Просто зашифруйте данные, которые должны быть хэшированы с использованием AES в режиме CBC, и вывод последнего блока зашифрованного текста, отбрасывая все предыдущие блоки шифрового текста. IV для CBC обычно оставляется как ноль, а ключ AES может использоваться для производства Mac.
CBC-MAC имеет некоторые ограничения. Не шифруйте и Mac ваши данные, используя ту же ключ и IV, или Mac будет просто равен последнему блоку зашифрованного текста. Кроме того, размер хэша/Mac ограничен размером блочного шифра. Использование AES с CBC-MAC создает 128-битный Mac, а Mac обычно ожидается, по крайней мере, такого размера.
Что-то стоит отметить, что CBC-MAC-очень неэффективный способ производства Mac. Лучшим способом было бы использовать SHA2-256 или SHA2-512 в HMAC. В моих недавних тестах использование SHA256 в HMAC дает результат примерно так же быстро, как AES в CBC-MAC, а HMAC в этом случае в два раза шире. Тем не менее, новые процессоры будут производиться с аппаратным ускорением для AES, что позволит AES в режиме CBC-MAC, чтобы очень быстро производить 128-битный Mac.