🔐 PGP Pretty Good Privacy
메시지나 파일을 잠가 수신자만 열 수 있게 하고, 디지털 서명으로 누가 보냈는지·내용이 바뀌지 않았는지 누구나 확인할 수 있게 해 주는 암호화 소프트웨어예요. 1991년 필 짐머만이 처음 공개했어요.
📮 쉽게 풀면 — 누구나 넣을 수 있지만 한 사람만 열 수 있는 우편함
앞에 투입구가 달린 우편함을 떠올려 보세요. 지나가는 사람 누구나 잠긴 상자를 투입구에 넣을 수 있지만, 우편함 주인만 꺼낼 수 있어요. PGP도 같은 방식이에요. 공개 키는 투입구이고 누구에게나 알려 줘요. 개인 키는 우편함 열쇠이고 절대 공개하지 않아요. 사람들이 공개 키로 메시지를 잠그면, 개인 키를 가진 나만 열 수 있어요.
🧩 왜 두 가지 암호화를 쓰나요? (하이브리드)
공개 키 암호화는 영리하지만 대용량 파일에는 느려요. 그래서 PGP는 두 방식을 합친 하이브리드를 써요. 속도와 편의를 동시에 잡는 거예요.
| 단계 | 무슨 일이 일어나나요 |
|---|---|
| 🗜️ 압축 | 메시지를 먼저 작게 줄여요. 용량도 줄고 보안에도 도움이 돼요 |
| 🎲 세션 키 생성 | 1회용 랜덤 키를 만들어 메시지를 빠르게 잠가요 (대칭 암호화 파트) |
| 🔒 세션 키 잠금 | 그 1회용 키를 수신자의 공개 키로 한 번 더 잠가요 |
| 🔑 순서대로 해제 | 수신자가 개인 키로 세션 키를 열고, 세션 키로 메시지를 열어요 |
🎲 메시지마다 새 세션 키가 만들어지니, 하나를 뚫어도 다른 메시지엔 아무 도움이 안 돼요.
✍️ 디지털 서명 — 누가 보냈는지 증명하기
암호화는 내용을 숨겨요. 디지털 서명은 반대 역할을 해요: 누가 썼는지와 내용이 바뀌지 않았는지를 증명하죠. 발신자가 메시지의 짧은 지문(해시)을 만들고 자신의 개인 키로 그 지문을 잠가요. 받는 사람은 발신자의 공개 키로 지문을 열고 직접 계산한 값과 비교해요. 두 값이 같으면 메시지는 진짜이고 변조되지 않은 거예요.
🤝 신뢰의 그물망 (Web of Trust)
한 가지 어려운 문제가 남아요. 공개 키가 정말 그 사람 것인지 어떻게 알까요? 웹 브라우저는 소수의 중앙 기관을 신뢰해요. PGP는 다른 길을 택했어요. 신뢰의 그물망(Web of Trust)이라는 방식으로, 중앙 관문 대신 사용자들이 서로의 키에 서명해 보증해 줘요. 이미 신뢰하는 사람들이 서명한 키라면 그 키도 믿을 수 있는 거예요. 사람과 사람이 쌓아가는 분산형 신뢰예요.
🪙 크립토에서 PGP를 만나는 곳
대부분의 입문자는 지갑이나 노드 소프트웨어가 진짜인지 확인할 때 PGP를 처음 접해요. 프로젝트가 소프트웨어를 배포할 때 PGP 서명과 공개 키를 함께 공개해요. 사이트가 해킹당해도 다운로드한 파일이 바뀌지 않았는지 이 서명으로 확인할 수 있어요. 이 공개 키·개인 키 개념은 공개 키 암호화라는 크립토 지갑의 토대이기도 해요.
- 📥 다운로드 검증 — Electrum, Bitcoin Core, Ledger Live 배포판에는 PGP 서명이 포함돼 있어요. 확인하는 게 좋아요
- 🛠️ 도구 — 대부분은 GnuPG(GPG)를 써요. Kleopatra 같은 GUI 프론트엔드도 있어요
- 🚩 키 출처가 핵심 — 공개 키는 반드시 공식 채널에서 받고 지문(fingerprint)을 확인해야 해요. 그렇지 않으면 확인 자체가 무의미해요
❓ 자주 묻는 질문
- PGP 서명이 유효하면 소프트웨어를 안전하게 설치해도 되나요?
- 아니요. 유효한 서명은 '그 키를 가진 사람이 보낸 파일이고, 전송 중 변조되지 않았다'는 것만 증명해요. 소프트웨어 자체에 버그나 악성 코드가 없다는 보장은 아닙니다. 또 공개 키를 신뢰할 수 없는 곳에서 받았다면 서명 확인 자체가 무의미하니, 반드시 공식 채널에서 키를 받고 지문(fingerprint)을 확인하세요.
- PGP는 이메일 전용 도구인가요?
- 아니요. 이메일에서 출발했지만 지금은 파일 암호화·서명, 소프트웨어 배포 검증에도 널리 쓰여요. 크립토에서는 지갑이나 노드 소프트웨어 다운로드가 진짜인지 확인할 때 가장 자주 만납니다.
- PGP, OpenPGP, GPG는 무엇이 다른가요?
- PGP는 1991년 나온 원조 소프트웨어예요. OpenPGP는 거기서 파생된 오픈 표준으로, 키와 암호화 메시지의 형식을 정의합니다. GnuPG(GPG)는 그 표준을 따르는 무료 오픈소스 프로그램으로, 오늘날 대부분의 사람들이 실제로 사용하는 도구예요.