GGWiki
새 문서
일반/위키

하이퍼넷

공식 자료를 바탕으로 AI가 작성한 초안 · 출처 보기

편집 이의 제기 토론 수정 이력 토론에서 언급
하이퍼넷 로고
하이퍼넷 로고 · 이미지 출처 ↗

개요편집이의 제기

하이퍼넷(Hyphanet)은 검열에 저항하는 익명 통신을 위한 피어 투 피어(P2P) 플랫폼이다. 2023년 중반까지 프리넷(Freenet)이라는 이름으로 알려졌으며, 이안 클라크(Ian Clarke)가 에든버러 대학교 재학 중이던 1999년 여름 졸업 프로젝트로 처음 설계했다. 클라크는 "분산 자립형 정보 저장 및 검색 시스템(A Distributed Decentralised Information Storage and Retrieval System)"이라는 미발표 보고서에서 프리넷의 기초 개념을 제시했으며, 이는 2001년 공동 연구 논문 "Freenet: A Distributed Anonymous Information Storage and Retrieval System"으로 발전했다. 이 논문은 2002년 가장 많이 인용된 컴퓨터 과학 논문 중 하나가 되었다[1][2][3].

하이퍼넷은 사용자들의 컴퓨터에 작은 암호화된 콘텐츠 조각을 분산 저장하고, 중간 노드들을 통해서만 요청을 전달함으로써 인터넷상에서 익명성을 제공한다. 이는 인터넷 라우터가 패킷을 라우팅할 때 파일 내용에 대해 알지 못하는 것과 유사하지만, 하이퍼넷은 캐싱, 강력한 암호화 계층, 중앙 집중식 구조에 대한 비의존성이라는 특징을 가진다[3]. 이를 통해 사용자는 익명으로 정보를 발행하거나 다양한 종류의 정보를 검색할 수 있다. 하이퍼넷의 분산 데이터 저장소는 서드파티 프로그램과 플러그인들이 마이크로블로깅, 미디어 공유, 익명 분산 버전 추적, 블로깅, 분산 스팸 저항을 위한 일반화된 신뢰망, 그리고 스니커넷을 통해 하이퍼넷을 이용하는 슈샵(Shoeshop) 등의 기능을 제공하는 데 사용된다[3].

프로젝트는 2000년부터 지속적으로 개발되어 왔으며, 자바(Java)로 작성되어 자바 가상 머신(JVM) 위에서 구동된다. 마이크로소프트 윈도우, macOS, GNU/리눅스, POSIX 호환 운영체제를 지원한다. 라이선스는 GNU GPL, MIT, FreeBSD, 아파치 2.0 등 여러 오픈소스 라이선스가 혼용된다[1]. 공식 웹사이트는 "1999년부터 프라이버시 보호"라는 슬로건을 내걸고 있으며, 글로벌 오픈넷(Opennet)에 참여하거나 친구들과 프렌드 투 프렌드(Friend-to-Friend) 네트워크를 구성하여 최대 프라이버시를 확보할 수 있다고 안내한다[4].

역사편집이의 제기

기원과 초기 개발 (1999~2000)

하이퍼넷의 기원은 이안 클라크의 에든버러 대학교 학생 프로젝트로 거슬러 올라간다. 클라크는 1999년 여름 졸업 필수 요건으로 이 프로젝트를 완수했다[2][3]. 2000년 7월 25일 첫 공개 버전이 릴리스되었으며, 이후 지속적인 개발이 이어졌다[1][2][3]. 초기 버전은 휴리스틱 라우팅 알고리즘을 사용했는데, 각 노드가 고정된 위치를 가지지 않고 요청이 성공할 때 다운스트림 노드와의 연결을 추가하며, 오래된 연결은 LRU(Least Recently Used) 방식으로 제거하는 방식이었다. 오스카르 산드베르그(Oskar Sandberg)의 연구에 따르면 이 "경로 접기(path folding)" 메커니즘이 라우팅 효율성에 결정적이었다[3].

버전 0.7: 다크넷 지원과 대대적 재작성 (2008)

2008년 5월 8일 릴리스된 프리넷 0.7은 수많은 근본적 변경사항을 포함한 대대적 재작성이었다. 가장 근본적인 변경은 다크넷(Darknet) 운영 지원이다[2][3]. 버전 0.7은 두 가지 운영 모드를 제공했다:

* 오픈넷(Opennet) 모드: 기존 알고리즘과 유사하지만 단순화된 방식으로, 임의의 다른 사용자들과 연결한다.

* 다크넷(Darknet) 모드: 사용자가 미리 공개 키(노드 레퍼런스)를 교환한 "친구"들과만 연결한다. 모든 노드 연결이 수동으로 설정되므로, 멀리 있는 공격자가 노드를 발견하기 훨씬 어렵다.

두 모드는 동시에 실행할 수 있으며, 사용자가 순수 다크넷 모드로 전환하면 외부에서 하이퍼넷 트래픽을 탐지하기 매우 어려워진다. 다크넷 모드를 위해 생성된 전송 계층은 메쉬 네트워크에서 흔히 볼 수 있는 제한된 경로 상의 통신도 가능하게 하며, 이 연결들이 스몰월드 구조를 따르는 한 작동한다. 또한 TCP에서 UDP로 전환하여 UDP 홀 펀칭을 지원하고 피어 간 메시지 전송 속도를 높였다[3].

버전 0.7.5 및 후속 빌드 (2009~현재)

2009년 6월 12일 릴리스된 프리넷 0.7.5는 0.7 대비 다양한 개선을 담았다. 메모리 사용량 감소, 콘텐츠 삽입 및 검색 속도 향상, FProxy 웹 인터페이스 대폭 개선, 다수의 버그 수정, 성능 향상, 사용성 개선이 포함되었으며, 새로운 버전의 윈도우 인스톨러가 함께 제공되었다[3].

이후 주요 빌드 이정표는 다음과 같다[3]:

* 빌드 1226 (2009년 7월 30일): 네트워크 상의 공격자와 노드 실행 컴퓨터의 물리적 압수 양쪽에 대한 중요한 보안 개선 사항이 작성됨.

* 빌드 1468 (2015년 7월 11일): 하이퍼넷 코어가 db4o 데이터베이스 사용을 중단하고, 스팸 저항을 제공하는 Web of Trust 플러그인을 위한 효율적인 인터페이스 기반을 마련함.

* 2011년 이전까지: 사용자가 자바를 별도 설치해야 했으나, OpenJDK(자바 플랫폼의 자유 오픈소스 구현)와 호환되도록 수정되어 이 문제가 해결됨.

* 2015년 2월 11일: "전방위적 감시로부터의 보호" 공로로 SUMA 어워드(SUMA-Award) 수상[2][3].

명칭 변경: 프리넷에서 하이퍼넷으로 (2023)

2023년 중반, 프로젝트 명칭이 프리넷(Freenet)에서 하이퍼넷(Hyphanet)으로 변경되었다[2][3][4]. 공식 사이트는 "원래 프리넷 팀이 하이퍼넷이라는 이름으로 개발을 계속한다"고 명시하며, 기존 '프리넷'이라는 이름은 별도 프로젝트(Locutus)가 사용하게 되었다고 설명한다[4]. 학술 및 기술 문헌 중 명칭 변경 이전에 발행된 것은 일반적으로 이 시스템을 프리넷이라고 지칭한다[3].

최신 릴리스 (2025~2026)

공식 사이트 뉴스 아카이브에 따르면 2025년 7월 빌드 1502/1503(취약점 수정, 가시성 개선, 애니메이션 WebP 지원, 편의성, 최적화), 2026년 2월 빌드 1504/1505/1506(취약점 수정, 라우팅 최적화, 정리, 유지보수), 2026년 9월 빌드 1507(프로브, 라우팅, 플러그인, 업킵 수정 및 시작 시간 단축, 프라이버시 개선) 등이 릴리스되었다[4]. 위키데이터에는 0.7.5 빌드 1476, 1473, 1481, 1484, 0.3.3, 0.7.0, 0.5.2.1, 0.5.2 등이 최신 판으로 기록되어 있다[1].

기능편집이의 제기

분산 데이터 저장 및 검색

하이퍼넷의 핵심 기능은 문서를 저장하고 연관된 키를 통해 나중에 검색할 수 있게 하는 것이다. 이는 HTTP 같은 프로토콜에서 가능한 것과 유사하다[2][3]. 네트워크는 매우 높은 생존력을 갖도록 설계되었으며, 중앙 서버가 없고 시스템 설계자를 포함해 어떤 개인이나 기관의 통제도 받지 않는다[2][3].

정보는 네트워크를 통해 분산되어 여러 다른 노드에 저장된다. 데이터 암호화와 요청 릴레이(relaying)는 누가 콘텐츠를 삽입했는지, 누가 요청했는지, 어디에 저장되었는지를 파악하기 어렵게 만든다. 이는 참여자의 익명성을 보호하고 특정 콘텐츠 검열을 어렵게 만들며, 심지어 노드 운영자조차 해당 노드에 무엇이 저장되어 있는지 결정하기 어렵게 만든다[2][3]. 콘텐츠는 암호화되어 저장되므로 노드 운영자가 저장된 내용을 알기 어렵고, 이는 "합리적 부인(plausible deniability)"을 제공한다. 요청 릴레이와 결합되어 서비스 제공자를 보호하는 세이프 하버 법이 하이퍼넷 노드 운영자에게도 적용될 수 있다. 개발자들은 "아무것도 필터링할 수 없는 것이 안전한 선택"이라는 EFF의 논의를 인용한다[3].

분산 저장 및 캐싱

위니(Winny), 쉐어(Share), 퍼펙트 다크(Perfect Dark)처럼 하이퍼넷은 노드 간 데이터 전송뿐만 아니라 실제 데이터 저장소 역할을 수행하여 거대한 분산 캐시로 작동한다[3]. 각 노드는 디스크 공간의 일부를 데이터 저장에 할당하며, 이는 노드 운영자가 설정 가능하지만 일반적으로 수 GB 이상이다[3].

파일은 일반적으로 여러 작은 블록으로 분할되며, 중복 블록이 생성되어 이중화를 제공한다. 각 블록은 독립적으로 처리되므로 단일 파일의 부분들이 많은 다른 노드에 분산 저장될 수 있다[3].

정보 흐름은 eMule이나 비트토렌트(BitTorrent) 같은 네트워크와 다르다[3]:

1. 사용자가 파일이나 프리사이트 업데이트를 공유하려면 파일을 네트워크에 삽입(insert)한다.

2. 삽입이 완료되면 발행 노드는 오프라인 상태가 되어도 된다. 파일은 네트워크에 저장되어 원래 발행 노드의 온라인 여부와 관계없이 다른 사용자들이 이용할 수 있다. 어떤 단일 노드도 콘텐츠에 대해 책임지지 않으며, 대신 많은 다른 노드에 암호화된 블록으로 복제되어 저장된다.

3. 이 설계의 두 가지 장점은 높은 신뢰성과 익명성이다. 정보는 발행 노드가 오프라인되어도 이용 가능하며, 암호화된 블록으로 많은 호스팅 노드에 익명으로 분산된다.

4. 저장 방식의 주요 단점은 어떤 노드도 데이터 청크에 대해 책임지지 않는다는 점이다. 데이터가 일정 시간 동안 검색되지 않고 노드가 새 데이터를 계속 받으면, 할당된 디스크 공간이 가득 찰 때 오래된 데이터를 삭제한다. 이렇게 하이퍼넷은 정기적으로 검색되지 않는 데이터를 '잊어버리는(forget)' 경향이 있다(효과 참조).

5. 사용자는 데이터를 네트워크에 삽입할 수 있지만, 데이터를 삭제할 방법은 없다. 하이퍼넷의 익명성 때문에 원래 발행 노드나 데이터 소유자가 알려지지 않기 때문이다. 데이터가 제거되는 유일한 방법은 사용자들이 더 이상 요청하지 않는 것이다.

네트워크 구조 및 프로토콜

일반적으로 네트워크 상의 호스트 컴퓨터는 노드 역할을 하는 소프트웨어를 실행하며, 같은 소프트웨어를 실행하는 다른 호스트들과 연결되어 대규모 분산 가변 크기의 피어 노드 네트워크를 형성한다[3]. 일부 노드는 문서를 요청하고 인간 사용자에게 제시하는 최종 사용자 노드이고, 다른 노드는 데이터 라우팅만 담당한다. 모든 노드는 동일하게 통신하며 전용 "클라이언트"나 "서버"가 없다[3]. 노드는 키와 연관된 데이터를 삽입하고 가져오는 능력 외에는 다른 노드를 평가할 수 없다. 이는 사용자가 다운로드 전에 일정량의 콘텐츠를 공유해야 하는 비율 시스템(ratio system)을 사용하는 대부분의 다른 P2P 네트워크와 다르다[3]. 하이퍼넷은 스몰월드 네트워크(small world network)로 간주될 수도 있다[3].

하이퍼넷 프로토콜은 인터넷(인터넷 프로토콜) 같은 복잡한 토폴로지의 네트워크에서 사용되도록 의도되었다. 각 노드는 직접 도달할 수 있는 일부 다른 노드(개념적 "이웃")에 대해서만 알지만, 어떤 노드도 다른 노드의 이웃이 될 수 있으며 계층이나 다른 구조는 의도되지 않았다[3]. 각 메시지는 이웃에서 이웃으로 전달되어 목적지에 도달할 때까지 라우팅된다. 노드가 메시지를 이웃에게 전달할 때, 그 이웃이 메시지를 다른 노드로 전달할지, 최종 목적지인지, 원래 소스인지 알 수 없다. 이는 사용자와 발행자의 익명성을 보호하기 위함이다[3].

각 노드는 키와 연관된 문서를 포함하는 데이터 저장소와, 다른 키를 검색하는 데 있어 노드들의 성능 기록을 연관시키는 라우팅 테이블을 유지한다[3].

#### 라우팅 알고리즘의 진화

하이퍼넷 프로토콜은 분산 해시 테이블(DHT)과 유사한 키 기반 라우팅 프로토콜을 사용한다. 라우팅 알고리즘은 버전 0.7에서 크게 변경되었다[3]:

* 버전 0.7 이전: 휴리스틱 라우팅 알고리즘 사용. 버전 0.3에서는 요청 중인 키에 가장 가까운 키를 서비스한 노드 기반으로, 버전 0.5에서는 더 빠르게 서비스할 것으로 추정되는 노드 기반으로 라우팅이 수행되었다. 두 경우 모두 요청 성공 시 다운스트림 노드(요청에 응답한 노드)와의 새 연결이 추가되고, 오래된 노드는 LRU 순서로 제거되었다.

* 버전 0.7 이후: 오픈넷(기존 알고리즘과 유사하지만 단순화)과 다크넷(모든 노드 연결이 수동 설정)을 모두 지원. 이 변경은 라우팅 알고리즘의 대대적 수정을 요구했다. 이제 모든 노드는 0과 1 사이의 숫자인 위치(location)를 가진다. 키가 요청되면 먼저 로컬 데이터 저장소를 확인하고, 없으면 키의 해시를 같은 범위의 다른 숫자로 변환하여 키에 가장 가까운 위치를 가진 노드로 요청을 라우팅한다. 이 과정은 일정 홉 수를 초과하거나, 검색할 노드가 더 없거나, 데이터를 찾을 때까지 계속된다. 데이터가 발견되면 경로상의 각 노드에 캐시된다. 따라서 키에 대한 단일 소스 노드가 존재하지 않는다[3].

다크넷 모드는 원거리 공격자에 대해 훨씬 더 안전하지만 편의성은 낮다. 오픈넷 모드에서는 모든 노드가 지속적으로 새 연결을 찾으려 시도하므로 공격자가 하이퍼넷 노드를 발견하고 연결하기 매우 쉽다[3].

사용자 인터페이스 및 접근 방식

하이퍼넷은 기저 네트워크 구조와 프로토콜을 사용자가 네트워크와 상호작용하는 방식으로부터 분리한다. 그 결과 하이퍼넷 네트워크의 콘텐츠에 접근하는 다양한 방법이 존재한다[3].

가장 단순한 방법은 FProxy를 통하는 것이다. FProxy는 노드 소프트웨어에 통합되어 있으며 네트워크 콘텐츠에 대한 웹 인터페이스를 제공한다. FProxy를 통해 사용자는 프리사이트(freesite)를 탐색할 수 있다. 프리사이트는 일반 HTML과 관련 도구를 사용하지만 콘텐츠가 기존 웹 서버가 아닌 하이퍼넷 내에 저장된 웹사이트다[3]. 웹 인터페이스는 대부분의 설정 및 노드 관리 작업에도 사용된다[3].

별도 애플리케이션이나 노드 소프트웨어에 로드되는 플러그인을 통해 사용자는 웹 포럼이나 유즈넷(Usenet)과 유사한 포럼, 또는 전통적인 P2P "파일 공유" 인터페이스와 더 유사한 인터페이스 등 다른 방식으로 네트워크와 상호작용할 수 있다[3].

하이퍼넷은 프리사이트 탐색을 위한 HTTP 인터페이스를 제공하지만, 월드 와이드 웹의 프록시는 아니다. 하이퍼넷은 이전에 하이퍼넷 네트워크에 삽입된 콘텐츠에만 접근할 수 있다. 이 점에서 토르(Tor)의 어니언 서비스(Onion Services)와 더 유사하며, 토르의 프록시 같은 익명 프록시 소프트웨어와는 다르다[3].

보안 모드: 오픈넷과 다크넷

버전 0.7부터 하이퍼넷은 두 가지 다른 보안 수준을 제공한다[2][3]:

* 오픈넷(Opennet): 사용자가 임의의 다른 사용자들과 연결한다. 편의성이 높지만 공격자가 노드를 발견하기 쉽다.

* 다크넷(Darknet): 사용자가 이전에 공개 키(노드 레퍼런스)를 교환한 "친구"들과만 연결한다. 편의성은 낮지만 원거리 공격자에 대해 훨씬 안전하다.

두 모드는 함께 사용할 수 있다[2][3]. 순수 다크넷 모드로 전환하면 외부에서 하이퍼넷을 탐지하기 매우 어려워진다[3].

플러그인 및 서드파티 애플리케이션

하이퍼넷 위에서 동작하는 다양한 도구와 애플리케이션이 개발되었다[2]:

#### 커뮤니케이션

* FMS (Freenet Messaging System): 하이퍼넷상의 메시징 시스템.

* 프로스트(Frost): 대표적인 프론트엔드 중 하나로, 포럼/게시판 기능 제공.

* Sone: 소셜 네트워킹 기능(마이크로블로깅, 팔로우 등) 제공.

#### 유틸리티

* jSite: 프리사이트 생성 및 관리 도구.

* Infocalypse: 버전 관리 시스템(머큐리얼 등)을 하이퍼넷 위에서 사용하기 위한 도구.

#### 라이브러리

* FCPLib: 하이퍼넷 클라이언트 프로토콜(FCP) 라이브러리.

* lib-pyFreenet: 파이썬용 하이퍼넷 라이브러리.

프리사이트 (Freesite)

프리사이트는 하이퍼넷 네트워크에서 호스팅되는 사이트를 말한다[2]. 정적 콘텐츠만을 포함하므로 서버 측 스크립트나 데이터베이스 같은 동적 콘텐츠를 포함할 수 없다. HTML로 코딩되며 브라우저가 허용하는 기능을 대부분 지원하지만 몇 가지 예외가 있다. 하이퍼넷 소프트웨어는 페이지 열람자의 신원을 노출하는 데 악용될 수 있는 코드(예: 외부 인터넷 리소스에 접근을 시도하는 코드 등)를 자동으로 제거한다[2].

슈샵 (Shoeshop) / 스니커넷 지원

슈샵 플러그인을 사용하면 스니커넷(sneakernet)을 구축하여 하이퍼넷을 이용할 수 있다. 이는 지역 인터넷 자체가 글로벌 정보 네트워크로부터 단절되었을 때에도 별도의 프렌드 투 프렌드 네트워크들을 연결할 수 있게 한다[4].

그 밖의 주제편집이의 제기

일본 P2P 프로그램에 미친 영향

하이퍼넷은 일본의 P2P 파일 공유 프로그램인 위니(Winny), 쉐어(Share), 퍼펙트 다크(Perfect Dark)의 모델이 되었다[3]. 그러나 이 모델은 비트토렌트(BitTorrent)나 이뮬(eMule) 같은 P2P 네트워크와는 다르다[3].

코드베이스 규모

코드베이스 크기는 192,000줄 이상이다[3].

관련 개념

자료에서 함께 거론되는 관련 개념으로는 딥 웹(Deep Web), 다크넷(Darknet), 다크 웹(Dark Web), 토르(Tor), I2P, PGP, GnuPG(Gnu Privacy Guard), 트루크립트(TrueCrypt) 등이 있다[2].

이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.

출처

4개
1Wikidata ↗https://www.wikidata.org/wiki/Q540
2위키백과 (한국어) · 하이퍼넷 ↗https://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EB%84%B7
3위키백과 (영어) · Hyphanet ↗https://en.wikipedia.org/wiki/Hyphanet
4공식 사이트 ↗https://www.hyphanet.org/