간단 요약
참석자: beefbroth, CCD, ChZEROHag, co, dcat, dm, godmode0, jrand0m, mihi, mihi_backup, mrflibble, Myself248, myself248, nop, pitu, Ryan_Singer, shardy, thecrypto, UserX, yodel
회의 기록
[22:56] 오케이 오케이 [22:56] 안건 [22:56] 0.0) 환영 [22:56] 1.0) 개발 현황 [22:56] 1.1) router [22:56] *** Myself248 (~ident@anon.iip)님이 채널 #iip-dev에 입장했습니다 [22:56] 1.2) DH 사전 계산 [22:56] 2.0) 마이크로 로드맵 [22:56] 3.0) 앱 / 사용 [22:56] 4.0) ns [22:56] 5.0) IM [22:56] 6.0) 잡무(administravia) (cvs, bugzilla, cvs list, cvs web) [22:56] 7.0) 질문 [22:57] (맞아요, 오늘은 7가지. w00t) [22:57] 0.0) 환영 [22:57] 안녕하세요. [22:57] 안녕 [22:57] 오늘 17명. 멋지네 [22:57] *** Ryan_Singer (chatzilla@anon.iip)님이 채널 #iip-dev에 입장했습니다 [22:57] 계속 늘고 있음 [22:57] 오케이 [22:57] 1~hi [22:57] 1.1) router 개발 현황 [22:58] 자바 레퍼런스 구현 router가 아주 잘 돌아가고 있어요 [22:58] *** ChZEROHag (hag@anon.iip)님이 채널 #iip-dev에 입장했습니다 [22:58] 이제 서로 다른 router에서 애플리케이션을 실행하고 서로에게 메시지를 보낼 수 있어요 [22:59] 방해해서 미안, 한 번만 할게 [22:59] 반복적·점진적 접근을 취하고 있고, 현재 상태는 보안은 되지만 익명성은 없고, 확장성도 없으며, 수집 가능한(harvestable) 상태예요 [22:59] C api 작업하는 사람 또 있어요? [22:59] 'lo ChZEROHag, 뭐가 어떻게 돼가? [22:59] 나 하고 있긴 한데, 아주 천천히 [22:59] *** dcat (dirtycat@anon.iip)님이 채널 #iip-dev에 입장했습니다 [22:59] 오 좋네 [22:59] toorcon 끝나면 shardy가 그거 작업할 거야 [22:59] 둘이 같이 해보면 어때? [23:00] jrand0m: 수동으로 메시지를 보낼 destination을 입력할 수 있나요? [23:00] 정확히 말하면, destination의 ASCII 표현이 있나요? [23:00] 그래 co, 둘 다 가능해 [23:00] 훌륭하군요. [23:00] destination과 모든 I2P 구조체는 (대체 알파벳을 쓰는) base64로 로드·직렬화할 수 있어요 [23:01] 그럼 기억하기 쉽진 않겠지만, ASCII이긴 하겠죠? [23:01] (예: 내 router 중 하나의 netDb에는 leaseSet-enD4jtE-orMwFD0QGog9GAyC5MvLvnPzhVD8cDYvSI8.dat가 있는데, 여기엔 destination enD4jtE-orMwFD0QGog9GAyC5MvLvnPzhVD8cDYvSI8의 leaseSet가 들어 있어요) [23:02] [그건 H(destination).toBase64()예요 [23:03] ChZEROHag> 그거 도와줄 수 있는 게 있으면 말만 해요 [23:03] 오케이 1.1 끝. 1.2) DH 사전 계산 [23:03] 대신 해줄 수 있어요? :-) [23:04] 어젯밤에 DH 교환을 위한 사전 계산 최적화를 작성했는데, 세션 협상 1.5초에서 약 1초를 줄여요. 암호학 아는 분이 이게 말이 되는지 한번 봐주면 좋겠어요 ;) [23:04] lol ChZEROHag [23:04] 아아 그게 필요했지 [23:04] netdb 구현 [23:04] 그거 cvs에 있어요? [23:04] 그 DH [23:04] 응 thecrypto [23:05] C:\dev\i2p\code\core\java\src\net\invisiblenet\i2p\crypto\DHSessionKeyBuilder.java [23:05] 음 난 앞으로 3~4시간은 깨어 있을 텐데, 할 일 좀 생기겠군요 [23:05] er, s/C:\\dev/g; s/\\/\//g [23:05] *** wax_off (~nomail@anon.iip)님이 채널 #iip-dev에 입장했습니다 [23:06] 좋아. netdb 구현은 왜 필요한 거죠? [23:06] 기억이 안 나요 [23:06] 현재 cvs에 확장 불가능한 netdb가 있어요 [23:06] ㅎㅎ [23:06] 적어도 일주일은 손도 못 댔어요 [23:06] C I2CP API 작업 중이죠? I2NP는 아니고? [23:07] 그냥 전부 다 하려 했죠 [23:07] *** wax_off 님이 #iip-dev에서 나갔습니다 [23:07] I2NP는 I2CP보다 정말 정말 훨씬 더 많은 작업이에요 [23:07] 제대로 시작만 하면 술술 나올 거예요 [23:07] 근데 C로 I2NP 구현하면 정말 최고죠 [23:07] 지금 I2NP 구현된 게 뭐라도 있나요? [23:07] (I2CP:I2NP::FCP:FNP) [23:07] 있어 dm [23:08] * ChZEROHag가 emacs 최소화 풀음 [23:08] 내가 작업 중인 자바 구현에는 I2NP가 동작해요 [23:08] 좋아요... [23:08] jrand0m: url? 레퍼런스가 필요해요, 언어가 끔찍하더라도요. [23:08] 헤헷 [23:08] 음, 사실 그건 6.0 administravia에요: 즉, 우리의 익명 cvs 접근은 도대체 어디 있냐는 거 ;) [23:09] DH 자료 받는 중 [23:09] 굿 [23:09] 아 맞다 [23:09] jrand0m, 일정으로 돌아가서, 마이크로 로드맵? [23:09] * thecrypto 얼굴을 가림 [23:09] 그럼 기다릴게요 :) [23:09] 헤헷 'k [23:09] 마이크로 로드맵 [23:09] 0.1부터 0.5까지 계획이 있어요 [23:09] freenet 로드맵 따라간 거네요? [23:10] *** mrflibble (mrflibble@anon.iip)님이 채널 #iip-dev에 입장했습니다 [23:10] 0.1) 동작함, 보안됨, 익명성 없음, 확장성 없음, 수집 가능(harvestable) [23:10] 개발이 0.5쯤에서 느려지다가 멈추죠... [23:10] 우리는 지금 0.1이에요. [23:10] 헤헷 그랬지 dm, flinks도 0.5.2에서 뻗었더라 ;) [23:10] 전체 패키지를 뭐라고 부르나요? [23:10] (이상한 우연이지) [23:10] 즉, 뭐의 0.1 버전이죠? [23:10] 전체 패키지? i2p router reference implementation [23:10] co: Wonga [23:10] * beefbroth 회의에 참여함 [23:11] buenos noches beefbroth [23:11] 좋아요. 설명이 되네요. [23:11] 사실 그걸로 부를까. 확실히 'i2pd'보단 더 흥미롭게 들리네 [23:11] 0.1에는 버그가 있어요. 그건 당연하고요. 눈에 띄는 최적화도 없어요(DH 사전 계산은 도움 되지만). [23:11] 헤헷 [23:11] jrand0m, 그럼 0.2는 뭐예요? [23:11] invisible internet police department [23:11] 좋아, 0.2 [23:12] 0.2는 동작함, 보안됨, 익명성 있음, 확장성 없음, 수집 가능 [23:12] 0.2에서는 길이가 0이 아닌 tunnel을 지원해요 [23:12] 사실 어젯밤에 대부분 구현했는데, 아직 충분히 테스트하진 않았어요 [23:12] 0.2는 이번 주말까지 준비될 것 같아요 [23:12] 개발 측면에서 얼마나 남았죠? [23:13] 좋아요 [23:13] 0.3)는 동작함, 보안됨, 익명성 있음, 확장 가능, 수집 가능 [23:13] * thecrypto가 네트워크를 시뮬레이션해서 도움 주려고 bochs를 받음 [23:13] 0.3에는 kademliaDatabaseManager가 추가돼요 [23:13] 현재는 BroadcastDatabaseManager를 쓰고 있어요 [23:13] (일명 gnunet ;) [23:14] 구현은 간단하고 소규모 네트워크에서는 동작하지만, 확장성을 위해서는 Kademlia가 필요해요 [23:14] 0.4)는 동작함, 보안됨, 익명성 있음, 확장 가능, 수집 불가 [23:14] 그때 trusted link를 추가해요 [23:14] jrand0m, Kademlia 구현은 개발 난이도가 얼마나 되나요? [23:14] trusted link에 아이디어가 둘 있어요.. 하나는 구현과 사용이 더 쉬워요 [23:15] Kademlia는 아마 일주일 꽉 찰 거예요 [23:15] (제대로 하려면) [23:15] 이 전부 리팩터링과 튜닝 여지가 많아요. 우선 동작을 목표로 하고, 그 다음에 튜닝할 거예요. [23:16] 그걸 그렇게 빨리 개발하고 테스트할 수 있다고 확신하나요? [23:16] 확실한 건 없어요 [23:16] 그냥 제 추정치예요 [23:16] co, 그가 기능을 만들면 우리가 테스트하죠 [23:16] 확실해요? [23:16] (미안) [23:16] Ryan_Singer: 알겠어요. [23:17] * jrand0m 테스트해주는 사람들 넘 좋아요 :) [23:17] "우리가" 테스트한다는 게, 비코더도 테스트에 참여할 수 있는 데가 있나요? [23:17] Myself248> 아마 0.4 전까지는 어려울 거예요 [23:17] 동작은 하는데 네트워크 내부에서 뭘 어떻게 해야 잘 돌아가는지 아무도 모르는 지경(예: freenet)만은 안 가길 바라요 [23:18] 0.4가 준비되면 그게 프리-알파예요. 0.4가 되면 튜닝하고 리팩터링하고 빈칸 채워서 0.5(알파)를 준비할 거예요 [23:18] 문서화, 문서화, 문서화. [23:18] 네트워크 내부를 적극적으로 모니터링하는 방안은 고려되고 있나요, 아니면 간단한가요? [23:18] 네 dm, 당연하죠 [23:18] I2NP의 핵심 중 하나는 공개되는 routerInfo 구조체에 통계를 포함하는 거예요 [23:18] jrand0m: s/0./0.0./ ;) [23:18] 초기 리비전에서는 실제 통계를 공개해서 튜닝할 수 있게 할 거예요 [23:19] 나중 리비전에서는 통계를 아예 공개하지 않거나 가짜 통계를 공개할 거예요 [23:19] * jrand0m은 0.0 안 함 [23:19] 오케이, 나 왔어 [23:19] 웰컴 백 shardy [23:19] 늦어서 미안, 이 창 열려 있는 걸 까먹었네, 헤헷 [23:19] 좋아요. [23:19] 0.4 단계의 네트워크 아키텍처를 설명하는 상위 문서가 있나요? [23:19] 목을 쳐라 [23:20] Ryan_Singer> 흠, 몇 달 전에 개요 문서가 있었고 mids와 nop가 미러링했죠, 그리고 I2P 개요 문서도 있어요 [23:20] 0.4는 스펙에 설명된 대로 완전한 I2NP예요, 다만 최적 구현은 아니죠 [23:20] 아 그리고 jrand0m, DH 최적화 봐줄게요 [23:20] 좋아, gracias [23:20] 그 문서들 받을 수 있나요? [23:21] 개요는 (Link: http://www.invisiblenet.net/i2p/i2p_philosophy.pdf)http://www.invisiblenet.net/i2p/i2p_philosophy.pdf [23:21] 위키에 있을 거예요 아마? [23:21] 예전 개요 문서들... 흠 [23:21] (i2p 스펙은 (Link: http://wiki.invisiblenet.net/iip-wiki?I2PProtocolSpecs)http://wiki.invisiblenet.net/iip-wiki?I2PProtocolSpecs 에 있어요) [23:21] (Link: www.invisiblenet.net/i2p/.)www.invisiblenet.net/i2p/. 에 있어요. [23:21] 맞아 beefbroth [23:22] 다만 예전에 tunnel이 어떻게 동작하는지 보여주는 못생긴 MS Paint 그림이 들어간 HTML 형식의 옛 문서들도 있어요... [23:22] 제가 알아요, 충분히 많이 읽었거든요 [23:22] 헤헤 [23:22] 그게 더 오래된 버전이거나 미러가 아니라면요. [23:22] 위키에 있는 파일들은 0.9예요(I2NP와 데이터 구조에 대해 0.9.1이 나왔지만, 사소한 변경만 있어요) [23:23] jrand0m: 사전 계산은 좋아 보이네요 [23:23] 굿 [23:24] *** pitu (~pitu@anon.iip)님이 채널 #iip-dev에 입장했습니다 [23:24] * jrand0m이 router를 다음으로 실행함 w/ java -Dcrypto.dh.precalc.min=3 -Dcrypto.dh.precalc.max=10 -Dcrypto.dh.precalc.delay=5000 -jar C:\dev\i2p\code\router\java\src\router.jar [23:25] 오케이, 이게 마이크로 로드맵이에요 [23:25] 보다시피, 이번 달 말까지 알파가 준비되진 않을 거라고 보고 있어요. 0.4는 아마 10월 첫째 주쯤일 거예요 [23:26] 괜찮아요, 그 정도도 이런 유형의 네트워크 구현 중 가장 빠른 편일 걸요 ;) [23:26] lol [23:26] 여기서 jrand0m의 일정 추정을 읽을 때, 지난 4시간 동안 위스키를 마시고 있었다는 걸 기억하세요 :-P [23:26] 헤헷 [23:26] 오케이... 앱/사용? [23:26] 그것도 좋은 위스키 ;) [23:26] 오케이, 앱/사용 [23:27] 4초 후 0.7....3...2...1..!! [23:27] 여기서는 쉬운 것부터 노립니다 - 새로운 코드가 0이거나 최소로 가능한 것들이에요. [23:27] 맑은 정신으로 어떻게 제대로 코딩을 한담? [23:27] 이 모든 건 mihi의 끝내주는 i2ptunnel을 대폭 활용해요 [23:27] ChZEROHag: 아주 쉽지. [23:27] *** mihi 님이 채널 #iip-dev의 주제를 0.7 in 4 seconds....3...2...1..!! 로 변경했습니다 [23:28] i2ptunnel을 사용하면, 새 코드 없이 다음을 할 수 있어요: [23:28] public ww proxy (i2ptunnel + squid 사용) [23:28] * dm이 mihi에게 경의를 표함. [23:28] JAP (i2ptunnel + JAP 사용) [23:28] i2p로는 엉덩이를 걷어찰 수 없어요(tunnel로도 마찬가지...) [23:28] 익명 www 브라우징(i2ptunnel + 웹 브라우저) [23:28] I2P 웹 서버 실행(i2ptunnel + httpd) [23:29] 아주 좋네요. 브라보, mihi. [23:29] cvs 아웃프록시(i2ptunnel) [예: 익명 freenet 개발을 위해 sourceforge로 cvs 아웃프록시] [23:29] cvs 클라이언트, cvs 서버 [23:29] IM 앱, POP3 서버, IMAP 서버, OpenNap [23:29] 이건 전부 정말 손쉬운 것들이에요 [23:29] 좋아, 이제 필요한 건 I2P뿐 :) [23:30] 그렇지 ;) [23:30] i2p 웹서버가 freenet을 어느 정도 대체하는 거 아닌가요? :) [23:30] * jrand0m 이건 자주 묻는 질문(FAQ)으로 답변해야겠다고 생각함 [23:30] jrand0m, 하지만 그것들도 매우 가치 있어요 [23:30] 그 목록 중에서는 cvs가 더 중요/유용하다고 봐요 [23:30] 부분적으로는 익명성을 유지하고 싶기 때문이고, 또 익명 www를 제공하면 luser들이 몰려오니까요 [23:30] i2p + 웹이 freenet을 대체하진 않아요 - freenet은 익명 통신 프레임워크 위에 콘텐츠 배포라는 상당한 가치를 더해요 [23:31] 그리고 지금으로선 익명 이메일은 좀 무섭죠 :) [23:31] * dm이 적음: "no lusers" [23:31] cvs는 확실히 상위 3위 안에 들어요 [23:31] i2p 웹서빙이 잘 된다면, freenet의 DHT/스토리지 부분을 i2p 위에 얹는 걸 고려해야 하고, 그러면 두 세계의 장점을 모두 갖게 되죠. [23:31] ChZEROHag, 그게 확장 가능하면 좋은 일이죠 [23:31] dm: luser들은 초기 단계에서만 문제고, 보통 cvs는 안 써요 [23:31] 좋아요, 익명 이메일 쪽엔 hashcash를 잔뜩 붙이죠. [23:31] 아니, 그건 '남용'이라고 할 만한 걸 막기 위해서는 아니고요 [23:31] 네트워크에 대한 모의 공격은 해야 할 테스트 중 하나라고 생각해요. [23:31] 맞아요 beefbroth, I2P가 목표를 달성하면, freenet도 그에 맞춰 I2P를 활용하게 될 거예요 [23:32] 오프토픽이라면 미안해요. [23:32] Myself248: 그냥 익명 리메일러로 리다이렉트 하나 추가하면 돼요. [23:32] 아니요, 그건 확실히 온토픽이에요 co - 이 네트워크를 공격해보는 게 핵심이죠 [23:32] Myself248: hashcash는 주로 우리가 'irc'라는 고대 프로토콜을 쓸 수밖에 없는 동안 플러딩을 막기 위한 거예요 [23:32] '남용'을 막으려는 건 아니고요 [23:32] 맞아요 mihi. 다만 i2p 위에서 mixminion을 돌리는 것도 유용할 수 있겠죠 [23:33] 맞아요, hashcash는 심지어 I2P 자체에 내장돼 있어서, '대가를 지불'하지 않으면 메시지가 단일 홉으로 배달되지 않게 해요 [23:33] jrand0m, 이 위에 IMAP을 쉽게 올려 돌릴 수 있나요? [23:33] 물론이죠 [23:33] 인상적이네요 [23:33] imapd에 i2ptunnel을 연결하고, 클라이언트에서도 그 tunnel의 destination을 향하도록 i2ptunnel을 쓰면 돼요 [23:34] 그리고 freenet 검색 엔진도요 :) [23:34] ftp나 몇몇 non-jabber 인스턴트 메신저는 문제가 생길 거예요... [23:34] 맞아요, 두 개의 연결이 필요한 것들은 더 복잡하죠 [23:34] jrand0m: I2P에 hashcash요? [23:34] 이거 끝나면 그거로 귀찮게 할게요. [23:34] I2P에 hashcash? 좋네요. [23:34] 우리가 앞서가고 있어! 뭐, 상관없지.. QUAKE + IIP!!!!!! [23:34] 미안, I2p :) [23:34] lol dm [23:35] 저사양 CPU 쓰는 입장에선 hashcash라는 말에 긴장되긴 하는데, 스팸 방지용으로는 이해해요. [23:35] dm: 그건 진짜 너무 앞서갔어. [23:35] * mihi는 jabber:schierlm@a-message.de ;) [23:35] 맞아요 ChZEROHag - Destination == public signing key(DSA) + public encryption key(ElGamal) + certificate(null이거나 hashcash(keys)) [23:35] i2p tunnel이 클라이언트 쪽에서 정적인가요, 동적인가요? [23:35] 지금(atm)은 전부 정적이에요. 하지만 dest로 SOCKS 프록시를 쓸 수 있어요 ;) [23:35] Myself248> 몇 주 안에 끝내주는 Sun Ultra 1을 받을 거예요. 160MHz 박스도 할 수 있으면, 누.구.나. 할 수 있죠 [23:35] 음. hashcash는 저사양 CPU에도 끔찍할 정도는 아니어야 해요. '수억만 번' 하려 할 때만 체감해야죠. [23:36] beefbroth: 동적일 수도 있어요. [23:36] 여기 '쉬운 것들'의 잠재적 응용이 아주 인상적이에요 [23:36] 맞아요 mihi [23:36] "eleventy". 헤헷 [23:36] 쉬운 것들은 본질적으로 '일반' 인터넷 앱인데, 익명으로, 맞죠? [23:36] 맞아요 [23:36] 그렇죠 [23:36] (퀘이크) [23:37] 0.1은 보안적으로, 0.2는 익명으로, 0.3은 확장 가능하게, 0.4는 수집 불가하게 돌려요 [23:37] (우리는 지금 0.1) [23:37] 수집 불가가 무슨 뜻이죠? [23:37] 미안, harvestable이 다시 뭐였죠? [23:37] dm: 불행히도 우린 너무 발목이 잡혀서, 실시간이 30년이 넘었는데도 여전히 '정상'이 아니에요 [23:37] 휴. 누군가 그걸 물어보길 바랐죠. ;) [23:37] 기록 가능하다는 뜻 [23:37] 수집(harvesting)이란, 능동적 공격자가 router를 돌리면서 다른 router들을 잔뜩 알아내('수확'하고), 그들에게 꼬붕들을 보내 문을 부수게 할 수 있다는 뜻이에요 [23:38] 아, gnutella에서 할 수 있는 것처럼. :) [23:38] 정보기관 같은 꼬붕들 [23:38] 맞아요 [23:39] 아, 알겠어요. [23:39] 좋아요, 어쨌든 그게 마이크로 로드맵이에요. [23:40] 그런데, 0.0.x 대신 0.x라고 부르는 게 멍청한 걸까요? 1.0은 '완벽'해야 할까요, 아니면 동작하고 안전하면 될까요? [23:40] jrand0m, 그럼 .4는 언제 보나요? [23:40] 0.4는 아마 2주 뒤일 거예요 [23:40] * jrand0m은 10월 중순쯤 일주일(정도) 쉬어요, 지인이 방문하거든요 [23:40] *** 퇴장: dm (클라이언트에서 EOF) [23:40] 1.0은 안정적이어야 해요. [23:40]