공개 키 암호화란 무엇인가?
공개 키 암호화(Public Key Cryptography)는 현대 정보 보안에서 기밀성을 확보하는 데 없어서는 안 될 핵심 기술입니다. 특히 개인 간의 안전한 통신을 위해 암호화 키를 교환해야 하는 상황에서 그 중요성이 두드러집니다. 또한 공개 키 암호화는 디지털 서명(Digital Signature) 기능을 제공하여, 사용자가 키에 서명함으로써 자신의 신원을 검증할 수 있도록 지원합니다.
공개 키 암호화가 등장한 배경
공개 키 암호화 방식은 대칭 키 암호화(Symmetric Encryption)와 관련된 가장 어려운 두 가지 문제를 해결하려는 시도에서 탄생했습니다.
첫 번째 문제는 바로 키 분배(Key Distribution)입니다. 대칭 키 암호화 환경에서 키를 분배하려면 다음과 같은 조건이 필요했습니다.
- 통신 당사자 둘이 이미 어떤 방식으로든 공유된 키를 함께 보유하고 있어야 합니다.
- 키 분배 센터(Key Distribution Center)와 같은 별도의 중개 기관이 필요합니다.
이러한 구조적 한계는 대규모 네트워크 환경에서 심각한 부담으로 작용했고, 이를 극복하기 위한 대안으로 비대칭 암호 방식이 고안되었습니다.
공개 키 암호 시스템의 특징
공개 키 암호 시스템(Public Key Cryptosystem)은 비대칭 알고리즘(Asymmetric Algorithm)을 기반으로 하며, 하나의 키로 암호화하고 서로 연관되어 있지만 다른 키로 복호화합니다. 이러한 알고리즘은 다음과 같은 특징을 가집니다.
- 암호화 알고리즘과 암호화 키에 대한 정보만으로는 복호화 키를 계산해 내는 것이 사실상 불가능합니다(계산적으로 실행 불가능).
- 두 개의 연관된 키가 존재하며, 하나는 암호화에 사용되고 다른 하나는 복호화에 사용됩니다.
공개 키 암호화 방식의 5가지 구성 요소
공개 키 암호화 체계는 다음과 같은 요소들로 구성됩니다.
- 평문(Plaintext) — 알고리즘에 입력으로 들어가는 읽을 수 있는 메시지 또는 데이터입니다.
- 암호화 알고리즘(Encryption Algorithm) — 평문에 대해 다양한 변환 과정을 수행합니다.
- 공개 키와 개인 키(Public & Private Keys) — 하나는 암호화에, 다른 하나는 복호화에 사용되도록 선택된 키 쌍입니다.
- 암호문(Ciphertext) — 평문과 키를 기반으로 생성되는 스크램블된 출력 메시지입니다. 동일한 메시지라도 사용되는 키에 따라 서로 다른 두 가지 암호문이 만들어질 수 있습니다.
- 복호화 알고리즘(Decryption Algorithm) — 암호문과 짝이 되는 키를 입력받아 원래의 평문을 복원합니다.
키의 크기와 저장 방식
공개 키 암호화에서 생성되는 키는 512비트, 1024비트, 2048비트 등 매우 큰 크기를 가집니다. 이러한 키는 사람이 외우거나 직접 관리하기 어렵기 때문에, USB 토큰이나 HSM(Hardware Security Module, 하드웨어 보안 모듈)과 같은 전용 장치에 저장하여 안전하게 보관하는 것이 일반적입니다.
공개 키 암호 시스템의 주요 보안 위협
공개 키 암호 시스템의 가장 큰 문제점은 공격자가 합법적인 사용자로 위장할 수 있다는 점입니다. 공격자는 공개 디렉터리에 등록된 공개 키를 가짜 키로 교체하거나, 통신 연결을 가로채 키를 변조할 수 있습니다. 따라서 공개 키의 진위 여부를 확인하는 인증 체계가 반드시 병행되어야 합니다.
공개 키 암호화의 활용 분야
공개 키 암호화는 온라인 결제 서비스와 전자상거래(e-commerce) 등에서 필수적인 역할을 담당합니다. 이러한 온라인 서비스는 공개 키의 진본성(authenticity)과 사용자의 서명이 검증될 때에만 안전하게 보장됩니다.
공개 키 암호화가 제공하는 보안 서비스
비대칭 암호 시스템은 기밀성(Confidentiality), 인증(Authentication), 무결성(Integrity), 부인 방지(Non-repudiation)이라는 네 가지 보안 서비스를 관리해야 합니다. 그중 공개 키는 부인 방지와 인증 서비스를 지원하며, 기밀성과 무결성은 사용자의 개인 키로 수행되는 암호화 과정의 일부로 처리됩니다.