CoderTools

TEA/XTEA/XXTEA 암호화/복호화

Tiny Encryption Algorithm 계열 - 경량 대칭 블록 암호

보안 알림

TEA/XTEA/XXTEA는 주로 임베디드 시스템과 게임에서 사용되는 경량 암호입니다. 높은 보안이 필요한 애플리케이션의 경우 AES를 사용하십시오.

모든 TEA 계열 알고리즘은 고정된 128비트(16바이트) 키를 사용합니다.
형식 옵션

TEA 계열 소개

TEA(Tiny Encryption Algorithm)는 1994년 케임브리지 대학교 컴퓨터 연구소의 David Wheeler와 Roger Needham이 설계했습니다. 핵심 특징은 극단적인 단순성입니다. 전체 암호화 루프가 10줄 미만의 C 코드로 표현되지만, 32회 반복의 페이스텔 유사 이중 라운드를 통해 64비트 블록 암호화 수준의 보안을 달성합니다. 마법 상수 δ = 0x9E3779B9(황금비 φ × 2³²에 근접)가 매 라운드 누적합에 더해져 약한 키의 고정점을 방지합니다.

TEA 패밀리는 발견된 취약점을 수정하면서 발전했습니다. XTEA(1997)는 키 스케줄을 재설계하여 각 라운드에서 4개의 32비트 키 워드를 다르게 순환시킴으로써 TEA의 관련 키 공격을 해결했습니다. XXTEA(1998)는 전체 메시지 페이스텔 혼합 기법을 통해 가변 길이 블록으로 설계를 확장했습니다. 세 변형 모두 128비트 키 크기와 δ 기반 라운드 상수 구조를 공유하지만, 보안 속성과 블록 크기 유연성에서 상당한 차이가 있습니다.

알고리즘 비교

알고리즘 블록 크기 키 길이 라운드 보안
TEA 64 bits 128 bits 64 레거시
XTEA 64 bits 128 bits 64 양호
XXTEA 가변 (≥64비트) 128 bits 가변 (6+52/n) 양호

주요 특징

  • TEA 핵심 루프: 단 7줄의 C 코드 — 양산에 적합한 가장 컴팩트한 블록 암호
  • 128비트 키를 네 개의 32비트 워드로 분할; XTEA/XXTEA는 매 라운드 다른 서브키 순열 사용
  • 32회 이중 라운드(총 64회 단일 라운드 연산), δ = 0x9E3779B9를 라운드 상수로 사용
  • XXTEA는 가변 길이 블록 지원 — 패딩 없이 임의 크기 데이터 암호화 가능

암호화 모드 (TEA/XTEA만 해당)

  • CBC: 암호 블록 체이닝 — 각 64비트 TEA/XTEA 블록은 32 이중 라운드 이전에 직전 암호문 블록과 XOR됩니다. 64비트 IV가 블록들을 연결하여 다른 위치의 동일한 데이터가 다른 암호문을 생성합니다.
  • ECB: 전자 코드북 — 각 64비트 블록이 동일한 키로 32 이중 라운드를 독립적으로 거칩니다. 동일한 64비트 평문 블록은 항상 동일한 암호문을 생성하여 데이터 패턴을 노출합니다. 단일 블록 이외에는 권장하지 않습니다.
  • CFB: 암호 피드백 — TEA/XTEA가 키 스트림 생성기 역할을 합니다; 이전 암호문이 TEA/XTEA로 처리된 후 다음 평문 세그먼트와 XOR됩니다. 64비트 블록 암호를 바이트 단위 스트림 암호로 변환하여 임의 길이 게임 데이터 스트림에 적합합니다.
  • OFB: 출력 피드백 — IV에 TEA/XTEA 암호화를 반복하여 평문과 독립적으로 키 스트림을 생성합니다. 오류 비전파 특성으로 손상된 바이트가 정확히 하나의 평문 바이트에만 영향을 미쳐 오류를 제한해야 하는 임베디드 텔레메트리에 적합합니다.
  • RAW: 원시 블록 - 체인 모드 없이 단일 블록 직접 암호화. IV 불필요.

보안 고려사항

  • 원본 TEA: David Wagner(1997)가 관련 키 공격을 증명. 공격자가 관련 키를 선택할 수 있는 상황에서는 TEA 사용 금지 — 새로운 구현은 XTEA 또는 XXTEA 사용
  • XTEA는 TEA의 관련 키 취약점을 수정했지만, 64비트 블록 크기로 인해 보안 한계는 여전히 키당 2³² 블록(~32 GB)으로 제한됩니다
  • XXTEA의 전체 메시지 혼합은 정확성을 위해 최소 2회 패스가 필요합니다; 매우 작은 블록(≤2 워드)에서는 감소된 혼합 단계가 보안을 약화시킵니다 — 짧은 데이터는 최소 3 워드로 패딩
  • TEA 세 변형 모두 새로운 범용 애플리케이션에는 적합하지 않습니다; 현대 임베디드 시스템에는 ChaCha20 또는 AES-128-CTR 권장 — TEA 패밀리는 레거시 형식 호환성이나 코드 크기가 주요 제약인 극도로 리소스가 제한된 환경에만 사용

일반적인 사용 사례

  • Xbox 및 Xbox 360 게임 세이브 파일 보호: Microsoft 원본 Xbox가 XTEA를 내부적으로 사용하여 콘솔 세이브 데이터를 서명·검증, 메모리 카드를 통한 조작 방지
  • QQ 인스턴트 메신저: 텐센트의 초기 QQ 프로토콜이 수정된 XTEA 변형을 사용하여 클라이언트-서버 간 세션 데이터를 암호화(QQ 프로토콜 오픈소스 리버스 엔지니어링 프로젝트에 문서화됨)
  • Cocos2d-x 및 Unity 게임 에셋 암호화: 작은 코드 공간으로 인해 모바일 경량 빌드의 리소스 파일(텍스처, 오디오, 스크립트) 난독화를 위해 게임 엔진에서 널리 사용
  • ROM이 킬로바이트 단위로 측정되는 마이크로컨트롤러 및 FPGA 구현: TEA의 7줄 핵심 루프는 ARM Thumb-2 기계어로 100바이트 미만으로 컴파일되어 Flash가 극히 제한적인 MCU에서도 실행 가능

참고자료

빠른 메뉴

최근 사용 도구 없음