在線視頻常見加密方式及安全性透析

信息化時代,多媒體的應用日漸成為人們生活中不可或缺的部分,無論是獲取最新資訊還是教育學習,視頻都是直觀高效的媒介之一。

  基于互聯網的快速傳播,眾多培訓機構也逐漸將線下原創版權課程遷移到在線平臺中,一方面可以更快的打響知名度,同時往往能帶來比較樂觀的收益。這也滋生了黑產,盜版隨之出現。如何防范原創視頻被輕易盜版呢?針對該問題,筆者對市面上的視頻防盜方案做了一定調研,如有任何不當之處,請指正。

  本文將根據面向人群分類闡述。一種是防小白用戶,一種是防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.pswp.cn/news/387183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387183.shtml
英文地址,請注明出處:http://en.pswp.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…