검수요청.png검수요청.png

프리넷

위키원
js001018 (토론 | 기여)님의 2020년 8월 3일 (월) 15:42 판
이동: 둘러보기, 검색
프리넷(Free net)
프리넷(Free net)

프리넷(Free net)은 엄격한 프라이버시 보호 방법을 제공하면서 인터넷을 통한 피투피(P2P) 데이터 공유에 사용되는 오픈소스 소프트웨어이다. 이안 클락(Ian Clarke)이 "A Distributed Decentralised Information Storage and Retrieval System"(분산 자립형 정보 저장 및 검색 시스템)에서 처음 설계했다. 프리넷은 네트워크 공격에 대비하기 위해 분권화된 네트워크에 존재하며 익명성으로 검열 없이 언론의 자유를 허용하도록 설계되었다.

개요

프리넷 소프트웨어와 데이터 저장 개념은 원래 이안 클라크에 의해 개발되었지만, 프리넷은 2000년부터 지속적인 개발을 진행하고 있다. 프리넷은 기존의 피투피 공유 애플리케이션과 보안 특성과 상호 작용성 측면에서 다르다. 프리넷은 프리넷 네트워크에 업로드된 콘텐츠 액세스에만 사용할 수 있다. 일반적으로 프리넷은 "자유"를 출판하고, 게시판을 통해 소통하고, 콘텐츠를 배포하고, 포럼을 활성화하고, 다운로드를 위해 사용된다. 프리넷의 통신은 대체 노드를 통해 라우팅되므로 프리넷 사용자가 추적될 가능성이 감소한다. 또, 프리넷은 파일을 업로드한 사용자가 오프라인 상태에서도 다른 사용자가 파일을 계속 다운받을 수 있도록 허용하고 있다. 프리넷 어플리케이션의 주요 특징은 다음과 같다.

분권화된 프로세스와 사용자 익명성 때문에 시스템을 공격하거나 파괴하는 것은 사실상 불가능하다. 따라서, 프리넷은 악의적인 공격과 위조에서 살아남을 수 있다는 생존(Survival)이 있다. 또한, 프리넷 사용자의 활동을 감시하는 것은 극도로 어렵다는 특징인 안티-스파이(Anti-Spy), 각 사용자가 필요한 정보에 접근하여 가장 효율적인 방법으로 파일화할 수 있도록 설계되었고, 부하에 관계없이 최소한의 대역폭 사용과 효율적인 서비스를 제공하는 효율성(Efficiency), 사용자가 통제할 수 없는 파일 삭제에 대한 자체 기준을 갖고 있어, 가장 자주 사용하지 않는 파일은 삭제되고 가장 자주 사용하는 파일은 보관된다는 파일 제거(File Removal)가 있다.[1]

프리넷은 기여된 통신 대역폭을 풀링(pooling)함으로써 작동하고, 회원 컴퓨터의 저장공간을 사용자들이 익명으로 검색할 수 있게 한다. 사용자의 회선에 따른 통신 속도, 사용자가 선택한 수준의 익명성에 맞게 설정을 한다. 프리넷은 브라우저 형태이지만 많은 사용자들은 기존의 익숙한 P2P 형태로 보여주는 프로스트(Frost)를 많이 사용한다.[2] 사용자들은 프리넷 본체를 통한 프로스트에서 채팅을 할 수도, 자료에 대한 Key(일종의 주소)를 주고 받기도 한다.[3]

특징

완전 분산형

프리넷은 중앙 서버에 의존하지 않고 완전히 분산된 정보를 프리넷에 삽입하여 다운로드 할 수 있다. 정보 삽입기가 해야할 일은 콘텐츠의 '키'를 다른 사람에게 제공하여 다운로드할 수 있게 하는 것이다.

적응 캐싱

많은 CDN 아키텍처는 파일을 이미 다운로드한 피어만 다른 피어와 공유할 수 있도록 허용한다. 프리넷은 피어가 다운로드한 내용과 상관없이 수요를 충족시키기 위해 필요에 따라 피어에 대한 정보를 적응적으로 캐싱할 것이다. 이를 통해 프리넷은 대부분의 인기 있는 파일에 대한 대부분의 솔루션보다 훨씬 빠르게 확장할 수 있으며, 로드 밸런싱도 향상된다.

강력한 보안

프리넷은 검색된 데이터의 무결성을 보장하는 '콘텐츠 해시 키'의 개념을 오랫동안 지원해 왔다. 이 접근방식은 다른 아키텍처에서도 채택되었다. 또한, 프리넷은 콘텐츠를 디지털 서명할 수 있는 '서명된 서브스페이스 키'도 지원한다. 이를 통해 콘텐츠 무결성도 보장할 수 있고, CHK보다 유연성이 높다.

순방향 오류 수정

일부 다른 CDN 아키텍처와 마찬가지로 프리넷은 순방향 오류 수정(Forward Error Correction)을 사용하여 파일의 일부 부분을 검색할 수 없더라도 파일을 재구성할 수 있게 해준다. 또한, 프리넷은 유일하게 누락된 파일 구성요소의 재구성 및 재 삽입을 포함하는 "힐링"을 지원한다.[4]

기술 속성

프리넷의 디자인은 다른 익명성 네트워크와는 매우 다르다. 엔드포인트 간의 트래픽 스트림을 난독하게 만드는 대신, 데이터 자체를 암호화된 블록으로 잘라내 다른 피어의 데이터 저장서에 분산시켜 중복성과 그럴듯한 진술 거부권을 제공한다. 파일의 사용빈도가 보관 또는 삭제 여부를 지시하기 때문에 사용자는 데이터 저장소에 무엇이 저장되어 있는지 사실상 알 수 없다. 이로 인해 검열에 대한 저항력이 증가된다.

업로드 후, 게시자는 콘텐츠의 통일된 자원 식별자(URI) 아카이브(Archive)의 역할을 하는 키를 얻는다. 이 키는 선택적으로 공유하여 다른 사람이 접근할 수 있도록 할 수 있다. 이것들은 프리사이트라고 알려져 있고 프리넷 네트워크에서 정적 컨텐츠만 호스트한다. 여기서 데이터베이스나 서버측 스크립트와 같은 활성 컨텐츠는 불가능하다. 업로더가 오프라인이 된 후에도 데이터는 계속 사용할 수 있으며, 이는 비동기임을 의미한다. 프리넷은 더 넓은 웹에 접속할 수 없는 자급자족 네트워크이다.

프리넷에서는 자바스크립트(JavaScript)를 사용할 수 없다. HTML 표준의 안전한 하위 집합만 화이트리스트에 추가된다. 파일을 다운로드하기 전 또는 리디렉션할 때 사용제에게 메시지가 표시된다. 프리넷은 토르와 같은 텔레스코픽 터널을 이용하지 않고, 대신 커버 트래픽에 대한 요청을 함께 묶어서 누가 데이터를 전달하는지, 누가 자료를 요청하는지 상대에게 혼란을 주기 위해 다양한 홉을 통해 전송한다. 또한, 프리넷은 사적인 친구 전용 네트워크로 바꾸는 '다크넷' 모드, 공공 네트워크에 연결되는 '오픈넷' 모드, 그리고 두 가지를 모두 포함하는 '하이브리드' 모드, 이렇게 총 3개의 모드를 지원한다.[5]

연결 방법

프리넷 노드 연결

프리넷에 연결하는 방법에는 두 가지가 있다. 첫 번째는, 설치 마법사의 요청으로 안전하지 않은 모드를 활성화할 수 있으며, 활성화하면 프리넷이 자동으로 낯선 사람에게 연결할 노드를 찾는다. 두 번째는, 친구인 사용자가 실행하는 노드에 연결할 수 있다. 양호한 네트워크 토폴로지와 최대 보안을 유지하기 위해 이들은 실제로 어느 정도 알고 있는 사람이어야 한다.

거의 모든 경우에, 이 두 가지 방법을 모두 사용해야 한다. 하지만 안전하지 않은 모드는 일단 활성화되면 자동으로 작동하므로, 신뢰하는 사람들과 연결해서 그 페이지의 나머지 친구들과의 연결에 대해 협력해야 한다. 친구의 노드에 연결하려면 해당 노드와 노드 참조를 교환해서 양쪽에 추가해야 성립된다. 즉, 사용자는 친구의 노드를 추가해야 하고, 친구는 사용자의 노드를 추가해야 한다. 새로 연결된 노드가 있고, 데이터스토어(datastore)에 저장된 데이터가 없으며 안전하지 않은 모드를 사용하도록 설정했는 데도 연결이 거의 없는 경우, 요청은 무작위로 발송된다. 이렇게 하면 일부 또는 모든 요청은 검색 전에 시간 초과가 된다. 노드는 항상 최소 세 개 이상 연결되어 있어야 하며, 5개에서 7개 사이의 연결이 이상적이다. 일부 노드에 연결할 수 없는 경우가 있을 수 있으므로 예상 번호를 얻으려면 일부 노드에 더 연결해야 한다.

사용자에게 직접 연결된 노드들은 프리넷에서 어떤 종류의 트래픽이 사용자의 프리넷 노드로 전달되는지 볼 수 있는 유일한 노드이다. 그러나, 안전하지 않은 모드가 활성화된 경우 어떤 노드든 사용자의 노드를 찾을 수 있다. 이것은 안전하지 않은 모드를 활성화하지 않을 때의 큰 장점이다. 사용자는 친구 외에는 사실상 보이지 않는다. 대부분의 사람들이 안전하지 않은 모드로 시작하고, 점차적으로 친구를 추가하며 적어도 10명의 친구가 생기면 안전하지 않은 모드를 끈다.

우측 그림의 노드 A에도 여러 개의 노드가 연결되어 있지만, 모두(자신의 노드 제외) 보이지 않는다. 그러므로 트래픽 라우팅 알고리즘은 당신이 가장 찾고 있는 것을 찾을 수 있다고 생각하는 몇 안 되는 노드 중 하나로만 트래픽을 전달할 수 있다. 트래픽은 암호화되어 있어서, 당신이 접속하는 노드들이 당신의 프리넷 트래픽이 무엇으로 구성되어 있는지 보기에는 꽤 어렵지만, 그것은 불가능과는 거리가 멀다. 그러므로 당신이 아는 사람들과만 연결하는 것은 중요하다.[4]

프리넷 라우팅

처음에는 각 노드에 다른 노드의 성능에 대한 정보가 없다. 이는 요청 라우팅이 본질적으로 무작위임을 의미한다. 그러나 서로 다른 노드는 서로 다른 임의성을 가지므로 키가 주어지면 요청을 보낼 위치에 대해 동의하지 않는다. 따라서 새로 시작된 프리넷의 데이터는 무작위로 배포된다. 더 많은 문서가 동일한 노드에 의해 삽입되면 동일한 라우팅 규칙이 모든 문서에 사용되므로 키가 유사한 데이터 항목으로 클러스터링 정보도 공유하기 시작한다. 그 결과, 네트워크는 노드가 키 공간에서 서로 가까운 데이터 항목을 보유하는 경향이 있는 분산된 클러스터 구조로 자체 구성된다. 네트워크 전체에 이러한 클러스터가 여러 개 있을 수 있으며, 사용된 양에 따라 해당 문서가 여러 번 복제된다.[4]

프리넷 키

프리넷에 존재하는 각 파일에는 파일과 관련된 키가 있다. 키는 프리넷의 모든 것에 사용되며, 일종의 URI이다. 예를 들면, freenet : =KSK@sample.txt 이런 구조이다. 키는 콘텐츠 해시 키(CHK), 서명된 하위 공간 키(SSK), 업데이트 가능한 하위 공간 키(USK), 키워드 서명 키(KSK) 이렇게 4가지가 있다. 대부분의 키는 해시 키이다. 키 근접성을 말할 때 의미론적 유사성의 개념은 없다. 따라서 키가 의미적 의미를 나타내는 경우와 같이 인기있는 주제로 인한 병목 현상을 피할 수 있으므로 키 근접성과 데이터의 유사한 인기도간에 상관 관계가 없다.

Freenet에서 특정 데이터에 액세스하려면 FProxy를 사용할 수 있다. 데이터의 키를 알고 다음과 같이 입력하거나 키가 포함 된 링크를 클릭해야 한다. 프리넷의 키 중에서 CHK가 가장 기본이다. 1kb 이상의 모든 파일은 궁극적으로 하나 이상의 32kb CHK로 나뉜다. CHK의 파일 이름은 내용에 의해서만 결정된다. SSK는 또 다른 기본 유형이다. 이들은 공개 키를 사람이 읽을 수 있는 파일 이름과 결합하여 자유 사이트를 허용한다. KSK는 모든 것이 사람이 읽을 수 있는 간단한 파일 이름으로 결정되는 SSK의 변형이다. 이들은 가연성이지만 경우에 따라 편리하다. USK는 업데이트 가능한 키의 형태로 특히 프리 사이트 및 주소 확인 키에 유용하다. ARK(Address Resolution Key)는 아이피 주소가 변경될 때마다 노드에 의해 삽입되는 USK이다. 여기에는 노드에 대한 참조, 암호화 세부 사항 및 아이피 주소가 포함된다. ARK는 방화벽, 라우터 또는 아이피 주소 변경으로 인해 문제가 있는 경우 프리넷에 연결하는 데 도움이 되는 방법이다. 누군가 들어오는 트래픽을 수락할 수 없으면 연결하기가 어려울 수 있다.[4]

콘텐츠 해시 키


각주

참고 자료

같이 보기


  검수요청.png검수요청.png 이 프리넷 문서는 인터넷에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.