유튜브와 넷플릭스, 사파리와 크롬에서 다르게 동작하는 이유
호기심을 갖게 된 계기
예전에 그런글을 본 적이 있었다.
"맥 기준으로 크롬에서 노래를 듣거나, 영상을 보면 손해를 본다."
찾아볼 당시에는 chrome
에서 몇가지 제한이 있었고, 그에 따라서 음질 저하나, 해상도 제한이 있다는 것이었다.
다만, 정확히 찾아보지는 않았었고, 그냥 그런가보다 하고 넘어갔다.
그러다가 얼마전 동료들과의 식사자리에서 이와 관련된 이야기를 나왔고.. 제대로 체크하지 않은 탓에 낭패를 보았다.
그래서, 문뜩 궁금해져서 제대로 알아보기로 했다.
맥 크롬에서는 넷플릭스 4k가 되지 않는다고?
놀랍게도 그렇다. 맥의 크롬에서는 넷플릭스 4k가 되지 않는다.
구독 플랜에 상관없이 정상적으로 4k가 출력되지 않는다.
DRM과 넷플릭스
넷플릭스는 저작권 보호를 위해서 DRM(Digital Rights Management)
기술을 활용하고 있다.
넷플릭스는 고화질 콘텐츠를 보호하기 위해 매우 엄격한 DRM 시스템을 운영한다.
이 시스템에서는 하드웨어 수준의 보안이 필요한데, 이를 위해서는 특별한 보안 칩이나 하드웨어 기반 콘텐츠 보호 기술이 필요하다.
여기서 중요한 차 이점이 나타난다.
사파리는 애플이 직접 개발한 브라우저로서 macOS와 깊이 통합되어 있어서 시스템 레벨의 하드웨어 보안 기능에 직접 접근할 수 있다.
반면 크롬은 구글에서 개발한 크로스 플랫폼 브라우저로서 이런 깊은 시스템 통합이 어렵다.
구체적으로 살펴보면, 넷플릭스는 4K 콘텐츠를 재생하기 위해 HDCP(High-bandwidth Digital Content Protection) 2.2라는 보안 프로토콜을 요구한다.
이는 단순히 소프트웨어 수준에서 구현할 수 있는 것이 아니라, 그래픽 카드, 디스플레이, 그리고 운영체제가 모두 협력해야 하는 하드웨어 기반 보안 시스템이다.
이 때문에 크롬에서는 일반적으로 최대 1080p까지만 지원된다.
사용자가 프리미엄 플랜에 가입하고 4K 모니터를 사용하며 충분한 인터넷 속도를 가지고 있어도, 브라우저 자체의 제한으로 인해 4K 재생이 차단된다.
하지만.. 윈도우에서는 잘 되는걸요?
윈도우 환경에서는 크롬에서도 특정 조건 하에서 4K 넷플릭스 시청이 가능한 경우가 있다.
이는 마이크로소프트와 넷플릭스가 협력하여 윈도우 10 이상에서 특별한 DRM 지원을 제공하기 때문이다.
하지만 macOS에서는 이런 예외적 지원이 제공되지 않는다.
그렇다면 맥에서 넷플릭스 4K를 보려면 어떻게 해야 할까?
제일 쉽게 접근할 수 있는 방법으로는 사파리를 사용하면 된다.
이런 제한이 존재하는 이유는 결국 콘텐츠 보호 때문이다.
영화 스튜디오와 콘텐츠 제작사들은 자신들의 고화질 콘텐츠가 불법 복제되는 것을 매우 우려하며, 따라서 가장 안전한 플랫폼에서만 최고 화질을 허용하는 정책을 요구한다.
애플의 생태계는 하드웨어부터 소프트웨어까지 모든 것을 통제할 수 있어서 이런 보안 요구사항을 만족시키기 쉽지만, 오픈소스 기반의 크롬은 상대적으로 제약이 많다 (애플이 제한하는 것도 있다).
즉, 정리하면 기술적 성능의 차이가 아니라 보안 정책과 플랫폼 통합의 차이인 것.
HDCP 보안 프로토콜이란?
유튜브에 관해서 알아보기 전에, HDCP에 대해서 좀 더 깊게 살펴보자.
HDCP란 무엇이며, 왜 등장했는가?
HDCP(High-bandwidth Digital Content Protection)
는 디지털 콘텐츠를 보호하기 위한 보안 프로토콜이다.
보다 쉽게 이해하기 위해서, 디지털 콘텐츠의 근본적인 문제를 먼저 상상해보자.
예를 들어, 영화 제작사가 수백억 원을 들여 만든 블록버스터 영화가 있다고 하자.
이 영화를 넷플릭스나 다른 스트리밍 서비스를 통해 제공할 때, 제작사가 가장 걱정하는 것은 무엇일까?
바로 누군가가 그 고화질 영상을 그대로 복사해서 불법적으로 배포하는 것이다. 특히 4K나 8K 같 은 초고화질 콘텐츠는 더욱 엄격한 보호가 필요하다.
과거 아날로그 시대에는 복사할 때마다 화질이 떨어졌기 때문에 자연스러운 보호 메커니즘이 있었다. (소위 디지털 풍화라고 말하기도 한다.)
하지만 디지털 시대에는 복사해도 원본과 동일한 품질을 유지할 수 있어서, 이런 자연스러운 보호막이 사라졌다.
이 문제를 해결하기 위해 인위적인 보안 시스템이 필요하게 된 것이다.
HDCP의 작동 방식
HDCP가 작동하는 방식을 단계적으로 살펴보자.
이 프로토콜은 인텔에서 개발했으며, 디지털 콘텐츠가 전송되는 모든 경로에서 암호화된 상태를 유지하도록 설계되었다.
마치 귀중한 보석을 운반할 때 출발지부터 목적지까지 모든 구간에서 보안 요원이 지켜보는 것과 같은 개념이다.
구체적인 작동 과정을 이해하기 위해 넷플릭스에서 4K 영화를 보는 상황을 예로 들어보자.
먼저 넷플릭스 서버에서 암호화된 영상 데이터가 인터넷을 통해 컴퓨터로 전달된다.
이때 브라우저나 앱에서 이 데이터를 해독한 후, 그래픽 카드로 전달한다.
그래픽 카드는 이 영상을 처리해서 모니터로 보내는데, 바로 이 그래픽 카드에서 모니터로 가는 구간이 HDCP의 핵심 보호 영역이다.
여기서 중요한 개념이 나옵니다. HDCP는 단순히 소프트웨어적인 암호화가 아니라, 하드웨어 수준에서 구현되는 보안 시스템이다.
그래픽 카드와 모니터가 서로 "핸드셰이크"라는 과정을 거쳐 상대방이 정당한 HDCP 지원 장치인지 확인 한다.
이는 마치 두 사람이 서로 신분증을 확인하고 암호를 주고받아 신뢰를 구축하는 과정과 비슷하다.
HDCP가 제대로 작동하려면 전체 연결 체인의 모든 구성요소가 이를 지원해야 한다.
그래픽 카드, 케이블, 모니터뿐만 아니라 운영체제, 브라우저, 심지어 드라이버까지 모든 것이 HDCP를 지원해야 한다.
이 중 하나라도 지원하지 않으면 전체 시스템이 보안상 취약하다고 판단되어 고화질 재생이 차단된다.
HDCP 2.2의 특징
HDCP
는 기본적으로 공개키 암호화
방식을 채택하고 있다.
공개키 암호화 시스템의 핵심 아이디어를 먼저 생각해보자.
전통적인 암호화에서는 암호를 만드는 열쇠와 푸는 열쇠가 같았다(대칭키 방식).
하지만 공개키 암호화에서는 두 개의 다른 열쇠가 쌍을 이룬다.
하나는 공개키로 누구나 알 수 있고, 다른 하나는 개인키로 오직 소유자만 알 수 있다.
이는 마치 우편함에 비유할 수 있는데, 우편함의 위치는 공개되어 있어서 누구나 편지를 넣을 수 있지만, 열쇠는 주인만 가지고 있어서 편지를 꺼낼 수 있는 것과 같다.
HDCP 2.2는 이런 공개키 암호화 개념을 기반으로 하되, 디지털 콘텐츠 보호라는 특수한 목적에 맞게 설계된 시스템이다. 4k와 같은 대용량, 고화질을 지원하기 위한 보안 프로토콜이라고 보면 된다.
이 시스템의 가장 중요한 특징은 실시간으로 작동해야 한다는 점이다.
영화를 보는 동안 매 순간마다 끊임없이 암호화와 복호화가 일어나야 하므로, 속도와 효율성이 매우 중요하다.
HDCP 2.2의 초기화 과정을 단계별로 살펴보자.
1. 인증 과정
컴퓨터를 모니터에 연결했을 때 무엇이 일어나는지 상상해보자.
가장 먼저 일어나는 것은 "인증" 과정이다.
이는 마치 두 사람이 처음 만났을 때 서로의 신분을 확인하는 과정과 비슷하다.
그래픽 카드가 모니터에게 "안녕하세요, 저는 HDCP 2.2를 지원하는 정당한 송신 장치입니다"라고 인사를 건넨다.
이때 그래픽 카드는 자신의 디지털 인증서를 제시하는데, 이 인증서는 Digital Content Protection LLC
라는 기관에서 발급한 인증서이다.
모니터는 이 인증서를 검증하고, 만약 유효하다면 자신의 인증서도 그래픽 카드에 제시한다.
즉, 처음에 서로의 인증서를 확인하는 과정을 거치는 것이다.
이 인증서들은 단순한 신분증이 아니라, 각각 고유한 암호화 키를 포함하고 있다.
각 HDCP 지원 장치는 제조 과정에서 고유한 키 세트를 부여받는데, 이는 마치 지문처럼 세상에서 유일한 식별자 역할을 한다.
이런 방식으로 시스템은 정품 장치와 불법 복제품을 구별할 수 있게 된다.
2. 키 교환 과정
인증이 완료되면 다음 단계인 "키 교환" 과정이 시작된다.
이는 매우 정교한 수학적 알고리즘을 사용하는데, 디피-헬만 키 교환이라는 방법 을 기반으로 한다.
이 과정을 일상적인 예로 살펴보자.
두 사람이 공개된 장소에서 비밀 암호를 만들어야 한다고 상상해보자.
주변에 도청하는 사람들이 있지만, 그들이 들어도 비밀 암호를 알아낼 수 없어야 한다.
디피-헬만 키 교환은 바로 이런 상황에서 사용할 수 있는 매우 똑똑한 방법이다.
그래픽 카드와 모니터는 각각 비밀 숫자를 하나씩 가지고 있다.
이 숫자들은 절대로 상대방에게 직접 알려주지 않는다.
대신 이 비밀 숫자들을 특별한 수학적 공식에 넣어서 변환된 결과만 서로 교환한다.
놀랍게도, 이렇게 변환된 숫자들을 주고받는 것만으로도 양쪽 모두 같은 공통 비밀 키를 계산해낼 수 있다.
중간에 도청하는 사람은 변환된 숫자들만 볼 수 있을 뿐, 실제 비밀 키를 알아낼 수는 없다.
이제 실제 콘텐츠 보호가 어떻게 이루어지는지 살펴보자.
키 교환이 완료되면, 그래픽 카드와 모니터는 공통의 암호화 키를 가지게 된다.
이 키는 매우 짧은 시간 동안만 유효하며, 주기적으로 새로운 키로 교체된다. 이는 마치 은행의 일회용 비밀번호(OTP)와 같은 개념이다.
실제 영상 데이터가 전송될 때는 AES(Advanced Encryption Standard)
라는 대칭 암호화 알고리즘
을 사용한다.
이는 매우 빠른 속도로 대용량 데이터를 암호화할 수 있는 방법이다.
4K 영상은 초당 엄청난 양의 데이터를 전송해야 하므로, 이런 고속 암호화가 필수적이다.
3. 링크 검증 과정
HDCP 2.2의 특별한 점 중 하나는 "링크 검증" 시스템이다.
이는 연결이 유지되는 동안 계속해서 보안 상태를 점검하는 메커니즘이다.
마치 경비원이 주기적으로 순찰을 도는 것처럼, 시스템은 몇 초마다 한 번씩 연결 상태를 확인한다.
만약 중간에 누군가가 신호를 가로채려고 시도하거나, 승인되지 않은 장치가 연결되면 즉시 감지되어 영상 전송이 중단된다.
이 링크 검증 과정에서는 "챌린지-응답" 방식을 사용한다.
그래픽 카드가 모니터에게 무작위로 생성된 질문을 보내면, 모니터는 자신만이 알 수 있는 올바른 답을 계산해서 돌려보낸다.
이 과정이 실패하면 시스템은 즉시 비상 모드로 전환되어 저화질 영상만 전송하거나 아예 전송을 중단한다.
HDCP 2.2의 핵심적인 개선사항
HDCP 2.2가 이전 버전과 구별되는 핵심적인 개선사항을 이해해보자.
가장 중요한 변화는 암호화 강도의 증가이다.
HDCP 1.4에서는 56비트 키를 사용했지만, HDCP 2.2에서는 128비트 AES 암호화를 사용한다.
이는 보안 강도를 기하급수적으로 증가시키는 효과를 낳는다.
56비트 키를 무차별 대입 공격으로 뚫는 데 걸리는 시간이 며칠이라면, 128비트 키는 우주의 나이보다 오래 걸릴 만큼 강력하다.
또한 HDCP 2.2에서는 "리피터" 처리 방식이 개선되었다.
리피터란 신호를 중계하는 장치를 의미하는데, 예를 들어 AV 리시버나 HDMI 분배기 같은 장치들이 이에 해당한다.