Dev-기타/보안

공개키 암호화와 대칭키 암호화, 하이브리드 암호화

lafortune 2025. 5. 15. 17:32
반응형

우리가 인터넷을 통해 주고받는 데이터나 개인 정보를 안전하게 보호하려면 암호화를 잘 이해하고 활용해야 합니다.

 

 

암호화란 무엇인가?

우선 암호화가 무엇인지 간단히 짚고 넘어가겠습니다. 암호화란 읽을 수 있는 평문 데이터를 읽을 수 없는 암호문으로 변환하여 무단 접근으로부터 데이터를 보호하는 과정을 말합니다.

즉, 누구나 알아볼 수 있는 평문(plain text)을 어떤 규칙과 키(key)를 사용해 알아볼 수 없는 암호문(cipher text)으로 바꾸는 것입니다.

이렇게 해두면 올바른 키 없이는 암호문을 다시 평문으로 되돌릴 수 없으므로, 민감한 정보를 안전하게 숨길 수 있습니다.

예를 들어 메시지를 암호화해 두면 권한 없는 사람이 중간에 그 메시지를 가로채도 내용을 이해할 수 없게 되죠.

 

암호화를 수행하는 암호화 알고리즘(또는 암호 방식)과 는 한 세트로 동작합니다. 암호화 알고리즘은 누구에게나 공개되어 있어도 괜찮지만, 어떤 키를 사용하느냐에 따라 결과가 완전히 달라지기 때문에 키를 어떻게 생성하고 관리하는지가 보안의 핵심입니다 .

키 없이 알고리즘만 알아서는 암호문을 풀 수 없도록 알고리즘이 설계되어 있기 때문입니다.

 

현대 암호화 기법은 크게 두 가지 방식으로 나뉩니다.

  • 대칭키 암호화: 암호화와 복호화에 같은 하나의 키를 사용하는 방식입니다. (동일한 키를 쓰기 때문에 비밀키 암호, 공통키 암호라고도 불립니다.)
  • 공개키 암호화: 암호화와 복호화에 서로 다른 키 쌍을 사용하는 방식입니다. (한 쪽 키를 공개하기 때문에 비대칭키 암호 또는 공개키 암호라고 부릅니다.)

 

두 방식은 사용하는 키의 구조가 다르며, 각자 장단점과 사용되는 분야가 조금씩 다릅니다.

 

 

1. 대칭키 암호화 (Symmetric Key Encryption)

대칭키 암호화는 말 그대로 대칭적인 키를 사용하는 암호 방식입니다.

암호화할 때와 복호화할 때 똑같은 키 하나를 사용하며, 송신자와 수신자는 동일한 비밀 키를 미리 공유하고 있어야 합니다 .

 

예를 들어 A와 B가 대칭키 암호화를 통해 통신하려면, A가 가지고 있는 암호화 키와 똑같은 키를 B도 가지고 있어야 하고, 그래야만 B가 암호문을 복호화해서 원래 평문을 얻을 수 있습니다.

이처럼 한 개의 키로 양쪽에서 암호화/복호화가 이루어지기 때문에 비밀 키 암호, 공통 키 암호라고도 불립니다.

 

대칭키 암호화

 

대칭키 암호화 장점

대칭키 암호화의 가장 큰 장점은 구조가 단순하고 속도가 매우 빠르다는 것입니다. 하나의 키만 관리하면 되므로 연산도 효율적이고, 암호화/복호화 속도가 빨라 대용량 데이터를 처리하기에 유리합니다 .

 

실제로 AES(Advanced Encryption Standard)나 DES(Data Encryption Standard)와 같은 대칭키 알고리즘은 한 번에 큰 블록의 데이터를 빠르게 암호화하도록 설계되어 있어서, 파일 암호화나 하드디스크 암호화, 데이터베이스 암호화 등 많은 양의 데이터 보호에 주로 사용됩니다 .

예를 들어 우리가 쓰는 VPN이나 Wi-Fi 암호, 압축 파일 암호 등이 모두 대칭키 암호화 방식을 활용하고 있습니다.

 

대칭키 암호화 단점

하지만 대칭키 방식에는 중요한 단점도 있습니다. 바로 “키 교환(Key Exchange)” 문제인데요. 암호화와 복호화에 같은 키를 쓰므로 상대방에게 그 키를 안전하게 전달하는 것 자체가 하나의 난관입니다 .

만약 키를 미리 공유하지 못한 상대와 통신하려면, 암호화한 메시지를 보내기 전에 어떤 방법으로든 동일한 비밀키를 상대에게 전달해야 합니다.

이 키가 노출되거나 가로채이면 암호화된 내용은 모두 무용지물이 되므로, 키 전달 과정이 매우 중요하고 어려운 거죠. 실제로 과거에는 특수전령이나 밀봉된 봉투 등을 이용해 사전에 키를 주고받는 방식을 썼지만, 이는 규모가 커질수록 비현실적입니다 .

여러 사람이 통신하려면 사람 수만큼 별도의 비밀키 쌍을 관리해야 하므로 키 관리가 급격히 복잡해지는 문제도 있습니다.

 

 

대칭키 암호화 대안

대칭키 암호의 이러한 문제점을 해결하기 위해 키 배송(key distribution) 문제를 연구한 결과, 1976년 Diffie-Hellman 키 교환과 같은 방법이 고안되기도 했습니다 . 이 방법은 수학적 원리를 이용해 공개된 정보를 주고받아도 최종적으로 같은 비밀키를 공유할 수 있도록 해줍니다. 하지만 더 근본적인 해결책은 바로 공개키 암호화의 발명이었습니다. 공개키 암호화는 애초에 키를 교환하지 않고도 안전하게 통신할 수 있도록 고안된 방법입니다. 

 

 

 

 

2. 공개키 암호화 (Public Key Encryption)

공개키 암호화는 1970년대에 등장한 혁신적인 방식으로, 한 쌍의 키(공개키와 개인키)를 사용하여 데이터를 암호화/복호화합니다.

원리는 다음과 같습니다:

 

  • 개인키(Private Key): 본인만 알고 비밀로 간직하는 키.
  • 공개키(Public Key): 누구에게나 공개할 수 있는 키.

공개키 암호화

 

이 두 키는 수학적으로 서로 연관되어 한 쌍을 이루며, 한 쪽으로 암호화하면 반대 키로만 복호화가 가능한 관계를 가집니다.

예를 들어 A(송신자)가 B(수신자)*게 메시지를 보낼 때, B의 공개키로 암호화하면 B의 개인키로만 복호화가 가능합니다.

따라서 B는 자신의 개인키를 절대 공개하지 않고 안전하게 보관하기만 하면, 누구든 B의 공개키로 암호화한 메시지는 오직 B만 열어볼 수 있게 되는 것입니다.

 

공개키 암호화 장점

이 방식의 가장 큰 장점은 앞서 이야기한 키 교환 문제가 사라진다는 점입니다.

통신하기 전에 비밀 키를 미리 주고받을 필요 없이, 공개된 채널로 공개키를 전달해도 안전한 통신이 가능하기 때문입니다 .

마치 열쇠 구멍이 달린 우체통에 비유할 수 있습니다. 우체통의 위치를 누구나 알 수 있고 (공개키) 그 투입구로는 누구나 편지를 넣을 수 있지만, 열쇠(개인키)를 가진 사람만이 우체통을 열어 내용을 꺼내볼 수 있는 식입니다.

이렇게 공개키 암호화는 사전에 비밀을 공유하지 않은 사람들도 인터넷과 같은 공개된 통신망에서 안전하게 통신할 수 있도록 해주었습니다 .

 

공개키 암호화 단점

그러나 공개키 암호화도 단점이 전혀 없는 것은 아닙니다. 먼저, 수학적으로 복잡한 연산에 기반하기 때문에 속도가 느리고 계산 자원이 많이 소모됩니다.

대칭키 암호화에 비해 1,000배 이상 느리다고 할 정도로, 많은 양의 데이터를 직접 암호화하기에는 비효율적입니다.

또 공개키를 모두에게 배포한다고 했을 때, 그 공개키가 진짜 본인의 것인지 증명하는 문제도 있습니다.

예를 들어, 누군가 B인 척 가짜 공개키를 건네주면 A는 그걸로 암호화해서 보내겠지만 사실 공격자의 공개키일 수 있습니다.

이 문제를 해결하기 위해 인증서(Certificate)라는 개념이 등장하고, 신뢰할 만한 **인증 기관(CA)**이 공개키에 서명을 해주어 신원을 보장하는 체계가 구축되었습니다.

 

 

공개키 암호화 알고리즘

공개키 암호화의 대표적인 알고리즘으로는 RSA타원곡선 암호(ECC) 등이 있습니다.

 

RSA 알고리즘은 큰 숫자의 소인수분해가 어렵다는 수학적 원리를 기반으로 하여, 하나의 개인키와 하나의 공개키를 생성하는 방식입니다 . RSA에서 공개키로 암호화한 내용은 개인키로만 복호화되며, 그 반대도 마찬가지입니다.

 

반대로 ECC(Elliptic Curve Cryptography)는 이산로그 문제의 어려움에 기반한 것으로, 더 짧은 키 길이로도 RSA와 유사한 보안 강도를 얻을 수 있어 최근 많이 사용됩니다 .

 

어떤 알고리즘이든 핵심은 두 개의 키가 수학적으로 연결되어 있지만 공개키만으로는 개인키를 역산하기 매우 어렵게 만들어졌다는 점입니다 .

 

 

전자서명 (Digital Signature)의 개념

공개키 암호화는 암호화뿐만 아니라 전자서명이라는 중요한 활용도 제공합니다.

만약 위 원리를 거꾸로 이용해서, 내가 가진 개인키로 어떤 데이터를 암호화(서명 생성)하고, 다른 사람들이 내 공개키로 이를 복호화해본다면 어떻게 될까요?

공개키로 제대로 복호화가 된다면 “분명 이 데이터는 해당 개인키로 암호화되었구나”, 즉 개인키 소유자가 이 데이터를 보냈음을 증명할 수 있습니다 .

이때는 데이터를 숨기는 것이 목적이 아니므로 중요한 데이터 자체를 개인키로 암호화하지는 않고, 주로 해시(hash) 값을 암호화하여 서명으로 사용합니다.

어쨌든 개인키로 서명하면 공개키로 누구나 검증할 수 있기 때문에, 송신자의 신원 인증무결성 검증 용도로 공개키 기반 전자서명이 널리 쓰입니다 .

예를 들어 소프트웨어 배포 사이트에서 제공하는 전자서명, 블록체인에서의 서명, 그리고 TLS 인증서 자체도 모두 이러한 공개키 서명 기술에 해당합니다.

 

 

 

 

하이브리드 암호화: 대칭키 + 공개키의 결합 (RSA + AES)

실제 환경에서는 대칭키 암호와 공개키 암호의 장단점을 모두 활용하는 똑똑한 방법이 있으니, 바로 하이브리드 암호화입니다.

하이브리드 암호화 구조에서는 공개키 암호화의 안전한 키 교환 능력대칭키 암호화의 효율적인 데이터 처리 능력을 조합합니다 . 현대의 거의 모든 보안 통신 프로토콜(예: TLS/SSL)이나 보안 파일 전송 방식이 이 하이브리드 개념을 사용하고 있습니다.

 

하이브리드 암호화의 동작 방식을 단계별로 살펴보면 다음과 같습니다.

  1. 통신을 시작하는 송신자 A가 무작위의 대칭키(Symmetric Key)를 하나 생성합니다. (예: AES-256용 256비트 키)
  2. A는 이 대칭키를 이용해 평문 데이터를 암호화하여 암호문을 얻습니다. (이 단계까지는 대칭키 암호화 방식이므로 매우 빠르게 진행됩니다.)
  3. A는 수신자 B의 공개키를 입수하여, 방금 생성한 대칭키 자체를 공개키로 암호화합니다. 이렇게 하면 대칭키가 안전하게 보호된 형태로 전달될 수 있습니다.
  4. A는 암호화된 데이터(암호문)와 암호화된 대칭키를 함께 B에게 전송합니다.
  5. 수신자 B는 자신의 개인키로 암호화된 대칭키를 복호화하여 원래의 대칭키를 획득합니다.
  6. B는 확보한 대칭키를 사용해 받은 암호문을 복호화함으로써 원래의 평문 데이터를 얻어냅니다.

 

이 과정을 통해, A와 B는 서로 비밀키를 미리 주고받은 적 없어도 안전하게 대칭키를 공유하게 되었고, 이후에는 대칭키로 암호화된 대용량 데이터도 문제없이 주고받을 수 있게 됩니다 .

 

요약하면 공개키 암호화 기술로는 작은 “세션 키”만 암호화하고, 실제 메시지 내용은 효율적인 대칭키 암호로 암호화함으로써 두 방식의 장점을 모두 취하는 것입니다 .

 

실제로 PGP(OpenPGP)와 같은 보안 이메일 시스템이나 파일 암호화 도구에서 RSA+AES 조합을 많이 사용하는데, 이는 RSA 공개키로 AES 키를 안전하게 교환한 후 AES로 본문을 암호화하는 방식입니다. 또한 뒤에서 다룰 TLS 통신 역시 하이브리드 암호화의 한 예로 볼 수 있습니다.

반응형