개발자 도구 · JWT 디코더
JWE 설명: 암호화된 JWT에 5개 부분이 있고 읽을 수 있는 페이로드가 없는 이유
· 배경
jwt 암호화 데이터 형식
일부 토큰에는 점이 2개가 아닌 4개 있고 페이로드가 JSON이 아닙니다. 이 게시물에서는 JWE 컴팩트 직렬화, 다섯 가지 부분 각각의 내용, 디코딩 전용 도구가 해당 주장을 표시할 수 없는 이유를 설명합니다.
4개의 점과 JSON이 아닌 페이로드 — JWS가 아닌 JWE를 보유하고 있다는 표시
4개의 점과 5개의 세그먼트는 익숙한 세 부분으로 구성된 서명 양식과 다른 컴팩트 봉투를 나타냅니다. 중간 바이트를 JWT 클레임으로 구문 분석하려고 하면 내용이 일반 텍스트 JSON의 base64url 철자가 아닌 암호 텍스트이기 때문에 말도 안되는 결과가 발생합니다.
ToolAcre는 디코딩하기 전에 세그먼트 수를 확인합니다. 다섯 부분은 JWE를 식별하는 INVALID_JWT 메시지를 트리거하고 이 디코딩 전용 경로에 암호 해독 키 없이 표시할 내용이 없는 이유를 설명합니다. 이는 모호한 구문 분석 실패라기보다는 정확한 경계입니다.
5개 부분 — 보호된 헤더, 암호화된 키, 초기화 벡터, 암호문 및 인증 태그
컴팩트 JWE 부분은 보호된 헤더, 암호화된 키 자료, 초기화 값, 암호문 및 인증 태그를 나타냅니다. 각각은 고유한 암호화 역할을 가지고 있습니다. 세그먼트 위치만으로는 두 번째 또는 네 번째 필드를 읽을 수 있는 JWT 페이로드로 만들 수 없습니다.
디코더는 일부 바이트를 분할하고 base64url로 디코딩할 수 있지만 원시 바이트는 해독되지 않습니다. 이를 텍스트로 표시하면 대체 문자나 오해의 소지가 있는 조각이 생성됩니다. 올바른 조치는 봉투를 식별하고 승인된 수신자 구현으로 이동하는 것입니다.
alg 및 enc — 키 관리와 콘텐츠 암호화, JWE 헤더에서 두 가지 알고리즘의 이름을 지정하는 이유
JWE 헤더에는 키 관리용 `alg`과 콘텐츠 암호화용 `enc`이 포함될 수 있습니다. 이러한 레이블은 다양한 작업을 설명합니다. 서명된 토큰과 마찬가지로 헤더 값은 토큰이 임의의 알고리즘을 선택할 수 있는 권한이 아니라 수신자 정책과 일치해야 하는 입력입니다.
ToolAcre의 세 부분으로 구성된 알고리즘 노트는 JWE 처리를 구현하지 않으며 다섯 부분으로 구성된 분기는 헤더 구문 분석 전에 종료됩니다. 따라서 이 페이지는 특정 암호화 알고리즘을 표시하거나 보증하지 않습니다. 지원되는 선택 사항은 수신자 라이브러리 및 발급자 계약을 참조하세요.
콘텐츠 암호화 키 — 무작위 키가 페이로드를 보호하고 수신자를 위해 자체적으로 래핑되는 방법
콘텐츠 암호화는 일반적으로 생성된 콘텐츠 암호화 키를 사용하는 반면, 암호화된 키 세그먼트는 수신자 배열에 따라 해당 키를 전달하거나 파생합니다. 분리를 통해 페이로드 바이트를 콘텐츠 암호로 보호하는 동시에 키 관리 정책에 따라 키를 복구할 수 있는 사람을 결정할 수 있습니다.
이 개념 모델은 압축 문자열을 보유하는 것만으로는 일반 텍스트 복구에 불충분한 이유를 설명합니다. 필수 수신자 비밀 및 정책은 자유롭게 사용할 수 있는 지침으로 인코딩되지 않습니다. 공개 디코더는 이를 고안할 수 없으며 사용자에게 개인 암호 해독 키를 일반 페이지에 붙여넣도록 요청해서는 안 됩니다.
발급자가 JWE를 선택하는 경우 — 클라이언트 또는 중개자로부터 기밀로 유지되어야 하는 청구
발행자는 청구가 서명된 토큰을 볼 수 있는 보유자 또는 중개자로부터 기밀로 유지되어야 하는 경우 암호화를 선택할 수 있습니다. 이것이 올바른 선택인지 여부는 위협 모델, 키 배포 및 운영 요구 사항에 따라 다릅니다. 불필요한 데이터를 암호화하는 것보다 청구 내용을 최소화하는 것이 여전히 바람직할 수 있습니다.
암호화는 인증, 검증 또는 메타데이터 문제를 제거하지 않습니다. 수신자는 보호된 콘텐츠를 인증하고 암호 해독 후 토큰 정책을 적용해야 합니다. 승인된 수신자가 얻은 판독 가능한 결과가 모든 서비스에 대해 자동으로 허용되는 것은 아닙니다.
디코딩이 헤더에서 중지되는 이유 — 페이로드는 암호문이므로 키 소유자만 읽을 수 있습니다.
페이로드 세그먼트가 암호문이므로 디코딩이 구조에서 중지됩니다. ToolAcre는 의도적으로 임의의 바이너리를 JSON로 표시하는 것을 피하고 대신 특정 메시지를 제공합니다. 이렇게 하면 사용자가 유효한 암호화된 봉투의 횡설수설을 손상으로 해석하는 것을 방지할 수 있습니다.
귀하가 의도된 수신자라면 적절한 키와 알고리즘으로 구성된 제어 소프트웨어를 사용하십시오. 그렇지 않은 경우 읽을 수 없는 페이로드가 예상되는 보안 속성입니다. 패딩 트릭이나 대체 문자 디코더는 암호 해독을 대체할 수 없습니다.
여기서 다루지 않는 내용 — 서명된 후 암호화된 중첩 JWT 및 JWE JSON 직렬화
중첩된 구성은 콘텐츠에 서명한 다음 결과를 암호화하거나 정의된 프로필 아래에 레이어를 결합할 수 있습니다. JWE에는 압축된 다섯 부분으로 구성된 문자열 이상의 표현도 있습니다. ToolAcre는 이러한 경우를 처리하지 않으며 이 기사에서는 단순히 헤더 레이블에서만 중첩을 추론하지 않습니다.
문제를 해결하기 전에 시스템에 필요한 레이어를 문서화하세요. 그렇지 않으면 팀은 암호문에 대한 서명 확인을 시도하거나 인증되지 않은 내부 토큰을 디코딩할 수 있습니다. 선택한 JOSE 라이브러리가 명시적 정책에 따라 순서를 처리하도록 합니다.
요약: 디코더는 암호화되지 않은 것만 표시할 수 있습니다. ToolAcre JWT 디코더는 서명된 토큰의 헤더와 페이로드를 표시합니다. JWE의 페이로드는 설계상 읽을 수 없습니다.
디코더는 암호화되지 않은 것만 표시할 수 있습니다. ToolAcre는 세 부분으로 구성된 서명된 입력의 헤더와 페이로드에서 JSON를 읽는 반면 5개의 세그먼트는 설명 중지를 유발합니다. 이러한 구별은 디코드 전용 인터페이스가 수신자 기능이 있는 것처럼 가장하는 것을 방지합니다.
세그먼트 수를 신뢰 결과가 아닌 라우팅 단서로 사용하십시오. 읽을 수 있는 세 부분에는 여전히 서명 확인이 필요합니다. 5개의 암호화된 부분에는 승인된 암호 해독 및 검증이 필요합니다. 두 경우 모두 시각적 출력만으로는 소유권 주장을 인증하거나 액세스 권한을 부여하지 않습니다.