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

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

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

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

1 GPG를 왜 써야하나요?[편집]

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

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

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

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

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

2 겁나 짱센 GPG[편집]

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

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

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

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

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

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

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

3 어떻게 사용하나요?[편집]

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

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

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

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

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

4 실제로 사용해보고 싶어요![편집]

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

4.1 설치하고 준비하고 메일 보내보기[편집]

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

4.1.1 Mac[편집]

4.1.1.1 설치하기[편집]

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

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

4.1.1.2 키 생성하기[편집]

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

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

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

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

Gpgtool6.png

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

Gpgtool7.png

4.1.1.3 키서버에 업로드하기[편집]

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

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

Keyupload2.png

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

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

4.1.1.4 서명 / 암호화하여 보내보기[편집]

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

Dock.png


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

Mail.png

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

4.1.1.5 다른사람의 인증서를 얻어보기[편집]

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

4.1.2 Windows[편집]

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

4.1.2.1 Thunderbird 설치하고 계정 설정하기[편집]

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

  1. Thunderbird 공식 홈페이지에서 무료 다운로드 버튼을 눌러 다운로드합니다.
  2. 다운로드받은 파일을 실행해 설치합니다. 특별한 절차는 필요없으니 그냥 설치하시면 됩니다.
  3. Thunderbird를 실행합니다.
  4. 첫 실행화면입니다. 별로 중요한 건 아니니 기본으로 설정으로 눌러줍시다.
    Mozilla Thunderbird 첫 실행.PNG
  5. 그러면 이런 화면이 뜨는 데 건너뛰고 기존 메일 사용하기를 누릅시다.
    Mozilla Thunderbird를 사용해 주서셔 감사합니다!.PNG
  6. 그러면 이런 화면이 뜹니다. 다른 사람에게 보여줄 이름과 이메일 주소, 이메일 계정 암호를 입력하고 계속 버튼을 누릅니다.
    Mozilla Thunderbird 메일계정 설정 1단계.PNG
  7. 그러면 Mozilla Thunderbird에서 자동으로 서버 설정 등을 감지하여 자동으로 설정합니다. 여기서 완료버튼을 누르지 말고 수동 설정 버튼을 눌러줍시다.
    Mozilla Thunderbird 메일 계정 설정 2단계.PNG
  8. 그러면 사진에서 보다시피 서버주소를 설정할 수 있게 됩니다. 여기(클릭하세요!)에 나와 있는대로 입력하고 완료 버튼을 누릅니다.
    Mozilla Thunderbird 계정 수동 설정.PNG
  9. 만약 Gmail 계정인 경우에는 이렇게 구글 로그인 창이 뜹니다. 비밀번호를 입력하고 로그인합니다.
    구글 OAuth 로그인.PNG
  10. 로그인을 하면 이렇게 동의 여부를 물어봅니다. 동의버튼을 눌러줍시다.
    구글 OAuth 동의.PNG
  11. 계정 설정이 완료되었습니다.

Gmail 외 메일 사용자를 위해
메일 서버 설정들을 추가할 터이니 기달려주시기 바랍니다.


4.1.2.2 Enigmail 설치하기[편집]
  1. 맨 위쪽에 가장 오른쪽에 있는 줄 세개 그어진 메뉴 버튼(이하 앱메뉴)을 누른 후, 부가 기능 버튼을 클릭하세요.
    Thunderbird 부가 기능 메뉴 버튼.png
  2. 그러면 부가 기능 관리자가 나옵니다. 사진처럼 확장 기능 탭을 선택하세요.
    Thunderbird 부가 기능 창.PNG
  3. 오른쪽 위에 있는 검색창에서 Enigmail을 검색하면 검색 결과에 Enigmail이 나옵니다. 설치 버튼을 누르세요.
    Thunderbird Enigmail 검색 결과.PNG
  4. 다음과 같이 설치가 완료되면 다시 시작을 눌러주세요.
    Thunderbird Enigmail 설치 직후.PNG
4.1.2.3 키 생성하기[편집]
  1. 윗 문단에서 다시 시작하셨다면, 첫번째 사진과 같은 창이 뜹니다. Start setup now를 선택하고 다음 버튼을 눌러주세요.
    Enigmail 설정 마법사 첫 실행.PNG
    • 만일 뜨지 않았다면 사진과 같이 앱메뉴 -> Enigmail -> 설정 마법사를 눌러 준후 다음 단계(2단계)로 가주세요.
      앱 매뉴 아래 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
4.1.2.4 키 서버에 공개키 올리기[편집]

경고
한번 올리면 지울 수 없습니다.


키 서버에 공개키를 올리면 다른 사람들이 자신의 공개키를 쉽게 얻을 수 있습니다.

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

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

  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

참고
서명과 암호화를 동시에 할 수도 있습니다.


4.1.2.6 암호화해서 메일 보내보기[편집]

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

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

참고
서명과 암호화를 동시에 할 수도 있습니다.


4.1.3 Linux[편집]

4.1.3.1 설치하기[편집]

대부분의 리눅스 배포판에는 패키지 저장소 인증을 위해서 gpg1.x버전이 들어있습니다. 그러나 기능이 더 많은 gpg2를 사용하는게 좋으니 설치해 줍시다. 데비안 계열 배포판의 경우는 터미널을 열고 sudo apt-get install gnupg2 를 하면 설치됩니다. 다른 배포판의 경우는 그 배포판에서 사용하는 패키지 관리자를 이용해서 설치해 주면 됩니다.

4.1.3.2 키 생성하기[편집]

gpg2 --gen-key 를 사용하면 키를 생성할 수 있습니다. 다만 gnupg2.1.x버전을 사용하고 있다면 gpg2 --full-gen-key 를 이용해서 키를 만드는것이 더 좋습니다. 키 를 생성하면서 이것저것 물어볼 것 입니다.

gpg (GnuPG) 2.1.10; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 

어떤 키 알고리즘을 사용할 것인지에 대한 질문입니다. 일반적으로 추천되는 알고리즘은 RSA 입니다. [1]

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 

생성할 키의 사이즈입니다. 키 사이즈는 보안성의 강도에 있어서 중요합니다. RSA의 경우 2048bit이상이 권장됩니다.

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 

키의 유효기간입니다. 2년 정도쯤 잡아도 되고 특별히 제한을 둘 생각이 없으면 무제한으로 해 둬도 상관은 없습니다.

GnuPG needs to construct a user ID to identify your key.

Real name: YUNOCHI
Email address: [email protected]
Comment: test PGP key
You selected this USER-ID:
    "YUNOCHI (test PGP key) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o

이름, 메일 주소, 키 코멘트를 작성합니다.

 We need to generate a lot of random bytes. It is a good idea to perform
 some other action (type on the keyboard, move the mouse, utilize the
 disks) during the prime generation; this gives the random number
 generator a better chance to gain enough entropy.

키를 만드는데 시간이 좀 걸립니다. RNG 가 충분히 랜덤소스를 모을때까지 좀 기다려 주세요.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:  11  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1  valid:  11  signed:   1  trust: 11-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2016-04-30
pub   rsa2048/100B91CE 2016-02-19 [expires: 2018-02-18]
      Key fingerprint = 4B3D 18CC C3B4 E089 1ED7  F975 DF54 F6F8 100B 91CE
uid         [ultimate] YUNOCHI (test PGP key) <[email protected]>
sub   rsa2048/1F35C9BA 2016-02-19 [expires: 2018-02-18]

GPG키를 만드는데 성공하였습니다!

4.1.3.3 키서버에 업로드하기[편집]

키 서버에 GPG의 공개키를 업로드 하는 것입니다. 이렇게 하면 키서버에서 쉽게 다른 사람들이 나의 키를 검색해서 나에게 보낼 암호문을 작성하는데 쓸 수 있습니다.

gpg2 --send-key 0x1F35C9BA 

를 입력하면 ~/.gnupg/gpg.conf 설정 파일에 설정되어 있는 기본 키서버에 공개키가 업로드 됩니다. 물론 0x1F35C9BA 는 지금 생성한 키의 keyid입니다. 생성된 자신의 keyid를 입력하세요. 혹시 키서버가 설정되어 있지 않다는 오류가 난다면 설정파일에

keyserver hkp://pgp.mit.edu

라는 줄을 추가해 보세요. [2]

4.1.3.4 키 서버에서 다른 사람의 키 가져오기[편집]

경고
다른 사람의 키를 내려 받았다면 그것이 정확한 키인지 반드시 확인해야 합니다. 이것은 보안상 중요합니다.


다른 사람이 열어볼 수 있도록 암호화를 하려면 그 사람의 공개키가 있어야 합니다. 그러므로 키서버에서 받아봅시다.

gpg2 --search-key 검색할키

으로 메일이나 이름을 넣어서 검색할 수 있습니다. 필요한 항목을 찾았다면 원하는 번호를 넣어 키를 내려받으면 됩니다.

gpg2 --list-key 

를 입력하면 현재 키체인 안에 무슨 키들이 있는지 조회할 수 있습니다. 내가 그 사람의 키를 서명해서 키서버에 업로드 한 적이 없다면 키의 신뢰도가 'unknown' 으로 표기될 것입니다. 이 상태로 사용은 가능하나 경고를 뱉어낼 것입니다.

gpg2 --fingerprint 

를 입력하면 키체인에 있는 키들의 핑거프린트들을 볼 수 있습니다. 상대방에게 신뢰할 수 있는 루트로 키의 핑거프린터가 정확한지 물어보세요. 확인이 끝났다면 상대방의 키를 사인하고 키서버에 업로드 해 줍시다. 이것은 내가 그 키를 확인했고 신뢰할 수 있다는 표시를 공개적으로 하는 것입니다.

gpg2 --sign-key 상대방의_키
gpg2 --send-key 상대방의_키_id

를 하면 됩니다. 상대방의 키 신뢰표기가 'FULL'로 보인다면 성공입니다.

4.1.3.5 파일, 텍스트의 암호화[편집]
4.1.3.5.1 파일의 암호화[편집]
gpg2 --encrypt 암호화할파일.odt

을 하면

You did not specify a user ID. (you may use "-r")
 
Current recipients:
 
Enter the user ID.  End with an empty line: 

라면서 누구를 대상으로 암호화를 할 것인지 물어봅니다. 암호화된 파일을 받을 사람의 메일주소, keyid, 이름 아무거나 넣고 엔터를 눌러줍시다. *끝까지 쓰지 않아도 인식합니다. 암호화 대상은 여러명을 선택할 수 있습파니다. 대상선택이 끝났다면 빈칸채로 엔터를 치면 넘어갑니다. 아무 표시도 나오지 않지만 암호화가 됩니다. 암호화할파일.odt.gpg 가 생긴것이 보이시나요?

4.1.3.5.2 텍스트의 암호화[편집]

터미널에서 직접 텍스트를 적어 넣어서 암호화를 할 수 있습니다. 하지만 한글 입력/삭제에 문제가 있는 경우가 종종 있으므로 텍스트 파일을 만들어서 암호화 하는 방법으로 설명 하겠습니다. 방법은 위와 같지만

gpg2 --armor --encrypt 암호화할.txt 

처럼 --armor 를 붙여줍니다. [3] 참고로 생성된 파일 암호화할.txt.asc는

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2

hQEMAzGqGvQfNcm6AQf+MytdC0VQHWVfwgstFyuLSzg5IJl84H0iImO5jiPxvkyz
rwklcwtpNXQRoHi2UXxgAoGx0L/u+Sh3zRFUFOwiI99gUw+fhjoxVH25hUahJAxN
O3eAh5C6PR+IDLccrD0laWt7m/Vquept668qYw/I68Vie4XUAclJCWvq+xJdeU2Z
giYlRdCPKoUVZfNw4qHZnBcHYHkRGzQTvvlj6meJ1F6J3UDhzuulzADLMWyNdTM3
0fMhL2tghTAdlicSvj6OG4PXGcF9aP2Xk5ZFfAYrKq0jqEDLMCf1itkteZsttLdz
/wKGEvapRJEsPFs1Ukuwujt7pmOEwDdBIu2eFd56jtJFAcS5psbfMufD8AXxbfF4
5um5nxYXyxD6jU7YA59E/l1ZPt6h2if6HSrLoOjq2Za8isOOdntT/8f9RqML50JL
NLBUlZ6k
=Pazz
-----END PGP MESSAGE-----

이런 모양으로 생겼습니다. 아스키 형식으로 출력된 암호문은 어딘가에 (예:블로그, 게시판) 복붙할 sudo있습니다.

4.1.3.6 파일, 텍스트의 복호화[편집]

암호화 하는 법을 알았으면 푸는법도 알아야겠죠?

gpg2 암호화된파일.gpg

라고 입력해 보세요. 네 이게 끝입니다.

4.1.3.7 메일 암호화[편집]

위에서 나온 텍스트를 암호화하는 방법/복호화하는 방법을 이용해 일일이 Ctrl CV해서 할 수도 있지만 너무 귀찮기 때문에 썬더버드의 플러그인으로 자동화 해 봅시다. 우선 당연히 썬더버드가 깔려 있어야 합니다. 데비안 기반이면 sudo apt-get install thunderbird [4] 메일 계정설정, Enigmail 플러그인 설치, 메일 암호화, 서명은 위에 있는 윈도우의 것과 같습니다. 다만 이미 gpg 키를 만들고 서버에도 보냈으므로 그 부분은 넘어가도 됩니다.

4.1.3.8 키 백업, 복원[편집]

GPG의 공개키는 키서버에 업로드 했기 때문에 쉽게 내려받을 수 있지만 개인키는 잘 보관해야 합니다. 개인키를 유실하면 암호화된 데이터를 다시는 열어볼 수 없게 됩니다.

gpg2 --armor --export-secret-keys

를 입력하면 터미널에 PRIVATE KEY BLOCK 이 출력될 것입니다. 이것을 텍스트 파일로 만들어서 안전하게 저장합니다. 나중에 다시 복원할 때는

gpg2 --import 파일이름

하면 복원됩니다. 복원하면 trust: never 로 복원되는데 ultimate상태로 바꿔줘야 합니다.

gpg2 --edit-key 키이름
 
  1 = I don't know or won't say
 2 = I do NOT trust
 3 = I trust marginally
 4 = I trust fully
 5 = I trust ultimately
 m = back to the main menu
Your decision? 5

백업한 키가 복원되었습니다!

4.2 신뢰의 웹을 향하여[편집]

4.2.1 Mac OS X[편집]

4.2.2 Windows[편집]

4.2.2.1 메일 복호화하기[편집]

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

4.2.2.2 메일 서명 확인하기[편집]
4.2.2.3 다른 사람의 키 보증하기(키 서명)[편집]

다른 사람의 키를 서명함은 이 키에 써진 주인과 실제 이 키의 주인은 일치합니다, 즉 이 키는 신뢰 가능합니다를 자신의 이름을 걸고 보증하는 행위입니다.

  1. 서명을 하기 전에, 키에 표시된 이름의 사람이 실제로 소유하고 있는 지 면밀하게 확인합니다. 현실에서 만나서 신본증을 확인한 후, "키 ID가 ????????인 PGP 키가 당신의 키입니까?"라고 질문하면 됩니다.
  2. 앱 매뉴 -> Enigmail -> 키 관리(Y) 메뉴를 누릅니다.
    앱 매뉴 아래 Enigmail 메뉴.png
  3. 서명할 키를 선택하고, 키에 서명 메뉴를 누릅니다.
    키에 서명 메뉴.PNG
  4. 서명에 사용할 키에서 자신의 키를 선택하고, 면밀하게 확인했습니까?라는 질문에는 솔직하게 대답합시다. (대답하기 싫으면 대답하지 않겠습니다를 선택)
    키에 서명하기.PNG
  5. 키 비밀번호를 요구하네요. 입력하고 OK버튼을 누릅니다.
    Enigmail 개인키 잠금해제 비밀번호 입력창.PNG
  6. 이제, 서명한 키를 키 서버에 업로드하면 됩니다. (업로드를 꼭 자기 키만 업로드할 수 있는 건 아닙니다. 다른 사람의 키도 업로드할 수 있습니다.)
4.2.2.4 키 폐기하기[편집]
4.2.2.4.1 폐기 인증서 이용하기[편집]
4.2.2.4.2 개인키/공개키 둘 다 있을 때[편집]

4.2.3 Linux[편집]

5 각주

  1. gpg2.1.x 에서부터 추가된 ECC 키를 사용하고 싶다면 gpg2 --expert --full-gen-key 를 이용하면 됩니다
  2. 필요하다면 다른 키서버를 사용해도 좋습니다. 전세계의 키서버들끼리 약간의 시간을 두고 서로 동기화 됩니다.
  3. 이것은 출력되는 암호문을 base64 로 가공해서 아스키 형식으로 출력하라는 인수입니다.
  4. 정작 데비안은 이 명령어로 설치할 수 없습니다. 데비안이 '썬더버드'라는 이름은 자유가 아니라 모질라재단에 있다는 있다는 이유로, 개명한 'Icedove' 라는 패키지를 설치해야 합니다.