CN114007106A - 一种h5视频加密播放方法 - Google Patents
一种h5视频加密播放方法 Download PDFInfo
- Publication number
- CN114007106A CN114007106A CN202111534727.4A CN202111534727A CN114007106A CN 114007106 A CN114007106 A CN 114007106A CN 202111534727 A CN202111534727 A CN 202111534727A CN 114007106 A CN114007106 A CN 114007106A
- Authority
- CN
- China
- Prior art keywords
- key
- encryption
- video
- playing
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000003860 storage Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 5
- 238000012795 verification Methods 0.000 claims description 3
- 230000008901 benefit Effects 0.000 abstract description 3
- 239000003795 chemical substances by application Substances 0.000 description 12
- 238000005336 cracking Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2347—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving video stream encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/239—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
- H04N21/2393—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/26613—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel for generating or managing keys in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4405—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种H5视频加密播放方法,包括以下步骤:S1:视频在上传服务时,经过转码服务转码生成加密视频文件,加密算法使用公开的算法,并生成原始密钥;S2:密钥管理服务能够对于加密算法的原始密钥进行私有加密,生成加密密钥,密钥管理服务提供获取密钥的接口,在接口中动态返回原始密钥或私有加密后的加密密钥;S3:播放器在密钥管理服务获取到密钥,判断密钥是否已经加密,以及加密密钥的加密版本;判断密钥没有加密为原始密钥时则转到步骤S5;S4:播放器使用对应版本的私有加密算法解密得到原始密钥;S5:播放器根据原始密钥对加密视频文件进行解密,进行播放。本发明实现简单、安全性高、兼容性好、算法升级容易,算法被破解时可简单快速升级算法,恢复安全性且不影响原有视频的播放。
Description
技术领域
本发明涉及一种播放方法,尤其是涉及一种H5视频加密播放方法。
背景技术
视频版权保护与创作者及公司的利益息息相关,因此很多公司或个人非常注重视频播放的安全性,不能随意被人下载播放,通常称作视频被盗,解决视频被盗的主要技术方案是视频加密播放。加密播放跟播放终端和播放方式紧密相关,比较常见的播放方式有flash播放、移动端原生播放和h5播放等,flash播放和移动端原生播放比较容易实现较安全的加密播放功能,h5 播放由于技术限制、浏览器兼容性和代码的可见性等因素,实现安全加密播放比较困难。但h5播放是最普遍的视频播放方式,客户对h5视频加密播放的需求比较多。
h5加密播放几乎都是基于hls实现的,hls播放的视频文件包含两种格式,分别是m3u8文件和ts文件,其中m3u8文件是对ts文件的目录索引, ts文件是视频分块后的数据文件。hls支持加密播放,加密播放的实现是在视频文件转码生成m3u8文件和ts文件时,对ts文件进行加密,在m3u8文件中通过EXT-X-KEY标识指明加密算法及获取解密密钥的uri地址,示例如下:
#EXT-X-KEY:METHOD=AES-128,URI="https://p.bokecc.com/servlet/hlskey?info=E47229D731C961902BBA984E86119800&t=1629193139&key=7852EB500C4DFC2FFF9445CAF1DD2677",IV=0xE47229D731C961902BBA984E 86119800。
这种加密播放方式m3u8地址在ios safari浏览器和安卓部分浏览器内可通过video标签直接播放,在pc端浏览器或部分安卓手机上可通过一些开源js库实现解密播放。这种加密播放方式的优点是实现简单,不需要播放器实现解密逻辑。缺点是加密算法必须是公开算法,密钥很容易获取,不能有效防止视频被盗,可以称这种加密方式为hls普通加密。
hls普通加密流程,流程图如图1所示:上传视频在上传服务时,经过转码服务转码生成加密视频文件,加密算法使用公开的算法,如AES等,播放时获取到的播放地址为m3u8文件地址,m3u8文件内容中包含了获取解密密钥的uri,移动端可直接播放此m3u8文件,获取密钥及解密播放的逻辑浏览器可自动完成。PC端通过开源hls.js的使用,在hls.js中可自动完成解析m3u8文件、获取密钥并解密播放,不需要额外编写处理获取密钥和解密播放的代码。
以上普通加密实现方案由于使用公开的加密算法,在m3u8文件内容中可看到使用的算法名称以及对应解密密钥的uri地址和数据块ts的地址,因此只要获取到此m3u8文件,就可以获取密钥和ts文件内容,根据算法解密出原始数据生成mp4文件。移动端部分浏览器或一些PC客户端就可以直接播放此m3u8文件,安全性较低。
目前很多H5加密的实现都不是直接使用以上方案,但都是在以上基础上做优化,比如生成加密视频文件时使用私有加密算法,在播放时解密数据算法替换成私有解密算法。转码生成加密文件(ts文件和m3u8文件)时使用私有加密算法,在播放器端实现私有算法的解密播放。这样实现安全性较高,但存在一些缺点:
1)兼容性问题
在ios手机safari浏览器上,使用普通加密时,浏览器可根据公开算法自动解密播放,替换成私有算法时浏览器不支持,必须通过播放器对数据解密后传给视频播放标签video进行播放,要完成这一步必须要浏览器支持 MediaSource,而ios中safari浏览器目前不支持MediaSource,所以这些方案在ios手safari浏览器上不能播放私有加密算法的视频。
2)算法升级困难
由于私有算法需要在播放器端实现解密逻辑,播放器代码是js代码,无代码混淆的情况下很容易被人看出解密实现逻辑,有代码混淆的情况下也可能被人看出解密实现逻辑。解密逻辑被人知道了,视频就可能被盗。h5 加密视频被盗这种情况理论上是不可避免的,因为播放器解密代码是公开的。只是应该尽可能提高破解难度以及发现被盗时能及时让当前破解方式失效。算法被破解导致视频被盗,最好的办法就是改变算法,以上方案解密算法与视频加密算法对应,如果改变解密算法,原来的加密视频文件将不能播放,只能将原视频下架重新上传一个相同内容的视频文件,用新加密算法转码后重新发布。这是以上方案算法升级困难的原因。
发明内容
本发明提供了一种H5视频加密播放方法,解决了H5视频播放时存在的加密问题,以及适应浏览器播放的问题,其技术方案如下所述:
一种H5视频加密播放方法,包括以下步骤:
S1:视频在上传服务时,经过转码服务转码生成加密视频文件,加密算法使用公开的算法,并生成原始密钥;
S2:密钥管理服务能够对于加密算法的原始密钥进行私有加密,生成加密密钥,密钥管理服务提供获取密钥的接口,在接口中动态返回原始密钥或私有加密后的加密密钥;
S3:播放器在密钥管理服务获取到密钥,判断密钥是否已经加密,以及加密密钥的加密版本;判断密钥没有加密为原始密钥时则转到步骤S5;
S4:播放器使用对应版本的私有加密算法解密得到原始密钥;
S5:播放器根据原始密钥对加密视频文件进行解密,进行播放。
进一步的,步骤S2中,加密密钥的内容包括私有加密版本号、原始密钥、过期时间。
进一步的,步骤S3中,播放器能兼容加密后的加密密钥和原始密钥,根据密钥返回长度判断是否是原始密钥。
进一步的,步骤S2中,播放器向密钥管理服务请求加密密钥时,在请求参数中增加fpi参数,参数值是一个加密串,加密串中包含原始信息中页面是否支持MediaSource,页面userAgent关键字、视频id及过期时间,播放服务接口验证此fpi参数,如果fpi参数没有或解密失败或验证失败,默认按页面支持MediaSource对待,将会返回加密后的加密密钥,继续步骤S3;否则按fpi原始信息中是否支持MediaSource来返回,如果支持,继续步骤 S3;如果不支持,返回原始密钥。
进一步的,步骤S2中,在页面不支持MediaSource时,跳转到以下步骤:
S11:播放器生成fpi参数,并向播放服务获取视频地址信息接口请求传递fpi参数;
S12:播放服务向存储服务发出获取视频地址信息请求,收到返回的视频地址;
S13:所述播放服务将fpi解密验证,如果通过fpi参数发现浏览器不支持MediaSource,则播放服务将根据视频地址生成虚拟地址;
S14:播放器用此虚拟地址直接给video标签播放;
S15:播放时浏览器根据虚拟地址向播放服务请求m3u8地址获取内容,进而获取到存储服务中m3u8地址的原始数据;
S16:播放服务将fpi参数添加到原始数据中获取密钥的uri地址上,返回添加了fpi参数的m3u8数据内容给浏览器;
S17:浏览器解析m3u8后从中拿到获取加密密钥的地址,去密钥管理服务请求此地址获取加密密钥;
S18:浏览器在收到密钥后,对原始数据进行解密并播放。
本发明中,播放器开始运行到开始播放出视频画面的过程中,首先要请求播放服务获取到视频地址信息,然后会请求密钥管理服务接口获取密钥。
进一步的,步骤S2中,浏览器支持MediaSource的情况下,播放器js 能够控制m3u8文件的解析、加密密钥的获取和视频文件数据的解密,播放器能够直接在获取密钥时生成fpi参数并传给获取密钥接口。
所述H5视频加密播放方法实现简单、安全性高、兼容性好、算法升级容易,算法被破解时可简单快速升级算法,恢复安全性且不影响原有视频的播放。
实现简单:相比对视频文件使用私有加密算法的方案,本发明对视频文件的加密使用公开算法,在转码实现上非常简单。只修改获取密钥的接口,播放器端解密也相对简单,播放器代码做了混淆后,简单的解密算法影响不是很大。fpi参数的使用引入了一些复杂性,不过与将视频文件进行私有加密的方式实现相同效果时,可以去掉fpi参数的使用。fpi的使用是为了解决适配的问题,同时不影响应该有的安全性。
安全性好:视频文件的公有加密算法如AES算法在密钥不泄漏的情况下安全性是很高的,只需要保护好密钥就保证了安全性,密钥都是通过网络传输的,本发明对密钥进行私有加密,即使被人获取到本发明加密后的密钥,也无法解密播放,只有本发明播放器对密钥解密后才可用于普通加密方式的解密播放。本发明播放器对解密播放关键代码做了混淆,极大地提高了破解难度。
兼容性好:支持MediaSource的浏览器按私有加密算法方式播放,不支持MediaSource的浏览器自动降为普通加密播放。如果想要限制普通加密方式播放,可通过页面在初始化播放器时限制不允许播放。如果页面不允许播放,通过配合其它认证方式避免非法获取播放地址信息,从而避免了非法使用普通加密播放。
加密升级容易:对密钥的加解密算法可随时升级,不影响视频的播放。
附图说明
图1是所述hls普通加密流程的示意图;
图2是本发明中的加密流程示意图;
图3是本发明在请求参数中增加fpi参数的加密流程示意图;
图4是本发明在浏览器是否支持MediaSource时的流程示意图。
具体实施方式
如图2所示,所述H5视频加密播放方法是进行再加密处理,基于普通 hls加密,地址是很容易被看到或获取到的,不能依靠地址不泄露增加安全性,本发明中是所有地址都是假设可被随意获取的。视频文件的加密与普通加密一样使用公开的算法,如AES加密算法,跟普通加密不一样的是此发明对播放器获取的密钥做了一层私有加密。
所述加密后的密钥被人拿到后,由于不是原始密钥,所以相当于一个错误的密钥,不能用于解密视频文件数据,只有通过设定的播放器对加密后的密钥解密成原始密钥,才能用于解密视频文件数据。
所述私有加密算法不做具体描述,可以是任意私有的算法,私有加密算法的密钥可以是当前播放的参数信息,也可以是其它,即使私有加密算法的密钥是公开的,由于不知道私有加密算法,也不能对用于解密加密视频文件的加密密钥进行解密还原。结合附图描述下本发明的步骤:
S1:视频在上传服务时,经过转码服务转码生成加密视频文件,加密算法使用公开的算法,并生成原始密钥;其中,所述视频是指一个完整的视频文件;
S2:密钥管理服务能够对于加密算法的原始密钥进行私有加密,生成加密密钥,密钥管理服务提供获取密钥的接口,在接口中动态返回原始密钥或私有加密后的加密密钥;
S3:播放器在密钥管理服务获取到加密密钥,判断加密密钥的版本;
播放器是js文件,是在页面上加载播放器js并运行播放器js代码,运行播放器js代码时,播放器代码会去请求服务端接口,此处说的在密钥管理服务获取加密密钥指的是播放器请求密钥管理服务接口,此接口返回给播放器加密密钥。原始密钥存在数据库,在接口处理逻辑中会从数据库获取加工后返回给接口调用方(页面)。
所述密钥管理服务(Key Management Service,简称KMS)是一项安全管理服务,主要负责数据密钥的生产、加密、解密等工作。
S4:播放器使用对应版本的私有加密算法解密得到原始密钥;
S5:播放器根据原始密钥对加密视频文件进行解密,正常播放。
对原始密钥进行私有加密,这是本发明基于普通加密最重要的一点改动,对原始密钥进行私有加密的同时,还可以包含其它信息,如私有加密版本号、此密钥的过期时间等,即加密密钥=私有加密(私有加密版本号+原始密钥+过期时间)。以上改动有以下优点:
(1)安全性高:
视频文件使用公开的AES加密算法,此算法自身安全性很高,只要保护好密钥即可,对播放器获取的密钥使用私有加密,只能通过设定播放器对密钥解密才能拿到原始密钥,所以整体安全性较高。
(2)实现简单:
不是对视频文件使用私有加密,只对密钥使用私有加密,所以实现比较容易。
(3)算法升级容易:
一旦发现播放器对密钥的解密逻辑被破解,可立即修改对密钥的加解密算法(只需要修改获取密钥接口及播放器代码,播放器代码可保持对多个私有加密版本的支持),加密的视频文件及数据保持不变,恢复了安全性同时不影响原有视频的播放,无需重新上传视频再转码发布。
但本发明还存在以下问题:由于播放器端需要对密钥进行解密,所以不支持ios系统的safari浏览器播放,这一点跟其它私有加密算法一样。在手机ios系统safari浏览器上,所有使用私有加密算法的方案都不支持播放。本发明所说的普通加密指的是hls的加密,这种加密是支持ios的,但是如果想使用私有加密,需要页面支持MediaSource才可实现对应的解密播放, ios上safari浏览器不支持,ios上某些浏览器可能是支持的,是否提供原始地址无所谓。
作为视频云点播服务的公司,不同客户不同视频对加密的安全级别要求不一样,比如安全性要求比较高的用户,需要最高级别的安全性,不允许ios 系统safari浏览器播放,某些客户要求pc上安全性好,同时允许ios系统safari 播放。或者同一客户某些视频安全性要求较高,某些视频要求低一点。
要解决以上问题,对视频文件加密使用私有算法的方案无法在ios系统 safari播放,而本发明可以灵活适配是否允许在ios系统safari播放,由于本发明视频文件加密与普通加密方式一样使用公开的算法,只要在返回密钥给播放器时适配是否对密钥进行加密,即可控制是否允许在ios系统safari播放。即私有加密不可以,hls普通加密可以。是否允许ios系统safari播放交给页面控制,配合其它验证方式(比如auth2)等方式验证是否允许播放,不允许播放时获取不到视频地址等信息。而返回给播放器密钥时只根据客户端是否支持MediaSource决定是否对密钥进行私有算法加密,播放器能兼容加密后的加密密钥和原始密钥,根据密钥返回长度判断是否是原始密钥。
怎么确定播放页面是否支持MediaSource,如果不支持,只能使用安全性低的普通加密方式,如果判断不准,将会影响pc端h5视频加密播放的安全性。播放器在播放过程中会多次请求服务端不同的接口获取不同的数据。按本文提到的普通加密或私有加密播放流程,播放器开始运行到开始播放出视频画面的过程中,首先要请求播放服务获取到视频地址信息,然后会请求密钥管理服务接口获取密钥,不是同一个服务,也不是同一个接口。由于判断是在服务端接口判断,不能知道页面信息,目前大多数点播服务商在时都是根据请求userAgent判断,根据userAgent可以知道是什么系统及什么浏览器。然而使用userAgent判断是否支持MediaSource有一些问题,只能根据已知情况来判断,比如根据经验知道某个系统中某款浏览器不支持 MediaSource,而其它未测试过的浏览器不知道是否支持,只能按支持来对待。或者某些浏览器当前不支持,过一段时间变成支持了,判断也就不准确了。最大的问题是存在安全性问题,请求中userAgent是可以被修改或模拟的,pc端浏览器可以支持模拟手机userAgent,部分手机浏览器也支持模拟 userAgent,这就导致原本pc端播放是按私有加密算法来播放的,模拟 userAgent后pc端播放变成了按普通加密播放,安全性整体降低。
其中,本发明要实现的是私有加密,本发明所说的普通加密是指hls标准加密,本发明所述的私有加密是由普通加密改进而来。还提到其它的私有加密(对视频文件进行私有加密),与本发明实现的对密钥进行私有加密的方式进行了对比。
本发明在获取密钥接口(密钥管理服务提供的)中判断页面是否支持MediaSource不根据userAgent来判断,而是让页面传递一个参数fpi,参数值是一个加密串,加密串中包含的原始信息中:页面是否支持MediaSource,页面userAgent关键字、视频id及过期时间等。所述页面是指浏览器页面,只有在浏览器页面,才能准确知道浏览器是否支持MediaSource,所以播放器在请求时,就获取浏览器信息,然后构造出fpi参数,请求播放服务获取视频信息接口时传给接口以及在请求密钥管理服务获取密钥接口时传给接口。
在此接口中验证此fpi参数,如果fpi参数没有或解密失败或验证失败,默认按页面支持MediaSource对待,将会返回加密后的密钥,否则按fpi原始信息中是否支持MediaSource来返回,如果不支持,返回原始密钥。本发明是播放器根据密钥长度判断,为了方便播放器标识,私有加密后的密钥与普通加密的密钥长度确保不一样长。
其中,此接口是密钥管理服务的获取密钥接口,也是此发明的关键,由于是为了兼容ios的safari浏览器播放才使用fpi参数,fpi参数的目标是正确匹配私有加密还是普通加密,私有加密还是普通加密方式播放由此接口加密的密钥决定,所以此接口需要根据fpi做决定。
所有服务端提供给页面请求的接口,都是指一个url地址,url的请求可以传参数,请求后会返回约定后的数据。
以上方式在播放器请求获取密钥接口时生成fpi参数添加到请求参数中。在pc端由于m3u8文件的解析是播放器js完成的,所以可以这样实现,但在ios safari浏览器上,m3u8文件的解析及请求获取密钥的接口获取密钥的行为是浏览器自动完成的,此流程不可修改,所以没办法添加fpi参数,要解决此问题,必须将fpi参数想办法添加到m3u8文件内容中获取密钥的 uri地址上。
如图3所示,本发明将fpi参数在请求播放服务接口获取视频地址时判断当前页面是否支持MediaSource,如果支持,按以上流程保持不变。这里的接口是指播放服务提供的接口,本文还提到存储服务和密钥管理服务,是根据功能对服务的划分,播放服务提供播放直接相关的接口,存储服务提供视频文件存储和访问相关接口,密钥管理服务提供密钥的生成及获取等接口。它们是相互配合的关系,不同服务的拆分只是为了更好的管理和性能扩展,否则完全可以合并成同一个系统。
如果不支持,播放器在请求参数中增加fpi参数,播放服务获取视频地址接口(此接口根据请求参数返回对应的视频地址信息)处理逻辑中如果获取到fpi参数且解密验证通过,且fpi信息表示当前页面不支持MediaSource,则生成一个新的m3u8视频地址,此地址与原m3u8文件地址对应,地址中包含原m3u8地址信息和fpi参数,对应播放服务的一个接口地址。当播放器获取到此地址用于播放时,由于页面不支持MediaSource,播放行为是浏览器自动对m3u8进行请求加载和解析播放,请求此地址会进入播放服务对应的接口逻辑,在接口处理中获取到原始m3u8地址和fpi参数,根据原始 m3u8地址获取m3u8原始内容,并将fpi参数拼接到原始内容中获取密钥的 uri地址上,然后返回数据内容。
其中,原始内容是指m3u8文件内容,m3u8虽然可以用于播放,但它不是视频数据文件,它里边只是配置了一批ts扩展名的文件地址,每一个 ts文件是同一个视频文件的一个片段,ts文件里才是真正的视频文件数据,所以m3u8文件里的内容只是对ts文件的索引。所述数据内容是指对原始内容稍做修改后的数据。
如图4所示,浏览器支持MediaSource的情况下,播放器js能够控制 m3u8文件的解析,加密密钥的获取和视频文件数据的解密,这种情况下直接在获取密钥时生成fpi参数传给获取密钥接口。
浏览器不支持MediaSource的情况下,在播放器获取视频地址信息接口请求中传递fpi参数,此接口将生成一个虚拟地址(对应播放服务中接口,包含原始m3u8地址信息和fpi参数信息)返回给播放器,播放器用此地址(接口返回给播放器的虚拟地址)直接给video标签播放,播放时浏览器请求m3u8地址获取内容,此时请求到服务器对应的接口,接口中能获取到原始m3u8地址和fpi参数,获取m3u8地址的原始数据,并将fpi参数添加到原始数据中获取密钥的uri地址上,然后返回添加了fpi参数的m3u8数据内容给浏览器,浏览器解析m3u8后从中拿到获取加密密钥的地址去请求此地址(此时有fpi参数,加密视频的m3u8文件中包含获取密钥的url地址,请求此地址会返回密钥数据)获取加密密钥。
在以上两种情况的不同处理方式下,保证获取加密密钥时总是有fpi参数,此参数需要解密,且包含视频id信息、userAgent关键字和过期时间,保证此参数的真实有效性,从而保证了整体的安全性符合预期情况。
具体包括以下步骤:
S11:播放器生成fpi参数,并向播放服务获取视频地址信息接口请求中传递fpi参数;
S12:播放服务向存储服务发出获取视频地址请求,收到返回的视频地址;
S13:所述播放服务将fpi解密验证,如果通过fpi参数发现浏览器不支持MediaSource,则播放服务将根据视频地址生成虚拟地址;
S14:播放器用此虚拟地址直接给video标签播放;
S15:播放时浏览器根据虚拟地址向播放服务请求m3u8地址获取内容,进而获取到存储服务中m3u8地址的原始数据;
S16:播放服务将fpi参数添加到原始数据中获取密钥的uri地址上,返回添加了fpi参数的m3u8数据内容给浏览器;
S17:浏览器解析m3u8后从中拿到获取加密密钥的地址,去密钥管理服务请求此地址(此时有fpi参数)获取加密密钥;
S18:浏览器在收到密钥后,对原始数据进行解密并播放。
本发明具有以下特点:
(1)基于hls普通加密,对视频文件的加密使用公开的AES算法;
(2)对返回给播放器的密钥进行私有加密,某些情况下返回原始密钥;
(3)为了适配不支持MediaSource的浏览器(如ios safari浏览器)播放,通过从页面传递fpi参数给获取密钥的接口,此接口根据fpi参数内容决定是否返回私有加密的加密密钥。
(4)为了保证fpi值的真实有效性,fpi参数为按私有加密算法加密的加密串,包含页面是否支持MediaSource、视频id、userAgent关键定和过期时间等,且获取密钥的接口fpi参数为必传参数。
(5)为了保证获取密钥的接口fpi参数为必传参数,分两种方式传递此参数,支持MediaSource的浏览器能通过js直接在获取密钥的接口上添加此参数。不支持MediaSource的浏览器通过在获取视频地址接口上增加此参数,接口返回虚拟视频地址(对接播放服务的一个接口),浏览器请求虚拟视频地址获取内容时在接口处理逻辑中获取真实m3u8内容并将fpi参数添加到内容中获取密钥的uri地址上。
Claims (7)
1.一种H5视频加密播放方法,包括以下步骤:
S1:视频在上传服务时,经过转码服务转码生成加密视频文件,加密算法使用公开的算法,并生成原始密钥;
S2:密钥管理服务能够对于加密算法的原始密钥进行私有加密,生成加密密钥,密钥管理服务提供获取密钥的接口,在接口中动态返回原始密钥或私有加密后的加密密钥;
S3:播放器在密钥管理服务获取到密钥,判断密钥是否已经加密,以及加密密钥的加密版本;判断密钥没有加密为原始密钥时则转到步骤S5;
S4:播放器使用对应版本的私有加密算法解密得到原始密钥;
S5:播放器根据原始密钥对加密视频文件进行解密,进行播放。
2.根据权利要求1所述的H5视频加密播放方法,其特征在于:步骤S2中,加密密钥的内容包括私有加密版本号、原始密钥、过期时间。
3.根据权利要求1所述的H5视频加密播放方法,其特征在于:步骤S3中,播放器能兼容加密后的加密密钥和原始密钥,根据密钥返回长度判断是否是原始密钥。
4.根据权利要求1所述的H5视频加密播放方法,其特征在于:步骤S2中,播放器向密钥管理服务请求加密密钥时,在请求参数中增加fpi参数,参数值是一个加密串,加密串中包含原始信息中页面是否支持MediaSource,页面userAgent关键字、视频id及过期时间,播放服务接口验证此fpi参数,如果fpi参数没有或解密失败或验证失败,默认按页面支持MediaSource对待,将会返回加密后的加密密钥,继续步骤S3;否则按fpi原始信息中是否支持MediaSource来返回,如果支持,继续步骤S3;如果不支持,返回原始密钥。
5.根据权利要求4所述的H5视频加密播放方法,其特征在于:步骤S2中,在页面不支持MediaSource时,跳转到以下步骤:
S11:播放器生成fpi参数,并向播放服务获取视频地址信息接口请求传递fpi参数;
S12:播放服务向存储服务发出获取视频地址信息请求,收到返回的视频地址;
S13:所述播放服务将fpi解密验证,如果通过fpi参数发现浏览器不支持MediaSource,则播放服务将根据视频地址生成虚拟地址;
S14:播放器用此虚拟地址直接给video标签播放;
S15:播放时浏览器根据虚拟地址向播放服务请求m3u8地址获取内容,进而获取到存储服务中m3u8地址的原始数据;
S16:播放服务将fpi参数添加到原始数据中获取密钥的uri地址上,返回添加了fpi参数的m3u8数据内容给浏览器;
S17:浏览器解析m3u8后从中拿到获取加密密钥的地址,去密钥管理服务请求此地址获取加密密钥;
S18:浏览器在收到密钥后,对原始数据进行解密并播放。
6.根据权利要求1所述的H5视频加密播放方法,其特征在于:播放器开始运行到开始播放出视频画面的过程中,首先要请求播放服务获取到视频地址信息,然后会请求密钥管理服务接口获取密钥。
7.根据权利要求4所述的H5视频加密播放方法,其特征在于:步骤S2中,浏览器支持MediaSource的情况下,播放器js能够控制m3u8文件的解析、加密密钥的获取和视频文件数据的解密,播放器能够直接在获取密钥时生成fpi参数并传给获取密钥接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111534727.4A CN114007106B (zh) | 2021-12-15 | 2021-12-15 | 一种h5视频加密播放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111534727.4A CN114007106B (zh) | 2021-12-15 | 2021-12-15 | 一种h5视频加密播放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114007106A true CN114007106A (zh) | 2022-02-01 |
CN114007106B CN114007106B (zh) | 2023-11-10 |
Family
ID=79932156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111534727.4A Active CN114007106B (zh) | 2021-12-15 | 2021-12-15 | 一种h5视频加密播放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114007106B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116233499A (zh) * | 2022-11-30 | 2023-06-06 | 中电信数智科技有限公司 | 一种用于防止m3u8视频被并发批量下载的方法 |
CN116827914A (zh) * | 2023-04-19 | 2023-09-29 | 广州好智信息技术有限公司 | 一种用于移动端的视频信息防劫持、盗取的方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104283680A (zh) * | 2013-07-05 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 一种数据传输的方法、客户端、服务器及其系统 |
CN105939484A (zh) * | 2016-06-14 | 2016-09-14 | 深圳创维数字技术有限公司 | 一种音视频的加密播放方法及其系统 |
US20160344561A1 (en) * | 2015-05-22 | 2016-11-24 | Garret Grajek | Securing multimedia content via certificate-issuing cloud service |
CN106534894A (zh) * | 2016-10-31 | 2017-03-22 | Tcl集团股份有限公司 | 一种加密视频分发方法及系统 |
EP3317796A1 (en) * | 2015-06-30 | 2018-05-09 | ActiveVideo Networks, Inc. | Remotely managed trusted execution environment for digital-rights management in a distributed network with thin clients |
CN108337536A (zh) * | 2017-01-20 | 2018-07-27 | 创盛视联数码科技(北京)有限公司 | 视频加密的方法 |
CN109660866A (zh) * | 2018-12-28 | 2019-04-19 | 杭州当虹科技股份有限公司 | 一种基于h5的视频解密方法 |
CN110798714A (zh) * | 2019-10-23 | 2020-02-14 | 深圳创维新世界科技有限公司 | 一种基于hls的本地视频播放系统及播放方法 |
CN112040268A (zh) * | 2020-08-11 | 2020-12-04 | 福建天泉教育科技有限公司 | 支持自定义drm的视频播放方法、存储介质 |
CN112040279A (zh) * | 2020-08-11 | 2020-12-04 | 福建天泉教育科技有限公司 | 自定义drm的音视频播放方法、存储介质 |
US10903999B1 (en) * | 2019-09-11 | 2021-01-26 | Zscaler, Inc. | Protecting PII data from man-in-the-middle attacks in a network |
-
2021
- 2021-12-15 CN CN202111534727.4A patent/CN114007106B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104283680A (zh) * | 2013-07-05 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 一种数据传输的方法、客户端、服务器及其系统 |
US20160344561A1 (en) * | 2015-05-22 | 2016-11-24 | Garret Grajek | Securing multimedia content via certificate-issuing cloud service |
EP3317796A1 (en) * | 2015-06-30 | 2018-05-09 | ActiveVideo Networks, Inc. | Remotely managed trusted execution environment for digital-rights management in a distributed network with thin clients |
CN105939484A (zh) * | 2016-06-14 | 2016-09-14 | 深圳创维数字技术有限公司 | 一种音视频的加密播放方法及其系统 |
CN106534894A (zh) * | 2016-10-31 | 2017-03-22 | Tcl集团股份有限公司 | 一种加密视频分发方法及系统 |
CN108337536A (zh) * | 2017-01-20 | 2018-07-27 | 创盛视联数码科技(北京)有限公司 | 视频加密的方法 |
CN109660866A (zh) * | 2018-12-28 | 2019-04-19 | 杭州当虹科技股份有限公司 | 一种基于h5的视频解密方法 |
US10903999B1 (en) * | 2019-09-11 | 2021-01-26 | Zscaler, Inc. | Protecting PII data from man-in-the-middle attacks in a network |
CN110798714A (zh) * | 2019-10-23 | 2020-02-14 | 深圳创维新世界科技有限公司 | 一种基于hls的本地视频播放系统及播放方法 |
CN112040268A (zh) * | 2020-08-11 | 2020-12-04 | 福建天泉教育科技有限公司 | 支持自定义drm的视频播放方法、存储介质 |
CN112040279A (zh) * | 2020-08-11 | 2020-12-04 | 福建天泉教育科技有限公司 | 自定义drm的音视频播放方法、存储介质 |
Non-Patent Citations (3)
Title |
---|
SHIN-HO LIU: "A secured video streaming system", 《2010 INTERNATIONAL CONFERENCE ON SYSTEM SCIENCE AND ENGINEERING》 * |
吴代文: "网络视频数据加解密技术的研究", 《中国优秀硕士学位论文全文库》 * |
张婷: "面向移动智能终端的多媒体版权保护系统的研究与设计", 《中国优秀硕士学位论文全文库》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116233499A (zh) * | 2022-11-30 | 2023-06-06 | 中电信数智科技有限公司 | 一种用于防止m3u8视频被并发批量下载的方法 |
CN116233499B (zh) * | 2022-11-30 | 2024-08-23 | 中电信数智科技有限公司 | 一种用于防止m3u8视频被并发批量下载的方法 |
CN116827914A (zh) * | 2023-04-19 | 2023-09-29 | 广州好智信息技术有限公司 | 一种用于移动端的视频信息防劫持、盗取的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114007106B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11366878B2 (en) | Method and apparatus for delivering encoded content | |
CN107707504B (zh) | 一种流媒体的播放方法、系统以及服务器和客户端 | |
US20080209231A1 (en) | Contents Encryption Method, System and Method for Providing Contents Through Network Using the Encryption Method | |
EP2705456B1 (en) | System and method for protecting digital contents with digital rights management (drm) | |
US7975312B2 (en) | Token passing technique for media playback devices | |
US8130963B2 (en) | Method and apparatus for secure key delivery for decrypting bulk digital content files at an unsecure site | |
US7373330B1 (en) | Method and apparatus for tracking and controlling e-mail forwarding of encrypted documents | |
US20120284370A1 (en) | Method, system, or user device for adaptive bandwidth control of proxy multimedia server | |
KR101355057B1 (ko) | 전자 장치에서의 소프트웨어 업데이트들의 집행 | |
CN114007106B (zh) | 一种h5视频加密播放方法 | |
US9026793B2 (en) | Method for installing rights object for content in memory card | |
US20140270167A1 (en) | Video data delivery protection | |
US11698987B2 (en) | Storage drive protection using file system level encryption | |
US8307457B2 (en) | Method and terminal for receiving rights object for content on behalf of memory card | |
EP1632943B1 (en) | Method of preventing multimedia copy | |
CN108494724B (zh) | 基于多授权机构属性加密算法的云存储加密系统 | |
US20200364317A1 (en) | Method and system for identifying a user terminal in order to receive streaming protected multimedia content | |
CN108235060B (zh) | 基于参数集混淆的视频加密播放方法、系统和存储介质 | |
CN116010909A (zh) | 加密装置处理方法、数据处理方法、装置、设备及介质 | |
US20100153710A1 (en) | Method of preventing unauthenticated viewing using unique information of secure micro | |
CN115412744B (zh) | 一种移动端视频加密的方法、装置及可读存储介质 | |
CN117241067B (zh) | 一种基于指纹水印的视频安全调阅方法及系统 | |
EP1552420A1 (en) | Method for managing metadata | |
US20240214362A1 (en) | Distributed data content protection | |
US20240214361A1 (en) | Distributed data content protection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |