HDCP是什麼?
HDCP logo
HDCP(High-Bandwidth Digital Content Protection,高頻寬數位內容保護),是由英特爾(Intel)公司所發展,用以確保數位化的影像與聲音資料在通過DVI或HDMI介面(之後的Display port也有支援)傳送時不至於遭到非法拷貝(有人已經號稱可以破解HDCP)。
HDCP 1.0 → DVI
HDCP 1.1之後 → DVI及HDMI (本篇以HDCP 1.1版做說明)
HDCP的授權管理由英特爾的子公司「數位內容保護公司」(Digital Content Protection, LLC)負責,HDCP的規格受到多項專利權保護,任何人欲實作HDCP必須申請授權。
每個裝置都需要一組HDCP key,廠商除了每年要向Digital HDCP委員會支付15000美元的年費,還要向HDCP委員會購買key,key的費用依據每單購買的數量不同,而不同(買的越多越便宜):
一次性購買1萬個key,收費1000美元。
一次性購買10萬個key,收費2500美元。
一次性購買100萬個key,收費5000美元。
基本來說,欲播放有HDCP保護的影音內容如HD DVD、Blu-ray Disc、PlayStation 3遊戲(透過HDMI輸出時)、PlayStation 4遊戲,訊號來源(播放機或顯示卡)和顯示器雙方都必須內建HDCP金鑰功能才能正常播放。若系統任何一者不配備此密匙,影像畫素有可能降低,甚至不能播放影像。現時許多顯示卡已內建HDCP功能。
目前,HDCP 的規格,已經由HDCP1.x,演進到更嚴謹的HDCP 2.2。
HDCP對畫面顯示的影響
HDCP認證失敗 - 雪花畫面
HDCP認證失敗 - 警告訊息
除了上述的雪花畫面和警告訊息,如果HDCP解密失敗,也可能造成畫面解析度降低或不播放畫面,不同的播放裝置會有不同的處理方式。
HDCP系統及名詞介紹
HDCP基本流程示意圖
HDCP系統
名稱 |
意義 |
位元數 |
Device A |
Transmitter (Tx, 發送端) |
|
Device B |
Receiver (Rx, 接收端) |
|
KSV |
Key Selection Vector(密鑰選擇向量) |
40-bit (0和1各20-bit) |
Aksv |
Device A的KSV |
|
Bksv |
Device B的KSV |
|
An |
Device A產生的隨機值 |
64-bit |
REPEATER |
用來描述Device B是否為Repeater |
1-bit |
Km |
利用Bksv中為1的bit當作索引,從40組key set中找出20組key, 再將這20組key加總,其加總值為Km |
|
Ks |
供HDCP內容編碼用 |
56-bit |
M0 |
供HDCP認證的第二部分使用 |
64-bit |
R0 |
與Device B回傳的R0’比對,R0 = R0’,HDCP認證才會過 |
16-bit |
Km’, Ks’, M0’, R0’ |
Device B計算產生的值,其意義與上述內容相同 |
|
HDCP的認證流程
HDCP的認證流程是透過I2C完成的(DP是利用AUX通道溝通),HDCP的認證流程分為三個部分:
第一部分:認證機制的初始化
1. 由Device A發起,可以在任何時候開始進行HDCP認證。
2. Device A送出An, Aksv
3. Device B回傳Bksv, REPEATER bit
4. Device A檢查Bksv
5. Device A和Device B分別利用得到的ksv計算Km, Ks, M0, R0 (Km’, Ks’, M0’, R0’)
第二部分:Device B為Repeater的情況
1. Device A設置5秒的Watchdog Timer,等待Repeater蒐集所有連接的Repeater和Receiver的KSV,若超過5秒還沒收到Repeater回傳的資料,則HDCP認證失敗。
2. Device B將蒐集到的KSV傳給Device A。
3. Device A檢查收到的資料是否正確,若V = V’則認證通過,否則認證失敗。
4. Repeater認證失敗的原因有以下幾點:
- V != V’
- Transmitter收到的KSV list超過其容量
- Device數量超過127個,Device深度超過7 level
- KSV list中有KSV在黑名單(Revocation list)裡
第三部分:內容傳輸進行時的情況(畫面播放時)
1. 在V blanking區運作。
2. Transmitter和Receiver各自算出Ki, Mi, Ri (Ki’, Mi’, Ri’)
3. i代表frame numer,若i=1,則代表第一張frame
4. 每128張frame更新一次Ri
5. Transmitter至少2秒檢查一次Ri是否等於Ri’
6. Transmitter讀取Ri的動作必須在1ms完成。
7. Enhance Link Verification
- Bcaps bit 1.1_FEATURE被立起來的時候執行
- 每16張frame比對Pj和Pj’,連續三次比對錯誤才會判為認證失敗。
Transmitter與Receiver的HDCP連結流程
State H0 : Reset, 沒有偵測到Receiver
State H0 → H1 : 當有偵測到Receiver時 (偵測到HPD變化)
State H1 : 讀取Receiver的EDID
State H1 → H2/H3 : Transmitter送出未加密的Video訊號,通知Receiver
State H2/H3 → A0 : 若Transmitter想進行HDCP認證,則進入A0 state
State A0:
- Transmitter應傳送一video信號 (如藍畫面或信息提示畫面),以避免HDCP還沒認證完成,使用者就因沒看到畫面而切換到其他video source。
- Transmitter每2秒polling一次Receiver,讀取Bksv,直到Receiver回覆Bksv為止。
State A0 → A1: Transmitter收到有效的Bksv後,開始進行HDCP認證流程。
State A1: 交換KSV
- Transmitter產生An並將An寫入Receiver
- Transmitter讀取Bcaps暫存器值,決定採用DVI或HDMI
- 若要使用Advance Cipher option則設定Ainfo
- Transmitter讀取Bksv及REPEATER bit
State A1 → A0 : 讀取到無效的Bksv
State A1 → A2 : Bksv為有效值
State A2 : 計算Km, Ks, M0, R0
State A2 → A3 : 計算完成後進入 state A3
State A3 :
- 若R0 = R0’則開始HDCP認證流程
- 要保留至少100ms的時間給Receiver計算R0’
- 若Bksv在黑名單中則認證失敗
State A3 → A0 : 認證失敗
State A4 : 認證成功
State A5 : Link Integrity Check, 每128張frame檢查Ri是否等於Ri’
State A5 → A0 : Ri != Ri’或R0’沒有在1ms內回覆
State A6 → A4 : REPEATER bit = 0
State A6 → A8 : REPEATER bit = 1
State A8 : 設5s的WD timer,等Repeater的READY bit設定。
State A8 → A0 : 若超過5秒沒收到READY bit則認證失敗
State A8 → A9 : READY bit被設定完成
State A9 :
- 清除5s的WD timer
- 讀取V’,檢查V是否等於V’
- 檢查KSV list,若在黑名單則認證失敗
State A9 → A0 : Repeater認證失敗
- V != V’
- 有KSV在黑名單中
- MAX_CASCADE_EXCEEDED, MAX_DEVS_EXCEEDED狀態被設立
- KSV list超出Transmitter容量限制
State A9 → A4 : Repeater認證成功
State B0 : Reset,等待Transmitter送出An及Aksv
State B0 → B1 : 收到Aksv最後一個byte,讓Ainfo設定發生作用,並將其清為0
State B1 : 計算Km’, Ks’, M0’, R0’
State B1 → B1 : 若在state B1接收到Aksv,則重新做計算
State B1 → B2 : 計算完成,R0’被Transmitter讀取
State B2 : 認證完成,準備產生第一張frame的key (R1’)
State B2→ B1 : 一旦收到Aksv,則回去state B1重新計算
State B2 → B3 : 在blanking區產生Ri’
State B3 : 每128張frame更新一次Ri’
State B3 → B2 : Ri’更新後回到state B2
Cipher模組
HDCP的密碼模組(HDCP Cipher)根據在認證過程中產生的key,通過特定演算法算出一個24bit偽隨機加密資料,該資料與TMDS通道傳輸的24bit內容資料進行XOR(異或)邏輯運算,結果再送往TMDS編碼器生成TMDS信號,然後傳送出去。而在接Receiver端,由相同的機構和共享密值產生相應的24bit偽隨機解密資料,來還原內容資料。
小結
若發現接digital port(DVI、HDMI、DP等數位訊號線)會有畫面雪花或解析度下降等異常現象,可以有以下處理方式:
- 換成VGA訊號線,因為類比訊號沒有HDCP的機制。
- 重新拔插訊號線或重開機,讓HDCP重新交握。
資料來源
留言列表