HDCP 相容性小註解

數位的視訊輸出一般用 HDCP (High-Bandwidth Digital Content Protection) [1] 保護. 高清影片的 Full HD (full high definition 1080P) 是用 HDCP 1.X 版保護. 現在有了 4K 影片 (3840×2160 或是 4096×2160), 就改用 HDCP 2.X 保護. 

一般人很容易把 HDCP 和 HDMI 的版號搞混, 所以從 [2]  剪了一張圖如下. 除了 HDMI, DVI [3] 也支援 HDCP.

HDMI vs HDCP

雖然 HDMI 的版本往前相容, 但 HDCP 可不是. HDCP 2.X 和 1.X 天生就不相容. 如果用 HDCP 1.X 和 2.X 互接, 結果就是無法輸出. 不管誰是 TX (transmitter) 或是 RX (receiver) 都一樣. 世界上最主要的 HDMI receiver 就是電視, 電腦螢幕則是 HDMI / DVI 都有.

如果遇到 TX / RX 的 HDCP 版本不同怎麼辦呢? 據 HDCP 2.2 的規格 [1], 可以用轉換器來連接雙方, 例如 1.X to 2.X converter (P. 42), 或是 2.X to 1.X converter (P. 43). 目前市面可以買到 HDCP 2.2 to 1.4 的轉換盒, 價格約在 175 美金 [4]. 那麼為何找不到 1.X to 2.X 的轉換盒呢? 我猜這是因為電視已經把 2.X 和 1.X 的 HDCP key 都放進去了.

這樣的互通是有限制的. 在 [1] 的 Section 4.2.12 中規定, 如果 Content Stream 的 type = 0, 則視訊內容 (主要是 4K) 還是可以透過 HDCP repeater 傳送到下一級. 反之,  Content Stream 的 type = 1, 則不能傳給 HDCP 1.X compatible device, 以及 HDCP 2.0 compatible 的 repeater. 

要搞懂上面這段, 還要稍微說明一下 receiver 和 repeater. Receiver 本身就是最後一級, 不再把訊號往下一級 (downstream) 送. 而 repeater 會同時有上一級 (upstream) 以及下一級. 前述的 2.X-to-1.X 轉換盒顯然符合 repeater 的描述, 所以某些 HDCP 2.0 保護的影片 (Stream Type = 1) 應該會過不去.

還有一種狀況會發生 “相容性” 問題. 因為 HDCP 1.X 和 2.X 的 key 都被破解過, 所以那些壞 key 已經喪失法律地位了. 因此最上游的 HDCP  (top level HDCP transmitter) 會依序往下檢查下級的 “任何” Receiver ID 是否已經失效? 換言之, 要有個機制來儲存壞 ID 的名單 (revocation list), 而且要不斷更新這個名單. 如果名單舊了, 沒有 renew 過, 可以透過檢查  System Renewability Message (SRM) 的簽名 (signature) 是否正確來判定, 舊的版本要換成新的.

SRM 一代是 5116 bytes, 理論上非揮發記憶體夠大, 就可以每代多 5KB 不斷更新. 不過規範只要求至少支援 5KB, 如果只有 10KB, 那就存第一代和第二代即可. 示意如下圖 [1].

SRM Size

 

[REF]
1. HDCP 2.2 Spec.
2. http://www.extron.com/download/files/whitepaper/hdcp_2_2_wp.pdf
3. https://zh.wikipedia.org/wiki/DVI
4. http://www.hdtvsupply.com/hdcp-2-2-to-hdcp-1-4-converter.html
  1. 請問不同的 key type 的 key 有可能重覆嗎, Ex: Type1 的 key 和 Type 2 的 key 重覆了…

  2. 感謝您詳盡的回覆,所以很明確的 1.X 和 2.X 因架構不同,所以不可能重覆,而 1.X 的 RX 和 TX 或 1.X 各個版本間不知是否有極低的機率會重覆:P ?

    我想要建立資料庫檢核 HDCP Key 是否有重覆燒寫,不知版別是否應列入 pk 和 key 值一併設為 unique 鍵值,還是我只要考量 key value 本身是否重覆即可呢…:) ?

  3. Hi~Cash您好

    想請教您兩個問題

    1.HDCP2.2的規範中是否有限制完成EDID後到HDCP開始執行的時間最少應為多久?
    2.EDID進行交換後TMDS訊號即會輸出,那麼HDCP若有延遲是否影響整筆HDMI的傳送呢?

    以上~敬請您不吝指導

    BRs,
    Stanley

    • 呵呵, 這不是我的專長, 如果我講錯了, 希望路過的大神指正.

      根據 HDCP 2.2 spec. HDMI 1.4 以後的 HPD/EDID/HDCP 都是同一個訊號.
      http://www.cash.idv.tw/wordpress/?attachment_id=16442 (page 26~27)
      根據上圖, HPD 之後, 從 H0 state 進到 H1 state, 接著 driver 可以讀 EDID, 而HDCP 也開始動作. 兩者應該是同時起跑.

      從 H1 state做到 A3 state 應該就算 HDCP pass. A4~A9 是 repeater 的行為. 由於這個過程中, 對 latency 都有嚴格規範, 例如 locality check 要求 20 ms 以內, 收到 session key 200 ms 以後開始 encrypt 等等. 我想軟體處理EDID 不見得能比這些硬體的動作還快.

      EDID 的訊號雖然在 HDMI 上, 但 EDID_HPD 只是通知可以開始讀 EDID, 真正 EDID 的內容是另外由 I2C 讀進來的.

      http://www.cash.idv.tw/wordpress/?attachment_id=16443
      此圖取自: https://hifihivi.tian.yam.com/posts/8813761

      HDCP 應該不會影響到資料傳送, 實務上沒有遇到過這種情況. 如果真的發生, HDMI/HDCP 認證應該無法通過.

  4. Hi~Cash

    抱歉這麼晚才跟您打個招呼
    謝謝您的解說,我會根據您的建議針對產品做一下測試~
    若還有問題再請教您~Many thanks!

    BRs,
    STanley

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>