오늘날 대부분의 웹 서비스는 HTTPS를 사용하므로 데이터는 TLS를 통해 암호화되어 안전하게 전송된다.
은행, 쇼핑몰, SNS처럼 서비스 서버가 데이터를 직접 처리하는 경우에는 HTTPS만으로 충분하다. 서버가 최종 수신자이므로, 서버에서 TLS를 복호화하여 데이터를 처리하는 것은 정상적인 과정이기 때문이다.
하지만 이메일이나 파일 공유 서비스처럼 서버가 데이터를 저장하거나 전달하는 역할을 하는 경우에는 상황이 다르다.
HTTPS를 통해 안전하게 전송된 데이터도 서버에 도착하면 TLS 복호화가 이루어진다. 따라서 서버가 침해되거나 내부 관리자가 접근하면 저장된 데이터를 확인할 수 있는 상황이 발생할 수 있다.
이러한 환경에서는 TLS 복호화가 이루어진 이후에도 데이터가 계속 암호화된 상태를 유지하여, 최종 수신자만 내용을 확인할 수 있도록 하는 기술이 필요하다.
바로 이러한 목적을 위해 만들어진 기술이 PGP(Pretty Good Privacy) 이다.
즉, HTTPS는 전송 구간을 보호하고, PGP는 TLS 복호화 이후에도 데이터가 암호화된 상태를 유지하도록 하여 최종 수신자만 복호화할 수 있게 한다.
이번 글에서는 PGP가 무엇인지부터 동작 원리와 공개키 신뢰 방식, 그리고 HTTPS와 함께 어떻게 사용되는지까지 핵심 내용을 알아보도록 하겠다.

PGP(Pretty Good Privacy)는 전자메일과 파일을 안전하게 보호하기 위해 만들어진 암호화 기술이다.
이메일이나 파일 공유 서비스는 서버가 데이터를 최종적으로 처리하는 주체가 아니라 저장하거나 전달하는 역할을 하는 경우가 많다.
이때 HTTPS를 사용하면 전송 과정은 안전하게 보호되지만, 서버에서 TLS 복호화가 이루어진 이후에는 데이터를 확인할 수 있는 상태가 된다.
PGP는 이러한 문제를 해결하기 위해 데이터 자체를 암호화하여 TLS 복호화가 이루어진 이후에도 암호화된 상태를 유지하도록 설계되었다.
따라서 서버는 데이터를 저장하거나 전달할 수는 있지만 내용을 확인할 수 없으며, 최종 수신자만 자신의 개인키를 이용해 복호화할 수 있다.
또한 PGP는 단순히 데이터를 암호화하는 것뿐 아니라 전자서명을 통해 데이터의 신뢰성까지 보장하며 다음과 같은 보안 기능을 제공한다.
PGP는 대칭키 암호화와 공개키 암호화를 함께 사용하는 하이브리드 암호 방식을 사용한다.
대칭키 암호화는 처리 속도가 빠르지만 키를 안전하게 전달하기 어렵고, 공개키 암호화는 키 전달은 안전하지만 처리 속도가 느리다.
PGP는 두 방식의 장점만 결합하여 성능과 보안성을 모두 확보한다.
추가적으로, PGP는 메시지를 암호화하는 과정과 전자서명 과정을 함께 수행하여 기밀성과 무결성을 동시에 보장한다.
① 전자서명 생성
② 메시지 암호화

동작 과정은 다음과 같다.
수신자는 반대로 다음과 같은 과정을 수행한다.
여기서 세션키(Session Key) 란 한 번의 통신에서만 사용하는 대칭키를 의미한다. 통신이 종료되면 폐기되며, 매번 새로운 세션키를 생성하기 때문에 높은 보안성을 유지할 수 있다.
즉, 실제로 전송되는 데이터는 ’암호화된 데이터(메시지 + 전자서명)’와 ‘암호화된 세션키’ 두 가지뿐이며, 전자서명은 원본 메시지와 함께 암호화되어 전송된다.

PGP는 HTTPS를 대체하는 기술이 아니라 함께 사용하는 기술이다.
실제로 이메일를 전송하는 과정은 다음과 같다.
메시지 작성
↓
PGP로 메시지 암호화
↓
HTTPS(TLS)로 메일 서버 전송
↓
메일 서버에는 암호문 저장
↓
수신자가 다운로드
↓
개인키로 복호화
즉,
두 기술을 함께 사용하면 전송 과정과 저장된 데이터까지 모두 안전하게 보호할 수 있다.

공개키 암호에서는 상대방의 공개키가 정말 그 사람의 것인지 확인하는 과정이 반드시 필요하다.
HTTPS에서는 CA(Certificate Authority) 가 서버의 공개키를 인증한다. 사용자는 CA를 신뢰하기 때문에 별도의 확인 과정 없이도 서버의 공개키를 신뢰할 수 있다.
하지만 PGP는 이메일과 파일을 주고받는 개인 간의 암호화를 목적으로 설계되었기 때문에, 모든 사용자의 공개키를 중앙 인증기관이 관리하는 구조가 적합하지 않았다.
그래서 PGP는 Web of Trust라는 독특한 신뢰 방식을 사용한다.
Web of Trust에서는 사용자가 직접 상대방의 공개키를 확인한 후 자신의 개인키로 서명한다. 다른 사용자들은 이러한 서명을 바탕으로 공개키를 신뢰할지 결정하며, 신뢰 관계가 여러 사용자 사이에서 연결망(Web)처럼 형성된다.
예를 들어,
A는 B의 서명을 통해 C의 공개키도 일정 수준 신뢰할 수 있다.
Web of Trust의 주요 특징은 다음과 같다.
즉, Web of Trust는 중앙 기관에 의존하지 않는 대신, 사용자가 직접 신뢰를 형성하고 관리해야 하는 분산형 신뢰 모델이라고 이해하면 된다.
PGP와 HTTPS는 모두 암호화를 사용하지만 목적과 신뢰 방식이 서로 다르다.
| 구분 | HTTPS(TLS) | PGP |
|---|---|---|
| 목적 | 클라이언트와 서버 간 안전한 통신 | 데이터 자체 보호 |
| 최종 복호화 | 서비스 서버 | 최종 수신자 |
| 공개키 신뢰 방식 | CA 기반 PKI | Web of Trust |
| 대표 활용 | 웹 서비스, VPN | 이메일, 파일 암호화 |
실제 서비스에서는 두 기술이 함께 사용된다.
먼저 HTTPS는 CA 기반 PKI를 이용하여 서비스 서버의 신뢰성을 검증하고 안전한 통신 채널을 만든다.
그 위에서 PGP는 Web of Trust를 이용하여 수신자의 공개키를 신뢰하고, 데이터를 암호화하여 최종 수신자만 내용을 확인할 수 있도록 한다.
즉,
두 기술은 경쟁 관계가 아니라 서로를 보완하는 기술이다.
GPG(GNU Privacy Guard)는 PGP(OpenPGP)를 구현한 오픈소스 프로그램이다.
즉, PGP는 암호화 기술(표준) 이고, GPG는 그 기술을 실제로 사용할 수 있도록 구현한 프로그램이다.
리눅스를 비롯한 다양한 운영체제에서 PGP 기능을 사용할 때 가장 널리 사용되는 구현체가 바로 GPG이다.
PGP는 대칭키와 공개키를 함께 사용하는 하이브리드 암호 시스템으로, HTTPS와 함께 사용되어 TLS 복호화 이후에도 데이터가 암호화된 상태를 유지함으로써 최종 수신자만 내용을 확인할 수 있도록 하는 기술이다.