当前位置:   article > 正文

视频流加密解密技术_为什么流媒体 浏览器能解密

为什么流媒体 浏览器能解密

CENC

CENC 的机制受 MPEG-DASH(基于 HTTP 的动态自适应流媒体)ISO/IEC 标准 23001-7 管辖,该标准为多个 DRM 系统的兼容性提供了总体框架

加密方法:AES, DES, RC4, 3DES, RSA,也就是什么对称加密,非对称加密,公钥私钥的那一套

简单的理解,CENC 是用来规范加密的,DRM 是用来解密的。解密的方式有很多种,但加密的方式是同一种。
只要密钥受到严格保护,暴露加密算法就不是问题
这样,不同的 DRM 系统可以对同一文件进行解密,支持更广泛的可访问客户端

DRM

主流的 DRM 系统有 Widevine, PlayReady, Fairplay

Google Widevine

安全级别

Widevine 拥有三个安全级别——L1、L2 和 L3。L1 是最高的安全级别,解密全过程在硬件TEE中完成,需要设备支持。L3 的安全级别最低,解密全程在软件CDM中完成。L2 介于两者之间,核心解密过程在硬件完成,视频处理阶段在软件中完成

解密流程

流媒体服务商先将需要加密的内容先用 Shaka Packager 进行打包,加密视频内容放在自己的内容服务器,将密钥 key 放置在谷歌提供的 Widevine 认证服务器。用户播放时,先与 Widevine 服务器完成认证,得到 key 之后从内容服务器下载视频,并用 key 解密播放。

  1. 当用户按下 “播放” 时,应用从 CDN 中下载 mpd。在解析 mpd 之后,便很容易确定该视频是否使用 Widevine 加密视频。浏览器从内容中提取初始化数据(initData)并将其作为事件发送到播放器。
    • 注意: 我们假设这时用户身份已经得到验证。由于 Widevine 没有该功能,所以由应用来处理。
  2. 播放器无法解密内容,需要专业的解密软件的帮助。所以,它将初始化信息发送给 CDM
  3. CDM 接收到来自播放器的初始化信息,并创建 “许可证请求”,然后将其发送回给播放器。
  4. 播放器接收到许可证请求后,将该请求通过代理发送给 Widevine 许可证服务器。许可证请求也已被加密,所以不会在传输过程中被访问或者破解。
  5. 许可证服务器接收到播放器发送的请求,然后:
    1. 解密请求,提取初始化信息,并通过初始化信息找到其数据库中的许可证。
    2. 找到许可证后,将它加密,然后发送给播放器。
    3. 加密信息包括解密内容的密钥以及许可证信息(过期时间等)。
  6. 播放器接收到许可证服务器发送的许可证,将它传递给 CDM(通过 EME)。信息既已被加密,播放器和其他软件都无法读取或者滥用信息。
  7. 因为 CDM 不在设备的可信层中,它必须将信息传递给位于可信层中的 OEMCrypto Module。解密实际发生在 OEMCrypto Module 中。在一些实现中,解码也在 OEMCrypto Module 中。由浏览器对容器进行实际解析。
  8. 一旦内容被解复用、解密或者解码,便会以视频切片的形式发送给屏幕,并不会存储在设备上。

流行性

使用 Widevine 的 Service Provider/Broadcaster:

  • Netflix
  • HBO
  • Disney
  • WB(华纳兄弟)
  • prime video(亚马逊)
  • showtime 电视网(美国的一家付费有线电视网)
  • hulu
  • Jio(印度的电信公司)
  • sling(美国流媒体电视服务)
  • facebook

使用 Widevine 的设备:

  • Android
  • Samsung
  • Chrome
  • intel
  • SONY
  • Firefox
  • LG
  • QUALCOMM(高通)
  • Google Home
  • VIZIO
  • Roku
  • PlayStation

Microsoft PlayReady

PlayReady DRM 支持 MPEG-DASH、HLS 和 Microsoft Smooth Streaming (MSS) 流格式。输入视频可以是 MSS 中使用的 fmp4、 mp4、 或 ismv / isma

PlayReady v4 支持使用 AES-CTR 和 AES-CBC 加密模式的基于 CENC 的加密。

安全级别

PlayReady 具有三个安全级别(SL) – SL150、SL2000 和 SL3000。

  1. SL150,安全级别最低,没有任何内容受到保护(资产、客户端、密钥等),不建议将其用于产品,只能用于闭门测试。
  2. SL2000,中等安全,内容、资产、密钥、客户端都通过软件或硬件受到保护,可以用于生产场景和商业内容。
  3. SL3000,最安全,通过TEE对资产、客户端和密钥进行硬件保护,
    通常 HD、UHD、HDR 内容使用 SL3000

流程

流媒体服务商先将需要加密的内容先打包,再加密。加密后,内容被发送到分发服务器。许可证和加密密钥发送到许可证服务器,域信息发送到域服务器

  1. 在播放器处,当用户按下“播放”按钮时,播放器会识别出内容已加密,并将其传送给浏览器中的 CDM(通过 EME)。 CDM 生成许可证请求,播放器将其发送到许可证服务器。客户端发送的请求包含 KeyID 和客户端信息。
  2. 许可证服务器使用 KeyID 从密钥管理系统获取密钥并将其与其他相关许可证信息一起发送给客户端。来自许可证服务器的响应包含 –
    • 内容加密密钥。
    • 许可的权利。
    • 权利限制和权利修饰符,也称为许可条件。
  3. 播放器从许可证服务器接收许可证并将其传递给 CDM(通过 EME)。由于消息已加密,播放器和任何其他软件都无法读取并滥用它。
  4. CDM 或某些设备中的硬件组件将从许可证服务器获取响应,从中提取内容密钥,并使用该密钥来解密、解码和渲染视频。PlayReady 还提供了可以在客户端实现的 License Store,用于在客户端存储密钥和权限。这有时称为 HDS(哈希数据存储)。

Apple Fairplay

https://developer.apple.com/streaming/fps/

FairPlay Streaming 是 Apple 的 DRM 解决方案,可使用 HLS 协议安全地传输流媒体。 iOS、tvOS 和 macOS 原生支持 FairPlay Streaming DRM。

流程

  1. 用户打开内容提供商的应用程序并按“播放”开始观看电影。
  2. 应用程序通知 AVFoundation 它需要播放视频,并提供有关 HLS 流式传输的 m3u8 播放列表位置的详细信息
  3. AVFoundation 下载 m3u8 文件并解析它。
  4. AVFoundation 在 m3u8 文件中搜索标签 #EXT-X-KEY 以查看视频是否加密。如果内容已加密,AVFoundation 将向 App Delegate 询问内容密钥以解密内容。
  5. App Delegate 让 AVFoundation 框架生成SPC消息。
  6. App DelegateAVFoundation 收到 SPC 后,将其发送到密钥服务器。
    1. 密钥服务器中的 KSM 解包 SPC
    2. 并且,密钥服务器使用 SPC 中的信息来进行内容密钥查找。
    3. 内容密钥被发送到 FSM,FSM 将其包装到 CKC 中。

      感觉 FSM 是 KSM 写错了,不确定

  7. KSMCKC 发送给 App DelegateApp DelegateCKC 推送到 AVFoundation 中。
  8. AVFoundation 使用 CKC 内的内容密钥来安全地解密、解码并向用户显示内容。

流行度

  • 使用EME的 Safari 浏览器
  • iOS 设备
  • Apple TV
  • Airplay(Apple 的无线内容传输协议)

概念

  1. HLS:HTTP Live Streaming,将视频音频内容分成小段,每段可通过 http 协议单独下载。一般一个小片段为 TS(Transport Streams)或 fragmented MP4
  2. CDM:Content Decryption Module,内容解密模块,负责解密收保护的媒体内容。内置在播放器/浏览器中,也可以外置作为独立组件运行。包括请求密钥、内容解密、内容呈现
  3. EME:Encrypted Media Extensions,加密媒体扩展,是一组 JavaScript API,为播放器等 app 提供一组标准化的 API 来与 CDM 通信(播放器也是 js 写的)
  4. TEE:Trusted Execution Environment,可信执行环境,主处理器的安全区域,是硬件解密,保证加载到内部的代码和数据的机密性和完整性受到保护
  5. 打包:Packaging,将影片分成小块,并在 manifest/playlist 中描述这些小块的位置和播放顺序,从而让播放器在正确的时间下载正确的片段
  6. 域服务器/域控制器:Domain Server/PlayReady Domain Controller,它允许内容提供商提供绑定到一组设备(而不仅仅是一台设备)的许可证。这组设备被称为 “域”,它们可以相互共享许可证,而不必每次都联系许可证服务器。域控制器指定域定义的规则(如单个用户或家庭的身份)。域控制器还负责执行定义多少设备或 PC 可以加入域、离开域或更新其域证书的策略
  7. OEMCrypto 模块:OEMCrypto Module,OEMCrypto 模块使用来自播放器(和许可证服务器)的信息解密内容。OEMCrypto 模块位于与设备硬件绑定的可信层中。它使用加密的许可证信息来解密媒体,并将媒体发送到视频堆栈
  8. Shaka Packager:Widevine 提供的开源 MPEG-DASH 打包软件,将视频文件转换为 fMP4 格式
    1. 将每个文件分割成大小相等的段
    2. 使用从 Widevine 许可证服务器获取的许可证信息通过 CENC 加密每个文件
    3. 创建一个 mpd 文件或 manifest 文件,其中包含描述 DASH 打包媒体的所有信息
  9. AVFoundation:AVFoundation 是功能齐全的框架,用于在 iOS、macOS、watchOS 和 tvOS 上处理基于时间的视听媒体。使用 AVFoundation,您可以轻松播放、创建和编辑 QuickTime 影片和 MPEG-4 文件、 播放 HLS 流以及在应用程序中构建强大的媒体功能
  10. App Delegate:App Delegate 负责播放器、AVFoundation 框架和密钥服务器之间的协调和通信。App Delegate 位于应用程序的根,充当应用程序的“控制器”。它会收到所有事件的通知,并说明它所附加的对象已到达
  11. SPC:Server Playback Context,服务器播放上下文,指来自播放器的请求
  12. CKC:Context Key Context,内容密钥上下文
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/735052
推荐阅读
相关标签
  

闽ICP备14008679号