HTTP 공개 키 핀 접속
HTTP Public Key PinningHTTP Public Key Pinning(HPKP; 공개키 핀닝)은 HTTP 헤더를 통해 전달되는 오래된 인터넷보안 메커니즘으로, HTTPS 웹 사이트에서 오발급 또는 부정 디지털 [1]증명서를 사용하는 공격자에 의한 위장을 방지할 수 있습니다.서버는 동일한 도메인 이름에 대한 향후 연결의 인증서 체인에 표시되어야 하는 공개 키 집합을 클라이언트(예: 웹 브라우저)에 전달하기 위해 이 해시 세트를 사용합니다.
예를 들어 공격자는 인증 기관을 손상시키고 웹 원본 인증서를 잘못 발급할 수 있습니다.이 리스크에 대처하기 위해 HTTPS 웹 서버는 일정 시간 동안 유효한 "고정된" 공개 키 해시 목록을 제공합니다.다음 연결에서는 그 유효 기간 동안 클라이언트는 서버가 증명서 체인에서 이러한 공개 키 중 하나 이상을 사용할 것으로 예상합니다.그렇지 않으면 오류 메시지가 표시되며 사용자는 이를 쉽게 우회할 수 없습니다.
이 기술은 증명서를 고정하는 것이 아니라 공개 키 해시입니다.즉, 개인 키에 액세스할 수 있는 경우 키 쌍을 사용하여 인증 기관으로부터 인증서를 받을 수 있습니다.또, 사용자는 루트 또는 중간 증명서(인증국에 의해서 작성)의 공개 키를 핀 접속할 수 있기 때문에, 사이트를 해당 인증국에 의해서 발행된 증명서로 제한할 수 있습니다.
HPKP 메커니즘의 복잡성과 우발적인 오용 가능성 때문에 브라우저는 증명서 투과성과 그 사용을 위해 HPKP 지원을 폐지 및 삭제했습니다.Expect-CT header를 [2][3]클릭합니다.인증국 인증을 사용하여 특정 도메인에 대해 인증서를 발급할 수 있는 인증국을 제한할 수도 있습니다. 따라서 인증서 발급 [4]오류가 발생할 가능성을 줄일 수 있습니다.
메커니즘
서버는 HTTP 응답 헤더필드를 통해 HPKP 정책을 사용자 에이전트에 전달합니다.Public-Key-Pins(또는Public-Key-Pins-Report-Only(리포트 전용)
HPKP 정책은 웹 사이트의 정규 X.509 공개 키 증명서 체인(및 적어도1개의 백업 키)에 있는 증명서 중 하나의 서브젝트 공개 키 정보를 지정합니다.pin-sha256사용자 에이전트가 공개 키 핀 접속을 강제하는 기간max-age디렉티브, 옵션includeSubDomains핀 접속 정책 및 옵션에서 (헤더를 송신한 도메인의) 모든 서브도메인을 포함하도록 지시합니다.report-uri핀 접속 위반 보고서를 송신하는 URL을 지정합니다.사용자 에이전트에 의해 체인이 유효한 것으로 간주되기 위해서는 증명서 체인의 적어도1개의 공개 키가 핀된 공개 키와 일치해야 합니다.
출판할 때 RFC7469에서는 SHA-256 해시 알고리즘만 허용되고 있습니다(RFC 7469의 부록 A에서는 HPKP 정책의 해시 생성에 사용할 수 있는 몇 가지 툴과 필수 인수에 대해 설명합니다).
웹 사이트 운영자는 특정 루트 인증 기관의 루트 인증서 공개 키를 고정하고 해당 인증 기관(및 키로 서명된 모든 중간 기관)만 웹 사이트 도메인에 대해 유효한 인증서를 발급하도록 허용하거나 하나 이상의 중간 인증서 발급 키를 고정하도록 선택할 수 있습니다.를 지정합니다.
현재 고정된 키를 교체해야 할 경우 백업 키를 하나 이상 고정해야 합니다.이 백업 키가 없으면 HPKP는 유효하지 않습니다(백업 키는 현재 인증서 [5]체인에 없는 공용 키로 정의됩니다).
HPKP는 RFC 7469로 [1]표준화되어 있습니다.정적 증명서 핀 접속을 통해 확장됩니다.이것은 웹 브라우저 및 응용 프로그램 내에서 [6]잘 알려진 웹 사이트 또는 서비스의 공개 키 해시를 하드 코드합니다.
대부분의 브라우저에서는 다양한 기업 콘텐츠 검사 스캐너[7] 및 웹 디버깅툴(mitmproxy 또는 Fiddler 등)을 활성화하기 위해 개인 루트 증명서를 사용하는 증명서 체인에 대한 핀 접속을 비활성화합니다.RFC 7469 표준에서는 "사용자 정의" 루트 증명서에 대해 핀 접속 위반 보고서를 비활성화할 것을 권장합니다.이 경우 브라우저는 핀 [8]검증을 비활성화할 수 있습니다.
리포트
사용자 에이전트는 핀 검증을 실행하여 제공된 증명서 체인에서 유효한 SPKI 핑거 프린트를 찾을 수 없는 경우 위반에 대한 자세한 내용을 포함한 JSON 형식의 위반 보고서를 report-uri 디렉티브로 지정된 호스트에 POST합니다.이 URI는 HTTP 또는HTTPS 경유로 처리할 수 있지만 사용자 에이전트는 위반을 보고하는 도메인과 같은 도메인 내의 HTTPS URI로 HPKP 위반 보고서를 전송할 수 없습니다.호스트는 다음 중 하나에 대해 HTTP를 사용할 수 있습니다.report-uri대체 도메인을 사용하거나 보고서 [9]서비스를 사용합니다.
일부 브라우저에서는Public-Key-Pins-Report-Only사용자에게 오류를 표시하지 않고 이 보고서만 트리거합니다.
비판과 거절
최고 적응 기간 동안 HPKP는 상위 100만 개 인터넷 사이트 중 3,500개에서 사용되었다고 보고되었으며,[4] 이는 2019년 말 650개로 감소하였다.
HPKP South 및 RansomPKP로 [10]알려진 악의적 또는 인간적 오류 시나리오를 중심으로 비판과 우려가 제기되었습니다.이러한 시나리오에서 웹 사이트 소유자는 자신의 키에 대한 접근권이 상실되거나 악의적인 공격자에 의해 새로운 키가 발표되어 도메인에 새로운 콘텐츠를 게시할 수 있습니다.
브라우저 지원 및 권장 해제
| 브라우저 | 추가된 버전 | 권장되지 않는 버전 | 버전 삭제 | 메모들 |
|---|---|---|---|---|
| 구글 크롬 | 무슨 일입니까?[11] | 67[12] | 72[13] | |
| 오페라 | 무슨 일입니까?[11] | ? | 육십[11] | |
| 파이어폭스 | 서른다섯[11] 살 | 72[14] | 72[14] | 플래그를 설정하여 활성화할 수 있습니다.security.cert_pinning.hpkp.enabled로.true를 클릭합니다.[15] |
| 인터넷 익스플로러 | --[16] | — | — | |
| 마이크로소프트 엣지 | --[16] | — | — | |
| 사파리 | — | — | — |
「 」를 참조해 주세요.
- 인증 기관의 손상
- 증명서 투과성
- HTTP 완전 전송 보안
- HTTP 헤더필드 리스트
- DNS 인증국 허가
- MDN Web Docs에서의 HTTP(HPKP)용 공개키 핀 접속 확장
레퍼런스
- ^ a b Evans, Chris; Palmer, Chris; Sleevi, Ryan (April 2015). Public Key Pinning Extension for HTTP. IETF. doi:10.17487/RFC7469. ISSN 2070-1721. RFC 7469.
- ^ Leyden, John. "RIP HPKP: Google abandons public key pinning". The Register. Retrieved 2018-12-18.
- ^ Tung, Liam. "Google: Chrome is backing away from public key pinning, and here's why". ZDNet. Retrieved 2018-12-18.
- ^ a b "HPKP is no more". Scott Helme. 2020-01-20. Retrieved 2020-01-30.
- ^ "About Public Key Pinning". noncombatant.org. Retrieved 2015-05-07.
- ^ "Certificate and Public Key Pinning - OWASP". www.owasp.org. Retrieved 2015-05-07.
- ^ "Security FAQ - The Chromium Projects". www.chromium.org. Retrieved 2015-07-07.
- ^ "RFC 7469 - Public Key Pinning Extension for HTTP". tools.ietf.org. Retrieved 2015-07-07.
- ^ "HPKP Violation Reporting". Scott Helme.
- ^ "Using security features to do bad things". Scott Helme. 2016-08-15. Retrieved 2020-01-30.
- ^ a b c d "HTTP Public Key Pinning (HPKP)". Mozilla Developer Network. Retrieved 2017-05-27.
- ^ "Deprecations and removals in Chrome 67". Google Developers.
- ^ "Remove HTTP-Based Public Key Pinning - Chrome Platform Status". www.chromestatus.com. Retrieved 2019-11-18.
- ^ a b "HTTP Public Key Pinning is no longer supported". Firefox Site Compatibility. November 14, 2019. Archived from the original on 2020-05-29. Retrieved 2020-02-19.
- ^ "mozilla-central: changeset 501812:d791bfa31f08ec478b2ef6ca4f89b3a8849d723b". hg.mozilla.org. Retrieved 2019-11-18.
- ^ a b "The status of Public Key Pinning Extension for HTTP in Microsoft Edge is Under Consideration". Microsoft Edge Development. Archived from the original on 2016-12-20. Retrieved 2018-09-21.