1. PGP (Pretty Good Privacy)
ㅇ 1991년 미국의 프로그래머 Phil Zimmermann이 개발한 암호화 프로그램으로,
- 공개키 암호 방식을 기반으로,
- 인터넷 전자우편 및 파일 등에 대한 보안 서비스를 제공
2. PGP 보안 서비스
ㅇ 기밀성 (Confidentiality) : 허가된 수신자만 메시지 열람 가능 (대칭키 + 공개키 암호화)
ㅇ 무결성 (Integrity) : 메시지가 전송 중 변조 안됨을 보장 (해시 함수, 메시지 다이제스트)
ㅇ 인증 (Authentication) : 발신자의 신원을 확인 (전자서명, 개인키 서명)
ㅇ 부인방지 (Non-repudiation) : 발신자가 전송 사실을 부인 못하게 함 (개인키 기반 전자서명)
3. PGP 알고리즘 종류
※ (단일 알고리즘이 아닌, 목적에 따라 여러 알고리즘을 조합하여 사용)
- 공개키 알고리즘 (비대칭키) : RSA, DSA, ElGamal 등
. 세션키 암호화 및 전자서명에 사용 (키 길이 : 1024 ~ 4096 bit)
- 대칭키 알고리즘 : AES, 3DES, CAST-128, Blowfish, Twofish 등
. 실제 메시지 본문 암호화에 사용 (세션키 방식), 공개키 암호화 보다 처리 속도가 빠름
- 해시 알고리즘 : SHA-1, SHA-256, MD5 등
. 메시지 다이제스트 생성 → 무결성 및 전자서명에 활용
- 압축 알고리즘 : ZIP (Deflate) 등
. 암호화 전 메시지를 압축하여 데이터 크기 절감 및 패턴 분석 공격 방어
4. PGP 동작 원리
ㅇ 송신 과정
- (원본 메시지)
- 해시 함수 적용 → 메시지 다이제스트 생성
- 발신자의 개인키(Private Key)로 다이제스트 서명 → 전자서명 생성
. (무결성 + 인증 + 부인방지 확보)
- 원본 메시지 + 전자서명 → ZIP 압축
- 임의의 일회용 세션키(Session Key) 생성
. → 압축 데이터를 세션키로 대칭 암호화 (기밀성 확보)
. → 세션키를 수신자의 공개키(Public Key)로 암호화
- (암호화된 세션키 + 암호화된 데이터) 송신
ㅇ 수신 과정
- (암호화된 세션키 + 암호화된 데이터) 수신
- 수신자의 개인키(Private Key)로 세션키 복호화
- 복호화된 세션키로 데이터 복호화 → 압축 해제
- 메시지 다이제스트 추출 → 발신자의 공개키로 서명 검증
- 수신한 메시지에 해시 적용 → 다이제스트 재생성 후 비교
- 만일, 비교 일치하면, → 무결성 및 발신자 인증 확인 완료
ㅇ 공개키 암호화 만 사용 않고, 대칭키 암호화 방식도 함께 채택
- 공개키 암호화 → 세션키 암호화
- 대칭키 암호화 → 메시지 본문 암호화
5. PGP 구현 및 활용
ㅇ 구현 종류
- 암호화 만 구현 : 기밀성 만 보장 (기밀 파일 전송)
- 전자서명 만 구현 : 무결성/인증/부인방지 보장 (문서 인증, 소프트웨어 배포)
- 암호화 + 전자서명 : 보안 서비스 4개 모두 보장 (완전한 보안 이메일)
ㅇ 활용 범위 : (전자우편 보안 외에도 다양한 분야에서 활용)
- 파일 암호화 : 로컬 파일 및 백업 데이터 보호
- 전자서명 : 문서의 작성자 인증 및 위조,변조 방지
- 소프트웨어 배포 : 리눅스 패키지(.deb, .rpm) 서명 및 검증
- 디스크 암호화 : 전체 디스크 또는 파티션 암호화
6. PGP 신뢰 모델 : 신뢰의 웹 (Web of Trust)
ㅇ PGP는, 공인 인증기관(CA) 없이,
- 사용자 간 상호 서명을 통해, 신뢰를 구축하는 분산형 신뢰 모델을 사용
7. PGP 표준
ㅇ 1991년 : Phil Zimmermann, PGP 1.0 공개
- 비록 개인이 만든 프로그램으로 시작했지만, 지금은 하나의 표준으로 정착됨
ㅇ 1996년 : PGP Inc. 설립, 상용화
ㅇ 1997년 : OpenPGP 표준화 작업 시작 (IETF)
ㅇ 1998년 : RFC 2440 (OpenPGP Message Format) 발표
ㅇ 2007년 : RFC 4880으로 개정 (현행 표준)
ㅇ 현재 : GnuPG(GPG) 등 오픈소스 구현체가 널리 사용됨