OCSP 개인정보: 응답자는 인증서를 보고, 당신의 URL은 보지 않는다
OCSP 요청은 페이지 경로가 아니라 인증서와 시점을 식별한다. 스테이플링, 캐싱, 클라이언트 정책이 검증을 누가 관찰하는지를 결정한다.
상태 확인은 하나의 인증서에 대해 하나의 질문을 던지고, 답은 자체 연결을 통해 이동한다. 그 요청에는 확인으로 이어진 페이지 경로가 들어 있지 않다. 개인정보 논의는 이 교환을 브라우징 기록 피드처럼 다루는 경우가 많은데, 이는 요청이 담는 것을 과대평가하고 응답자가 관찰할 수 있는 것을 과소평가한다. 무엇이 드러나는지 판단하기 전에 요청을 읽어 보라.
요청은 하나의 인증서를 식별한다
OCSP 인증서 식별자는 해시 함수, 발급자의 두 해시, 대상 인증서의 일련번호로 구성되며, RFC 6960에 규정되어 있다. 각 필드는 하나의 인증서를 가리키며 URL이나 HTTP 요청을 가리키지 않는다.
페이지 경로, 쿼리 문자열, 양식 내용은 표준 식별자에 포함되지 않는다. 응답자가 정확한 URL을 받는다는 주장에는 인증서 확인이 아닌 다른 곳의 증거가 필요하다. 요청은 여전히 인증서와 시점을 지목하며, 응답자는 어느 서비스가 이를 제시하는지 알 수 있다.
빠진 것은 페이지이며 전체 맥락이 아니다. 인증서 확인에 알려진 서비스와 반복되는 출처를 더하면 그중 어느 하나만 볼 때보다 더 많은 것을 알 수 있다.
응답자가 실제로 관찰할 수 있는 것
응답자는 자신에게 도달하는 연결, 즉 출발지 주소와 시점, 배포가 기록하는 모든 전송 메타데이터를 본다. 상태 요청이 VPN을 따르면 그 출처는 사용자의 접속망이 아니라 VPN 출구일 수 있다. 둘 다 하나의 브라우저 세션에 속한다는 이유만으로 상태 요청이 페이지 요청과 같은 경로를 탄다고 가정하지 마라.
단일 추적으로 추론하는 대신 클라이언트가 지원하는 라우팅과 검증 동작을 확인하라. 분할 터널은 두 요청을 서로 다른 방향으로 보낼 수 있다.
스테이플된 응답은 또 다른 흔한 패턴이다. RFC 6066의 TLS status_request 확장은 서버가 자신의 핸드셰이크에 OCSP 응답을 첨부할 수 있게 하므로, 클라이언트는 해당 연결에 대해 스스로 상태를 가져오는 대신 주어진 것을 검증한다. 이 변화는 관찰자를 바꾼다. 가져오는 일은 서버 쪽이 하며, 클라이언트 자신의 주소는 그 연결에서 응답자에게 결코 도달하지 않는다.
상태는 핸드셰이크 안에 스테이플되어 도착할 수 있다
이 중 어느 것도 클라이언트가 다시는 다른 검증 요청을 하지 않는다고 보장하지 않는다. 체인 구축, 상태 정책, 지원되는 메커니즘은 구현에 따라 다르다.
한 브라우저의 인증서 뷰어는 모든 운영체제와 VPN 클라이언트를 설명하지 않는다. 같은 네트워크 캡처라도 검증 설정이 다르면 다른 의미를 가질 수 있다.
캐싱은 한 페이지 한 조회라는 가정을 깨뜨린다
캐싱은 페이지 로드와 조회를 분리한다. 브라우저는 일정 기간 응답을 재사용할 수 있으므로, 한 번의 페이지 조회가 한 번의 네트워크 요청을 뜻하지는 않는다.
반대의 실수도 그만큼 흔하다. 캐시된 응답은 다음 갱신이 언제 일어나는지 말해 주지 않으며, 갱신 일정은 열리는 페이지와 무관할 수 있다. 캡처를 OCSP에 귀속하기 전에 클라이언트의 현재 문서와 유효한 검증 정책을 사용하라.
유효한 상태 응답은 검증자의 진위와 신선도 규칙을 충족해야 하며, HTTP 200은 좋은 상태와 같지 않다. 시간 초과는 폐기가 아니다. 이러한 결과는 서로 다른 클라이언트 동작으로 이어지며 하나의 오류로 묶어서는 안 된다.
검증을 온전하게 유지하는 개인정보 선택
조회 자체가 민감한 경우 시스템 소유자와 지원되는 전달 및 캐싱 옵션을 논의하라. 폐기 확인이나 체인 검증을 끄는 것으로 해결하지 마라.
더 조용한 추적이 더 안전한 연결은 아니다. 피어 신원, 체인 검증, 의도한 폐기 정책을 온전하게 유지하고, 전달 경로는 배포가 지원하는 옵션을 통해서만 바꿔라. 어떤 옵션이 선택되었고 누가 소유하는지 기록하라.
조회가 예기치 않게 나타나면 수신자, 경로, 인증서 작업을 각각 따로 지목하라. 발급자 다운로드, 상태 질의, 페이지 요청은 세 가지 사건이다. 이를 하나로 취급하면 개인정보 검토가 부정확해지고 어느 당사자가 실제로 무엇을 알게 되었는지가 가려진다. 프로토콜 필드에서 시작해 바깥쪽 네트워크 경로로 나아가라.