ssl pinning은 HPKP (HTTP Public Key Pinning)에서 주로 사용되는 용어입니다. 

이미 잘 알려져 있다시피 SSL/TLS 로 이루어진 암호화 통신은 중간자 공격 (Man in the Middle) 에 취약합니다. 특히 요즘에는 여러 보안장비들이 SSL Decryption 기능을 제공하며 이 중간자 공격 (Man in the Middle) 형태로 SSL 및 TLS 세션을 복호화 하여 내용을 검증하도록 되어 있습니다. 이 때 보안장비는 공격자와 마찬가지로 암/복호화에서 사용할 인증서를 임의로 교체하여 중간에서 데이터를 복호화 하여 검증 하도록 구성되어 있습니다.

위 예제와 같이 클라이언트 (유저) 는 최종적으로 중간의 보안장비 또는 공격자가 제공한 인증서를 기반으로 암호화 통신을 진행하게 되며 이를 통하여 Man in the Middle 에 노출되게 됩니다. 

HKPK란 위와 같이 침해된 인증서를 동반한 공격을 막기 위해 고안됐습니다. 브라우저가 HPKP를 사용하는 웹사이트에 접속하면 브라우저는 특정 웹 서버에 어떤 공개 키가 사용되는지를 일정 기간 동안 기억할 수 있게 됩니다. 그 기간 동안 브라우저는 다른 모든 공개 키를 무시합니다. 현재 크롬, 파이어폭스, 오페라만이 이 HKPK 기능을 지원하고 있었으나 크롬은 이 대열에서 빠지게 됐습니다.

HPKP(HTTP Public Key Pinning)


클라이언트가 SSL/TLS 암호화 통신에 사용할 인증서를 최종서버의 인증서로 고정(Pinning) 하는 방식을 HPKP라 합니다. 이렇게 클라이언트가 최종서버의 인증서를 고정하면 중간에서 보안장비 또는 공격자가 제공한 임의의 인증서를 맞지 않는 인증서라 판단하여 거부할 수 있습니다. 

이처럼 특정 서버의 호스트를 확실히 알고 싶거나 공격이 발생할 것이라 예상되는 환경에서 작업할 때 사용하게 됩니다.

크롬은 HPKP를 왜 제거할까?

간단하게 더 이상 도움이 되지 않기 때문입니다.

HKPK는 가짜 인증서 공격에는 강력한 대응책이 되나, 공격자들이 악성 핀을 설치하거나 사이트 운영자가 실수나 고의로 방문자들을 차단할 수 있다는 결함이 있습니다. 공격자가 특정 웹 서버를 침해하는 데 성공한다면, 해당 웹사이트 방문자들에게 악성 HPKP 헤더를 전송할 수도 있으며 사이트 운영자가 다시 한 번 해당 웹사이트에 대한 통제권을 가져온다고 해도 공격자의 HPKP 정책 때문에 브라우저들로 접근하는 게 여전히 불가능해질 수도 있습니다. 또한 운영자가 HKPK를 적용할 때 실수를 하나만 해도 사용자들이 엉뚱한 키를 다운로드 받아 사이트에 며칠에서 몇 달씩 접속하지 못하도록 하는 등 커다란 피해가 발생해 도입이 부담이 될 수 있습니다. 이렇게 보안적으로는 완벽하지만 실제 운영에서는 유연성이 떨어진다는 면도 존재합니다. 

다른 이유로 공개 키 피닝(PKP) 자체의 도입률이 매우 저조하다는 것입니다. 탑 백만 사이트들 중 약 0.04%만 적용이 되어 있습니다. 따라서 구글이 HKPK를 폐지하기로 한 건 이런 기술적인 어려움과 완전하지 못한 보안성 때문입니다.


크롬에서 가짜 인증서를 통한 공격은 HPKP 대신 Expect-CT 헤더를 도입하여 방어를 진행하고 있습니다. Expect-CT는 사이트 운영자들이 설정 오류를 저질러도 유연하게 복구할 수 있게 해줘서 HPKP보다 훨씬 안전하고 다양한 인증기관과의 호환성을 갖추고 있습니다.

'보안 & 보안' 카테고리의 다른 글

서버 인증 (JWT)  (0) 2019.08.17
서버 인증 (세션/쿠키 기반)  (0) 2019.08.17
SSL Pinning  (0) 2018.12.18
TLS (Transport Layer Security)  (0) 2018.12.18
스니핑  (0) 2017.04.12
패스워드 크래킹  (0) 2017.03.28

+ Random Posts