2008년 11월 4일 화요일

FMS 에서 비디오 콘텐츠를 streaming capture로부터 지키기

출처 : http://kb.adobe.com/selfservice/viewContent.do?externalId=kb405456&sliceId=2

적지 않은 사람들이 동영상 캡쳐 프로그램 또는 swf 역컴파일을 통해 알아낸 URL로 비디오 콘텐츠를 떠가는데, FMS3 와 Flash Player 9,0,115 이상을 이용해서 이를 막을 수가 있습니다.

(라고 일단 주장하고 있습니다.)

adobe 에서 이야기하는 방법은 3가지인데 아래와 같습니다.

  1. Enable SWF Verification.
  2. Use RTMPE and deny non-RTMPE connections.
  3. Encrypt video assets with Adobe Flash Media Rights Management Server (FMRMS) (limited to Adobe AIR solutions)

이 중 3번 항목은 별도의 솔루션을 구매해야 하기 때문에 패스하고 1번과 2번을 설정하는 법을 살펴보면


1. Enable SWF Verification

FMS3 서버가 배포되는 swf 의 해쉬값을 갖고 있다가 접속이 발생하면 이를 비교해서 이상한 값을 보내는 클라이언트가 있으면 접속을 끊어버린다고 하는군요.

앞에서 이야기한 바와 같이 Flash Player 9,0,115 이상에서만 이 기능이 가능하고 FMS3 서버 설정을 이용해서 특정 버전 이상의 클라이언트만 접속할 수 있도록 설정할 수도 있으니 이건 큰 문제가 안되겠네요.

설정하는 방법은 무척 간단한데 설치된 FMS3 의 conf 디렉토리 밑을 뒤져보면 Application.xml 이라는 파일을 열어서 <SWFVerification> 항목을 true 로 바꿔주면 됩니다.

그리고 SWF Verification 에 사용할 swf 파일이 있는 경로를 <SWFFolder>에 지정해 주면 되는데, 이걸 지정하지 않으면 해당 application 하단의 SWFs 디렉토리에서 swf 파일을 찾으니 디렉토리를 생성해서 swf를 넣어두어도 됩니다. 그리고 FinalHashTimeout 항목을 적절히 세팅해주면 끝.

말이 복잡한데

<Application>
    ..... 다른 설정들 어쩌구저쩌구...
    <SWFVerification enabled="true">
    <SWFFolder></SWFFolder>
    <FinalHashTimeout>20</FinalHashTimeout>
    </SWFVerification>
    ..... 다른 설정들 어쩌구저쩌구...
</Application>

이렇게 해면 된다는 이야깁니다.


2. Use RTMPE and deny non-RTMPE connections.

이 기능은 SSAS(Server-Side Action Script) 와 플러그인을 이용하는 관계로 FMS3 서버중 FMSS(Flash Media Streaming Server)는 사용할 수 없고 Flash Media Interactive Server 에서만 사용할 수 있습니다.

SSAS를 이용하거나 또는 플러그인을 만들어서 RTMPE만 접속이 가능하도록 할 수 있는데요, 아무래도 SSAS가 써먹기는 편리합니다.

다음의 코드를 application.onConnnect 핸들러에 추가한 다음 FMS 를 리스타트시키면 적용 끝.

application.onConnect = function(clientObj) {
    //only allow rtmpe and rtmpte connections
    if(clientObj.protocol == "rtmpe") || (clientObj.protocol == "rtmpte"){
        return true;
    }
    return false
}


플러그인 형태로 만드실 분은 포스팅 처음에 알려드린 URL로 가셔서 adaptors.zip 을 받아보면 cpp 로 된 샘플파일이 있으니 참고해서 만드시면 되겠습니다.

댓글 없음:

댓글 쓰기

가장 많이 본 글