加密视频

本文主要描述加密视频涉及到的技术、基础概念,以及加密视频播放的工作原理。

加密视频

加密视频是经过加密的,播放的时候需要经过用户认证,然后在线获取解密密钥,才能解密并进行播放。

加密视频基础概念

DRM

数字版权管理(Digital rights management)是一个意义广泛的术语,任何控制使用技术手段获取受版权保护内容的方案都可以称为DRM,其目地就是阻止对数字内容的非法访问。本质上,DRM把数字内容的访问控制权交给计算机程序。DRM是一系列访问控制技术的集合。控制的方式和应用层出不穷,这里举几个例子:

  • 一家公司通过设置其服务器来阻止转发敏感电子邮件。
  • 电子书服务器根据内容的版权持有者设定的限制限制对资料的访问,拷贝和打印
  • 电影制片厂在其DVD上包含软件,可将用户可以制作的副本数量限制为两个。
  • 音乐标签在一种CD上发布标题,其中包含旨在“迷惑”翻录软件的信息

现在,我们很容易就可以通过文件共享网络在互联网上分发数字内容,使得传统版权法已无法应用于实践。。通过网络,我们可以免费下载高清电影、MP3,就很少有人去购买正版的CD/DVD。音乐公司,电影公司就很难赚到钱,这实际上是不利于行业发展的,也影响到创作人的热情。当然,靠人自觉或是起诉每一个非法使用者是不现实的,只能靠技术手段来解决问题。DRM正是为了解决数据内容的合法性。第一代DRM软件,意在控制拷贝;第二代DRM软件,意在控制对作品或设备的使用、查看、拷贝、打印及修改。

DRM在保护版权的同时也带来一些问题。2007年2月6日,乔布斯向外界发布了一封公开信,信中称,苹果已经得出结论,如果向其他公司提供DRM保护,仍不能保证从大唱片公司购买的歌曲不被盗版。因此苹果更愿意完全废止DRM技术,以便所有的MP3都能播放从任何一家在线音乐店购买的音乐。同时,使用DRM技术用户容易发生隐私信息等的泄漏,因此,苹果也呼吁各大唱片公司停止使用DRM技术。微软董事长比尔·盖茨在2007年3月一次接受采访时,也明确表示了对DRM的失望。他认为,DRM让那些合法购买音乐的消费者饱受折磨,却并没有起到防止盗版的作用。“DRM没有做到它应尽的职责”。让那些付费下载音乐的消费者烦恼的是,iPod音乐商店iTunes上下载的音乐受DRM保护,无法在 SanDisk、创新或者是微软的Zune等播放器上播放。

EME

Encrypted Media Extensions是一个W3C规范,属于HTMLMediaElement的扩展,定义了一组API,使得Web应用可以控制加密内容的播放。EME属于HTML的扩展,意味着浏览器对它的支持是可选的:如果浏览器不支持加密媒体,它将无法播放加密媒体。可以说EME就是一种DRM。EME的主要特性是,互联网用户将能够在网络上看到更多的好莱坞内容,而不需要任何插件,例如Silverlight或Flash。
####相关组件
EME的实现使用到如下组件:
Key System: 密钥系统是解密机制或/和内容保护提供者的通用术语,用于生成、管理和分发密钥。它是一种内容保护机制(DRM)。EME没有定义具体的Key System。视频加密相关Key System有:

  • widevine:    [‘com.widevine.alpha’],
  • playready:  [‘com.microsoft.playready’, ‘com.youtube.playready’],
  • clearkey:    [‘webkit-org.w3.clearkey’, ‘org.w3.clearkey’],
  • primetime: [‘com.adobe.primetime’, ‘com.adobe.access’],
  • fairplay:     [‘com.apple.fairplay’]

一般而言,Android系统支持widevine,iOS系统支持fairplay,windows系统支持playready,如果需要支持其它key system,就需要集成一个额外的组件。如果要考虑支持多端,视频网站就要支持多个key system。
**Content Decryption Module (CDM):**允许播放加密媒体的客户端软件或硬件机制。 与Key Systems一样,EME没有定义具体的CDM,但为应用程序与可用的CDM交互提供接口。CDM功能实现有几种可能的选择:

  • 仅解密,使用普通媒体管道进行播放,例如通过元素。
  • 解密和解码,将视频帧传递给浏览器进行渲染。
  • 解密和解码,直接在硬件(例如GPU)中渲染。

有多种方式可以为Web应用程序提供CDM:

  • 浏览器集成CDM
  • 单独发布CDM
  • 操作系统集成CDM
  • 在固件中包含CDM
  • 硬件支持CDM

在Android系统上,通过MediaDrm与MediaCrypto与服务器进行交互,以获取解密密钥并解密。

**许可证(密钥)服务器:**与CDM交互以提供解密媒体的密钥。 与许可证服务器的协商是应用程序的责任。
**打包服务:**对分发/消费的媒体进行编码和加密。

EME通用的实现栈
加密视频_第1张图片
这个图也表示了加密视频的播放流程

主要接口

接口 说明
requestMediaKeySystemAccess 请求访问特定的Key System,如果成功,会返回一个MediaKeySystemAccess对象
MediaKeySystemAccess 用于访问Key System。有两个方法:createMediaKeys - 创建一个MediaKeys对象;getConfiguration:返回支持的配置信息
MediaKeys 与video元素关联的key,用于播放解密。MediaKeys.createSession():创建一个MediaKeySession对象,用于与CDM进行消息交换。 MediaKeys.setServerCertificate():用于加密发送到license服务器的消息。
MediaKeySession 代表与CDM进行消息交换的一个上下文,方法有:
MediaKeySession.close()d
MediaKeySession.generateRequest()
MediaKeySession.load()
MediaKeySession.remove()
MediaKeySession.update()

正是通过这些接口,按照一定的流程与服务器进行交互完成认证,并获取解码密钥。

相关技术

1 MSE

媒体源扩展(MSE)定义了一组JavaScript API,使得页面可以从从音频或视频片段构建用于播放的流。既由页面负责媒体数据的加载,页面可以通过js分段从服务器获取数据,再组装为视频流。从而使得自适应流和时移的实现成为可能。在Chrome浏览器上,EME的实现是基于MSE的。基于MSE,可以实现根据网络条件,动态调整码率的功能。
#####2 基于HTTP的动态自适应流媒体(DASH)
DASH(也称为MPEG-DASH)旨在通过分片实现尽可能最佳的媒体传输,包括流媒体和下载。其他几种技术也可以做类似的事情 - 比如苹果的HTTP Live Streaming(HLS)和微软的Smooth Streaming。但是DASH是通过基于开放标准的HTTP进行自适应比特率流传输的唯一方法。
这与EME和MSE有什么关系呢?基于MSE的DASH实现可以解析manifest,以适当的比特率下载视频片段,并在需要播放时将它们提供给视频元素 - 使用现有的HTTP基础架构。通过MSE,我们可以在HTML5中实现MEPG-DASH。

为何要用加密视频

视频加密,是为了防止授权用户非法拷贝,并分享授权媒体。当然,这种技术并不是绝对安全的。本质上,很多技术手段都是“防君子不防小人”,并不能完全防止破解,只是提升了破解难度。DRM的实现方案多种多样。比如大的视频网站,可能使用自己私有的格式,只能通过视频网站提供的app才能播放。遵守规范定义的实现方案,便于媒体在多端的播放。

你可能感兴趣的:(Android开发)