Freenet
| Ця стаття містить перекладений текст, що потребує уваги від когось, хто вільно володіє мовою оригіналу та українською. (січень 2012) |
FProxy 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 намагається знищити мождливість для будь-якої групи нав'язувати свою віру чи цінності у будь-якій інформації. Although багато держав цензурують обмін інформацією, всі вони поділяють 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 здебільшого розбиваються на безліч малих блоків, з додатковими блоками для забезпечення redundancy. Кожен блок обробляється незалежно, тобто, частини одного файла можуть розміщуватись на багатьох різних вузлах.
Інформаційний потік у Freenet має відмінності порівняно з такими мережами, як eMule чи BitTorrent:
- Користувач, що бажає відкрити доступ до файлу чи оновити фрісайт, «публікує» файл «у мережі»
- Після того, як «публікацію» завершено, користувач може вимкнути свій вузол, оскільки файл розміщено в мережі (за межами його комп'ютера). Файл лишається доступним для інших користувачів, незалежно від того, чи перебуває в мережі вузол, який його опублікував. Жоден з вузлів не відповідає за контент — натомість, його копії зберігаються на кількох різних вузлах.
Дві переваги такої схеми — висока надійнійсть та анонімність. Інформація лишається доступною, навіть якщо її автор поза мережею, і при цьому анонімно поширюється на багатьох хостингових вузлах у вигляді зашифрованих блоків, а не цілісних файлів. Freenet також невразливий до типової проблеми торентів — нестачі «сідів» (роздавачів) чи повних копій файла або торента.
Ключовий недолік цього методу зберігання — жоден з вузлів не відповідає за жоден фрагмент даних. Якщо фрагмент даних деякий час не дістають з мережі, а вузол продовжує отримувати нові дані, час від часу він скидає старі дані, коли його виділений дисковий простір остаточно заповнюється. Таким чином, Freenet схильний забувати дані, які не перечитуються регулярно (see also Effect).
Хоча користувачі можуть розміщувати дані в мережі, нема можливості видалити ці дані. У зв'язку з анонімністю, жоден вузол не знає, хто є «власником» фрагменту даних. Дані можуть бути видалені лише в один спосіб — якщо користувачі певний час не роблять запитів до цих даних.
Мережа [ред.]
Мережа складається з багатьох вузлів, що обмінюються між собою повідомленнями. Як правило, a host комп'ютер у мережі запускає програму, що працює як вузол, і вона приєднується інших хостів, на яких запущена та ж програма, що формує велику розподілену мережу рівноправних вузлів. Деякі вузли є кінцевими, з яких документи запитуються й подаються користувачеві-людині. Інші вузли служать лише для маршрутизації даних. всі вузли спілкуються один з одним однаково — нема окремих «клієнтів» чи «серверів». Вузол не має можливості обмежувати інший вузол, за винятком здатності розміщувати та отримувати дані, пов'язані з ключем. Це не схоже на більшість інших P2P мереж, де адміністратори вузла можуть вводити систему рейтингів, коли користувачі мають віддати певну кулькість контенту, перш ніж зможуть завантажувати дані на свій комп'ютер.
Freenet також може розглядатись як small world network.
Протокол Freenet призначено для використання в мережі зі складною топологією, такій як Інтернет (Internet Protocol). Кожен вузол знає лише про деяку кількість інших вузлів, з якими він може з'єднатись безпосередньо (його концептуальні «сусіди»), але будь-який вузол може бути сусідом для будь-якого іншого; до уваги не береться ієрархія чи будь-яка інша структура. Кожне повідомлення маршрутизується по мережі шляхом передачі від сусіда до сусіда, доки не досягне цілі. Передаючи повідомлення сусідові, вузол не знає й не турбується про те, чи передасть сусід повідомлення наступному вузлові, чи він є кінцевою ціллю або першоджерелом повідомлення. Це зроблено для захисту анонімності користувачів та авторів публікацій.
Кожен вузол містить сховище даних, що містить документи, асоційовані з ключами, і таблицю маршрутів, що пов'язує вузли з записами про їх продуктивність отримання різних ключів.
Протокол [ред.]
Протокол Freenet використовує key-based routing протокол маршрутизації на основі ключів, подібно до розподілених хеш-таблиць. Алгоритм маршрутизації помітно змінився у версії 0.7. До версії 0.7 Freenet використовував евристичний алгоритм, де кожен вузол не мав фіксованого місця, і маршрутизація базувалась на тому, на якому вузлі обслуговувався ключ, найближчий до ключа, який було отримано (у версії 0.3), або той, який оцінюється to як швидший (у версії 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. Коли зроблено запит ключа, вузол спершу перевіряє локальне сховище даних. Якщо його не знацдено, хеш ключа замінюється іншим числом у цьому ж діапазоні, і запит маршрутизується до вузла, локація якого найближча до ключа. Це продовжується, доки не станеться одна з подій: ліміт спроб буде перевищено, більш не залишиться вузлів для пошуку, або дані буде знайдено. Якщо дані знайдено, вони кешуються на кожному вузлі по всьому шляху. Таким чином, нема єдиного вузла джерела для ключа, і спроби відшукати його справжнє розташування призведуть лише до ще ширшого кешування. Той же принцип використовується прирозміщенні документа в мережі: дані маршрутизуються відповідно до ключа, доки він не дійде до межі, і якщо не знайдено жодного документа з таким же ключем, він розміщується на кожному вузлі. Якщо знайдено старіші дані, старіші дані розповсюджуються й повертаються авторові, відбувається «колізія» вставки.
Посилання [ред.]
- ↑ «Freenet: People». 2008-09-22. Процитовано 2008-09-22.
- ↑ Beckett, Andy (2009-11-26). «The dark side of the internet». The Guardian. Процитовано 26 November 2009.
- ↑ а б The Philosophy behind Freenet
