JWE nimbus — аутентичность JOSE и аналог JavaScript

#jwt #public-key-encryption #jwe #authenticity #nimbus-jose-jwt

#jwt #шифрование с открытым ключом #jwe #аутентичность #nimbus-jose-jwt

Вопрос:

Я случайно наткнулся на эту замечательную библиотеку для java nimbus-JOSE для использования веб-шифрования JSON. Эта библиотека проста и требует нескольких строк для шифрования и дешифрования JWE, как показано ниже. Показано шифрование JWE.

 EncryptedJWT jwt = new EncryptedJWT(header, builder.build());
  RSAEncrypter encrypter = new RSAEncrypter((RSAPublicKey) keyProvider.getDefaultPublicKey());
  try {
    jwt.encrypt(encrypter);
  } catch (JOSEException e) {
    throw new RuntimeException("Failed to generate encrypted token", e);
  return jwt.serialize();
  

Однако у меня возникли некоторые вопросы относительно этой библиотеки даже после прочтения ее javadocs и документации. Что касается JWE и конкретно этой библиотеки,

  1. Как после расшифровки JWE проверить подлинность JWE? В JWE нет «подписей», так как же 5 частей JWE помогают проверять достоверность? Есть ли какая-либо поддержка для этого в библиотеке?
  2. Кроме заголовка и утверждений, другие поля в JWT генерируются библиотекой случайным образом? (Я не смог найти четких доказательств этого.)
  3. Если я использую alg: «RSA-OAEP», enc: «A128GCM», я должен получать разные JWE при каждом шифровании, однако я получаю один и тот же JWE. Разве RSA-OEAP-256 не должен предотвращать это? Какова подробная последовательность процесса шифрования и дешифрования?
  4. Я пытался найти похожую библиотеку на Javascript, но не смог найти такую, как nimbus-jose, которая была для java. Если у кого-то есть рекомендации, пожалуйста, помогите ниже! Я хотел бы поблагодарить всех, кто может помочь с моими запросами. Все входные данные приветствуются. 🙂