PGP(Pretty Good Privacy)는 데이터 통신에서 안전한 암호화와 인증을 제공하기 위해 설계된 강력한 암호화 소프트웨어입니다. 1991년에 Phil Zimmermann에 의해 개발된 PGP는 특히 이메일 암호화와 같은 디지털 통신에서 널리 사용되고 있습니다. 현재 PGP는 유료로 제공되지만, OpenPGP 및 GnuPG와 같은 무료 대안도 존재합니다.
PGP의 주요 특징
대칭 암호화
- 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 빠르고 효율적인 암호화 방식
- PGP에서는 IDEA, 3DES, AES와 같은 대칭키 암호 알고리즘을 이용하여 전자메일의 비밀성을 보장
비대칭 암호화
- 공개키 암호화 방식을 이용하여 대칭키를 암호화하고 복호화
디지털 서명
- PGP는 디지털 서명을 통해 메시지의 무결성을 보장
- 서명 생성: 메시지를 SHA-256, SHA-384, SHA-512와 같은 해시 함수를 통해 해싱하고, DSA 또는 RSA로 송신자의 개인키를 사용해 암호화하여 서명을 생성
- 서명 검증: 수신자는 발신자의 공개키를 사용해 서명을 복호화한 후, 해당 해시값과 메시지의 해시값을 비교하여 무결성을 확인
키 관리 및 신뢰 체계
- Web of Trust: PGP는 키를 인증하고 관리하기 위해 Web of Trust 개념을 도입. 신뢰할 수 있는 다른 사용자들 간의 연결을 통해 키의 진위성을 확인
작동 방식
1. 세션키 생성
- 발신자는 임의의 세션키(일회용 대칭키)를 생성
2. 메시지 암호화
- 원본 메시지를 압축하여 용량을 줄이고 패턴 분석을 방지
- 생성된 세션키로 압축된 메시지를 대칭 암호화하고, 세션키는 수신자의 공개키로 비대칭 암호화하여 전송
- 암호화된 세션키와 메시지가 함께 전송
3. 복호화 단계
- 수신자는 자신의 개인키로 세션키를 복호화
- 복호화된 세션키로 메시지를 복호화
- 압축을 해제하여 원본 메시지를 얻음
한계점
기술적 제한
- RSA 공개키 길이로 인해 효율성 문제가 발생할 수 있음
- 완벽한 순방향 비밀성(PFS)이 없어 개인키가 유출되면 과거 통신 내용이 노출될 위험이 있음