GNUnet

GNUnet
GNUnet
Official logo of the GNUnet project.svg
Gnunet-gtk 0.10 under arch-gnulinux.png
GTK+ 사용자 인터페이스를 갖춘 GNUnet
개발자GNUnet e.V.[1]
초기 릴리즈2001년 11월 5일, 20년 전(2001-11-05)
안정된 릴리스
2022년[2] 8월 5일 / 0.17.3
저장소
기입처C[3]
운영 체제공식:프리소프트웨어 운영체제(Linux, FreeBSD, NetBSD, OpenBSD)
비공식:기타 운영체제(OS X, Windows)
이용가능기간:스페인어, 영어, 러시아어, 독일어, 프랑스어
유형익명 P2P, 친구 대 친구
면허증.2018년 : AGPL-3.0 이후[a][4]
2007: GPL-3.0 이후[b]
2001: GPL-2.0 이후[c]
웹 사이트gnunet.org
2013년 8월 1일 베를린에서 열린 "#youbrokethe Internet"에서 GNUnet의 관리자인 Christian Grothoff씨. 우리는 스스로를 GNU로 만들 것이다." 이벤트입니다.

GNUnet분산형 피어 피어 네트워킹공식 GNU 패키지를 위한 소프트웨어 프레임워크입니다.이 프레임워크는 링크 암호화, 피어 검출, 자원 할당, 다수의 트랜스포트(TCP, UDP, HTTP, HTTPS, WLAN, Bluetooth 등)를 통한 통신 및 라우팅,[5][6] 멀티캐스트네트워크 크기를 추정하기 위한 다양한 기본적피어 투 피어 알고리즘을 제공합니다.

GNUnet의 기본 네트워크 토폴로지는 메쉬 네트워크 토폴로지입니다.GNUnet에는 분산 해시 테이블(DHT)이 포함되어 있습니다.DHT는 Kademlia랜덤화된 변형으로 소규모 네트워크에서도 효율적으로 라우팅할 수 있습니다.GNUnet은 사용자의 신뢰할 수 있는 친구로만 연결을 제한할 수 있는 "F2F topology" 옵션을 제공합니다.그 후, 유저의 친구(등)는, 유저의 컴퓨터와 간접적으로 파일을 교환할 수 있어 IP 주소를 직접 사용하는 일은 없습니다.

GNUnet은 Uniform Resource Identifier를 사용합니다(어플리케이션이 [when?]작성되었지만 IANA에 의해 승인되지 않았습니다).GNUnet URI는 모듈과 모듈 고유의 ID라는2개의 주요 부분으로 구성됩니다.GNUnet URI는 형식입니다.
gnunet://module/identifier여기서 module은 모듈 이름, ID는 모듈 고유의 문자열입니다.

프라이머리 코드베이스는 C로 작성되어 있습니다만, 다른 언어로 바인딩을 실시해, 이러한 언어로 확장 기능을 개발하기 위한 API를 작성합니다.GNUnet은 GNU 프로젝트의 일부입니다.PRISM [7]폭로 이후 해커 커뮤니티에 관심을 갖게 됐다.

GNUnet은 몇 개의 서브시스템으로 구성되어 있으며, 그 중 중요한 서브시스템은 트랜스포트 서브시스템과 [8]코어 서브시스템입니다.트랜스포트 서브시스템은 안전하지 않은 링크층 통신을 제공하며, Core는 피어 검출 [9]및 암호화를 제공합니다.코어 서브시스템 위에는 다양한 애플리케이션이 구축되어 있습니다.

GNUnet은 파일 공유, 채팅 및 VPN을 포함한 다양한 P2P 애플리케이션을 프레임워크의 메인 디스트리뷰션에 포함합니다.게다가, 몇개의 외부 프로젝트(secushare 등)도 GNUnet 인프라스트럭처를 확장하고 있습니다.

GNUnet은 이전 Gnutella P2P 프로토콜과 관련이 없습니다.Gnutella는 공식 GNU 프로젝트가 아닌 반면 GNUnet은 [10]공식 GNU 프로젝트가 아닙니다.

운송

원래 GNUnet은 기본 [11]전송에 UDP를 사용했습니다.GNUnet 트랜스포트 서브시스템은 TCP나 [12]SMTP와 같은 여러 옵션을 제공합니다.

IANA에 공식적으로 등록된 통신 포트는 2086(tcp + [13]udp)입니다.

트러스트 시스템

GNUnet은 초과 기반 경제 [14]모델에 기반한 신뢰 시스템을 제공합니다.경제 시스템을 채용하는 아이디어는 MojoNation 네트워크에서 [15]따왔다.

GNUnet 네트워크에는 신뢰할 수 있는 엔티티가 없기 때문에 글로벌 평판을 유지할 수 없습니다.대신 각 피어는 각 로컬링크에 대한 자체 신뢰를 유지합니다.

대역폭이나 CPU 시간 등의 리소스가 초과되면 피어는 신뢰를 줄이거나 과금하지 않고 모든 요구 네이버에 리소스를 제공합니다.노드에 부하가 걸리면 내부 신뢰치가 낮은 네이버노드로부터의 요구를 폐기합니다.그러나 피어(peer)가 모든 사용자의 요구를 충족하기에 충분한 자원을 가지고 있지 않은 경우 신뢰도가 낮은 네이버의 요청을 거부하고 신뢰도를 낮추어 다른 사용자에게 요금을 부과합니다.

파일 공유

이 시점에서 주요 애플리케이션은 익명이고 검열 기능이 없는 파일 공유입니다. 사용자는 익명으로 모든 종류의 정보를 게시하거나 검색할 수 있습니다.익명성을 제공하는 GNUnet 프로토콜을 GAP(GNUnet 익명 프로토콜)[16]라고 합니다.GNUnet FS는 GNU libextractor를 사용하여 공유 파일에 메타데이터를 자동으로 주석을 달 수 있습니다.

파일 부호화

GNUnet과 공유되는 파일은 ECRS([17]An Encoding for Censoration-Resistred Sharing)로 코딩됩니다.

모든 콘텐츠가 GBlock으로 표시됩니다.각 GBlock에는 1024바이트가 포함됩니다.GBLOCK에는 몇 가지 유형이 있으며, 각각 특정 용도로 사용됩니다. B B RIPEMD-160 H H에 의해 고유하게 식별됩니다.

DBlocks는 실제 파일 내용만 저장합니다.파일은 1024바이트 경계로 분할되고 결과 청크는 DBlocks에 저장됩니다.DBlock은 DBlock 식별자를 저장하는 IBlock을 통해 Merkle 트리에 연결됩니다.

블록은 네트워크에 저장될 때H ( ) \ H에서 파생된 대칭 키로 암호화됩니다.

질의 및 응답

GNUnet Anonymy Protocol은 쿼리와 응답으로 구성됩니다.전송 노드의 부하에 따라 메시지는 0 이상의 노드로 전송됩니다.

쿼리를 사용하여 콘텐츠를 검색하고 데이터 블록을 요청합니다.

쿼리에는 자원 식별자, 응답 주소, 우선순위 및 TTL(Time-to-Live)이 포함됩니다.

자료 Q{Q\displaystyle}의 자원 식별자는triple-hash H(H(H(Q))=쿼리하도록 답변{\displaystyle H(H(H(Q)))}.[18] 피어 그것이 확실히 중간 노드로 그렇게int H(Q){H(Q)\displaystyle}을 제공하지 않고 그 요청된 리소슸다는 것을 증명하는 것 H(H(Q)){\displaystyle H(H(Q))}을 제공한다.ermediate 노드가 수 없습니다

프리넷 프로토콜과 비교했을 때 회신 주소가 큰 차이입니다.프리넷 응답은 항상 쿼리와 동일한 경로를 사용하여 전파되지만 GNUnet에서는 경로가 더 짧을 수 있습니다.쿼리를 수신하는 피어는 쿼리를 드롭하거나 응답 주소를 다시 쓰지 않고 전송하거나 응답 주소를 자신의 주소로 대체하여 간접적으로 전송할 수 있습니다.쿼리를 간접함으로써 피어는 자체 쿼리의 커버트래픽을 제공하는 한편 피어를 전송함으로써 응답 전파의 링크가 되지 않고 대역폭을 유지합니다.이 기능을 통해 사용자는 효율성을 위해 익명성을 교환할 수 있습니다.사용자는 각 게시, 검색 및 다운로드 작업에 대해 익명 수준을 지정할 수 있습니다.익명 수준 0을 사용하여 익명이 아닌 파일 공유를 선택할 수 있습니다.GNUnet의 DHT 인프라스트럭처는 익명이 아닌 파일 공유가 지정된 경우에만 사용됩니다.익명성 수준에 따라 사용자 자신의 액션을 숨기기 위해 피어가 필요로 하는 커버 트래픽의 양이 결정됩니다.

priority는 자원 부족 시 사용자가 지출할 신뢰의 양을 지정합니다.

TTL은 쿼리가 네트워크에 너무 오래 머무르지 않도록 하기 위해 사용됩니다.

파일 공유 URI

fs 모듈 식별자chk, sks, ksk 또는 loc 뒤에 슬래시와 카테고리 고유의 값이 계속됩니다.대부분의 URI에는 base32hex[19]인코딩된 해시가 포함되어 있습니다.

  • chk는 일반적으로 다음과 같은 파일을 식별합니다.gnunet://fs/chk/[file hash].[query hash].[file size in bytes]
파일 해시는 일반 텍스트파일의 해시입니다.이것에 의해, 다운로드 후에 복호화할 수 있습니다.쿼리 해시는 암호화된 파일을 포함하는 GBlock의 트리 전체를 다운로드할 수 있는 최상위 GBlock의 해시입니다.트리 모양을 확인하려면 파일 크기가 필요합니다.
  • sks는 네임스페이스 내의 파일을 식별합니다.일반적으로 다음과 같습니다.gnunet://fs/sks/NAMESPACE/IDENTIFIER
  • ksk는 일반적으로 다음과 같은 검색 쿼리를 식별합니다.gnunet://fs/ksk/KEYWORD[+KEYWORD]*
  • loc는 특정 머신상의 데이텀을 나타냅니다.일반적으로 다음과 같습니다.gnunet://fs/loc/PEER/QUERY.TYPE.KEY.SIZE

GNU GPL 라이선스텍스트의 특정 카피를 가리키는 GNUnet 파일 공유 URI 유형: gnunet://fs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992

키워드 "gpl"을 사용하여 검색 결과를 가리키는 또 다른 유형의 GNUnet 파일 공유 URI: gnunet://fs/ksk/gpl

GNU 네임 시스템

GNUnet에는 DNS를 위한 분산형 및 검열에 견디는 대체품인 GNU Name System(GNS; 이름 시스템)의 구현이 포함되어 있습니다.GNS에서는 각 사용자가 자신의 존을 관리하고 다른 사용자가 관리하는 존에 서브도메인을 위임할 수 있습니다.다른 사용자가 정의한 레코드의 조회는 GNUnet의 DHT를 [20]사용하여 수행됩니다.

프로토콜 번역

GNUnet은 피어 투 피어 네트워크를 통해 IP 트래픽을 터널링할 수 있습니다.필요에 따라서, GNUnet 는, 프로세스내에서 IPv4-IPv6 프로토콜 변환을 실행할 수 있습니다.GNUnet은 DNS 요청을 프록시하고 필요에 따라 주소를 원하는 주소 패밀리에 매핑하기 위한 DNS 애플리케이션레벨 게이트웨이를 제공합니다.이와 같이, GNUnet 는 IPv6 의 이행을 용이하게 하기 위해서 가능한 테크놀로지를 제공합니다.또한 GNUnet의 프로토콜 변환 시스템을 GNS와 조합하여 숨겨진 서비스에 액세스할 수 있습니다.IP 기반 서비스는 네트워크의 일부 피어에서 로컬로 실행되며 GNS 이름을 해결해야만 액세스할 수 있습니다.

소셜 API

Gabor X Toth는 2013년 9월 초에 확장성, 확장성 및 엔드 투 엔드의 암호화된 통신을 제공하는 GNUnet 피어 투 피어 프레임워크를 위한 소셜 메시징 서비스 설계를 제시하는 논문을 발표했습니다[21].scalability 속성은 멀티캐스트메시지 전달을 통해 실현되지만 확장은 PSYC(Protocol for Synchronous Conferencing)를 사용하여 실현됩니다.PSYC는 네트워크 내의 모든 노드에서 소프트웨어를 업그레이드하지 않고 시간이 지남에 따라 발전할 수 있는 확장 가능한 RPC(Remote Procedure Call) 구문을 제공합니다.PSYC 계층에 의해 제공되는 또 다른 주요 기능은 예를 들어 사용자 프로파일을 저장하기 위해 사용되는 스테이트풀 멀티캐스트 채널입니다.엔드 투 엔드의 암호화 통신은 멀티캐스트채널이 구축되는 GNUnet의 메쉬 서비스에 의해 제공됩니다.시스템의 익명의 유저와 소셜 플레이스는, 공개 키에 의해서 식별되는 암호 ID를 가지고 있습니다.이러한 ID는, GNS(GNU Name System)를 사용해 인간의 기억에 남는 이름에 매핑됩니다.각 가명에는 장소를 가리키는 존이 있습니다.

이는 GNUnet 프레임워크를 완전한 피어피어 소셜 네트워킹 플랫폼으로 만들기 위해 필요한 구성 요소입니다.

채팅

채팅은 GNOME용 GTK 인터페이스가 존재하는 [23]CADE [22]모듈에서 구현되었습니다.이 모듈에서는 새롭게 등장한 Linux 전화기(Librem 5 또는 PinePhone [24]등)용으로 특별히 설계되었습니다.

「 」를 참조해 주세요.

메모들

  1. ^ 2018-06-05 이후 AGPL-3.0 이후
  2. ^ 2007-07-02부터 2018-06-05까지 GPL-3.0 이후
  3. ^ 2001년부터 2007-07-02까지 GPL-2.0 이후

레퍼런스

  1. ^ GNUnet.org – GNUnet e.V에 대해서
  2. ^ "GNUnet 0.17.3 출시", 저자명 문자열: 마르틴 샨젠바흐, 발행일: 2022년 8월 5일, 취득일: 2022년 8월 5일.
  3. ^ GNUnet 소스 코드
  4. ^ "license notice placed at the top in one of the source files of the project's repository, probably in each of its source files". Retrieved June 8, 2018. GNUnet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  5. ^ EvansPolotGrothoff 2012.
  6. ^ Grothoff, Christian (2017-10-10). The GNUnet System (habilitation thesis). Université de Rennes 1.
  7. ^ Grothoff 2013.
  8. ^ FerreiraGrothoffRuth 2003, 그림 1
  9. ^ FerreiraGrothoffRuth 2003, II. GNUNET 및 THE TRANST Layer: "코어는 링크 간 암호화, 라우팅 가능한 주소에 대한 노드 ID 바인딩 및 피어 검출을 담당합니다."
  10. ^ "GNU Software". Software - GNU Project - Free Software Foundation. Free Software Foundation, Inc. Retrieved 25 January 2020.
  11. ^ GrothoffPatrascuBennetStef 2002, 3.1.1 UDP.
  12. ^ FerreiraGrothofFRuth 2003.
  13. ^ 서비스 이름 및 Transport Protocol 포트 번호 레지스트리, 페이지 38
  14. ^ 그로토프 2003년
  15. ^ Grothoff Patrascu BennetStef 2002, 2.4 Mojo Nation.
  16. ^ 베넷 그로토프 2003년
  17. ^ 베넷 그로트호프 호로조프 파트라스쿠 2002.
  18. ^ GrothoffPatrascuBennettStef 2002, 5.5 쿼리 상세.
  19. ^ Grothoff, Christian. "File-Sharing URIs". www.gnunet.org. Retrieved 15 July 2016.
  20. ^ Wachs 2014. 오류:: 2014
  21. ^ Toth, Gabor X (2013-09-05), 스테이트풀 멀티캐스트이용한 소셜 메시지 시스템 설계, 2014-02-22 Wayback Machine에서 아카이브 - 2013-09-28 취득
  22. ^ GNUnet.org 문서(2019-11-14) 클라이언트와 채팅 - 2019-11-14 취득
  23. ^ GitLabcadet-gtk
  24. ^ GNUnet CADE for Mobile Linux – Reddit

기타 참고 자료

외부 링크