DRM(암호화) 방식.JSP사용WowzaHLSaes128

참고 사이트 1)와우 더 hls공식 문서 http://www.wowza.com/docs/how-to-secure-apple-hls-streaming-using-drm-encryption#enabling-the-hls-encryption-api4RefineHomeWowzaStreamingEngineSupportedstreamingprotocolsandformatsAppleHLSWowzaStreamingEngine4.8.16isavailable!GototheDownloadspagetodownload.Seethe4.8.16ReleaseNotes.SecureHLSstreaming using DRM encryption with Wowza Streaming Engine Updated on 06/29/2021 11:11 am.www.wowza.com2)와우 더 genkey및 외부 key전송 http://www.wowza.com/docs/how-to-secure-apple-http-live-streaming-aes-128-external-method

Refine Home Wowza Streaming Engine Supported streaming protocols and formats Apple HLS Wowza Streaming Engine 4.8.16 is available!Go to the Downloads page to download. See the 4.8.16 Release Notes . Secure Apple HLS with AES-128 external encryption in Wowza Streaming Engine Updated on 06/29/2021 12…www.wowza.com3)암호화가 잘되고 있는지 테스트 http://www.wowza.com/docs/how-to-test-aes-encryption-for-apple-hls-streamsRefineHomeWowzaStreamingEngineSupportedstreamingprotocolsandformatsAppleHLSWowzaStreamingEngine4.8.16isavailable!GototheDownloadspagetodownload.Seethe4.8.16ReleaseNotes.TestAESencryptionforAppleHLSstreamsfrom Wowza Streaming Engine Updated on 06/29/2021 12:41 pm…www.wowza.com

와우 더 hls는 ts의 모음에서 파일이므로 drm이 가능하다.stream과 vod모두 가능하다고 본다. 아직 vod만 하고 보니 이 글을 쓰고 stream하자.

암호화하는 방법은 공식 문서에 잘 설명되고 있지만 내가 구현한 것을 정리하자.우선 키 파일을 만들어야 하므로 클라이언트에 열쇠를 전달해야 한다.

1.key파일 만드는 법 와우 자를 설치하면,[install-dir](보통으로 설치한 다면/usr/local/WowzaStreamingEngine)에[install-dir]/bin파일에 genkey.sh파일이 있다. 이를 이용하고 만들 수 있다.genkey.batiphone[stream-name][key-url]*여기서 key-url에 어떤 경로를 넣어야 할지 궁금하겠지만 key-url경로는 암호화된 파일을 해독하기 위해서 재생단에 열쇠를 주는 웹 서버 url페이지를 의미한다.즉 와우 더가 자동적으로 그 url에서 키를 받고 전달한다.그래서 열쇠를 전달하는 url페이지를 만들고 그 경로를 저기에 써서 key를 만들면 좋다.( 만드는 방법은 공식 문서 참고 페이지 2)을 봐도 좋고, 아래에 설명할 것)즉, 순서상은 key파일을 먼저 만드는 게 아니라 key-url페이지를 먼저 만들어야 한다.음, 우선 key 만들 때는 뭐든 넣어도 나중에 vi에 수정해도 좋으니까.

어쨌든 키를 만드는 명령은 다음과 같다. 나는 와우자에게 제공하는 [install-dir] / content / sample.mp4로 테스트 했는데 #cd / usr / local / Wowza Streaming Engine / bin #. / genkey.shiphonesample.mp4 http://[ip] : [port] / mystream.jsp

이렇게 하면 [install-dir]/bin 경로에 sample.mp4.key 파일이 생긴다.이를 [install-dir]/keys 폴더로 이동시킨다.

#cp sample.mp4.key.. /keys /

그러면 키는 준비 끝이다.키 파일을 열어 보면 자동으로 생성된 키 값과 key-url이 적혀 있다.

#visample.mp4.key에서는 지금부터 key-url을 만드는 방법을 알아보자.

2.key-url 만드는 법 공식 문서 참고 페이지 2)를 참고하면 된다.key-url의 목적은 크게 두 가지인데 1) 키를 전달하고 2) 특정 사용자에게 제한을 두기 위해서다.

공식 문서에서는 3가지 방법으로 안내하고 있으며 (ASP.NET, JSP, PHP) 나는 JSP를 선택했다.웹서버를 하나 만들어서 mys tream.jsp를 만들어줬다. 그런데 나는 스프링 프레임워크로 해서 더 정확하게는//mystream.jsp이렇게 jsp페이지를 만들어서 get MyStream 요청을 보내도록 했다.그리고 컨트롤러에 다음과 같이 함수 추가.

이렇게 하면 http://127.0.0.1:80/mystream.jsp라고 했을 때 키값이 응답으로 내려간다.그럼 위에서 키를 만들 때 키url 값을 http://127.0.0.1:8080/mystream.jsp로 쓰면 된다.

#. / genkey.sh iphone sample.mp4 http://127.0.0.1:8080 / mystream.jsp.

혹은 key를 먼저 만들었다면 sample.mp4.key 안의 url 값을 수정하면 된다.

3. 암호화돼 있는지 확인자 key를 만들어주고 key-url도 만들어줬다면 drm이 잘된 것이다.나는 vodsample.mp4로 했으므로 재생 주소가 다음과 같다.http://[wowza-ip]:1935/vod/mp4:sample.mp4/playlist.m3u8 이걸 재생해보면 예전과 동일하게 재생할 수 있어? 암호화하면 뭔가 제한이 생길텐데.

암호화가 잘 되어 있는지 확인해 보자. 참고 페이지 3)를 따라해 보면 된다.재생url을 인터넷 주소창에 검색해 본다.그러면 playlist.m3u8 파일이 다운로드 된다. 이것을 메모장으로 열어보자.

그렇다면 안에 chunklist_w1776170579.m3u8과 같은 정크리스토파일명이 있을 것이다.http://[wowza-ip-adress]:1935/vod/mp4:sample.mp4/chunklist_w1776170579.m3u8이 주소를 다시 주소창에 친다.그러면 chunklist_w1776170579.m3u8 파일이 다운로드 된다. 이것을 다시 메모장으로 열어본다.

그러면 이렇게 ts 목록이 나타날 텐데 이 중에서 어떤 ts든 선택하고 다시 인터넷 주소창에 검색을 해보도록 하겠습니다.http://[wowza-ip-address] : 1935/vod/mp4 : sample.mp4/media_w2093100527_4.ts

그러자 Media_w2093100527_4.ts 파일이 저장됐고, 이걸 재생해보니 재생이 안 된다고 나오니 암호화가 잘 된 것이다.

이를 헤아려 보면 지금 암호화가 잘 되고 있고 재생 시 복호화도 잘 되고 있음을 알 수 있다.그럼 남은 건 특정 사용자는 재생할 수 없도록 하고, 내가 원하는 사용자만 복호화 키를 전달하도록 하는 게 남았다.이를 찾는데 조금 걸렸지만 공식 문서를 보고도 이해가 가지 않았다.

4. 특정 사용자만 제한하는 것을 알면 생각보다 쉽다(´ω ))get MyStream에 코딩된 소스로 이미 알아차린 사람도 있겠지만, booleanis Valid=true; 값을 false에 넘긴다면 키를 주지 않고, 그러면 재생이 제대로 되지 않는다.

즉, key-url에 매개 변수를 넘겨 특정 사용자임을 체크할 수 있으면 된다.key-url에 파라미터를 전달하는 방법은 다음과 같다.

1.에서 키를 만들 때 key-url 맨 마지막에 keyinfo=securekey 값을 매겨준다.우리는 이미 키를 만들어 주었으니 파일을 수정하면 된다.

visample.mp4.key 이렇게 key-url 제일 마지막에 ?key info = securekey를 붙여준다.그리고 get MyStream 코드를 다음과 같이 수정한다.

userid라는 매개 변수를 받아 userid가 aaa일 때만 키를 리턴하도록 if문을 추가했다.

그리고 와우자 재생url로 http://[wowza-ip]: 1935/vod/mp4:sample.mp4/playlist.m3u8?userid=aaa 이렇게 재생url 뒤에 get 방식과 같이 인자를 붙이기만 하면 된다.

userid가 없거나 aaa가 아닌 경우에는 재생할 수 없다.

그럼 끝!!!!!!!!!!!!!!!!!

+ sream일때는 딱히 아무것도 없어서 그냥 key를 스트림의 이름으로 aaa.stream.key로 하고 재생url 뒤에 userid=aaa를 붙여줘!! vod와 똑같다.

참고 사이트 1)와우 더 hls공식 문서 http://www.wowza.com/docs/how-to-secure-apple-hls-streaming-using-drm-encryption#enabling-the-hls-encryption-api4RefineHomeWowzaStreamingEngineSupportedstreamingprotocolsandformatsAppleHLSWowzaStreamingEngine4.8.16isavailable!GototheDownloadspagetodownload.Seethe4.8.16ReleaseNotes.SecureHLSstreaming using DRM encryption with Wowza Streaming Engine Updated on 06/29/2021 11:11 am.www.wowza.com2)와우 더 genkey및 외부 key전송 http://www.wowza.com/docs/how-to-secure-apple-http-live-streaming-aes-128-external-method

Refine Home Wowza Streaming Engine Supported streaming protocols and formats Apple HLS Wowza Streaming Engine 4.8.16 is available!Go to the Downloads page to download. See the 4.8.16 Release Notes . Secure Apple HLS with AES-128 external encryption in Wowza Streaming Engine Updated on 06/29/2021 12…www.wowza.com3)암호화가 잘되고 있는지 테스트 http://www.wowza.com/docs/how-to-test-aes-encryption-for-apple-hls-streamsRefineHomeWowzaStreamingEngineSupportedstreamingprotocolsandformatsAppleHLSWowzaStreamingEngine4.8.16isavailable!GototheDownloadspagetodownload.Seethe4.8.16ReleaseNotes.TestAESencryptionforAppleHLSstreamsfrom Wowza Streaming Engine Updated on 06/29/2021 12:41 pm…www.wowza.com

와우 더 hls는 ts의 모음에서 파일이므로 drm이 가능하다.stream과 vod모두 가능하다고 본다. 아직 vod만 하고 보니 이 글을 쓰고 stream하자.

암호화하는 방법은 공식 문서에 잘 설명되고 있지만 내가 구현한 것을 정리하자.우선 키 파일을 만들어야 하므로 클라이언트에 열쇠를 전달해야 한다.

1.key파일 만드는 법 와우 자를 설치하면,[install-dir](보통으로 설치한 다면/usr/local/WowzaStreamingEngine)에[install-dir]/bin파일에 genkey.sh파일이 있다. 이를 이용하고 만들 수 있다.genkey.batiphone[stream-name][key-url]*여기서 key-url에 어떤 경로를 넣어야 할지 궁금하겠지만 key-url경로는 암호화된 파일을 해독하기 위해서 재생단에 열쇠를 주는 웹 서버 url페이지를 의미한다.즉 와우 더가 자동적으로 그 url에서 키를 받고 전달한다.그래서 열쇠를 전달하는 url페이지를 만들고 그 경로를 저기에 써서 key를 만들면 좋다.( 만드는 방법은 공식 문서 참고 페이지 2)을 봐도 좋고, 아래에 설명할 것)즉, 순서상은 key파일을 먼저 만드는 게 아니라 key-url페이지를 먼저 만들어야 한다.음, 우선 key 만들 때는 뭐든 넣어도 나중에 vi에 수정해도 좋으니까.

어쨌든 키를 만드는 명령은 다음과 같다. 나는 와우자에게 제공하는 [install-dir] / content / sample.mp4로 테스트 했는데 #cd / usr / local / Wowza Streaming Engine / bin #. / genkey.shiphonesample.mp4 http://[ip] : [port] / mystream.jsp

이렇게 하면 [install-dir]/bin 경로에 sample.mp4.key 파일이 생긴다.이를 [install-dir]/keys 폴더로 이동시킨다.

#cp sample.mp4.key.. /keys /

그러면 키는 준비 끝이다.키 파일을 열어 보면 자동으로 생성된 키 값과 key-url이 적혀 있다.

#visample.mp4.key에서는 지금부터 key-url을 만드는 방법을 알아보자.

2.key-url 만드는 법 공식 문서 참고 페이지 2)를 참고하면 된다.key-url의 목적은 크게 두 가지인데 1) 키를 전달하고 2) 특정 사용자에게 제한을 두기 위해서다.

공식 문서에서는 3가지 방법으로 안내하고 있으며 (ASP.NET, JSP, PHP) 나는 JSP를 선택했다.웹서버를 하나 만들어서 mys tream.jsp를 만들어줬다. 그런데 나는 스프링 프레임워크로 해서 더 정확하게는//mystream.jsp이렇게 jsp페이지를 만들어서 get MyStream 요청을 보내도록 했다.그리고 컨트롤러에 다음과 같이 함수 추가.

이렇게 하면 http://127.0.0.1:80/mystream.jsp라고 했을 때 키값이 응답으로 내려간다.그럼 위에서 키를 만들 때 키url 값을 http://127.0.0.1:8080/mystream.jsp로 쓰면 된다.

#. / genkey.sh iphone sample.mp4 http://127.0.0.1:8080 / mystream.jsp.

혹은 key를 먼저 만들었다면 sample.mp4.key 안의 url 값을 수정하면 된다.

3. 암호화돼 있는지 확인자 key를 만들어주고 key-url도 만들어줬다면 drm이 잘된 것이다.나는 vodsample.mp4로 했으므로 재생 주소가 다음과 같다.http://[wowza-ip]:1935/vod/mp4:sample.mp4/playlist.m3u8 이걸 재생해보면 예전과 동일하게 재생할 수 있어? 암호화하면 뭔가 제한이 생길텐데.

암호화가 잘 되어 있는지 확인해 보자. 참고 페이지 3)를 따라해 보면 된다.재생url을 인터넷 주소창에 검색해 본다.그러면 playlist.m3u8 파일이 다운로드 된다. 이것을 메모장으로 열어보자.

그렇다면 안에 chunklist_w1776170579.m3u8과 같은 정크리스토파일명이 있을 것이다.http://[wowza-ip-adress]:1935/vod/mp4:sample.mp4/chunklist_w1776170579.m3u8이 주소를 다시 주소창에 친다.그러면 chunklist_w1776170579.m3u8 파일이 다운로드 된다. 이것을 다시 메모장으로 열어본다.

그러면 이렇게 ts 목록이 나타날 텐데 이 중에서 어떤 ts든 선택하고 다시 인터넷 주소창에 검색을 해보도록 하겠습니다.http://[wowza-ip-address] : 1935/vod/mp4 : sample.mp4/media_w2093100527_4.ts

그러자 Media_w2093100527_4.ts 파일이 저장됐고, 이걸 재생해보니 재생이 안 된다고 나오니 암호화가 잘 된 것이다.

이를 헤아려 보면 지금 암호화가 잘 되고 있고 재생 시 복호화도 잘 되고 있음을 알 수 있다.그럼 남은 건 특정 사용자는 재생할 수 없도록 하고, 내가 원하는 사용자만 복호화 키를 전달하도록 하는 게 남았다.이를 찾는데 조금 걸렸지만 공식 문서를 보고도 이해가 가지 않았다.

4. 특정 사용자만 제한하는 것을 알면 생각보다 쉽다(´ω ))get MyStream에 코딩된 소스로 이미 알아차린 사람도 있겠지만, booleanis Valid=true; 값을 false에 넘긴다면 키를 주지 않고, 그러면 재생이 제대로 되지 않는다.

즉, key-url에 매개 변수를 넘겨 특정 사용자임을 체크할 수 있으면 된다.key-url에 파라미터를 전달하는 방법은 다음과 같다.

1.에서 키를 만들 때 key-url 맨 마지막에 keyinfo=securekey 값을 매겨준다.우리는 이미 키를 만들어 주었으니 파일을 수정하면 된다.

visample.mp4.key 이렇게 key-url 제일 마지막에 ?key info = securekey를 붙여준다.그리고 get MyStream 코드를 다음과 같이 수정한다.

userid라는 매개 변수를 받아 userid가 aaa일 때만 키를 리턴하도록 if문을 추가했다.

그리고 와우자 재생url로 http://[wowza-ip]: 1935/vod/mp4:sample.mp4/playlist.m3u8?userid=aaa 이렇게 재생url 뒤에 get 방식과 같이 인자를 붙이기만 하면 된다.

userid가 없거나 aaa가 아닌 경우에는 재생할 수 없다.

그럼 끝!!!!!!!!!!!!!!!!!

+ sream일때는 딱히 아무것도 없어서 그냥 key를 스트림의 이름으로 aaa.stream.key로 하고 재생url 뒤에 userid=aaa를 붙여줘!! vod와 똑같다.

error: Content is protected !!