Прежде чем говорить об атаках, я предлагаю вам использовать случайный ключ с достаточным количеством битов (не менее 128 бит) вместо паролей. Вам не нужно хешировать ключ много раз, просто используйте хороший ключ. Если он получен из пароля, используйте хорошую функцию получения ключа, чтобы получить ключ и использовать его вместо этого.
Теперь вернемся к вашему вопросу, вы сами сказали, что возможна атака известным открытым текстом. И сделать это катастрофически легко.Все, что вам нужно знать, — это один блок обычного текста, чтобы восстановить весь последующий простой текст, открыв хэш в этом блоке. Это намного более низкий уровень безопасности по сравнению с тем, что ожидается от современных шифров, которые предназначены для защиты от злоумышленников, способных выполнять атаки с выбранным открытым текстом или выбранным зашифрованным текстом. Даже не так сложно определить или, по крайней мере, сузить до возможного количество попыток для одного блока открытого текста на основе форматов файлов, небольшого количества доступной информации о владельце файла и т. д., которые можно использовать для расшифровки всего зашифрованного текста.
На самом деле, задолго до того, как я тоже подумал о подобном шифре, но вместо того, чтобы просто хешировать все итеративно, я подумал о том, чтобы сделать xor левой половины хэш-вывода с блоком открытого текста и хешировать правую половину для следующего блока. Это может быть рандомизировано путем смешивания общедоступного случайного числа с ключом. Другим более известным способом является использование хэша в режиме CTR для генерации потока, как мы делаем с блочными шифрами, поскольку режим CTR не требует, чтобы вы могли расшифровать блок. Как отметил kelalaka, он также обеспечивает произвольный доступ.
Но помните, что нельзя показать, что это безопасно в простой модели, и поэтому вы не можете быть полностью уверены в ее безопасности с помощью хеш-функций, таких как SHA-2, которые не были предназначены для использования таким образом. Это требует дополнительного предположения, что ваша хеш-функция достаточно близка к случайному оракулу, чтобы безопасно использовать ее таким образом. И даже если он безопасен с помощью обычных хеш-функций, он, скорее всего, не будет широко использоваться, потому что он будет намного медленнее, чем AES с аппаратной поддержкой или Chacha20 (который также использует режим CTR, как упоминалось выше).