hdcp(high -bandwidth digital content protection) ,用以保護數字內容。
hdcp在2.0以前的版本都主要是配合hdmi等需要有線連線的裝置的,隨著網路的發展,數字內容的保護需求明顯增加,為了新的應用的需要,hdcp2.0出現了,它只是需要tcp/ip連線即可,這樣hdcp就可以應用在更多的場合。
android 4.2 在wifi display下新增了hdcp的介面,開發者若需要支援hdcp,則需要按照介面生成名為libstagefright_hdcp.的系統動態庫。然後wifidisplay 會透過mediaplayerservice提供的介面來訪問。
其中初始化,包括ake,lc,ske的部分呼叫介面initasync ,然後是資料的加解密介面,及結束hdcp的介面。
hdcp由sansasecurity授權,獲得版權後,將public key certificate匯入專案即可,因為是批量授權,所以可以專案通用。
hdcp裝置間的連線的建立, 需要通過複雜的驗證過程,其流程大致如圖:
1、建立tcp的套接字,等待source端來connect。埠號在wifidisplay的m3階段透過字串 "wfd_content_protection: hdcp2.0 port=35000\r\n"告訴了source端。 當兩端的tcp連線成功建立後,等待source端的驗證動作。
2、hdcp裝置相互驗證分為三步進行,ake(authentication and key exchange)是驗證的第一步。它主要的操作就是source端來驗證hdcp receiver的public key certificate(包括receiver id 和rsa public key)。它們之間會交換km。
3、lc(locality check ),當在ake階段,sink端計算出的h『和source端計算的h相等時,source端會繼續下部驗證,即lc,否則會終止tcp連線。lc通過乙個訊息對的時間來確定是不是兩個相對較近的裝置在連線,如果乙個訊息對的時間超過了7ms,則表示locality check 失敗。
4、ske(session key exchange),在成功完成了前幾步之後,source端和sink端就可以開始session key(ks)的交換。
加解密使用aes演算法。
Android HDCP開發小結
hdcp high bandwidth digital content protection 用以保護數字內容。hdcp在2.0以前的版本都主要是配合hdmi等需要有線連線的裝置的,隨著網路的發展,數字內容的保護需求明顯增加,為了新的應用的需要,hdcp2.0出現了,它只是需要tcp ip連線即可,...
KGDB移植開發
kgdb kernel gnu debugger 是一種源 級 linux 核心偵錯程式,它以樁函式的方式存在於核心的各個異常處理函式入口,接管核心所有的異常處理。它構建了一種對核心異常的管理機制,例如對斷點異常的管理,對單步異常的管理等,通過對這些異常的管理來達到除錯核心的目的。kgdb 與執行在...
移植iptables到powerpc開發板
交叉編譯新核心linux 2.6.23和iptables,移植iptables成功 需注意的地方 a 編譯新核心時需選上對netfilter的支援 networking network options netfilter 下面全部選成模組。b 將編譯的庫arch powerpc boot kerne...