Freenet

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Freenet
Logo of Freenet
Screenshot of Freenet 0.7FProxy index page (Freenet 0.7)
Розробник(и) The Freenet Project[1]
Перший випуск March, 2000
Написано на Java
Операційна система Cross-platform
Платформа Java
Доступні мови English, French, German, Italian, Swedish, Dutch
Тип Anonymity, Peer to peer, Friend to friend
Ліцензія GNU General Public License
Сайт http://freenetproject.org/

Freenet — децентралізоване, захищене від цензури розподілене сховище даних, первісно розроблене Ian Clarke.[2] Згідно з Clarke, метою Freenet є забезпечення свободи слова за допомогою peer-to-peer мережі з суворим захистом анонімності; частиною цієї ідеології є те, що Freenet — вільне відкрите програмне забезпечення.[3] Робота Freenet забезпечується за допомогою спільного пула трафіку мережі та дискового простору комп'ютерів учасників, що дозволяє користувачам анонімно публікувати чи отримувати різноманітну інформацію. Розробка Freenet триває з 2000 року.

Можливості та інтерфейс користувача[ред.ред. код]

Freenet відрізняється від більшості інших peer-to-peer програм як способом взаємодії з користувачем, так і безпекою, яку він надає. Він відмежовує інфраструктуру мережі, яка використовується, та протокол від дій користувачів, які взаємодіють з мережею; як наслідок, існує безліч шляхів доступу до вмісту мережі Freenet. Найпростіший — через FProxy, що інтегрується з програмним забезпеченням вузла й забезпечує веб-інтерфейс для доступу до даних з мережі. Використовуючи FProxy, користувач може переглядати фрісайти (веб-сайти, що використовують звичайний HTML та споріднені інструменти, але вміст яких розміщується у Freenet, а не на традиційному веб-сервері). Веб-інтерфейс також використовується для більшості конфігураційних дій та керування вузлами. Шляхом використання окремих програм чи додатків, завантажених у програмне забезпечення вузла, користувачі можуть взаємодіяти з мережею іншими способами, такими як форуми, подібні до веб-форумів чи Usenet, або інтерфейси, більш схожі на традиційні інтерфейси p2p для спільного доступу до файлів.

Хоча Freenet забезпечує HTTP-інтерфейс для перегляду фрісайтів, він не є проксі-сервером для World Wide Web; Freenet може використовуватись лише для доступу до контенту, що був попередньо розміщений у мережі Freenet. В цьому розумінні, він більш подібний до файлообмінних програм, ніж до проксі, таких як Tor.

Freenet намагається захистити анонімність як людей, що розміщують дані у мережі (uploading), так і тих, хто отримує дані з мережі (downloading). На відміну від програм для файлообміну, користувачеві Freenet нема необхідності лишатися в мережі після після розміщення файла чи групи файлів. Натомість, у процесі публікації файли розбиваються на шматки й розміщуються на безлічі інших комп'ютерів у мережі. При скачуванні ці шматки знаходяться й збираються до початкового стану. Кожен вузол у мережі Freenet віддає дисковий простір для зберігання файлів і трафік, що використовується для маршрутизації запитів від інших користувачів.

Як наслідок вимоги анонімності, вузол, що запитує фрагмент даних, не з'єднується безпосередньо з вузлом у якого ці дані є — натомість, дані передаються через кількох посередників, жоден з яких не знає, який вузол запитує дані, а який їх має. Як наслідок, загальний трафік, потрібний системі для передачі файлу, вищий, ніж в інших системах, що може сповільнити передачу, особливо якщо контент непопулярний.

Content[ред.ред. код]

Засновники Freenet стверджують, що лише зі справжньою анонімністю приходить справжня свобода слова, і, те, що вони бачать як користь від Freenet, переважує шкоду від його використання.[3] На їхню думку, свобода слова сама по собі не суперечить жодному іншому принципу — інформація не є злочином. Freenet намагається знищити можливість для будь-якої групи нав'язувати свою віру чи цінності у будь-якій інформації. Також багато держав цензурують обмін інформацією, всі вони поділяють one commonality in that людина має вирішувати, яку інформацію цензурувати, а яку дозволити. Те, що може бути прийнятним для однієї групи людей, може розглядатись як неприйнятне чи навіть небезпечне для інших. По суті, мета Freenet — не дозволяти нікому вирішувати за інших, що є прийнятним.

Дизайн[ред.ред. код]

Файлообмінна мережа Freenet розміщує документи й дозволяє отримати їх пізніше за асоціативним ключем, подібно до таких протоколів, як HTTP. Мережа розроблена як високожиттєздатна, з повною анонімізацією й децентралізацією по мережі всіх внутрішніх процесів. Система не має центральних серверів й не підлягає контролю жодною особою чи організацією, включно з розробниками Freenet. Інформація, розміщена у Freenet, розподіляється по мережі й розміщується на кількох різних вузлах. Шифрування даних й передача запитів ускладнюють можливість визначити, хто розмістив контент у Freenet, хто запитував цей контент, або де контент було розміщено. Це робиться з метою захисту анонімності учасників, а також дуже ускладнює цензуру певного контенту. Контент зберігається в зашифрованому вигляді, тому навіть операторові вузла важко визначити, що саме зберігається на вузлі. This provides plausible deniability, and in combination with the request relaying means that safe harbor laws that protect service providers also protect Freenet node operators.

Розподілені сховища та кешування даних[ред.ред. код]

Навідміну від решти мереж P2P, Freenet не лише передає дані між вузлами, але й зберігає їх, працюючи як великий розподілений кеш. Щоб досягти цього, кожен вузол виділяє деяку частину дискового простору для розміщення даних; це настроюється оператором вузла, але типово декілька GB (чи більше).

Файли у Freenet здебільшого розбиваються на безліч малих блоків, з додатковими блоками для забезпечення попередньої корекції помилок. Кожен блок обробляється незалежно, тобто, частини одного файла можуть розміщуватися на багатьох різних вузлах.

Інформаційний потік у Freenet має відмінності порівняно з такими мережами, як eMule чи BitTorrent:

  1. Користувач, що бажає відкрити доступ до файлу чи оновити фрісайт, «публікує» файл «у мережі».
  2. Після того, як «публікацію» завершено, користувач може вимкнути свій вузол, оскільки файл розміщено в мережі (за межами його комп'ютера). Файл лишається доступним для інших користувачів, незалежно від того, чи перебуває в мережі вузол, який його опублікував. Жоден з вузлів не відповідає за контент — натомість, його копії зберігаються на кількох різних вузлах.

Дві переваги такої схеми — висока надійність та анонімність. Інформація лишається доступною, навіть якщо її автор поза мережею, і при цьому анонімно поширюється на багатьох хостингових вузлах у вигляді зашифрованих блоків, а не цілісних файлів. Freenet також невразливий до типової проблеми торентів — нестачі «сідів» (роздавачів) чи повних копій файла або торента.

Ключовий недолік цього методу зберігання — жоден з вузлів не відповідає за жоден фрагмент даних. Якщо фрагмент даних деякий час не дістають з мережі, а вузол продовжує отримувати нові дані, час від часу він скидає старі дані, коли його виділений дисковий простір остаточно заповнюється. Таким чином, Freenet схильний забувати дані, які не перечитуються регулярно (дивись також Effect).

Хоча користувачі можуть розміщувати дані в мережі, нема можливості видалити ці дані. У зв'язку з анонімністю, жоден вузол не знає, хто є «власником» фрагменту даних. Дані можуть бути видалені лише в один спосіб — якщо користувачі певний час не роблять запитів до цих даних.

Мережа[ред.ред. код]

Мережа складається з багатьох вузлів, що обмінюються між собою повідомленнями. Як правило, a host комп'ютер у мережі запускає програму, що працює як вузол, і вона приєднується інших хостів, на яких запущена та ж програма, що формує велику розподілену мережу рівноправних вузлів. Деякі вузли є кінцевими, з яких документи запитуються й подаються користувачеві-людині. Інші вузли служать лише для маршрутизації даних. всі вузли спілкуються один з одним однаково — нема окремих «клієнтів» чи «серверів». Вузол не має можливості обмежувати інший вузол, за винятком здатності розміщувати та отримувати дані, пов'язані з ключем. Це не схоже на більшість інших P2P мереж, де адміністратори вузла можуть вводити систему рейтингів, коли користувачі мають віддати певну кількість контенту, перш ніж зможуть завантажувати дані на свій комп'ютер.

Freenet також може розглядатись як small world network.

Протокол Freenet призначено для використання в мережі зі складною топологією, такій як Інтернет (Internet Protocol). Кожен вузол знає лише про деяку кількість інших вузлів, з якими він може з'єднатись безпосередньо (його концептуальні «сусіди»), але будь-який вузол може бути сусідом для будь-якого іншого; до уваги не береться ієрархія чи будь-яка інша структура. Кожне повідомлення маршрутизується по мережі шляхом передачі від сусіда до сусіда, доки не досягне цілі. Передаючи повідомлення сусідові, вузол не знає й не турбується про те, чи передасть сусід повідомлення наступному вузлові, чи він є кінцевою ціллю або першоджерелом повідомлення. Це зроблено для захисту анонімності користувачів та авторів публікацій.

Кожен вузол містить сховище даних, що містить документи, асоційовані з ключами, і таблицю маршрутів, що пов'язує вузли з записами про їх продуктивність отримання різних ключів.

Протокол[ред.ред. код]

Типова послідовність запиту. Запит передається через мережу від вузла до вузла, досягаючи мертвої кінцевої точки (крок 3) або повтору (крок 7), перш ніж знаходить потрібний файл.

Протокол Freenet використовує key-based routing протокол маршрутизації на основі ключів, подібно до розподілених хеш-таблиць. Алгоритм маршрутизації помітно змінився у версії 0.7. До версії 0.7 Freenet використовував евристичний алгоритм, де кожен вузол не мав фіксованого місця, і маршрутизація базувалась на тому, на якому вузлі обслуговувався ключ, найближчий до ключа, який було отримано (у версії 0.3), або той, який оцінюється як швидший (у версії 0.5). В обох випадках, нові з'єднання інколи додавались до downstream nodes (тобто, вузла, що відповів на запит) коли запити було виконано, і старі вузли відхилялись у порядку найменшого попереднього використання (чи близькому до того). Дослідження Oskar Sandberg (протягом розробки версії 0.7) показує, що це «вкладення шляхів» є критичним, і що дуже простий алгоритм маршрутизації will suffice provided there is path folding.

Недоліком цього є те, що атакеру дуже легко знаходити вузли Freenet і з'єднуватися з ними, оскільки кожен вузол безперервно намагається відшукати нові з'єднання. У версії 0.7, Freenet підтримує як режим 'Opennet' (подібний до старих алгоритмів, але простіший), так і 'Darknet' (всі з'єднання вузлів встановлюються вручну, тому лише ваші друзі знають IP-адресу вашого вузла). Darknet менш зручний, але набагато стійкіший до віддалених атакерів.

Ця зміна потребувала суттєвих змін в алгоритмі маршрутизації. Кожен вузол має локацію, яка є числом у проміжку від 0 до 1. Коли зроблено запит ключа, вузол спершу перевіряє локальне сховище даних. Якщо його не знайдено, хеш ключа замінюється іншим числом у цьому ж діапазоні, і запит маршрутизується до вузла, локація якого найближча до ключа. Це продовжується, доки не станеться одна з подій: ліміт спроб буде перевищено, більш не залишиться вузлів для пошуку, або дані буде знайдено. Якщо дані знайдено, вони кешуються на кожному вузлі по всьому шляху. Таким чином, нема єдиного вузла джерела для ключа, і спроби відшукати його справжнє розташування призведуть лише до ще ширшого кешування. Той же принцип використовується при розміщенні документа в мережі: дані маршрутизуються відповідно до ключа, доки він не дійде до межі, і якщо не знайдено жодного документа з таким же ключем, він розміщується на кожному вузлі. Якщо знайдено старіші дані, старіші дані розповсюджуються й повертаються авторові, відбувається «колізія» вставки.

Посилання[ред.ред. код]

  1. «Freenet: People». 2008-09-22. Архів оригіналу за 2013-07-21. Процитовано 2008-09-22. 
  2. Beckett, Andy (2009-11-26). «The dark side of the internet». The Guardian. Процитовано 26 November 2009. 
  3. а б The Philosophy behind Freenet