[RFC Home] [TEXT|PDF|HTML] [Tracker] [IPR] [Errata] [Info page]
PROPOSED STANDARD
Errata ExistInternet Engineering Task Force (IETF) M. Jones
Request for Comments: 7517 Microsoft
Category: Standards Track May 2015
ISSN: 2070-1721
JSON 웹 키 (JWK)
요약
JSON 웹 키(JWK)는 자바스크립트 객체 표기법(JSON) 데이터
구조로서 암호 키를 나타냅니다. 본 명세서는 또한 JWK들의 집합을
나타내는 JWK 세트 JSON 데이터 구조도 정의합니다. 이 명세서와 함께 사용되는
암호 알고리즘과 식별자들은 별도의 JSON Web Algorithms (JWA)
명세서와 해당 명세에서 설정한 IANA 레지스트리에 설명되어 있습니다.
이 메모의 상태
이것은 인터넷 표준 트랙 문서입니다.
이 문서는 인터넷 공학 태스크 포스
(IETF)의 산물입니다. 이는 IETF 커뮤니티의 합의를 나타내며, 공개 검토를 받았고
인터넷 엔지니어링 스티어링 그룹(IESG)에 의해 출판 승인을 받았습니다. 인터넷
표준에 대한 추가 정보는 RFC 5741의 섹션 2에서 확인할 수 있습니다.
이 문서의 현재 상태, 정오표(errata),
및 이에 대한 피드백 제출 방법에 관한 정보는 다음에서 얻을 수 있습니다
http://www.rfc-editor.org/info/rfc7517.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Jones Standards Track [Page 1]
RFC 7517 JSON Web Key (JWK) May 2015
Table of Contents
1. 소개 . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. 표기 관습 . . . . . . . . . . . . . . . . . . . . . . . 3
2. 용어정의 . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. JWK 예시 . . . . . . . . . . . . . . . . . . . . . . . . 5
4. JSON 웹 키 (JWK) 형식 . . . . . . . . . . . . . . . . . . 5
4.1. "kty" (키 유형) 매개변수 . . . . . . . . . . . . . . . 6
4.2. "use" (공개 키 용도) 매개변수 . . . . . . . . . . . . 6
4.3. "key_ops" (키 작업) 매개변수 . . . . . . . . . . . . . . 7
4.4. "alg" (알고리즘) 매개변수 . . . . . . . . . . . . . . . . 8
4.5. "kid" (키 ID) 매개변수 . . . . . . . . . . . . . . . . . . 8
4.6. "x5u" (X.509 URL) 매개변수 . . . . . . . . . . . . . . . 8
4.7. "x5c" (X.509 인증서 체인) 매개변수 . . . . . . . . 9
4.8. "x5t" (X.509 인증서 SHA-1 지문) 매개변수 . . 9
4.9. "x5t#S256" (X.509 인증서 SHA-256 지문)
매개변수 . . . . . . . . . . . . . . . . . . . . . . . . 10
5. JWK 세트 형식 . . . . . . . . . . . . . . . . . . . . . . 10
5.1. "keys" 매개변수 . . . . . . . . . . . . . . . . . . . 10
6. 문자열 비교 규칙 . . . . . . . . . . . . . . . . . . . . 11
7. 암호화된 JWK 및 암호화된 JWK 세트 형식 . . . . . . . . 11
8. IANA 고려사항 . . . . . . . . . . . . . . . . . . . . . 11
8.1. JSON 웹 키 매개변수 등록부 . . . . . . . . . . . . 12
8.1.1. 등록 템플릿 . . . . . . . . . . . . . . . . . . 12
8.1.2. 등록부 초기 내용 . . . . . . . . . . . . . . . 13
8.2. JSON 웹 키 사용 등록부 . . . . . . . . . . . . . . . 15
8.2.1. 등록 템플릿 . . . . . . . . . . . . . . . . . 15
8.2.2. 등록부 초기 내용 . . . . . . . . . . . . . . . 15
8.3. JSON 웹 키 작업 등록부 . . . . . . . . . . . . . . . 16
8.3.1. 등록 템플릿 . . . . . . . . . . . . . . . . . . 16
8.3.2. 등록부 초기 내용 . . . . . . . . . . . . . . . 16
8.4. JSON 웹 키 세트 매개변수 등록부 . . . . . . . . 17
8.4.1. 등록 템플릿 . . . . . . . . . . . . . . . . . . 17
8.4.2. 등록부 초기 내용 . . . . . . . . . . . . . . 18
8.5. 미디어 타입 등록 . . . . . . . . . . . . . . . . . . . 18
8.5.1. 등록부 내용 . . . . . . . . . . . . . . . . . . 18
9. 보안 고려사항 . . . . . . . . . . . . . . . . . . . . . . 19
9.1. 키 출처 및 신뢰 . . . . . . . . . . . . . . . . . . . . 20
9.2. 비공개 키 정보 노출 방지 . . . . . . . . . . . . . 20
9.3. RSA 개인 키 표현 및 블라인딩 . . . . . . . . . . 21
9.4. 키 엔트로피 및 랜덤 값 . . . . . . . . . . . . . . 21
10. 참조 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
10.1. 규범적 참조 . . . . . . . . . . . . . . . . . . . . . 21
10.2. 정보 참조 . . . . . . . . . . . . . . . . . . . . . . 23
부록 A. JSON 웹 키 세트 예시 . . . . . . . . . . . . . . 25
A.1. 공개 키 예시 . . . . . . . . . . . . . . . . . . . . 25
A.2. 개인 키 예시 . . . . . . . . . . . . . . . . . . . . 25
A.3. 대칭 키 예시 . . . . . . . . . . . . . . . . . . . . 27
Jones Standards Track [Page 2]
RFC 7517 JSON Web Key (JWK) May 2015
부록 B. "x5c" (X.509 인증서 체인)
매개변수의 예시 사용 . . . . . . . . . . . . . . . . 28
부록 C. 암호화된 RSA 개인 키 예시 . . . . . . . . . . . . 28
C.1. 평문 RSA 개인 키 . . . . . . . . . . . . . . . . . . . 29
C.2. JOSE 헤더 . . . . . . . . . . . . . . . . . . . . . . 32
C.3. 콘텐츠 암호화 키(CEK) . . . . . . . . . . . . . . . 32
C.4. 키 도출 . . . . . . . . . . . . . . . . . . . . . . . . 33
C.5. 키 암호화 . . . . . . . . . . . . . . . . . . . . . . . 33
C.6. 초기화 벡터 . . . . . . . . . . . . . . . . . . . . . 33
C.7. 추가 인증된 데이터 . . . . . . . . . . . . . . . . 34
C.8. 콘텐츠 암호화 . . . . . . . . . . . . . . . . . . . . 34
C.9. 완전한 표현 . . . . . . . . . . . . . . . . . . . . . 38
감사의 글 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
저자 주소 . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1. 소개
JSON 웹 키(JSON Web Key, JWK)는 암호화 키를 표현하는 JavaScript 객체 표기법(JSON) [RFC7159]
데이터 구조입니다. 이 명세서는 또한 JWK 세트(JSON) 데이터 구조를 정의하여
JWK들의 집합을 표현합니다. 본 명세서와 함께 사용되는 암호 알고리즘과 식별자는
별도의 JSON Web Algorithms (JWA) [JWA] 명세 및
해당 명세에서 설정된 IANA 등록부에 설명되어 있습니다.
이 명세의 목표는 새로운 종류의 인증서 체인을 표현하거나, 새로운 종류의 인증된 키를
표현하거나, X.509 인증서를 대체하는 것을 포함하지 않습니다.
JWK와 JWK 세트는 JSON Web Signature [JWS] 및 JSON
Web Encryption [JWE] 명세에서 사용됩니다.
본 명세에서 정의된 이름들은 표현을 간결하게 유지하는 것이 핵심 목표이므로 짧게 정해졌습니다.
1.1. 표기 관습
본 문서에서 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 및
"OPTIONAL"이라는 핵심어들은 "Key words for use in RFCs to Indicate Requirement Levels" [RFC2119]에 설명된 대로 해석되어야 합니다.
이 해석은 해당 용어들이 모두 대문자로 나타날 때에만 적용되어야 합니다.
BASE64URL(OCTETS)는 [JWS]의 섹션 2에 따른 OCTETS의 base64url 인코딩을 나타냅니다.
Jones Standards Track [Page 3]
RFC 7517 JSON Web Key (JWK) May 2015
UTF8(STRING)는 STRING의 UTF-8 [RFC3629] 표현의 옥텟을 나타내며, 여기서 STRING은 0개 이상의 유니코드
[UNICODE] 문자들의 시퀀스입니다.
ASCII(STRING)는 STRING의 ASCII [RFC20] 표현의 옥텟을 나타내며, 여기서 STRING은 0개 이상의 ASCII
문자들의 시퀀스입니다.
두 값 A와 B의 연결은 A || B로 표기됩니다.
2. 용어정의
"JSON Web Signature (JWS)", "Base64url Encoding",
"Collision-Resistant Name", "Header Parameter", 및 "JOSE Header"라는 용어들은
JWS 명세 [JWS]에 의해 정의됩니다.
"JSON Web Encryption (JWE)", "Additional Authenticated Data
(AAD)", "JWE Authentication Tag", "JWE Ciphertext", "JWE Compact
Serialization", "JWE Encrypted Key", "JWE Initialization Vector", 및
"JWE Protected Header"라는 용어들은 JWE 명세 [JWE]에 의해 정의됩니다.
"Ciphertext", "Digital Signature", "Message Authentication
Code (MAC)", 및 "Plaintext"라는 용어들은 "Internet Security
Glossary, Version 2" [RFC4949]에 의해 정의됩니다.
이 명세에서 정의되는 용어들은 다음과 같습니다:
JSON Web Key (JWK)
암호화 키를 표현하는 JSON 객체. 객체의 멤버들은 키의 값 등을 포함한
키의 속성들을 나타냅니다.
JWK Set
JWK들의 집합을 표현하는 JSON 객체. 이 JSON 객체는 배열 형태의 "keys" 멤버를
반드시(MUST) 가져야 합니다.
Jones Standards Track [Page 4]
RFC 7517 JSON Web Key (JWK) May 2015
3. JWK 예시
이 절은 JWK의 예시를 제공합니다. 다음 예시 JWK는 해당 키가 타원곡선 [DSS] 키이며,
P-256 타원곡선과 함께 사용되고, x 및 y 좌표가 아래에 표시된 base64url로 인코딩된 값임을
나타냅니다. 또한 키 식별자(kid)가 키에 제공되어 있습니다.
{"kty":"EC",
"crv":"P-256",
"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",
"kid":"JWS 명세 부록 A.3 예제에서 사용된 공개 키"
}
추가적인 JWK 예시 값들은 부록 A에서 찾을 수 있습니다.
4. JSON 웹 키 (JWK) 형식
JWK는 암호화 키를 표현하는 JSON 객체입니다. 객체의 멤버들은 키의 값 등
키의 속성을 나타냅니다. 이 JSON 객체는 RFC 7159 섹션 2에 따라
모든 JSON 값 또는 구조적 문자 앞뒤에 공백 및/또는 줄바꿈을 포함할 수 있습니다. 이 문서는
알고리즘에 종속적이지 않은 공통 키 매개변수들을 정의합니다.
공통 매개변수 외에도, 각각의 JWK는 키 유형별 멤버들을 가집니다. 이러한 멤버들은
키의 파라미터를 나타냅니다. JSON Web Algorithms (JWA) [JWA] 명세의 섹션 6은
여러 종류의 암호 키와 그에 연관된 멤버들을 정의합니다.
JWK 내의 멤버 이름들은 고유해야 합니다; JWK 파서들은 중복된 멤버 이름을 가진 JWK를
거부하거나, ECMAScript 5.1의 섹션 15.12(The JSON Object)에 명시된 대로
어휘상 마지막 중복 멤버 이름만 반환하는 JSON 파서를 사용해야 합니다.
추가 멤버들이 JWK에 존재할 수 있으며, 구현체들이 이를 이해하지 못할 경우 무시해야(MUST) 합니다.
서로 다른 키 유형을 위해 사용되는 멤버 이름들은 반드시 서로 구별될 필요는 없습니다. 새로운 멤버 이름은
섹션 8.1에서 설립된 IANA "JSON Web Key Parameters" 등록부에 등록되거나,
충돌 저항 이름(Collision-Resistant Name)을 포함하는 값이어야 합니다.
Jones Standards Track [Page 5]
RFC 7517 JSON Web Key (JWK) May 2015
4.1. "kty" (키 유형) 매개변수
"kty"(키 유형) 매개변수는 키와 함께 사용되는 암호 알고리즘 계열을 식별하며, 예를 들어 "RSA" 또는 "EC"와 같습니다.
"kty" 값은 [JWA]에서 설정된 IANA "JSON Web Key Types" 등록부에
등록되거나 충돌 저항 이름을 포함하는 값이어야 합니다. "kty" 값은 대소문자를 구분하는 문자열입니다. 이 멤버는 JWK에 반드시(MUST) 있어야 합니다.
정의된 "kty" 값들의 목록은 [JWA]에서 설정된 IANA "JSON Web Key Types" 등록부에서 찾을 수 있습니다; 이 등록부의 초기 내용은
[JWA]의 섹션 6.1에 정의된 값들입니다.
키 유형 정의는 해당 키 유형에 대해 사용될 멤버들의 명세를 포함합니다. 특정 "kty" 값과 함께 사용되는 멤버들은
섹션 8.1에서 설립된 IANA "JSON Web Key Parameters" 등록부에서 찾을 수 있습니다.
4.2. "use" (공개 키 용도) 매개변수
"use"(공개 키 용도) 매개변수는 공개 키의 의도된 사용을 식별합니다. "use" 매개변수는
공개 키가 데이터를 암호화하는 데 사용되는지 또는 데이터의 서명을 검증하는 데 사용되는지를 표시하는 데 사용됩니다.
본 명세에서 정의된 값들은:
o "sig" (서명)
o "enc" (암호화)
다른 값들도 사용할 수 있습니다(MAY). "use" 값은 대소문자를 구분하는 문자열입니다. 애플리케이션이 그 존재를 요구하지 않는 한 "use" 멤버의 사용은 선택적(OPTIONAL)입니다.
키가 다른 키를 래핑하는 데 사용되고 첫 번째 키에 대해 공개 키 용도 지정이 필요한 경우, 키 래핑은 일종의 암호화이므로 "enc"(암호화) 용도 값이 사용됩니다. 또한 "enc" 값은 키 합의 연산에 사용되는 공개 키에도 사용됩니다.
추가적인 "use"(공개 키 사용) 값들은
IANA "JSON Web Key Use" 등록부에 등록될 수 있으며, 이 등록부는 섹션 8.2에 의해 설정됩니다.
사용되는 모든 확장값을 등록하는 것은 이
명세가 공개 환경에서 사용될 때 강력히 권장됩니다. 공개 환경에서는 여러
조직이 확장값에 대해 공통의 이해를 가질 필요가 있습니다.
그러나 등록되지 않은 확장값은 폐쇄된
환경에서 사용할 수 있으며, 그 경우 생산자와 소비자는
항상 동일한 조직이 됩니다.
Jones Standards Track [Page 6]
RFC 7517 JSON Web Key (JWK) May 2015
4.3. "key_ops" (키 작업) 매개변수
"key_ops" (키 작업) 매개변수는 키가 사용될 작업을 식별합니다. "key_ops" 매개변수는 공개 키, 개인 키 또는 대칭 키가 존재할 수 있는 경우에 사용됩니다.
그 값은 키 작업 값을 배열로 나타냅니다. 이 명세에서 정의된 값은 다음과 같습니다:
o "sign" (디지털 서명 또는 MAC 계산)
o "verify" (디지털 서명 또는 MAC 검증)
o "encrypt" (내용 암호화)
o "decrypt" (내용 복호화 및 복호화 유효성 검사, 해당되는 경우)
o "wrapKey" (키 암호화)
o "unwrapKey" (키 복호화 및 복호화 유효성 검사, 해당되는 경우)
o "deriveKey" (키 파생)
o "deriveBits" (키로 사용되지 않는 비트 파생)
("key_ops" 값은 의도적으로 Web Cryptography API의 "KeyUsage" 값과 일치함을 주의하십시오
[W3C.CR-WebCryptoAPI-20141211] 명세에 정의됨.)
다른 값이 사용될 수 있습니다. 키 작업 값은 대소문자를 구분하는 문자열입니다. 배열에 중복된 키 작업 값이 있어서는 안 됩니다. "key_ops" 구성 요소의 사용은 선택 사항이며, 응용 프로그램에서 이를 요구하지 않는 한 필수는 아닙니다.
여러 가지 관련 없는 키 작업을 하나의 키에 대해 지정하는 것은 여러 알고리즘에서 동일한 키를 사용하는 것과 관련된 잠재적 취약점 때문에 피해야 합니다. 따라서 "sign"과 "verify", "encrypt"와
"decrypt", "wrapKey"와 "unwrapKey"의 조합은 허용되지만, 다른 조합은 사용하지 말아야 합니다.
추가적인 "key_ops" (키 작업) 값은 IANA "JSON Web Key Operations" 등록소에 등록할 수 있습니다 섹션 8.3에 의해 설립됨.
"key_ops" 구성 요소에 대한 확장 값 등록에 대한 고려 사항은 "use" 구성 요소와 동일하게 적용됩니다.
"use"와 "key_ops" JWK 구성 요소는 함께 사용하지 말아야 하며;
그러나 둘 다 사용될 경우, 그들이 전달하는 정보는 일관성이 있어야 합니다. 응용 프로그램은 이 구성 요소들 중 어떤 것을 사용할지 명시해야 하며, 둘 다 사용할 경우 일관성 있는 정보를 제공해야 합니다.
Jones Standards Track [Page 7]
RFC 7517 JSON Web Key (JWK) May 2015
4.4. "alg" (알고리즘) 매개변수
"alg" (알고리즘) 매개변수는 키와 함께 사용할 알고리즘을 식별합니다. 사용되는 값은 [JWA]에 의해 설정된 IANA "JSON Web Signature and Encryption Algorithms" 레지스트리에 등록된 값이거나 충돌 저항 이름을 포함하는 값이어야 합니다. "alg" 값은 대소문자를 구분하는 ASCII 문자열입니다.
이 멤버의 사용은 선택 사항입니다.
4.5. "kid" (키 ID) 매개변수
"kid" (키 ID) 매개변수는 특정 키를 매칭하는 데 사용됩니다. 예를 들어, 키 롤오버 중 JWK 세트 내에서 키를 선택하는 데 사용됩니다. "kid" 값의 구조는 명시되지 않았습니다. JWK 세트 내에서 "kid" 값을 사용할 때는, JWK 세트 내의 서로 다른 키들이 고유한 "kid" 값을 사용해야 합니다. (다른 예로는, 서로 다른 "kty" (키 유형) 값을 가진 키들이 같은 "kid" 값을 사용할 수 있으며, 이는 해당 키들이 애플리케이션에서 동등한 대체물로 간주되는 경우입니다.) "kid" 값은 대소문자를 구분하는 문자열입니다. 이 멤버의 사용은 선택 사항입니다.
JWS 또는 JWE와 함께 사용할 때, "kid" 값은 JWS 또는 JWE "kid" 헤더 매개변수 값을 매칭하는 데 사용됩니다.
4.6. "x5u" (X.509 URL) 매개변수
"x5u" (X.509 URL) 매개변수는 [RFC3986]에서 정의된 URI로, X.509 공개 키 인증서 또는 인증서 체인 [RFC5280]의 리소스를 참조합니다. 지정된 리소스는 PEM 인코딩 형식으로 인증서 또는 인증서 체인의 표현을 제공해야 하며, 각 인증서는 [RFC 4945 섹션 6.1]에서 명시한 대로 구분되어야 합니다. 첫 번째 인증서의 키는 JWK의 다른 멤버가 나타내는 공개 키와 일치해야 합니다. 리소스를 얻기 위해 사용되는 프로토콜은 무결성 보호를 제공해야 하며, 인증서를 검색하는 HTTP GET 요청은 TLS [RFC2818] [RFC5246]를 사용해야 하며, 서버의 신원은 [RFC 6125 섹션 6]에 따라 검증되어야 합니다. 이 멤버의 사용은 선택 사항입니다.
"x5u" 멤버가 사용될 때, 키 사용, 알고리즘 또는 기타 정보를 제공하는 선택적 JWK 멤버가 있을 수 있으며, 이를 사용하면 PKIX 인증서를 처리하지 않는 애플리케이션 간의 상호 운용성이 향상될 수 있습니다. 다른 멤버가 있을 경우, 해당 멤버의 내용은 첫 번째 인증서의 관련 필드와 의미상 일치해야 합니다. 예를 들어, "use" 멤버가 있을 경우, 이는 인증서에 명시된 사용과 일치해야 합니다.
Jones Standards Track [Page 8]
RFC 7517 JSON Web Key (JWK) May 2015
이 정보가 포함될 때, "alg" 멤버가 있다면, 그것은 인증서에 지정된 알고리즘과 일치해야 합니다.
4.7. "x5c" (X.509 인증서 체인) 매개변수
"x5c" (X.509 인증서 체인) 매개변수는 하나 이상의 PKIX 인증서 [RFC5280]의 체인을 포함합니다. 인증서 체인은 인증서 값 문자열의 JSON 배열로 나타냅니다. 배열의 각 문자열은 base64로 인코딩된 ([RFC4648 섹션 4] - base64url 인코딩 아님) DER [ITU.X690.1994] PKIX 인증서 값입니다. 키 값을 포함하는 PKIX 인증서는 첫 번째 인증서여야 합니다. 추가 인증서가 뒤따를 수 있으며, 각 후속 인증서는 이전 인증서를 인증하는 데 사용됩니다. 첫 번째 인증서의 키는 JWK의 다른 멤버가 나타내는 공개 키와 일치해야 합니다. 이 멤버의 사용은 선택 사항입니다.
"x5u" 멤버와 마찬가지로, "x5c" 멤버가 사용될 때 선택적 JWK 멤버가 있을 수 있습니다. 이 멤버들이 있다면, 그 내용은 첫 번째 인증서의 관련 필드와 의미상 일치해야 합니다. 추가 지침은 섹션 4.6을 참조하십시오.
4.8. "x5t" (X.509 인증서 SHA-1 지문) 매개변수
"x5t" (X.509 인증서 SHA-1 지문) 매개변수는 X.509 인증서 [RFC5280]의 DER 인코딩에 대한 base64url로 인코딩된 SHA-1 지문(또는 다이제스트)입니다. 인증서 지문은 때때로 인증서 지문이라고도 불립니다.
인증서의 키는 JWK의 다른 멤버가 나타내는 공개 키와 일치해야 합니다. 이 멤버의 사용은 선택 사항입니다.
"x5u" 멤버와 마찬가지로, "x5t" 멤버가 사용될 때 선택적 JWK 멤버가 있을 수 있습니다. 다른 멤버가 있을 경우, 그 내용은 참조된 인증서의 관련 필드와 의미상 일치해야 합니다. 추가 지침은 섹션 4.6을 참조하십시오.
Jones Standards Track [Page 9]
RFC 7517 JSON Web Key (JWK) May 2015
4.9. "x5t#S256" (X.509 인증서 SHA-256 지문) 매개변수
"x5t#S256" (X.509 인증서 SHA-256 지문) 매개변수는 X.509 인증서의 DER 인코딩에 대한 base64url로 인코딩된 SHA-256 지문(또는 다이제스트)입니다. [RFC5280]. 인증서 지문은 때때로 인증서 지문이라고도 불립니다.
인증서의 키는 JWK의 다른 멤버가 나타내는 공개 키와 일치해야 합니다. 이 멤버의 사용은 선택 사항입니다.
"x5u" 멤버와 마찬가지로, "x5t#S256" 멤버가 사용될 때 선택적 JWK 멤버가 있을 수 있습니다. 다른 멤버가 있을 경우, 그 내용은 참조된 인증서의 관련 필드와 의미상 일치해야 합니다. 추가 지침은 섹션 4.6을 참조하십시오.
5. JWK 세트 형식
JWK 세트는 JWK 세트를 나타내는 JSON 객체입니다. JSON 객체는 "keys" 멤버를 가져야 하며, 그 값은 JWK 배열이어야 합니다. 이 JSON 객체는 공백과/또는 줄 바꿈을 포함할 수 있습니다.
JWK 세트 내의 멤버 이름은 고유해야 합니다. JWK 세트 파서는 중복된 멤버 이름이 있는 JWK 세트를 거부하거나 ECMAScript 5.1 [ECMAScript]의 섹션 15.12 ("JSON 객체")에 명시된 대로 마지막 중복 멤버 이름만 반환하는 JSON 파서를 사용해야 합니다.
추가 멤버는 JWK 세트에 포함될 수 있습니다. 이들을 이해하지 못하는 구현은 이를 무시해야 합니다.
JWK 세트의 추가 속성을 나타내는 매개변수를 IANA "JSON Web Key Set Parameters" 레지스트리에 등록하거나 충돌 저항 이름을 포함하는 값이어야 합니다.
JWK 세트 내에서 "kty" (키 유형) 값이 이해되지 않거나 필수 멤버가 없거나 값이 지원되는 범위를 벗어난 경우, 구현은 이를 무시해야 합니다.
5.1. "keys" 매개변수
"keys" 매개변수의 값은 JWK 값의 배열입니다. 기본적으로 배열 내의 JWK 값 순서는 우선순위를 의미하지 않지만, JWK 세트의 애플리케이션은 필요에 따라 순서에 의미를 부여할 수 있습니다.
Jones Standards Track [Page 10]
RFC 7517 JSON Web Key (JWK) May 2015
6. 문자열 비교 규칙
이 사양에 대한 문자열 비교 규칙은
[JWS]의 섹션 5.3에서 정의된 규칙과 동일합니다.
7. 암호화된 JWK 및 암호화된 JWK 세트 형식
비공개 키 자료를 포함하는 JWK에 대해 합법적인 접근 권한이 없는 당사자가
비공개 정보에 접근하는 것을 방지해야 합니다. 이는 그러한 당사자들이 관찰할 수 있는 경우
JWK를 암호화하여 비공개 또는 대칭 키 값의 노출을 방지함으로써 달성할 수 있습니다. 이러한
목적을 위해 평문 값으로 JWK의 UTF-8 인코딩을 사용하는 JWE인 암호화된 JWK의 사용이
권장됩니다. 암호화된 JWK의 처리는 다른 JWE의 처리와 동일합니다. "cty" (내용 유형)
Header Parameter 값으로 "jwk+json"을 사용해야 하며, 애플리케이션이 암호화된 내용이 JWK임을
다른 수단이나 관례로 알고 있는 경우에는 일반적으로 "cty" 값이 생략됩니다.
비공개 키 자료를 포함하는 JWK 세트도 이러한 경우에 암호화되어야 합니다. 암호화된 JWK
세트는 평문 값으로 JWK 세트의 UTF-8 인코딩을 사용하는 JWE입니다. 암호화된 JWK 세트의
처리는 다른 JWE의 처리와 동일합니다. "cty" (내용 유형) Header Parameter 값으로
"jwk-set+json"을 사용해야 하며, 애플리케이션이 암호화된 내용이 JWK 세트임을 다른 수단이나
관례로 알고 있는 경우에는 일반적으로 "cty" 값이 생략됩니다.
예시 암호화된 JWK는 부록 C를 참조하십시오.
8. IANA 고려 사항
이 사양에서 설정한 모든 레지스트리에 대해 다음과 같은 등록 절차가 사용됩니다.
값에 대한 등록 절차는 세 주간의 검토 기간 후에 Specification Required
[RFC5226]에 따라 jose-reg-review@ietf.org 메일링 리스트에서
하나 이상의 지정된 전문가의 자문을 받아 진행됩니다. 그러나 값을 발표 전에 할당할 수 있도록,
지정된 전문가들이 사양이 발표될 것임을 확신하는 경우 등록을 승인할 수 있습니다.
검토를 위해 메일링 리스트로 전송되는 등록 요청은 적절한 제목(예: "Request to register JWK parameter:
example")을 사용해야 합니다.
Jones Standards Track [Page 11]
RFC 7517 JSON Web Key (JWK) May 2015
검토 기간 동안 지정된 전문가들은 등록 요청을 승인하거나 거부하며, 이 결정을 검토 목록과
IANA에 통지합니다. 거부 시에는 설명을 포함해야 하며, 해당되는 경우 요청을 성공시키기 위한
제안 방법을 포함해야 합니다. 21일 이상 결정을 내리지 않은 등록 요청은 IESG의 관심을
끌기 위해 (iesg@ietf.org 메일링 리스트 사용) 해결을 요청할 수 있습니다.
지정된 전문가들이 적용해야 할 기준에는 제안된 등록이 기존 기능을 중복하는지, 일반적인 적용
가능성이 있는지 아니면 특정 응용에만 유용한지, 등록 설명이 명확한지 여부 판단이 포함됩니다.
IANA는 지정된 전문가로부터의 레지스트리 업데이트만 수락해야 하며, 모든 등록 요청은 검토
메일링 리스트로 보내야 합니다.
이 사양을 사용하는 다양한 응용의 관점을 대표할 수 있도록 여러 명의 지정된 전문가를
임명하는 것이 제안됩니다. 특정 전문가에 대해 등록 결정이 이해 상충을 일으킬 수 있다고
인식되는 경우, 해당 전문가는 다른 전문가들의 판단에 따르는 것이 바람직합니다.
8.1. JSON Web Key 매개변수 레지스트리
이 섹션은 JWK 매개변수 이름에 대한 IANA "JSON Web Key Parameters" 레지스트리를
설정합니다. 레지스트리는 매개변수 이름, 매개변수가 사용되는 키 유형, 그리고 이를 정의하는
사양에 대한 참조를 기록합니다. 또한 매개변수가 공개 정보인지 비공개 정보인지 여부도
기록합니다. 이 섹션은 섹션 4에서 정의된 매개변수 이름들을 등록합니다.
동일한 JWK 매개변수 이름은 여러 번 등록될 수 있으며, 이 경우 중복 매개변수 등록은 키 유형별
JWK 매개변수에 대해서만 허용됩니다. 이 경우 중복된 매개변수 이름의 의미는 해당 매개변수를
포함하는 JWK의 "kty" 값에 의해 구분됩니다.
8.1.1. 등록 템플릿
매개변수 이름:
요청된 이름(예: "kid"). 이 사양의 핵심 목표 중 하나는 결과 표현이 간결하도록 하는
것이므로, 특별한 이유가 없으면 이름은 8자를 초과하지 않는 것이 권장됩니다. 이 이름은
대소문자를 구분합니다. 이름은 다른 등록된 이름과 대소문자를 구분하지 않는 방식으로
일치할 수 없습니다. 단, 지정된 전문가들이 예외를 허용할 충분한 이유가 있다고 판단하는
경우는 예외입니다. 그러나 이름이 일치하는 경우, 해당 "kty" 값에 대해 사용하는 매개변수
이름은 반드시 서로 다를 수 있습니다. "*"는 모든 값을 매칭합니다.
매개변수 설명:
매개변수에 대한 간단한 설명(예: "Key ID").
"kty" 값과 함께 사용:
이 매개변수 이름이 사용될 키 유형 매개변수 값(모든 키 유형에서 사용할 경우 "*" 사용).
등록된 매개변수 이름이 동일한 경우, 대소문자 구분 없이 다른 "kty" 값을 등록된 "kty"
값과 일치시킬 수 없습니다.
매개변수 정보 클래스:
매개변수가 공개 정보인지 비공개 정보인지 등록합니다. 값은 Public 또는 Private이어야
합니다.
변경 관리 책임자:
표준 트랙 RFC의 경우 "IESG"를 기재합니다. 그 외에는 책임 당사자의 이름을 기재하고,
우편 주소, 이메일 주소, 홈페이지 URI 등의 기타 세부사항도 포함될 수 있습니다.
사양 문서:
매개변수를 지정하는 문서나 문서에 대한 참조를 포함합니다. 가능한 경우 문서 사본을
검색할 수 있는 URI를 포함하도록 하십시오. 관련 섹션을 포함할 수 있으나 필수는 아닙니다.
8.1.2. 초기 레지스트리 내용
o 매개변수 이름: "kty"
o 매개변수 설명: Key Type
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.1
o 매개변수 이름: "use"
o 매개변수 설명: Public Key Use
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.2
Jones Standards Track [Page 12]
RFC 7517 JSON Web Key (JWK) May 2015
o 매개변수 이름: "key_ops"
o 매개변수 설명: Key Operations
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.3
o 매개변수 이름: "alg"
o 매개변수 설명: Algorithm
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.4
o 매개변수 이름: "kid"
o 매개변수 설명: Key ID
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.5
o 매개변수 이름: "x5u"
o 매개변수 설명: X.509 URL
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.6
o 매개변수 이름: "x5c"
o 매개변수 설명: X.509 Certificate Chain
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.7
o 매개변수 이름: "x5t"
o 매개변수 설명: X.509 Certificate SHA-1 Thumbprint
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.8
o 매개변수 이름: "x5t#S256"
o 매개변수 설명: X.509 Certificate SHA-256 Thumbprint
o "kty" 값과 함께 사용: *
o 매개변수 정보 클래스: Public
o 변경 관리 책임자: IESG
o 사양 문서: RFC 7517 섹션 4.9
Jones Standards Track [Page 13]
RFC 7517 JSON Web Key (JWK) May 2015
8.2. JSON Web Key Use Registry
이 섹션은 JWK "use" (공개 키 용도) 멤버 값에 대한 IANA "JSON Web Key Use"
레지스트리를 설정합니다. 레지스트리는 공개 키 용도 값과 이를 정의하는 사양에 대한
참조를 기록합니다. 이 섹션은 섹션 4.2에서 정의된 값들을 등록합니다.
8.2.1. 등록 템플릿
Use Member Value:
요청된 이름(예: "sig"). 이 사양의 핵심 목표는 표현을 간결하게 하는 것이므로,
특별한 이유가 없으면 이름은 8자를 초과하지 않는 것이 권장됩니다. 이 이름은 대소문자를
구분합니다. 이름은 다른 등록된 이름과 대소문자를 구분하지 않는 방식으로 일치할 수
없습니다. 단, 지정된 전문가들이 예외를 허용할 충분한 이유가 있다고 판단하는 경우는
예외입니다.
Use Description:
용도에 대한 간단한 설명(예: "Digital Signature or MAC").
Change Controller:
표준 트랙 RFC의 경우 "IESG"를 기재합니다. 그 외에는 책임 당사자의 이름을 기재하고,
우편 주소, 이메일 주소, 홈페이지 URI 등의 기타 세부사항도 포함될 수 있습니다.
Specification Document(s):
매개변수를 지정하는 문서나 문서들에 대한 참조를 포함합니다. 가능한 경우 문서 사본을
검색할 수 있는 URI를 포함하도록 하십시오. 관련 섹션을 표시할 수 있으나 필수는 아닙니다.
8.2.2. 초기 레지스트리 내용
o Use Member Value: "sig"
o Use Description: Digital Signature or MAC
o Change Controller: IESG
o Specification Document(s): Section 4.2 of RFC 7517
o Use Member Value: "enc"
o Use Description: Encryption
o Change Controller: IESG
o Specification Document(s): Section 4.2 of RFC 7517
Jones Standards Track [Page 15]
RFC 7517 JSON Web Key (JWK) May 2015
8.3. JSON 웹 키 작업 레지스트리
이 섹션은 JWK "key_ops" 배열 요소 값들을 위한 IANA "JSON 웹 키 작업"
레지스트리를 생성한다. 레지스트리는 키 작업 값과, 이를 정의하는
명세에 대한 참조를 기록한다. 이 섹션은 섹션 4.3에서
정의된 매개변수 이름들을 등록한다.
8.3.1. 등록 템플릿
Key Operation Value:
요청된 이름(예: "sign"). 이 명세의 핵심 목표 중 하나는 결과 표현이
간결해야 한다는 것이므로, 특별한 이유가 없는 한 이름을 짧게(8자를
초과하지 않음) 하는 것이 권장된다. 이 이름은 대/소문자를 구분한다.
이름이 대소문자 구분 없이 다른 등록된 이름과 일치해서는 안되며, 전문가가
예외가 필요하다고 판단한 경우만 허용된다.
Key Operation Description:
키 작업에 대한 간략한 설명(예: "디지털 서명 또는 MAC 계산").
Change Controller:
Standards Track RFC인 경우 "IESG"를 기재한다. 그 외에는 책임자를
기재한다. 기타 세부정보(예: 우편주소, 이메일주소, 홈페이지 URI)를
포함할 수 있다.
Specification Document(s):
매개변수를 명세하는 문서 또는 문서들에 대한 참조. 가능하다면
해당 문서를 내려받을 수 있는 URI 포함. 관련 섹션을 명시할 수 있으나
필수는 아니다.
8.3.2. 최초 레지스트리 내용
o Key Operation Value: "sign"
o Key Operation Description: 디지털 서명 또는 MAC 계산
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
o Key Operation Value: "verify"
o Key Operation Description: 디지털 서명 또는 MAC 검증
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
Jones Standards Track [Page 16]
RFC 7517 JSON Web Key (JWK) May 2015
o Key Operation Value: "encrypt"
o Key Operation Description: 콘텐츠 암호화
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
o Key Operation Value: "decrypt"
o Key Operation Description: 콘텐츠 복호화 및 해당 시 복호화의 유효성 검증
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
o Key Operation Value: "wrapKey"
o Key Operation Description: 키 암호화
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
o Key Operation Value: "unwrapKey"
o Key Operation Description: 키 복호화 및 해당 시 복호화의 유효성 검증
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
o Key Operation Value: "deriveKey"
o Key Operation Description: 키 생성(파생)
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
o Key Operation Value: "deriveBits"
o Key Operation Description: 키로 사용하지 않을 비트 생성
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 4.3
8.4. JSON 웹 키 세트 매개변수 레지스트리
이 섹션은 JWK 세트 매개변수 이름을 위한 IANA "JSON 웹 키 세트 매개변수"
레지스트리를 생성한다. 레지스트리는 매개변수 이름과, 이를 정의하는
명세에 대한 참조를 기록한다. 이 섹션은 섹션 5에서
정의된 매개변수 이름들을 등록한다.
8.4.1. 등록 템플릿
Parameter Name:
요청된 이름(예: "keys"). 이 명세의 핵심 목표 중 하나는 결과 표현이
간결해야 한다는 것이므로, 특별한 이유가 없는 한 이름을 짧게(8자를
초과하지 않음) 하는 것이 권장된다. 이 이름은 대/소문자 구분.
전문가가 예외가 필요하다고 판단한 경우가 아니라면,
대소문자를 구분하지 않는 방식으로 다른 등록된 이름과 일치할 수 없다.
Jones Standards Track [Page 17]
RFC 7517 JSON Web Key (JWK) May 2015
Parameter Description:
매개변수에 대한 간략한 설명(예: "JWK 값 배열").
Change Controller:
Standards Track RFC인 경우 "IESG"를 기재한다. 그 외에는 책임자
기재. 기타 세부정보(예: 우편주소, 이메일주소, 홈페이지 URI)를 포함할
수 있다.
Specification Document(s):
매개변수를 명세하는 문서 또는 문서들에 대한 참조. 가능하다면
해당 문서를 내려받을 수 있는 URI 포함. 관련 섹션을 명시할 수 있으나
필수는 아니다.
8.4.2. 최초 레지스트리 내용
o Parameter Name: "keys"
o Parameter Description: JWK 값 배열
o Change Controller: IESG
o Specification Document(s): RFC 7517 섹션 5.1
8.5. 미디어 타입 등록
8.5.1. 레지스트리 내용
이 섹션은 "application/jwk+json" 및 "application/
jwk-set+json" 미디어 타입을 "Media Types" 레지스트리에
[RFC2046] 따라 등록하며,
콘텐츠가 JWK 또는 JWK 세트임을 각각 나타내는 데 사용할 수 있다
[IANA.MediaTypes]는 RFC 6838 [RFC6838]에서 설명됨.
o Type Name: application
o Subtype Name: jwk+json
o Required Parameters: n/a
o Optional Parameters: n/a
o Encoding considerations: 8bit; application/jwk+json 값은
JSON 객체로 표현됨; JSON 객체에는 UTF-8 인코딩을 사용하는 것이 권장됨.
o Security Considerations: RFC 7517의 보안 고려사항
섹션을 참고.
o Interoperability Considerations: n/a
o Published Specification: RFC 7517
o Applications that use this media type: OpenID Connect, Salesforce,
Google, Android, Windows Azure, W3C WebCrypto API 등 다수
o Fragment identifier considerations: n/a
Jones Standards Track [Page 18]
RFC 7517 JSON Web Key (JWK) May 2015
o Additional Information:
Magic number(s): n/a
File extension(s): n/a
Macintosh file type code(s): n/a
o Person & email address to contact for further information:
Michael B. Jones, mbj@microsoft.com
o Intended Usage: COMMON
o Restrictions on Usage: 없음
o Author: Michael B. Jones, mbj@microsoft.com
o Change Controller: IESG
o Provisional registration? 아니오
o Type Name: application
o Subtype Name: jwk-set+json
o Required Parameters: n/a
o Optional Parameters: n/a
o Encoding considerations: 8bit; application/jwk-set+json 값은
JSON 객체로 표현됨; JSON 객체에는 UTF-8 인코딩을 사용하는 것이 권장됨.
o Security Considerations: RFC 7517의 보안 고려사항
섹션을 참고.
o Interoperability Considerations: n/a
o Published Specification: RFC 7517
o Applications that use this media type: OpenID Connect, Salesforce,
Google, Android, Windows Azure, W3C WebCrypto API 등 다수
o Fragment identifier considerations: n/a
o Additional Information:
Magic number(s): n/a
File extension(s): n/a
Macintosh file type code(s): n/a
o Person & email address to contact for further information:
Michael B. Jones, mbj@microsoft.com
o Intended Usage: COMMON
o Restrictions on Usage: 없음
o Author: Michael B. Jones, mbj@microsoft.com
o Change Controller: IESG
o Provisional registration? 아니오
9. 보안 고려사항
모든 암호화 응용프로그램에 관련된 모든 보안 문제는 JWS/JWE/JWK 에이전트에
의해 해결되어야 한다. 이러한 문제에는 사용자의 비대칭 개인키와
대칭 비밀키를 보호하고, 다양한 공격에 대한 대응책을 마련하는 것이
포함된다.
Jones Standards Track [Page 19]
RFC 7517 JSON Web Key (JWK) May 2015
9.1. 키 출처와 신뢰
키로 암호화적으로 보호된 데이터에 대해, 그 데이터를 얻은
방법과 해당 키와 연관됨을 주장하는 주체의 신뢰성 이상으로
신뢰를 두어서는 안 된다. 신뢰할 수 없는 방식으로 얻은 키와
연관된 모든 데이터는 의심스러워야 한다. 키 출처 인증의
보안 고려사항은 [JWS] 섹션 10.3을 참조.
거의 모든 경우에 애플리케이션은 키 자체가 아니라 이름, 역할,
키 출처와 같이 키에 연관된 속성을 근거로 키를 신뢰할지
판단한다. 애플리케이션이 키 신뢰여부를 결정할 때 JWK에
속성을 바인딩하는 여러 방법이 있다. 두 가지 예는 PKIX
[RFC5280]와 JSON 웹 토큰 (JWT) [JWT]이다.
예를 들어, JWK 작성자는 JWK의 "x5c" 멤버에 PKIX 인증서를 포함할 수 있습니다.
애플리케이션이 인증서를 검증하고 JWK가 인증서의 주체 공개키에
해당하는지 확인하면, JWK는 인증서의 속성들, 예를 들어
주체 이름, 주체 대체 이름, 확장 키 사용, 그리고 서명 체인과
연관될 수 있습니다.
또 다른 예로, JWT는 JWK를 JWT의 클레임으로 참조하여
속성을 바인딩하는 데 사용할 수 있다. JWK는 직접 클레임값으로
포함될 수 있고 JWT가 JWK 값을 얻기 위한 TLS 보호 URI를
포함할 수도 있다. 어떤 경우든, 애플리케이션이 JWT 클레임을 통해
JWK를 얻으면 JWT의 암호적 속성과 추가 클레임으로 키 신뢰여부를
결정할 수 있다.
디지털 서명의 강도가 보안 체인의 모든 연결에 좌우된다는 점에
대해 XML DSIG 2.0 [W3C.NOTE-xmldsig-core2-20130411]의
섹션 12.3 보안 고려사항이 이 명세에도 해당된다.
[JWS]의 섹션 8에 있는 TLS 요구사항도 본 명세에
적용되며, 이 명세에서 TLS를 사용하는 유일한 기능은 "x5u"
JWK 멤버이다.
9.2. 비공개 키 정보 노출 방지
비공개 키와 대칭 키는 의도하지 않은 당사자에게 공개되지 않도록
반드시 보호해야 한다. 권장되는 방법 중 하나는 해당 키가
포함된 JWK 또는 JWK 세트를 JWE의 평문으로 암호화하는 것.
물론 그러려면 비공개 키 정보를 암호화하는 데 사용된 키를
지정된 당사자가 안전하게 얻을 수 있어야 하고, 해당
당사자가 복호화 키를 안전하게 얻는 방법도 필요하다.
Jones Standards Track [Page 20]
RFC 7517 JSON Web Key (JWK) May 2015
RFC 3447 [RFC3447] 및 RFC 6030
[RFC6030]는 개인 키와 대칭 키 보호, 키 사용, 정보 누출에 관한
보안 고려사항이 이 명세에도 동일하게 적용됩니다.
9.3. RSA 개인키 표현 및 블라인딩
RSA 키 블라인딩 작업 [Kocher]은 일부 타이밍 공격에 대한
방어 수단이며, "n", "e", "d" 등 모든 RSA 키 값이 필요합니다. 하지만 일부 RSA
개인키 표현은 공개 지수 "e"가 포함되어 있지 않고, 모듈러스 "n"과 개인 지수 "d"만
포함됩니다. 예를 들어 자바 RSAPrivateKeySpec API는 "e"를 파라미터로 포함하지
않습니다. RSA 키 블라인딩을 가능하게 하려면 이러한 표현 방식은 피해야 합니다.
자바의 경우 RSAPrivateCrtKeySpec API를 대신 사용할 수 있습니다.
"Handbook of Applied Cryptography" [HAC]의 섹션 8.2.2(i)에서는
"n", "e", "d"만으로 나머지 RSA 개인키 파라미터를 어떻게 계산할 수 있는지 논의합니다.
9.4. 키 엔트로피 및 랜덤 값
키 엔트로피와 랜덤 값에 대한 보안 고려사항은 [JWS]의 섹션 10.1을 참고하세요.
10. 참고 문헌
10.1. 표준 참고 문헌
[ECMAScript]
Ecma International, "ECMAScript 언어 명세,
5.1판", ECMA 표준 262, 2011년 6월,
<http://www.ecma-international.org/ecma-262/5.1/
ECMA-262.pdf>.
[IANA.MediaTypes]
인터넷 할당 번호기관(IANA), "미디어 타입",
<http://www.iana.org/assignments/media-types>.
[ITU.X690.1994]
국제 전기통신연합, "정보 기술 - ASN.1 인코딩 규칙: 기본
인코딩 규칙(BER), 정식 인코딩 규칙(CER), 구별 인코딩 규칙(DER) 명세",
ITU-T 권고 X.690, 1994.
Jones Standards Track [Page 21]
RFC 7517 JSON Web Key (JWK) May 2015
[JWA] Jones, M., "JSON Web Algorithms (JWA)", RFC 7518,
DOI 10.17487/RFC7518, 2015년 5월,
<http://www.rfc-editor.org/info/rfc7518>.
[JWE] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)",
RFC 7516, DOI 10.17487/RFC7516, 2015년 5월,
<http://www.rfc-editor.org/info/rfc7516>.
[JWS] Jones, M., Bradley, J., and N. Sakimura, "JSON Web
Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, 2015년
5월, <http://www.rfc-editor.org/info/rfc7515>.
[RFC20] Cerf, V., "네트워크 교환을 위한 ASCII 형식", STD 80,
RFC 20, DOI 10.17487/RFC0020, 1969년 10월,
<http://www.rfc-editor.org/info/rfc20>.
[RFC2046] Freed, N. and N. Borenstein, "다목적 인터넷 메일
확장(MIME) 2부: 미디어 타입", RFC 2046,
DOI 10.17487/RFC2046, 1996년 11월,
<http://www.rfc-editor.org/info/rfc2046>.
[RFC2119] Bradner, S., "RFC에서 요구 수준 지시를 위한
키워드", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, 1997년 3월,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818,
DOI 10.17487/RFC2818, 2000년 5월,
<http://www.rfc-editor.org/info/rfc2818>.
[RFC3629] Yergeau, F., "UTF-8, ISO 10646의 변환 포맷", STD 63,
RFC 3629, DOI 10.17487/RFC3629, 2003년 11월
<http://www.rfc-editor.org/info/rfc3629>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "통합 자원
식별자(URI): 일반 구문", STD 66,
RFC 3986, DOI 10.17487/RFC3986, 2005년 1월,
<http://www.rfc-editor.org/info/rfc3986>.
[RFC4648] Josefsson, S., "Base16, Base32, Base64 데이터 인코딩",
RFC 4648, DOI 10.17487/RFC4648, 2006년 10월,
<http://www.rfc-editor.org/info/rfc4648>.
[RFC4945] Korver, B., "인터넷 IP 보안 PKI 프로파일(IKEv1/ISAKMP, IKEv2, PKIX)",
RFC 4945,
DOI 10.17487/RFC4945, 2007년 8월,
<http://www.rfc-editor.org/info/rfc4945>.
Jones Standards Track [Page 22]
RFC 7517 JSON Web Key (JWK) May 2015
[RFC4949] Shirey, R., "인터넷 보안 용어집, 버전 2",
FYI 36, RFC 4949, DOI 10.17487/RFC4949, 2007년 8월,
<http://www.rfc-editor.org/info/rfc4949>.
[RFC5246] Dierks, T. and E. Rescorla, "전송 계층 보안(TLS) 프로토콜 버전 1.2",
RFC 5246,
DOI 10.17487/RFC5246, 2008년 8월,
<http://www.rfc-editor.org/info/rfc5246>.
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
Housley, R., and W. Polk, "인터넷 X.509 공개키 인프라
인증서와 인증서 폐지 목록(CRL) 프로파일", RFC 5280,
DOI 10.17487/RFC5280, 2008년 5월,
<http://www.rfc-editor.org/info/rfc5280>.
[RFC6125] Saint-Andre, P. and J. Hodges, "인터넷 공개키 인프라에서
X.509(PKIX) 인증서를 사용한 도메인 기반 애플리케이션 서비스
식별의 표현 및 검증 (TLS 맥락)", RFC 6125, DOI 10.17487/RFC6125, 2011년
3월, <http://www.rfc-editor.org/info/rfc6125>.
[RFC7159] Bray, T., Ed., "JavaScript 오브젝트 표기법(JSON) 데이터
교환 형식", RFC 7159, DOI 10.17487/RFC7159, 2014년 3월,
<http://www.rfc-editor.org/info/rfc7159>.
[UNICODE] 유니코드 컨소시엄, "유니코드 표준",
<http://www.unicode.org/versions/latest/>.
10.2. 참고용 문헌
[DSS] 미국 표준 기술 연구소(NIST),
"디지털 서명 표준(DSS)", FIPS PUB 186-4, 2013년 7월,
<http://nvlpubs.nist.gov/nistpubs/FIPS/
NIST.FIPS.186-4.pdf>.
[HAC] Menezes, A., van Oorschot, P., and S. Vanstone, "응용 암호학 핸드북",
CRC Press, 1996년 10월,
<http://cacr.uwaterloo.ca/hac/>.
[JWT] Jones, M., Bradley, J., and N. Sakimura, "JSON 웹 토큰
(JWT)", RFC 7519, DOI 10.17487/RFC7519, 2015년 5월,
<http://www.rfc-editor.org/info/rfc7519>.
Jones Standards Track [Page 23]
RFC 7517 JSON Web Key (JWK) May 2015
[Kocher] Kocher, P., "Diffie-Hellman, RSA, DSS 등 시스템 구현에 대한 타이밍 공격",
제16회 국제 암호학 컨퍼런스 논문집 Advances in Cryptology, Springer-Verlag, pp.
104-113, 1996.
[MagicSignatures]
Panzer, J., Ed., Laurie, B., and D. Balfanz, "매직
시그니처", 2011년 1월,
<http://salmon-protocol.googlecode.com/svn/trunk/
draft-panzer-magicsig-01.html>.
[RFC3447] Jonsson, J. and B. Kaliski, "공개키 암호화 표준(PKCS) #1: RSA 암호화 명세
2.1판", RFC 3447, DOI 10.17487/RFC3447, 2003년 2월,
<http://www.rfc-editor.org/info/rfc3447>.
[RFC5226] Narten, T. and H. Alvestrand, "IANA 검토 사항 작성 지침",
BCP 26, RFC 5226,
DOI 10.17487/RFC5226, 2008년 5월,
<http://www.rfc-editor.org/info/rfc5226>.
[RFC6030] Hoyer, P., Pei, M., and S. Machani, "이동형 대칭 키 컨테이너(PSKC)",
RFC 6030, DOI 10.17487/RFC6030,
2010년 10월, <http://www.rfc-editor.org/info/rfc6030>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "미디어 타입
명세 및 등록 절차", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, 2013년 1월,
<http://www.rfc-editor.org/info/rfc6838>.
[W3C.CR-WebCryptoAPI-20141211]
Sleevi, R. and M. Watson, "웹 암호화 API", 세계 웹 컨소시엄 후보 권고안
CR-WebCryptoAPI-20141211, 2014년 12월,
<http://www.w3.org/TR/2014/CR-WebCryptoAPI-20141211/>.
[W3C.NOTE-xmldsig-core2-20130411]
Eastlake, D., Reagle, J., Solo, D., Hirsch, F., Roessler,
T., Yiu, K., Datta, P., and S. Cantor, "XML 시그니처
구문 및 처리 버전 2.0", 세계 웹 컨소시엄 노트 NOTE-xmldsig-core2-20130411, 2013년 4월,
<http://www.w3.org/TR/2013/NOTE-xmldsig-core2-20130411/>.
Jones Standards Track [Page 24]
RFC 7517 JSON Web Key (JWK) May 2015
Appendix A. JSON 웹 키 세트 예시
A.1. 공개키 예시
아래의 예시 JWK 세트는 각각 JWK로 표현된 두 개의 공개키를 포함합니다:
하나는 타원 곡선 알고리즘을, 다른 하나는 RSA 알고리즘을 사용합니다.
첫 번째 키는 암호화에 사용됨을 명시하고, 두 번째 키는 "RS256"
알고리즘에 사용됨을 명시합니다. 둘 모두 키 매칭을 위해 키 ID를
제공합니다. 두 경우 모두, 정수는 big-endian 표현의 base64url
인코딩으로 표시됩니다. (값 내 줄 바꿈은 오로지 표시 목적입니다.)
{"keys":
[
{"kty":"EC",
"crv":"P-256",
"x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"use":"enc",
"kid":"1"},
{"kty":"RSA",
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx
4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMs
tn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2
QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbI
SD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqb
w0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"}
]
}
A.2. 비공개키 예시
아래 예시 JWK 세트는 공개 및 비공개 키 값이 모두 포함된 두 개의 키를
JWK로 표현합니다: 하나는 타원 곡선 알고리즘, 다른 하나는 RSA
알고리즘을 사용합니다. 이 예시는 이전 섹션의 예시를 확장하여
비공개 키 값을 추가합니다. (값 내 줄 바꿈은 오로지 표시 목적입니다.)
Jones Standards Track [Page 25]
RFC 7517 JSON Web Key (JWK) May 2015
{"keys":
[
{"kty":"EC",
"crv":"P-256",
"x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"d":"870MB6gfuTJ4HtUnUvYMyJpr5eUZNP4Bk43bVdj3eAE",
"use":"enc",
"kid":"1"},
{"kty":"RSA",
"n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4
cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMst
n64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2Q
vzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbIS
D08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw
0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
"e":"AQAB",
"d":"X4cTteJY_gn4FYPsXB8rdXix5vwsg1FLN5E3EaG6RJoVH-HLLKD9
M7dx5oo7GURknchnrRweUkC7hT5fJLM0WbFAKNLWY2vv7B6NqXSzUvxT0_YSfqij
wp3RTzlBaCxWp4doFk5N2o8Gy_nHNKroADIkJ46pRUohsXywbReAdYaMwFs9tv8d
_cPVY3i07a3t8MN6TNwm0dSawm9v47UiCl3Sk5ZiG7xojPLu4sbg1U2jx4IBTNBz
nbJSzFHK66jT8bgkuqsk0GjskDJk19Z4qwjwbsnn4j2WBii3RL-Us2lGVkY8fkFz
me1z0HbIkfz0Y6mqnOYtqc0X4jfcKoAC8Q",
"p":"83i-7IvMGXoMXCskv73TKr8637FiO7Z27zv8oj6pbWUQyLPQBQxtPV
nwD20R-60eTDmD2ujnMt5PoqMrm8RfmNhVWDtjjMmCMjOpSXicFHj7XOuVIYQyqV
WlWEh6dN36GVZYk93N8Bc9vY41xy8B9RzzOGVQzXvNEvn7O0nVbfs",
"q":"3dfOR9cuYq-0S-mkFLzgItgMEfFzB2q3hWehMuG0oCuqnb3vobLyum
qjVZQO1dIrdwgTnCdpYzBcOfW5r370AFXjiWft_NGEiovonizhKpo9VVS78TzFgx
kIdrecRezsZ-1kYd_s1qDbxtkDEgfAITAG9LUnADun4vIcb6yelxk",
"dp":"G4sPXkc6Ya9y8oJW9_ILj4xuppu0lzi_H7VTkS8xj5SdX3coE0oim
YwxIi2emTAue0UOa5dpgFGyBJ4c8tQ2VF402XRugKDTP8akYhFo5tAA77Qe_Nmtu
YZc3C3m3I24G2GvR5sSDxUyAN2zq8Lfn9EUms6rY3Ob8YeiKkTiBj0",
"dq":"s9lAH9fggBsoFR8Oac2R_E2gw282rT2kGOAhvIllETE1efrA6huUU
vMfBcMpn8lqeW6vzznYY5SSQF7pMdC_agI3nG8Ibp1BUb0JUiraRNqUfLhcQb_d9
GF4Dh7e74WbRsobRonujTYN1xCaP6TO61jvWrX-L18txXw494Q_cgk",
"qi":"GyM_p6JrXySiz1toFgKbWV-JdI3jQ4ypu9rbMWx3rQJBfmt0FoYzg
UIZEVFEcOqwemRN81zoDAaa-Bk0KWNGDjJHZDdDmFhW3AN7lI-puxk_mHZGJ11rx
yR8O55XLSe3SPmRfKwZI6yU24ZxvQKFYItdldUKGzO6Ia6zTKhAVRU",
"alg":"RS256",
"kid":"2011-04-29"}
]
}
Jones Standards Track [Page 26]
RFC 7517 JSON Web Key (JWK) May 2015
A.3. 예시 대칭 키들
다음 예시 JWK 세트는 JWK로 표현된 두 개의 대칭 키를 포함합니다:
하나는 AES 키 래핑 알고리즘과 함께 사용되도록 지정된 키이며, 두 번째는
HMAC 키입니다. (값 내부의 줄 바꿈은 표시 용도일 뿐입니다.)
{"keys":
[
{"kty":"oct",
"alg":"A128KW",
"k":"GawgguFyGrWKav7AX4VKUg"},
{"kty":"oct",
"k":"AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75
aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow",
"kid":"HMAC key used in JWS spec Appendix A.1 example"}
]
}
Jones Standards Track [Page 27]
RFC 7517 JSON Web Key (JWK) May 2015
부록 B. "x5c" (X.509 인증서 체인) 매개변수 사용 예시
다음은 "x5c" 매개변수를 사용하여 RSA 공개키와 X.509 인증서로
모두 표현된 RSA 서명 키를 포함하는 JWK의 예시입니다(값 내부의 줄
바꿈은 표시 용도일 뿐입니다):
{"kty":"RSA",
"use":"sig",
"kid":"1b94c",
"n":"vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08
PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Q
u2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4a
YWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwH
MTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMv
VfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ",
"e":"AQAB",
"x5c":
["MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJB
gNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYD
VQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1
wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBg
NVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDV
QQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1w
YmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnH
YMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66
s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6
SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpn
fajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPq
PvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVk
aZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BA
QUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL
+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1
zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL
2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo
4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTq
gawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA=="]
}
부록 C. 암호화된 RSA 개인키 예시
이 예시는 수신자에게 RSA 개인키를 암호화하며, 키 암호화에는
"PBES2-HS256+A128KW"를, 콘텐츠 암호화에는 "A128CBC+HS256"을 사용합니다.
참고: 특별히 달리 표기되지 않는 한, 모든 줄 바꿈은 가독성을 위해서만
포함되어 있습니다.
Jones Standards Track [Page 28]
RFC 7517 JSON Web Key (JWK) May 2015
C.1. 평문 RSA 개인키
다음 RSA 키는 인증된
암호화 작업을 위한 평문이며, JWK 형식으로 서식화되어 있습니다(값 내부의
줄 바꿈은 표시 용도일 뿐입니다):
{
"kty":"RSA",
"kid":"juliet@capulet.lit",
"use":"enc",
"n":"t6Q8PWSi1dkJj9hTP8hNYFlvadM7DflW9mWepOJhJ66w7nyoK1gPNqFMSQRy
O125Gp-TEkodhWr0iujjHVx7BcV0llS4w5ACGgPrcAd6ZcSR0-Iqom-QFcNP
8Sjg086MwoqQU_LYywlAGZ21WSdS_PERyGFiNnj3QQlO8Yns5jCtLCRwLHL0
Pb1fEv45AuRIuUfVcPySBWYnDyGxvjYGDSM-AqWS9zIQ2ZilgT-GqUmipg0X
OC0Cc20rgLe2ymLHjpHciCKVAbY5-L32-lSeZO-Os6U15_aXrk9Gw8cPUaX1
_I8sLGuSiVdt3C_Fn2PZ3Z8i744FPFGGcG1qs2Wz-Q",
"e":"AQAB",
"d":"GRtbIQmhOZtyszfgKdg4u_N-R_mZGU_9k7JQ_jn1DnfTuMdSNprTeaSTyWfS
NkuaAwnOEbIQVy1IQbWVV25NY3ybc_IhUJtfri7bAXYEReWaCl3hdlPKXy9U
vqPYGR0kIXTQRqns-dVJ7jahlI7LyckrpTmrM8dWBo4_PMaenNnPiQgO0xnu
ToxutRZJfJvG4Ox4ka3GORQd9CsCZ2vsUDmsXOfUENOyMqADC6p1M3h33tsu
rY15k9qMSpG9OX_IJAXmxzAh_tWiZOwk2K4yxH9tS3Lq1yX8C1EWmeRDkK2a
hecG85-oLKQt5VEpWHKmjOi_gJSdSgqcN96X52esAQ",
"p":"2rnSOV4hKSN8sS4CgcQHFbs08XboFDqKum3sc4h3GRxrTmQdl1ZK9uw-PIHf
QP0FkxXVrx-WE-ZEbrqivH_2iCLUS7wAl6XvARt1KkIaUxPPSYB9yk31s0Q8
UK96E3_OrADAYtAJs-M3JxCLfNgqh56HDnETTQhH3rCT5T3yJws",
"q":"1u_RiFDP7LBYh3N4GXLT9OpSKYP0uQZyiaZwBtOCBNJgQxaj10RWjsZu0c6I
edis4S7B_coSKB0Kj9PaPaBzg-IySRvvcQuPamQu66riMhjVtG6TlV8CLCYK
rYl52ziqK0E_ym2QnkwsUX7eYTB7LbAHRK9GqocDE5B0f808I4s",
"dp":"KkMTWqBUefVwZ2_Dbj1pPQqyHSHjj90L5x_MOzqYAJMcLMZtbUtwKqvVDq3
tbEo3ZIcohbDtt6SbfmWzggabpQxNxuBpoOOf_a_HgMXK_lhqigI4y_kqS1w
Y52IwjUn5rgRrJ-yYo1h41KR-vz2pYhEAeYrhttWtxVqLCRViD6c",
"dq":"AvfS0-gRxvn0bwJoMSnFxYcK1WnuEjQFluMGfwGitQBWtfZ1Er7t1xDkbN9
GQTB9yqpDoYaN06H7CFtrkxhJIBQaj6nkF5KKS3TQtQ5qCzkOkmxIe3KRbBy
mXxkb5qwUpX5ELD5xFc6FeiafWYY63TmmEAu_lRFCOJ3xDea-ots",
"qi":"lSQi-w9CpyUReMErP1RsBLk7wNtOvs5EQpPqmuMvqW57NBUczScEoPwmUqq
abu9V0-Py4dQ57_bapoKRu1R90bvuFnU63SHWEFglZQvJDMeAvmj4sm-Fp0o
Yu_neotgQ0hzbI5gry7ajdYy9-2lNx_76aBZoOUu9HCJ-UsfSOI8"
}
이 예시에서 사용된 평문을 나타내는 옥텟들(JSON 배열 표기법 사용)은 다음과 같습니다:
[123, 34, 107, 116, 121, 34, 58, 34, 82, 83, 65, 34, 44, 34, 107,
105, 100, 34, 58, 34, 106, 117, 108, 105, 101, 116, 64, 99, 97, 112,
117, 108, 101, 116, 46, 108, 105, 116, 34, 44, 34, 117, 115, 101, 34,
58, 34, 101, 110, 99, 34, 44, 34, 110, 34, 58, 34, 116, 54, 81, 56,
80, 87, 83, 105, 49, 100, 107, 74, 106, 57, 104, 84, 80, 56, 104, 78,
Jones Standards Track [Page 29]
RFC 7517 JSON Web Key (JWK) May 2015
89, 70, 108, 118, 97, 100, 77, 55, 68, 102, 108, 87, 57, 109, 87,
101, 112, 79, 74, 104, 74, 54, 54, 119, 55, 110, 121, 111, 75, 49,
103, 80, 78, 113, 70, 77, 83, 81, 82, 121, 79, 49, 50, 53, 71, 112,
45, 84, 69, 107, 111, 100, 104, 87, 114, 48, 105, 117, 106, 106, 72,
86, 120, 55, 66, 99, 86, 48, 108, 108, 83, 52, 119, 53, 65, 67, 71,
103, 80, 114, 99, 65, 100, 54, 90, 99, 83, 82, 48, 45, 73, 113, 111,
109, 45, 81, 70, 99, 78, 80, 56, 83, 106, 103, 48, 56, 54, 77, 119,
111, 113, 81, 85, 95, 76, 89, 121, 119, 108, 65, 71, 90, 50, 49, 87,
83, 100, 83, 95, 80, 69, 82, 121, 71, 70, 105, 78, 110, 106, 51, 81,
81, 108, 79, 56, 89, 110, 115, 53, 106, 67, 116, 76, 67, 82, 119, 76,
72, 76, 48, 80, 98, 49, 102, 69, 118, 52, 53, 65, 117, 82, 73, 117,
85, 102, 86, 99, 80, 121, 83, 66, 87, 89, 110, 68, 121, 71, 120, 118,
106, 89, 71, 68, 83, 77, 45, 65, 113, 87, 83, 57, 122, 73, 81, 50,
90, 105, 108, 103, 84, 45, 71, 113, 85, 109, 105, 112, 103, 48, 88,
79, 67, 48, 67, 99, 50, 48, 114, 103, 76, 101, 50, 121, 109, 76, 72,
106, 112, 72, 99, 105, 67, 75, 86, 65, 98, 89, 53, 45, 76, 51, 50,
45, 108, 83, 101, 90, 79, 45, 79, 115, 54, 85, 49, 53, 95, 97, 88,
114, 107, 57, 71, 119, 56, 99, 80, 85, 97, 88, 49, 95, 73, 56, 115,
76, 71, 117, 83, 105, 86, 100, 116, 51, 67, 95, 70, 110, 50, 80, 90,
51, 90, 56, 105, 55, 52, 52, 70, 80, 70, 71, 71, 99, 71, 49, 113,
115, 50, 87, 122, 45, 81, 34, 44, 34, 101, 34, 58, 34, 65, 81, 65,
66, 34, 44, 34, 100, 34, 58, 34, 71, 82, 116, 98, 73, 81, 109, 104,
79, 90, 116, 121, 115, 122, 102, 103, 75, 100, 103, 52, 117, 95, 78,
45, 82, 95, 109, 90, 71, 85, 95, 57, 107, 55, 74, 81, 95, 106, 110,
49, 68, 110, 102, 84, 117, 77, 100, 83, 78, 112, 114, 84, 101, 97,
83, 84, 121, 87, 102, 83, 78, 107, 117, 97, 65, 119, 110, 79, 69, 98,
73, 81, 86, 121, 49, 73, 81, 98, 87, 86, 86, 50, 53, 78, 89, 51, 121,
98, 99, 95, 73, 104, 85, 74, 116, 102, 114, 105, 55, 98, 65, 88, 89,
69, 82, 101, 87, 97, 67, 108, 51, 104, 100, 108, 80, 75, 88, 121, 57,
85, 118, 113, 80, 89, 71, 82, 48, 107, 73, 88, 84, 81, 82, 113, 110,
115, 45, 100, 86, 74, 55, 106, 97, 104, 108, 73, 55, 76, 121, 99,
107, 114, 112, 84, 109, 114, 77, 56, 100, 87, 66, 111, 52, 95, 80,
77, 97, 101, 110, 78, 110, 80, 105, 81, 103, 79, 48, 120, 110, 117,
84, 111, 120, 117, 116, 82, 90, 74, 102, 74, 118, 71, 52, 79, 120,
52, 107, 97, 51, 71, 79, 82, 81, 100, 57, 67, 115, 67, 90, 50, 118,
115, 85, 68, 109, 115, 88, 79, 102, 85, 69, 78, 79, 121, 77, 113, 65,
68, 67, 54, 112, 49, 77, 51, 104, 51, 51, 116, 115, 117, 114, 89, 49,
53, 107, 57, 113, 77, 83, 112, 71, 57, 79, 88, 95, 73, 74, 65, 88,
109, 120, 122, 65, 104, 95, 116, 87, 105, 90, 79, 119, 107, 50, 75,
52, 121, 120, 72, 57, 116, 83, 51, 76, 113, 49, 121, 88, 56, 67, 49,
69, 87, 109, 101, 82, 68, 107, 75, 50, 97, 104, 101, 99, 71, 56, 53,
45, 111, 76, 75, 81, 116, 53, 86, 69, 112, 87, 72, 75, 109, 106, 79,
105, 95, 103, 74, 83, 100, 83, 103, 113, 99, 78, 57, 54, 88, 53, 50,
101, 115, 65, 81, 34, 44, 34, 112, 34, 58, 34, 50, 114, 110, 83, 79,
86, 52, 104, 75, 83, 78, 56, 115, 83, 52, 67, 103, 99, 81, 72, 70,
98, 115, 48, 56, 88, 98, 111, 70, 68, 113, 75, 117, 109, 51, 115, 99,
52, 104, 51, 71, 82, 120, 114, 84, 109, 81, 100, 108, 49, 90, 75, 57,
117, 119, 45, 80, 73, 72, 102, 81, 80, 48, 70, 107, 120, 88, 86, 114,
Jones Standards Track [Page 30]
RFC 7517 JSON Web Key (JWK) May 2015
120, 45, 87, 69, 45, 90, 69, 98, 114, 113, 105, 118, 72, 95, 50, 105,
67, 76, 85, 83, 55, 119, 65, 108, 54, 88, 118, 65, 82, 116, 49, 75,
107, 73, 97, 85, 120, 80, 80, 83, 89, 66, 57, 121, 107, 51, 49, 115,
48, 81, 56, 85, 75, 57, 54, 69, 51, 95, 79, 114, 65, 68, 65, 89, 116,
65, 74, 115, 45, 77, 51, 74, 120, 67, 76, 102, 78, 103, 113, 104, 53,
54, 72, 68, 110, 69, 84, 84, 81, 104, 72, 51, 114, 67, 84, 53, 84,
51, 121, 74, 119, 115, 34, 44, 34, 113, 34, 58, 34, 49, 117, 95, 82,
105, 70, 68, 80, 55, 76, 66, 89, 104, 51, 78, 52, 71, 88, 76, 84, 57,
79, 112, 83, 75, 89, 80, 48, 117, 81, 90, 121, 105, 97, 90, 119, 66,
116, 79, 67, 66, 78, 74, 103, 81, 120, 97, 106, 49, 48, 82, 87, 106,
115, 90, 117, 48, 99, 54, 73, 101, 100, 105, 115, 52, 83, 55, 66, 95,
99, 111, 83, 75, 66, 48, 75, 106, 57, 80, 97, 80, 97, 66, 122, 103,
45, 73, 121, 83, 82, 118, 118, 99, 81, 117, 80, 97, 109, 81, 117, 54,
54, 114, 105, 77, 104, 106, 86, 116, 71, 54, 84, 108, 86, 56, 67, 76,
67, 89, 75, 114, 89, 108, 53, 50, 122, 105, 113, 75, 48, 69, 95, 121,
109, 50, 81, 110, 107, 119, 115, 85, 88, 55, 101, 89, 84, 66, 55, 76,
98, 65, 72, 82, 75, 57, 71, 113, 111, 99, 68, 69, 53, 66, 48, 102,
56, 48, 56, 73, 52, 115, 34, 44, 34, 100, 112, 34, 58, 34, 75, 107,
77, 84, 87, 113, 66, 85, 101, 102, 86, 119, 90, 50, 95, 68, 98, 106,
49, 112, 80, 81, 113, 121, 72, 83, 72, 106, 106, 57, 48, 76, 53, 120,
95, 77, 79, 122, 113, 89, 65, 74, 77, 99, 76, 77, 90, 116, 98, 85,
116, 119, 75, 113, 118, 86, 68, 113, 51, 116, 98, 69, 111, 51, 90,
73, 99, 111, 104, 98, 68, 116, 116, 54, 83, 98, 102, 109, 87, 122,
103, 103, 97, 98, 112, 81, 120, 78, 120, 117, 66, 112, 111, 79, 79,
102, 95, 97, 95, 72, 103, 77, 88, 75, 95, 108, 104, 113, 105, 103,
73, 52, 121, 95, 107, 113, 83, 49, 119, 89, 53, 50, 73, 119, 106, 85,
110, 53, 114, 103, 82, 114, 74, 45, 121, 89, 111, 49, 104, 52, 49,
75, 82, 45, 118, 122, 50, 112, 89, 104, 69, 65, 101, 89, 114, 104,
116, 116, 87, 116, 120, 86, 113, 76, 67, 82, 86, 105, 68, 54, 99, 34,
44, 34, 100, 113, 34, 58, 34, 65, 118, 102, 83, 48, 45, 103, 82, 120,
118, 110, 48, 98, 119, 74, 111, 77, 83, 110, 70, 120, 89, 99, 75, 49,
87, 110, 117, 69, 106, 81, 70, 108, 117, 77, 71, 102, 119, 71, 105,
116, 81, 66, 87, 116, 102, 90, 49, 69, 114, 55, 116, 49, 120, 68,
107, 98, 78, 57, 71, 81, 84, 66, 57, 121, 113, 112, 68, 111, 89, 97,
78, 48, 54, 72, 55, 67, 70, 116, 114, 107, 120, 104, 74, 73, 66, 81,
97, 106, 54, 110, 107, 70, 53, 75, 75, 83, 51, 84, 81, 116, 81, 53,
113, 67, 122, 107, 79, 107, 109, 120, 73, 101, 51, 75, 82, 98, 66,
121, 109, 88, 120, 107, 98, 53, 113, 119, 85, 112, 88, 53, 69, 76,
68, 53, 120, 70, 99, 54, 70, 101, 105, 97, 102, 87, 89, 89, 54, 51,
84, 109, 109, 69, 65, 117, 95, 108, 82, 70, 67, 79, 74, 51, 120, 68,
101, 97, 45, 111, 116, 115, 34, 44, 34, 113, 105, 34, 58, 34, 108,
83, 81, 105, 45, 119, 57, 67, 112, 121, 85, 82, 101, 77, 69, 114, 80,
49, 82, 115, 66, 76, 107, 55, 119, 78, 116, 79, 118, 115, 53, 69, 81,
112, 80, 113, 109, 117, 77, 118, 113, 87, 53, 55, 78, 66, 85, 99,
122, 83, 99, 69, 111, 80, 119, 109, 85, 113, 113, 97, 98, 117, 57,
86, 48, 45, 80, 121, 52, 100, 81, 53, 55, 95, 98, 97, 112, 111, 75,
82, 117, 49, 82, 57, 48, 98, 118, 117, 70, 110, 85, 54, 51, 83, 72,
87, 69, 70, 103, 108, 90, 81, 118, 74, 68, 77, 101, 65, 118, 109,
Jones Standards Track [Page 31]
RFC 7517 JSON Web Key (JWK) May 2015
106, 52, 115, 109, 45, 70, 112, 48, 111, 89, 117, 95, 110, 101, 111,
116, 103, 81, 48, 104, 122, 98, 73, 53, 103, 114, 121, 55, 97, 106,
100, 89, 121, 57, 45, 50, 108, 78, 120, 95, 55, 54, 97, 66, 90, 111,
79, 85, 117, 57, 72, 67, 74, 45, 85, 115, 102, 83, 79, 73, 56, 34,
125]
C.2. JOSE 헤더
다음 예시 JWE 보호 헤더는 다음을 선언합니다:
o 콘텐츠 암호화 키(CEK)가 수신자에게 JWE 암호화 키를 생성하기 위해
PBES2-HS256+A128KW 알고리즘으로 암호화된다는 것,
o Salt 입력("p2s") 값이 [217, 96, 147, 112, 150, 117, 70,
247, 127, 8, 155, 137, 174, 42, 80, 215] 라는 것,
o 반복 횟수("p2c") 값이 4096 이라는 것,
o 평문에 대해 인증된 암호화가 AES_128_CBC_HMAC_SHA_256 알고리즘으로
수행되어 암호문과 인증 태그를 생성한다는 것, 그리고
o 콘텐츠 타입이 application/jwk+json 이라는 것.
{
"alg":"PBES2-HS256+A128KW",
"p2s":"2WCTcJZ1Rvd_CJuJripQ1w",
"p2c":4096,
"enc":"A128CBC-HS256",
"cty":"jwk+json"
}
이 JWE 보호 헤더를 BASE64URL(UTF8(JWE Protected Header))로 인코딩하면
다음 값이 됩니다(표시 용도의 줄 바꿈 포함):
eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2ZF9DSn
VKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiY3R5Ijoi
andrK2pzb24ifQ
C.3. 콘텐츠 암호화 키 (CEK)
256비트의 임의의 콘텐츠 암호화 키(CEK)를 생성합니다. 이 예시에서 값은
다음과 같습니다(JSON 배열 표기법 사용):
[111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112,
161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48,
253, 182]
Jones Standards Track [Page 32]
RFC 7517 JSON Web Key (JWK) May 2015
C.4. 키 유도
PBKDF2 알고리즘(HMAC SHA-256)을 사용하여 지정된 Salt 및 반복 횟수 값을
사용하고 128비트 출력 키 크기를 요청하여 PBKDF2 유도 키를 생성합니다.
이 예시는 다음 패스프레이즈를 사용합니다:
Thus from my lips, by yours, my sin is purged.
패스프레이즈를 나타내는 옥텟들은 다음과 같습니다:
[84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108,
105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32,
109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103,
101, 100, 46]
Salt 값(UTF8(Alg) || 0x00 || Salt Input)은 다음과 같습니다:
[80, 66, 69, 83, 50, 45, 72, 83, 50, 53, 54, 43, 65, 49, 50, 56, 75,
87, 0, 217, 96, 147, 112, 150, 117, 70, 247, 127, 8, 155, 137, 174,
42, 80, 215].
결과적인 PBKDF2 유도 키 값은 다음과 같습니다:
[110, 171, 169, 92, 129, 92, 109, 117, 233, 242, 116, 233, 170, 14,
24, 75]
C.5. 키 암호화
PBKDF2 유도 키를 사용하여 "A128KW" 알고리즘으로 CEK를 암호화합니다.
결과적인 JWE 암호화 키 값은 다음과 같습니다:
[78, 186, 151, 59, 11, 141, 81, 240, 213, 245, 83, 211, 53, 188, 134,
188, 66, 125, 36, 200, 222, 124, 5, 103, 249, 52, 117, 184, 140, 81,
246, 158, 161, 177, 20, 33, 245, 57, 59, 4]
이 JWE 암호화 키를 BASE64URL(JWE Encrypted Key)로 인코딩하면 다음 값이 됩니다:
TrqXOwuNUfDV9VPTNbyGvEJ9JMjefAVn-TR1uIxR9p6hsRQh9Tk7BA
C.6. 초기화 벡터
128비트의 임의 JWE 초기화 벡터(IV)를 생성합니다. 이 예시에서 값은 다음과 같습니다:
[97, 239, 99, 214, 171, 54, 216, 57, 145, 72, 7, 93, 34, 31, 149,
156]
Jones Standards Track [Page 33]
RFC 7517 JSON Web Key (JWK) May 2015
이 JWE 초기화 벡터를 BASE64URL(JWE Initialization Vector)로 인코딩하면 다음 값이 됩니다:
Ye9j1qs22DmRSAddIh-VnA
C.7. 추가 인증 데이터
추가 인증 데이터(Additional Authenticated Data) 암호화 매개변수를
ASCII(BASE64URL(UTF8(JWE Protected Header)))로 둡니다. 이 값은 다음과 같습니다:
[123, 34, 97, 108, 103, 34, 58, 34, 80, 66, 69, 83, 50, 45, 72, 83,
50, 53, 54, 43, 65, 49, 50, 56, 75, 87, 34, 44, 34, 112, 50, 115, 34,
58, 34, 50, 87, 67, 84, 99, 74, 90, 49, 82, 118, 100, 95, 67, 74,
117, 74, 114, 105, 112, 81, 49, 119, 34, 44, 34, 112, 50, 99, 34, 58,
52, 48, 57, 54, 44, 34, 101, 110, 99, 34, 58, 34, 65, 49, 50, 56, 67,
66, 67, 45, 72, 83, 50, 53, 54, 34, 44, 34, 99, 116, 121, 34, 58, 34,
106, 119, 107, 43, 106, 115, 111, 110, 34, 125]
C.8. 콘텐츠 암호화
CEK를 암호화 키로 사용하고, 앞의 JWE 초기화 벡터 및 추가 인증 데이터를
사용하여 AES_128_CBC_HMAC_SHA_256 알고리즘으로 평문에 대해 인증된 암호화를
수행합니다. 결과적인 암호문은 다음과 같습니다:
[3, 8, 65, 242, 92, 107, 148, 168, 197, 159, 77, 139, 25, 97, 42,
131, 110, 199, 225, 56, 61, 127, 38, 64, 108, 91, 247, 167, 150, 98,
112, 122, 99, 235, 132, 50, 28, 46, 56, 170, 169, 89, 220, 145, 38,
157, 148, 224, 66, 140, 8, 169, 146, 117, 222, 54, 242, 28, 31, 11,
129, 227, 226, 169, 66, 117, 133, 254, 140, 216, 115, 203, 131, 60,
60, 47, 233, 132, 121, 13, 35, 188, 53, 19, 172, 77, 59, 54, 211,
158, 172, 25, 60, 111, 0, 80, 201, 158, 160, 210, 68, 55, 12, 67,
136, 130, 87, 216, 197, 95, 62, 20, 155, 205, 5, 140, 27, 168, 221,
65, 114, 78, 157, 254, 46, 206, 182, 52, 135, 87, 239, 3, 34, 186,
126, 220, 151, 17, 33, 237, 57, 96, 172, 183, 58, 45, 248, 103, 241,
142, 136, 7, 53, 16, 173, 181, 7, 93, 92, 252, 1, 53, 212, 242, 8,
255, 11, 239, 181, 24, 148, 136, 111, 24, 161, 244, 23, 106, 69, 157,
215, 243, 189, 240, 166, 169, 249, 72, 38, 201, 99, 223, 173, 229, 9,
222, 82, 79, 157, 176, 248, 85, 239, 121, 163, 1, 31, 48, 98, 206,
61, 249, 104, 216, 201, 227, 105, 48, 194, 193, 10, 36, 160, 159,
241, 166, 84, 54, 188, 211, 243, 242, 40, 46, 45, 193, 193, 160, 169,
101, 201, 1, 73, 47, 105, 142, 88, 28, 42, 132, 26, 61, 58, 63, 142,
243, 77, 26, 179, 153, 166, 46, 203, 208, 49, 55, 229, 34, 178, 4,
109, 180, 204, 204, 115, 1, 103, 193, 5, 91, 215, 214, 195, 1, 110,
208, 53, 144, 36, 105, 12, 54, 25, 129, 101, 15, 183, 150, 250, 147,
115, 227, 58, 250, 5, 128, 232, 63, 15, 14, 19, 141, 124, 253, 142,
137, 189, 135, 26, 44, 240, 27, 88, 132, 105, 127, 6, 71, 37, 41,
124, 187, 165, 140, 34, 200, 123, 80, 228, 24, 231, 176, 132, 171,
Jones Standards Track [Page 34]
RFC 7517 JSON Web Key (JWK) May 2015
138, 145, 152, 116, 224, 50, 141, 51, 147, 91, 186, 7, 246, 106, 217,
148, 244, 227, 244, 45, 220, 121, 165, 224, 148, 181, 17, 181, 128,
197, 101, 237, 11, 169, 229, 149, 199, 78, 56, 15, 14, 190, 91, 216,
222, 247, 213, 74, 40, 8, 96, 20, 168, 119, 96, 26, 24, 52, 37, 82,
127, 57, 176, 147, 118, 59, 7, 224, 33, 117, 72, 155, 29, 82, 26,
215, 189, 140, 119, 28, 152, 118, 93, 222, 194, 192, 148, 115, 83,
253, 216, 212, 108, 88, 83, 175, 172, 220, 97, 79, 110, 42, 223, 170,
161, 34, 164, 144, 193, 76, 122, 92, 160, 41, 178, 175, 6, 35, 96,
113, 96, 158, 90, 129, 101, 26, 45, 70, 180, 189, 230, 15, 5, 247,
150, 209, 94, 171, 26, 13, 142, 212, 129, 1, 176, 5, 0, 112, 203,
174, 185, 119, 76, 233, 189, 54, 172, 189, 245, 223, 253, 205, 12,
88, 9, 126, 157, 225, 90, 40, 229, 191, 63, 30, 160, 224, 69, 3, 140,
109, 70, 89, 37, 213, 245, 194, 210, 180, 188, 63, 210, 139, 221, 2,
144, 200, 20, 177, 216, 29, 227, 242, 106, 12, 135, 142, 139, 144,
82, 225, 162, 171, 176, 108, 99, 6, 43, 193, 161, 116, 234, 216, 1,
242, 21, 124, 162, 98, 205, 124, 193, 38, 12, 242, 90, 101, 76, 204,
184, 124, 58, 180, 16, 240, 26, 76, 195, 250, 212, 191, 185, 191, 97,
198, 186, 73, 225, 75, 14, 90, 123, 121, 172, 101, 50, 160, 221, 141,
253, 205, 126, 77, 9, 87, 198, 110, 104, 182, 141, 120, 51, 25, 232,
3, 32, 80, 6, 156, 8, 18, 4, 135, 221, 142, 25, 135, 2, 129, 132,
115, 227, 74, 141, 28, 119, 11, 141, 117, 134, 198, 62, 150, 254, 97,
75, 197, 251, 99, 89, 204, 224, 226, 67, 83, 175, 89, 0, 81, 29, 38,
207, 89, 140, 255, 197, 177, 164, 128, 62, 116, 224, 180, 109, 169,
28, 2, 59, 176, 130, 252, 44, 178, 81, 24, 181, 176, 75, 44, 61, 91,
12, 37, 21, 255, 83, 130, 197, 16, 231, 60, 217, 56, 131, 118, 168,
202, 58, 52, 84, 124, 162, 185, 174, 162, 226, 242, 112, 68, 246,
202, 16, 208, 52, 154, 58, 129, 80, 102, 33, 171, 6, 186, 177, 14,
195, 88, 136, 6, 0, 155, 28, 100, 162, 207, 162, 222, 117, 248, 170,
208, 114, 87, 31, 57, 176, 33, 57, 83, 253, 12, 168, 110, 194, 59,
22, 86, 48, 227, 196, 22, 176, 218, 122, 149, 21, 249, 195, 178, 174,
250, 20, 34, 120, 60, 139, 201, 99, 40, 18, 177, 17, 54, 54, 6, 3,
222, 128, 160, 88, 11, 27, 0, 81, 192, 36, 41, 169, 146, 8, 47, 64,
136, 28, 64, 209, 67, 135, 202, 20, 234, 182, 91, 204, 146, 195, 187,
0, 72, 77, 11, 111, 152, 204, 252, 177, 212, 89, 33, 50, 132, 184,
44, 183, 186, 19, 250, 69, 176, 201, 102, 140, 14, 143, 212, 212,
160, 123, 208, 185, 27, 155, 68, 77, 133, 198, 2, 126, 155, 215, 22,
91, 30, 217, 176, 172, 244, 156, 174, 143, 75, 90, 21, 102, 1, 160,
59, 253, 188, 88, 57, 185, 197, 83, 24, 22, 180, 174, 47, 207, 52, 1,
141, 146, 119, 233, 68, 228, 224, 228, 193, 248, 155, 202, 90, 7,
213, 88, 33, 108, 107, 14, 86, 8, 120, 250, 58, 142, 35, 164, 238,
221, 219, 35, 123, 88, 199, 192, 143, 104, 83, 17, 166, 243, 247, 11,
166, 67, 68, 204, 132, 23, 110, 103, 228, 14, 55, 122, 88, 57, 180,
178, 237, 52, 130, 214, 245, 102, 123, 67, 73, 175, 1, 127, 112, 148,
94, 132, 164, 197, 153, 217, 87, 25, 89, 93, 63, 22, 66, 166, 90,
251, 101, 10, 145, 66, 17, 124, 36, 255, 165, 226, 97, 16, 86, 112,
154, 88, 105, 253, 56, 209, 229, 122, 103, 51, 24, 228, 190, 3, 236,
48, 182, 121, 176, 140, 128, 117, 87, 251, 224, 37, 23, 248, 21, 218,
85, 251, 136, 84, 147, 143, 144, 46, 155, 183, 251, 89, 86, 23, 26,
Jones Standards Track [Page 35]
RFC 7517 JSON Web Key (JWK) May 2015
237, 100, 167, 32, 130, 173, 237, 89, 55, 110, 70, 142, 127, 65, 230,
208, 109, 69, 19, 253, 84, 130, 130, 193, 92, 58, 108, 150, 42, 136,
249, 234, 86, 241, 182, 19, 117, 246, 26, 181, 92, 101, 155, 44, 103,
235, 173, 30, 140, 90, 29, 183, 190, 77, 53, 206, 127, 5, 87, 8, 187,
184, 92, 4, 157, 22, 18, 105, 251, 39, 88, 182, 181, 103, 148, 233,
6, 63, 70, 188, 7, 101, 216, 127, 77, 31, 12, 233, 7, 147, 106, 30,
150, 77, 145, 13, 205, 48, 56, 245, 220, 89, 252, 127, 51, 180, 36,
31, 55, 18, 214, 230, 254, 217, 197, 65, 247, 27, 215, 117, 247, 108,
157, 121, 11, 63, 150, 195, 83, 6, 134, 242, 41, 24, 105, 204, 5, 63,
192, 14, 159, 113, 72, 140, 128, 51, 215, 80, 215, 39, 149, 94, 79,
128, 34, 5, 129, 82, 83, 121, 187, 37, 146, 27, 32, 177, 167, 71, 9,
195, 30, 199, 196, 205, 252, 207, 69, 8, 120, 27, 190, 51, 43, 75,
249, 234, 167, 116, 206, 203, 199, 43, 108, 87, 48, 155, 140, 228,
210, 85, 25, 161, 96, 67, 8, 205, 64, 39, 75, 88, 44, 238, 227, 16,
0, 100, 93, 129, 18, 4, 149, 50, 68, 72, 99, 35, 111, 254, 27, 102,
175, 108, 233, 87, 181, 44, 169, 18, 139, 79, 208, 14, 202, 192, 5,
162, 222, 231, 149, 24, 211, 49, 120, 101, 39, 206, 87, 147, 204,
200, 251, 104, 115, 5, 127, 117, 195, 79, 151, 18, 224, 52, 0, 245,
4, 85, 255, 103, 217, 0, 116, 198, 80, 91, 167, 192, 154, 199, 197,
149, 237, 51, 2, 131, 30, 226, 95, 105, 48, 68, 135, 208, 144, 120,
176, 145, 157, 8, 171, 80, 94, 61, 92, 92, 220, 157, 13, 138, 51, 23,
185, 124, 31, 77, 1, 87, 241, 43, 239, 55, 122, 86, 210, 48, 208,
204, 112, 144, 80, 147, 106, 219, 47, 253, 31, 134, 176, 16, 135,
219, 95, 17, 129, 83, 236, 125, 136, 112, 86, 228, 252, 71, 129, 218,
174, 156, 236, 12, 27, 159, 11, 138, 252, 253, 207, 31, 115, 214,
118, 239, 203, 16, 211, 205, 99, 22, 51, 163, 107, 162, 246, 199, 67,
127, 34, 108, 197, 53, 117, 58, 199, 3, 190, 74, 70, 190, 65, 235,
175, 97, 157, 215, 252, 189, 245, 100, 229, 248, 46, 90, 126, 237, 4,
159, 128, 58, 7, 156, 236, 69, 191, 85, 240, 179, 224, 249, 152, 49,
195, 223, 60, 78, 186, 157, 155, 217, 58, 105, 116, 164, 217, 111,
215, 150, 218, 252, 84, 86, 248, 140, 240, 226, 61, 106, 208, 95, 60,
163, 6, 0, 235, 253, 162, 96, 62, 234, 251, 249, 35, 21, 7, 211, 233,
86, 50, 33, 203, 67, 248, 60, 190, 123, 48, 167, 226, 90, 191, 71,
56, 183, 165, 17, 85, 76, 238, 140, 211, 168, 53, 223, 194, 4, 97,
149, 156, 120, 137, 76, 33, 229, 243, 194, 208, 198, 202, 139, 28,
114, 46, 224, 92, 254, 83, 100, 134, 158, 92, 70, 78, 61, 62, 138,
24, 173, 216, 66, 198, 70, 254, 47, 59, 193, 53, 6, 139, 19, 153,
253, 28, 199, 122, 160, 27, 67, 234, 209, 227, 139, 4, 50, 7, 178,
183, 89, 252, 32, 128, 137, 55, 52, 29, 89, 12, 111, 42, 181, 51,
170, 132, 132, 207, 170, 228, 254, 178, 213, 0, 136, 175, 8]
결과 인증 태그 값은 다음과 같습니다:
[208, 113, 102, 132, 236, 236, 67, 223, 39, 53, 98, 99, 32, 121, 17,
236]
Jones Standards Track [Page 36]
RFC 7517 JSON Web Key (JWK) May 2015
이 JWE 암호문을 BASE64URL(JWE Ciphertext)로 인코딩하면 다음 값이 됩니다(표시 용도의
줄 바꿈 포함):
AwhB8lxrlKjFn02LGWEqg27H4Tg9fyZAbFv3p5ZicHpj64QyHC44qqlZ3JEmnZTgQo
wIqZJ13jbyHB8LgePiqUJ1hf6M2HPLgzw8L-mEeQ0jvDUTrE07NtOerBk8bwBQyZ6g
0kQ3DEOIglfYxV8-FJvNBYwbqN1Bck6d_i7OtjSHV-8DIrp-3JcRIe05YKy3Oi34Z_
GOiAc1EK21B11c_AE11PII_wvvtRiUiG8YofQXakWd1_O98Kap-UgmyWPfreUJ3lJP
nbD4Ve95owEfMGLOPflo2MnjaTDCwQokoJ_xplQ2vNPz8iguLcHBoKllyQFJL2mOWB
wqhBo9Oj-O800as5mmLsvQMTflIrIEbbTMzHMBZ8EFW9fWwwFu0DWQJGkMNhmBZQ-3
lvqTc-M6-gWA6D8PDhONfP2Oib2HGizwG1iEaX8GRyUpfLuljCLIe1DkGOewhKuKkZ
h04DKNM5Nbugf2atmU9OP0Ldx5peCUtRG1gMVl7Qup5ZXHTjgPDr5b2N731UooCGAU
qHdgGhg0JVJ_ObCTdjsH4CF1SJsdUhrXvYx3HJh2Xd7CwJRzU_3Y1GxYU6-s3GFPbi
rfqqEipJDBTHpcoCmyrwYjYHFgnlqBZRotRrS95g8F95bRXqsaDY7UgQGwBQBwy665
d0zpvTasvfXf_c0MWAl-neFaKOW_Px6g4EUDjG1GWSXV9cLStLw_0ovdApDIFLHYHe
PyagyHjouQUuGiq7BsYwYrwaF06tgB8hV8omLNfMEmDPJaZUzMuHw6tBDwGkzD-tS_
ub9hxrpJ4UsOWnt5rGUyoN2N_c1-TQlXxm5oto14MxnoAyBQBpwIEgSH3Y4ZhwKBhH
PjSo0cdwuNdYbGPpb-YUvF-2NZzODiQ1OvWQBRHSbPWYz_xbGkgD504LRtqRwCO7CC
_CyyURi1sEssPVsMJRX_U4LFEOc82TiDdqjKOjRUfKK5rqLi8nBE9soQ0DSaOoFQZi
GrBrqxDsNYiAYAmxxkos-i3nX4qtByVx85sCE5U_0MqG7COxZWMOPEFrDaepUV-cOy
rvoUIng8i8ljKBKxETY2BgPegKBYCxsAUcAkKamSCC9AiBxA0UOHyhTqtlvMksO7AE
hNC2-YzPyx1FkhMoS4LLe6E_pFsMlmjA6P1NSge9C5G5tETYXGAn6b1xZbHtmwrPSc
ro9LWhVmAaA7_bxYObnFUxgWtK4vzzQBjZJ36UTk4OTB-JvKWgfVWCFsaw5WCHj6Oo
4jpO7d2yN7WMfAj2hTEabz9wumQ0TMhBduZ-QON3pYObSy7TSC1vVme0NJrwF_cJRe
hKTFmdlXGVldPxZCplr7ZQqRQhF8JP-l4mEQVnCaWGn9ONHlemczGOS-A-wwtnmwjI
B1V_vgJRf4FdpV-4hUk4-QLpu3-1lWFxrtZKcggq3tWTduRo5_QebQbUUT_VSCgsFc
OmyWKoj56lbxthN19hq1XGWbLGfrrR6MWh23vk01zn8FVwi7uFwEnRYSafsnWLa1Z5
TpBj9GvAdl2H9NHwzpB5NqHpZNkQ3NMDj13Fn8fzO0JB83Etbm_tnFQfcb13X3bJ15
Cz-Ww1MGhvIpGGnMBT_ADp9xSIyAM9dQ1yeVXk-AIgWBUlN5uyWSGyCxp0cJwx7HxM
38z0UIeBu-MytL-eqndM7LxytsVzCbjOTSVRmhYEMIzUAnS1gs7uMQAGRdgRIElTJE
SGMjb_4bZq9s6Ve1LKkSi0_QDsrABaLe55UY0zF4ZSfOV5PMyPtocwV_dcNPlxLgNA
D1BFX_Z9kAdMZQW6fAmsfFle0zAoMe4l9pMESH0JB4sJGdCKtQXj1cXNydDYozF7l8
H00BV_Er7zd6VtIw0MxwkFCTatsv_R-GsBCH218RgVPsfYhwVuT8R4HarpzsDBufC4
r8_c8fc9Z278sQ081jFjOja6L2x0N_ImzFNXU6xwO-Ska-QeuvYZ3X_L31ZOX4Llp-
7QSfgDoHnOxFv1Xws-D5mDHD3zxOup2b2TppdKTZb9eW2vxUVviM8OI9atBfPKMGAO
v9omA-6vv5IxUH0-lWMiHLQ_g8vnswp-Jav0c4t6URVUzujNOoNd_CBGGVnHiJTCHl
88LQxsqLHHIu4Fz-U2SGnlxGTj0-ihit2ELGRv4vO8E1BosTmf0cx3qgG0Pq0eOLBD
IHsrdZ_CCAiTc0HVkMbyq1M6qEhM-q5P6y1QCIrwg
이 JWE 인증 태그를 BASE64URL(JWE Authentication Tag)로 인코딩하면 다음 값이 됩니다:
0HFmhOzsQ98nNWJjIHkR7A
Jones Standards Track [Page 37]
RFC 7517 JSON Web Key (JWK) May 2015
C.9. 완전한 표현 조립
최종 표현을 조립합니다: 이 결과의 JWE 컴팩트 직렬화는
[JWE]의 섹션 7.1에 정의된 바와 같이,
BASE64URL(UTF8(JWE Protected Header)) || '.' || BASE64URL(JWE
Encrypted Key) || '.' || BASE64URL(JWE Initialization Vector) || '.'
|| BASE64URL(JWE Ciphertext) || '.' || BASE64URL(JWE Authentication
Tag) 문자열입니다.
Jones Standards Track [Page 38]
RFC 7517 JSON Web Key (JWK) May 2015
이 예시의 최종 결과는(표시 용도의 줄 바꿈 포함) 다음과 같습니다:
eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2ZF9DSn
VKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiY3R5Ijoi
andrK2pzb24ifQ.
TrqXOwuNUfDV9VPTNbyGvEJ9JMjefAVn-TR1uIxR9p6hsRQh9Tk7BA.
Ye9j1qs22DmRSAddIh-VnA.
AwhB8lxrlKjFn02LGWEqg27H4Tg9fyZAbFv3p5ZicHpj64QyHC44qqlZ3JEmnZTgQo
wIqZJ13jbyHB8LgePiqUJ1hf6M2HPLgzw8L-mEeQ0jvDUTrE07NtOerBk8bwBQyZ6g
0kQ3DEOIglfYxV8-FJvNBYwbqN1Bck6d_i7OtjSHV-8DIrp-3JcRIe05YKy3Oi34Z_
GOiAc1EK21B11c_AE11PII_wvvtRiUiG8YofQXakWd1_O98Kap-UgmyWPfreUJ3lJP
nbD4Ve95owEfMGLOPflo2MnjaTDCwQokoJ_xplQ2vNPz8iguLcHBoKllyQFJL2mOWB
wqhBo9Oj-O800as5mmLsvQMTflIrIEbbTMzHMBZ8EFW9fWwwFu0DWQJGkMNhmBZQ-3
lvqTc-M6-gWA6D8PDhONfP2Oib2HGizwG1iEaX8GRyUpfLuljCLIe1DkGOewhKuKkZ
h04DKNM5Nbugf2atmU9OP0Ldx5peCUtRG1gMVl7Qup5ZXHTjgPDr5b2N731UooCGAU
qHdgGhg0JVJ_ObCTdjsH4CF1SJsdUhrXvYx3HJh2Xd7CwJRzU_3Y1GxYU6-s3GFPbi
rfqqEipJDBTHpcoCmyrwYjYHFgnlqBZRotRrS95g8F95bRXqsaDY7UgQGwBQBwy665
d0zpvTasvfXf_c0MWAl-neFaKOW_Px6g4EUDjG1GWSXV9cLStLw_0ovdApDIFLHYHe
PyagyHjouQUuGiq7BsYwYrwaF06tgB8hV8omLNfMEmDPJaZUzMuHw6tBDwGkzD-tS_
ub9hxrpJ4UsOWnt5rGUyoN2N_c1-TQlXxm5oto14MxnoAyBQBpwIEgSH3Y4ZhwKBhH
PjSo0cdwuNdYbGPpb-YUvF-2NZzODiQ1OvWQBRHSbPWYz_xbGkgD504LRtqRwCO7CC
_CyyURi1sEssPVsMJRX_U4LFEOc82TiDdqjKOjRUfKK5rqLi8nBE9soQ0DSaOoFQZi
GrBrqxDsNYiAYAmxxkos-i3nX4qtByVx85sCE5U_0MqG7COxZWMOPEFrDaepUV-cOy
rvoUIng8i8ljKBKxETY2BgPegKBYCxsAUcAkKamSCC9AiBxA0UOHyhTqtlvMksO7AE
hNC2-YzPyx1FkhMoS4LLe6E_pFsMlmjA6P1NSge9C5G5tETYXGAn6b1xZbHtmwrPSc
ro9LWhVmAaA7_bxYObnFUxgWtK4vzzQBjZJ36UTk4OTB-JvKWgfVWCFsaw5WCHj6Oo
4jpO7d2yN7WMfAj2hTEabz9wumQ0TMhBduZ-QON3pYObSy7TSC1vVme0NJrwF_cJRe
hKTFmdlXGVldPxZCplr7ZQqRQhF8JP-l4mEQVnCaWGn9ONHlemczGOS-A-wwtnmwjI
B1V_vgJRf4FdpV-4hUk4-QLpu3-1lWFxrtZKcggq3tWTduRo5_QebQbUUT_VSCgsFc
OmyWKoj56lbxthN19hq1XGWbLGfrrR6MWh23vk01zn8FVwi7uFwEnRYSafsnWLa1Z5
TpBj9GvAdl2H9NHwzpB5NqHpZNkQ3NMDj13Fn8fzO0JB83Etbm_tnFQfcb13X3bJ15
Cz-Ww1MGhvIpGGnMBT_ADp9xSIyAM9dQ1yeVXk-AIgWBUlN5uyWSGyCxp0cJwx7HxM
38z0UIeBu-MytL-eqndM7LxytsVzCbjOTSVRmhYEMIzUAnS1gs7uMQAGRdgRIElTJE
SGMjb_4bZq9s6Ve1LKkSi0_QDsrABaLe55UY0zF4ZSfOV5PMyPtocwV_dcNPlxLgNA
D1BFX_Z9kAdMZQW6fAmsfFle0zAoMe4l9pMESH0JB4sJGdCKtQXj1cXNydDYozF7l8
H00BV_Er7zd6VtIw0MxwkFCTatsv_R-GsBCH218RgVPsfYhwVuT8R4HarpzsDBufC4
r8_c8fc9Z278sQ081jFjOja6L2x0N_ImzFNXU6xwO-Ska-QeuvYZ3X_L31ZOX4Llp-
7QSfgDoHnOxFv1Xws-D5mDHD3zxOup2b2TppdKTZb9eW2vxUVviM8OI9atBfPKMGAO
v9omA-6vv5IxUH0-lWMiHLQ_g8vnswp-Jav0c4t6URVUzujNOoNd_CBGGVnHiJTCHl
88LQxsqLHHIu4Fz-U2SGnlxGTj0-ihit2ELGRv4vO8E1BosTmf0cx3qgG0Pq0eOLBD
IHsrdZ_CCAiTc0HVkMbyq1M6qEhM-q5P6y1QCIrwg.
0HFmhOzsQ98nNWJjIHkR7A
Jones Standards Track [Page 39]
RFC 7517 JSON Web Key (JWK) May 2015
Acknowledgements
RSA 공개키에 대한 JSON 표현은 이전에 John Panzer, Ben Laurie, 및 Dirk Balfanz가
Magic Signatures [MagicSignatures]에서
소개한 바 있습니다.
암호화된 키 예시를 만들어 준 Matt Miller와 예시를 검증해 준 Edmund Jay 및
Brian Campbell에게 감사드립니다.
이 명세는 JOSE 작업 그룹의 산물이며,
수십 명의 활동적이고 헌신적인 참가자를 포함합니다. 특히,
다음 개인들이 아이디어, 피드백, 및 표현(문구)을 기여하여
이 명세에 영향을 주었습니다:
Dirk Balfanz, Richard Barnes, John Bradley, Brian Campbell, Breno de
Medeiros, Stephen Farrell, Joe Hildebrand, Edmund Jay, Stephen Kent,
Ben Laurie, James Manger, Matt Miller, Kathleen Moriarty, Chuck
Mortimore, Tony Nadalin, Axel Nennker, John Panzer, Eric Rescorla,
Pete Resnick, Nat Sakimura, Jim Schaad, Ryan Sleevi, Paul Tarjan,
Hannes Tschofenig, and Sean Turner.
Jim Schaad and Karen O'Donoghue chaired the JOSE working group and
Sean Turner, Stephen Farrell, and Kathleen Moriarty served as
Security Area Directors during the creation of this specification.
Author's Address
Michael B. Jones
Microsoft
EMail: mbj@microsoft.com
URI: http://self-issued.info/
Jones Standards Track [Page 40]