투케이2K

110. (Library/Framework) [라이브러리] [Android] JWE (JSON Web Encryption) 웹 암복호화 라이브러리 - nimbus-jose-jwt 본문

Library & F.W

110. (Library/Framework) [라이브러리] [Android] JWE (JSON Web Encryption) 웹 암복호화 라이브러리 - nimbus-jose-jwt

투케이2K 2025. 4. 1. 20:33

[타이틀]

구 분 : Library / 라이브러리

제 목 : [라이브러리] [Android] JWE (JSON Web Encryption) 웹 암복호화 라이브러리 - nimbus-jose-jwt

 

[설 명]

-----------------------------------------------------------------------------------------
[라이브러리 정보 및 환경]
-----------------------------------------------------------------------------------------

구 분 : Library / Framework

제 목 : [라이브러리] [Android] JWE (JSON Web Encryption) 웹 암복호화 라이브러리 - nimbus-jose-jwt

환 경 : Http / JWE / JSON Web Encryption

-----------------------------------------------------------------------------------------






-----------------------------------------------------------------------------------------
[설 명]
-----------------------------------------------------------------------------------------

1. nimbus-jose-jwt 라이브러리는 JWE (JSON Web Encryption) JSON 웹 암호화 및 복호화를 수행하는데 사용되는 라이브러리입니다


2. JWE 은 JSON 웹 토큰 (JWT) 과 함께 사용 되어 페이로드 데이터를 보호하며, ID 토큰 (ID token) 이나  액세스 토큰 을 JWE를 사용해 암호화 하여 전송하는데 사용됩니다


3. nimbus-jose-jwt 라이브러리 build.gradle 의존성 설정 참고 코드 : 

  * // ---------------------------------------------------------------
  * TODO [설정 사항] :
  *
  * - build.gradle 의존성 부여
  *
  *    // TODO [JWE 암복호화 관련]
  *    implementation 'com.nimbusds:nimbus-jose-jwt:10.0.2'
  *
  * // ---------------------------------------------------------------


4. JWE 직렬화 형식 종류 추가 설명 :

  >> Compact 직렬화 : JWE가 점(.)으로 구분된 다섯 개의 Base64URL로 인코딩된 부분으로 문자열 형태로 표현됩니다

     - 예시 : {{header}}.{{encrypted-key}}.{{iv}}.{{ciphertext}}.{{tag}}

     - header : 암호화 알고리즘과 키 관리에 대한 메타데이터를 포함합니다

     - encrypted-key : 페이로드를 암호화하는 데 사용된 암호화된 콘텐츠 암호화 키 (CEK)입니다

     - iv : 암호화 과정에서 사용된 초기화 벡터입니다

     - ciphertext : 암호화된 페이로드 데이터입니다

     - tag : 암호화된 데이터의 무결성을 검증하는 인증 태그입니다


  >> JSON 직렬화 : JSON 형식으로 JWE 구조적 방법을 표시합니다

     - 예시 :

        {
          "protected": "{{protected-header}}",
          "unprotected": "{{unprotected-header}}",
          "header": "{{header}}",
          "encrypted_key": "{{encrypted-key}}",
          "iv": "{{iv}}",
          "ciphertext": "{{ciphertext}}",
          "tag": "{{tag}}",
          "aad": "{{additional-authenticated-data}}"
        }

     - protected : Base64URL로 인코딩된 보호 헤더를 포함합니다

     - unprotected : JWE의 공유 보호되지 않은 헤더를 포함합니다

     - header : JWE의 각 수신자별 보호되지 않은 헤더를 포함합니다

     - encrypted_key : Base64URL로 인코딩된 암호화된 콘텐츠 암호화 키 (CEK)를 포함합니다

     - iv : Base64URL로 인코딩된 초기화 벡터를 포함합니다

     - ciphertext : Base64URL로 인코딩된 암호문 (암호화된 페이로드)을 포함합니다

     - tag : Base64URL로 인코딩된 인증 태그를 포함합니다

     - aad : Base64URL로 인코딩된 추가 인증된 데이터를 포함합니다

-----------------------------------------------------------------------------------------






-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------

[메이븐 nimbus-jose-jwt 버전 확인 사이트]

https://mvnrepository.com/artifact/com.nimbusds/nimbus-jose-jwt


[암복호화 Key 사이즈 관련]

https://www.javadoc.io/doc/com.nimbusds/nimbus-jose-jwt/9.22/com/nimbusds/jose/EncryptionMethod.html

https://connect2id.com/products/nimbus-jose-jwt/examples/jwe-with-shared-key


[JWEHeader 클래스 속성 확인 사이트]

https://www.javadoc.io/doc/com.nimbusds/nimbus-jose-jwt/2.17/com/nimbusds/jose/JWEHeader.html

-----------------------------------------------------------------------------------------
 
 
반응형
Comments