如何實現真正安全的RTMP防盜播整體加解密方案
- 2019 年 10 月 6 日
- 筆記
好多企業或開發者聯繫大牛直播SDK,希望我們能夠提供一套整體的音影片加密、解密方案,能通過公網標準伺服器,高效、安全可靠的實現加密數據的傳輸、播放。
首先介紹下常規的解決方案:
1. rtmp防盜播當前常用做法是給rtmp url增加相關參數,rtmp server根據參數做驗證,缺陷是沒有對傳輸的音影片數據包做加密,只要截取到rtmp包解析後就可以播放;
2. rtmps和rtmpe:有些伺服器支援的不好,rtmps需要證書,rtmpe也不好擴展使用國密sm4。
為了解決上述這些問題,可以在音頻影片編碼數據上進行一些擴展,rtmp server實現者只要實現rtmp協議就好, 不需要進一步去了解音影片編碼的細節,我們可以在具體編碼數據上擴展。
為此,我們發布了基於AES音影片逐幀數據加密整體解決方案,第三方即便是破解了URL,也沒法播放,通過抓包工具抓取到數據,也沒法正常顯示。
此方案的難點是需要了解音影片編碼相關的細節,才能進行適當的擴展。優點是常用的rtmp server可以直接支援,通用性很強。只需要改推送端和播放端就好。
接下來我們實際測試下這個方案加、解密效果:
首先下載可以做rtmp加密的推送端和播放端( github ), 打開windows推送端SmartPublisherDemo.exe:

選擇好音影片採集源等配置(按圖上紅線標的方式配置),然後點擊"配置加密"按鈕:

可以選擇只加密影片,只加密音頻和音影片都加密,然後輸入密鑰(由於是測試輸入一個很簡單的密鑰,實際使用請輸入128位,192位或者256位密鑰). 輸入完成後點擊"確定"按鈕.

再點擊推送按鈕,就會生成播放地址,拷貝播放地址,打開"SmartPlayer.exe":

輸入播放地址,點擊播放就會彈出密鑰輸入框,輸入密鑰,點擊"確定"按鈕就可看到影像:

至此一個完整的rtmp加密方案測試完畢。
上述demo目前使用安全性和通用性都比較好的aes對稱加密演算法,支援aes 128, 192, 256. 也可很方便擴展增加國密sm4等更多加密演算法。 目前也支援Android和ios平台. 上述demo支援rtmp h264, rtmp h265, rtmp aac, rtmp speex, rtmp pcma, rtmp pcmu加密。也支援拉rtsp影片轉rtmp加密推送。