Криптографические алгоритмы постоянно находятся под атакой с двух фронтов. Во-первых, скорости процессоров постоянно растут, поэтому алгоритмы, ранее считавшиеся надежными, перестают быть таковыми, так как взламываются за более короткое время.
Во-вторых, непрекращающиеся исследования в области криптографии обнаруживают новые слабости алгоритмов. Хороший пример — недостатки, обнаруженные в некоторых популярных хеш-функциях — MD4, MD5. Теперь они считаются совершенно ненадежными из-за легкости вычисления новых входных данных по известному хешу, а в SHA-1 обнаружены признаки серьезной слабости.
По существу, Microsoft запретила использование MD4, MD5 и SHA-1 в новом коде, исключение сделано только для обратной совместимости, или если алгоритм предписан отраслевым стандартом, или в приложениях, где нужна минимальная платформа Windows, т.е любая ОС, предшественница Windows Vista. В Национальном институте стандартов и технологий США (NIST) есть превосходное руководство по использованию SHA-1: «Федеральные агенства должны прекратить использование SHA-1 для целей цифрового подписания и постановки цифровых временных меток, а также для других целей, в которых требуется разумная устойчивость к совпадению хешей (collision resistance), и к 2010 г. должны перейти к применению для этих целей семейства хеш-функций SHA-2. После 2010 г. Федеральные агенства будут вправе использовать SHA-1 только для следующих целей: генерации кодов для аутентификации сообщений на основе хеша (Hash-based Message Authentication Codes, (HMAC), функций установления ключей (Key Derivation Function, KDF) и генерации случайных чисел. Независимо от целей применения NIST настоятельно рекомендует разработчикам приложений и архитекторам протоколов использовать семейства хеш-функций SHA-2 во всех новых приложениях и протоколах».
Иногда политики диктуют использование новых алгоритмов; замечательный пример — федеральные требования «Suite B». Если ваше приложение не умеет работать с Suite B, а приложения ваших конкурентов его поддерживают, то такой недостаток криптографической гибкости обязательно отрицательно скажется на продажах. Самая большая ошибка, совершаемая разработчиками, — жесткое прописывание в коде имени алгоритма; если же алгоритм слаб и подлежит замене, то придется перестроить код для поддержки нового алгоритма, обновить структуры данных и, наконец, предоставить обновленный продукт клиентам. В некоторых случаях это приводит к несовместимости с более ранними форматами файлов.