SlideShare una empresa de Scribd logo
1 de 15
Encrypted Media
Extensions v0.1
Draft proposal


   INISOFT Co., Ltd.
   Taehyun Kim
   thkim@inisoft.tv

   2012.06.14

                       INISOFT Co.,Ltd
배경
WEB 기반 비디오와 DRM

HTML5 Video tag를 기반으로하는 Web 비디오
시장은 커져왔으나 해결되지 않는 문제는 컨텐츠 보호가 필요한
Premium 비디오를 제공하는 방법이 없다는 것.

    현재는 Flash/Silverlight와 같은 Plug-in이 필요.
        Media Play부분과 콘텐트 보호 부분의 분리가 어려움.
        Plug-in 포팅 이슈. ( HW GPU가속등 )
    Plug-in이 필요한 부분과 표준화가 가능한 부분의 분리가 필요.

•   Mobile Smart Device 시장의 확대
    •   HW Video 가속 등 Plug-in 개발업체가 각 Device마다 대응하기 어려워짐
         • Adobe의 Flash plug-in 개발 포기
    •   표준을 통하여 HW 가속은 제조사가 Media 보안은 보안 업체가 하는 분리 방안이
        필요해진 상황
    •   Device 별로 지원 가능한 Plug-in이 달라서 서비스 Deploy에 어려움이 존재

                                                      INISOFT Co.,Ltd
Market Trends
미디어 콘텐트 보안을 위한 시장의 대응

•   배경
     •   HD 영상의 일반화로 Network / Storage 비용 증가
     •   Codec의 사실상의 통일 : H.264 / AAC
•   Simulcrypt for Broadcasting
     •   암호화 송출은 단일 규격 + 복수의 CAS를 통한 Key 전달 규격
•   Multi DRM + Single Format
     •   보안상의 이유와 규제 , 업체들간의 이해관계로 인하여 KEY를 전달하는 방식에 대한
         표준화는 불가능
     •   1개의 파일포맷으로 다수의 DRM을 지원하는 방안이 대두되고 있음
          • UltraViolet Common File format : 디즈니를 제외한 주요 스튜디오 및 서비스 , 솔루션 , 단말
            업체가 모임
          • MPEG-DASH Common Encryption : 단일한 암호화 방식을 제공
•   스트리밍 포맷의 단일화
     •   iOS의 HTTP Live Streaming 으로 촉발된 Adaptive Streaming 포맷의 대중화
     •   MPEG-DASH로 기존의 모든 HTTP기반 Adaptive Streaming 규격을 단일화 하려는
         움직임
     •   OIPF / 3GPP 등 다수의 표준에서 MPEG-DASH기반으로 규격 제정


                                                                   INISOFT Co.,Ltd
SSL로는 안되는가?
왜 SSL으로는 미디어 보안이 되지 않는가?

• 상호 인증 필요
  Client Side Certificate 필요
DRM은 Client User를 못 믿는 구조. USER가 아닌 System/Device를 Trust하는 구조

•   Protocol에 대한 비밀 주의
    완벽한 콘텐트 보안은 HW적인 구현 밖에 없음.
    SW구현으로는 어느 정도 타협 해야 함.
    -   Perfect한 protocol보다는 비밀주의를 통한 Reverse engineering 방지
    -   코드 난독화 등 Key Hardening technique 사용


Cookie / HTTP 인증만으로는 정상적인 ID/Password를 알고 있는 사용자가 Key를
유출 시키는 것을 방지하기 어려움
  별도의 Device key를 이용한 보안이 필요



                                                               INISOFT Co.,Ltd
DRM의 기본 구성요소
미디어 콘텐트 보호의 구성 요소

                      콘텐트 포맷
                                                              MPEG-DASH
                      • 파일 포맷
                                                              로 표준화 중
                      • 스트리밍 포맷
                      • 콘텐트 암호화/복호화 규격




                            Common Interface



    안전한 전달 / 배포                        권한 기술
    • 단말 인증 ( PKI )                    • PPV / Subscription
    • 메시지 암호화/서명                       • 권한 상속
                                       • Device 간 권한 공유


                                                              INISOFT Co.,Ltd
Encrypted Media Ext.




                       INISOFT Co.,Ltd
Definitions
  Definitions
 1)   CDM : Content Decryption Module



 2)   Key System :



 3)   Session-ID :



 4)   Initialization Data :




                                        INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
  1 ) 초기화
 Key System을 선택하기 위한 시나리오

 미디어 스트림 자체에 CDM을 초기화 하기 위한 Initialization Data를(복수개 가능) 포함한다.
 Ex) 라이선스 취득을 위한 라이선스 서버 URL, Contents ID

 needKey event : CDM 재생이 필요함을 알림
 미디어 스트림에 포함된 Init Data를 Application에 전달.

 interface MediaKeyNeededEvent : Event {
   readonly attribute DOMString? keySystem;
   readonly attribute DOMString? sessionId;
   readonly attribute Uint8Array? initData;
 };

 전달 받은 KeySystem 정보를 이용하여 CDM 초기화 시도.




                                                             INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
  1 ) 초기화 예 – OMA DRM
 OMA DRM에는 다음과 같은 초기화 구동 Data가 필요.

 ROAP Trigger
 KeySystem : OMA DRM
 iniData :

 <roapTrigger xmlns="http://www.openmobilealliance.org/xmlns/roaptrigger">
 <riID>
     <keyIdentifier xsi:type="roap:X509SPKIHash">
       <hash>aXENc+Um/9/NvmYKiHDLaErK0fk=</hash>
     </keyIdentifier>
    </riID>
 <roURL>2498sdfcvxs@ri.example.com</roURL>
 <roapURL>http://ri.example.com/ro.cgi?tid=g97sd976s90</roapURL>
 <protocol>Acquisition</protocol>
 <signature>...signature_data...</signature>
 </roapTrigger>



                                                                             INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
  2 ) CanPlayType()을 통한 Negotiation
 iniData를 통하여 사용할 KeySystem을 선택하는 과정

 CanPlayType( MimeType , KeySystem )을 통하여 현재의 UA가 재생가능한 KeySystem을 선택




                                                                 INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
  3 ) GenerateKeyRequest()를 통한 License 요청
 NeedKey Event에서 수신된 CDM 초기화 데이터를 CDM모듈에 전달하고 이를
 통하여 라이선스 수신 요청 메시지를 생성

  void generateKeyRequest(in DOMString keySystem, in Uint8Array? initData);

 CDM 모듈은 initData 정보를 기초로 하여 Key Request를 보낼 URL과 Data를 생성한다.
 이를 MediaKeyMessage event로 전달한다.

 [Constructor(DOMString type, optional MediaKeyMessageEventInit eventInitDict)]
 interface MediaKeyMessageEvent : Event {
   readonly attribute DOMString keySystem;
   readonly attribute DOMString? sessionId;
   readonly attribute Uint8Array message;
   readonly attribute DOMString? defaultUrl;
 };

 여기에는 라이선스 서버의 URL과 Post해야할 message가 포함되어 있다.
 App은 이를 받아서 HTTP로 라이선스 서버에 POST한다.

                                                                                  INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
  3 ) GenerateKeyRequest()를 통한 License 요청 예
 The request is for a Device RO.
 <?xml version="1.0" encoding="utf-8"?>
 <roap:roRequest
  xmlns:roap="urn:oma:bac:dldrm:roap-1.0"
                                                                     URL : Contents ID를 포함
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <deviceID>
       <keyIdentifier xsi:type="roap:X509SPKIHash">                  ROAP Request :
          <hash>vXENc+Um/9/NvmYKiHDLaErK0gk=</hash>
       </keyIdentifier>
    </deviceID>                                                      Device 정보 / 서버 정보 /
    <riID>                                                           Device의 인증서
       <keyIdentifier xsi:type="roap:X509SPKIHash">                  Replay attack을 막기위한
          <hash>aXENc+Um/9/NvmYKiHDLaErK0fk=</hash>
       </keyIdentifier>                                              nonce등
    </riID>
    <nonce>32efd34de39sdwefqwer</nonce>
    <time>2004-03-17T14:20:00Z</time>
    <roInfo>
 <roID>n8yu98hy0e2109eu09ewf09u</roID>
    </roInfo>
    <certificateChain>
       <certificate>miib123121234567</certificate>
       <certificate>miib234124312431</certificate>
    </certificateChain>
    <signature>321ue3ue3ue10ue2109ue1ueoidwoijdwe309u09ueqijdwqijdwq09uwqwqi009</signature>
 </roap:roRequest>

                                                                                         INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
  4 ) 라이선스 수신 및 AddKey()
 GenerateKeyRequest()의 결과를 라이선스 서버에 전달하면 그 결과가 수신됨
 이를 AddKey()로 CDM에 전달하여 Key를 추가.

 void addKey(in DOMString keySystem, in Uint8Array key, in Uint8Array? initData, in DOMString?
 sessionId);

 addKey가 성공적으로 완료(복호화에 필요한 Key를 수신)되면 MediaKeyComplete Event가 발생

 [Constructor(DOMString type, optional MediaKeyCompleteEventInit eventInitDict)]
 interface MediaKeyCompleteEvent : Event {
   readonly attribute DOMString keySystem;
   readonly attribute DOMString? sessionId;
 };

 addKey가 수행되고 Key수신을 위해서 라이선스 서버와 계속해서 메시지를 주고 받아야 하는 경우
 MediaKeyMessageEvent 발생
    서버 URL / 요청할 Message를 App에 전달.
    3 / 4 번을 반복 수행하고 최종적으로 Key 수신이 완료되면 MediaKeyCompleteEvent로 완료


                                                                                       INISOFT Co.,Ltd
* Diceplayer for android
구동 시나리오
5) 재생
Media Player와 CDM 모듈간의 내부 연동
미디어 포맷마다 암호화 방식이 달라서 이 부분은 별도의 표준화가 필요한 상황 ( 표준화 없이 개별 Browser
별로 개발될 가능성도 높음 )

Media Player / CDM 모두 OS/HW 의존성이 높은 모듈이고 상호간의 Trust 관계가 필요한 부분이기 때문에
( Studio 인증에서 요구되는 Robustness Rule을 만족시키기 위해서 ) 표준화 없이 개별 플랫폼 , DRM 마다
각기 다른 방식으로 구현될 가능성이 높음
         AddKey()



Media
                    Streaming         Demux             Decode           Render
Player




CDM                                           Decrypt
                                복호화 KEY


                                                                 INISOFT Co.,Ltd
감사합니다.

         INISOFT Co.,Ltd

Más contenido relacionado

La actualidad más candente

La actualidad más candente (10)

[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
 
(131102) #fitalk get windows logon password in memory dump
(131102) #fitalk   get windows logon password in memory dump(131102) #fitalk   get windows logon password in memory dump
(131102) #fitalk get windows logon password in memory dump
 
해킹과 보안
해킹과 보안해킹과 보안
해킹과 보안
 
ShieldOne-SIG 제품소개서 3.5
ShieldOne-SIG 제품소개서 3.5ShieldOne-SIG 제품소개서 3.5
ShieldOne-SIG 제품소개서 3.5
 
화면 캡쳐 방지 솔루션
화면 캡쳐 방지 솔루션화면 캡쳐 방지 솔루션
화면 캡쳐 방지 솔루션
 
Block chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overviewBlock chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overview
 
웹 서비스를 위한 보안서버 구축방향
웹 서비스를 위한 보안서버 구축방향웹 서비스를 위한 보안서버 구축방향
웹 서비스를 위한 보안서버 구축방향
 
Hillstone networks utm 2016년
Hillstone networks utm 2016년Hillstone networks utm 2016년
Hillstone networks utm 2016년
 
(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기
 
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
 

Similar a Encrypted media extention

Sso drm esm (김찬욱)
Sso drm esm (김찬욱)Sso drm esm (김찬욱)
Sso drm esm (김찬욱)
현덕 윤
 

Similar a Encrypted media extention (20)

2014 동영상drm설명서 시온
2014 동영상drm설명서 시온2014 동영상drm설명서 시온
2014 동영상drm설명서 시온
 
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
 
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
 
Cross-Platfrom 기반 Agent 개발
 Cross-Platfrom 기반 Agent 개발 Cross-Platfrom 기반 Agent 개발
Cross-Platfrom 기반 Agent 개발
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers 개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
 
Kgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fKgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-f
 
04 alibaba cloud의 ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...
04 alibaba cloud의  ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...04 alibaba cloud의  ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...
04 alibaba cloud의 ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...
 
웹스트리밍동영상보안자료
웹스트리밍동영상보안자료웹스트리밍동영상보안자료
웹스트리밍동영상보안자료
 
Openstack security(2018)
Openstack security(2018)Openstack security(2018)
Openstack security(2018)
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
 
Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE
 
2015 n tels iot product lineup_2015
2015 n tels iot product lineup_20152015 n tels iot product lineup_2015
2015 n tels iot product lineup_2015
 
Cyberark (사이버아크) PAM IDENTITY 솔루션 : 접근제어, 인증관리, 권한제어, 자격관리
Cyberark (사이버아크) PAM IDENTITY 솔루션 : 접근제어, 인증관리, 권한제어, 자격관리Cyberark (사이버아크) PAM IDENTITY 솔루션 : 접근제어, 인증관리, 권한제어, 자격관리
Cyberark (사이버아크) PAM IDENTITY 솔루션 : 접근제어, 인증관리, 권한제어, 자격관리
 
Sso drm esm (김찬욱)
Sso drm esm (김찬욱)Sso drm esm (김찬욱)
Sso drm esm (김찬욱)
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
Implementation Case Study: Cloud Based FIDO2 Authentication by CrossCert
Implementation Case Study: Cloud Based FIDO2 Authentication by CrossCert Implementation Case Study: Cloud Based FIDO2 Authentication by CrossCert
Implementation Case Study: Cloud Based FIDO2 Authentication by CrossCert
 
게이트단의 보안
게이트단의 보안게이트단의 보안
게이트단의 보안
 

Encrypted media extention

  • 1. Encrypted Media Extensions v0.1 Draft proposal INISOFT Co., Ltd. Taehyun Kim thkim@inisoft.tv 2012.06.14 INISOFT Co.,Ltd
  • 2. 배경 WEB 기반 비디오와 DRM HTML5 Video tag를 기반으로하는 Web 비디오 시장은 커져왔으나 해결되지 않는 문제는 컨텐츠 보호가 필요한 Premium 비디오를 제공하는 방법이 없다는 것. 현재는 Flash/Silverlight와 같은 Plug-in이 필요. Media Play부분과 콘텐트 보호 부분의 분리가 어려움. Plug-in 포팅 이슈. ( HW GPU가속등 ) Plug-in이 필요한 부분과 표준화가 가능한 부분의 분리가 필요. • Mobile Smart Device 시장의 확대 • HW Video 가속 등 Plug-in 개발업체가 각 Device마다 대응하기 어려워짐 • Adobe의 Flash plug-in 개발 포기 • 표준을 통하여 HW 가속은 제조사가 Media 보안은 보안 업체가 하는 분리 방안이 필요해진 상황 • Device 별로 지원 가능한 Plug-in이 달라서 서비스 Deploy에 어려움이 존재 INISOFT Co.,Ltd
  • 3. Market Trends 미디어 콘텐트 보안을 위한 시장의 대응 • 배경 • HD 영상의 일반화로 Network / Storage 비용 증가 • Codec의 사실상의 통일 : H.264 / AAC • Simulcrypt for Broadcasting • 암호화 송출은 단일 규격 + 복수의 CAS를 통한 Key 전달 규격 • Multi DRM + Single Format • 보안상의 이유와 규제 , 업체들간의 이해관계로 인하여 KEY를 전달하는 방식에 대한 표준화는 불가능 • 1개의 파일포맷으로 다수의 DRM을 지원하는 방안이 대두되고 있음 • UltraViolet Common File format : 디즈니를 제외한 주요 스튜디오 및 서비스 , 솔루션 , 단말 업체가 모임 • MPEG-DASH Common Encryption : 단일한 암호화 방식을 제공 • 스트리밍 포맷의 단일화 • iOS의 HTTP Live Streaming 으로 촉발된 Adaptive Streaming 포맷의 대중화 • MPEG-DASH로 기존의 모든 HTTP기반 Adaptive Streaming 규격을 단일화 하려는 움직임 • OIPF / 3GPP 등 다수의 표준에서 MPEG-DASH기반으로 규격 제정 INISOFT Co.,Ltd
  • 4. SSL로는 안되는가? 왜 SSL으로는 미디어 보안이 되지 않는가? • 상호 인증 필요 Client Side Certificate 필요 DRM은 Client User를 못 믿는 구조. USER가 아닌 System/Device를 Trust하는 구조 • Protocol에 대한 비밀 주의 완벽한 콘텐트 보안은 HW적인 구현 밖에 없음. SW구현으로는 어느 정도 타협 해야 함. - Perfect한 protocol보다는 비밀주의를 통한 Reverse engineering 방지 - 코드 난독화 등 Key Hardening technique 사용 Cookie / HTTP 인증만으로는 정상적인 ID/Password를 알고 있는 사용자가 Key를 유출 시키는 것을 방지하기 어려움 별도의 Device key를 이용한 보안이 필요 INISOFT Co.,Ltd
  • 5. DRM의 기본 구성요소 미디어 콘텐트 보호의 구성 요소 콘텐트 포맷 MPEG-DASH • 파일 포맷 로 표준화 중 • 스트리밍 포맷 • 콘텐트 암호화/복호화 규격 Common Interface 안전한 전달 / 배포 권한 기술 • 단말 인증 ( PKI ) • PPV / Subscription • 메시지 암호화/서명 • 권한 상속 • Device 간 권한 공유 INISOFT Co.,Ltd
  • 6. Encrypted Media Ext. INISOFT Co.,Ltd
  • 7. Definitions Definitions 1) CDM : Content Decryption Module 2) Key System : 3) Session-ID : 4) Initialization Data : INISOFT Co.,Ltd * Diceplayer for android
  • 8. 구동 시나리오 1 ) 초기화 Key System을 선택하기 위한 시나리오 미디어 스트림 자체에 CDM을 초기화 하기 위한 Initialization Data를(복수개 가능) 포함한다. Ex) 라이선스 취득을 위한 라이선스 서버 URL, Contents ID needKey event : CDM 재생이 필요함을 알림 미디어 스트림에 포함된 Init Data를 Application에 전달. interface MediaKeyNeededEvent : Event { readonly attribute DOMString? keySystem; readonly attribute DOMString? sessionId; readonly attribute Uint8Array? initData; }; 전달 받은 KeySystem 정보를 이용하여 CDM 초기화 시도. INISOFT Co.,Ltd * Diceplayer for android
  • 9. 구동 시나리오 1 ) 초기화 예 – OMA DRM OMA DRM에는 다음과 같은 초기화 구동 Data가 필요. ROAP Trigger KeySystem : OMA DRM iniData : <roapTrigger xmlns="http://www.openmobilealliance.org/xmlns/roaptrigger"> <riID> <keyIdentifier xsi:type="roap:X509SPKIHash"> <hash>aXENc+Um/9/NvmYKiHDLaErK0fk=</hash> </keyIdentifier> </riID> <roURL>2498sdfcvxs@ri.example.com</roURL> <roapURL>http://ri.example.com/ro.cgi?tid=g97sd976s90</roapURL> <protocol>Acquisition</protocol> <signature>...signature_data...</signature> </roapTrigger> INISOFT Co.,Ltd * Diceplayer for android
  • 10. 구동 시나리오 2 ) CanPlayType()을 통한 Negotiation iniData를 통하여 사용할 KeySystem을 선택하는 과정 CanPlayType( MimeType , KeySystem )을 통하여 현재의 UA가 재생가능한 KeySystem을 선택 INISOFT Co.,Ltd * Diceplayer for android
  • 11. 구동 시나리오 3 ) GenerateKeyRequest()를 통한 License 요청 NeedKey Event에서 수신된 CDM 초기화 데이터를 CDM모듈에 전달하고 이를 통하여 라이선스 수신 요청 메시지를 생성 void generateKeyRequest(in DOMString keySystem, in Uint8Array? initData); CDM 모듈은 initData 정보를 기초로 하여 Key Request를 보낼 URL과 Data를 생성한다. 이를 MediaKeyMessage event로 전달한다. [Constructor(DOMString type, optional MediaKeyMessageEventInit eventInitDict)] interface MediaKeyMessageEvent : Event { readonly attribute DOMString keySystem; readonly attribute DOMString? sessionId; readonly attribute Uint8Array message; readonly attribute DOMString? defaultUrl; }; 여기에는 라이선스 서버의 URL과 Post해야할 message가 포함되어 있다. App은 이를 받아서 HTTP로 라이선스 서버에 POST한다. INISOFT Co.,Ltd * Diceplayer for android
  • 12. 구동 시나리오 3 ) GenerateKeyRequest()를 통한 License 요청 예 The request is for a Device RO. <?xml version="1.0" encoding="utf-8"?> <roap:roRequest xmlns:roap="urn:oma:bac:dldrm:roap-1.0" URL : Contents ID를 포함 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <deviceID> <keyIdentifier xsi:type="roap:X509SPKIHash"> ROAP Request : <hash>vXENc+Um/9/NvmYKiHDLaErK0gk=</hash> </keyIdentifier> </deviceID> Device 정보 / 서버 정보 / <riID> Device의 인증서 <keyIdentifier xsi:type="roap:X509SPKIHash"> Replay attack을 막기위한 <hash>aXENc+Um/9/NvmYKiHDLaErK0fk=</hash> </keyIdentifier> nonce등 </riID> <nonce>32efd34de39sdwefqwer</nonce> <time>2004-03-17T14:20:00Z</time> <roInfo> <roID>n8yu98hy0e2109eu09ewf09u</roID> </roInfo> <certificateChain> <certificate>miib123121234567</certificate> <certificate>miib234124312431</certificate> </certificateChain> <signature>321ue3ue3ue10ue2109ue1ueoidwoijdwe309u09ueqijdwqijdwq09uwqwqi009</signature> </roap:roRequest> INISOFT Co.,Ltd * Diceplayer for android
  • 13. 구동 시나리오 4 ) 라이선스 수신 및 AddKey() GenerateKeyRequest()의 결과를 라이선스 서버에 전달하면 그 결과가 수신됨 이를 AddKey()로 CDM에 전달하여 Key를 추가. void addKey(in DOMString keySystem, in Uint8Array key, in Uint8Array? initData, in DOMString? sessionId); addKey가 성공적으로 완료(복호화에 필요한 Key를 수신)되면 MediaKeyComplete Event가 발생 [Constructor(DOMString type, optional MediaKeyCompleteEventInit eventInitDict)] interface MediaKeyCompleteEvent : Event { readonly attribute DOMString keySystem; readonly attribute DOMString? sessionId; }; addKey가 수행되고 Key수신을 위해서 라이선스 서버와 계속해서 메시지를 주고 받아야 하는 경우 MediaKeyMessageEvent 발생 서버 URL / 요청할 Message를 App에 전달. 3 / 4 번을 반복 수행하고 최종적으로 Key 수신이 완료되면 MediaKeyCompleteEvent로 완료 INISOFT Co.,Ltd * Diceplayer for android
  • 14. 구동 시나리오 5) 재생 Media Player와 CDM 모듈간의 내부 연동 미디어 포맷마다 암호화 방식이 달라서 이 부분은 별도의 표준화가 필요한 상황 ( 표준화 없이 개별 Browser 별로 개발될 가능성도 높음 ) Media Player / CDM 모두 OS/HW 의존성이 높은 모듈이고 상호간의 Trust 관계가 필요한 부분이기 때문에 ( Studio 인증에서 요구되는 Robustness Rule을 만족시키기 위해서 ) 표준화 없이 개별 플랫폼 , DRM 마다 각기 다른 방식으로 구현될 가능성이 높음 AddKey() Media Streaming Demux Decode Render Player CDM Decrypt 복호화 KEY INISOFT Co.,Ltd
  • 15. 감사합니다. INISOFT Co.,Ltd