· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
KLDP Code Fest/KSP

KLDPCodeFest의 이벤트로 PGP/GPG Key Signing Party(이후 KSP)를 개최했습니다.
  • 시간: 2004년 7월 18일 13시 (약 1시간 소요 예정)
  • 장소: 서울교육문화회관 크리스탈룸 및 그 앞 복도
이벤트가 끝났습니다. 참가하신 분들은 [http]아래(http://wiki.kldp.org/wiki.php/KLDPCodeFest/KSP#s-4) 나와 있는 대로 실제 사인을 해서 키서버에 업로드해 주세요.


키 목록 내려받기
  • [http]ksp-kldpcodefest.txt(http://people.debian.org/~cwryu/ksp-kldpcodefest/ksp-kldpcodefest.txt) (UTF-8 encoding)
키 모음 내려받기 추가 키 모음 내려받기 결과 분석
1 KSP란 무엇인가? 왜 하는가?
2 참여하시는 분이 준비할 것
2.1 key를 새로 만드셔야 하는 경우
2.2 주의사항
3 행사 절차
4 행사 이후
5 key signing의 의미
6 참고자료
7 질문과 답
8 추가분의 키 데이터를 얻는 법
9 보너스: 숙제 검사? 하는 법

1 KSP란 무엇인가? 왜 하는가? #


키 사이닝 파티(key signing party, KSP)는 PGP/GPG를 사용하는 사람들이 모여서 사람들의 공개키를 자신의 키로 서명(sign)하는 행사입니다. 이 행사를 통해 PGP/GPG 사용자는 [http]web of trust(http://www.rubin.ch/pgp/weboftrust.en.html)를 크게 늘릴 수 있고, 또 자기 PGP/GPG 키의 신뢰도를 크게 높일 수 있는 기회가 됩니다.

또 이 행사는 자칫하면 말 한 마디 안 하고 서먹서먹한 상태로 헤어질 수 있는 오프라인 행사에서 어떤 사람들이 나왔는지 알 수 있고, 행사에 참여한 모든 사람들과 (비록 조금씩이지만) 이야기를 나눌 수 있는 좋은 친목의 기회이기도 합니다.



이 KSP에서는 가능한 빨리 많은 사람들의 키를 확인할 수 있도록 Len Sassaman의 [http]Efficient Group Key Signing Method(http://sion.quickie.net/keysigning.txt)를 사용합니다. (원리가 궁금하시면 읽어보세요. 안 읽어 보셔도 참여하는 데는 지장이 없습니다.)

2 참여하시는 분이 준비할 것 #


  • 참여하고자 하시는 분은 2004년 7월 15일 23시 59분 59초까지 자신의 공개키를 cwryu@debian.org로 메일로 보내 주십시오. 메일의 제목에 "KLDP CodeFest KSP"를 포함해 주십시오
    $ gpg --export -a KeyID > mykey.asc
    
    (키가 없으신 분은 아래를 참고해서 새로 만드십시오.)
    현재 마감되었습니다!! 7월 16일 이후라도 보내 주시거나 이벤트 시작 전에 찾아 주시면 참여할 방법을 만들겠습니다. 하지만 1차 키 목록에는 포함되지 않습니다
  • 진행자는 그때까지 키를 모아서 2004년 7월 16일 10시에 공개키 및 각 공개키의 ID/fingerprint/UID를 열거한 문서 및 키 모음을 공개할 것입니다.
  • 2004년 7월 16일 10시 이후에 [http]ksp-kldpcodefest.txt(http://people.debian.org/~cwryu/ksp-kldpcodefest/ksp-kldpcodefest.txt) 문서 파일을 내려 받으신 다음 그 문서의 ?MD5SUM과 ?SHA1 hash를 계산합니다.
    $ gpg --print-md md5 ksp-kldpcodefest.txt
    $ gpg --print-md sha1 ksp-kldpcodefest.txt
    

  • ksp-kldpcodefest.txt 문서를 인쇄하고 위에서 계산한 ?MD5SUM 및 ?SHA1 hash를 적어 놓습니다.
    cwryu가 계산한 값은 아래와 같습니다. 하지만 아래 값만 보고 쓰지 마시고 꼭 직접 명령을 실행해서 확인하세요!
    $ gpg --print-md md5 ksp-kldpcodefest.txt
    ksp-kldpcodefest.txt: EB C4 1D 6F 10 25 DF 79  8F ED FA 63 62 DF 24 AD
    $ gpg --print-md sha1 ksp-kldpcodefest.txt
    ksp-kldpcodefest.txt: DD26 65CB B1D8 BBDD A32B  80AD AD79 4FD8 5B26 1FCB
    

2.1 key를 새로 만드셔야 하는 경우 #


[http] GnuPG 키 만들기(http://people.kldp.org/~eunjea/wiki/wiki.php/gnupg) 페이지 만들었습니다. -- eunjea 2004-07-06 02:18:48

2.2 주의사항 #


  • 가명이나 ID만 들어 있는 키는 사용하실 수 없습니다! 신분증에 있는 것과 같은 실명이 들어 있는 UID가 들어 있어야 합니다. 이미 만들어 놓은 키에 실명이 없다면 gpg --edit-key 내KeyID 명령으로 편집 모드에 들어가서 adduid 명령으로 실명 UID를 추가하십시오.
    • 한글로 된 신분증밖에 없는데 영문으로 표기한 경우는 허용합니다.
    • 영어로 이름 쓰기 애매하시면 걱정하지 마시고 Real Name을 한글로 쓰셔도 됩니다.
    • 별명이나 ID를 Real Name 부분에 쓰고 싶으시면 Gildong "nickname" Hong이나 홍길동 (nickname)과 같이 쓰시면 됩니다.
  • 반드시 공개키를 공개 키서버에 업로드하십시오.
    $ gpg --send-keys --keyserver wwwkeys.de.pgp.net 키ID
    

3 행사 절차 #


준비물: 필기도구, 위에서 인쇄한 문서, 정부에서 발행한 신분증

(종이와 펜을 사용한다는 가정하에 설명합니다. PDA나 노트북을 사용할 수도 있습니다.)

  1. 미리 준비를 못하신 분들이 참여할 수 있게 시간을 약간 할애할 예정입니다. (하지만 빠른 진행을 위해 꼭 키를 미리 보내 주세요)
  2. 진행자가 앞에서 ?MD5SUM 및 ?SHA1 hash를 읽어 드릴 것입니다. 위에서 준비한 ?MD5SUM과 ?SHA1 hash와 맞는 지 확인하십시오. 확인이 되면 참여하는 사람 모두는 동일한 문서로 작업한다는 뜻입니다. 확인이 끝나면 fingerprint를 개개인이 하나하나 확인할 필요가 없습니다.
  3. 충분한 공간을 확보하고 2열로 마주보고 선 다음 마주본 상대를 확인합니다. 이때 다음 두 가지를 확인해야 합니다.
    1. 상대방이 문서의 checksum과 그 문서 안에 들어 있는 자기 키의 fingerprint를 확인했는 지 여부 (문서에서 Fingerprint OK란에 체크)
    2. 신분증으로 눈앞에 있는 사람이 그 사람이 맞는 지 여부 (문서에서 ID OK란에 체크)
  4. 시계방향으로 돌아가면서 반복

4 행사 이후 #


  • 컴퓨터 앞에 돌아가면 KSP에 참여했던 키를 keyserver에서 가져오거나 위의 ksp-kldpcodefest.asc 및 ksp-kldpcodefest-add.asc 파일을 내려 받아서 import합니다
    $ gpg --import ksp-kldpcodefest.asc
    $ gpg --import ksp-kldpcodefest-add.asc
    

  • Fingerprint OK와 ID OK에 체크하신 키를 서명합니다. 반드시 체크하신 키만 서명하십시오!
    $ gpg --sign-key 키ID
    

  • 원칙은 서명한 키를 해당 사용자에게 메일로 보내고 본인이 키서버에 업로드할 지 결정합니다. 하지만 행사 당일 동의했으므로 바로 keyserver에 업로드합니다.
    $ gpg --send-keys --keyserver wwwkeys.de.pgp.net 키ID
    



  • 메일로 보낼 때는 gpg-mailkeys 스크립트를 사용하시면 편리합니다. [http]http://packages.debian.org/testing/misc/signing-party
  • 다른 분들로부터 서명을 받으면 gpg --import 명령으로 그 서명을 자기 키에 추가한 다음, 많은 사람들이 알 수 있도록 gpg --send-keys 명령으로 키 서버에 업로드합니다.

5 key signing의 의미 #


PGP/GPG가 하는 일은 크게 두 가지입니다. 하나는 암호화이고 또 하나는 인증입니다.

암호화는 내가 보내는/받는 정보를 다른 사람이 도청하더라도 알 수 없도록 암호화하는 기능입니다.
  • 연애편지에 들어 있는 데이트 스케줄을 연적이 알지 못하도록 해야 하겠고,
  • 지난달에 카드를 몰래 얼마나 썼는지 청구서가 날아왔는데 와이프가 알아채면 곤란하고,
  • 전쟁중인데 폭격 계획을 적이 눈치채면 안 될 것입니다.
--encrypt--decrypt 명령이 그런 기능을 합니다.
  • mutt/Mozilla Thunderbird/Ximian Evolution 등 전자메일 클라이언트에는 GPG로 암호화된 메일을 주고 받는 기능이 있습니다.
인증은 내가 보내는 정보가 내가 보냈다는 사실을 증명하고, 또 내가 받은 정보가 진짜로 그 사람에서 왔는지 확인하는 기능입니다.
  • 위에 있는 연적이 나를 사칭해서 데이트 스케줄을 바꾸는 일이 없어야 겠고,
  • 혹시라도 와이프가 내 계좌에 로그인해서 이번달에 카드대금이 빠져나간 사실을 볼 수 없어야 겠고,
  • 적이 아군의 최고통수권자를 사칭해 아군 지역에 폭격 명령을 내리는 일이 없어야 할 것입니다.
--sign---verify 명령이 그런 기능을 합니다.
  • mutt/Mozilla Thunderbird/Ximian Evolution 등 전자메일 클라이언트에는 메일을 GPG로 서명하고, 서명을 확인하는 기능이 있습니다.
  • 리눅스의 경우 FTP 사이트에 *.sign이 붙어 있는 파일을 볼 수 있습니다. 여기 들어 있는 서명을 이용해 이 파일이 오리지널 커널 아카이브에서 나온 파일이고 조작되지 않았는지 여부를 확인할 수 있습니다.
  • 데비안은 패키지를 업로드할 때 checksum이 들어 있는 파일을 메인테이너의 GPG key로 서명해서 잘못된 업로드를 막습니다.


GPG가 인증부분에 있어서 문제점이라면, 누구나 어떤 이름으로든 키를 만들 수 있다는 점입니다.
  • 만약 연적이 저를 사칭해 "아 지금 내가 GPG key를 잃어버려서 sign을 할 수가 없다. key를 바꿔야 겠다. 핑거프린트는..." 이라고 한다면 그게 정말 제가 key를 잃어버려서 한 말인지, 연적이 저를 사칭하는 것인지 어떻게 알 수 있을까요?
이런 경우에는,
  • 이미 잘 알고 있는 사람이라서 목소리로 확인할 수 있다면 전화로 확인할 수도 있겠고,
  • 잘 모르는 경우라면 직접 만나서 신분증의 사진을 대조해 보고 확인할 수도 있을 것이고,
  • 누군가 Scream에 나오는 음성변조기나 Mission Impossible에 나오는 위조여권을 가지고 고무가면을 쓰고 나올 가능성이 있다면, 다른 확인도 해야 할 지 모릅니다. :-)
확인을 했을 때 키를 서명합니다 (key signing). 자신의 키로 상대방의 키를 서명하는 것인데, 그 의미는 이 사람은 내가 알고 있는 그 사람이 맞는지 확인했다라는 뜻입니다. 그리고,
  • 내가 직접 서명한 키를 신뢰,
  • 내가 직접 서명한 키가 (제대로 서명할 거라고 생각되면) 서명한 키를 신뢰,
이런 식으로 나가다 보면 신뢰할 수 있는 키의 범위가 커지는데, 그걸 web of trust라고 합니다. (컨트롤이나 독점이 없는 순수한 풀뿌리 PKI입니다.)



6 참고자료 #


7 질문과 답 #

DeleteMe 이 행사는 꼭 KLDPCodeFest에서만 할 수 있는 행사는 아니니 ?KeySigningParty 라는 좀더 일반적인 이름의 페이지로 독립시켜서 작성하는 것이 어떨까요? -- 권순선
일반적인 정보라고 하기는 좀 어려운데요... 필요하다면 일반적인 정보를 추가하겠지만, 일단은 이번 행사에 어떻게 해야 할 지에 대한 정보를 담을 예정입니다. -- cwryu

공개키 서버에 공개키를 업로드 했는데. 나중에 공개키를 서버에서 지울 수 있습니까? --pyrasis
못 합니다. 공개키를 무효로 만드려면 revoke 인증서를 서버에 올리면 됩니다. 하지만 완전히 지울 수는 없습니다. --cwryu

은재님의 위키를 따라 공개키를 만들었습니다. 서버에도 올렸고, 이메일도 보냈습니다. 헌데, 이 공개키를 만든 컴퓨터를 가지고 코드페스트에 참여하지 않을거거든요.. 회사 컴이라.. 제 노트북을 가져가야되는데.. 아무 상관없는건가요?? 이럴땐 어떻게 하는건가요?? -- kwon37xi
다른 컴퓨터에서 이용하려면 개인키를 백업한 다음 import하면 됩니다. 꼭 그런 경우가 아니더라도 키를 잃어버리지 않게 백업해 두는 것이 좋습니다.
gpg --list-secret-key
하면 자기가 가진 키 목록이 나올 것이고 그 중에서 하나를 골라 다음 명령으로 백업합니다.
gpg --export-secret-key -a 키ID > mysecretkey.asc
이 파일을 다른 컴퓨터에서 이용하려면 파일을 해당 컴퓨터로 옮긴 다음 {{--import}}} 명령으로 가져옵니다.
gpg --import mysecretkey.asc
행사 당일에는 직접 키를 사인할 필요는 없기 때문에 (시간도 좀 부족하고) 개인키를 꼭 가져오실 필요는 없겠지만, 할 때 한번에 하는 것도 기분이 나겠지요? :) --cwryu

공개키서버에 업로드에 하는 것 관련 질문입니다.

행사전에
$ gpg --send-keys --keyserver wwwkeys.de.pgp.net KeyID
행사후에
$ gpg --send-keys --keyserver wwwkeys.pgp.net 키ID

이렇게 두 번 업로드 하는 건가요? 그리고 행사전과 행사후의 keyserver 주소가 하나는 .de가 들어가 있고 하나는 빠져 있는데 그게 같은 서버인지도 궁금합니다. --세벌
하나는 자기 키를 업로드하는 거고 뒤에는 사인한 남의 키를 업로드하는 거죠. wwwkeys.pgp.net 연결이 안 좋아서 wwwkeys.de.pgp.net으로 바꾸어 놓았는데 공용 키서버들은 서로 데이터를 교환하기 때문에 어떤 서버를 써도 상관없습니다.
나중에 추가분의 키를 등록하신 분들의 키 데이터가 없습니다. 받을 수 있도록 해주세요 cwryu님.
올렸습니다 --cwryu

8 추가분의 키 데이터를 얻는 법 #

다음 명령으로 KSP에 늦장 참여한 사람들의 gpg 키를 받을 수 있습니다. 예컨데 제(cdpark) 키를 받으시려면
$ gpg --keyserver wwwkeys.de.pgp.net --recv-keys 25E4C066
라고 치면 됩니다.


추가로 KSP에 참가한 6명의 GPG key ID입니다.
F77115D9 yongbin@...com
DBB76C7A ddoman@...com
25E4C066 cdpark@...com
F37C8D18 envia@...com
C7A9B1C7 idkiller@...com
82E2B7A1 mithrandir@...net

wwwkeys.de.pgp.net에만 등록한 분도 있고, wwwkeys.pgp.net에만 등록한 분도 있으니 두 곳 모두에게 물어보면 확실하겠죠? 귀찮겠죠? 한꺼번에 다 받으려면...
$ gpg --keyserver wwwkeys.de.pgp.net --recv-keys F77115D9 DBB76C7A 25E4C066 F37C8D18 C7A9B1C7 82E2B7A1
$ gpg --keyserver wwwkeys.pgp.net --recv-keys F77115D9 DBB76C7A 25E4C066 F37C8D18 C7A9B1C7 82E2B7A1
라고만 쳐 주세요.

현재(2004-7-18 21:50) mithrandir 님의 키가 키서버에 올라가 있지 않습니다. 제가 올린 키 자료가 변조(!) 되었을지도 모르니 fingerprint를 반드시 확인하세요.

-- cdpark
앗 키 올리는것을 깜빡 했군요. 지금 막 올렸습니다. -- mithrandir

9 보너스: 숙제 검사? 하는 법 #

$ gpg --keyserver wwwkeys.de.pgp.net --recv-keys keyID
$ gpg --list-sigs keyID
라고 치면 자신의 key에 대해 사인한 사람 목록을 볼 수 있습니다. (역시 두 서버를 번갈아가면서 확인해보세요.)
-- cdpark

See also KLDPCodeFest



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2004-11-10 11:18:56
Processing time 0.0048 sec