Apple은 사용자가 실행하는 모든 Mac 앱을 추적합니까? OCSP 설명

최근에 맥(Mac)을 사용할 때마다 애플(Apple) 본사로 정보를 전송하는 것이 아니냐는 의혹이 제기되었습니다. 이는 2020년 10월 12일에 애플 서버가 불안정해져 최신 맥에서 앱을 실행하는 데 오랜 시간이 걸렸던 사건 이후에 더욱 커졌습니다. 이에 대한 자세한 내용을 설명드리겠습니다.

참고: 이 문제는 macOS Big Sur와 macOS Catalina 모두에 해당하며, 속도 저하 및 개인 정보 보호 관련 우려는 macOS Big Sur에서 새로 발생한 것이 아닙니다.

맥 앱이 개발자 인증서로 서명되는 이유

맥 앱은 맥 앱스토어(Mac App Store)나 웹에서 다운로드한 경우, 개발자 인증서로 서명되어 있습니다. 앱을 실행할 때마다 해당 앱이 합법적인 개발자가 서명했으며, 변조되지 않았는지 확인하는 과정을 거칩니다. 이는 사용자들을 악성 소프트웨어로부터 보호하기 위한 중요한 절차입니다.

예를 들어, 모질라(Mozilla)에서 파이어폭스(Firefox)를 개발할 때, 파이어폭스 애플리케이션 파일을 컴파일한 후 모질라의 개발자 인증서로 서명합니다. 이는 파일이 정품이며 모질라에서 만들었다는 것을 증명하는 방법입니다. 만약 나중에 애플리케이션 파일이 변경된다면 맥은 그 차이를 인지할 수 있습니다.

이러한 인증서는 일정 기간(예: 몇 년) 동안만 유효하지만, 만료되기 전에 ‘취소’될 수도 있습니다. 만약 애플이 어떤 개발자가 인증서를 악성 앱에 서명하는 데 사용하고 있다는 것을 발견하면, 애플은 해당 인증서를 취소하게 됩니다. 맥은 취소된 인증서를 가진 앱은 실행하지 않습니다.

OCSP 설명: 맥이 본사에 연결하는 이유

애플이 맥의 앱과 관련된 인증서를 취소했는지 맥은 어떻게 알 수 있을까요? 이를 위해 맥은 온라인 인증서 상태 프로토콜(OCSP)이라는 기술을 사용합니다. 이 기술은 웹 브라우저에서 웹사이트 인증서를 확인할 때도 사용됩니다.

앱을 실행하면 맥은 해당 인증서에 대한 정보를 애플 서버(ocsp.apple.com)로 전송합니다. 맥은 이 애플 서버에 인증서가 취소되었는지 묻고, 만약 취소되지 않았다면 맥은 앱을 실행합니다. 하지만 인증서가 취소되었다면 맥은 해당 앱을 실행하지 않습니다.

앱 실행 시마다 이 과정이 반복될까요?

맥은 이러한 응답을 일정 기간 동안 저장합니다. 2020년 11월 12일에는 응답이 5분 동안 캐시되었습니다. 즉, 앱을 실행하고 닫았다가 4분 안에 다시 실행하면 맥은 애플에 인증서 확인 요청을 다시 할 필요가 없습니다. 하지만 앱을 실행하고 닫았다가 6분 후에 실행하면 맥은 애플 서버에 다시 요청해야 합니다.

2020년 11월 12일에 어떤 이유에서인지(아마도 macOS Big Sur의 변경 때문일 수 있음), 애플 서버가 과부하되어 매우 느려졌습니다.

이 사건 이후, 애플의 OCSP 서버는 이제 맥에게 인증서 유효성 응답을 12시간 동안 기억하도록 지시합니다. 맥은 앱을 실행할 때마다 인증서에 대해 애플에 문의하지만, 지난 12시간 이내에 응답을 받은 경우에는 다시 문의하지 않습니다. (이 기간에 대한 정보는 독립 앱 개발자 제프 존슨이 제공했습니다.)

맥이 오프라인 상태이면 어떻게 되나요?

OCSP 검사는 문제가 발생할 경우, 오류를 유예하도록 설계되었습니다. 오프라인 상태인 경우 맥은 자동으로 확인 과정을 생략하고 앱을 정상적으로 실행합니다.

만약 맥이 ocsp.apple.com 서버에 연결할 수 없는 경우에도 마찬가지입니다. 이는 서버 주소가 라우터 수준에서 네트워크로 차단된 경우일 수 있습니다. 맥이 서버에 연결할 수 없으면 확인을 생략하고 바로 앱을 실행합니다.

2020년 11월 12일의 문제는 맥이 애플 서버에 연결할 수는 있지만, 서버 자체가 너무 느렸다는 것입니다. 맥은 조용히 실패하고 앱을 실행하는 대신 응답을 오랜 시간 기다렸습니다. 만약 서버가 완전히 다운되었다면 아무도 눈치채지 못했을 것입니다.

개인 정보 보호 위험은 무엇일까요? 애플은 무엇을 알게 되나요?

이와 관련하여 몇 가지 개인 정보 보호 문제가 제기되었습니다. 해커 및 보안 연구원들은 제프리 폴(Jeffrey Paul)의 견해를 통해 이 문제를 자세히 다루었습니다.

인증서가 앱과 연결되어 있다는 점: 맥이 OCSP 서버에 접속하면, 특정 앱 또는 몇 개의 앱과 연결되었을 수 있는 인증서에 대한 정보를 요청합니다. 기술적으로 맥은 애플에게 사용자가 어떤 앱을 실행했는지 알려주지는 않습니다. 예를 들어 파이어폭스를 실행하면, 애플은 모질라에서 만든 앱을 실행했다는 것만 알게 됩니다. 그것이 파이어폭스인지, 썬더버드인지 애플은 모릅니다. 하지만 토르 프로젝트에서 서명한 앱을 실행하면 애플은 사용자가 토르 브라우저를 열었다는 것을 쉽게 알 수 있습니다.
요청은 IP 주소와 시간으로 연결된다는 점: 이러한 요청은 당연히 날짜, 시간, 그리고 IP 주소와 연결됩니다. 이것은 인터넷이 작동하는 방식입니다. 사용자의 IP 주소는 특정 도시 및 지역과 연결됩니다. 각 OCSP 요청은 사용자가 실행하는 앱을 만든 개발자, 일반적인 위치, 앱을 실행한 날짜와 시간을 애플에 알려줍니다.
암호화가 부족하다는 점: OCSP 프로토콜은 암호화되어 있지 않습니다. 애플뿐만 아니라 중간에 있는 누구든지 이 정보를 볼 수 있습니다. 인터넷 서비스 제공업체, 직장 네트워크 관리자 또는 인터넷 트래픽을 감시하는 기관이 사용자와 애플 간의 OCSP 트래픽을 가로채서 이러한 모든 정보를 알 수 있습니다. 이러한 요청은 콘텐츠 전송 네트워크(CDN)인 아카마이(Akamai)를 통해서도 이루어질 수 있습니다. 이는 속도를 높이지만, 기술적으로 스누핑이 가능한 또 다른 중개자를 추가하는 것입니다.
참고: 맥은 사용자가 어떤 앱을 시작하는지 애플에 알려주는 것이 아니라, 애플에게 실행하려는 앱을 만든 개발자를 알려주는 것뿐입니다. 하지만 많은 개발자가 단 하나의 앱만 개발합니다. 이러한 기술적인 차이는 종종 큰 의미가 없습니다.

(참고: 캐싱 동작이 변경됨에 따라 맥은 더 이상 앱을 실행할 때마다 애플에 요청하지 않습니다. 5분마다 요청하던 것을 12시간마다 요청합니다.)

맥에서 이러한 작업을 수행하는 이유는 무엇일까요?

예상하셨겠지만, 이 모든 것은 보안과 관련이 있습니다. 맥은 아이패드 및 아이폰보다 더 개방적인 플랫폼입니다. 애플의 맥 앱 스토어 외부를 포함하여 어디에서든 앱을 다운로드할 수 있습니다.

맥을 악성 소프트웨어로부터 보호하기 위해 (맞습니다, 맥 악성 소프트웨어가 더 흔해졌습니다) 애플은 이러한 보안 검사를 도입했습니다. 앱 서명에 사용된 인증서가 취소되면, 맥은 즉시 작동하여 해당 앱 열기를 거부할 수 있습니다. 이를 통해 애플은 맥이 알려진 악성 앱을 실행하지 못하도록 차단할 수 있습니다.

OCSP 검사를 차단할 수 있나요?

이러한 OCSP 검사는 맥이 오프라인 상태이거나 ocsp.apple.com 서버에 연결할 수 없을 때, 빠르고 조용히 실패하도록 설계되었습니다.

따라서 차단하기 쉽습니다. 맥이 ocsp.apple.com에 연결하지 못하도록 하면 됩니다. 예를 들어, 라우터에서 이 주소를 차단하여 네트워크의 모든 장치가 이 주소에 연결하지 못하게 할 수 있습니다.

하지만 Big Sur에서는 더 이상 허용되지 않습니다. 맥의 소프트웨어 수준 방화벽이 맥에 내장된 신뢰할 수 있는 프로세스가 이와 같은 원격 서버에 접속하는 것을 차단하지 못하게 합니다.

경고: ocsp.apple.com 서버를 차단하면 애플이 앱의 개발자 인증서를 취소했을 때 맥이 이를 알 수 없게 됩니다. 보안 기능을 비활성화하기로 선택하면 맥이 위험에 처할 수 있습니다.

애플은 무엇을 말하고 있으며, 어떤 변화를 약속하고 있나요?

애플은 비판에 귀를 기울인 것으로 보입니다. 2020년 11월 16일, 애플은 게이트키퍼(Gatekeeper)에 대한 “개인 정보 보호” 웹사이트에 다음 정보를 추가했습니다.

첫째, 애플은 이러한 인증서 또는 악성 소프트웨어 검사 데이터를 애플이 알고 있는 다른 데이터와 결합한 적이 없다고 밝혔습니다. 회사는 개인이 맥에서 실행하는 앱을 추적하는 데 이 정보를 사용하지 않을 것이라고 약속합니다.

둘째, 애플은 이러한 인증서 확인이 사용자의 애플 ID 또는 IP 주소 외에 다른 장치 관련 정보와 관련이 없다고 주장합니다. 애플은 이 요청과 관련된 IP 주소 로깅을 중단했으며, 애플의 로그에서 삭제할 것이라고 밝혔습니다.

애플은 2021년 말까지 다음과 같은 변경 사항을 적용할 것이라고 말합니다.

OCSP를 암호화된 프로토콜로 대체: 애플은 개발자 인증서 확인을 위해 암호화되지 않은 OCSP 시스템을 대체할 새로운 암호화 프로토콜을 만들 것이라고 밝혔습니다. 이렇게 하면 중간에서 스누핑하는 것을 방지할 수 있습니다.
속도 저하 중지: 애플은 또한 “서버 오류에 대한 강력한 보호”를 약속합니다. 즉, 서버 속도가 다시 느려져도 앱 로딩 속도가 느려지지 않도록 하겠다는 것입니다.
사용자에게 선택권 제공: 애플은 맥 사용자가 이러한 보안 보호를 비활성화하여 맥이 취소된 개발자 인증서를 확인하지 않도록 할 수 있을 것이라고 밝혔습니다.

전반적으로 이러한 변화는 여러 문제를 해소할 것입니다. 제3자는 더 이상 중간에서 스누핑할 수 없습니다. 맥은 여전히 사용자가 여는 앱을 추적하는 데 사용할 수 있는 정보를 애플에 보내겠지만, 애플은 해당 정보를 사용자와 연관시키지 않겠다고 약속합니다. 애플이 성능 문제도 해결할 것이므로, 속도 저하 문제도 사라질 것입니다.

이 더 나은 프로토콜은 무엇일까요? 애플은 OCSP를 무엇으로 대체할지 아직 밝히지 않았습니다. 보안 연구원 스콧 헬름CRL라이트와 같은 기술이 가능할 것이라고 언급했습니다. 맥이 애플에서 단일 파일을 다운로드하고 정기적으로 업데이트할 수 있다고 상상해 보십시오. 이 파일에는 모든 인증서 취소 목록이 포함되어 있으며, 앱을 실행할 때마다 맥은 이 파일을 확인하여 네트워크 확인 및 개인 정보 보호 문제를 해결할 수 있습니다.

맥은 때때로 애플에 앱 해시를 보냅니다.

덧붙여서, 맥은 때때로 사용자가 여는 앱의 해시를 애플 서버로 전송합니다. 이것은 OCSP 서명 확인과는 다릅니다. 대신, 게이트키퍼와 관련된 공증 과정입니다.

개발자는 앱을 애플에 업로드할 수 있으며, 애플은 앱에 악성 소프트웨어가 있는지 확인한 다음 안전하다고 판단되면 “공증”합니다. 이 공증 티켓 정보는 앱에 “스테이플”할 수 있습니다. 개발자가 티켓 정보를 앱 파일에 스테이플링하지 않으면, 해당 앱을 처음 실행할 때 맥에서 애플 서버를 확인합니다.

이것은 앱이 열릴 때마다 발생하는 것이 아니라 특정 버전의 앱을 처음 실행할 때만 발생합니다. 개발자가 스테이플링을 통해 이 온라인 검사를 생략할 수 있습니다.

맥은 이러한 작업에서 유일한 예외가 아닙니다. 예를 들어, 윈도우 10 PC는 사용자가 다운로드한 앱에 대한 데이터를 마이크로소프트의 SmartScreen 서비스에 업로드하여 악성 소프트웨어가 있는지 확인하는 경우가 많습니다. 바이러스 백신 프로그램 및 기타 보안 응용 프로그램도 의심스러운 앱에 대한 정보를 보안 회사에 업로드할 수 있습니다.