본문 바로가기

먹고살기/-- HDMI

HDCP Authentication State Diagram

* HDCP Transmitter State Diagram

 

 

 

 

HDCP Transmitter Link State Diagram과 HDCP Transmitter Authentication
Protocol State Diagram(Fig2-5와Fig2-6)는 HDCP repeater가 아닌 HDCP transmitter의
인증 protocol의 동작 상태를 나타내고 있다.

Transition Any State: H0
  그림처럼 1. Reset상태
          2. Receiver가 연결되어 있지 않아 HPD가 안되는 상태
          3. TMDS receiver(예를 들어 Sil9031)의 Receiver Sense신호가 없는경우
         
Transition H0:H1.
   HPD가 검출됨으로 Sink device가 연결되어 있고 EDID를 읽을수 있다.

           
State H1:Read EDID
   HPD를 검출하자마자 HDcP transmitter는 Sink device의 지원가능한 상태와
   HDMI 지원 여부를 판단하여 HDMI mode난 DVI mode를 선택한다
  
Transition H1:H2
   DVI mode. unencrypted video signal전송
           
Transition H1:H3
   HDMI mode.  
  
Transition H2:A0,H3:A0
   UpStream Content Control Function이 Content Protectiond을 바란다면 HDCP receiver가
   이용가능할때 까지 기다린다.
  
State A0: Wait for Active Receiver(Rx)
   이state에서 HDCP transmitter는 non-HDCP-receiver에게 HDCP Encrytion이 disable된 video를 보낸다.
   그신호는 blue screen이나  OSD등이 전송되어야 한다.
   transmitter는 적어도 2초에 한번씩 혹은 더자주 반복적으로 HDCP register를 읽어야 한다.
   만약 TV(sink)를 보는 유저가 다른 input으로 video를 감상하고 있다면 해당 input에 대해서는
   hotplug는 disable되어 있고 HDCP receiver(TV)의 register는 읽을수 없다. User가 video input을
   전환 했을때 몇초 안에 유저는 video를 보기를 원하고 non video이면 input을 전환할것이다
   이런 이유에서 HPD가 disable되어 있을때도 video(OSD,blue screen등)이 잔송 되어 야하고
   인증은 유효한 Bksv가 검출되는 즉시 시작해야한다(Transition A0:A1)

Transition A0:A1
   register를 성공적으로 읽음으로 인증 protocol을 초기화
  
State A1: Exchange KSVs.
   이 state에서 transmitter는 An(64bit pseudo random value)와 KSV(Aksv)를 생성해서 HDCP receiver에 write
   transmitter는 BCAPS(0x40) register를 읽어서 DVI/HDMI 로전송할것이지 결정한다.
   또한  암호화의 초기화(cipher initialization)에 필요한  receiver의 Bksv와  REPEATER status bit를 읽어낸다.    
  
Transition A1:A0
   읽어드린 Bksv 5 byte가 20개의 0 과 20개의 1 로 구성되어 있지 않으면 이전 단계로..
  
Transition A1:A2
   Transmitter에서 생성된 An과 Aksv가 Receiver에 write되고 receiver에서 읽어온
   Bksv 5 byte가 20개의 0 과 20개의 1 로 구성되어 있으면 다음 단계로....
  
State A2: Computations
   Transmitter는 Transmitter의 Device Private key와 State A1에서 읽은 Bksv 그리고 State A1 에서
   Receiver에 쓴 An을 이용해 Km,Ks,M0,R0를 계산한다
  
Transition A2:A3
   State A2의 계산 결과가 이용가는하면 다음 단계로...
  
State A3: Valid Receiver
   HDCP Receiver에서 R0'를 읽어서 State A2에서 계산한 R0값과 비교하여 같으면 바로 encryption을 수행한다
   이를 verification하기 위해 매 2초(+-0.5)마다  R0와 R0'를 비교한다.
   HDCP Transmitter는 receiver에 Aksv기록을 마친후 적어도 100msec이후에 R0'값을 읽어야 한다.
   또한 HDCP Transmitter는 HDCP Receiver의 KSV(Bksv)에 대한 revocation list(폐기항목)를 검사한다.
   Bksv가 Revocation list에 있다면 인증 실패라고 말할수 있다. State A4(authenticated state)로 전이 되지전에
   State A1에 읽어놓은 Bksv로 되도록  빠른시간에 폐기항목(revocation list)를 검사한다.
  
          
Transition A3:A0
   Transmitter와 Receiver에서 계산된 R0값이 틀리거나 Bksv가 revocation list에 있을시
  
Transition A3:A6
   Transmitter와 Receiver에서 계산된 R0값이 같고 Bksv가 revocation list에 없을때
               
State A4:Authenticated.
   Transmitter 인증 protocol은 여기서 끝~~.
  
Transition A4:A5
   timer event에 의해 verification  
       
State A5:Link Integrity Check
   Receiver에서 읽어온 Ri'와 Transmitter의 Ri를 비교    

  

Transition A5:A4
   Receiver에서 읽어온 Ri'와 Transmitter의 Ri를 비교한 값이 같을때.
  
Transition A5:A0
   Receiver에서 읽어온 Ri'와 Transmitter의 Ri를 비교한 값이 틀릴때,IIC 응답이 없을때,
   Ri 혹은 Pj값을 이용해서 sync loss를 검출했을때..
  
State A6: Test For Repeater.
   Transmitter는 State A1에서 읽은 REPEATER bit를 판단.
  
Transition A6:A4
   REPEATER bit가 설정되어 있지 않을떄(Receiver가 HDCP Repeater가 아닐때)
  
Transition A6:A8
   REPEATER bit가 설정되어 있을떄(Receiver가 HDCP Repeater일때)     
  
State A8:Wait for Ready.
   HDCP transmitter는 5초의 watchdog timer를 설정하고 HDCP Receiver의 READY bit(BCAPS bit5)를
   주기적으로 검사.
  
Transition A8:A0
   5초동안 기다려도 Ready가 설정 되지 않을때.
  
Transition A8:A9
   READY bit가 enable되었을때
 
State A9: Read KSV List
   Transmitter는 KSV FIFO로부터 첨부된 KSV들을 읽어오고 V'를 읽어오고 V를 계산한후
   V=V'인지 검사한다. 그리고 KSV들을 현재 revocation list와 비교한다
      
   현재 revocation list의 integrity(무결성,확실성)은 LLC public key를 사용한 SRM의 signature를
   검사함으로써 증명할수 있다.
            
Transition A9:A0
   V !=V' 이거나 KSV list가 revocation list에 있을때.. 이경우 두가지 bit상테가 추가 된다
   MAX_CASCADE_EXCEEDED 와 MAX_DEVS_EXCEEDED
  
Transition A9:A4
   V == V'이과 KSV들이 revocation list상에 없을때.
   downstream topology 가 지정된 최대수를 넘어서지 않을때
  

 

 

* HDCP Receiver State Diagram   


   아래 그림은 HDCP repeater에 대한 동작 상태도가 아니다.  

 

 

        
Transition Any State: B0
   HDCP receiver가 unauthenticated 상태에 있는 reset상태
 
State B0: Unauthenticated.
   인증절차를 위해 HDCP transmitter로부터 Aksv나 An을 받기 위해 기다리고 있는 상태.
  
Transition B0:B1.
   Transmitter로 부터 Aksv의 마지막 byte를 받음. Ainfo는 port value로부터 복사 되었고
   유효화 됨 그리고 port value는 default값인 0 으로 초기화.
  
State B1: Computation.
   HDCP receiver는 자신의 privare key와 Transmitter로부터 받은 An,Aksv로 Km',Ks',M0',R0'를 계산
   이건 Transmitter 가 이용가능하게 100msec내에 마쳐야 한다.

 

Transition B1:B2.  
   Computation(계산)이 완료되고 그결과를 Transmitter가 읽어 갈수 있는 상태
  
State B2: Authenticated
   HDCP receiver는 인증 절차를 완료하고 HDCP transmitter에 의해 신호를 받을시
   첫번째 frame key를 발생한 준비가 된 상태.

 

Transition B2:B1.  
   언제든지 tarnsmitter가 Aksv를 Receiver에 write하게 되면 새로운 Authentication을 시작.
    Ainfo는 port value로부터 복사 되고  유효화 됨 그리고 port value는 default값인 0 으로 초기화.

 

Transition B2:B3.
   vertical blanking 기간에 encrypted된 frame start.
   Authentication 3번째 단계에서는 주기적으로 Ri'값을 갱신한다.
  
State B3: Update Ri'.
   preceding encrypted된 frame이 Verical blank 기간동안 HDCP receiver가 frame key계산시 이용하는
   HDCP Cipher Output으로 응답값인 Ri'를 갱신할수 있는지를 결정한다.
   Ri'는 (i mode 128 == 0)일때 갱신된다

   ====> 이 부분은 이해 부족

 

Transition B3:B2.
   Ri'가 갱신되었을때 Authenticated 상태로 복귀한다.
   
   
  
* HDCP Repeater State Diagram


   downstream connection에 대한 state diagram은 HDCP Transmitter와 실질적으로 유사하다.
   두가지가 다르다.
   - HDCP repeater는 revocation list에 서 downstream KSV들을 검사하지 않아도 된다.
   - HDCP transmitter는 HDCP receiver 검출에 의해서 인증요구가 오지만 HDCP repeater는
     upstream 의 요구에 의해서 인증(Authentication)을 초기화한다.
    

    상기 이유로 downstream repeater state diagramd은 생략

 

 

 


 

    
아래는 downstream이 아닌 Upstream에 대한 인증 state diagram임
--------------------------------------------------------------

 

 

 

 

 

Transition Any State: C0
   HDCP Repeater의 unauthenticated state. Transmitter에서 Aksv를 보냄으로써 Reauthentication함
  
State C0: Unauthenticated
   transmitter로부터 An과 Aksv를 받을때 까지 기다림. READY bit는 de-asserted(0).
   upstream R'i 와 P'j값은 update되지 않음.
  
Transition C0:C1.
   transmitter로부터 최종 Aksv를 받음      

 

State C1: Computation.
   repeater는 device private key와 An,Aksv를 이용해 Km',Ks',M0',R0'를 계산(Aksv받고 100msec안에)
   Aksv를 다시 받게 되면 다시 계산.
  
Transition C1:C5.  
   transmitter가 읽어갈 준비가 완료된 상태
  
State C2: Authenticated
   HDCP repeater는 인증 protocol이 끝나서 HDCP transmitter의 요구가 있을때 첫번째 frame key를
   발생시킬 준비가 된 상태.   READY bit는 asserted(1)
  
Transition C2:C0.
   upstream connection은 down stream HDCP port가 unauthenticated state이거나 active HDCP receiver가
   붙어 있지 않으면 unauthenticated state가 된다.
  
Transition C2:C3.
   vertical blank 기간에 주기적으로 행해짐.(3단계 인증)
  
State C3: Update Ri'
     
     
Transition C3:C2.
   Ri'가 update되었으면 복귀
  
State C5: Wait for Downstream
   upstream state machine(repeater안의 receiver)은 모든 down stream port들이 unconnected(State P0)
   ,inactive(State F0),authenticated state(State F4) 상태에 들어 갈때까지 기다림

 

Transition C5:C0.
   watchdog timer가 모든 HDCP port가 authenticated나 unconnected state에 들어가기전에
   expire되면...
  
Transition C5:C6.  
   watchdog timer 설정 시간 이내에  모든 HDCP port가 authenticated나 unconnected state에 들어감

 

State C6: Assemble KSV List
   P0(unconnect)나 F0(inactive)는 list에 추가 되지 않는다. F4에 이르렀고 HDCP receiver가
   repeater가 아니라면 붙어 있는 receiver의 Bksv를 추가 하면 된다.
   F4에 이르렀고 HDCP receiver가 repeater라면 repeater의 KSV list를 일고 이미 repeater에 추가된
   Bksv를 읽는다.
   HDCP repeater는 downstream HDCP repeater의 integrity를 증명해야한다.
   이는 downstream HDCP repeater로 부터 받은 V'와 V를 계산함으로 가능하다.
   v != V'이면 check는 fail. fail이면 KSV FIFO read동작을 재 수행한다.
   모든 downstream receiver에 대한 KSV list가 모아 졌을때  HDCP rrepeater는
   upstream V'를 계산한다.
  
   HDCP repeater에 대한 DEVICE_COUNT는 downstream HDCP repeater를 포함한 downstream receiver의 수이다.
   DEVICE_COUNT = downstream receiver(with repeater) + DEVICE_COUNT(downstream repeater의)
  
   HDCP repeater에서 DEPTH란 downstream HDCP port이후의 connection level의 최대수와 같다.
   DEPTH = downstream HDCP repeater DEPTH + 1
  
  
   DEVICE_COUNT값이 127을 초과하거니 KSV_FIFO size를 넘어서면 MAX_DEVS_EXCEEDED status bit를 설정
   만약 HDCP repeater에 대한 depth가 7을 초과하면 MAX_CASCADE_EXCEEDED를 설정한다.
  
Transition C6:C0.  
   down stream HDCP port가 unauthenticated되거나 downstream HDCP repeater에 대한 KSV list integrity check가 fail
     

'먹고살기 > -- HDMI' 카테고리의 다른 글

hdmi 1.4 HDMI Vendor Specific InfoFrame  (0) 2010.03.05
hdmi로 3D 즐기기(2010/3/5)  (0) 2010.03.05
HDMI CEC  (0) 2008.11.27
HDMI 1.3a 와 HDMI 1.3b의 차이점  (0) 2008.11.11
Dolby TureHD,MAT encoding/decoding  (0) 2008.01.23