비대칭키 (Asymmetric Key) 암호화 시스템

비대칭키 암호화 시스템은 한 쌍의 서로 다른 키(공개키와 개인키)가 상호작용하는 구조를 갖는다. 이 두 키 중 하나로 암호화하면, 반드시 쌍을 이루는 다른 키로만 복호화할 수 있다. 이는 공개키 기반 구조 (PKI: Public Key Infrastructure)의 핵심 기술이며, 현대 인터넷 보안의 근간을 이룬다.

주요 특징

  • 키 쌍 사용: 공개키(Public Key)와 개인키(Private Key) 한 쌍을 사용한다
  • 공개키: 외부에 공개되는 키로, 누구나 이 키로 데이터를 암호화할 수 있다
  • 개인키: 사용자만 비밀리에 보관하는 키로, 공개키로 암호화된 데이터를 복호화하거나, 자신의 신원을 증명하기 위해 사용된다
  • 상호작용: 공개키로 암호화된 데이터는 반드시 해당 개인키로만 복호화할 수 있다. 반대로 개인키로 서명된 데이터는 공개키로만 복호화(검증)할 수 있다

대표적인 알고리즘

비대칭키 암호화 알고리즘은 대칭키에 비해 연산량이 많지만, 안전한 키 교환 및 디지털 서명에 필수적으로 사용된다

  • RSA (Rivest–Shamir–Adleman): 가장 널리 사용되는 비대칭키 암호화 알고리즘 중 하나이다. RSA-2048과 같이 키 길이를 비트 단위로 표현한다
  • ECC (Elliptic Curve Cryptography): 타원 곡선 암호화 방식으로, RSA에 비해 짧은 키 길이로도 유사한 보안 강도를 제공하며 모바일 환경 등 자원 제약적인 환경에서 효율적이다

모듈러 연산을 통한 비대칭키 개념 이해

비대칭키 암호화의 원리는 소수의 성질을 이용한 모듈러(나머지) 연산을 기반으로 한다.

예시 – 평문 ‘A’ (ASCII 코드 65)를 암호화하고 복호화하는 과정이다

  • 평문 숫자: P = 65 (대문자 ‘A’)
  • 암호화 키 (공개키): e = 5
  • 복호화 키 (개인키): d = 29
  • 모듈러스 (공개): n = 323 (두 소수의 곱으로 구성)

암호화

  • 평문 P를 공개키 e와 모듈러스 n을 사용하여 암호화한다

복호화

  • 암호문 C를 개인키 d와 모듈러스 n을 사용하여 복호화한다
  • 이처럼 암호화된 12가 개인키 d를 통해 다시 65라는 평문으로 복호화된다. 여기서 개인키 d를 모르는 공격자는 암호문 12와 공개된 e(암호화 키 – 공개키), n(모듈러스 – 공개) 값만으로는 원래 평문 65를 쉽게 찾아내기 어렵다. 12의 x제곱 (mod 323) = 65를 만족하는 x (개인키)를 역으로 찾아내는 것은 매우 어렵기 때문이다

키 길이와 보안성

  • 비대칭키 암호화 시스템의 보안은 키의 길이에 크게 좌우된다. 키 길이가 길어질수록 가능한 경우의 수가 기하급수적으로 증가하여 무작위 대입 공격에 대한 저항력이 높아진다. 현재 사용되는 RSA-2048과 같은 키 길이는 현대의 컴퓨팅 능력으로는 사실상 해독 불가능한 수준으로 간주된다

양자 컴퓨팅과 암호학의 미래

  • 양자 컴퓨터의 등장은 현재의 비대칭키 암호화 시스템에 대한 위협으로 인식되고 있다 양자 컴퓨터는 특정 수학적 문제(예: 소인수분해)를 기존 컴퓨터보다 훨씬 빠르게 해결할 수 있어, 현재의 암호화 키를 무력화할 가능성이 있다. 따라서 포스트 양자 암호학(PQC: Post-Quantum Cryptography) 연구가 활발히 진행되고 있으며, 미래에는 새로운 암호화 알고리즘이 필요할 수 있다. 그러나 정보의 기밀 유지에도 유효기간이 있는 만큼, 대부분의 기밀은 양자 컴퓨터가 상용화될 시점에는 정보로서의 가치를 상실할 것이라는 관점도 존재한다

비대칭키와 블록체인

  • 비대칭키는 블록체인 및 암호화폐(코인) 시스템의 핵심 기술이다. 블록체인에서는 공개키를 지갑 주소로 활용하고, 개인키로 거래를 서명하여 소유권을 증명하고 위변조를 방지한다. 공개키와 개인키 모두 디지털 정보에 불과하며, 개인키의 노출은 곧 자산의 손실로 이어지므로 안전한 키 관리가 중요하다. 개인키를 일허버리면 복구 불가능하며, 노출되면 자산을 즉시 탈취당한다. “Not your keys, not your coins” 라는 말이 있듯이, 개인키 관리는 전적으로 사용자의 책임이다

효율성 비교: 대칭키 vs 비대칭키

  • 대칭키 방식(예: AES-128)과 비대칭키 방식(예: RSA-3072)은 키 길이는 크게 다르지만 유가한 보안 강도(약 128비트)를 제공한다. RSA-2048은 약 112비트 보안 강도로, AES-128보다 약간 낮지만 현재 표준으로 널리 사용된다. 하지만 비대칭키 방식은 훨씬 더 많은 연산 자원을 소모한다. 이는 특히 모바일 기기처럼 배터리 수명이나 처리 능력에 제약이 있는 환경에서 중요한 고려 사항이 된다. 따라서 가능한 경우 효율성이 좋은 대칭키 방식을 우선적으로 사용하고, 대칭키만으로 해결하지 어려운 키 교환이나 디지털 서명 등의 문제에 비대칭키 방식을 활용하는 것이 일반적이다

하이브리드 암호화

실무에서는 두 방식의 장점을 결합한다

  • 비대칭키로 대칭키를 안전하게 교환
  • 교환된 대칭키로 실제 데이터를 암호화

HTTPS에서 TLS/SSL은 RSA/ECDH로 세션키(대칭키)를 교환한 후, AES로 실제 통신 데이터를 암호화 한다

인프런 강의 중 ‘널널한 개발자님의 외워서 끝내는 SSL과 최소한의 암호기술’ 강의 참고