AES 内容保护

Posted

技术标签:

【中文标题】AES 内容保护【英文标题】:AES Content Protection 【发布时间】:2017-08-27 20:13:23 【问题描述】:

我想要将文件 m3u8 从 Wowza Streaming 流式传输到 jwPlayer。我也想让视频无法阅读或下载,我在链接中阅读: https://support.jwplayer.com/customer/portal/articles/1430261-aes-content-protection 关注链接:

var playerInstance = jwplayer("myElement");
playerInstance.setup(
file: 'sample_aes_stream.m3u8',
aestoken: 'EXAMPLE_AES_TOKEN'
);

我使用 AES 解密将我的视频 (.mp4) 加密为 index.m3u8,其中包含许多段文件 (.ts)。文件 m3u8 仅在有密钥文件时读取。但是在下面的演示中,我不明白

jwplayer("myElement").setup(
file: 'sample_aes_stream.m3u8',
aestoken: 'EXAMPLE_AES_TOKEN'
);

EXAMPLE_AES_TOKEN 是什么??? 关注链接:http://iphim.vn/xem-phim-phut-giay-sinh-tu-3136.html 您可以看到我无法使用 IDM(互联网下载管理器)下载视频。我想做但是不知道怎么做。请帮帮我!

【问题讨论】:

【参考方案1】:

EXAMPLE_AES_TOKEN 是什么???

是解密视频内容的关键

请确保您的 JWPlayer 支持 HLS-AES128 加密

企业版能够解密流段 使用 AES-128 加密。使用加密时,m3u8 播放列表 文件需要引用对应的密钥文件,这样JW 玩家可以检索密钥进行解密。使用 aestoken 配置,播放器也可以传递一个token到key请求 URI,增强 AES 的安全性。

在 wowza 流媒体上,尝试How to secure Apple HTTP Live Streaming (AES-128 - external method)

    您需要在 Wowza 进行配置。设置 Key 对视频进行编码。 提供密钥以解密视频内容的密钥网址

例如。如果我们在 Wowza 定义 key 是“PATRICKZ-KEY”。我们需要在 Key URL 处使用 same key

<?php
    header('Content-Type: binary/octet-stream');
    header('Pragma: no-cache');
    echo hex2bin('PATRICKZ-KEY');

?>

【讨论】:

【参考方案2】:

属性 aestoken 实际上是一个令牌。它不是解密视频的关键。 HLS 视频可以在其主播放列表中包含一个带有 url 的标签,您可以在其中获取 aes 密钥。例如,对于像

这样的主播放列表
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10, 
#EXT-X-KEY:METHOD=AES-128,URI="http://keyserver.com/key.enc",IV=0x1c341b1db8ff5399501511a99c8c7d14**
fileSequence0.ts
#EXTINF:10, 
fileSequence1.ts
#EXT-X-ENDLIST

带有#EXT-X-KEY标签的行保存了处理aes解密的数据,包括密钥的url。

问题是 url 指出的资源应该受到某种东西的保护……在大多数情况下是一个令牌(通常是一个 JWT)。因此,jwplayer 将对该 url 发出一个 get 请求,附加一个带有键“token”且值等于属性“aestoken”值的查询参数。

所以,如果你的设置是

jwplayer("myElement").setup(
file: 'sample_aes_stream.m3u8',
aestoken: 'EXAMPLE_AES_TOKEN'
);

然后使用上面的示例播放列表,您的 jwplayer 将执行表单的获取请求

http://keyserver.com/key.enc?token=EXAMPLE_AES_TOKEN 

获取加密密钥。此外,该查询参数在 jwplayer 的以下请求中传递。

看看https://developer.jwplayer.com/jwplayer/docs/jw8-enable-aes-decryption。

【讨论】:

以上是关于AES 内容保护的主要内容,如果未能解决你的问题,请参考以下文章

autojs的AES和RSA加解密。全方位保护您的源码

在PowerShell中使用AES加密

哈希和加密相结合:保护安全

在 Powershell 中查找受密码保护的 .ZIP 文件

在 Spring 应用程序中保护重要的密钥/配置

elasticsearch 触发写保护