Notice
Recent Posts
Recent Comments
Link
투케이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
-----------------------------------------------------------------------------------------
반응형
'Library & F.W' 카테고리의 다른 글
Comments