ETH官方钱包

前往
大廳
主題

串流媒體 DASH mpd — ( 2 )

路人乙 | 2024-03-08 08:58:31 | 巴幣 100 | 人氣 956

哈嚕~進來看這篇文章的你,如果不是想增廣見聞、學習新知,就是想多了解一些好用來壞壞。
 
基於上一篇簡單的介紹了mpd是什麼,最後聽在了講解mpd檔案內的結構,那麼從這個部分繼續往下講!

這次我是到 DASH-IF 網站上,裡面有一些測試用的 MPD,可以讓我們了解 Dash 規格。我選擇的是 [Google] Shaka Demo Assets: Angel-One Widevine來當作範例。

在這個網站上的測試影片基本上都是經過加密後的,那可以試著用IDM下載影片看看。


可以發現後面都寫著「受保護的內容」,這代表著影片受到數位版權管理(英語:Digitalrights management,縮寫為DRM
這是什麼東西?來看看維基百科怎麼寫。

「數位版權管理(英語:Digitalrights management,縮寫為DRM)是一系列訪問控制技術,通常用於控制數位內容和裝置在被銷售之後的使用過程。DRM有時也稱為拷貝保護、複製控制、技術保護措施等,但這些稱呼存在爭議。許多數位出版社和軟體廠商都使用了DRM,例如亞馬遜、AT&T、AOL、AppleInc.、Netflix、Google[7]、BBC、微軟、Sony、Valve Corporation(以及其旗下的Steam)等。」

終於進入正題了,「加密系統」,說到了影片經過了加密來保護,那肯定就有用來解密的金鑰,正如一扇門肯定會有用來開門的鑰匙。

這裡我們要知道的是,這裡採用的是Widevine的DRM,對於Widevine而言,其密鑰是一個字串,結構由兩個部分組成:

< Key ID 公鑰(KID) > : < Key 私鑰>

如上所示,這是一個金鑰(用於解密影片)。
可以看到該金鑰由兩部分組成,前面的稱為Key ID,中文則稱為公鑰,而後面的稱為Key,中文則稱為私鑰

金鑰的基本特徵是:
由公鑰(Key ID)和私鑰(Key)兩部分組成,中間透過一個冒號(:)串接起來。
② 公鑰和私鑰為隨機的字符,且長度較長,若透過暴力破解,所需時間可達百年以上,這樣的隨機性和不可猜測性確保了被加密的檔案的安全性。
③ 公鑰儲存在mpd檔案中,從使用者向伺服器發送驗證訊息(Authorization),伺服器核驗後向客戶端發送一個長字串,其中就會包含私鑰。

由於受到了保護因此是無法使用IDM來下載影片的,首先先透過瀏覽器的開發者工具( DevTools)將mpd檔案抓取下來查看。


找尋蛛絲馬跡,果然找到了 < ContentProtection 內容保護 > 的標籤,那我們來看看裡面寫的內容

<ContentProtectionvalue="Widevine"schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">

首先先來看"Widevine",這個是Google的技術,後面的"UUID"全名為 「Content Protection System ID」,下面列出了目前市面上常見的幾個DRN技術提供商

公司 DRM UUID
Google Widevine EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED
Microsoft PlayReady 9A04F079-9840-4286-AB92-E65BE0885F95
Apple FairPlay 94CE86FB-07FF-4F43-ADB8-93D2FA968CA2

那這樣就可以簡單一眼看出此技術是誰提供的。這裡只有寫出比較多人用的供應商資料,其他還有很多小公司例如:Clearkey、DRMToday…等等。

那這樣就可以簡單一眼看出此技術是誰提供的。
眼尖的你一定發現了,圖中反白的上方那一大串東西內赫然寫著"PlayReady",是的沒錯,這個影片上所使用的加密技術適用於GoogleMicrosoft

接著我們來看一個很重要的東西,PSSH

<cenc:pssh>AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABQIARIQblodJidXR9eARuql0dNLWg==</cenc:pssh>

這個"PSSH"的全名是「ProtectionSystem Specific Header」,翻譯是「保護系統特定標題」,什麼?你說你在圖中來看到了KID
果然細心的你一定也發現了,還記得上面提到的第三點嗎?

公鑰儲存在mpd檔案中,從使用者向伺服器發送驗證訊息(Authorization),伺服器核驗後向客戶端發送一個長字串,其中就會包含私鑰。

對的!公鑰 ( Key ID, KID ) 就是這麼囂張地展示在你的眼前,你問那跟PSSH有什麼關係?
PSSH就是要向伺服器發送的驗證訊息不可或缺的東西!這串字符裡面就包含了KID!所以想要獲得金鑰你必須要湊齊兩種不可或缺的資料,1. PSSH 以及 2. 驗證伺服器的網址。

那麼文章進入了尾聲,來做一個小小行列式總結吧。

1. mpd內包含了加密技術商的訊息

2. mpd內可以找到KID和PSSH

3. 想要獲得解密金鑰必須獲取兩件必要的資料,驗證伺服器網址以及PSSH

創作回應

相關創作

更多創作