display:HDCP協議簡述

傳輸數字內容時,容易受到未經授權的複製和攔截。保護​​內容已經成爲視聽內容傳輸中的重要因素。 2003年,英特爾開發了一種加密技術,稱爲高帶寬數字內容保護(High-bandwidth Digital Content Protection:HDCP)協議,用於保護發送器(發送諸如藍光播放器之類的視聽內容)和接收器(如顯示屏)之間的音頻和視頻數據。如果發送設備正在發送受保護的HDCP內容,則接收器還必須支持HDCP,以便正確接收內容。

早期版本

在支持HDCP 1.X版本的早期設備(例如HDCP1.4)中,接收方(顯示器)會演示其具有有效的祕密密鑰(設備私鑰)。發送器驗證接收者是否具有有效密鑰,然後兩個設備共享一個祕密會話密鑰,該會話密鑰將在加密期間使用,如圖1所示。在密鑰交換中使用SHA-1加密算法,認證強度是合理的。大多數身份驗證和加密是在支持HDCP1.4的設備之間專有的。加密使用專有的流密碼。

HDCP1.x認證協議 

每個HDCP設備包含一個40項的數組,包括56位的祕密設備密鑰,這些密鑰組成了設備的私有密鑰,以及從Digital Content Protection LLC接收到的相應標識符。該標識符是分配給設備的密鑰選擇向量(KSV)。KSV是一個40位的二進制值。HDCP身份驗證協議可分爲三部分。第一部分建立兩個HDCP設備之間的共享值,如果兩個設備都有來自Digital Content Protection LLC的有效設備密鑰集。第二部分允許HDCP轉發器報告附加的HDCP接收器的ksv。第三部分發生在啓用加密的每個幀之前的垂直下料間隔期間,併爲HDCP密碼提供初始化狀態,以便加密該幀中的HDCP內容。

協議內容

認證協議的第一部分

圖2-1說明了身份驗證交換的第一部分。HDCP發送器(設備A)可以在任何時候啓動身份驗證,甚至在以前的身份驗證交換完成之前。

  • HDCP發送器發起的身份驗證是發送一個啓動消息包含KSV (Aksv)和一個64位僞隨機值(An),通過HDCP密碼函數hdcpRngCipher(4.5節)發送給HDCP接收器(設備B)。
  • HDCP接收器會發送一個響應消息,其中包含接收器的KSV (Bksv)和轉發器位(REPEAT-bit),這個轉發器位用來表明接收器是一個HDCP轉發器與否。
  • HDCP發送器驗證HDCP接收器的KSV是否已經被廢除(第5節),並且是否包含20個1和20個0。

 此時,如果兩個HDCP設備都有來自Digital Content Protection LLC的有效的祕密設備密鑰數組相應的KSV,那麼它們可以各自計算一個56位共享祕密值Km(或視頻接收器中的Km’)。

  • 備註:[每個設備通過添加由另一個設備的KSV描述的私有設備密鑰的選擇來計算Km(或Km'),使用56位二進制加法(即無符號加法256)。選擇加在一起的祕密設備密鑰由對應於KSV二進制表示的所有1位的位索引的密鑰組成。]
  1. 例如,假設Bksv等於0x5A3。對於0x5A3的二進制表示,位位置0、1、5、7、8和10是1,其他所有位位置都是0。因此,設備A將在數組索引0、1、5、7、8和10處同時添加自己的祕密設備密鑰,以計算共享的祕密值Km。設備B將使用自己的私鑰陣列和設備A的KSV進行類比計算,得到Km’。如果任一設備擁有無效的祕密設備密鑰集或相應的KSV,則Km將不等於Km'。
  2. 然後使用HDCP密碼函數hdcpBlockCipher(章節4.5)計算三個值:Ks、M0和R0。此計算的密碼初始值爲Km(或Km'),以及中繼器的65位級聯。HDCP接收器的狀態位中繼器表明HDCP接收器支持將HDCP內容重新傳輸到其他HDCP接收器。會話密鑰Ks是用於HDCP密碼的56位密鑰。M0是認證協議第二部分中使用的一個64位祕密值,作爲HDCP密碼初始化值的補充。R0'是一個16位的響應值,視頻接收器將該值返回給HDCP發射機,以指示身份驗證交換是否成功。R0'必須在HDCP發送器完成向視頻接收器寫入Aksv後的100毫秒內可用,以供HDCP發送器讀取。HDCP發送器寫入Aksv後,R0'值的讀取時間不能早於100ms。
  3. 如果身份驗證成功,則R0'將等於R0。如果身份驗證失敗,那麼R0'和R0在大多數情況下是不同的。在身份驗證協議的第三部分期間生成的未來Ri'值將顯示,如果R0值錯誤地指示身份驗證成功,則身份驗證失敗。

當身份驗證協議的第一部分成功完成時,HDCP發送器啓用HDCP加密。

總結:

  1. 打開芯片隨機數發生器,生成僞隨機An
  2. 從HDCP發送端芯片讀取An和AKsv
  3. 讀取接收端的BKsv
  4. 檢查BKsv是否合法
  5. 將BKsv寫入發送端芯片
  6. 將An和AKsv寫入接收端芯片
  7. 延遲一段時間,等待雙方HDCP模塊計算R0
  8. 從接收端讀出R0’,從發送端讀出R0,比較R0'以及R0
  9. 若相等則加密開關打開,否則從1重新開始

認證協議的第二部分

如果HDCP接收器是HDCP轉發器,則需要驗證協議的第二部分(圖2-2)。HDCP發射器只在設置中繼器位時執行協議的第二部分,表明所附加的HDCP接收器是HDCP中繼器。協議的這一部分通過允許的連接樹將所有連接到HDCP中繼器的下游ksv列表組裝起來,從而支持上游的撤銷。

HDCP中繼器將所有附加的下游HDCP接收器的列表組裝起來,作爲HDCP中繼器受HDCP保護的下游接口端口,使用附加的HDCP接收器完成認證協議。該列表由一組連續的字節表示,每個KSV佔用5個字節,按小端字節順序存儲。KSV列表的總長度是附加的和活動的下游HDCP設備(包括下游HDCP中繼器)總數的五倍。沒有附加活動設備的hdcp保護接口端口不會向列表添加任何內容。此外,HDCP中繼器本身在任何級別的KSV都不包括在它自己的KSV列表中。連接到非HDCP中繼器的HDCP接收器的受HDCP保護的接口端口將附加的HDCP接收器的Bksv添加到列表中。帶有HDCP中繼器的受HDCP保護的接口端口添加從附加的下游HDCP中繼器讀取的KSV列表,加上附加的下游HDCP中繼器本身的Bksv。爲了添加附加的HDCP中繼器的KSV列表,HDCP中繼器需要通過計算V來驗證列表的完整性,並根據附加的HDCP中繼器接收到的V'檢查這個值。如果V不等於V',則下游KSV列表完整性檢查失敗,而上游HDCP中繼器不能斷言其就緒狀態。上游HDCP發射器將在HDCP發射器中設置的看門狗定時器到期之前檢測到此故障。 

 當HDCP中繼器組裝完附加的HDCP設備的KSV的完整列表後,它計算驗證值v並將其附加到該列表中。該值是KSV列表、Bstatus和祕密值M0的連接的SHA-1散列。在構建SHA-1輸入的字串時,KSV列表採用相同的小端字節順序,在鏈路上傳輸它,Bstatus以小端字節順序追加,M0也以小端字節順序追加。(見表A-24和A-25)。當KSV列表和V都可用時,HDCP中繼器斷言其就緒狀態指示器。

HDCP發送器確定在協議中較早讀取的中繼器位已被設置,然後設置一個五秒的watchdog定時器並輪詢HDCP中繼器的就緒狀態位。當準備就緒時,HDCP發射機從HDCP中繼器讀取KSV列表和V。如果KSV列表的大小超過HDCP發送器的容量,則身份驗證協議將中止。HDCP發送器通過計算SHA-1散列值V並將該值與V'比較來驗證KSV列表的完整性。如果V不等於V',則身份驗證協議終止。

如果在5秒的最大允許時間內沒有接收到斷言的就緒狀態,則HDCP中繼器的身份驗證將失敗。出現此故障後,HDCP發送器放棄使用HDCP中繼器的身份驗證協議。可以通過傳輸新值An和Aksv重新嘗試身份驗證。

除了組裝KSV列表外,HDCP中繼器還通過連接樹向上傳播拓撲信息到HDCP發送器。HDCP中繼器報告拓撲狀態變量DEVICE_COUNT和深度。HDCP中繼器的DEVICE_COUNT等於附加的下游HDCP接收器和HDCP中繼器的總數。該值計算爲附加的下游HDCP接收器和HDCP中繼器數量的總和,加上從所有附加的HDCP中繼器讀取的DEVICE_COUNT的總和。HDCP中繼器的深度狀態等於以下任何受HDCP保護的下游接口端口的最大連接級別數。該值計算爲下游HDCP中繼器報告的最大深度加上1(包括所附的下游HDCP中繼器)。例如,一個下游HDCP設備爲0的HDCP中繼器報告深度和DEVICE_COUNT的值都爲0。帶有四個下游HDCP接收器(不是HDCP中繼器)的HDCP中繼器報告深度爲1,DEVICE_COUNT爲4。如果HDCP中繼器的計算DEVICE_COUNT超過127或KSV FIFO的大小支持的最大設備數,則HDCP中繼器必須斷言max_devs_status位。如果HDCP中繼器的計算深度超過7,則HDCP中繼器必須斷言max_cascade_exceed狀態位。當HDCP中繼器從下游HDCP中繼器接收到max_devs_exceed或max_cascade_exceed狀態時,需要向上遊HDCP發送器斷言相應的狀態位。如果設置了max_cascade_exceed或max_devs_exceed狀態位,則中繼器可能設置就緒位,或者可能不設置就緒位,而只是讓HDCP發送器發生超時。

對於雙鏈路中繼器,中繼器將兩個鏈路的拓撲信息合併到一個從主鏈路KSV FIFO讀取的單個KSV列表中。它可以自行刪除列表中重複的KSV信息。重複的KSV值可能導致下游的雙鏈路HDCP設備在兩個鏈路上具有相同的KSV。如果超過拓撲最大值,則身份驗證失敗。頂級HDCP發送器檢查是否在當前的撤銷列表中找到任何附加設備的KSV,如果存在,則驗證失敗。HDCP發送器使用數字內容保護有限責任公司的公鑰,通過檢查系統可更新消息(SRM)的簽名來驗證當前撤銷列表的完整性。此完整性檢查失敗將構成身份驗證失敗。

 

 

第三部分驗證協議

認證協議的第三部分,如圖2-4所示,發生在它所適用的幀之前的垂直下料間隔期間。兩個HDCP設備分別計算新的密碼初始值Ki和Mi,以及第三個值Ri。索引i表示幀號,從完成第一部分認證協議後啓用加密的第一個視頻幀的值1開始,在加密的幀或每幀上遞增,取決於是否啓用ADVANCE_CIPHER模式(參見下面的內容)。但是,當HDCP設備處於HDMI AVMUTE狀態時,幀計數器不會前進,並且在HDMI AVMUTE狀態之後直到第一個加密幀纔會繼續前進。Ki是一個56位的密鑰,用於初始化HDCP密碼以對HDCP內容進行加密或解密。Mi是HDCP密碼的一個新的64位初始值。Ri是一個16位的值,用於鏈路完整性驗證,每128幀計數器增量更新一次,從128幀開始。HDCP發射器根據自己的計算來驗證Ri',以確保視頻接收器仍然能夠正確地解密信息。這種驗證至少每兩秒進行一次。每次Ri更改時(每128thframe)同步讀取Ri也可以代替異步輪詢。(在Ri更新之前和更新1毫秒後不久的幀同步讀取還提供了一種檢測HDCP發射器和HDCP接收器之間的幀計數器不匹配的方法,而這兩個設備都不支持增強的鏈路驗證)。它要求從HDCP發送器開始的時間起1毫秒內完成Ri'讀操作。由於任何原因導致HDCP發送器認爲HDCP接收器未經驗證。

 爲了增強對加密同步丟失的檢測,HDCP發射機和接收機可以選擇性地支持增強的鏈路驗證,在此過程中,當處理特定的視頻像素時,執行有助於驗證加密同步的計算。對於每16幀計數器增量,使用XOR操作將第一個像素的通道零的解密值與最不重要的字節Rj組合在一起,結果在Pj端口上可用。如果HDCP接收器支持此功能,則設置Bcaps第1.1_FEATURES並始終更新Pj '端口。HDCP發送器可選地支持根據內部生成的Pj值讀取和驗證Pj '值。但是,除非出現至少三個連續的穩定值不匹配,否則這將被視爲像素傳輸錯誤,而不是身份驗證或同步錯誤。此外,不匹配的Pj值必須以與Ri值相同的方式進行多次採樣。注意,如果ADVANCE_CIPHER模式(見下文)被啓用,那麼幀計數器可能會在未加密的幀上前進,在這種情況下,每16幀捕獲最不重要的字節Rj和像素數據。但是,如果未啓用ADVANCE_CIPHER,則在每16個加密幀上更新這些值。

ADVANCE_CIPHER模式是一種可選模式,其中對於DVI模式下的每一幀,或者對於HDMI模式下非AVMUTE狀態下的每一幀,無論是否啓用或禁用加密,密碼狀態和幀計數器都是高級的。HDCP接收器通過設置1.1_FEATURES Bcaps位來表示此功能,而HDCP發送器通過在Ainfo字節中設置ENABLE_1.1_FEATURES位來啓用此功能。在驗證之後發送或接收第一個ENC_EN時,首先將幀計數器更新爲1,然後對每一幀進行遞增,直到設置SET_AVMUTE(在HDMI模式下)。如果HDMI模式AV_MUTE是活動的,並且在HDMI CLEAR_AVMUTE之後繼續前進到第一個ENC_EN幀,那麼密碼狀態就不是高級的。

注意:一個HDMI-capable HDCP發射機,使得交流(通過編寫1 ENABLE_1.1_FEATURES點AInfo)可能需要重新發送一個AVMUTE HDCP接收器之後,自從HDCP接收機可能忽略了HDMI一般控制包包含Set_AVMUTE命令,造成的損失HDCP密碼同步。

HDCP2.2 

HDCP 2.2規範應用了最新的加密標準,例如RSA和AES,並將它們分別用於身份驗證和加密,這使其比以前的HDCP1.X協議更加安全。

HDCP 2.2協議分三個階段工作:第一階段,身份驗證,用於驗證接收器是真實的並有權接收數字內容。在第二階段,即加密,發送方可以開始將加密的數據發送給接收方,然後接收方將使用在身份驗證步驟中交換的密鑰對數據進行解密。如果合法設備遭到破壞,則第三階段(可更新性)允許HDCP發射機識別此類受到破壞的設備並阻止HDCP內容的傳輸。

HDCP2.2認證協議

在發送視聽內容之前,發送者必須使用身份驗證協議確保接收者是真實的並有權接收受保護的內容。

身份驗證協議包括:
1.身份驗證和密鑰交換(AKE):檢查接收方是否包含有效的未撤銷公共密鑰證書。
2.位置檢查:檢查以確保將接收器放置在附近並限制傳輸到某個地方。
3.會話密鑰交換(SKE):交換公共共享會話密鑰,該密鑰將用於加密數據本身。
4.使用中繼器[並不是最終的顯示設備]進行身份驗證:當接收器是中繼器時,這是一個可選步驟,即可以連接後續接收器設備。發送器檢查拓撲中的所有接收器均未被授權。

https://blogs.synopsys.com/vip-central/2015/04/21/hdmi-hdcp/

https://www.digital-cp.com/sites/default/files/specifications/HDCP%20Specification%20Rev1_4_Secure.pdf

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f734628081412c88d25f93130a1c187ba7e071754d19929f27255af31107abaa716f370123b298c88b4fd9b9942f2c8c3033044f914165895ff09552609c60c655b3f948a5adf043d3acc5d3ae4325c844767b9786884d771fdd6e800340e3b1ef3c022f61ad9e46&p=8d36dc16d9c15af917bd9b780d5d&newp=98759a43d69757f710be9b7c110592695d0fc20e3bd5d201298ffe0cc4241a1a1a3aecbf22291605d4c47e6205a94e58e9f03c743d0034f1f689df08d2ecce7e7b9e7f7c&user=baidu&fm=sc&query=hdcp+r0+%D0%A3%D1%E9%C2%DF%BC%AD&qid=c9fdd34c00001a5b&p1=12

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章