RC4란 무엇인가?
RC4(Rivest Cipher 4)는 1987년 로널드 리베스트(Ron Rivest)가 RSA Security를 위해 개발한 스트림 암호입니다. 빠른 속도와 단순한 구조 덕분에 한때 SSL/TLS, WEP 등에서 가장 널리 사용되던 스트림 암호 중 하나였습니다. RC4는 키 길이를 유연하게 선택할 수 있으며(일반적으로 40~256비트), 바이트 단위로 동작하는 것이 특징입니다.
RC4의 작동 방식은 크게 두 단계로 나뉩니다. 첫 번째는 키 스케줄링 알고리즘(KSA)으로, 0부터 255까지의 값을 순서대로 담은 상태 벡터 S를 키를 이용해 섞어 초기화합니다. 두 번째는 의사 난수 생성 알고리즘(PRGA)으로, 상태 벡터에서 바이트를 하나씩 생성해 평문과 XOR 연산함으로써 암호화를 수행합니다.
RC4의 핵심 문제점: 출력 바이트의 편향
RC4가 네트워크 보안에 문제가 되는 가장 큰 이유는 출력되는 키스트림(keystream) 바이트에 통계적 편향(bias)이 존재하기 때문입니다. 이상적인 암호라면 키스트림이 완전히 무작위처럼 보여야 하지만, RC4의 출력값은 특정 바이트 값이 다른 값보다 더 자주 나타나는 경향을 보입니다.
이러한 편향은 오랫동안 알려져 왔지만 초기에는 심각한 위협으로 간주되지 않았습니다. 그러나 시간이 지나면서 연구자들은 이 편향을 이용해 RC4로 암호화된 메시지의 일부를 복구할 수 있는 실질적인 공격 기법들을 발표했고, 결국 RC4는 안전하지 않은 암호로 분류되었습니다.
키스트림 초반부의 취약성
특히 RC4는 출력 키스트림의 초반 부분에 강한 편향이 집중되어 있습니다. 이를 완화하기 위해 고안된 것이 RC4-dropN 방식으로, 처음 N바이트(N은 256의 배수)를 버린 뒤 암호화에 사용하는 방법입니다. 하지만 이 역시 근본적인 해결책이 되지 못했습니다.
또한 무작위성이 없는 키나 서로 연관성이 있는 키를 사용하면 암호화 과정 전체가 무너질 수 있어, 시스템이 매우 불안전해진다는 점도 문제로 지적됩니다.
왜 현대 보안 시스템은 RC4를 피하는가?
현대의 대부분의 보안 시스템은 RC4 사용을 배제하고 있습니다. 그 이유는 다음과 같습니다.
- 출력 키스트림의 통계적 편향으로 인해 실제 공격이 가능해짐
- 128비트처럼 긴 키를 사용하더라도 보안이 충분히 보장되지 않음
- 인증(authentication) 목적으로는 적합하지 않음
- 비트 플리핑(bit-flipping) 공격에 노출될 수 있음
실제로 RFC 7465에서는 RC4 암호 스위트의 사용을 공식적으로 폐기(deprecated) 처리했습니다. 여러 익스플로잇이 RC4로 암호화된 메시지의 일부를 해독할 수 있기 때문입니다. TLS 핸드셰이크 자체가 악의적이라고 단정하기는 어렵지만, RC4를 통해 전송되는 데이터는 언제든 가로채일 가능성이 있습니다.
RC4 vs AES: 어떤 차이가 있을까?
RC4와 AES(Advanced Encryption Standard)는 대표적인 두 암호 방식이지만 구조가 완전히 다릅니다. AES는 고정된 키와 수식을 사용해 데이터를 블록 단위로 암호화하는 블록 암호인 반면, RC4는 블록 없이 비트·바이트를 연속적으로 처리하는 스트림 암호입니다.
보안성 측면에서는 AES-128이 RC4보다 확실히 우수하다고 평가됩니다. RC4는 컴퓨팅 초기에 설계된 암호로, 키스트림과 평문이 공격자에게 노출될 위험이 있습니다. 반면 AES는 오늘날까지 광범위한 검증을 거치며 표준 암호로 자리 잡았습니다.
결론: RC4는 더 이상 안전한 선택이 아니다
RC4는 단순하고 빠르다는 장점 덕분에 한때 소프트웨어 구현에 널리 활용되었지만, 최근 수년간 발견된 여러 취약점으로 인해 더 이상 안전한 암호로 간주되지 않습니다. 현재 RC4를 사용하는 애플리케이션은 극소수에 불과하며, 소규모 데이터 스트림에 제한적으로만 활용됩니다.
공개 웹사이트의 보안을 위해 RC4를 완전히 대체할 만한 유일한 대안은 없었던 시기도 있었지만, 지금은 TLS 환경에서 AES-GCM 등 검증된 암호 스위트로의 전환이 표준입니다. 따라서 새로운 시스템을 설계할 때는 RC4 사용을 피하고, 최신 표준 암호 알고리즘을 채택하는 것이 필수적입니다.