Вопрос

  1. Используйте AES/Rijndael или любое симметричное шифрование.

  2. Шифровать скрытое значение, используя себя в качестве ключа и случайного IV.

  3. Храните зашифрованный текст + iv. Отбросьте все остальное.

  4. Чтобы проверить хэш: попробуйте расшифровать, используя предоставленный открытый текст. Если предоставлено == расшифровано, то все в порядке.

  5. Игнорировать проблемы длины шифрового текста.

Это безопасно?

Это было полезно?

Решение

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

Во -вторых ... неясно, что вы сможете проверить хэш. Было бы необходимо хранить случайно сгенерированного 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top