CA解擾那點事

轉自:http://blog.sina.com.cn/s/blog_6a73f3270101cyfn.html


1、名詞概念:
接收控制系統/條件接收系統 :該系統的任務是保證DVB業務僅被授權接收的用戶所接收,其主要功能是對信號加擾,對用戶電子密鑰的加密以及建立一個確保被授權的用戶能接收到加擾節目的用戶管理系統
控制字或密鑰:CW (Control Word )
節目映射表:PMT (Program Map Table )
條件接收表:CAT (Conditional  Access Table )
授權控制信息:ECM (Entitlement Control Message )
授權管理信息:EMM (Entitlement Management Message )
脈衝式按次付費電視或者即時付費電視:IPPV(Impluse Pay-per-View )
模擬電視:採用模擬信號調製,中間很容易引入干擾,一套節目使用一個頻點
數字電視:採用數據信號調製,抗干擾性好,一個頻點傳輸6-8套節目,容易加密


2、條件接收系統的組成
整個條件接收系統包括前端碼流加擾加密、傳輸、終端通過條件接收系統進行解擾解密這三大部分,其中關鍵技術就在前端和終端。
  前端碼流加擾加密部分包括有:
→EMM加密器
→ECM加密器
→CW發生器
→TS流加擾器
複用器


  終端條件接收系統進行解擾解密部分包括有:
解複用器
→CA系統
智能卡
解擾器
解密器

 

加擾控制字段:

可以在ts包中的 transport_scrambling_control 值:2b,ts header第四個字節處

位值  描述

00     不加擾

01     保留

10    用偶密鑰加擾ts

11    用奇密鑰加擾ts

PES包中使用 PES_scrambling_control值,其控制與ts相同含義


3、條件接收系統原理圖


三層加密:

 




發送端:採用PDKSK進行加密,傳輸加密後的EMM數據
接收端:PDK是存儲在智能卡上的,是智能卡的ID,這是唯一的,機頂盒收到EMM數據採用PDK解出SK


4、條件接收系統工作原理(文字描述)
前端碼流加密加擾工作原理:

1、在信號的發送端,首先由控制字發生器產生控制字(CW),將它提供給加擾器和加密器A。控制字的典型字長爲64bit,每隔230s改變一次(CW變化爲5-10s,各家值有所不同)
2、加擾器根據控制字發生器提供的控制字,對來自複用器的MPEG2傳送比特流進行加擾運算。此時,加擾器的輸出結果即爲經過擾亂了以後的MPEG2傳送比特流,控制字就是加擾器加擾所用的密鑰。
3、加密器接收到來自控制字發生器的控制字後,則根據用戶授權系統提供的業務密鑰對控制字進行加密運算,加密器A的輸出結果即爲經過加密以後的控制字,它被稱爲授權控制信息(ECM).
4、用戶管理信息(Management Message)被密鑰EMMK1加密形成授權管理信息(EMM),用戶管理信息由信息提供商的用戶管理系統形成,用戶管理系統用來建立有關用戶的名稱、地址、智能卡號、賬單的信息和當前授權的數據庫等等.
5、經過這樣一個過程產生的ECMEMM信息均被送至MPEG2複用器或複用器,與被送至同一複用器的圖像、聲音和數據信號比特流一起打包成MPEG2傳送比特流輸出


終端解擾解密部分工作原理:
1、在信號的接收端,解碼器首先在傳送流中查找到PMTCAT表,從中獲取到EMM_PIDSECM_PIDSCASystemIDS等信息.
2、根據EMM_PID,找到相應的加密的EMM信息,智能卡中存有加密系統號和ECM密鑰,EMM密鑰等,智能卡首先使用EMM密鑰對加密的EMM解密,根據解出的EMM信息來確定本智能卡是否被授權看該套節目,如沒授權則不能進行後續的解密,也不就不能收看該節目.
3、如該卡已被授權,則利用ECM_PID,找到相應的加密的ECM信息,利用智能卡的ECM密鑰對ECM進行解密,得到控制字CW.
4、由解密得出來的CW對加擾的傳送流進行解密,得到正常的MEPG-2傳送流,由解碼器解碼後得到所需的電視,廣播或數字信號.


加擾和加密的區別:
加擾是加擾器使用控制字通過函數運算產生僞隨機序列,對數據進行一些與或運算將數據擾亂。接收終端只有得到控制字才能通過反函數運算將數據還原進行解碼。而加密是爲了有效的保護控制字進行的,通過密鑰或算法對控制字進行加密。終端設備需要得到密鑰或反算法,解出或算出控制字,再進行解擾解密工作。
TS層的加擾:
TS層的加擾只針對TS數據碼流的有效負載(payload),而TS碼流中的PSI信息,包括PATPMTNITCAT以及私有分段(包括ECMEMM)都不應該被加擾。當然,TS流的頭字段(包括調整字段)也不應該被加擾。經過加擾後的TS碼流應該在頭字段中定義加密控制值。


5PSI數據接收
接收到相應的PMTCAT表,這兩個表中可能會存在CA_descriptor()的描述符,通過該描述符號,可以獲取到對應的EMM_PIDSECM_PIDSCASystemIDS

CA_descriptor()介紹:


CA_system_ID : 表示適用於相關ECMEMM流的相關的CA系統類型(CA廠家標識符).
CA_PID : PMT表中的該描述信息爲ECMPID,CAT 表中的該描述信息爲EMMPID.
一般來說,ecm table id0x80/0x81emm table id0x82~0x8F這個值是由ca廠家決定的。

 

ca_descriptor 描述字值爲0x09, 下面給個加擾流的具體表數據:


 


完整接收及播放流程:
1、鎖定指定頻點
2、搜索PAT
3、搜索CATPMT
4、解析PMT表得到ECM PID值,解析CAT表得到EMM PID
5、將ECMEMM送到智能卡解密
6、智能卡返回CW值,機頂盒將CW值設到demux descrambler解擾模塊,還原原始碼流
7、設定音頻pid,視頻pid進行解碼和播放

6、集成ca lib工作
一般利用現有的中間件中CA模塊進行集成,說明一下這種最通常的工作流程
1、提供編譯器及編譯參數,ca廠商提供ca lib/ca headerca test stream 
2、實現descrambler,smartcard,demux, flash 等模塊接口
3、實現ca lib需要實現的接口函數,一般包含os,filter,descrambler等接口
4、開發一套應用調用ca lib提供函數實現業務呈現
5、調通加擾節目的播放及業務的呈現ok

6、到ca公司進行ca認證,測試ok後進入運營階段

 

7、通訊概述

1、碼流加擾

1)、加擾過程是在發送端用一個僞隨機序列(CW,Control Word)對複用後的TS流進行實時擾亂控制,使用加擾序列控制對打包的圖像信號進行擾亂

2)、接收端必須獲得CW,再次對碼流進行位運算才能將碼流還原

3)、只有授權用戶才能獲取CW,才能對碼流進行解擾(授權條件:UID和HID)

4)、CW如果明文傳輸,則很容易被破解,因此提出需要對CW進行加密,在碼流中傳送的是密文信息。

 

如何保密傳輸CW?如何使只有授權用戶才能獲取CW?

2、訪問控制(CW加密)

1)、發送端:採用SK(加密密鑰)對CW進行加密,傳輸加密後的數據(ECM)

2)、接收端:必須先獲取SK,然後運用SK對ECM進行解密,得到CW

 

如何保證只有授權用戶才能得到SK?

3、授權管理(SK加密)

每一授權用戶將獲得一張IC卡,在卡內保存有一個或多個PDK(個人密鑰),在發送端運用PDK對SK進行加密,生成數據以EMM的形式打包進碼流中。這樣保證只有擁用該PDK的用戶才能解密得到SK。

CA與智能卡是配合使用的,即一個運營環境中,機頂盒上的智能卡與局端配合的CA是同一公司的產品,是成套使用的。原因是產生ECM與EMM的算法都是CA廠家的核心機密,不可能外露

 

流程整理概述:

首先用CW對複用後的TS流進行擾亂控制,CW不能明文傳送,用SK對CW進行加密,變成ECM在網絡中傳輸,而對於SK,局方再用PDK進行加密變成EMM傳輸,而終端智能卡中保存有PDK,這樣收到EMM數據後,用PDK解密就能得到SK,再用SK對傳輸中的ECM解密就得到CW,把CW設置到解擾器這樣就可以觀看加擾的節目了。

 

爲何引入SK?

假如直接用PDK加密CW,由於PDK的數量巨大,而CW的變更較快,加密後產生的數據很大,由於SK是針對產品(節目)的,數據量小,採用SK加密CW生成的ECM數據量相對較小,由於SK變化緩慢,採用PDK加密SK生成的EMM數據量相對較小,根據CW和SK的輪播週期,你可以大致比較一下,引入SK以後,ECM+EMM的數據量與直接採用PDK加密CW的數據量,就應該明白了爲什麼要引入SK。

假如有10個pdk,再假設某節目CW字每分鐘變化100次,這樣一分鐘就需要100*10個數據量,而如果假設用SK再對CW進行加密,這段時間內SK是不變的,面傳輸的數據量就變成了1*10。也就是把CW字的變化給透明化了。

 

基本概念解析:

一個用戶(智能卡)擁有一個唯一的PDK

一個產品(或者說套餐)在一長段時間內對應一個SK

一個加擾單元(被加擾對象)在某一瞬時對應一個CW

 

emm的pid從CAT表中得到的, ECM的pid通過檢測pmt表中descriptor_tag爲0x09的字段得到的,有了這些PID,就可以從碼流中檢出EMM流和ECM流,

EMM流是包含了所有智能卡的EMM數據的(因爲不知道用戶所用的智能卡),數據量比較大。因此智能卡從EMM流中,根據自身的卡地址,過濾出是發送給自己的EMM信息,然後解得SK。

ECM流是一個加擾單元(即被加擾的對象)對應一個ECM流(只是用戶當前所選擇頻道的,所以切臺的時候ecm_pid會變化),因此當取得SK後,就可從ECM流中解出CW,從而對碼流進行解擾。

 

CA過程通過CW控制字(節目流進行解擾的鑰匙)將TS加密,終端通過它解密.
前端將CW加密後送到終端.
終端通過智卡,解出CW控制字,並將控制字送解碼器還原TS的過程.

前端:
ECM內容:
1.由SK加密的CW.
2.節目來源、時間、內容分類和節目價格等信息
EMM內容:
1.PDK加密過的SK.(PDK: Personal Distribute Key,與智能卡一致)
2. 地址、用戶授權信息.

EMM與ECM在TS流中傳輸.

終端:
1.解CAT表,獲得CA_system_id,獲得CA系統類型.
2.解CAT表,獲得CA_PID獲得EMM_PID,從TS中過濾EMM.
3.解PMT的CA_PID,獲得ECM_PID,從TS流中過濾ECM.
4.智能卡通本身的PDK,從EMM中將業務密鑰SK解出來.
5.用SK對ECM解密出CW控制字.
6.將CW控制字填入解碼芯片的相應寄存器中,就可以對碼流數據進行解擾,恢復出原始信號。

 

8、補充一下調試碰到的問題

a、機卡通訊有問題 

       出現sc_send數據成功但無法接收數據,總是報超時錯誤,可能原因

      1、與智能卡設定的波特率有關,一般設定爲4800bits/s或者9600bits/s,而在收到ATR消息一般以atr[2]&0x0f作爲baud factor的調節因子

           【波特率校正因子12*n (n=116) ,具體設置參考協議D因子和卡特性 】

      2、與智能卡設定的時鐘率因子有關 【時鐘轉率因子3722048 ,具體設置參考協議的F因子和卡特性】

b、智能卡配對失敗

      請保證智能卡,碼流及CA庫統一,不要用錯了

c、授權信息出現"access denied ",即未授權

      請確認ca卡是不授權且其未過授權時間,其流裏面有授權信息

decm&emm數據未收到或超時

      請先確認碼流中和pid及過濾參數是否正確,可以錄碼流通過專業軟件查看,再 確認demux接口的filter過濾參數是否有問題

eset key失敗

     一般只要set pid(av)成功,基本上set key 都會成功,這是機頂盒通用的接口,一般不會出問題

 

 


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