在线视频常见加密方式及安全性透析

信息化时代,多媒体的应用日渐成为人们生活中不可或缺的部分,无论是获取最新资讯还是教育学习,视频都是直观高效的媒介之一。

  基于互联网的快速传播,众多培训机构也逐渐将线下原创版权课程迁移到在线平台中,一方面可以更快的打响知名度,同时往往能带来比较乐观的收益。这也滋生了黑产,盗版随之出现。如何防范原创视频被轻易盗版呢?针对该问题,笔者对市面上的视频防盗方案做了一定调研,如有任何不当之处,请指正。

  本文将根据面向人群分类阐述。一种是防小白用户,一种是防IT技术人员。

  防小白用户

  什么是小白用户?小白用户是指对计算机的了解,仅停留在会使用阶段的人群。

  怎么防小白用户下载视频呢?一般采用的方式,包括但不仅限于播放地址隐藏、动态url校验、协议防范等方式进行视频保护。

  播放地址隐藏

  我们要知道,网站是基于HTTP协议的,如网站的图片、css、js都是通过该协议进行传输,视频也不例外。由于http协议的开放性,很多浏览器或插件都开发了对应的嗅探下载功能。如遨游浏览器、360浏览器等。

  http://e.e***.com/space.php?do=playvideo&op=play_demo&iframe=0&aid=null&lid=22880&ltype=31&width=640&height=400 比如该网站的课程,采用了某度云的平台,就是对播放地址进行了简单的隐藏的方式。相关视频使用某些浏览器就可以下载。

 

  动态url校验

  第一种地址隐藏的方式,地址是固定的,所以很容易被下载。为了解决这个问题,很多网站或平台,选择在原始基础上,加入了自定义的sign计算,进行播放地址校验。

  一般来说动态url具有时效性,可以有效地防下载和盗链。如某网校采用的乐视云平台。

  http://users.wa**o.cn/player/Index.aspx?Id=3d009f67-259f-4aff-a710-25926a59278d

 

  经过分析此时的下载地址如下:  http://1****29/play.videocache.lecloud.com/256/19/103/bcloud/121442/ver_00_22-1101707449-avc-800000-aac-61969-1*****0fdb2b1705aa116313dfd2-1495075183392.mp4?crypt=72aa7f2e948&b=879&nlh=4096&nlt=60&bf=86&p2p=1&video_type=mp4&termid=2&tss=no&platid=2*****=1519887000&nkey=22ab7366672c34cf45ff3abca0c1a564&nkey2=12672f233895fe89b49d0328161fadec&auth_key=1519887000-1-0-2-209-c08a24f6e01c7227fc9be939f3a4385d&geo***sid=235117191&tm=1519868986&key=4e34e1d64057a46346c4b42795e1c173&payff=0&cu***8&dur=1210&p1=3&p2=31&p3=310&cf=h5-android&p=101&playid=0&tag=mobile&sign=bcloud_121442&pay=0

  通常情况下,该类下载地址存在一定的参数校验,包括了时间戳 sign 等。但sign计算规则一般都比较简单,容易被识破伪造。

  这种方式同样也可以通过浏览器或插件下载。不过需要自行判断,哪个地址才是真实的文件地址。

  协议防范

  鉴于http协议的开放性,那么视频如何避免被浏览器或插件嗅探呢?一些网站选择从协议入手,采用非http的协议进行视频播放,如rtmp协议。

  rtmp协议由来已久,是adobe公司推出的视频播放协议,稳定性和安全性较http更好,应用广泛。rtmp协议,需要专用的服务器,如FMS,开源的有red5,技术成本比较高。

  至于安全性方面,针对rtmp协议,目前已经有较多的嗅探下载工具出现。如某抓、rtmpdumper等。

  http://e.100***exi.com/DigitalLibrary/Course.aspx?Id=52811。这个网站就是采用了rtmp协议,并且限制10分钟试看时间。可以使用专业工具的嗅探功能,就可以得到rtmp地址直接观看或下载完整视频,从而实现跳过购买流程,安全性可见一般。

 

  综上所述,对于小白用户的防范,多半是在url上做文章,并没有实质性的数据加密,难度都很低。从安全性的角度考虑,各大网站或平台应当及时摒弃以上加密方式。

 

  防IT技术人员

  IT技术人员,是指具有一定的计算机基础,会利用现成工具乃至在程序方面,有深入研究的人群。如网站管理员,程序员等。

  针对该部分人群,目前业界普遍采用的防范方式,包括但不仅限于播放器校验,url编码加密、视频加密等。

  播放器校验

  区别于一般的校验url地址,播放器校验是指播放地址,只能通过特定播放器,进行域名白名单校验才可以播放。作用主要在于防盗链和下载,一般直接访问下载地址会403。

 

  这种加密方式,一般可以通过对header伪造,添加referer等方式,实现403跳过校验,实现视频下载,意义不大。

  Url编码加密

  简单来说,url编码加密就是将播放地址自定义算法编码,创建私有协议的播放地址。播放需要专用的播放器进行地址解码。

  如某图公考采用的某家云平台,就是采用这种方式。

  http://v.hu**.com/cla/class_detail_62286.htm 经过调试分析,并不能直接得到播放地址,但是可得到编码加密的某家云私有url。

  bjcloudvod://Uml4e3c8NDRsZG8zf2pobHYwZ2ZxbWxngnZyNWpxcjRraTo5bzQ0PTcza2ZAZTNnajU4bGgyZz1rZ2dpb2c8bDY3Zj5BNDw5bTA0NzR6Mnp4b3JnbTB6cGtndDQ5Mzc5QDI5OmY1a2g6aGk7PWM2aUA3OTVrOzY5PWc1a2g5aWhBNGk_amBobXhbbU5dN2JzeTUzODc2ODw5ODZlPGdnOWxoOjlqNWU_PjU0aj81ODluNGdnQGVnQDhoPmZnZ2l3YmlNXDswans5

  通过对播放器和js的分析,实现对加密的url解密,得到真实的播放地址。

  http://dal-video.baijiayun.com/cf73f30601fa8b0aa44ea0b8cddcff8e/5a99193d/00-x-upload/video/10437153_3fc2ef54b2b9540c8334f1da7dc91f9a_dfqYhIU4_mp4/10437153_3fc2ef54b2b9540c8334f1da7dc91f9a_dfqYhIU4.ev1(专用格式)

  一般情况下,普通平台的只要解析到真实地址就可以实现播放下载了。

  某家云在此基础上,同时也对视频做了初步加密,这点做得还是不错的。但是加密算法过于简单,通过解密,即可实现本地观看。

 

 

  3、视频加密

  区别于对url进行处理,视频加密是对数据加密,达到即便被下载也无法播放的目的。目前比较知名的视频云平台,几乎均有对视频进行加密处理。

  Flash端多是自定义算法,Html5大多基于HLS 协议使用或开发。

  (一)Flash-FLV视频加密方案

  方案一、flv部分数据加密,采用DES、AES128或其它算法。

 

  比如某网校采用的某C视频云平台,就是对flv的头部数据进行加密,视频为pcf 格式。

  http://www.k**9.com/course.php?act=details&id=1317 获取的下载地址

  http://cd14-ccd1-1.play.bokecc.com/flvs/cb/Qx8ov/hePPu36VDu-2.pcf?t=1519883947&key=692CCC2A7E07BBF08960BD53F916FFF9

  由于加密的数据较少,且算法比较单一,所以存在被解密的风险。

 

  网络上已经出现了相关的解密工具。目前采用此类方案的厂商,包含但不仅限于 某C视频、某家云等。

  (2)flv切片加密处理,一般也是采用DES、AES128、XOR或其它算法。

  针对第一种flv加密方式存在的问题,如算法单一、视频过大。更多有实力的厂商,在此基础上优化、衍生出更加优秀的解决方案。

  采用切片方式的优点较多,如加载更快速、播放更流畅、每一个数据片段都采用了加密,解密难度更高。

 

  1、比如某网校采用的某云视频云平台,演示地址

  http://www.233**63.com/front/homepage!showSellWayInfo.action?queryAssessCondition.currentPage=1&querySellWayCondition.sellId=40

  经过分析可以得到片段地址,每一段均是加密的smf文件,地址存在规律性

  http://videop-cdl.capitalcloud.net/pub-625073743425235001/ent-699271777343257237/ren-699272949902880543/1/699272949902880543_2_0_5000.smf

  http://videop-cdl.capitalcloud.net/pub-625073743425235001/ent-699271777343257237/ren-699272949902880543/1/699272949902880543_2_5000_10000.smf

  http://videop-cdl.capitalcloud.net/pub-625073743425235001/ent-699271777343257237/ren-699272949902880543/1/699272949902880543_2_10000_15000.smf

  经过分析,其实每一段都是flv片段,进行了简单的加密。由于分片算法比较单一,存在不足,所以还是可能被解码合并的。

 

  2、某某威视也采用flv切片加密技术,其算法更复杂,并会自动升级,目前市面上没有对应的解密方案

  目前采用此类flv优化方案的厂商,包括但不仅限于某量、某山(某云)等。

 

  (二)HTML5-HLS视频加密方案

  鉴于flash跨平台的兼容性问题及漏洞,越来越多的厂商更加青睐在H5作视频加密方案,同时实现pc及移动端的视频保护。目前较为广泛采用的是apple hls 协议。

  HLS协议理论可以参考该类文章http://blog.csdn.net/jwzhangjie/article/details/974402

  目前hls协议的使用,包含了原生协议和自定义优化两种。

  (1)原生hls协议

  Hls协议天生的优势,使得大部分厂商便可以直接采用,并未做任何处理。但由于协议的公开性,目前网络上已经有对应的解密方案,其中不乏傻瓜式工具类。如ffmpeg。

  比如该网站采用的某讯云平台,http://www.hz**x.com/course/detail?goods_id=269

  通过简单调试,得到对应的m3u8地址,再利用ffmpeg命令行便可实现下载。

  http://1251150518.vod2.myqcloud.com/4149f144vodtransgzp1251150518/c6fdf3479031868223044654629/KXN2BbJnqicA.f230.m3u8 命令行大致如下

 

      目前采用该协议的厂商,包括但不仅限于某讯云、某c视频、某宝视频等。

  (2)基于hls协议优化

  针对hls协议的问题,部分对技术有追求的厂商,便推出了一些优化处理方案。当然hls视频的泄漏,主要还是密钥的泄漏,所以优化均是围绕AES128密钥的保护入手做处理。

  1、某某soho采用了密钥混淆错序的方式。将原本的16字节密钥处理为20字节,通过播放器进行复位解码。该算法容易被猜测出混淆错序规则,存在一定的风险。

 

  以某某soho官网的课程为例http://demo.***soho.com/open/course/2

  经过调试分析,可以得到对应的m3u8索引文本,采用了气球云存储,http://demo.***soho.com/hls/3182/playlist/XZA3vMgVaxNQFagdbte5t8ORCfX0tC5e.m3u8

 

  各个清晰度m3u8采用了编码加密,有时效性,仅能访问一次,防范做的还是不错的。

 

  可以看到视频采用了AES128的加密算法。密钥的地址,第一次访问的时候,是20字节,“f8864726x4r6f34w4r36”,其后每次访问都是不同的16字节。

  其实真实的秘钥,就藏在了第一次的20字节里面,之后的16字节都是假的秘钥。

  我们需要从20字节中找到真实秘钥,从而实现解密。具体算法不做阐述。

 

 

  2、某某威视目前针对hls做了两种优化方案,分别是web授权和app授权。

  (1)Web授权

  介绍:为了兼容微信平台和web页面,采用了sign校验,一次访问即失效。有效防止盗链和下载。

 

  该方式与某soho方案类似,通过对m3u8地址,进行sign计算校验,并增加了时效性,不排除被猜测规则,伪造下载地址的可能性。

  (2)App授权

  介绍:采用服务器校验和传输密钥,将原本的16字节加密处理为32字节,SDK授权解密进行解码。

 

  这种方式是对密钥key数据本身进行加密处理。目前尚无解密方案出现,安全级别极高。当然随着时间的迁移,不排除以后有对应的解密方案出炉。

  目前基于hls协议进行优化处理的厂商,包括但不仅限于某某威视、某soho。

 

以上内容为笔者整理相关资料合成见解,部分数据参考第三方或官网文档。


链接:https://www.chinaz.com/news/2018/0426/879603.shtml
来源:站长之家

 

转载于:https://www.cnblogs.com/jndolit/p/10577900.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一个前后端分离的web项目(vue+spring boot)

Github地址:https://github.com/smallsnail-wh 前端项目名为wh-web后端项目名为wh-server项目展示地址为我的github pages(https://smallsnail-wh.github.io)用户名:admin,密码admin(第一次启动会比较慢&am…

部署php项目到linux

服务器:39.106.26.67rootBayou2009 数据库:rootbayou2009 项目文件夹路径:/home/www/项目文件夹名称:education.bayou-tech.cn 绑定域名:education.bayou-tech.cn 绑定域名: 用ftp把配置文件下班到windows修…

ionic最新安装教程

公司最近开发webapp,研究了一下ionicangularjs开发。 安装过程中碰到许多问题,发现网上有好多资料都已经过时,在这里把最新的流程记录一下。 首先是安装node.js,通过nodejs官网下载,没什么问题。npm已经默认安装&#…

ZooKeeper安装配置

配置 1、在conf目录下创建一个配置文件zoo.cfg tickTime2000 dataDir.../zookeeper/data dataLogDir.../zookeeper/dataLog clientPort2181 initLimit5 syncLimit2 server.1server1:2888:3888 server.2server2:2888:3888 server.3server3:2888:3888 •tickTime&#…

1.1 算法编译与调试

编程要保持简单(KISS, keep it simple and stupid)。 算法竞赛中的输入输出框架: 输入数据保存在文件中,输出数据也保存在文件中。 几乎所有算法竞赛的输入数据和标准答案都是保存在文件中的。 使用文件最简单的方法是使用输入…

ionic2开发的仿外卖点餐系统(Ionic2+Angular2

github上的项目源码 Run this Project(运行该项目) first(首先): make sure your computer install ionic 确保你的电脑安装了ionic2,不懂自行百度 second(其次):$ ionic start wechat_restaurant tutorial…

Container Injection

Container的历史: 2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术。Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统、用户…

HadoopHA集群搭建

三台主机: 192.168.143.111 hdp1 192.168.143.112 hdp2 192.168.143.113 hdp3 1、安装配置ZooKeeper; (1)在conf目录下创建配置文件zoo.cfg tickTime2000 dataDir.../zookeeper/data dataLogDir.../zookeeper/dataLog clientPort2181 initLim…

node搭建服务器,写接口,调接口,跨域

刚开始学node,今天做这个也是累死宝宝了,以后可以自己写接口自己用了,再也不用麻烦人家后台人员了,这些年我们欠他们的太多了,说多了都是泪,不多说,往下看吧。。。 服务端项目目录下&#xff1a…

ThreadPoolExcutor 线程池 异常处理 (上篇)

前言 最近看到crossoverJie的一篇文章:一个线程罢工的诡异事件 首先感谢原作者的分享,自己获益匪浅。然后是回想到自己的一次面试经历,面试官提问了线程池中的线程出现了异常该怎样捕获?会导致什么样的问题? 示例代码 …

3 MapReduce计算模型

MapReduce被广泛应用于日志分析、海量数据排序、在海量数据中查找特定模式等场景中。 MapReduceJob 在Hadoop中,每个MapReduce任务都被初始化为一个Job。 每个Job又可以分为两个阶段:Map阶段和Reduce阶段。这两个阶段分别用Map函数和Reduce函数来表示。…

ionic3 调用本地相册并上传图片

前言在APP中启动相册选择器或者拍照上传图片这些功能是非常常见的。对于Ionic2,我们只能通过cordova插件实现调用原生的功能。下面将简单的封装一个选择相册或拍照上传图片的ImgService服务。具体如下。 Cordova准备下载安装所需的Cordovar插件: Image P…

Mapreduce中maptask过程详解

一、Maptask并行度与决定机制 1.一个job任务的map阶段的并行度默认是由该任务的大小决定的; 2.一个split切分分配一个maprask来并行处理; 3.默认情况下,split切分的大小等于blocksize大小; 4.切片不是mapper类中对单词的切片&…

4 开发MapReduce应用程序

系统参数配置 Configuration类由源来设置,每个源包含以XML形式出现的一系列属性/值对。如: configuration-default.xml configuration-site.xml Configuration conf new Configuration(); conf.addResource("configuraition-default.xml"…

实用的HTML5的上传图片方法

<input type"file" accept"video/*;capturecamcorder"> <input type"file" accept"audio/*;capturemicrophone"><input type"file" accept"image/*;capturecamera">直接调用相机<input type…

3.11 列出完数

完数&#xff1a;一个数恰好等于不包括自身的所有不同因子之和。如6123。 输入&#xff1a;每一行含有一个整数n。 输出&#xff1a;对每个整数n&#xff0c;输出所有不大于n的完数。输出格式为&#xff1a;整数n&#xff0c;冒号&#xff0c;空格&#xff0c;完数&#xff0…

angularjs 上传

xxx.module.ts模块 import { NgModule} from “angular/core”; import { FileUploadModule } from “ng2-file-upload” ; import { XXXComponent } from “./xxx.component”; NgModule({ imports:[ FileUploadModule ], declarations:[ XXXComponent &#xff0c;/component…

PHPCMS的产品筛选功能

如下图所示功能&#xff1a; 首先&#xff0c;用下面这些代码替换掉phpcms/libs/functions/extention.func.php的内容 <?php /*** extention.func.php 用户自定义函数库** copyright (C) 2005-2010 PHPCMS* license http://www.phpcms.cn/licen…

框架使用SpringBoot + Spring Security Oauth2 +PostMan

框架使用SpringBoot Spring Security Oauth2 主要完成了客户端授权 可以通过mysql数据库读取当前客户端表信息进行验证&#xff0c;token存储在数据库中 1.引入依赖 oauth2 依赖于spring security&#xff0c;需要引入spring&#xff0c; mysql&#xff0c;redis&#xff0c; …

3.12 12!配对

找出输入数据中所有两两相乘的积为12!的个数。 输入样例&#xff1a; 1 10000 159667200 9696 38373635 1000000 479001600 3 1 479001600 输出样例&#xff1a; 3 有3对&#xff1a; 1 479001600 1 479001600 3 159667200 #include<iostream> #include<fstre…