Использование JWS для цифровой подписи с шифрованием контента
Я создаю систему, которая действует как посредник между двумя сущностями. Отправитель инициирует запрос, моя система создает полезную нагрузку, а затем пересылает ее получателю, у которого есть идентификационные данные отправителя (плюс дополнительные вещи).
Мне нужно убедиться в двух вещах.
- Полезная нагрузка проверяется из моей системы (цифровая подпись)
- Только конкретный получатель может принять и прочитать его (шифрование).
Для этого я думаю о шифровании контента с использованием открытого ключа получателя. Поскольку у меня нет их закрытого ключа, я не могу просто подписать его. Затем я могу использовать свой закрытый ключ, чтобы подписать его, чтобы получатель мог проверить полезную нагрузку. В основном JWS с зашифрованным содержимым.
Это означает, что получатель может проверить цифровую подпись, а затем быть единственным человеком, который расшифровывает и использует контент.
Следует ли использовать JWS таким образом? Я знаю, что JWE существует, но я не могу подписать его цифровой подписью. Есть ли другой стандарт, который я должен использовать?
В будущем я также хотел бы, чтобы отправитель имел подпись в полезной нагрузке, чтобы получатель мог в конечном итоге проверить мою систему и отправителя.
Я также исследовал DID, в которых я мог бы действовать как контролер. Тем не менее, я все еще понимаю это, поэтому не слишком ясно, решит ли это мою проблему.