1.1. 시작하기전에

CAS (Conditional Access System)는 허가된 가입자만 그에 맞는 서비스 이용권한을 획득하여 이용할수 있도록 하는 접근권한관리 방식입니다. 이 문서에서는 이것을 간략히 설명하고 이해를 돕는데 목적이 있습니다. 필자의 개인적 이해력의 차이로 인하여 사실과 다소 어긋나는 사항도 있을수 있으므로 잘못된 부분은 지적해주시면 감사하겠습니다.

CAS (Conditional Access System)는 다음과 같은 기능요소를 구현할수 있는 시스템입니다.

  1. 보안기술을 사용하여 서비스에 필요한 Data를 보호
  2. 가입자의 서비스 이용권한 제어 (이용권한을 부여하거나 제한)
  3. 가입자의 이용정보 및 과금자료를 수집
  4. 서비스 사업자가 원하는 서비스 패키지로 개별적 구성이 가능

즉, CAS (Conditional Access System)는 사업자에게 있어서는 저작권을 안전하게 보호하면서 유료서비스를 가입자에게 제공하여 수익을 확보할수 있는 핵심기술이라고 할수 있겠습니다.

1.2. 용어

  • CSA (Common Scrambling Algorithm)
  • CA (Conditional Access)
  • CI (Common Interface)
  • CAS (Conditional Access System)
  • CAM (Conditional Access Module)
  • PMT (Program Map Table)
  • CAT (Conditional Access Table)
  • EMM (Entitlement Management Message)
  • ECM (Entitlement Control Message)
  • CW (Control Word)
  • ATR (Answer to reset)
  • COS (Card operating system)
  • BCD (Binary-coded decimal)

1.3. 주요 처리동작 흐름

  1. CAT (Conditional Access Table)로부터 CA Descriptor를 추출합니다.
    1. 추출한 CA Descriptor를 Smartcard로 알려주고 EMM (Entitlement Management Message)를 추출할수 있는 필터링 요소를 전달받거나
    2. CA Descriptor 내에서 EMM (Entitlement Management Message) PID를 추출합니다.
  2. EMM (Entitlement Management Message)을 추출하여 Smartcard로 이를 알려주고 권한의 종류를 확인합니다.
  3. 현재 이용하고자 하는 서비스에 해당하는 PMT (Program Map Table)을 찾고 그 안에 있는 CA Descriptor를 추출합니다.
    1. 추출한 CA Descriptor를 Smartcard로 알려주고 ECM (Entitlement Control Message)를 추출할수 있는 필터링 요소를 전달받거나
    2. CA Descriptor 내에서 ECM (Entitlement Control Message) PID를 추출합니다.
  4. ECM (Entitlement Control Message)을 추출하여 Smartcard로 이를 알려주고 해당서비스의 Stream을 해독할수 있는 열쇠인 CW (Control Word)를 얻어냅니다.
  5. 얻어낸 CW (Control Word) 를 이용하여 Stream을 해독합니다.

    주요 흐름은 이러하지만 실제 CAS업체마다 ECM과 EMM을 처리하는 방법에서 다소 차이가 있는것이 보통입니다.

1.4. CAT (Conditional Access Table)

    Syntax                       No. of bits Mnemonic
-----------------------------------------------------
CA_section() {
    table_id                               8 uimsbf
    section_syntax_indicator               1 bslbf
    '0'                                    1 bslbf
    reserved                               2 bslbf
    section_length                        12 uimsbf
    reserved                              18 bslbf
    version_number                         5 uimsbf
    current_next_indicator                 1 bslbf
    section_number                         8 uimsbf
    last_section_number                    8 uimsbf
    for (i=0; i<N;i++) {
        descriptor()
    }
    CRC_32                                32 rpchof
}
  • CRC_32는 다음과 같이 구현된 함수로 값을 검사하면 됩니다. CRC_32검사구간은 table_id부터 CRC_32를 제외한 나머지모두이며 아래의 함수에서 초기 s_seed값은 0FFFFFFFFH 입니다.
    typedef unsigned char hwport_uint8_t;
    typedef unsigned int hwport_uint32_t;
    hwport_uint32_t hwport_crc32_section(hwport_uint32_t s_seed, const void *s_data, size_t s_size)
    {
        size_t s_offset;
        hwport_uint8_t s_byte;
        int s_bit;
        int s_select;
    
        s_offset = (size_t)0u;
        while(s_offset < s_size) {
            s_byte = *(((const hwport_uint8_t *)s_data) + s_offset);
            for(s_bit = 0;s_bit < 8;s_bit++) {
                s_select = ((int)((s_seed >> 31) & ((hwport_uint32_t)1u))) ^ ((int)((s_byte >> (7 - s_bit)) & ((hwport_uint8_t)1u)));
    
                s_seed <<= 1;
    
                if(s_select != 0) {
                    s_seed ^= (hwport_uint32_t)0x04C11DB7u;
                }
            }
            s_offset++;
        }
    
        return(s_seed);
    }
    


1.5. CA Descriptor (Conditional Access Descriptor)

CA Descriptor는 CAT (Conditional Access Table)와 PMT (Program Map Table)의 Descriptor영역에 Descriptor tag 09H 로 표현되는 Descriptor이며 다음과 같은 형태를 가지고 있습니다.
    Syntax                       No. of bits Mnemonic
-----------------------------------------------------
CA_descriptor() {
    descriptor_tag                         8 uimsbf
    descriptor_length                      8 uimsbf
    CA_system_ID                          16 uimsbf
    reserved                               3 bslbf
    CA_PID                                13 uimsbf
    for ( i=0; i<N; i++) {
        private_data_byte                  8 uimsbf
    }
}
  • descriptor_tag는 09H가 CA Descriptor (Conditional Access Descriptor)를 나타냅니다.
  • descriptor_length는 descriptor_tag와 descriptor_length를 제외한 나머지 CA_descriptor의 크기를 나타냅니다.
  • CA_system_ID는 CA (Conditional Access)의 종류를 나타내며 다음과 같이 사용되고 있습니다.
    CA_system_ID 값 명칭 개발사 비고
    4800H Accessgate Telemann
    4A20H AlphaCrypt AlphaCrypt
    B-CAS 현재 일본에서만 사용중인것으로 알려져 있음
    1702H BetaCrypt1 BetaTechnik/Beta Research (subsidiary of KirchMedia)
    1722H
    1762H
    1720H BetaCrypt2
    2600H BISS European Broadcasting Union
    4900H ChinaCrypt CrytoWorks (China) (Irdeto)
    22F0H Codicrypt Scopus Network Technologies
    0B00H Conax CAS 5, Conax CAS 7 Norwegian Telekom
    CoreCrypt
    0D00H Cryptoworks Philips CryptoTec
    0D02H
    0D03H
    0D05H
    0D07H
    0D20H
    4ABFH CTI-CAS Beijing Compunicate Technology Inc.
    0700H DigiCipher 2 Jerrold/GI/Motorola 4DTV
    4A70H DreamCrypt Dream Multimedia
    4A10H EasyCas Easycas
    0464H EuroDec Eurodec
    5501H Griffin Nucleus Systems, Ltd.
    0606H Irdeto 1 Irdeto
    0602H Irdeto 2
    0604H
    0606H
    0608H
    0622H
    0626H
    4AA1H KeyFly SIDSA
    0100H Seca Mediaguard 1 SECA
    0100H Seca Mediaguard 2 (v1+)
    0100H Seca Mediaguard 3
    1800H Nagravision Nagravision
    1801H
    1810H
    1830H
    1801H Nagravision Carmageddon
    1702H Nagravision Aladin
    1722H
    1762H
    1801H
    1801H Nagravision 3 - Merlin
    4A02H Novel-SuperTV Novel-SuperTV 중국 및 그 밖에 국가에서 사용
    4AD4H OmniCrypt Widevine Technologies, Inc.
    0E00H PowerVu Scientific Atlanta
    0E00H PowerVu+
    1000H RAS (Remote Authorisation System) Tandberg Television
    4AE0H RossCrypt Digi Raum Electronics Co. Ltd.
    0101H RusCrypto
    4A60H SkyCrypt / Neotioncrypt / Neotion SHL AtSky/Neotion
    4A61H
    4A63H
    T-crypt
    4A80H ThalesCrypt TPS
    0500H TPS-Crypt France Telecom
    0500H Viaccess PC2.3, or Viaccess 1
    0500H Viaccess PC2.4, or Viaccess 2
    0500H Viaccess PC2.5, or Viaccess 2
    0500H Viaccess PC2.6, or Viaccess 3
    0500H Viaccess PC3.0
    VideoCrypt I News Datacom
    VideoCrypt II
    VideoCrypt-S
    0911H NDS Videoguard 1 / NDS Videoguard 2 / NDS Videoguard 3 NDS
    0919H
    0960H
    0961H
    093BH NDS Videoguard 3
    0963H
    4AD0H X-Crypt XCrypt Inc. 성인용 채널에만 사용되고 있습니다.
    4AD1H
    5500H Z-Crypt/DRE-Crypt Digi Raum Electronics
    4AE0H
  • CA_PID는 CAT에서는 EMM PID를 나타내며 PMT에서는 ECM PID를 나타냅니다.
  • private_data_byte는 있을수도 있고 없을수도 있는데 이것은 CAS업체별, 방송사업자별로 별도 규정하여 사용합니다.

1.6. 참고문헌




/*

[ FrontPage | PrintView | RawView | RSS ]

Copyright ⓒ MINZKN.COM
All Rights Reserved.

MINZKN

----

*/