一篇文章解读阿里云视频点播内容安全机制

maoer · · 857 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

摘要: 如何保障视频内容的安全,不被盗链、非法下载和传播,是困扰众多企业已久的问题,特别是独播剧、在线教育、财经金融、行业培训等在线版权视频领域尤为迫切,处理不好会造成极为严重的经济损失,甚至法律风险。阿里云视频点播提供了完善的内容安全保护机制,可以满足不同业务场景的安全需求。 1. 概述 如何保障视频内容的安全,不被盗链、非法下载和传播,是困扰众多企业已久的问题,特别是独播剧、在线教育、财经金融、行业培训等在线版权视频领域尤为迫切,处理不好会造成极为严重的经济损失,甚至法律风险。 阿里云视频点播提供了完善的内容安全保护机制,可以满足不同业务场景的安全需求。 ![bbee2195b50ff53084572c325db1f148f2680b1d.png](https://static.studygolang.com/180703/ea338f21b70ee381d249bfef785ea8d3.png) 2. 访问限制 访问限制是在云端配置视频资源的访问策略,达到基本的保护目的,主要手段有: Referer、IP和UA(User-Agent)的黑白名单 一定周期内,URL的访问次数限制、独立IP数限制 2.1 Referer黑白名单 基于 HTTP 协议支持的 Referer机制,通过 Referer跟踪来源,对来源进行识别和判断,用户可配置访问的 Referer 黑、白名单(二者互斥)来限制视频资源被访问的情况。 支持黑名单和白名单两种模式,访客对资源发起请求后,请求到达CDN 节点,节点会根据用户预设的防盗 链黑名单或白名单进行过滤,符合规则可顺利请求到视频数据;若不符合,请求会被拒绝,并返回403响应 码。 配置后会自动添加泛域名支持,例如填写a.com,最终配置生效的是*.a.com,所有子级域名都会生效。 由于移动端一般拿不到Referer,当前默认支持空Referer访问,可选择关闭。 示例 设置点播域名 vod-test1.cn-shanghai.aliyuncs.com 的Referer白名单为 aliyun.com,且不允许空Referer访问,请求 数据: curl -i 'http://vod-test1.cn-shanghai.aliyuncs.com/sv/5101d1f8-1643f9ab241/5101d1f8-1643f9ab241.mp4' 返回 ![0c0a2d86cc334f330704f83fd5ed994000d770b1.png](https://static.studygolang.com/180703/0810804e4dc0514c25bd904eee624412.png) 当请求带上允许的referer后即正常返回: curl -i 'http://vod-test1.cn-shanghai.aliyuncs.com/sv/5101d1f8-1643f9ab241/5101d1f8-1643f9ab241.mp4' \ -H 'Referer: http://www.aliyun.com' 2.2 UA黑白名单 UA(User-Agent)是一个特殊字符串头,帮助服务端识别用户使用的操作系统及版本、CPU类型、浏览器及版本、 浏览器渲染引擎&语言和插件等。可通过UA黑白名单来限制特定浏览器或终端的访问。 如PC端IE9浏览器: UserAgent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0; 可模拟HTTP请求验证: curl -i 'http://vod-test1.cn-shanghai.aliyuncs.com/sv/5101d1f8-1643f9ab241/5101d1f8-1643f9ab241.mp4' \ -H 'User-Agent: iPhone OS;MI 5' 2.3 IP黑白名单 视频点播支持配置IP黑名单或白名单,拒绝或只允许特定IP的访问。 支持IP列表添加,并支持添加IP网段,例如127.0.0.1/24。 网段127.0.0.1/24,24表示采用子网掩码中的前24位为有效位,即用32-24=8bit来表示主机号,该子网可以容纳2^8 - 2 = 254 台主机,故可表示IP网段范围:127.0.0.1~127.0.0.255。 可选择优先使用 remote_addr 或 X-Forwarded-For(XFF) 作为请求端IP,或者同时匹配。 2.4 访问次数和独立IP数限制 点播服务可限制媒体资源在一定时间周期内(如1天)的最大访问次数和最大独立IP数,核心原理是所有请求先到中心化的访问计数服务进行验证,判断是否超过预设的阈值,若超过则拒绝服务,返回HTTP 403。 该限制为URL(包括文件地址和签名信息)维度而非文件维度,但可配置忽略URL中的部分参数;限制的阈 值到域名粒度,可单独设置。 访问计数服务是多区域部署的中心化服务,一个URL只能被调度到其中一个区域,以保证中心化计数。 CDN边缘节点收到请求后会访问中心化计数服务进行计数和验证。 2.5 小结 访问限制的使用门槛很低,只需简单配置即可使用,能起到一定的保护作用,特别是Web端。 Referer和UA都是基于HTTP Header,容易被伪造,安全性低。 IP黑白名单机制和访问数限制,无法实现内容分发给大量C端用户,不适合广泛的内容消费场景,且后者在 阈值范围内也可能被非法访问。 3. 播放中心鉴权 播放地址若固定不变会带来持久的非法扩散传播,且无法有效遏制,视频点播提供的URL鉴权可通过生成动态的加密URL(包含权限验证、过期时效等信息)来区分合法请求,以达到保护视频资源的目的。 开启URL鉴权后,点播的播放器SDK、获取播放地址的API/SDK都会自动生成带时效的播放URL;如需要自己生成鉴权的动态URL,则可使用下述 鉴权 法。 开启URL鉴权后,所有媒体资源,包括视频、音频、封面、截图等地址都会进行鉴权。 鉴权Key的设置是以域名为粒度,且存于服务端以确保安全;支持主、备Key平滑切换,若更换主Key,可使用备Key生成播放地址,以做为更换的桥接,实现交替更新。 鉴权方法 鉴权URL构成 http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash 鉴权URL由播放文件地址+验证串构成,验证串是根据鉴权key+过期时间通过md5算法计算得出,且具有时效性, 默认为3600秒(可后台配置)的有效时间,可在生成播放地址或获取地址时设置过期时间;若地址过期则访问时 CDN会返回HTTP 403。 动态地址示例 http://vod.example.com/video/aliyun-sample.mp4?auth_key=1500523200-0-0-80cd3862d699b7118eed99103f2a3a4f 示例中的auth_key参数值前缀1500523200(时间为2017-07-20 12:00:00),表示该地址会在2017-07-20 13:00:00过期。 更多信息可参考 阿里云视频点播-URL鉴权。 4. 业务方二次鉴权 播放中心鉴权使用了阿里云的默认鉴权中心,但由于没有客户业务请求信息的输入,对盗链等非法请求的判断还比较单一,使用二次鉴权会更加精准。 二次鉴权是指点播CDN将用户的请求透传到客户的鉴权中心,由客户自己判定该请求是否合法,CDN根据 客户的判断结果执行相应动作:允许或拒绝访问。 二次鉴权需要客户自己开发和部署鉴权中心,该鉴权中心的域名如果同时在 CDN上面加速,可以按照一定 规则缓存客户的鉴权结果,以减轻客户鉴权中心的压力。点播CDN会默将把用户请求的 headers 和 request_uri 透传到客户自定义的鉴权中心,并根据鉴权中心返回的结果执行相应的动作。过程如下图: ![7f79da5eb184104b90237d9972cc2e0b4c2290c0.png](https://static.studygolang.com/180703/8ec21f75f393b21d66e90e714c96811f.png) 如业务方可将其用户的登录Cookie或UUID等信息隐藏于播放请求中,进而透传到自己的鉴权中心以判定是否为合法用户。 5. 视频加密 防盗链安全机制能有效保障用户的合法访问,但对于付费观看视频的场景,用户只需通过一次付费行为拿到视频合 法的防盗链播放URL,将视频下载到本地,进而实现二次分发。因此,防盗链方案对于视频版权保护是远远不够的。视频文件一旦泄露,会给付费观看模式造成十分严重的经济损失。 阿里云视频加密是对视频数据加密,即使下载到本地,视频本身也是被加密的,无法恶意二次分发,可有效防止视频泄露和盗链问题。 5.1 阿里云视频加密 阿里云视频加密采用私有的加密算法和安全传输机制,提供云端一体的视频安全方案,核心部分包括 “加密转码” 和 “解密播放”。 核心优势: 每个媒体文件拥有独立的加密钥匙,能有效避免采用单一密钥时,一个密钥的泄露引起大范围的安全问题。 提供信封加密机制“密文Key+明文Key”,仅密文Key入库,明文Key不落存储,所有过程只在内存中,用完 即销毁。 提供安全的播放器内核SDK,涵盖iOS/Android/Flash多平台,自动对加密内容进行解密播放;H5播放器不支持加密视频的播放。 播放器和云端使用私有加密协议进行密文传输,不传输明文Key,有效防止密钥被窃取。 提供安全下载,缓存到本地的视频会再次加密,在确保无网离线播放前提下,防止视频被拷贝窃取。 注意:阿里云视频加密仅支持输出HLS格式,且只能使用阿里云播放器。 更多信息参考 阿里云-视频加密 5.2 HLS标准加密 HLS标准加密支持 HTTP Live Streaming 中规定的通用加密方案,使用AES-128对视频内容本身进行加密,同时能 支持所有的HLS播放器,用户可选择使用自研或开源的播放器。相比私有加密方案,灵活性更好,但使用门槛更 高、安全性更低: 用户需搭建密钥管理服务,提供密钥生成(用于转码时对视频内容进行加密)和解密服务(用于播放时获取 解密密钥),也可基于 阿里云KMS 进行封装。 用户需提供令牌颁发服务,用于验证播放端的身份,避免解密密钥被非法获取,此处为关键点,处理不好会千里之堤溃于蚁穴。 播放器和云端传输明文Key,容易被窃取。 更多信息参考 阿里云-HLS标准加密 5.3 小结 视频加密方案各有优劣,一般来说,越是标准、通用,灵活性越高,但安全性越低,选择哪种方案取决于自己的业务场景,有所取舍: 安全等级:阿里云视频加密 > HLS标准加密 阿里云视频加密安全性明显高于HLS标准加密。 易用性:阿里云视频加密 > HLS标准加密 阿里云视频加密提供云端一体解决方案,只需简单配置并接入阿里云播放器即可无缝集成加密能力;HLS标准加密需自建密钥管理和令牌颁发服务。 通用性:HLS标准加密 > 阿里云视频加密 HLS标准加密可适配所有M3U8播放场景;阿里云视频加密仅支持阿里云播放器 (Android/iOS/Flash)。 使用费用:阿里云视频加密 = HLS标准加密 阿里云视频加密和HLS标准加密都可免费使用。 iOS/Android/Flash使用阿里云视频加密或HLS标准加密会有很好的安全性;但由于H5端为明文,要保证更高的安全性首选商业DRM(Chrome等浏览器的原生支持)。 原文链接:http://click.aliyun.com/m/1000004537/

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

857 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传