Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

네트워크 보안의 핵심, 공개 키 암호화: 메시지를 잠그는 키는 무엇일까?

공개 키 암호화란 무엇인가?

공개 키 암호화(public key encryption)는 큰 숫자 값으로 데이터를 인코딩하는 암호학의 핵심 기술입니다. 하나의 공유된 키를 쓰는 대칭 방식과 달리, 서로 다른 두 개의 키를 사용한다고 해서 '비대칭(asymmetric) 암호화'라고도 불립니다.

키는 컴퓨터 프로그램으로 생성할 수도 있지만, 대부분의 경우 신뢰할 수 있는 기관에서 발급하여 누구나 접근 가능한 공개 저장소를 통해 배포됩니다. 두 키는 수학적으로 연관되어 있지만, 한쪽 키를 알아낸다고 해서 다른 쪽 키까지 계산해 낼 수는 없습니다. 이러한 구조 덕분에 공개 키 암호화 시스템은 인터넷 보안에 크게 기여하고 있습니다.

암호화와 복호화, 각각 어떤 키를 사용할까?

결론부터 말하면 암호화에는 공개 키(public key)를, 복호화에는 개인 키(private key)를 사용합니다. 공개 키는 이름 그대로 누구나 사용할 수 있으며, 메시지를 받을 사람만이 자신의 개인 키로 이를 해독할 수 있습니다. 개인 키는 '비밀 키(secret key)'라고도 불리며, 소유자 본인만 접근할 수 있습니다.

즉, 발신자는 수신자의 공개 키로 메시지를 잠그고, 수신자는 자신만이 가진 개인 키로 여는 구조입니다. 공개 키가 외부에 노출되더라도 개인 키를 역산해 낼 수 없기 때문에 안전합니다.

'D'는 무엇을 의미할까? – 암호화 지수와 복호화 지수

RSA 같은 공개 키 알고리즘에서 'e'는 공개 지수(public exponent) 또는 암호화 지수(encryption exponent)라고 불리며, 자유롭게 공개해도 됩니다. 반면 'D'는 비밀 지수(secret exponent) 또는 복호화 지수(decryption exponent)라고 부르며, 오직 키 소유자만 알고 있어야 하는 값입니다.

공개 키 암호화는 얼마나 안전할까?

공격자가 공개 키 외에 추가 정보가 없다면, 일반적인 공개 키 암호화는 안전한 것으로 평가됩니다. 하지만 은행 등 대형 기관들은 선택 암호문 공격(CCA, Chosen-Ciphertext Attack)처럼 더 정교한 공격을 경계합니다. 이 공격은 공격자가 복호화 샘플까지 확보해야 성립하기 때문입니다.

또한 공개 키 암호화가 절대 해킹되지 않는 것은 아닙니다. 알고리즘 자체를 깨는 것은 극히 어렵지만 불가능하지는 않으며, PKI 같은 보안 체계는 암호화 및 해시 알고리즘으로 개인 키와 공개 키를 생성하기 때문에 이들이 곧 전체 보안의 기반이 됩니다.

대칭 키 방식보다 안전한 이유

공개 키 암호화가 더 안전하다고 평가받는 핵심 이유는, 사용자가 자신의 개인 키를 누구에게도 전송하거나 노출할 필요가 없기 때문입니다. 데이터 전송 과정에서 해커가 비밀 키를 가로챌 가능성이 크게 줄어드는 셈입니다.

실제 활용 사례: SSL/TLS와 RSA

공개 키 암호화는 인터넷처럼 안전하지 않은 네트워크를 통해 민감한 데이터를 전송해야 할 때 널리 사용되며, 대표적인 구현이 RSA(Rivest-Shamir-Adleman) 알고리즘입니다.

웹 서버는 암·복호화에 쓸 두 개의 키를 보관하고 있다가, 'SSL 핸드셰이크' 과정에서 클라이언트에게 공개 키를 전달합니다. 이렇게 형성된 보안 채널을 통해 사용자가 암호화한 메시지는 짝이 되는 개인 키로만 해독할 수 있습니다.

또한 실무에서는 공개 키 알고리즘으로 세션 키(session key)를 암호화하고, 실제 메시지는 빠른 대칭 키 알고리즘으로 암호화하는 하이브리드 방식이 함께 활용됩니다.

디지털 서명에서의 역할

디지털 서명은 문서의 해시(hash) 값을 발신자의 개인 키로 암호화하여 만듭니다. 발신자는 원본 파일과 디지털 서명을 함께 전송하고, 수신자는 발신자의 공개 키로 서명 속 해시 값을 복호화해 위변조 여부를 검증합니다. 즉, 메시지를 잠글 때는 공개 키를, 서명할 때는 개인 키를 사용하는 것이 핵심입니다.

기밀성은 어떻게 보장될까?

메시지는 하나의 키로 암호화되며, 복호화에는 반드시 다른 쪽 키가 필요합니다. 수신자의 공개 키를 아는 발신자는 오직 그 수신자만이 자신의 개인 키로 풀 수 있는 메시지를 작성할 수 있습니다.

예를 들어 B가 C에게 메시지를 보내려면 C의 공개 키로 암호화해야 하고, C의 개인 키를 아는 사람은 C뿐이므로 C만 내용을 읽을 수 있습니다. 이것이 공개 키 암호화가 제공하는 강력한 기밀성입니다.

핵심 요약

  • 암호화에는 공개 키, 복호화에는 개인 키를 사용한다.
  • 두 키는 수학적으로 연관되어 있지만 상호 역산은 불가능하다.
  • 개인 키를 전송·노출하지 않아도 되므로 대칭 키 방식보다 안전하다.
  • RSA 알고리즘과 SSL/TLS가 대표적인 활용 사례다.
  • 디지털 서명은 개인 키로 생성하고, 공개 키로 검증한다.