간단 요약
참석자: co, jrand0m, LeerokLacerta, mihi, mrflibble, mrsc, nop, shardy, thecrypto, w0rmus
회의 기록
[22:53] 0) 환영 [22:54] 1) 앱: [22:54] 1.1) IM [22:54] 1.2) NS [22:54] 2) 개발 현황: [22:54] 2.1) 서브시스템들 [22:54] 2.2) 암호화 키 지속성 [22:54] 2.3) 할 일 [22:54] 3) 명세 관련 [22:54] 3.1) 수정사항 [22:54] 4) 관리 사항: [22:54] 4.1) 익명 cvs [22:54] 5) ? [22:55] 좋아요, 0) 환영 [22:55] 58번째 회의에 오신 것을 환영합니다 [22:55] 그게 전부 [22:55] 예, 선생님, 다른 추가할 내용 있는 분? [22:55] * nop은 jrand0m의 번호 매기기가 객체 지향적이라고 눈치챘음 :) [22:56] 3.1.2.2.4.5.8() ;) [22:56] 야, 구조체일 수도 있잖아 ;) [22:56] 하하 [22:56] 정말 그렇지 [22:56] 좋아, 1.1) IM. thecrypto? [22:56] 근데 [22:56] 2에는 상속이 있네 [22:57] ;) [22:57] ㅎㅎ [22:57] 난 신경 쓰지 마 [22:57] 오케이 [22:57] 미안 [22:57] 계속해 [22:57] *** mihi_ (~none@anon.iip)님이 #iip-dev 채널에 참가했습니다 [22:57] 좋아, 지금 IM을 위한 기본 명세를 업로드하고 있어요 [22:58] (Link: http://www.thecrypto.org/i2pim.sxw)http://www.thecrypto.org/i2pim.sxw oowriter용 [22:58] 그리고 pdf 업로드도 진행 중 [22:59] 원하면 i2p 사이트에 올려줄 수 있어 [22:59] 잠시만 [22:59] 좋아 [22:59] *** mrflibble (mrflibble@anon.iip)님이 #iip-dev 채널에 참가했습니다 [22:59] 그걸 i2p/apps/IM/doc/ 에 넣을래? [22:59] *** mihi_ 닉네임이 이제 mihi_backup으로 변경되었습니다 [23:00] 할 수 있어 [23:00] 응 [23:00] cvs에 말한 거였어 :) [23:00] 그것도 내가 할 수 있어 [23:00] (하지만 웹에 올리는 것도 좋아) [23:00] 오 [23:00] 하하 [23:00] (Link: http://www.thecrypto.org/i2pim.pdf)http://www.thecrypto.org/i2pim.pdf [23:01] "the file is damaged and could not be repaired" AR error [23:01] 다시 시도해봐 [23:01] * jrand0m은 문제 없이 열었음 [23:01] MrEcho: 그 PDF 파일? [23:01] (그 sxw) [23:01] 그때는 일부만 업로드됐었어 [23:01] 이제 됨 [23:01] 헤헤 [23:02] 기본적으로 presence 관련 내용, 온라인/오프라인 메시지, 그리고 일반 메시지를 넣었어 [23:02] 부끄럼 없이 I2NP 문서에서 몇 섹션을 베껴왔어 [23:02] :) [23:02] ㅎㅎ 익숙해 보이더라 :) [23:02] 내가 작업해온 UI 업로드도 [23:02] 하고 있어 [23:03] jrand0m: apps/IM/doc 디렉터리를 만들어야 해? [23:03] 응, 그리고 cvs에서 각각 추가해야 해 [23:03] -kb? [23:03] 응 [23:03] thecrypto: apps/는 지금 있을 거라고 봐. [23:04] 프레즌스가 뭐지? [23:05] 업데이트 한 번 돌려볼게 [23:05] 근데 들어가고 있어 [23:05] *** Signoff: shardy (핑 타임아웃) [23:05] 그냥 명세를 마구 까보라는 얘기야 [23:05] 그리고 UI도 곧 올라갈 거야 [23:05] 명확히 해야 할 부분이 있으면 anonymail이나 이메일 뭐든지로 나한테 보내, 고칠게 [23:05] 회의 놓쳤나? [23:05] *** shardy (~shardy@anon.iip)님이 #iip-dev 채널에 참가했습니다 [23:05] thecrypto: 이메일 리스트에도 문서 링크와 함께 공지하는 게 좋을 것 같아. [23:05] 그거 넣었다고 생각했는데? [23:05] 아니요, 아직 첫 번째 항목 중이에요 mrflibble [23:05] mrflibble: 회의 진행 중입니다. [23:05] 아 미안, 'logger'가 안 보여서 [23:06] thecrypto> 너는 그게 destination이라고 했는데, 그게 메시지를 보낼 destination이야? 오프라인 메시지는 어떻게 동작해? [23:06] 여기 mids가 없으니, logger도 없지 ;) [23:06] ㅇㅋ [23:06] * mrflibble 다시 눈팅으로 복귀 [23:06] 아 잠깐, 이건 프레즌스 알림들이네, 미안 [23:06] 프레즌스를 어떻게 구독하지? [23:06] jrand0m: 오프라인 메시지는 없어 [23:07] 기본적으로 [23:07] 프레즌스는 destination과 이름을 함께 묶어주는 것뿐이야 [23:07] 편하게 하려고 [23:08] 그래서 NS로 넘어가도 될까? 이건 나중에 다시 얘기해도 되고? [23:09] 'ㅇㅋ 좋아 [23:09] 그리고 질문은 언제든 메시지로 보내 [23:09] 사실, 짧은 질문 하나 [23:09] 말해봐 [23:09] 그럼 IM은 엄격히 텍스트만? [23:10] 이 기본 버전은 맞아, 하지만 파일 지원을 추가할 거야 [23:10] 좋네 [23:10] 일단 시스템의 기초를 처리하고 그 위에 확장하고 싶어 [23:10] (반복적·점진적)++ [23:11] 좋아, 훌륭해. 난 더 살펴볼게, 다른 분들도 그렇게 해줘요... 자, 이제 1.2) NS로 넘어가죠. co? [23:11] naming service 명세 1.1판(최종)이 오늘 일찍 공개되었습니다. [23:12] (그리고 모두가 크게 환호했죠) [23:12] 기본적으로, 프로그램에 필요한 데이터 구조와 네트워크 메시지 섹션을 마무리했습니다. [23:12] 클라이언트 API는 목요일에 공개할 예정입니다. [23:12] 그리고 NS 애플리케이션 구현을 시작하겠습니다. [23:12] 좋아요 [23:13] 변경된 아이디어 하나는 엔티티가 CA에 등록할 때 CA가 무엇을 하느냐입니다. [23:13] co: 그걸 어떻게 구현할 거야? [23:13] co: 네임 서버야, 아니면 클라이언트? [23:14] thecrypto: 우선 필요한 데이터 구조를 구현할 거예요. [23:14] 그 다음 클라이언트, 그리고 서버와 CA 컴포넌트요. [23:14] 좋아 [23:15] 말했듯이, 이제 CA가 새로 등록된 엔티티에게 인증서를 발급하길 원합니다. [23:15] 레코드를 수정할 때 이 인증서를 네이밍 서버에 제시하게 될 겁니다. [23:15] 이번 버전에는 인증서에 무엇이 포함되는지 명시하지 않았습니다; 그 부분은 다음 버전에 들어갈 겁니다. [23:16] 이게 나쁜 아이디어라고 느껴지는 분 계신가요? [23:16] 흠. 클라이언트가 그냥 공개키/개인키를 쓰는 게 더 간단하고/안전하지 않을까요? [23:16] 즉, 등록 시 업데이트용 공개키를 제공하고 등록을 서명한 다음, 다시 업데이트할 때마다 업데이트에 서명하는 방식이죠 [23:16] (그러면 CA는 절대 개인키를 갖지 않게 되니까요) [23:17] 추신: I2PIM 관련 내용은 모두 cvs 저장소에 커밋됐어요 [23:17] 좋아 [23:17] 그게 더 단순할 수도 있겠네요. 이 이슈를 다시 생각해 보겠습니다. 의견 감사합니다. [23:17] 지금 시점에서 naming service에 관해 제가 말할 건 이게 전부입니다, 다른 질문이 없다면요. [23:18] 좋아 보이네, 아직 1.1은 다 못 봤지만 뭐가 보이면 이메일할게 [23:19] 좋습니다. 다음 주제? [23:19] 좋아, 2.1) 서브시스템 개발 현황. [23:19] *** w0rmus (o0o@anon.iip)님이 #iip-dev 채널에 참가했습니다 [23:20] 전송 서브시스템은 진행하기에 충분히 괜찮음. 피어 관리 서브시스템은 멍청한 알고리즘으로 스텁된 상태지만 동작은 함. 네트워크 DB, tunnel 관리, 그리고 통계 관리 서브시스템은 아직 보류 중. 클라이언트 서브시스템은 단순할 것 (SDK local only router만 재사용) [23:21] '멍청한 알고리즘'이란 게 무슨 뜻이야? [23:21] 안 빨라서? [23:21] 음, 피어 관리 서브시스템이 피어 성능을 추적하지 않고, 그냥 랜덤 피어를 반환하고 있어. [23:22] 진행하면서 알고리즘을 업데이트하고 튜닝해서 더 적절한 피어 선택을 제공할 거야 [23:22] 지금 내 작업은 garlic 메시지를 만들고 처리하는 거라서, 아주 귀찮아(PITA). [23:23] 가능은 한데, 그냥 성가실 뿐 [23:23] 그게 사실 2.2) 암호화 키 지속성으로 이어져. [23:24] garlic 메시지는 ElG+AES 암호화를 사용해 clove들의 레이어를 포장해 [23:24] 그리고 개인키는 다른 곳들(전송, 클라이언트 관리)에서도 쓰여 [23:25] *** Signoff: thecrypto (핑 타임아웃) [23:25] 개인키와 세션 키를 항상 메모리에만 두고 디스크에 절대 쓰지 않는 게 이상적이지만, router가 내려갈 때(의도적이든 오류든)는 최악이야 [23:26] 어떻게 하는 게 좋을지 의견 있어? 1) 키를 디스크에 절대 쓰지 않아서(복호화가 안 되니) 과도한 불필요 메시지 손실 위험을 감수한다 2) 디스크에 쓰기 전에 암호화한다 3) 그냥 평문으로 디스크에 쓴다 [23:26] 옵션 2. [23:27] jrand0m 난 옵션 2, 아니면 예전에 말한 대로 하자 [23:27] 우리는 localhost를 신뢰해야 해 [23:27] *** Signoff: cohesion (수업) [23:27] localhost가 침해되지 않았다고 가정하자 [23:27] 옵션 2의 골칫거리는, router를 시작하려면 사용자가 암구호(pass phrase)를 입력해야 하거나, 아니면 세션 키가 노출될 수 있다는 점이야 [23:27] 좋은 지적이야, nop. [23:28] 우린 전송 레벨이니까, 그 부분에 너무 신경 쓸 수는 없어. 클라이언트 쪽에서 바꾸거나, 옵션을 제공하면 돼 [23:28] 편집증 수준에 따라 [23:28] 보안 대 편의의 균형 [23:29] 그럼 기본은 3으로 하고, 사용자가 2를 선택할 수 있게 하자고 제안합니다. [23:29] 맞아 [23:29] 맞아. 좋아, 사람들이 그 트레이드오프에 맞춰 router 코드를 가져다가 수정할 수 있고(그래야 하고!) — 'tinfoil I2P router'와 'jane sixpack I2P router' [23:29] 좋아, 간단히 지금은 3)으로 가자 [23:30] 좋아 2.3) 할 일 [23:30] * co는 회의 끝에 NS 주제를 다시 다루고 싶어 함. [23:30] * nop은 NS 이메일을 다 읽어야 함 [23:30] 'ㅇㅋ, 이제 네가 항목 #5야 [23:30] 끝까지 기다릴 수 있어요. [23:31] mihi가 SDK 구현에서 몇 가지 버그를 지적하는 테스트를 만들어 줬어. 일부는 이미 고쳤고, 일부는 아직. 고치는 건 할 일 목록에 있어 :) [23:32] 또, 여러 명세에 대략 열두 가지 변경이 있었어. 시간 나면 문서를 업데이트해서 배포할 건데, 그 사이에는 위키에 정오표 페이지를 올릴지도 몰라 [23:33] ㅇㅇ [23:34] 다른 할 일들... 음, 오늘 아침에 'Wrong Size generating key' 문제랑 몇 가지 랜덤 버그를 고쳤어 [23:34] 좋아, 개발 현황은 여기까지. 3) 명세 관련 [23:35] 3.1) 수정사항은 할 일 참조. 대부분 오타 수정이었는데, 오늘 garlic 구현하면서 좀 더 큰 게 하나 나왔어. 문제 될 건 아니고, 데이터 구조를 좀 옮기고 암호화 쪽에서 약간의 요령이 필요해. 그건 정오표에 넣을게. [23:35] 3.2) [알아, 이건 안건에 없었는데, 그냥 넣었어] 명세 질문 [23:35] (잠깐, 필요하면 아직 눈팅 중이야) [23:35] 어떤 명세든 질문 있나요? [23:35] 좋아 shardy [23:36] jrand0m: 어느 명세가 어느 문서에 있는지 다시 알려줘요. [23:37] (Link: http://wiki.invisiblenet.net/iip-wiki?I2PProtocolSpecs)http://wiki.invisiblenet.net/iip-wiki?I2PProtocolSpecs 에 다 매핑해 놨어 [23:37] 살펴볼게요. [23:38] (그걸 보니 secure reliable UDP 전송을 문서화해야 한다는 게 떠오르네. 또 다른 할 일...) [23:39] 어떤 명세를 봐야 하냐는 질문이 여러 사람에게서 있었는데 — 기본적으로, router가 어떻게 동작하는지 알고 싶거나(혹은 구현을 돕고 싶거나) 하지 않으면 I2NP 명세를 읽을 필요는 없어. I2CP와 데이터 구조의 I2CP 섹션이면 충분해 [23:40] jrand0m [23:40] 예, 선생님? [23:41] UDP 패킷 의미의 실제 UDP를 말하는 거야 [23:41] 아니면 일반적인 UDP 프로토콜 의미의 UDP? [23:41] 응, UDP 패킷 의미의 UDP [23:41] I2P용으로 [23:41] *** thecrypt1 (~thecrypto@anon.iip)님이 #iip-dev 채널에 참가했습니다 [23:41] *** thecrypt1 닉네임이 이제 thecrypto로 변경되었습니다 [23:41] i2p/code/router/java/src/net/invisiblenet/i2p/router/transport/udp 구현은 여기 [23:42] 돌아왔어 [23:42] 웰컴백 [23:42] 내가 없는 동안 무슨 일 있었는지 누구 요약 좀? [23:43] UDP 구현은 꽤 단순해 — DH 교환을 하고, 메시지를 1K 패킷으로 나눈 다음 생성된 키로 AES256 암호화해 [23:43] 재키잉은 지원하지만 현재 자동은 아냐 [23:43] ACK는 묶어서 보냄(예: '메시지 42에 대해 패킷 18까지는 다 받았지만 3하고 7은 못 받음') [23:44] (그리고 TCP 구현보다 먼저 UDP 구현을 택한 실용적 이유는, UDP가 거의 0 오버헤드로 '공짜' 비동기 IO를 주기 때문) [23:45] 물론 [23:45] 그 UDP 구현에서 남은 건 두 가지 — MITM 방지를 위해 station-to-station을 넣는 것과, '젠장, 세션 키를 까먹었네'용 패킷을 추가하는 것 [23:45] 좋아 [23:46] UDP 전송 다음으로 구현하고 싶은 건 polling HTTP — 그래서 일반 사용자(UDP)와 방화벽/ NAT/ 프록시 뒤에 있는 사용자(polling HTTP) 모두를 지원하게 될 거야 [23:47] 좋아, 그러니까, 맞아, 그건 명세로 문서화해야 해 :) [23:48] * jrand0m은 명세 쓰기 전에 코딩한 자신을 !thwaps [23:48] 난 명세 전에 코딩하는 게 도움이 돼 [23:48] 그래, 반복적으로 하는 게 제일 잘 맞아 [23:48] (구현하면서 명세의 문제를 찾고 있으니까, 등등) [23:49] 좋아, 3) 명세 끝. 4) 관리 사항 [23:49] 4.1) 익명 cvs. thecrypto? :) [23:49] 정말 딱 맞춰 왔네 [23:49] 음, 살펴보는 중인데, 2401 포트가 지금 막혀 있는 것 같아 [23:49] 로컬에서 cvs -d :pserver:로 할 수 있어? [23:49] 그리고 inetd 쪽으로 할 일이 좀 있을 수도 있어 고마워 jrandom [23:50] 아 굿 [23:50] 테스트해볼게, 그걸 할 수 있다는 걸 깜빡했네 :) [23:51] 그럼 그냥 cvs -d :pserver: 만 하면 돼? [23:51] cvs -d :pserver:anonymous@localhost:/home/cvsgroup/cvsroot/ co i2p [23:52] 그리고 거기에 bugzilla도 올릴 수 있으면 좋겠어 [23:52] acvs [checkout aborted]: connect to localhost(127.0.0.1):2401 failed: Connection refused [23:52] 'ㅇㅋ, inetd.conf 라인 추가하고 kill -HUP identd 했어? [23:52] 그 inet 라인 해보고 다시 알려줄게 [23:52] 아, inetd :) [23:52] 'ㅇㅋ 굿 [23:53] pserver는 같은 줄에 넣는 거야? [23:53] 응, 그건 한 줄에 다 들어가 [23:55] 좋아, 관리 사항은 여기까지, 적어도 내가 생각나는 건 [23:55] 5a) co, 네 차례야 [23:56] 두 사람이 같은 엔티티 이름을 등록하려고 하면, 두 번째 사람은 거절됩니다. [23:56] 하지만 서명 기반 접근을 쓰면, [23:56] 거절당한 사람이 네이밍 서버에 메시지를 보내서 [23:56] 어쨌든 레코드를 수정하라고 지시할 수 있습니다. [23:56] 가능성은 두 가지입니다: [23:57] 1) CA가 승인된 엔티티의 공개키 사본을 네이밍 서버에 보낸다. [23:57] 2) CA가 이름을 등록하는 사람에게 자신의 개인키로 서명한 인증서를 보낸다. 네이밍 서버는 검증을 위해 CA의 공개키를 갖고 있다. [23:58] 악의적인 사용자가 특정 레코드를 수정하라고 네이밍 서버에 지시하더라도, 인증서가 없으면 수정은 되지 않습니다. [23:58] 제가 생각한 건 이겁니다. [23:59] 하지만 그 경우 CA가 키를 알게 되죠 — 비대칭 암호라면 CA는 공개키만 알 뿐이고, 게다가 그 공개키를 다른 누구에게 줄 필요도, 주고 싶지도 않을 거예요 — 그건 진짜 업데이트하는 사람이 업데이트를 요청할 때 서명 검증에만 쓰면 되니까요 [00:00] 당신이 설명한 건 대칭 암호에 더 가까워 보여요 — 본질적으로 암구호(passphrase)를 쓰는 거죠 [00:00] cvs가 나를 괴롭히네! [00:00] (여기서 인증서는 CA와 해당 닉의 진짜 소유자 사이의 공유 비밀이 되는 셈) [00:00] *** mrsc (~efgsdf@anon.iip)님이 #iip-dev 채널에 참가했습니다 [00:01] 무슨 일이야 thecrypto? [00:01] 비밀번호 빈 값으로 anonymous 사용자 추가하고 readers와 cvsgroup에 넣었는데 cvs login: authorization failed: server localhost rejected access to /home/cvsgroup/cvsroot for user anonymous 라고 떠 [00:01] jrand0m: 좋은 지적이에요. 이 부분은 아직 확정되지 않은 걸로 하고, 더 생각해 보겠습니다. [00:01] 굿 [00:01] *** LeerokLacerta (~leerok@anon.iip)님이 #iip-dev 채널에 참가했습니다 [00:02] Konnichiwa. [00:02] 흠 thecrypto, 익명 OS 사용자는 원치 않을 것 같은데 [00:02] 안녕 LeerokLacerta [00:02] 안녕, jrand0m. [00:02] 비밀번호를 붙여 넣었더니 이제 돼 [00:03] jrand0m: 그리고 명세를 읽고 더 제안이 있으면 내게 보내 주세요. [00:03] 그럴게 co [00:03] 좋아 thecrypto.. 그들의 쉘이 /bin/false야? [00:03] 이제 cvs 매뉴얼에서 사용자 만드는 방법 섹션만 찾으면 돼 [00:03] -> *thecrypto* 비번이 뭐야? [00:04] 이제 그래 [00:05] 좋아, 이건 회의 끝나고 같이 보자. [00:05] 좋아, 안건의 마지막 항목: 5b) ? [00:05] 질문 / 생각 / 우려 사항? [00:05] IM 앱만 체크해줘 [00:06] 지금은 트리만 만드는 수준이지만 시작하려는 모습은 보여 [00:06] SOCKS는 없나요? [00:06] 오 맞다 그걸 까먹었네 [00:06] 아 좋네 thecrypto [00:06] SOCKS? 그 프록시 프로토콜 말이지? [00:06] 여기 아이콘 잘 만드는 사람 있어? [00:06] 응. [00:06] 내가 매번 물어봤을 때마다 대답은 '아니오'였어. [00:07] 아. 그래, socks 프록시는 분명 필요할 텐데, 지금 당장 작업하는 사람은 없어. [00:07] 흠. [00:07] 그건 1.0 공개까지 우리가 갖추고 싶은 앱 중 하나가 될 거야. 사람들이 i2p 기반 사이트도 브라우징하고, 일반 웹도 익명으로 브라우징할 수 있게 하려면 [00:07] 무료로 쓸 수 있는 socks 프록시가 충분히 많다고 봐 ;) [00:08] 맞아, 우린 통합만 하면 돼 [00:08]