Ненадежный или небезопасный криптографический алгоритм

Категория OWASP: MASVS-CRYPTO: криптография

Обзор

Несмотря на широкое использование криптографии для защиты конфиденциальности и целостности данных, возникает значительный риск, когда разработчики непреднамеренно внедряют слабые или устаревшие криптографические алгоритмы. Эта уязвимость связана с недостатками алгоритмов, которые могут использовать злоумышленники, обладающие необходимыми вычислительными мощностями или знаниями. Последствия могут быть серьезными, включая несанкционированный доступ, утечку данных и манипулирование конфиденциальной информацией.

Влияние

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

Риск: слабые или неработающие криптографические хеш-функции

Использование слабых или неработающих криптографических хеш-функций (например, MD5 или SHA1) представляет значительный риск для безопасности и целостности данных. Хеш-функции предназначены для создания уникальных отпечатков (хешей) фиксированной длины для входных данных, что делает их полезными для различных целей, включая проверку целостности данных, хранение паролей и цифровые подписи. Однако при использовании слабых или скомпрометированных хеш-функций могут возникнуть уязвимости:

  • Коллизионные атаки. Слабые хеш-функции уязвимы для коллизионных атак, когда злоумышленник находит два разных входных значения, которые дают одно и то же значение хеша. Это может позволить им заменить законные данные вредоносными без обнаружения, нарушая целостность данных.
  • Утечки данных. Если пароли хешируются с помощью слабого алгоритма, успешный взлом системы может привести к раскрытию учетных данных пользователей. Затем злоумышленники могут использовать радужные таблицы или другие методы для взлома паролей, получая несанкционированный доступ к аккаунтам.
  • Отказ от цифровых подписей. Слабые хеш-функции, используемые в цифровых подписях, могут быть использованы для создания поддельных подписей, что затрудняет определение подлинности и целостности документов или сообщений.

Предотвращение атак

Чтобы снизить эти риски, важно использовать надежные, хорошо проверенные криптографические хеш-функции, такие как SHA-2 или SHA-3, и обновлять их по мере обнаружения новых уязвимостей. Кроме того, для повышения уровня защиты данных можно использовать такие методы, как соленое хеширование паролей и специальные алгоритмы хеширования, например bcrypt или Argon2.


Риск: слабые или неработающие функции криптографического шифрования

Использование слабых или неработающих криптографических функций шифрования (таких как DES или RC4) создает серьезные риски для конфиденциальности данных. Шифрование предназначено для защиты информации путем ее преобразования в нечитаемый формат, но если алгоритм шифрования имеет недостатки, эти средства защиты можно обойти:

  • Утечка данных. Слабые алгоритмы шифрования уязвимы для различных атак, включая атаки методом подбора, атаки на основе открытых текстов и методы криптоанализа. В случае успеха эти атаки могут раскрыть зашифрованные данные, позволяя несанкционированный доступ к конфиденциальной информации, такой как личные данные, финансовая отчетность или конфиденциальные коммерческие данные.
  • Манипуляции с данными и их фальсификация. Даже если злоумышленник не может полностью расшифровать данные, он может незаметно манипулировать ими, если алгоритм шифрования слабый. Это может привести к несанкционированному изменению данных, что, в свою очередь, может привести к мошенничеству, искажению информации или другим вредоносным действиям.

Предотвращение атак

Используйте надежные криптографические алгоритмы в функциях шифрования

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

Рекомендуемые алгоритмы по умолчанию:

  • Симметричное шифрование:
    • AES-128/AES-256 с режимом GCM
    • Chacha20
  • Асимметричное шифрование:
    • RSA-2048/RSA-4096 с заполнением OAEP

Используйте безопасные примитивы из криптографической библиотеки, чтобы избежать распространенных ошибок.

Выбор подходящего алгоритма шифрования очень важен, но чтобы по-настоящему минимизировать уязвимости, рекомендуем использовать криптографическую библиотеку с оптимизированным API и безопасными настройками по умолчанию. Такой подход не только повышает безопасность приложений, но и значительно снижает вероятность появления уязвимостей из-за ошибок в коде. Например, Tink упрощает выбор шифрования, предлагая два разных варианта: AEAD и Hybrid. Это помогает разработчикам принимать обоснованные решения в области безопасности.


Риск: слабые или неработающие функции криптографической подписи

Использование слабых или неработающих функций криптографической подписи (например, RSA-PKCS#1 v1.5 или функций на основе слабых хеш-функций) создает серьезные риски для целостности данных и связи. Цифровые подписи предназначены для обеспечения аутентификации, невозможности отказа от авторства и целостности данных, гарантируя, что сообщение или документ исходит от конкретного отправителя и не было подделано. Однако если в алгоритме подписи есть уязвимости, эти гарантии могут быть нарушены:

  • Подделка подписей. Слабые алгоритмы подписи могут быть уязвимы для атак, позволяющих злоумышленникам создавать поддельные подписи. Это означает, что они могут выдавать себя за законные организации, фабриковать документы или подделывать сообщения, не будучи обнаруженными.
  • Отказ от подписи. Если алгоритм подписи взломан, подписант может ложно заявить, что он не подписывал документ, что подрывает принцип неотказуемости и создает юридические и логистические проблемы.
  • Манипуляции с данными и их фальсификация. Если подписи используются для защиты целостности данных, слабый алгоритм может позволить злоумышленникам изменить данные, не аннулируя подпись. Это приведет к незамеченной фальсификации и потенциальной компрометации критически важной информации.

Предотвращение атак

Используйте надежные алгоритмы криптографической подписи

Чтобы снизить эти риски, важно использовать надежные, хорошо проверенные алгоритмы криптографической подписи:

  • RSA-2048/RSA-4096 с заполнением PSS
  • Алгоритм цифровой подписи на эллиптических кривых (ECDSA) с безопасными кривыми.

Используйте безопасные примитивы из криптографической библиотеки, чтобы избежать распространенных ошибок.

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


Ресурсы