PlayReady 콘텐츠 암호화
이 항목에서는 PlayReady 에코시스템에서 콘텐츠를 보호하는 데 사용되는 암호화 알고리즘에 대한 개요를 제공합니다.
참고
암호화 용어 및 정의는 용어집 을 참조하세요.
암호화 기본 사항
대칭 키 암호화 는 가장 간단한 암호화 유형입니다. 대칭 키 암호화를 사용하면 동일한 키를 사용하여 콘텐츠를 암호화하고 암호를 해독합니다. 대칭 키 알고리즘은 일반적으로 작고 빠릅니다. 일반적으로 대부분의 암호화 작업은 일종의 대칭 키 암호화로 처리됩니다.
반면 공개 키 암호화는 게시된 공개 키를 사용하여 암호화하고 다른 비밀 프라이빗 키를 사용하여 암호를 해독합니다. 따라서 사용자 "A"가 "B"에게 공개 키를 제공하는 경우 B는 다른 정보 없이 A에 대한 콘텐츠를 암호화할 수 있습니다. 콘텐츠가 전송되는 방식에 관계없이 A만 읽을 수 있습니다. 콘텐츠 인터셉터에 프라이빗 키(비밀 키)가 없으며 메시지의 암호를 해독할 수 없습니다. 공개 키를 공개적으로 사용할 수 있으므로 누구나 A에 대해 암호화할 수 있지만 A만 암호를 해독할 수 있습니다. 공개 키 암호화에는 계산적으로 복잡한 알고리즘이 필요합니다.
ECC(타원 곡선 암호화)는 콘텐츠를 암호화하고 암호 해독하는 데 사용되는 공개 키 암호화 알고리즘입니다. 타원 곡선을 설명하는 계산적으로 복잡한 함수입니다. 이 알고리즘의 구성 요소는 공개 키로 공유됩니다. 암호 해독에 사용되는 다른 구성 요소는 프라이빗 키를 형성합니다.
OMAC(One-key Message Authentication Codes)는 블록 암호화에서 생성된 메시지 인증 코드입니다. OMAC1 및 OMAC2의 두 가지 OMAC 알고리즘이 있습니다.
인증서는 신뢰할 수 없는 엔터티에 대한 신뢰성을 보장하는 데 사용됩니다. 인증서의 발신자는 프라이빗 키를 사용하여 이름(디바이스 식별자)에 서명합니다. 그런 다음 인증서를 받는 사람은 보낸 사람의 공개 키를 사용하여 인증서의 서명을 확인하여 보낸 사람의 ID를 확인합니다. 발신자는 프라이빗 키의 유일한 소유자이므로 공개 키를 지정하면 프라이빗 키를 만들기가 어렵고 프라이빗 키로 서명하지 않는 한 인증서가 올바르게 확인되지 않습니다. 이 경우 데이터 원본은 올바른 것으로 간주되며 인증된 통신은 안전합니다.
PlayReady 암호화 알고리즘
대칭 알고리즘
지원되는 AES 암호화 모드는 다음과 같습니다.
AES 128 CTR 모드 - PlayReady 시스템은 샘플이 완전히 암호화되거나 샘플 패턴만 암호화되는 파일 및 스트림을 CTR 작업 모드로 보호할 수 있습니다. 여기에는 ISO/IEC 23001-7에 정의된 일반 암호화 모드 'cenc'(일반 암호화 체계) 및 'cens'(암호화되지 않은/암호화된 바이트 패턴을 사용하는 일반 암호화 체계)가 포함됩니다.
AES 128 CBC 모드 - 버전 4.0부터 시작하는 PlayReady 시스템은 CBC 작업 모드에서 AES 128 콘텐츠 키로 완전히 또는 부분적으로 암호화된 파일 및 스트림을 보호할 수 있습니다. 여기에는 ISO/IEC 23001-7에 정의된 일반 암호화 모드 'cbc1' 및 'cbcs'와 CBC 모드에서 AES 128 콘텐츠 키로 암호화된 다른 형식이 포함됩니다.
참고
버전 1.X, 2.X 및 3.X가 있는 PlayReady 시스템은 CTR 모드(일반 암호화 모드 'cenc')로 암호화된 파일만 보호할 수 있습니다. 'cens'는 지원되지 않습니다. 버전 4.0 이상의 PlayReady 시스템은 CTR 모드(일반 암호화 모드 'cenc') 및 CBC 모드(일반 암호화 모드 'cbcs')에서 암호화된 파일을 보호할 수 있습니다. 다른 모드 'cens' 및 'cbc1'은 지원되지 않습니다.
ECC 알고리즘
Microsoft PlayReady 시스템은 ECC(타원 곡선 암호화)를 사용하여 콘텐츠 키를 암호화하고 프로토콜 메시지에 서명합니다.
- ECC ElGamal 알고리즘 - 암호화된 콘텐츠 키에 사용됩니다.
- ECDSA (타원 곡선 디지털 서명 알고리즘) - PlayReady 프로토콜에 적용할 수 있는 모든 위치에 메시지에 서명하는 데 사용됩니다.
- NIST — Microsoft PlayReady 시스템은 해당되는 ECC 암호화에 표준 NIST 알고리즘을 사용하며 현재 P-256 타원 곡선을 사용하고 있습니다.
서명 알고리즘
라이선스, 임시 키 또는 데이터 서명의 경우 PlayReady 시스템은 CMAC(암호화 기반 메시지 인증 코드)와 동일한 AES OMAC1을 사용하며 2005년 5월에 NIST 권장 사항이 되었습니다. 키는 임의로 생성되지만 데이터는 SHA256으로 해시된 다음 해시가 ECC256으로 서명됩니다.
런타임 및 성능 고려 사항
콘텐츠 재생이 트리거되면 PlayReady 클라이언트는 초기 재생을 시작하기 전에 몇 가지 단계를 수행해야 합니다. 여기에는 라이선스 찾기, 바인딩 또는 라이선스 해석, 콘텐츠 키 암호 해독, 마지막으로 콘텐츠 암호 해독 준비 등이 포함됩니다. PlayReady 클라이언트 스택은 라이선스를 콘텐츠에 바인딩하는 데 시간이 걸리며 콘텐츠 암호 해독 및 렌더링을 시작하기 전에 이 작업이 필요합니다. 즉, 라이선스를 바인딩하는 시간은 재생을 시작할 때 첫 번째 프레임에 시간 또는 트랙 간의 간격에 영향을 줍니다. 클라이언트 개발자와 애플리케이션 개발자는 런타임 및 성능 문제에 맞게 코드를 최적화하여 시간을 첫 번째 프레임으로 줄이고 간격 없는 재생을 허용하는 것이 좋습니다.
보호된 컨테이너는 대칭 키 암호화를 사용하여 대량의 콘텐츠를 암호화합니다. 그러나 공개 키 암호화는 라이선스 내에서 사용됩니다. 라이선스에 콘텐츠의 대칭 키가 포함되어 있고 서버가 클라이언트의 공개 키를 사용하여 콘텐츠의 대칭 키를 암호화하기 때문입니다.
콘텐츠를 암호 해독할 때 클라이언트의 프라이빗 키를 사용하여 라이선스에서 대칭 키를 해독합니다. 라이선스가 바인딩된 클라이언트만 대칭 키를 추출할 수 있습니다.
프라이빗 키 암호 해독은 대칭 암호 해독보다 계산 집약적입니다. 따라서 라이선스 해석은 계산 집약적입니다. 라이선스가 제대로 처리되면 대칭 키가 암호 해독되고 작고 빠른 알고리즘을 사용하여 콘텐츠의 암호가 해독될 수 있습니다.
리소스가 제한된 애플리케이션 또는 디바이스의 경우 시작에 상당한 시간과 리소스가 필요합니다. 그러나 이 작업이 완료되면 리소스가 해제되고, 암호 해독이 효율적으로 진행될 수 있으며, CPU 주기 또는 시스템 리소스가 거의 필요하지 않습니다.