누군가에게 비밀스러운 메시지를 보내고 싶을 때, 이 메시지가 중간에 도난당하거나 위변조되지 않도록 보장하고 싶을 때가 있다. 이때 우리에게 꼭 필요한 기술이 바로 PGP(Pretty Good Privacy) 암호화다.

PGP는 단순한 암호화 기술을 넘어, 디지털 서명을 통해 메시지의 진위와 무결성까지 보장해주는 아주 강력한 도구다. 지금부터 PGP의 개념부터 실전 응용까지, 하나하나 쉽게 뜯어보려고 한다.


1. PGP란 무엇일까?

PGP는 공개 키 암호화 방식과 대칭 키 암호화 방식을 결합하여 만든 하이브리드 암호화 시스템이다. 1991년 필 짐머만(Phil Zimmermann)이 개발했으며, 개인의 사생활 보호를 위해 널리 사용된다.

🔑 대칭 키 vs. 공개 키 암호화
PGP의 핵심은 두 가지 암호화 방식을 동시에 사용한다는 점에 있다.

대칭 키(Symmetric Key) 암호화: 암호화할 때와 복호화할 때 같은 키를 사용한다. 속도가 빠르지만, 키를 안전하게 주고받는 것이 어렵다는 단점이 있다. (예: AES, DES)

공개 키(Public Key) 암호화: 한 쌍의 키(공개 키/비밀 키)를 사용한다.
공개 키(Public Key): 모두에게 공개해도 괜찮다. 메시지를 암호화하는 데 사용된다.

비밀 키(Private Key): 오직 나만 가지고 있어야 한다. 암호화된 메시지를 복호화하는 데 사용된다.
이 방식은 키 교환의 문제는 해결하지만, 대칭 키 방식보다 속도가 느리다는 단점이 있다. (예: RSA, ElGamal)


2. PGP의 작동 원리

PGP는 대칭 키의 빠른 속도와 공개 키의 안전한 키 교환이라는 장점만을 합쳐서 사용한다.

sender입장에서의 암호화 절차

✉️ 메시지 암호화 과정
하나의 예시로 앨리스가 밥에게 PGP로 암호화된 메시지를 보내는 과정은 다음과 같다.

  1. 대칭 키 생성: 앨리스는 메시지를 암호화하기 위해 사용할 임시 대칭 키(Session Key)를 무작위로 생성한다.

  2. 메시지 암호화: 앨리스는 이 대칭 키를 사용하여 메시지 본문을 빠르게 암호화한다.

  3. 대칭 키 암호화: 이 임시 대칭 키는 메시지를 복호화할 수 있는 열쇠나 마찬가지다. 앨리스는 이 열쇠를 보호하기 위해, 밥의 공개 키를 사용하여 이 대칭 키를 다시 암호화한다.

  4. 전송: 앨리스는 암호화된 메시지 본문과 암호화된 대칭 키를 밥에게 함께 전송한다.

receiver 입장에서의 복호화 절차

🔓 메시지 복호화 과정
밥이 앨리스가 보낸 메시지를 확인하는 과정을 예시로 들었다.

  1. 대칭 키 복호화: 밥은 자신이 혼자만 가지고 있는 비밀 키를 사용하여, 앨리스가 암호화해서 보낸 '암호화된 대칭 키'를 복호화한다. 이로써 임시 대칭 키(Session Key)를 얻게 된다.

  2. 메시지 복호화: 밥은 얻어낸 임시 대칭 키를 사용하여 암호화된 메시지 본문을 복호화하고, 원래의 메시지를 읽을 수 있다.

💡 PGP의 장점: 메시지 본문은 빠른 대칭 키로 암호화하고, 그 키만 안전한 공개 키 방식으로 전달하므로, 효율적이면서도 안전하다.


3. PGP의 또 다른 강력한 기능: 디지털 서명

PGP는 단순히 메시지를 숨기는 것(비밀성)뿐만 아니라, 보낸 사람이 누구인지 (인증)와 메시지가 도중에 변조되지 않았는지 (무결성)까지 보장해준다. 이것이 바로 디지털 서명(Digital Signature) 기능이다.

📝 서명 생성 과정
앨리스가 메시지에 서명하는 과정이다.

  1. 해시 생성: 앨리스는 메시지 본문을 해시 함수에 넣어 고유한 값(Hash Value)을 생성한다. 해시 값은 메시지의 지문과 같아서, 메시지의 내용이 1비트만 바뀌어도 해시 값은 완전히 달라진다.

  2. 서명: 앨리스는 이 해시 값을 자신의 비밀 키를 사용하여 암호화한다. 이렇게 암호화된 해시 값이 바로 디지털 서명이다.

  3. 전송: 앨리스는 메시지 본문과 디지털 서명을 함께 밥에게 전송한다.

✅ 서명 확인 과정
밥이 앨리스의 서명을 확인하는 과정이다.

  1. 서명 복호화 (A): 밥은 앨리스의 공개 키를 사용하여 전송받은 디지털 서명을 복호화한다. 이로써 앨리스가 서명했던 원본 해시 값을 얻게 된다.

  2. 새 해시 생성 (B): 밥은 전송받은 메시지 본문을 다시 동일한 해시 함수에 넣어 새로운 해시 값을 생성한다.

  3. 비교: 밥은 (A)에서 얻은 원본 해시 값과 (B)에서 얻은 새로운 해시 값을 비교한다.

    3-1. 값이 같다면: 메시지가 변조되지 않았으며 (무결성), 서명을 생성한 사람은 앨리스가 맞다 (인증).

    3-2. 값이 다르다면: 메시지가 중간에 변조되었거나, 서명자가 앨리스가 아니다.


4. PGP 키 관리의 중요성: 키 쌍 생성

PGP를 사용하려면 우선 나만의 키 쌍(공개 키와 비밀 키)을 만들어야 한다.

🗝️ 키 쌍 생성
GnuPG (PGP의 오픈소스 구현체인 GNU Privacy Guard) 같은 도구를 사용하여 키 쌍을 생성할 수 있다.

  1. 사용자 이름, 이메일 주소 등을 입력한다.

  2. 공개 키와 비밀 키가 한 쌍으로 생성된다.

  3. 비밀 키 보호: 비밀 키는 절대로 유출되면 안 된다. 보통 암호(Passphrase)를 설정하여 비밀 키를 이중으로 보호한다. 이 암호 없이는 비밀 키를 사용할 수 없다.

📢 공개 키 배포
공개 키는 다른 사람들이 나에게 암호화된 메시지를 보내거나 내 서명을 검증하는 데 사용해야 하므로, 널리 알려야 한다.

  • 이메일 서명에 첨부하거나

  • 키 서버(Key Server)에 등록하여 전 세계 누구나 검색할 수 있도록 한다.

주의: 비밀 키가 유출되거나 암호를 잊어버리면, 나에게 온 암호화된 메시지를 영원히 복호화할 수 없다. 비밀 키 관리가 PGP 사용의 핵심이다.


5. PGP 실전 응용 (GnuPG 사용 예시) 💻

대부분의 PGP 작업은 GnuPG라는 소프트웨어를 통해 이루어진다.

메시지 암호화 및 복호화 명령 예시

PGP 암호화는 처음에는 복잡하게 느껴지지만, 결국 공개 키/비밀 키 쌍과 대칭 키를 조합하는 똑똑한 방법임을 이해하면 쉽다. 이 기술을 통해 우리는 디지털 세상에서 안전하게 소통하고 정보의 진위를 확인할 수 있는 힘을 얻게 된다.


🔹오늘의 나는 무엇을 잘했는지
처음엔 PGP의 공개 키/비밀 키 개념과 대칭 키 개념이 복잡하게 섞여서 막막했다. 하지만 PGP가 이 두 가지 방식의 장점만 합친 하이브리드 시스템이라는 핵심을 파악한 후, 암호화와 복호화의 4단계 흐름을 스스로 정리했다.

🔹오늘 배운 것 (학습)
PGP는 단순한 암호화를 넘어, 이 세 가지를 모두 충족시키는 완벽한 보안 도구라는 것을 알게 되었다. 특히 디지털 서명이 발신자의 비밀 키를 사용한다는 것이 가장 중요하다는 것을 알게 되었다.

🔹나만의 팁 or 복습 방법
어려운 용어를 반복적으로 사용하면서 이해하려고 하기 보다는 쉬운 나만의 단어로 이해한 다음 용어를 학습하는게 도움이 되었다. 공개키, 비밀키 이렇게 하면 개념을 익히기 전부터 헷갈리니까 열쇠랑 좌물쇠 이런식으로 단어를 대체해서 공부했더니 이해가 훨씬 수월했다.

0개의 댓글