鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 加密解密 > >

wowza直播流媒体防盗链之苹果流http

来源:互联网 作者:佚名 时间:2015-10-09 06:16
笔者通过系统日志发现有两家盗流网站 http://www.41478.com/index.htm 和 http://live.64ma.com/ 在盗取我们服务器的资源,最可恶的是第二家网站盗流平均每天 20 万 PV 。所以笔者无奈之下只能对流 媒体 服务器进行相关 防盗 链设置工作。 方案一、基于 DRM
 笔者通过系统日志发现有两家盗流网站http://www.41478.com/index.htmhttp://live.64ma.com/在盗取我们服务器的资源,最可恶的是第二家网站盗流平均每天20PV。所以笔者无奈之下只能对流媒体服务器进行相关防盗链设置工作。
方案一、基于DRM(数字版权管理)方法

具体实施步骤如下所示:

1、使用DRM方案用于控制对直播和点播视频的URL链接的加密工作。其密钥放置在[安装dir)/密钥目录

2、这次采用的是aes-128的加密方式直播或点播内容通过密钥文件被加密。密钥文件是一个以流名字命名的txt文件

3直播demo如下所示:

[install-dir]/keys/myStream.key

点播流demo

[install-dir]/keys/sample.mp4.key

4、对于可用的加密算法,这个key文件内必须包含如下内容:

cupertinostreaming-aes128-method: AES-128

cupertinostreaming-aes128-url: http://mycompanykeyserver.com/authenticate.aspx

cupertinostreaming-aes128-key: 0x123456789ABCDEF123456789ABCDEF12

cupertinostreaming-aes128-iv: 0xFEDCBA9876543210FEDCBA9876543210

参数解释:

cupertinostreaming-aes128-method:加密算法

cupertinostreaming-aes128-url: 该参数被播放器用来检索解密密钥

cupertinostreaming-aes128-key:这个十六进制编码,128位内容加密密钥

cupertinostreaming-aes128-iv:十六进制编码的初始化向量用于加密。如果省略,chunk ID作为每个苹果直播流规范并将其用作初始化向量苹果流通过服务器端的api使用密钥数据传输保护视频流不被盗取。

5、首先在xml文件内打开苹果流加密api属性

在最后的properties里面添加(application.xml

<Property>

       <Name>cupertinoEncryptionAPIBased</Name>

       <Value>true</Value>

       <Type>Boolean</Type>

</Property>

6、其次当添加了服务器端模块,苹果流在被调用时将随机创建加密的流地址

调用方法:

public void onHTTPCupertinoEncryptionKeyVODChunk(HTTPStreamerSessionCupertino httpSession, IHTTPStreamerCupertinoIndex index, CupertinoEncInfo encInfo, long chunkId, int mode)

{

}

public void onHTTPCupertinoEncryptionKeyLiveChunk(ILiveStreamPacketizer liveStreamPacketizer, String streamName, CupertinoEncInfo encInfo, long chunkId, int mode)

{

}

函数解释:

encInfo变量保存了当前的加密信息对于一个给定的流和用于控制流加密。它还用于根据需要旋转钥匙,如果支持的加密方法,您正在使用。下面的代码片段显示如何设置加密的每个加密方法:

AES-128 Encryption

示例代码:

Code:

encInfo.setEncMethod(CupertinoEncInfo.METHOD_AES_128);

encInfo.setEncUrl("http://mycompanykeyserver.com/authenticate.aspx");

encInfo.setEncKeyBytes(BufferUtils.decodeHexString("123456789ABCDEF123456789ABCDEF12"));

encInfo.setEncIVBytes(BufferUtils.decodeHexString("FEDCBA9876543210FEDCBA9876543210"));

7、密钥传输配置

a)      从官网下载wms-plugin-collection.zip压缩包并解压后将插件collection.jar上传到owza媒体服务器的安装文件夹[安装目录] / lib目录,然后重新启动服务器;

b)      修改流媒体服务器的配置文件Application.xml,在配置文件的<Properties> 容器内添加如下内容:

点击(此处)折叠或打开

  1. <Property>
  2.     <Name>cupertinoEncryptionBaseURL</Name>
  3.     <Value>http://[wowza-ip-address]:1935</Value>
  4. </Property>
  5. <Property>
  6.     <Name>cupertinoEncryptionSharedSecret</Name>
  7.     <Value>[enckeysharedsecret]</Value>
  8. </Property>
  9. <Property>
  10.     <Name>cupertinoEncryptionLiveRepeaterSharedSecret</Name>
  11.     <Value>[mysharedsecret]</Value>
  12. </Property>

网友评论
<