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

프리넷

해시넷
shenghao (토론 | 기여)님의 2020년 8월 13일 (목) 18:27 판
이동: 둘러보기, 검색
프리넷(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, Content Hash Keys), 서명된 하위 공간 키(SSK, Signed Subspace Keys), 업데이트 가능한 하위 공간 키(USK, Updatable Subspace Keys), 키워드 서명 키(KSK, Keyword Signed Keys) 이렇게 4가지가 있다. 대부분의 키는 해시 키이다. 키 근접성을 말할 때 의미론적 유사성의 개념은 없다. 따라서 키가 의미적 의미를 나타내는 경우와 같이 인기 있는 주제로 인한 병목 현상을 피할 수 있으므로 키 근접성과 데이터의 유사한 인기도 간에 상관관계가 없다.

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

콘텐츠 해시 키

콘텐츠 해시 키는 .mp3 또는 PDF 문서와 같은 정적 콘텐츠가 있는 파일을 위한 키이다. 이 키는 파일 내용의 해시이다. 해시는 특정 데이터 조각을 데이터의 지문의 일종인 상대적으로 적은 숫자로 변환하는 재현 가능한 방법이다. 파일 내용이 조금이라도 변경되면 파일의 해시가 크게 바뀐다. 이것은 아무에게도 알리지 않고 데이터를 조작하기 어렵게 만든다. 콘텐츠 해시 키는 파일을 고유하게 식별하므로 내용이 다른 두 파일이 동일한 콘텐츠 해시 키를 가질 수 없다. 콘텐츠 해시 키는 ( 파일의 해시 / 파일 잠금을 해제하는 암호 해독 키 / 사용된 암호화 설정 ) 이렇게 세 부분으로 구성된다. 일반적인 콘텐츠 해시 키의 구성은 다음과 같다.

CHK@SVbD9~HM5nzf3AX4yFCBc-A4dhNUF5DPJZLL5NX5Brs,bA7qLNJR7IXRKn6uS5PAySjIM6azPFvK~18kSi6bbNQ,AAEA--8

암호 해독 키는 파일 키의 일부이며, 파일 조각에 대한 요청에는 포함되지 않는다. 따라서 콘텐츠 해시 키가 없으면 파일을 해독할 수 없다. 파일의 접근하려면 전체 키를 FProxy 주소 뒤에 다음과 같이 붙여야 한다.[4]

http://localhost:8888/CHK@SVbD9~[..]X5Brs,bA7qLN[..]Si6bbNQ,AAEA--8
서명된 부분 공간 키

서명된 부분 공간 키는 일반적으로 시간이 지남에 따라 변경되는 사이트를 위한 키이다. 예를 들어, 뉴스를 업데이트하거나 수정, 추가 또는 삭제해야 할 정보가 필요한 웹사이트에 다른 사람이 사용자의 사이트에 새로운 버전을 올릴 수 없고, 사용자인 척할 수 없는 방식으로 작동한다. 공개 키 암호화를 사용하여 작동하므로 사이트에 서명할 수 있다. 비밀 키를 가진 사람만이 업데이트된 버전의 사이트를 프리넷에 추가할 수 있다. 서명된 부분 공간 키는 다섯 부분으로 구성된다.

  1. 공개 키 해시 : 파일을 고유하게 식별하는 데 필요한 모든 부분이므로 노드는 이 비트만 저장하면 된다. 실제 고용 키는 암호화된 데이터와 함께 저장된다.
  2. 문서 암호 해독 키 : 이것은 데이터를 저장하는 노드에는 알리지 않고 클라이언트에만 알려져 있으므로 노드는 전체 주소 없이 저장한 데이터의 암호를 해독할 수 없다.
  3. 암호 설정 : 사용된 암호 알고리즘 등을 나타낸다.
  4. 사용자 선택 이름 : 사이트 작성자가 선택한 단어 또는 문장을 나타낸다.
  5. 버전 : 사이트의 현재 버전을 나타낸다.

새 버전의 사이트가 작성되어 프리넷에 삽입될 때마다 버전 번호가 증가한다. 이 방법은 현재 프리넷에서 이미 삽입된 데이터를 업데이트할 수 없기 때문에 사용된다. 업데이트 가능한 부분 공간 키는 사용자에게보다 투명하게 만든다. 일반적인 서명된 부분 공간 키는 다음과 같다.

SSK@public key hash,decryption key,crypto settings/user selected name-version

화면 목적으로 잘라내는 것을 예로 들면, 다음과 같이 쓸 수 있다.[4]

SSK@GB3wuHmt[..]o-eHK35w,c63EzO7u[..]3YDduXDs,AQABAAE/mysite-4
업데이트 가능한 부분 공간 키

업데이트 가능한 부분 공간 키는 최신 버전의 서명된 부분 공간 키 사이트에 연결하는 데 유용하다. 업데이트 가능한 부분 공간 키는 실제로 최신 버전의 사이트를 검색하는 프로세스를 숨기는 서명된 부분 공간 키를 중심으로 사용자에게 친숙하다. 일반적인 업데이트 가능한 부분 공간 키는 다음과 같다.

USK@public key hash,decryption key,crypto settings/user selected name/number/

버전 번호를 제외하고 부분 공간 키와 거의 동일하다. 업데이트 가능한 부분 공간 키에는 두 가지 유형이 있다. 하나는 끝에 '양수'가 있는 것이고, 다른 하나는 끝에 '음수'가 있는 것이다.

마지막에 양수가 있는 업데이트 가능한 부분 공간 키는 다음과 같이 작동한다. 컴퓨터의 프리넷 노드는 데이터를 저장하지 않고도 알고 있는 업데이트 가능한 부분 공간 키 버전 목록을 유지한다. 이 목록은 이전 방문에서 작성되었으며, 이전 방문에서 이러한 종류의 링크에 대한 백그라운드 요청도 포함한다. 아래와 같은 업데이트 가능한 부분 공간 키를 방문하면 이 목록에서 5개 이상의 mysite 버전을 확인한다. 발견되면 최신 버전을 반환한다. 그런 다음, 백그라운드에서 다음에 주소를 방문할 때 업데이트 가능한 부분 공간 키 레지스트리에 추가하려고 하지 않은 최신 버전을 검색한다.

USK@GB3wuHmt[..]o-eHK35w,c63EzO7u[..]3YDduXDs,AQABAAE/mysite/5/

마지막에 음수가 있는 링크를 방문하면 프리넷은 요청한 버전(-7)과 컴퓨터의 노드 및 다른 노드에서 4개(7, 8, 9, 10)를 검색한다. 버전 7만 찾으면 이를 반환한다. 다른 것 중 하나를 찾으면 12, 13, 14, 15, 16의 다섯 가지 버전의 다른 배치를 검색한다. 찾을 수 없는 4개의 연속 버전이 있을 때까지 이 과정을 반복한다. 그런 다음 지금까지 찾은 최신 버전을 반환한다.[4]

USK@GB3wuHmt[..]o-eHK35w,c63EzO7u[..]3YDduXDs,AQABAAE/mysite/-7/
키워드 서명 키

키워드 서명 키를 사용하면 이름이 지정된 페이지를 프리넷에 저장할 수 있다. 여러 사람이 각각 같은 주소로 프리넷에 다른 파일을 삽입할 수 있다는 장점이 있다. 하지만, 스팸이나 이름 도용으로부터 안전하지 않고, 충돌 감지 기능이 있어 한 번 삽입된 페이지의 덮어쓰기를 방지한다. 키워드 서명 키의 주소는 다음과 같다.

KSK@myfile.txt

키워드 서명 키의 단점은 누구나 이름이 같은 파일을 삽입하고, 트래픽을 파일에서 자신의 트래픽으로 전환할 수 있다는 것이다. 키워드 서명 키 설명에는 다른 키와 마찬가지로 슬래시가 포함되지 않아야 한다. 키워드 서명 키는 콘텐츠 해시 키의 주소로의 경로 재지정을 포함하거나, 파일 자체를 포함할 수 있다.[4]

각주

참고 자료

같이 보기


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