Является ли шифрование целостности полезной нагрузки важным для API? - PullRequest
0 голосов
/ 14 ноября 2018

Нужно ли нам шифровать и подписывать полезную нагрузку, чтобы предотвратить подделку и обеспечить целостность?

Предполагается, что в заголовке есть носитель JWT, а API защищен с помощью HTTPS .

. Приведен пример полезной нагрузки, которая будет отправлена ​​в API, который изменяет данные.профиля пользователя.

{"name":"bob","age":10,"gender":"m"}

Нужно ли нам делать md5 (полезные данные + закрытый ключ) для подписанных полезных данных?Пример:

md5(namebobage10genderm_private_key)
md5 code = fdd5a4a41fc0ab84d4792fa8b08d8e17

Новая полезная нагрузка будет

{"name":"bob","age":10,"gender":"m","signed":"fdd5a4a41fc0ab84d4792fa8b08d8e17"}

Когда сервер получает вызов API, он также выполняет шифрование полезной нагрузки md5 и сравнивает подписанное значение по порядку.для обеспечения целостности.

Пожалуйста, дайте мне знать ваши мысли по этому поводу, и действительно ли нам это нужно?Поскольку у нас уже есть HTTPS для API и JWT для аутентификации пользователя, вызывающего API.

EDIT

Это довольно субъективно, вызов API все еще уязвим для человекав средней атаке, где вызов API может быть перехвачен через прокси, прежде чем он достигнет HTTPS.Пока злоумышленник не знает алгоритм, любые данные, изменяемые во время перехвата, будут отклонены на сервере, поскольку подписанная полезная нагрузка была отправлена ​​вместе с полезной нагрузкой для проверки на стороне сервера.

Просьба сообщить мне,Спасибо

1 Ответ

0 голосов
/ 20 ноября 2018

Является ли шифрование целостности полезной нагрузки важным для API?

Целостность и конфиденциальность - это два отдельных свойства.

Шифрование обеспечивает конфиденциальность.Некоторые режимы шифрования также обеспечивают аутентификацию.Мы называем это аутентифицированным шифрованием , IND-CCA3 и / или AEAD , в зависимости от некоторых деталей.

Вы хотите аутентифицироватьсяшифрование .

Нужно ли нам делать md5 (полезные данные + закрытый ключ) для подписанных полезных данных?Пример:

Не используйте MD5 ни для чего.Уже много лет он не работает.

Когда сервер получает вызов API, он также выполняет шифрование md5 полезной нагрузки и сравнивает подписанное значение для обеспечения целостности.

MD5 не является шифрованием функцией .Это хеш-функция.


Самый простой ответ в этой ситуации, который не оставит ваше приложение совершенно незащищенным, это: Используйте PASETO вместо JWT , и тогда вам не нужнобеспокоиться о том, нужно ли вам шифровать, подписывать или и то, и другое.

v1.local и v2.local обеспечивают аутентифицированное шифрование.Используйте один из двух (v2 лучше, v1 для совместимости).Вам не нужно ничего делать поверх PASETO, чтобы сделать его безопасным, он уже обеспечивает гарантии целостности.

Дополнительная информация: PASETO - это безопасная альтернатива стандартам JOSE (JWT,и т.д.) (Отказ от ответственности: я автор.)

PASETO не устраняет необходимость в HTTPS, но вы уже заявили, что используете HTTPS, поэтомупросто продолжай это делать.

...