암호화의 원리와 키 관리: 대칭키·RSA·ECC 이해
암호화의 보안 특성부터 대칭키·비대칭키 방식, RSA와 ECC의 원리, 키 교환 및 하이브리드 암호화 활용까지 정리한다.
2026-08-14 · 최초 발행 2025-05-23
암호화가 보호하는 보안 요구사항
암호화는 평문(Plain text)을 암호문(Cipher text)으로 바꾸어 권한 없는 사용자가 정보를 해석하지 못하게 하는 기술이다. 디지털 통신과 저장 데이터를 보호하는 과정에서 인증, 기밀성, 무결성, 부인봉쇄, 가용성 요구사항과 맞물린다.
- 인증(Authentication): 암호화 기반 인증서로 신원을 확인한다.
- 기밀성(Confidentiality): 권한 없는 사용자에게 정보가 노출되지 않도록 한다.
- 무결성(Integrity): 해시 함수로 데이터 변조 여부를 확인한다.
- 부인봉쇄(Non-repudiation): 전자서명으로 행위 부인을 방지한다.
- 가용성(Availability): 정당한 요구가 있을 때 서비스를 제공할 수 있어야 한다.
암호화 안정성은 다음과 같이 키 길이와 키 생명주기의 관계로 볼 수 있다.
암호화 안정성 = (암호키 길이/암호화 키 생명주기)
암호는 근본적으로 무차별 공격(Brute Force)에 언젠가는 해독될 수 있다. 키가 길고 키 생명주기가 짧을수록 안정성은 높아진다. 현대 암호화는 계산 복잡성(Computational Complexity)을 바탕으로 실질적인 안전성을 확보한다.
문자를 바꾸거나 순서를 재배열하는 방식
치환(Substitution)은 원문의 각 문자를 다른 문자로 대체한다. 대표적인 예인 시저 암호(Caesar Cipher)는 알파벳을 일정한 수만큼 이동시키며, "HELLO"를 3글자씩 이동하면 "KHOOR"가 된다.
전치(Permutation)는 문자 자체를 바꾸지 않고 원문의 순서를 재배열한다. 스키테일(Scytale)은 고대 스파르타에서 사용한 방식으로, 원통에 종이를 감아 글을 쓴 뒤 풀어서 전달했다.
대칭키와 비대칭키의 역할
대칭키 암호화(Symmetric Key Encryption)는 하나의 동일한 키로 암호화와 복호화를 수행한다. 처리 속도와 효율성이 장점이지만, 키를 배포하고 관리하기 어렵고 부인방지는 할 수 없다.
주요 대칭키 알고리즘은 다음과 같다.
- DES(Data Encryption Standard): 56비트 키를 사용하며 현재는 안전성이 취약하다.
- AES(Advanced Encryption Standard): 128/192/256비트 키를 사용하며 현재 표준이다.
- SEED: 한국 표준으로, 128비트 블록과 128/256비트 키를 사용한다.
- IDEA(International Data Encryption Algorithm): 128비트 키를 사용한다.
비대칭키 암호화(Asymmetric Key Encryption)는 공개키(Public Key)와 개인키(Private Key) 쌍을 사용한다. 키 교환 문제를 해결하고 부인방지가 가능하지만, 대칭키보다 처리 속도가 느리다.
- RSA: 소인수분해의 어려움에 기반한 알고리즘이다.
- ECC(Elliptic Curve Cryptography): 타원곡선 기반 알고리즘으로 모바일 환경에 적합하다.
블록 암호화는 정해진 크기의 블록 단위로 데이터를 처리한다. DES(64비트), AES(128비트), SEED(128비트)가 여기에 속하며, 구현이 상대적으로 단순하고 보안성이 높다.
스트림 암호화는 비트 단위로 연속해서 암호화한다. LFSR(Linear Feedback Shift Register)이 예이며, 실시간 데이터 처리에 유리하고 오류 전파가 없다.
RSA는 소인수분해의 어려움을 이용한다
RSA는 큰 두 소수의 곱을 계산하기는 쉽지만, 결과값을 다시 두 소수로 분해하기는 어렵다는 원리를 활용한다. 웹 보안과 디지털 서명 등 여러 분야에서 사용된다.
RSA의 키 생성 과정은 다음과 같다.
- 두 개의 큰 소수 p, q 선택
- n = p × q 계산
- φ(n) = (p-1) × (q-1) 계산
- 공개키 e 선택 (1 < e < φ(n), gcd(e, φ(n)) = 1)
- 개인키 d 계산 (e × d mod φ(n) = 1)
- 공개키(e, n), 개인키(d, n)
RSA는 키 교환 문제를 해결하고 디지털 서명을 구현할 수 있으며, 널리 검증되고 표준화된 알고리즘이다. 반면 대칭키보다 계산 비용이 높고, 안전성을 위해 긴 키 길이가 필요하다. 양자 컴퓨팅이 발전하면 취약해질 가능성도 있다.
ECC는 제한된 자원 환경에서 활용된다
ECC(Elliptic Curve Cryptography)는 타원곡선 위의 점 연산이 가진 복잡성을 기반으로 한다. RSA보다 짧은 키 길이로 동등한 보안 수준을 제공하며, 모바일과 IoT처럼 자원이 제한된 환경에 적합하다.
타원곡선 방정식은 다음과 같다.
y² = x³ + ax + b (mod p)
a, b는 타원곡선 파라미터이고 p는 소수다. 타원곡선 위의 점 P와 정수 k가 있으면 kP를 계산하기 쉽지만, kP와 P만으로 k를 찾기는 어렵다. ECC는 이 이산로그 문제를 활용한다.
ECC는 더 짧은 키 길이를 사용하며, 256비트 ECC는 3072비트 RSA와 동등한 보안 수준을 제공한다. 효율적인 연산으로 배터리 소모와 대역폭 사용도 줄일 수 있다.
키를 교환하고 수명 주기를 통제하는 일
키를 안전하게 교환하는 일은 암호화 시스템의 핵심 문제다. 대칭키에서 발생하는 키 공유 문제는 비대칭키를 사용해 해결할 수 있으며, Diffie-Hellman 키 교환 프로토콜 등을 통해 안전한 키 교환 방법을 도입한다.
키는 생성부터 폐기까지 관리 대상이다.
- 키 생성: 충분한 엔트로피를 가진 난수를 생성한다.
- 키 배포: 안전한 채널로 키를 전달한다.
- 키 저장: 안전한 저장소에 암호화하여 보관한다.
- 키 갱신: 주기적인 키 변경으로 안전성을 높인다.
- 키 폐기: 사용 후 안전한 절차로 키를 폐기한다.
실제 환경에서는 대칭키와 비대칭키의 장점을 결합한 하이브리드 암호화 시스템을 사용한다. 비대칭키로 대칭키인 세션키를 안전하게 교환하고, 실제 데이터는 빠른 대칭키로 암호화한다. 디지털 서명에는 비대칭키를 활용한다.
웹 통신과 분산 원장, 전자서명
SSL/TLS는 웹 통신을 위한 암호화 표준 프로토콜이다. HTTPS 통신에서 데이터의 기밀성과 무결성을 보장하며, 인증서의 비대칭키와 세션키의 대칭키를 결합한 하이브리드 암호화 방식을 사용한다.
블록체인은 분산 원장 기술의 핵심 요소로 암호화를 사용한다. 비대칭키 암호화로 트랜잭션에 서명하고, 해시 함수로 블록의 연결성을 보장한다. 공개키를 주소로 사용해 익명성과 보안성을 확보한다.
디지털 서명은 문서의 무결성과 작성자 인증을 보장한다. 작성자의 개인키로 문서 해시값을 암호화하며, 누구나 작성자의 공개키로 서명을 검증할 수 있다.
암호화 시스템의 안전성은 알고리즘만으로 결정되지 않는다. 대칭키와 비대칭키를 적절히 결합하고 키를 관리해야 효율성과 보안성을 함께 확보할 수 있다. RSA에서 ECC로의 전환과 양자 암호화 등 암호화 기술은 계산 능력과 공격 기법의 발전에 대응하며 계속 변화하고 있다.