在 iOS 中使用解密流式传输分段数据

Posted

技术标签:

【中文标题】在 iOS 中使用解密流式传输分段数据【英文标题】:Streaming segmented data with decryption in iOS 【发布时间】:2017-07-06 06:47:51 【问题描述】:

我正在创建一个应用程序,我需要在其中下载加密的 Mpeg 片段并在使用从服务器下载的密钥解密后在播放器中播放视频。我不知道从哪里开始。我从here 那里得到了一些帮助,并正在努力解决这个问题,如果有人曾经构建或创建过这样的功能,请告诉我。

【问题讨论】:

【参考方案1】:

如果您需要 DRM 级别保护,在 ios 设备上执行此操作的常用方法是使用 Apple 的 FairPlay DRM 解决方案。

如果您有苹果开发者 ID:https://developer.apple.com/streaming/fps/,则可以使用文档、SDK 和示例应用程序

但是请注意,要实际部署它,您必须是“许可内容所有者”,我认为这主要针对大型运营商和内容所有者,因此首先检查您是否符合他们的定义非常重要:

请求部署包

如果您是获得许可的内容所有者,准备将您的 FairPlay Streaming 实施部署到生产环境,请申请 FPS 部署包。请注意,您必须是作为许可内容所有者的开发团队的团队代理。代表许可内容所有者的第三方无法使用 FPS 部署包。

如果您可以接受较低级别的保护,那么 AES 加密 HLS 对您来说可能就足够了 - 实际的视频加密与 DRM 几乎相同,但密钥本身并未加密。

您可以使用 ffmpeg 和 openssl 创建 AES 加密 HLS 流 - ffmpeg 文档 (http://ffmpeg.org/ffmpeg-all.html#Options-34) 包含此示例脚本:

#!/bin/sh
BASE_URL=$1:-'.'
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
  -hls_key_info_file file.keyinfo out.m3u8

【讨论】:

以上是关于在 iOS 中使用解密流式传输分段数据的主要内容,如果未能解决你的问题,请参考以下文章

RSA加解密及分段加解密

将设备上的视频流式传输到 videoview - Android

Vue中使用RSA分段加解密

python实现RSA加密和签名以及分段加解密的方案

iOS逆向之对称算法(上)

Android使用RSA加密和解密