本發明涉及安全驗證領域,更具體地,涉及一種視頻流鑒權方法及裝置。
背景技術:
目前,視頻直播是利用互聯網及流媒體技術進行直播,視頻內容的提供方存在視頻流播放地址被第三方平臺獲取,從而第三方平臺可以不通過直播網站直接觀看視頻的問題,即繞過了直播網站的視頻播放器來觀看視頻,會造成視頻網站流量的減少。
對于視頻直播網站其視頻播放大多采用flash來播放,因此其視頻流地址的鑒權也大多采用flash的代碼來編寫,然而flash的代碼是使用actionscript這種腳本語言來編寫,這種腳本語言編寫的代碼容易被反編譯,從而通過反編譯來了解視頻流地址鑒權算法的原理。現有技術中,直播間的所有視頻流地址使用同一套鑒權算法,并且由于首頁的視頻流必須以最快的速度讓用戶能夠看到,所以其視頻流地址的鑒權算法不宜太復雜,同時其代碼量不宜過多,因為代碼量的增加會導致首頁播放的flash文件變大,從而導致從服務器下載flash播放器的速度變慢,導致用戶要過一段時間才能在首頁上看到視頻流。
為了使得首頁視頻流的播放速度足夠快,現有技術簡化了直播間的所有視頻流地址的鑒權算法,從而導致視頻流地址的鑒權算法易被第三方破解。
技術實現要素:
本發明提供一種克服上述問題或者至少部分地解決上述問題的一種視頻流鑒權方法及裝置。
根據本發明的第一方面,提供一種視頻流鑒權方法,包括:
s1、基于預設的加密指令集,更新直播間首頁視頻流的加密指令;
s2、對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為所述直播間首頁視頻流的一組第一鑒權鍵值;
s3、在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;
s4、若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
其中,步驟s1之前還包括:
基于預設的加密指令集,分配第一類加密指令給直播間首頁視頻流,分配第二類加密指令給直播房間內視頻流;
其中,所述第一類加密指令的復雜度低于所述第二類加密指令的復雜度。
其中,步驟s1包括:
設置加密指令更新的時間間隔;
在所述直播間首頁視頻流使用的加密指令時長等于所述時間間隔時,從所述加密指令集中選取另一加密指令替換現在直播間首頁視頻流使用的加密指令。
其中,步驟s2包括:
使用更新前的加密指令,對連入客戶端的信息進行加密,得到所述更新前的第一鑒權鍵值;
使用更新后的加密指令,對所述連入客戶端的信息重新加密,得到所述更新后的第一鑒權鍵值;
將所述更新前的第一鑒權鍵值和所述更新后的第一鑒權鍵值,記錄為一組所述直播間首頁視頻流的第一鑒權鍵值。
其中,當所述預設時間段內獲取到多組第一鑒權鍵值時,步驟s3包括:
在所述預設時間段內,判斷所述接收到客戶端發送的第二鑒權鍵值,是否等于所述多組第一鑒權鍵值中包含的任意一個第一鑒權鍵值。
其中,所述當所述預設時間段內獲取到多組第一鑒權鍵值時,步驟s3還包括:
在所述預設時間段內,每新獲取一組第一鑒權鍵值,刪除保存的前一組第一鑒權鍵值;
判斷所述接收到客戶端發送的第二鑒權鍵值,是否等于所述預設時間段內獲取的最后一組第一鑒權鍵值中的其中一個。
其中,所述第二鑒權鍵值的計算方法和所述第一鑒權鍵值的計算方法一致。
根據本發明提供的第二方面,本發明提供一種視頻流鑒權裝置,包括:
更新模塊,用于基于預設的加密指令集,更新直播間首頁視頻流的加密指令;
獲取模塊,用于對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為所述直播間首頁視頻流的一組第一鑒權鍵值;
判斷模塊,用于在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;
鑒權模塊,用于若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
根據本發明的第三方面,提供一種計算機程序產品,包括程序代碼,所述程序代碼用于執行上述所述的視頻流鑒權方法。
根據本發明的第四方面,提供一種非暫態計算機可讀存儲介質,用于存儲如前所述的計算機程序。
本發明提供的視頻流鑒權方法,通過更新直播間首頁視頻流的加密指令,并在預設時間段內對服務器和客戶端的鑒權鍵值進行比對,判斷連入客戶端的合法性,提高了首頁視頻流的安全性。
附圖說明
圖1為本發明實施例提供的一種視頻流鑒權方法流程圖;
圖2是本發明實施例提供的一種視頻流鑒權裝置結構圖。
具體實施方式
下面結合附圖和實施例,對本發明的具體實施方式作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。
圖1為本發明實施例提供的一種視頻流鑒權方法流程圖,如圖1所示,包括:
s1、基于預設的加密指令集,更新直播間首頁視頻流的加密指令;
s2、對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為所述直播間首頁視頻流的一組第一鑒權鍵值;
s3、在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;
s4、若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
在視頻直播領域,從用戶的角度出發,直播平臺首頁的視頻流必須以最快的速度讓用戶能夠看到,才能保證用戶的體驗度。所以直播平臺首頁的視頻流鑒權算法不宜復雜,同時代碼量不宜太大,現有技術一般采用簡化視頻流地址的鑒權算法,從而導致視頻流鑒權算法容易被人破解,給視頻播放帶來安全隱患。
針對上述現有技術存在的問題,本發明實施例提供的視頻流鑒權方法,在不改變視頻流鑒權算法復雜度的前提下,通過更新視頻流的加密指令,來保障首頁視頻流的安全性,并且由于算法本身的代碼量小,其頻繁更新的過程也不會給服務器造成帶寬壓力。
可以理解的是,本發明實施例所述的視頻流鑒權方法為對視頻流地址的鑒權方法,所述鑒權為驗證連入的客戶端是否具有訪問服務器提供視頻流地址的權利。
s1中,所述預設的加密指令集為服務器預設的多種加密算法,如tea算法、rsa算法、aes算法等,但不同加密算法算法復雜度存在差異,首頁視頻流的加密算法一般采用算法復雜度較低的加密算法,本發明實施例采用的加密算法為tea算法,但本發明實施例對此不做具體限定。
s1中,所述更新直播間首頁視頻流的加密指令即為更換加密算法,重新對直播間首頁視頻流信息進行加密。對于每一次更新,更新前使用的加密算法都和更新后使用的加密算法不相同,可以理解的是,本發明實施例提供的加密指令集中至少包括兩種加密算法,本發明實施例不對加密指令集中包含的加密算法數量做具體限定。
s2中,所述第一鑒權鍵值為使用對應的加密算法生成的鑒權newkey值,具體的實現如下所示:
newkey=encryptdata(token+roomid+id+ip+time,key);
其中,所述encryptdata為使用的加密算法、token為連入客戶端的登陸令牌、roomid為連入客戶端請求的房間id、id為連入客戶端設備的id標識、ip為連入客戶端當前ip地址、time為用戶請求的當前時間、key為客戶端連入時,服務器分配的密鑰值。
那么所述第一鑒權鍵值是由連入客戶端提供的信息以及加密算法計算出的一個權限驗證信息值,用于對客戶端權限進行判定。
s2中,在對加密算法的更新過程中,會產生兩個第一鑒權鍵值,分別為更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,將這兩個第一鑒權鍵值作為一組所述直播間首頁視頻流的第一鑒權鍵值,用于對s3中獲取的客戶端發送的第二鑒權鍵值做比對,以使得服務器判定連入的客戶端是否具有權限。
s3中,所述預設的時間段為服務器根據客戶端的緩存速度設置的一個反應時間區,可以理解的是,由于服務器對加密算法進行了更新,而客戶端上使用的播放器緩存并沒有及時更新到最新的播放器,使得有權限的客戶端反而鑒權失敗,導致無法觀看首頁的視頻流。
針對上述問題,本發明實施例設置了一個緩沖時間段,使得在該時間段內服務器許可更新前的加密算法和更新后的加密算法均有效。
從而判斷接收客戶端發送的第二鑒權鍵值與第一鑒權鍵值是否相等來驗證連入的客戶端是否具有權限。
s4中,若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則判定該連入的客戶端為合法客戶端,并向其發送視頻流地址,若所述第二鑒權鍵值不等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則判定該連入的客戶端為不合法,拒絕向其發送視頻流地址。
本發明實施例通過更新直播間首頁視頻流的加密指令,并在預設時間段內對服務器和客戶端的鑒權鍵值進行比對,判斷連入客戶端的合法性,提高了首頁視頻流的安全性。
在上述實施例的基礎上,步驟s1之前還包括:
基于預設的加密指令集,分配第一類加密指令給直播間首頁視頻流,分配第二類加密指令給直播房間內視頻流;
其中,所述第一類加密指令的復雜度低于所述第二類加密指令的復雜度。
現有技術中,所有視頻流地址鑒權算法采用的是同一套方法,針對首頁視頻流需要快速打開的問題,采用了較為簡便的加密算法對其加密,但對于直播房間內視頻流的加載速度并不需要做到盡量快速,但現有的直播房間內視頻流鑒權方法采用和首頁視頻流鑒權方法一樣的方案,大大降低了對直播房間內視頻流地址的保護。
針對上述現有技術中存在的問題,本發明實施例提供了兩類加密指令供直播間首頁視頻流和直播房間內視頻流使用。
即提供第一類加密算法供直播間首頁的視頻流使用,另提供第二類加密算法供直播房間內使用,且第一類加密算法的算法復雜度小于所述第二類加密算法,這樣便可以采用兩套不同的加密方法分別對直播間首頁視頻流和直播房間內視頻流進行加密,并且互相兼容。
具體的,直播間首頁一般采用tea加密這種較為簡單的加密算法,而直播房間內一般采用rsa、aes這種算法復雜度較高的加密算法進行加密。
需要說明的是,在使用rsa、aes算法對直播房間內的視頻流進行加密時,為了避免rsa、aes加密算法依舊易被破解,還可將其疊加使用,即使用rsa后再使用aes加密,使得算法復雜度進一步提高。
可以理解的是,本發明實施例提供的rsa、aes加密算法僅為本發明實施例提供的優選方案,本發明實施例對此不做具體限定。
本發明實施例通過使用兩類加密算法分別對首頁視頻流和直播房間內視頻流進行加密,在不影響兼容性的前提下,提高了直播房間內視頻流的安全程度。
在上述實施例的基礎上,步驟s1包括:
設置加密指令更新的時間間隔;
在所述直播間首頁視頻流使用的加密指令時長等于所述時間間隔時,從所述加密指令集中選取另一加密指令替換現在直播間首頁視頻流使用的加密指令。
可以理解的是,對于直播間首頁使用的加密算法,需要對其更新的頻率進行設置,優選的,采用10秒作為加密算法更新的時間間隔,但本發明對此更新時間間隔不做具體限定。
具體的,當直播間首頁視頻流使用的加密算法使用了設置的時長后,即更換另一套加密算法來代替原算法,一般的,兩種加密算法的算法復雜度不會差別太大。
在上述實施例的基礎上,步驟s2包括:
使用更新前的加密指令,對連入客戶端的信息進行加密,得到所述更新前的第一鑒權鍵值;
使用更新后的加密指令,對所述連入客戶端的信息重新加密,得到所述更新后的第一鑒權鍵值;
將所述更新前的第一鑒權鍵值和所述更新后的第一鑒權鍵值,記錄為一組所述直播間首頁視頻流的第一鑒權鍵值。
當所述預設時間段內獲取到多組第一鑒權鍵值時,步驟s3包括:
在所述預設時間段內,判斷所述接收到客戶端發送的第二鑒權鍵值,是否等于所述多組第一鑒權鍵值中包含的任意一個第一鑒權鍵值。
可以理解的是,當設置的預設時間段過長,而加密指令更新的時間間隔過短時,會在預設時間段內,發生多次加密算法的更新過程,而每一次加密算法更新中,均會獲取一組第一鑒權鍵值,那么在預設時間段內獲取到多組第一鑒權鍵值時,服務器需提供一種鑒權方法來判別連入的客戶端是否合法。
本發明實施例提供的方法采用保留在該預設時間段內獲取到的所有第一鑒權鍵值,并只要接收到的第二鑒權鍵值等于所有第一鑒權鍵值中的任意一個,則判定連入的客戶端合法。
在上述實施例的基礎上,步驟s3還包括:
在所述預設時間段內,每新獲取一組第一鑒權鍵值,刪除保存的前一組第一鑒權鍵值;
判斷所述接收到客戶端發送的第二鑒權鍵值,是否等于所述預設時間段內獲取的最后一組第一鑒權鍵值中的其中一個。
可以理解的是,上述實施例提供的方法雖然能準確判別連入的客戶端的合法性,但給服務器帶來了較大的數據冗余量,故本發明實施例優選的可采用只記錄一組第一鑒權鍵值,并在更新時刪除前一組保留的第一鑒權鍵值。
再判斷所述接收到客戶端發送的第二鑒權鍵值,是否等于所述預設時間段內獲取的最后一組第一鑒權鍵值中的其中一個,以此來判定連入的客戶端是否合法。
在上述實施例的基礎上,所述第二鑒權鍵值的計算方法和所述第一鑒權鍵值的計算方法一致。
可以理解的是,所述第二鑒權鍵值的計算方法指代為:
newkey=encryptdata(token+roomid+id+ip+time,key);
其中,所述encryptdata為使用的加密算法、token為連入客戶端的登陸令牌、roomid為連入客戶端請求的房間id、id為連入客戶端設備的id標識、ip為連入客戶端當前ip地址、time為用戶請求的當前時間、key為客戶端連入時,服務器分配的密鑰值。
圖2是本發明實施例提供的一種視頻流鑒權裝置結構圖,如圖2所示,該裝置包括:更新模塊1、獲取模塊2、判斷模塊3以及鑒權模塊4,其中,
更新模塊1用于基于預設的加密指令集,更新直播間首頁視頻流;
獲取模塊2用于對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為所述直播間首頁視頻流的一組第一鑒權鍵值;
判斷模塊3用于在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;
鑒權模塊4用于若所述第二鑒權鍵值為所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
具體的視頻流鑒權方法可參見上述實施例,本發明實施例在此不再贅述。
本發明實施例通過更新模塊更新直播間首頁視頻流的加密指令,并通過獲取模塊獲取鑒權鍵值,再通過判斷模塊在預設時間段內對服務器和客戶端的鑒權鍵值進行比對,最后通過鑒權模塊確認連入客戶端的合法性,提高了首頁視頻流的安全性。
本實施例提供一種視頻流鑒權裝置,包括:至少一個處理器;以及與所述處理器通信連接的至少一個存儲器,其中:
所述存儲器存儲有可被所述處理器執行的程序指令,所述處理器調用所述程序指令以執行上述各方法實施例所提供的方法,例如包括:s1、基于預設的加密指令集,更新直播間首頁視頻流的加密指令;s2、對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為一組所述直播間首頁視頻流的第一鑒權鍵值;s3、在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;s4、若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
本實施例公開一種計算機程序產品,所述計算機程序產品包括存儲在非暫態計算機可讀存儲介質上的計算機程序,所述計算機程序包括程序指令,當所述程序指令被計算機執行時,計算機能夠執行上述各方法實施例所提供的方法,例如包括:s1、基于預設的加密指令集,更新直播間首頁視頻流的加密指令;s2、對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為一組所述直播間首頁視頻流的第一鑒權鍵值;s3、在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;s4、若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
本實施例提供一種非暫態計算機可讀存儲介質,所述非暫態計算機可讀存儲介質存儲計算機指令,所述計算機指令使所述計算機執行上述各方法實施例所提供的方法,例如包括:s1、基于預設的加密指令集,更新直播間首頁視頻流的加密指令;s2、對于每一次所述加密指令更新,獲取更新前的第一鑒權鍵值和更新后的第一鑒權鍵值,作為一組所述直播間首頁視頻流的第一鑒權鍵值;s3、在預設的時間段內,判斷接收到客戶端發送的第二鑒權鍵值,是否等于所述時間段內獲取一組第一鑒權鍵值中的其中一個;s4、若所述第二鑒權鍵值等于所述時間段內獲取一組第一鑒權鍵值中的其中一個,則向所述客戶端發送視頻流。
本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
最后,本申請的方法僅為較佳的實施方案,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。