2013-03-19 5 views
6

나는 우리의 인증 서버에서 JSON Web Token (JWT)을 지원하는 것으로서, latest draft being 08으로 JSON 웹 암호화 (JWE) 사양을 읽었습니다. 이 정의 비대칭 암호화 방법을 사용JSON 웹 암호화 (JWE)로 암호화 된 보안 토큰의 발급자를 확인합니까?

대칭 키 (콘텐츠 마스터 키)를받는 공개 키를 이용하여 암호화된다. 이는받는 사람 만 해독 할 수 있고 토큰이 의도 된 것인지 확인할 수 있도록하는 것이 좋습니다.

일반적으로 토큰이 인 사람이 누구인지 증명할 수도 있습니다. 예를 들어에서 볼 수 있습니다. 공개 키를 사용하여 검증 할 수있는 발급자의 개인 키를 사용하여 생성 된 서명. 그러나 서명은 발급자의 개인 키에 대한 언급없이 콘텐츠 마스터 키 또는받는 사람의 공개 키에서 파생 된 것처럼 보입니다. 만큼 알려졌다 예상 토큰의 형식으로 - -이없이

, 그것은 같은 날 것으로 보인다받는 사람의 공개 키 (즉, 사람)가 누구 유효한 토큰을 생성 할 수; 신뢰할 수있는 인증 서버가 아닙니다.

나는 (멀리에서) 암호화에 대한 전문가가 아니에요 그래서 내가 여기서 뭔가를 누락 확신 해요. 수신자는 비대칭으로 암호화 된 토큰이 신뢰할 수있는 발급자로부터 왔는지 어떻게 확인합니까?

json으로 웹 서명 (JWS)는 발행자의 개인 키를 사용하여 자신의 공개 키를 검증 할 수있다 서명을 정의 않는 사양 , 내가 생각하던 것이 JWE 토큰의 페이로드해야인지 궁금 점을 감안 JWS 토큰이 될까요?

답변

4

JWT는 확실히 중첩 된 페이로드를 허용합니다. 실제로 cty (content-type) 헤더 매개 변수를 JWT으로 설정하여 페이로드가 실제로 다른 JWT임을 나타낼 수있는 사양에 이 있습니다.

그래서 당신이 가장 가능성이 JWE를 작성하고 JWS에 포장 것입니다, 당신의 개인 키로 서명했다. 이것은 또한 JOSE 메일 링리스트에있는 this thread의 결론 (또는 적어도 하나의 해결책) 인 것으로 보인다. 페이로드 크기를 줄이면 다른 related thread이 있습니다. 일반적으로 메일 링리스트는 사양 뒤에있는 사람들이 놀고있는 곳이기 때문에 주목할 가치가 있습니다.

+1

멋지다. 참조 용으로 감사드립니다. 스펙을 좀더 조심스럽게 다시 읽으면 섹션 10에서도이 문제를 다루고 있으며 다음과 같은 추가 지침이 있습니다. "중첩 된 JWT의 구문 및 서명 작업은 순서에 관계없이 적용될 수 있지만 일반적으로 보낸 사람은 메시지에 서명해야하며 결과를 암호화하여 서명을 암호화합니다. 이렇게하면 서명을 제거한 공격을 방지하고 암호화 된 메시지 만 남기고 서명자에게 개인 정보를 제공 할 수 있습니다. 또한 암호화 된 텍스트의 서명은 많은 관할 지역에서 유효하지 않습니다. " –

+0

예, 암호화 된 메시지 자체가 GCM 또는 암호화 후 HMAC 체계를 통해 무결성 보호되므로 이해가됩니다. 이것은 또한 메일 링리스트에서 Mike Jonessuggested와 반대입니다. 이 물건을 구현하는 동안 항상 어딘가에 빠지기위한 충분한 범위가 있습니다 :). –

+0

JWE를 해독하고 JAVA에서 클레임 세트를 추출해야합니다. 거기에 도서관이 있나요? – user243655