최근 인프런에서 강의를 수강하다가 중요한 내용을 기록하려고 스크린샷을 찍었는데, 동영상의 내용 대신 스크린샷에는 검정색 화면만 나왔다.
그래서 일반적인 웹페이지나 동영상은 캡처가 잘 되는데, 인프런의 강의 영상만 검게 나오는 이유가 궁금했다.
알아보니 이런 현상은 웹에서 사용하는 DRM(디지털 저작권 관리) 기술 때문이라고 한다.
그래서 브라우저 화면에서 어떻게 동영상만 캡처가 막히는지 기술적으로 궁금해졌다.
이번 글에서는 DRM 기술이 무엇이며, 실제 웹에서는 어떻게 구현되는지 자세히 알아보려고 한다.
DRM(Digital Rights Management)은 디지털 콘텐츠의 저작권을 보호하고 불법 복제를 막기 위한 기술적 보호 장치다.
영화, 음악, 전자책과 같은 콘텐츠가 무단으로 복사되거나 배포되는 것을 막기 위해 콘텐츠를 암호화하여 정당한 권한을 가진 사용자만 접근할 수 있도록 한다.
OTT 서비스에서도 DRM은 필수적이다.
콘텐츠 제공자는 저작권자의 권리를 보호하고 수익 구조를 유지하기 위해 DRM 기술을 사용한다고 한다.
웹 브라우저에서 DRM은 주로 HTML5 표준에 포함된 EME(Encrypted Media Extensions) API를 사용해 구현된다.
콘텐츠가 서버에서 암호화된 상태로 전달되면, 브라우저는 DRM 모듈을 통해 암호화된 콘텐츠를 복호화한 뒤 사용자에게 보여준다.
대표적으로 사용되는 웹 DRM 표준은 다음과 같다.
이 중 구글의 Widevine은 크롬 브라우저뿐만 아니라 안드로이드 기기에서도 널리 사용된다.
DRM 콘텐츠가 재생될 때 브라우저가 OS 레벨과 연동되어 화면 캡처나 녹화를 시도하면, 해당 부분을 검은 화면으로 처리하거나 영상 데이터를 제외시킨다.
이 과정은 OS의 GPU/그래픽 출력 기능과 연동되어 동작한다.
Shaka Player는 구글이 개발한 오픈소스 웹 비디오 플레이어이고, DRM 콘텐츠 재생에 특화된 기능이 있다.
우선 예제를 통해 Shaka Player가 어떻게 동작하는지 살펴보자.
<!-- Shaka Player CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/shaka-player/4.12.6/shaka-player.compiled.js"></script>
<video id="shaka-video" width="800" controls></video>
<script>
const video = document.getElementById('shaka-video');
const player = new shaka.Player(video);
player.configure({
drm: {
servers: {
'com.widevine.alpha': 'https://cwip-shaka-proxy.appspot.com/no_auth',
},
},
});
player.load(
'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine/dash.mpd'
);
</script>
이 부분에 동작하는 gif나 이미지를 올리려 했는데, 어차피 찍어봤자 검정색으로 나온다...ㅋㅋ


인프런에서도 강의 동영상 페이지에서 개발자 도구를 열어보면 비디오 관련 HTML 태그의 클래스명에 shaka가 붙어 있는 것을 확인할 수 있다.

이를 통해 인프런 역시 Shaka Player로 DRM 기술을 적용해 콘텐츠를 보호하고 있음을 알 수 있다.
DRM 기술을 도입할 때는 몇 가지 주의할 점이 있다.
우선 사용자 환경에 따라 DRM 지원 범위가 다르기 때문에, 각 OS와 브라우저별로 호환성을 반드시 체크해야 한다.
특히 Widevine은 대부분의 환경에서 지원되지만, 애플 환경에서는 FairPlay만 지원하기 때문에 별도의 설정이 필요하다.
그리고 DRM은 완벽한 보호 수단이 아니기 때문에, 화면 촬영 등 물리적인 복제는 근본적으로 차단할 수 없다.
이런 사소한 부분까지 보안에 신경 쓰는 인프런이 대단한 것 같다.
저작권 의식이 높고, 인프런 내 강사들을 보호하려는 의지가 느껴졌다.
덕분에 웹 DRM 기술에 대해 공부할 수 있어서 유익했다!