> Java > java지도 시간 > JWE 이해: 구조, 운영, 장점, 단점 및 작성 방법

JWE 이해: 구조, 운영, 장점, 단점 및 작성 방법

Mary-Kate Olsen
풀어 주다: 2024-12-31 03:36:17
원래의
363명이 탐색했습니다.

1. JWE(JSON 웹 암호화)란 무엇입니까?

Understanding JWE: Structure, Operations, Advantages, Disadvantages, and How to Create One

JWE(JSON 웹 암호화)는 JSON 기반 데이터 구조를 사용하여 암호화된 콘텐츠를 나타내는 RFC 7516에 의해 정의된 표준입니다. 기밀성을 보장하고 필요한 경우 무결성을 보장하기 위해 임의의 페이로드를 암호화할 수 있습니다. 암호화된 콘텐츠에는 민감한 사용자 정보, 보안 토큰, 파일 등 모든 종류의 데이터가 포함될 수 있습니다.

1.1 왜 JWE를 사용하는가?

Understanding JWE: Structure, Operations, Advantages, Disadvantages, and How to Create One

JWE는 토큰, 사용자 정보, 금융 세부정보 등 민감한 데이터를 안전하게 전송하기 위해 웹 애플리케이션 및 API에 널리 사용됩니다. 이는 가로채는 경우에도 승인되지 않은 개체가 정보를 읽을 수 없도록 보장합니다. 암호화된 페이로드는 올바른 암호 해독 키를 소유한 수신자만 암호를 해독하고 사용할 수 있습니다.

1.2 JWE의 주요 특징

  • 비밀유지 : JWE의 주요 목표는 콘텐츠의 기밀성을 보장하는 것입니다.
  • 무결성 : 전송 중에 데이터가 변조되지 않았음을 보장합니다.
  • 상호운용성 : JWE는 다양한 암호화 알고리즘 및 환경과 호환됩니다.
  • 컴팩트함 : JWE는 HTTP를 통해 쉽게 전송할 수 있는 컴팩트한 표현을 제공합니다.

2. JWE의 구조

Understanding JWE: Structure, Operations, Advantages, Disadvantages, and How to Create One

JWE(JSON 웹 암호화)는 당사자 간 정보를 JSON 객체로 안전하게 전송하기 위한 표준입니다. JWE는 암호화를 사용하여 보호하는 데이터의 기밀성과 무결성을 보장합니다. 일반적인 JWE 구조는 함께 연결되고 마침표(.)로 구분되는 5개 부분으로 구성됩니다. 다섯 부분은 다음과 같습니다.

  • 헤더(JOSE 헤더)
  • 암호화된 키
  • 초기화 벡터
  • 암호문
  • 인증태그

JWE의 각 부분은 암호화 및 암호 해독 프로세스에서 특정 역할을 수행합니다. 각 부분을 자세히 살펴보겠습니다.

2.1 JOSE 헤더(JSON 객체 서명 및 암호화 헤더)

JOSE(JSON Object Signing and Encryption) 헤더는 JWE의 첫 번째 부분이며 암호화 프로세스에 대한 메타데이터를 포함합니다. 이는 다음을 포함하는 base64url로 인코딩된 JSON 개체입니다.

  • alg (알고리즘): 콘텐츠 암호화 키(CEK)를 암호화하는 데 사용되는 알고리즘을 지정합니다. 일반적인 알고리즘에는 RSA-OAEP , RSA1_5 , A128KW , A256KW
  • 이 포함됩니다.
  • enc(암호화 알고리즘): 페이로드(일반 텍스트)를 암호화하는 데 사용되는 암호화 알고리즘을 나타냅니다. 예를 들면 A128GCM , A256GCM , A128CBC-HS256
  • 이 있습니다.
  • typ(유형): 선택적으로 토큰 유형(일반적으로 JWT)을 나타냅니다.
  • cty(콘텐츠 유형): 선택적으로 기본 애플리케이션/json이 아닌 경우 암호화된 페이로드의 콘텐츠 유형을 나타냅니다.

예:

{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 헤더는 콘텐츠 암호화 키가 RSA-OAEP 알고리즘을 사용하여 암호화되고 페이로드가 256비트 키의 AES GCM을 사용하여 암호화됨을 지정합니다.

2.2 암호화된 키

JWE의 두 번째 부분은 실제 데이터(페이로드)를 암호화하는 데 사용되는 키인 암호화 키입니다. 이 키는 JOSE 헤더의 alg 매개변수에 지정된 알고리즘을 사용하여 암호화됩니다.

  • algRSA-OAEP인 경우 콘텐츠 암호화 키(CEK)는 수신자의 공개 키와 RSA-OAEP 알고리즘을 사용하여 암호화됩니다.
  • algA128KW 또는 A256KW인 경우 대칭 키 랩이 사용됩니다.

암호화된 키는 base64url로 인코딩됩니다.

2.3 초기화 벡터(IV)

초기화 벡터(IV)는 JWE 구조의 세 번째 구성 요소입니다. 동일한 일반 텍스트가 매번 다르게 암호화되도록 암호화 알고리즘과 함께 사용되는 base64url로 인코딩된 임의 값입니다. IV는 암호화된 데이터의 패턴을 방지하여 보안을 강화합니다.

AES GCM 모드의 경우 IV는 일반적으로 96비트(12바이트) 길이입니다.

2.4 암호문

암호문은 콘텐츠 암호화 키(CEK)와 암호화 알고리즘(enc 매개변수)을 사용하여 일반 텍스트(페이로드 데이터)를 암호화한 결과입니다. 암호문은 base64url로 인코딩되어 있으며 보호된 콘텐츠를 보유하고 있으므로 JWE의 핵심 부분입니다.

  • 암호화 프로세스에는 패딩, 암호화 및 암호화된 출력을 base64url 형식으로 변환하는 과정이 포함됩니다.
  • 추가 인증 데이터(AAD)가 포함되는 경우 JOSE 헤더와 암호문의 신뢰성과 무결성을 보장하는 데 사용됩니다.

2.5 인증 태그

인증 태그(태그라고도 함)는 암호문, 초기화 벡터(IV) 및 추가 인증 데이터에 무결성과 신뢰성을 제공하는 base64url로 인코딩된 값입니다. (AAD). AES GCM과 같은 알고리즘을 사용하여 암호화 프로세스 중에 생성됩니다.

암호화 후 JWE 구조의 일부가 변경되면 인증 태그가 일치하지 않기 때문에 암호 해독 프로세스가 실패합니다.

3. JWE의 예

"Hello, World!" 메시지를 암호화하려는 시나리오를 생각해 보세요. JWE를 사용합니다. 단순화된 분석은 다음과 같습니다.

  • 보호된 헤더 : {"alg":"RSA-OAEP","enc":"A256GCM"}
  • 암호화된 키 : Base64Url(암호화(수신자의 공개키와 대칭키))
  • 초기화 벡터(IV): Base64Url(임의로 생성된 IV)
  • 암호문 : Base64Url(encrypt(대칭 키로 "Hello, World!"))
  • 인증태그 : Base64Url(GCM 태그)

최종 JWE는 다음과 같습니다.

{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

4. JWE는 어떻게 작동하나요?

JWE는 공개 키 암호화(대칭 키 암호화용)와 대칭 암호화(실제 페이로드 암호화용)를 조합하여 작동합니다. 프로세스 진행 방식은 다음과 같습니다.

키 생성 및 관리

  • 발신자와 수신자는 공개 키 암호화 표준(예: RSA 또는 타원 곡선)에 동의합니다.
  • 발신자는 메시지를 암호화하기 위해 임의의 대칭 키를 생성합니다.
  • 대칭 키는 수신자의 공개 키를 사용하여 암호화됩니다.

암호화 과정

  • 발신자는 암호화 알고리즘을 지정하는 JWE 헤더를 생성합니다.
  • 페이로드(데이터)는 대칭 키와 초기화 벡터(IV)를 사용하여 암호화됩니다.
  • 대칭키는 수신자의 공개키를 이용해 암호화됩니다.
  • 결과 구성요소가 연결되어 최종 JWE를 형성합니다.

복호화 과정

  • 수신자는 자신의 개인 키를 사용하여 암호화된 대칭 키를 해독합니다.
  • 해독된 대칭 키는 암호문을 해독하는 데 사용됩니다.
  • 수신자는 인증 태그를 사용하여 데이터의 무결성을 확인합니다.

5. JWE의 장점과 단점

5.1 장점

  • 기밀성 : 엔드투엔드 암호화를 제공하여 데이터 개인정보 보호를 보장합니다.
  • 상호운용성 : 다양한 시스템과 플랫폼에서 호환됩니다.
  • 무결성 및 보안 : 데이터가 변조되지 않도록 보호합니다.
  • 여러 수신자 지원 : 서로 다른 키를 사용하여 여러 수신자에게 데이터를 암호화할 수 있습니다.

5.2 단점

  • 복잡성 : 암호화 및 복호화 과정은 복잡하고 오류가 발생하기 쉽습니다.
  • 성능 오버헤드 : 암호화/복호화 프로세스로 인해 계산 오버헤드가 추가됩니다.
  • 더 큰 페이로드 크기 : JWE 페이로드는 암호화 메타데이터로 인해 일반 데이터나 JWT에 비해 더 큽니다.

6. Java로 JWE를 만드는 방법

JWE를 만들려면 JWE 표준을 지원하는 라이브러리를 선택해야 합니다. Java에서 가장 인기 있는 라이브러리 중 하나는 Nimbus JOSE JWT입니다. 다음은 JWE를 생성하는 방법을 보여주는 간단한 예입니다.

종속성 설정

Maven을 사용하는 경우 pom.xml에 다음 종속성을 추가하세요.

{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

JWE 생성 및 암호화

다음은 JWE 생성을 보여주는 Java 코드 조각입니다.

eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ.
g_hE3pPLiSs9C60_WFQ-VP_mQ1BU00Z7Xg.
48V1_ALb6US04U3b.
5eym8mytxoXCBlYkhjBtkmmI.
XFBoMYUZodetZdvTiFvSkQ
로그인 후 복사

코드 설명

  • 키 생성 : JWE를 암호화하고 복호화하기 위해 RSA 키 쌍이 생성됩니다.
  • 헤더 및 페이로드 : 헤더는 암호화 알고리즘을 지정하고, 페이로드에는 암호화할 데이터가 포함됩니다.
  • 암호화 : RSAEncrypter는 페이로드를 암호화하는 데 사용됩니다.
  • 복호화 : RSADecrypter는 페이로드를 원래 형식으로 다시 복호화합니다.

결과

위 코드를 실행하면 암호화된 JWE 문자열이 생성된 다음 이를 다시 원래 메시지로 해독합니다.

<dependency>
    <groupId>com.nimbusds</groupId>
    <artifactId>nimbus-jose-jwt</artifactId>
    <version>9.22</version>
</dependency>
로그인 후 복사

7. 결론

JWE(JSON 웹 암호화)는 최신 웹 애플리케이션에서 안전한 데이터 전송을 위한 필수 도구입니다. 구조, 작동 방식, 장단점을 이해하면 애플리케이션에서 언제, 어떻게 사용할지에 대한 정보를 바탕으로 결정을 내리는 데 도움이 됩니다. 질문이 있거나 추가 설명이 필요한 경우 아래에 의견을 남겨주세요!

에서 더 많은 게시물 읽기: JWE 이해: 구조, 운영, 장점, 단점 및 작성 방법

위 내용은 JWE 이해: 구조, 운영, 장점, 단점 및 작성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿