보이지 않는 것이 최선의 방어: 인터넷 속의 또 다른 인터넷 구축
“나는 대부분의 사람들이 자신을 자유롭게 표현할 수 있도록 이 기술을 원한다고 믿습니다. 그렇게 할 수 있다는 걸 알 때 편안함을 느낍니다. 동시에 우리는 보안과 프라이버시를 바라보는 방식과 그것이 어느 정도로 가치 있게 여겨지는지를 바꿈으로써, 인터넷에서 나타나는 일부 문제들을 극복할 수 있습니다.”
2001년 10월, 0x90 (Lance James)은 꿈을 꾸었다. 그 시작은 “다른 Freenet 사용자들과 익명성, 프라이버시, 보안을 유지하면서 Freenet 이슈를 논의하고 Freenet 키를 교환할 수 있는 실시간 소통에 대한 열망"이었다. 그것은 IIP — the Invisible IRC Project라고 불렸다.
The Invisible IRC Project는 The InvisibleNet을 뒷받침하는 이념과 프레임워크에 기반했다. 2002년의 한 인터뷰에서 0x90은 이 프로젝트가 “지능형 네트워크 기술의 혁신"에 주력하며, “널리 사용되지만 보안상 악명이 높은 인터넷에서 보안과 프라이버시의 최고 수준을 제공하는 것"을 목표로 한다고 설명했다.
2003년까지 이미 Freenet, GNUNet, Tor와 같은 여러 유사한 프로젝트들이 시작되었고, 그중 규모가 큰 것은 Freenet, GNUNet, Tor였다. 이들 프로젝트는 모두 다양한 트래픽을 암호화하고 익명화한다는 폭넓한 목표를 가지고 있었다. IIP에서는 IRC만으로는 충분히 큰 목표가 아니라는 점이 분명해졌다. 필요한 것은 모든 프로토콜을 위한 익명화 계층이었다.
2003년 초, 새로운 익명 개발자 “jrandom"가 프로젝트에 합류했다. 그의 명시적인 목표는 IIP의 범위를 넓히는 것이었다. jrandom은 IIP 코드베이스를 Java로 다시 작성하고, 최근 논문들과 Tor 및 Freenet이 초기 단계에서 내린 설계 결정들을 바탕으로 프로토콜을 재설계하기를 원했다. “onion routing”(양파 라우팅) 같은 일부 개념은 수정되어 “garlic routing”(마늘 라우팅)으로 바뀌었다.
2003년 늦여름 무렵, jrandom은 프로젝트 운영을 맡아 이름을 Invisible Internet Project, 즉 “I2P"로 바꾸었다. 그는 프로젝트의 철학을 개괄하는 문서를 발표하고, 기술적 목표와 설계를 mixnets(믹스넷)와 anonymizing layers(익명화 계층)의 맥락에서 설명했다. 또한 오늘날 I2P가 사용하는 네트워크의 기반을 이루는 두 프로토콜(I2CP와 I2NP)의 사양을 공개했다.
2003년 가을 무렵, I2P, Freenet, Tor가 빠르게 발전하고 있었다. jrandom은 2003년 11월 1일에 I2P 0.2 버전을 릴리스했고, 이후 3년 동안 빠른 릴리스를 이어갔다.
2005년 2월, zzz는 처음으로 I2P를 설치했습니다. 2005년 여름까지 zzz는 zzz.i2p와 stats.i2p를 구축했으며, 이는 I2P 개발의 핵심 리소스가 되었습니다. 2005년 7월, jrandom은 IP 발견 및 방화벽 우회를 위한 혁신적인 SSU (Secure Semi-reliable UDP) 전송 프로토콜을 포함한 0.6 버전을 발표했습니다.
2006년 말부터 2007년에 이르는 기간 동안, jrandom이 초점을 Syndie로 옮기면서 I2P 핵심 개발은 급격히 둔화되었다. 2007년 11월, jrandom이 1년 이상 휴식을 취해야 한다는 수수께끼 같은 메시지를 보내면서 큰 타격이 있었다. 안타깝게도 그 이후로 jrandom에게서 다시는 소식을 듣지 못했다.
재난의 두 번째 단계는 2008년 1월 13일, i2p.net의 거의 모든 서버를 호스팅하던 업체가 정전을 겪고도 서비스를 완전히 복구하지 못했을 때 발생했다. Complication, welterde, 그리고 zzz는 프로젝트를 신속히 복구해 다시 가동하기 위해 i2p2.de로 이전하고 소스 코드 관리를 CVS에서 monotone으로 전환하기로 빠르게 결정했다.
프로젝트는 중앙화된 자원에 지나치게 의존해 왔음을 깨달았다. 2008년 내내 진행된 작업은 프로젝트를 탈중앙화하고 역할을 여러 사람에게 분산했다. 2009년 7월 31일의 0.7.6 릴리스부터 zzz가 이후 49개의 릴리스에 서명했다.
2009년 중반까지 zzz는 코드베이스를 훨씬 더 잘 이해하게 되었고 많은 확장성 문제를 식별했다. 네트워크는 익명화와 검열 우회 기능 모두로 인해 성장을 보였다. 네트워크 내 자동 업데이트가 사용 가능해졌다.
2010년 가을, zzz는 웹사이트 문서가 완성되고 정확해질 때까지 I2P 개발을 일시 중단한다고 선언했다. 3개월이 걸렸다.
2010년부터 zzz, ech, hottuna 및 다른 기여자들은 COVID-19 관련 제한 조치가 시행될 때까지 매년 CCC (Chaos Communications Congress)에 참석했다. 프로젝트는 커뮤니티를 형성하고 릴리스를 함께 기념했다.
2013년, I2P 지원이 내장된 최초의 암호화폐인 Anoncoin이 만들어졌고, meeh와 같은 개발자들이 I2P 네트워크에 인프라를 제공했다.
2014년, str4d가 I2PBote에 기여하기 시작했고 Real World Crypto에서 I2P의 암호화를 업데이트하는 논의가 시작되었다. 2014년 말까지 ECDSA와 EdDSA를 포함한 새로운 전자서명 알고리즘 대부분이 완료되었다.
2015년, I2PCon이 토론토에서 개최되어 강연과 커뮤니티 지원이 있었고, 미국과 유럽에서 온 참석자들이 참여했습니다. 2016년에는 스탠퍼드에서 열린 Real World Crypto에서 str4d가 암호 체계 전환 진행 상황에 대해 발표했습니다.
NTCP2는 2018년(릴리스 0.9.36)에 도입되어 DPI(심층 패킷 검사)를 이용한 검열에 대한 저항성을 제공하고, 더 빠르고 현대적인 암호화 기법을 통해 CPU 부하를 줄였습니다.
2019년에는 팀이 DefCon과 Monero Village를 포함한 더 많은 컨퍼런스에 참석하며 개발자와 연구자들에게 다가갔다. Hoàng Nguyên Phong의 I2P 검열에 대한 연구가 USENIX의 FOCI에 채택되어 I2P Metrics의 구축으로 이어졌다.
CCC 2019에서 Monotone에서 GitLab으로 이전하기로 결정되었습니다. 2020년 12월 10일, 프로젝트는 공식적으로 Monotone에서 Git으로 전환하여 Git을 사용하는 개발자 커뮤니티에 합류했습니다.
0.9.49 (2021)은 수년간의 사양 작업을 마무리하며 routers용 새롭고 더 빠른 ECIES-X25519 암호화로의 마이그레이션을 시작했습니다. 이 마이그레이션은 여러 차례의 릴리스에 걸쳐 진행될 예정이었습니다.
1.5.0 — 앞당긴 기념 릴리스
0.9.x 릴리스를 9년간 이어온 뒤, 프로젝트는 익명성과 보안을 제공하기 위한 거의 20년에 걸친 노력에 대한 인정으로 0.9.50에서 1.5.0으로 바로 넘어갔다. 이번 릴리스는 대역폭을 줄이기 위해 더 작은 tunnel 빌드 메시지 구현을 완료했으며, X25519 암호화로의 전환을 계속했다.
팀 여러분, 축하합니다. 20개 더 해봅시다.