Обеспечивает ли TLS целостность сообщений и конфиденциальность передачи данных на предприятии RESTful Java

Я хочу применить безопасность веб-сервиса в соответствии с OWASP Web Service Security. Тем самым я наткнулся на два момента:

  1. Целостность сообщения
  2. Конфиденциальность сообщения

До сих пор существует только служба RESTful, к которой клиент может получить прямой доступ. Для каждого запроса клиент должен пройти аутентификацию на сервере. Все общение защищено через TLS. Я сейчас не уверен насчет Message Integrity так как я не понимаю предложение:

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

Требуется также, чтобы данные были подписаны клиентом для обеспечения целостности сообщения? TLS - это только точка-точка, что насчет прокси?

Что касается Message Confidentiality Я понял это следующим образом.

  1. Используйте TLS для обеспечения конфиденциальности сообщений по сети.
  2. Используйте симметричное шифрование для шифрования передаваемых данных.
  3. Зашифрованные данные хранятся в базе данных.

Я правильно понял?

2 ответа

Решение

Из спецификации TLS:

Основная цель протокола TLS - обеспечить конфиденциальность и целостность данных между двумя взаимодействующими приложениями. [...]

  • Связь частная. Симметричная криптография используется для шифрования данных (например, DES [DES], RC4 [SCH] и т. Д.). [...]

  • Связь надежная. Транспортировка сообщений включает проверку целостности сообщений с использованием MAC с ключами. Безопасные хеш-функции (например, SHA, MD5 и т. Д.) Используются для вычислений MAC. Протокол записи может работать без MAC, но обычно используется только в этом режиме, в то время как другой протокол использует протокол записи в качестве транспорта для согласования параметров безопасности.

Так что, да, TLS обеспечит вам целостность и конфиденциальность сообщения во время его транспортировки, при условии, что оно использовалось правильно.

В частности, клиент должен проверить сертификат, чтобы убедиться, что он связывается с нужным сервером (проверка подлинности сертификата, выданного доверенной стороной и выданного имени хоста, с которым он намеревался связаться).

  • Используйте TLS для обеспечения конфиденциальности сообщений по сети.
  • Используйте симметричное шифрование для шифрования передаваемых данных.

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

  • Зашифрованные данные хранятся в базе данных.

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

TLS - это только точка-точка, что насчет прокси?

Прокси-серверы HTTP только передают трафик TLS как есть, не просматривая и не изменяя его. (Некоторые прокси-серверы могут перехватывать трафик, но проверка сертификата не удастся, если вы не забудете проверить сертификат.)

Обеспечивает ли TLS целостность сообщений и конфиденциальность передачи данных

Да.

в RESTful Java предприятия

Ненужные. Ответ все еще да.

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

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

Требуется также, чтобы данные были подписаны клиентом для обеспечения целостности сообщения?

Нет. Безопасный HMAC тоже подойдет, и TLS использует один из них. TLS использует цифровые подписи на этапе аутентификации.

TLS - это только точка-точка, что насчет прокси?

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

Что касается конфиденциальности сообщений, я понял это следующим образом.

Используйте TLS для обеспечения конфиденциальности сообщений по сети.

Правильный.

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

TLS делает это.

Зашифрованные данные хранятся в базе данных.

Нет. Зашифрованные данные расшифровываются одноранговым узлом с провода. Одноранговый узел может повторно зашифровать в базе данных, или база данных может сделать это, но это отдельная проблема.

Другие вопросы по тегам