Использование AES для проверки целостности файлов вместо MD5

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

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

  1. Зашифруйте первый блок файла с помощью фиктивного ключа (например, все нули).
  2. Зашифруйте следующий блок, используя предыдущий зашифрованный блок в качестве ключа.
  3. Продолжайте так, пока все данные в файле не будут обработано
  4. Использовать последний зашифрованный блок в качестве хэша

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

Теперь большой вопрос: насколько хорошо этот метод будет работать с точки зрения коллизий? Или, иначе говоря: насколько хорошо будет окончательный "хэш" распространяться?

6
задан Makai 8 January 2011 в 13:05
поделиться