iPhone HTTP流的AES 128加密

5
我对密码学知之甚少,但我想找出如何在 iPhone 上加密 HTTP 直播流并进行解密。
苹果的 HTTP 加密文档如下:
包含流段的媒体文件可以单独加密。当使用加密时,相应密钥文件的引用会出现在索引文件中,以便客户端可以检索密钥进行解密。
当索引文件中列出密钥文件时,该密钥文件包含必须用于解密索引文件中列出的后续媒体文件的密码键。目前,HTTP Live Streaming 支持使用 16 个八位字节的 AES-128 加密。密钥文件的格式是这些 16 个八位字节的二进制格式的打包数组。
可从 Apple 获得的媒体流分段器提供加密,并支持三种配置加密的模式。
第一种模式允许您指定磁盘上现有密钥文件的路径。在此模式下,分段器将现有密钥文件的 URL 插入索引文件中。它使用此密钥加密所有媒体文件。
第二种模式指示分段器生成一个随机密钥文件,将其保存在指定位置,并在索引文件中引用它。使用此随机生成的密钥加密所有媒体文件。
第三种模式指示分段器生成一个随机密钥文件,将其保存在指定位置,引用它在索引文件中,并然后重新生成并引用每个 n 个文件的新密钥文件。此模式称为密钥轮换。每组 n 个文件使用不同的键加密。
您可以使用 HTTP 或 HTTPS 提供密钥文件。您还可以选择使用自己的基于会话的身份验证方案来保护密钥文件的传递。
使用加密方法 1,这是我认为需要做的:
1. 使用密码器生成密钥,并使密钥可供分段器使用。 2. 分段器将密钥的 URL 插入索引文件中。 3. 将此密码存储在 iPhone 中(钥匙串?)。 4. 将电影播放器指向 m3u8 播放列表的 URL,该播放列表引用此索引文件。 5. 如何输入密码以自动解密流?
有人能帮助我理清思路吗?

使用HTTPs是可能的吗? - jessecurry
谢谢。如果建立连接时不需要用户输入,那么HTTPS是可行的。换句话说,如果设备可以使用一个密钥来进行HTTPS连接,并且该连接可以在没有用户输入的情况下进行授权,那么这个计划将会发送通过Base64编码后的HTTPS密钥到应用内购买产品对象中,当用户购买内容时。 - Jacko
啊,所以目标是保护内容在传输过程中,确保用户有权查看它? - jessecurry
是的,那是正确的。 - Jacko
理论上,HTTPS和加密文件是相同的(都是加密文件)。然而,加密文件可以通过HTTP提供服务,而HTTP具有比HTTPS更好的缓存。 - Amandasaurus
1个回答

2
这篇文章很好地解决了如何处理加密流的问题: http://developer.apple.com/iphone/library/qa/qa2009/qa1661.html 此外,应用程序在运行电影之前应该连接到https域,这样它可以传递其凭据,并且这些凭据可以为MPMoviePlayer缓存。
播放器支持摘要身份验证,但不支持使用客户端证书的SSL客户端身份验证。

2
你的链接已失效。 - Jonny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接