시리즈:암호의 암도 몰라도 쉽게 하는 GPG

지금 당장이라도 GPG를 능숙하게 다뤄서 내 프라이버시를 내가 지켜야 될거 같습니다.

이 문서에는 독자적으로 연구한 내용이 들어갑니다. 다른 사람의 의견을 존중하면서 무례하지 않도록 작성해 주시고, 의견 충돌 시 토론 문서에서 토론해 주세요.

GPG(또는 PGP라고도 불려짐)는 강력한 암호화 프로그램으로써, RSA 방식을 사용해요. 주로 자신의 메일을 암호화 하는 데 사용되지요. 이 문서에서는 왜 GPG를 써야 하는지, 어느 정도로 안전한 지, 어떻게 사용하는 지를 알아보도록 해요.

GPG를 왜 써야하나요?

다른 사람이랑 이야기를 하는데, 다른 누군가를 그것을 엿듣는다면 기분이 어떠신가요? 정신이 이상한 사람이 아니라면 매우 나쁘겠죠. 마찬가지로, 인터넷에서도 메일을 엿보는 사람들이 있습니다.

어? 엿보는 사람들은 해커 아니냐고요? 물론, 해커도 있죠. 하지만 컴퓨터를 잘 관리한다면 해커가 엿보는 일은 흔치 않습니다. 왜나하면 당신과 메일 사이트과의 연결은 견고하게 암호화되어 있기 때문이죠.

하지만 사이트가 당신의 메일을 훔쳐본다면?

이러한 경우에는 어떻게 대처해야 할까요? 그것은 바로 GPG를 사용하는 것입니다!

왜 GPG나고요? GPG는 받는 사람과 보내는 사람 이 둘만 해독하고 암호화 할 수 있기 때문입니다. 메일서버도 정부도 제3의 눈도 NSA도 해독하거나 감청할 수 없습니다. 그러면 이 엄청나게 좋은 GPG가 얼마나 견고하길래 정부도 보지 못하는 것일까요?

겁나 짱센 GPG

암호화 중에서도 제일 강력한 GPG가 울부짖었다: 크아아아아

GPGRSA 암호 기술을 이용합니다. 보통 암호화를 하면 비밀번호를 떠오릅니다. 이런 암호화의 비밀번호는 암호화할때 쓰는 암호와 복호화(암호화된 것을 푸는 것을 의미합니다)할때 쓰는 암호가 같습니다. (이런 암호화 방식을 대칭키 암호화라 합니다.)

하지만 RSA는 다릅니다. RSA는 암호(이하 키)가 2개입니다. 어떤 키로 암호화하면 다른 키로만 복호화할 수 있습니다. (다른 키로 암호화하면 어떤 키로만 복호화 할 수 있음. 즉, 역도 성립함.) 그리고 수학적으로 큰 수를 사용하기에 깨는 데 오랜 시간이 걸립니다.

여기서 다른 사람에게 키를 공개해야 합니다. 왜나고요? 열쇠없이 자물쇠를 열 수는 없잖아요. 여기서 다른 사람에게 공개하는 키는 공개키라 칭하고, 자신만이 가지는 키는 개인키라 칭합니다.

공개키로 암호화하면 개인키로만 복호화할 수 있습니다. 개인키로 암호화하면 공개키로만 복호화할 수 있습니다. 개인키는 오직 그 자신이 가지고 있기에 개인키로 암호화 했다는 것은 개인이 직접 암호화 했다는 것을 의미합니다. 보는 사람은 공개키를 이용하여 복호화하면 됩니다.

그리고 보내는 사람이 받는 사람의 공개키로 암호화하면 개인키를 가지고 있는 받는 사람이 복호화하여 볼 수 있습니다. 이 RSA를 받는 사람말고 다른 사람이 보는 것은 불가능합니다. 왜나하면 수가 너무 크기때문입니다. (받아 적을 수도 없습니다.)

이렇게 좋은 기술을 사용하니 당연히 GPG가 견고한 거겠죠?

어떻게 사용하나요?

먼저, 보내는 사람은 PGP 키쌍(개인키+공개키)를 생성합니다. 그리고, 이 PGP 키쌍을 이용하여 메세지를 암호화하거나 서명합니다.

암호화를 할때는 받는 사람의 공개키가 필요합니다. 받는 사람은 자신의 개인키를 이용해 복호화합니다. 서명을 할때는 자신의 개인키가 필요하고 받는 사람은 보내는 사람의 공개키를 이용하여 검증합니다.

여기서 왜 서명을 하냐고요? 서명을 하면 자신이 보낸 이메일이라는 것을 한번 더 각인시켜 주기 때문입니다. 아까 말 했듯이 서명을 하려면 자신의 개인키가 필요한데 개인키는 자신만이 가지고 있기 때문이죠!

위에서 말 했듯이 서명을 검증하려면 보내는 사람의 공개키가 필요합니다. 그러면 받는 사람은 보내는 사람의 공개키를 어떻게 구할 수 있을까요? 보내는 사람이 키서버에 공개키를 올리면 됩니다. 키 서버는 사람들의 공개키들이 올라와 있는 곳으로, 누구나 원하는 공개키를 받을 수 있습니다. 그러면, 받는 사람이 키서버에서 공개키를 받을 수 있겠죠?

근데 모든 키쌍이 진짜 그 사람이 발급한 키쌍이냐고요? 그건 아닙니다, 다른 사람이 부정발급할 수도 있죠. 그러면 신뢰 할 수 없는 거 아니나고요? 아닙니다, 우리는 키쌍에도 서명을 할 수 있습니다. 키쌍이 주인이 진짜 주인인지 주의깊게 확인하고 (e.g. 전화로 확인한다던가 대면으로 만나서 물어본다던가) 서명하여 다시 키서버에 보내면 됩니다. 그러면 다른 사람들의 키의 서명들을 보고 신뢰할 지 아닐 지의 여부를 판단할 수 있겠죠?

실제로 사용해보고 싶어요!

프로그램을 사용하려면 설치부터 해야되겠죠? 그러면 일단 설치부터 해봅시다.

설치하고 준비하고 메일 보내보기

GPG는 오픈소스예요. 그래서 여러 OS에서 사용할 수 있도록 개발되어 있죠. 여기서 자신이 사용하는 운영체제를 골라 관련 프로그램을 설치하고 사용하는 방법을 운영체제 별로 알아봅시다.

Mac

설치하기

먼저 맥용 GPG 툴인 GPG Tool을 받아야 합니다. GPG Tool은 다음 주소에서 받을수 있습니다. https://gpgtools.org/ Gpgtool.png

그 후, 파일을 다운 받은후, install.pkg 파일을 실행해줍니다. Gpgtool2.png

키 생성하기

설치하고 난후, 컨트롤 + 스페이스 바 키를 누르시거나 혹은 오른쪽 맨 위의 돋보기 단추를 눌러 스팟라이트를 불러오셔서 GPG Keychain을 불려옵니다. Gpgtool3.png

GPG 키체인을 켜시면 다음과 같은 창이 뜨실것입니다. 여기서 위의 New를 눌러 우리의 새 인증서를 만들 시간입니다. Gpgtool4.png

New를 누르시면 다음과 같은 란이 뜨는데, 여기에 알맞게 입력하시면 됩니다. Gpgtool5.png

인증서가 만들어지는 동안 잠시 기다리시면 되겠습니다. 다른 일 하시면서 기다리면 됩니다. 다양한 활동을 하면 더욱 더 의미없는 숫자가 나오게 되고(좋은 거에요!) 결과적으로 보안이 강력해집니다.

Gpgtool6.png

자, 인증서가 다 만들어졌습니다. 이제 애플 메일 클라이언트에 이 인증서에 등록된 Email이 있다면 이 인증서를 이용하여 서명을 하실수 있습니다. 인증서를 만드신걸 축하드립니다.

Gpgtool7.png

키서버에 업로드하기

먼저 설치를 하게 되면 키 서버에 자동적으로 업로드하게 되지만, 여기선 수동 업로드를 알아 봅시다. 먼저 키서버를 설정하는 것부터 배워봅시다.

먼저 설정창으로 들어가 줍니다.

Keyupload2.png

설정창으로 들어가게 되면 이러한 창이 뜨는데, 여기서 자신이 원하는 서버로 정해주면 됩니다. 전 hkp://keys.gnupg.net 으로 정했습니다. Keyupload3.png

그후에 자신의 키를 오른쪽 클릭한후에 공개키를 키 서버로 올리기 옵션을 선택하면 됩니다. 참 쉽죠? Keyupload.png

서명 / 암호화하여 보내보기

GPGTool의 경우, 기본 메일 클라이언트는 아주 고맙게도 애플의 기본 메일 클라이언트를 사용하고 있습니다. 그러므로 우린 그냥 간단하게 메일을 실행하면 됩니다.

Dock.png


메일 프로그램을 실행할시 이런 창이 뜨는데, 마우스가 가리키는 쪽의 버튼을 선택하여 메시지를 작성합니다.

Mail.png

Message.png 자 이제 다 왔습니다. 보낸 사람에 GPG를 만들때 사용한 메일 계정을 선택하게 되면 제목의 자물쇠와 인장표시가 풀리는 것을 볼수 있을것입니다. 자물쇠를 클릭하시게 되면 메시지가 암호화 되어 보내지게 되며, 인장을 선택할시엔 메시지를 서명만 하게 됩니다.

다른사람의 인증서를 얻어보기

Gpgtool4.png 다음의 창에서 Lookup Key를 클릭하셔서 뜨는 창에 다른 사람의 이메일 주소나 키 ID를 쳐서 받아올수 있습니다. 다른 사람이 다른 키서버에 올렸더라도 키서버끼리는 서로 동기화 되므로 아무런 문제가 없습니다.

Windows

이 문서에서는 Thunderbird 클라이언트를 중심으로 설명합니다. Thunderbird를 쓰지 않는 분들을 위하여 설치 방법도 같이 기술합니다.

Thunderbird 설치하고 계정 설정하기

이미 Thunderbird를 사용하고 계시다면 이 단계는 건너 뛰어 주세요.

  1. Thunderbird 공식 홈페이지에서 무료 다운로드 버튼을 눌러 다운로드합니다.
  2. 다운로드받은 파일을 실행해 설치합니다. 특별한 절차는 필요없으니 그냥 설치하시면 됩니다.
  3. Thunderbird를 실행합니다.
  4. 첫 실행화면입니다. 별로 중요한 건 아니니 기본으로 설정으로 눌러줍시다.
    Mozilla Thunderbird 첫 실행.PNG
  5. 그러면 이런 화면이 뜨는 데 건너뛰고 기존 메일 사용하기를 누릅시다.
    Mozilla Thunderbird를 사용해 주서셔 감사합니다!.PNG

작성중입니다. 잠시만 기달려주세요.

  1. 그러면 이런 화면이 뜹니다. 다른 사람에게 보여줄 이름과 이메일 주소, 이메일 계정 암호를 입력하고 계속 버튼을 누릅니다.
    Mozilla Thunderbird 메일계정 설정 1단계.PNG
  2. 그러면 Mozilla Thunderbird에서 자동으로 서버 설정 등을 감지하여 자동으로 설정합니다. 여기서 완료버튼을 누르지 말고 수동 설정 버튼을 눌러줍시다.
    Mozilla Thunderbird 메일 계정 설정 2단계.PNG
  3. 그러면 사진에서 보다시피 서버주소를 설정할 수 있게 됩니다. 여기(클릭하세요!)에 나와 있는대로 입력하고 완료 버튼을 누릅니다.
    Mozilla Thunderbird 계정 수동 설정.PNG
  4. 만약 Gmail 계정인 경우에는 이렇게 구글 로그인 창이 뜹니다. 비밀번호를 입력하고 로그인합니다.
    구글 OAuth 로그인.PNG
  5. 로그인을 하면 이렇게 동의 여부를 물어봅니다. 동의버튼을 눌러줍시다.
    구글 OAuth 동의.PNG
  6. 계정 설정이 완료되었습니다.

틀:주의사항

Enigmail 설치하기
  1. 맨 위쪽에 가장 오른쪽에 있는 줄 세개 그어진 메뉴 버튼(이하 앱메뉴)을 누른 후, 부가 기능 버튼을 클릭하세요.
    Thunderbird 부가 기능 메뉴 버튼.png
  2. 그러면 부가 기능 관리자가 나옵니다. 사진처럼 확장 기능 탭을 선택하세요.
    Thunderbird 부가 기능 창.PNG
  3. 오른쪽 위에 있는 검색창에서 Enigmail을 검색하면 검색 결과에 Enigmail이 나옵니다. 설치 버튼을 누르세요.
    Thunderbird Enigmail 검색 결과.PNG
  4. 다음과 같이 설치가 완료되면 다시 시작을 눌러주세요.
    Thunderbird Enigmail 설치 직후.PNG
키 생성하기
  1. 윗 문단에서 다시 시작하셨다면, 첫번째 사진과 같은 창이 뜹니다. Start setup now를 선택하고 다음 버튼을 눌러주세요.
    Enigmail 설정 마법사 첫 실행.PNG
  2. 다음과 같은 화면에선 I prefer a standard configuration (recommended for beginners)를 선택하고 다음 버튼을 눌러주세요.
    Enigmail 설정 메일 마법사 1단계.PNG
  3. 그러면 사진과 같이 GnuPG가 필요하다고 하는데요, Install GnuPG...를 눌러주시고 무슨 창이 뜰 때까지 기달려 줍시다.
    (관리자 권한을 요구하면 또는 를 눌러주세요.)
    Enigmail 설정 마법사 2단계.PNG
  4. GnuPG 설치 프로그램이 뜹니다. 그냥 Next, Install, Finish 버튼만 눌러 주시면 OK
    (무슨 메모장이 열리면 그냥 닫으셔도 됩니다. 읽고 싶으면 읽으셔도 되고)
    GnuPG 설치 프로그램.PNG
  5. 설치를 다하시면 설정 마법사가 다음과 같이 바뀝니다. 다음 버튼을 클릭해주세요.
    Enigmail 설정 마법사 3단계.PNG
  6. 이제 키를 생성하기 전에 비밀번호를 입력하는 단계입니다. 개인키는 개인만이 가지고 있어야 하지만 이 개인키가 타인에게 유출되는 만약을 대비하기 위해, 우리 똑똑한 PGP는 개인키를 비밀번호로 대칭키 암호화(복호화시 쓰는 비밀번호와 암호화시 쓰는 비밀번호가 일치하는 암호화방식)하여 보호합니다. 당연히 잊어버리면 안되면서 강력해야 되겠죠?
    적절한 비밀번호를 입력 한 후에 밑에서 한번 더 입력한 후 다음 버튼을 누릅시다.
    Enigmail 설정 마법사 4단계.PNG
  7. 이제 키를 생성하고 있습니다. 키를 생성하는 동안 채팅을 하거나 위키에 기여를 하면 더욱 좋습니다.
    Enigmail 설정 마법사 키 생성중.png
  8. 키 생성이 완료되었습니다. 마법사에서 폐기 인증서(Revocation Certificate)를 생성하라 하네요. 폐기 인증서는 만약 개인키가 타인에게 유출될 경우 다른 사람들에게 이 키 유출됬어요! 이 키 폐기! 신뢰 ㄴㄴ!라고 외치는 데 쓰이는 인증서입니다.
    어? 외치는 데 왜 인증서가 필요하냐고요? 적어도 키 주인이 외치는 지 확인해야 되니까요.
    Enigmail 설정 마법사 5단계.PNG
  9. 비밀번호를 입력하라고 뜹니다. 폐기 인증서를 만들려면 개인키가 필요한데 위에서 말했다시피 개인키는 비밀번호로 보호되어 있기 때문이죠. 비밀번호를 입력하고 OK 버튼을 눌러줍시다.
    Enigmail 개인키 잠금해제 비밀번호 입력창.PNG
  10. 파일 저장창이 뜨네요. 안전하고 삭제 될 일 없고 나만이 접근 할 수 있는 곳(e.g. 나만 아는 곳에 숨겨놓은 USB)에 저장합시다.
    Enigmail 폐기 인증서 저장 다이얼로그.PNG
  11. 폐기 인증서가 뭔지 알려주는 창입니다. 그냥 확인 버튼을 누릅시다.
    Enigmail 폐기인증서 역활 설명 및 경고.PNG
  12. 다음 버튼이 활성화되었네요. 다음 버튼을 누릅시다.
    Enigmail 설정 마법사 6단계.PNG
  13. 키를 다 생성하였습니다! 이제 완료 버튼을 눌러 마법사를 닫읍시다.
    Enigmail 설정 마법사 최종.PNG
키 서버에 키쌍 올리기

틀:주의사항 키 서버에 키쌍을 올리면 다른 사람들이 자신의 키 쌍을 쉽게 찾을 수 있습니다.

  1. 앱 매뉴 -> Enigmail -> 키 관리(Y) 메뉴를 누릅니다.
    앱 매뉴 아래 Enigmail 메뉴.png
  2. 키 서버에 올릴 키쌍을 선택한 후, 그 위에서 오른쪽 마우스를 클릭한 후 메뉴에서 키 서버로 공개키 업로드 메뉴를 누릅니다.
    Enigmail 키 관리 인증서 선택후 오른쪽 클릭 메뉴.png
  3. 확인 버튼을 누릅니다.
    Enigmail 키 서버 선택 창.PNG
  4. 아무 오류도 안 뜬다면 성공
서명해서 메일 보내보기

메일에 서명을 하면 이 메일이 자신이 보낸 메일임확실하게 할 수 있습니다.

  1. 윗 메뉴에서 쓰기를 누릅니다.
    Thunderbird 윗 툴바.PNG
  2. 받는 사람엔 받는 사람 이메일을 쓰고, 제목엔 제목을 쓰고, 밑에 내용에는 내용을 씁니다. 설명 안해도 감 오죠?
    Thunderbird 메세지 쓰기 창.PNG
  3. 위에서 This message will be unsigned and unencrypted가 보이시죠? 이는 이 메일은 암호화되지도 서명되지도 않을 것입니다.라는 뜻입니다. 즉, 지금 보내기를 누르면 PGP가 적용되지 않은 그냥 메일이 보내집니다.
    그러면 메일에 서명을 할려면 어떻게 해야할까요?
    바로 연필 모양 버튼을 누르면 됩니다.
  4. 연필 모양을 누르면 다음과 같이 This message will be signed라고 바뀝니다. 이 말인즉, 이 메세지는 서명됩니다.라는 뜻입니다. 이제 보내기를 누르면 서명된 메일이 보내집니다.

Thunderbird 서명해서 메세지 보내기.png

  1. 보내기 버튼을 누르면 비밀번호를 물어봅니다. 비밀번호를 입력하고 OK 버튼을 눌러주세요.
    Enigmail 개인키 잠금해제 비밀번호 입력창.PNG
  2. 아무 오류도 없으면 성공한 겁니다. 보낸편지함(이름이 다를 수도 있음)에서 보낸 메일을 확인할 수 있습니다. (사진처럼 장미가 중앙에 있는 편지 이미지가 있으면 OK)
    Thunderbird 잘 서명된 이메일.png
암호화해서 메일 보내보기

암호화해서 메일을 보내면 받는 사람만 읽을 수 있습니다. 우리 모두 다같이 암호화해서 메일을 보내볼까요?

  1. 쓰기 버튼을 누릅니다.
    Thunderbird 윗 툴바.PNG
  2. 이메일을 씁니다.
    Thunderbird 메세지 쓰기 창2.PNG
  3. 자물쇠 버튼을 누릅니다. 그러면 아래 사진처럼 자물쇠 버튼이 변합니다.
    Thunderbird 암호화해서 메세지 보내기.png
  4. 보내기 버튼을 누르면 아래와 같은 창이 뜹니다. 이유는 암호화를 할려면 상대방의 공개키가 필요한데 우리에게는 아직 없기 때문입니다. 키 서버에서 누락된 키 가져오기 시도 버튼을 누릅시다.
    Thunderbird 키 선택 창.png
  5. 키 서버 선택창이 뜹니다. 그냥 확인 버튼을 누릅시다.
    Thunderbird 공개키를 가져올 키 서버 선택.png
  6. 공개키를 발견했습니다! 이제 확인 버튼을 누릅시다.
    Thunderbird 발견된 공개키 다운로드.png
    • Enigmail 경고라는 제목의 창이 뜰 수 있습니다. 큰 문제 아니면 그냥 씹어도 됩니다.
  7. 큰 오류가 없다면 성공

Linux

확인하고 대비하고 신뢰의 웹을 향하여

Mac OS X

Windows

메일 복호화하기

그냥 비밀번호 요구하면 입력하세요. 그러면 자동으로 복호화되어 표시됩니다.

메일 서명 확인하기
다른 사람의 키 보증하기(키 서명)
키 폐기하기
폐기 인증서 이용하기
개인키/공개키 둘 다 있을 때

Linux

각주