HTTP 공개 키 핀 접속

HTTP Public Key Pinning

HTTP 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]알려진 악의적 또는 인간적 오류 시나리오를 중심으로 비판과 우려가 제기되었습니다.이러한 시나리오에서 웹 사이트 소유자는 자신의 키에 대한 접근권이 상실되거나 악의적인 공격자에 의해 새로운 키가 발표되어 도메인에 새로운 콘텐츠를 게시할 수 있습니다.

브라우저 지원 및 권장 해제

HTTP 공개 키 핀 접속에 대한 브라우저 지원
브라우저 추가된 버전 권장되지 않는 버전 버전 삭제 메모들
구글 크롬 무슨 일입니까?[11] 67[12] 72[13]
오페라 무슨 일입니까?[11] ? 육십[11]
파이어폭스 서른다섯[11] 72[14] 72[14] 플래그를 설정하여 활성화할 수 있습니다.security.cert_pinning.hpkp.enabled로.true를 클릭합니다.[15]
인터넷 익스플로러 --[16]
마이크로소프트 엣지 --[16]
사파리

「 」를 참조해 주세요.

레퍼런스

  1. ^ 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.
  2. ^ Leyden, John. "RIP HPKP: Google abandons public key pinning". The Register. Retrieved 2018-12-18.
  3. ^ Tung, Liam. "Google: Chrome is backing away from public key pinning, and here's why". ZDNet. Retrieved 2018-12-18.
  4. ^ a b "HPKP is no more". Scott Helme. 2020-01-20. Retrieved 2020-01-30.
  5. ^ "About Public Key Pinning". noncombatant.org. Retrieved 2015-05-07.
  6. ^ "Certificate and Public Key Pinning - OWASP". www.owasp.org. Retrieved 2015-05-07.
  7. ^ "Security FAQ - The Chromium Projects". www.chromium.org. Retrieved 2015-07-07.
  8. ^ "RFC 7469 - Public Key Pinning Extension for HTTP". tools.ietf.org. Retrieved 2015-07-07.
  9. ^ "HPKP Violation Reporting". Scott Helme.
  10. ^ "Using security features to do bad things". Scott Helme. 2016-08-15. Retrieved 2020-01-30.
  11. ^ a b c d "HTTP Public Key Pinning (HPKP)". Mozilla Developer Network. Retrieved 2017-05-27.
  12. ^ "Deprecations and removals in Chrome 67". Google Developers.
  13. ^ "Remove HTTP-Based Public Key Pinning - Chrome Platform Status". www.chromestatus.com. Retrieved 2019-11-18.
  14. ^ 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.
  15. ^ "mozilla-central: changeset 501812:d791bfa31f08ec478b2ef6ca4f89b3a8849d723b". hg.mozilla.org. Retrieved 2019-11-18.
  16. ^ 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.