LEA 경량 블록 암호의 구조와 적용 환경
LEA의 ARX 구조, 키 길이와 라운드 구성, AES·SEED·ARIA 비교 및 IoT·임베디드 환경 적용 범위를 정리한다.
2026-08-14 · 최초 발행 2025-06-08
제한된 자원 환경을 겨냥한 LEA
LEA(Lightweight Encryption Algorithm)는 국가보안기술연구소(NSR)가 2013년에 개발한 한국형 경량 블록 암호 알고리즘이다. IoT 기기와 모바일 디바이스처럼 컴퓨팅 자원이 제한된 환경에서 효율적으로 동작하도록 설계됐으며, 소프트웨어 구현 시 하드웨어 리소스 사용을 줄이는 데 초점을 둔다.
한국 정보통신단체표준 TTAK.KO-12.0223으로 제정됐고, 국가·공공기관의 데이터 보호에 활용할 수 있는 국가 암호 알고리즘으로 지정돼 있다.
ARX 연산으로 구성한 암호화 구조
LEA는 ARX(Addition, Rotation, XOR) 연산만 사용한다. 덧셈은 32비트 단위 모듈러 덧셈이며, 회전은 비트 순환 이동, XOR은 배타적 논리합이다. S-box 같은 치환 연산 대신 이 연산 조합으로 상태 값을 변화시키는 구조다.
블록 크기는 128비트(16바이트)로 고정된다. 키는 128, 192, 256비트, 즉 16, 24, 32바이트를 지원하며 키 길이에 따라 라운드 수는 각각 24, 28, 32라운드로 달라진다.
입력 블록은 4개의 32비트 워드로 나뉜다. 마스터 키에서는 각 라운드에 쓸 라운드 키를 만들고, 키 길이에 맞는 키 스케줄링 알고리즘을 적용한다. 이후 각 라운드에서 ARX 연산과 라운드 키 결합, 워드 재배열을 반복해 암호문을 만든다.
AES와 국내 블록 암호의 차이
| 특성 | LEA | AES |
|---|---|---|
| 개발 | 국가보안기술연구소(한국) | NIST 공모(미국) |
| 블록 크기 | 128비트 | 128비트 |
| 키 길이 | 128, 192, 256비트 | 128, 192, 256비트 |
| 구조 | ARX 기반 | SPN(Substitution-Permutation Network) |
| 주요 연산 | 덧셈, 회전, XOR | S-box, MixColumns, ShiftRows |
| 최적화 | 소프트웨어 최적화 | 하드웨어 최적화 |
SEED와 ARIA도 국내에서 개발된 블록 암호 알고리즘이지만, LEA는 경량 환경을 주요 대상으로 삼는다. 소프트웨어 구현 성능에서는 LEA가 SEED 대비 약 2.5배, ARIA 대비 약 5.5배 빠른 성능을 보인다. 경량 IoT 기기에서는 배터리 효율성 측면에서도 다른 알고리즘보다 유리하다.
분석 공격과 키 길이에 따른 보안 강도
LEA는 차분 암호분석에 대해 최소 9라운드 이상에서 안전성을 확보하고, 선형 암호분석에는 최소 10라운드 이상에서 안전성을 확보한다. 다중 차분·선형 공격과 관련 키 공격에 대한 저항성을 갖도록 설계됐으며, 부채널 공격에는 대응책을 마련할 수 있다.
키 길이에 따른 전수조사 복잡도는 다음과 같다.
- 128비트 키: 2^128 복잡도
- 192비트 키: 2^192 복잡도
- 256비트 키: 2^256 복잡도
소프트웨어와 하드웨어에서의 활용 범위
소프트웨어 구현은 C, Java, Python 등 다양한 언어에서 가능하다. 최신 CPU의 SIMD 명령어를 활용하면 성능을 높일 수 있고, ARM과 x86을 포함한 여러 아키텍처에서 효율적으로 구현할 수 있다. ASIC과 FPGA에서도 구현할 수 있으며, 최소한의 게이트 수로 구성할 수 있다.
적용 대상은 저전력 IoT 기기와 센서 네트워크, 스마트홈 기기부터 스마트폰·태블릿 같은 모바일 디바이스까지 넓다. 산업용 제어 시스템, 스마트카드, 결제 시스템 등 임베디드 환경에서도 사용할 수 있으며, 대용량 데이터 암호화가 필요한 클라우드 보안과 국가·공공기관의 민감 정보 보호에도 활용된다.
암호화 함수의 기본 형태
다음 의사 코드는 LEA의 키 스케줄링, 워드 분할, 라운드 연산, 암호문 결합 흐름을 보여 준다.
// LEA 암호화 함수
function LEA_encrypt(plaintext, key):
// 키 스케줄링
round_keys = key_schedule(key)
// 평문을 4개의 32비트 워드로 분할
state = split_to_words(plaintext)
// 라운드 함수 반복
for i = 0 to num_rounds-1:
// ARX 연산
state[0] = ROL((state[0] ⊕ round_keys[i][0]) + (state[1] ⊕ round_keys[i][1]), 9)
state[1] = ROR((state[1] ⊕ round_keys[i][2]) + (state[2] ⊕ round_keys[i][3]), 5)
state[2] = ROR((state[2] ⊕ round_keys[i][4]) + (state[3] ⊕ round_keys[i][5]), 3)
state[3] = state[0]
// 최종 상태를 암호문으로 변환
return merge_words(state)
운영 모드로는 ECB, CBC, CTR, GCM, CCM을 사용할 수 있다. ECB는 각 블록을 독립적으로 암호화하며, CBC는 이전 암호문 블록과 XOR 연산한 뒤 암호화한다. CTR은 카운터 값을 암호화해 평문과 XOR하고, GCM은 인증 암호화를 제공한다. CCM은 인증과 기밀성을 함께 제공한다.
표준화 이후의 과제
LEA는 TTA 표준으로 채택됐고 국가·공공기관에 점진적으로 도입되고 있다. 다양한 오픈소스 구현체가 공개됐으며, 학계와 산업계에서는 보안성 검증이 계속되고 있다.
앞으로는 플랫폼별 최적화 구현, 퀀텀 컴퓨팅 시대를 대비한 보안성 강화, 국제 표준화 추진 가능성이 주요 방향이다. 5G/6G 통신과 자율주행차 등 신기술 영역으로의 적용 확대, 하드웨어 가속 기능의 구현과 발전도 과제로 남아 있다. 국내외 암호 알고리즘 생태계에서의 입지 확대, 응용 사례 확보, 취약점 분석 및 지속적 개선, 개발자 친화적인 API와 라이브러리 보급 역시 필요하다.
LEA는 ARX 구조를 바탕으로 제한된 자원 환경에서 효율을 목표로 한 국산 블록 암호다. 다양한 키 길이를 지원하며 IoT, 모바일, 임베디드 시스템 등 경량 환경의 암호화 요구에 대응하고, 한국 정보보호 기술의 자주성과 국가 정보보안 강화에 기여한다.
참고 자료
- 국가보안기술연구소(NSR) 공식 LEA 명세서
- 한국정보통신기술협회(TTA) 표준 문서 TTAK.KO-12.0223
- 국가정보원 암호 모듈 검증 기준