HPKP란 무엇입니까?

click fraud protection

HPKP는 더 이상 사용되지 않는 웹 보안 응답 헤더이며 약어는 HTTP 공개 키 핀을 나타냅니다. 손상되거나 불량 인증 기관이 웹 사이트에 대해 공개적으로 신뢰할 수 있지만 해커가 제어하는 ​​HTTPS 인증서를 발급하는 것을 방지하기 위한 것입니다. 이 시나리오에서 해커는 영향을 받는 웹 사이트에 대해 가로채는 HTTPS 트래픽을 해독할 수 있습니다.

팁: 웹 응답 헤더는 서버가 요청에 응답할 때 포함하는 메타데이터 조각입니다. 다양한 보안 기능을 활성화하고 구성하기 때문에 이들 중 작은 하위 집합을 보안 헤더라고 합니다.

HTTPS 인증서 인프라

HTTPS가 구축되는 인증서 인프라는 신뢰 웹을 기반으로 합니다. 많은 회사가 하나 이상의 루트 인증서를 게시하는 인증 기관(CA) 역할을 합니다. 루트 인증서 세트는 신뢰 저장소의 모든 장치에 포함됩니다. 웹 사이트가 CA에서 자체 HTTPS 인증서를 요청할 때 인증서는 루트 인증서로 서명됩니다. 컴퓨터에서 HTTPS 인증서를 확인하면 서명을 확인합니다. 인증서가 신뢰하는 루트 인증서로 서명된 경우 컴퓨터는 HTTPS 인증서도 신뢰합니다.

팁: CA는 루트 인증서로 서명된 중간 인증서를 가질 수도 있습니다. 이러한 중간 인증서를 사용하여 웹 사이트용 HTTPS 인증서에 서명할 수도 있습니다.

인증 기관의 역할은 인증서를 요청하는 사람이 웹사이트의 진정한 소유자임을 확인한 경우에만 인증서를 발급하는 것입니다. 이 구조의 아이디어는 해커가 웹 사이트에 대한 자체 인증서를 생성하는 경우 컴퓨터가 신뢰하는 CA에서 서명하지 않으므로 경고가 표시된다는 것입니다.

HPKP는 무엇을 했습니까?

전체 인증 시스템은 인증 기관의 신뢰성에 의존합니다. 그러나 원래 CA가 해커에 의해 손상되거나 불량자가 되어 인증서를 잘못 발급하도록 선택하는 것에 대한 보호 기능이 없었습니다.

HPKP는 이러한 가능성을 방지하기 위해 설계되었습니다. 이를 통해 웹 사이트는 고정이라는 프로세스에서 웹 사이트에 대해 신뢰할 수 있는 독점 인증서 목록을 지정할 수 있습니다. 루트 또는 중간 인증서를 고정할 수 있어 기본적으로 단일 CA가 웹사이트에 대한 인증서를 발급할 수 있습니다. 또한 웹사이트 자체의 인증서를 고정하여 올바른 CA라도 다른 유효한 인증서를 발급하지 못하도록 방지할 수 있었습니다.

기술적으로 고정되는 것은 인증서 자체가 아니라 인증서 키의 해시입니다. 해시는 단방향 암호화 기능입니다. 즉, 웹 사이트에서 브라우저에 제공한 인증서가 고정된 인증서와 일치하는지 확인할 수 있지만 해시를 사용하여 유효한 인증서를 만드는 것은 불가능합니다.

HPKP를 사용하려면 최소 2개의 키를 고정해야 하며, 그 중 최소 하나는 현재 인증서 체인이 아닌 백업이어야 합니다. 이 백업을 통해 사용자의 연결을 방해하지 않는 새 인증서로의 원활한 핸드오버를 구성할 수 있습니다.

웹사이트에서 브라우저에 제공한 HTTPS 인증서가 고정된 인증서 중 하나와 일치하지 않는 경우 인증서를 거부하고 사용자가 인증서를 우회하는 것을 방지하기 위해 브라우저가 필요합니다. 에러 메시지.

HPKP의 구조

HPKP 헤더에는 3개의 필수 부분과 2개의 선택적 부분이 있습니다. 헤더의 제목은 "Public-Key-Pins"이어야 하며 다음 두 개 이상의 인증서에는 'pin-sha256=' 형식으로 고정된 base64 인코딩 SHA256 해시가 있어야 합니다.”’. 마지막 필수 부분은 브라우저가 제한을 적용해야 하는 시간(초)인 "max-age"입니다.

팁: SHA256은 HPKP에서 사용하는 해싱 알고리즘입니다. Base64는 0-9, a-z, A-Z 및 특수 문자 "+" 및 "/"의 64자로 구성된 문자 집합입니다. "="는 필요한 경우 마지막 두 문자까지 채우는 데 사용됩니다.

선택적 설정은 "includeSubDomains" 및 "report-uri"입니다. "includeSubDomains는 "최대 연령" 타이머 기간 동안 현재 웹사이트의 모든 하위 도메인에 HPKP 보호를 적용하도록 브라우저에 지시합니다. "report-uri"는 오류 보고서를 보낼 수 있는 웹 사이트를 지정할 수 있는 기능이며 문제를 식별하고 해결하는 데 도움이 되도록 설계되었습니다.

"Public-Key-Pins-Report-Only"라는 헤더의 두 번째 변형이 있습니다. 모든 것이 동일하지만 오류가 발견되면 브라우저와 "report-uri"(구성된 경우)에 오류 메시지를 반환하는 것 외에는 아무 조치도 취하지 않습니다. 보고서 전용 변형은 오류가 사용자에게 문제를 일으키지 않는 배포 전에 헤더의 전체 규모 테스트를 가능하게 하도록 설계되었습니다.

HPKP 관련 문제

HPKP는 두 가지 주요 이유로 더 이상 사용되지 않습니다. 헤더가 그것을 사용하는 웹사이트에 심각한 문제를 일으킬 수 있는 두 가지 방법이 있었습니다. HPKP Suicide 및 Ransom PKP입니다.

HPKP 자살은 웹사이트의 합법적인 소유자가 고정된 모든 키에 액세스할 수 없는 문제입니다. 이는 우발적인 삭제, 해킹, 바이러스, 데이터 손상 또는 기타 여러 이유로 발생할 수 있습니다. HPKP를 올바르게 구현하는 것과 특히 인증서 교체 중에 업데이트를 유지하는 것이 복잡하기 때문에 구성 오류가 발생하기 쉽습니다. 그러나 HPKP를 사용하면 문제가 발생하면 웹사이트를 방문한 모든 최근 방문자가 "최대 연령" 타이머 동안 웹사이트에 액세스할 수 없습니다. 웹사이트 smashingmagazine.com 게시 기사 수정 사항이 배포되기 전 4일 동안 대부분의 방문자가 사이트를 오프라인 상태로 만든 바로 이 문제에 대한 경험을 자세히 설명합니다.

Ransom PKP는 해커가 웹 서버에 액세스한 다음 신뢰할 수 있는 모든 인증서와 키를 훔친 다음 반환에 대한 몸값을 요구하는 이론적인 공격입니다. 일반적인 설정에서는 새 키와 인증서를 생성하고 웹사이트를 백업하고 1시간 이내에 실행할 수 있습니다. 그러나 HPKP를 활성화하면 해당 키가 고정됩니다. 고정된 인증서를 사용자에게 제공할 수 없는 경우 사용자는 "최대 연령" 타이머 기간 동안 웹사이트에 액세스할 수 없습니다. 구성에 따라 백업이 있는 경우 이 문제를 해결하지 못할 수 있습니다.

이 두 가지 문제로 신규 사용자는 평소처럼 웹사이트에 액세스할 수 있습니다. 브라우저에 현재 누락된 항목만 신뢰하도록 지시하는 이전 HPKP 헤더를 본 적이 없습니다. 인증서. 그러나 일반 고객 및 독자와 같은 모든 최근 방문자는 "최대 연령" 타이머의 전체 기간 동안 기다려야 합니다.

이러한 문제의 심각성과 구성 및 유지 관리의 복잡성을 감안할 때 HPKP 헤더의 사용은 매우 낮았습니다. 결국 주요 브라우저는 이에 대한 지원을 완전히 중단하는 데 동의했고 몇 년 이내에 HPKP 헤더는 보편적으로 사용되지 않습니다.