Прежде всего, позвольте мне объяснить вам, что я себе представляю:
Давайте представим, что Боб хочет получить Авторизат от Алисы (Classi c Пример), в моем примере Алиса - сервер.
Давайте представим себе, что Боб и Алиса уже получили каждый ключ RSA (4096).
Итак, Бобс предпримет следующие шаги:
- Подписать кредиты (открытый текст) с помощью SHA512 и его закрытый ключ
- Шифрование подписанных данных и кредитов с помощью AES CB C 256
- Шифрование ключа AES с помощью RSA
- Отправка данных Алисе
Таким образом, Алиса выполнила шаги с противоположной стороны, чтобы расшифровать ее и проверить ее у Боба.
После того, как Алиса проверила, что это Боб, она сгенерирует токен JWT и подпишет его своим закрытым ключом и вернет его в авторизации заголовка ответа.
JWT получил TTL от 3600.
Пока все хорошо, но мой вопрос: как нам защитить JWT от кражи?
Конечно, он подписан, поэтому его нельзя изменить (за исключением того, что Attacker получил Pr ivate Key с сервера, но, боже мой, его все равно кончилось).
Давайте представим, что он сможет взломать HTTPS и украсть токен, вставить его в свой заголовок и, таким образом, сможет обмануть Алису, чтобы он поверил ему, пока его Срок действия истекает, и он должен отправить кредиты снова.
Я думал о двух вариантах:
Вариант 1: Всегда отправлять кредиты и расшифровывать, чтобы проверить Боба.
Но это будет каждый раз при запросе будет стоить огромной производительности, и преимущества JWT будут потеряны.
Вариант 2: Отправка уникального идентификатора и подтверждение его с устройства Bobs (зашифровано, такая же проблема, как у варианта 1)
Что мы могли бы сделать, чтобы защитить это?
Может быть, я слишком много думаю, как всегда, но мне бы очень хотелось узнать, что в этом случае будет "Лучшей практикой".
Спасибо ты уже для тебя Ответы