공통 Warning 알고리즘
Common Scrambling AlgorithmCSA(Common Warning Algorithm, Common Warning Algorithm, CSA)는 비디오 스트림을 암호화하는 데 DVB 디지털 텔레비전 방송에 사용되는 암호화 알고리즘이다.
CSA는 ETSI에 의해 지정되었고 1994년 5월에 DVB 컨소시엄에 의해 채택되었다. 128비트 AES와 비밀 블록 암호인 XRC의 결합을 바탕으로 CSA3가 성공하고 있다.[1] 그러나 CSA3는 아직 크게 사용되고 있지 않기 때문에 CSA는 DVB 방송을 보호하기 위한 지배적인 암호로 계속 남아 있다.
역사
CSA는 2002년까지 대체로 비밀로 유지되었다. 특허 서류는 약간의 힌트를 주었지만, 이른바 S박스의 배치와 같은 중요한 세부 사항은 비밀로 남아 있었다. 이것들 없이는 알고리즘의 자유로운 구현이 가능하지 않았다. 당초 CSA는 하드웨어에서만 구현되도록 되어 있어 기존 구현을 역설계하기가 어려웠다.
2002년에는 소프트웨어에 CSA를 구현하면서 FreeDec이 출시되었다. 바이너리 전용으로 출시되었지만, 분해는 누락된 세부사항을 공개하고 알고리즘을 상위 레벨 프로그래밍 언어로 재구성을 허용했다.
현재 CSA 전체가 공개적으로 알려진 가운데, 암호 분석가들은 약점을 찾기 시작했다.
암호 설명
CSA 알고리즘은 블록 암호와 스트림 암호라는 두 개의 고유한 암호로 구성된다.
암호화 모드에서 사용할 경우 데이터는 먼저 패킷 끝에서 시작하여 CBC 모드에서 64비트 블록 암호를 사용하여 암호화된다. 그런 다음 스트림 암호는 패킷 시작부터 적용된다.
블록 암호
블록 암호 프로세스는 56라운드에서 64비트 블록을 처리한다. 각 라운드에서 확장된 키로부터 1바이트를 사용한다.
스트림 암호
스트림 암호의 처음 32라운드는 초기화에 사용되며 어떤 출력도 생성하지 않는다. 처음 64비트의 데이터는 이 단계에서 초기화 벡터로 사용되며 변경되지 않은 상태로 남아 있다. 그런 다음 스트림 암호는 각 라운드에 2비트의 의사 무작위 스트림을 생성하며, 이 스트림은 패킷의 비트 64에서 시작한다.
약점
CSA가 고장나면 암호화된 DVB 전송을 해독할 수 있을 것이며, 이는 DVB가 유럽 등지의 디지털 지상 텔레비전을 위해 표준화되었고 많은 위성 텔레비전 제공자들에 의해 사용되고 있기 때문에 유료 디지털 텔레비전 서비스를 손상시킬 것이다.
유료방송 시스템에 대한 대부분의 공격은 CSA 자체를 대상으로 한 것이 아니라, 그 대신 CSA 키(Conax, Irdeto, Nagravision, VideoGuard 등)를 생성하는 것을 담당하는 다양한 키 교환 시스템(Conax, Irdeto, Nagravision, VideoGuard 등)을 리버스 엔지니어링하여 알고리즘을 완전히 파괴하거나, 합법적인 데코에 의해 생성된 키를 실시간으로 가로채는 것이다.더(der), 그런 다음 다른 사람에게 배포(일명 카드 공유)
소프트웨어 구현 및 비트 슬라이싱
CSA의 스트림 암호 부분은 비트 슬라이싱(bit slicing)을 하기 쉬운데, 소프트웨어 구현 기법으로서 많은 블록이나 많은 다른 키로 동일한 블록을 동시에 해독할 수 있다. 이는 실제 실시간 공격에 비해 요인이 너무 낮지만 소프트웨어에서 구현된 흉포한 힘 검색 속도를 크게 높인다.
블록 암호 부분은 관련 S-box가 너무 커서(8x8) 논리 연산을 이용해 효율적으로 구현하기 힘들기 때문에 비트 슬라이싱이 일반 구현보다 효율적이기 위한 전제 조건이다. 그러나 모든 연산이 8비트 서브블록에서 이루어지기 때문에 알고리즘은 정규 SIMD, 즉 "바이테슬릭링"의 형태를 사용하여 구현할 수 있다. (AVX2를 제외하고) 대부분의 SIMD 명령 집합이 병렬 검색 테이블을 지원하지 않기 때문에 S-box 검색은 비바이트 라이센스 구현에서 수행되지만, 이들의 나머지 알고리즘으로의 통합은 바이트 수 제한에 의해 현저하게 방해받지 않는다.
두 기법 모두 CSA의 자유로운 구현인 libdvbcsa에 사용된다.
암호해석
대부분의 데이터가 블록과 스트림 암호에 의해 보호되기 때문에 암호분석은 더욱 어려워진다. 어댑테이션 코드는 일부 데이터가 블록 암호나 스트림 암호로만 보호되는 패킷을 발생시킬 수 있다.[2]
흉포력 접근법
CSA 알고리즘은 64비트 키를 사용하지만, 대부분의 경우, 바이트 3과 7은 CA 시스템에서 패리티 바이트로 사용되며 쉽게 재계산될 수 있기 때문에 알 수 없는 키의 48비트만 있다. 이를 통해 기초적인 일반 텍스트 구조에 대한 지식과 결합할 때 알려진 일반 텍스트 공격이 발생할 수 있다. PES 헤더의 처음 3바이트는 항상 0x000001이므로, 흉포한 포스 공격을 개시하는 것이 가능할 것이다. 그러한 공격은 수백만 개의 가능한 키를 드러낼 수 있지만, 실제 키를 복구하기 위해 두 번째 패스스루에서 동일한 키로 데이터의 다른 부분에 대한 암호 해독을 시도할 수 있을 만큼 충분히 실용적이지는 않다.
알려진 일반 텍스트 공격
2011년, 독일 연구자들은 DVB 시스템에 사용된 CSA에 대한 공격을[3] 발표했다. MPEG-2 패딩은 종종 긴 일련의 0을 요구하여 전체 184바이트 셀이 0으로 암호화된다는 점에 주목함으로써, 이와 같이 알려진 0 블록에서 키를 복구하는 무지개 테이블을 구축할 수 있다.(두 개의 암호문을 가진 블록이 모두 0이라고 가정할 수 있기 때문에, 동일한 0 블록이 발견되면 블록은 0으로 알려져 있을 것이다.) 0 블럭). 설명된 공격에는 약 7.9TB의 스토리지가 필요하며 GPU를 사용하는 공격자는 96.8%의 확실성으로 약 7초 만에 키를 복구할 수 있다. 그러나 이러한 올제로 패딩 블록(즉, 움직임이나 소음이 거의 없는 장면)이 존재할 때만 공격이 효과적이며, 예를 들어, 이러한 올제로 셀을 암호화하지 않은 상태로 보내면 쉽게 완화된다.
이는 블록의 일부만이 아니라 전체 셀의 평문 내용이 공격 전에 알려져 있어 무지개 테이블의 사전 연산이 가능하다는 점에서 이미 언급된 짐승 같은 공격 사례와는 다르다.
결함 공격
2004년에는 블록 암호에 대한 결함 공격이[4] 발표되었다. 기본적인 생각은 중간 계산에 몇 가지 고의적인 결함을 도입하여 마지막 여덟 개의 라운드 키를 추론할 수 있게 하는 것이었다. 이를 통해 최종 키를 계산할 수 있다.
(복구된 원형 키당 평균 2-3개의) 거의 필요한 결함이 없지만, 이미 문제가 된 키를 가지고 있는 디코더의 하드웨어 내부에서 마음대로 비트를 변경할 수 있는 기능이 필요하기 때문에 결함 공격은 보통 실행하기 어렵다.
참조
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 2010-07-05. Retrieved 2012-11-20.CS1 maint: 제목으로 보관된 복사본(링크)
- ^ http://sec.cs.kent.ac.uk/cms2004/Program/CMS2004final/p5a1.pdf
- ^ Tews, Erik; Wälde, Julian; Weiner, Michael (2011). "Breaking DVB-CSA". WEWoRC 2011.
- ^ Wirt, Kai (November 2003). "Fault attack on the DVB Common Scrambling Algorithm (Report 2004/289)". Cryptology ePrint Archive.