GNUnet
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2019 г. ) |
![]() | Эту статью необходимо обновить . ( апрель 2019 г. ) |
![]() | |
![]() GNUnet с GTK+ пользовательским интерфейсом | |
Разработчик(и) | GNUnet эВ [ 1 ] |
---|---|
Первоначальный выпуск | 5 ноября 2001 г |
Стабильная версия | 0.19.4 (1 апреля 2023 г [ 2 ] ) [±] |
Репозиторий | |
Написано в | С [ 3 ] |
Операционная система | официальные: Свободное программное обеспечение операционных систем ( Linux , FreeBSD , NetBSD , OpenBSD ); неофициально: Другие операционные системы ( OS X , Windows ) |
Доступно в | на испанском, на английском, на русском, на немецком, на французском |
Тип | Анонимный P2P , Друг-другу |
Лицензия | 2018: AGPL-3.0 или более поздняя версия [ а ] [ 4 ] 2007: GPL-3.0 или новее [ б ] 2001: GPL-2.0 или новее [ с ] |
Веб-сайт | гнунет |
Часть серии о |
Обмен файлами |
---|
![]() |

GNUnet это программная платформа для децентрализованных одноранговых — сетей и официальный пакет GNU . Платформа предлагает шифрование каналов , обнаружение одноранговых узлов , распределение ресурсов , связь по множеству транспортных средств (таких как TCP , UDP , HTTP , HTTPS , WLAN и Bluetooth ) и различные базовые одноранговые алгоритмы для маршрутизации , многоадресной рассылки и оценки размера сети. [ 5 ] [ 6 ]
Базовая топология сети GNUnet представляет собой ячеистую сеть . GNUnet включает в себя распределенную хеш-таблицу (DHT), которая представляет собой рандомизированный вариант Kademlia , который по-прежнему может эффективно маршрутизировать данные в сетях малого мира . GNUnet предлагает опцию « топологии F2F », позволяющую ограничить соединения только доверенными друзьями пользователей. Друзья друзей пользователей (и так далее) могут затем косвенно обмениваться файлами с компьютером пользователя, никогда не используя его IP-адрес напрямую.
GNUnet использует унифицированные идентификаторы ресурсов (не одобренные IANA , хотя заявка была подана). [ когда? ] URI GNUnet состоят из двух основных частей: модуля и идентификатора модуля. URI GNUnet имеет форму gnunet://module/identifier
где модуль — это имя модуля, а идентификатор — это строка, специфичная для модуля.
Основная кодовая база написана на C , но существуют привязки на других языках для создания API для разработки расширений на этих языках. GNUnet является частью проекта GNU . он вызвал интерес в хакерском сообществе После разоблачения PRISM . [ 7 ]
GNUnet состоит из нескольких подсистем, наиболее важными из которых являются транспортная и базовая подсистемы. [ 8 ] Транспортная подсистема обеспечивает небезопасную связь на канальном уровне, а ядро обеспечивает обнаружение и шифрование одноранговых узлов. [ 9 ] На основе базовой подсистемы создаются различные приложения.
GNUnet включает в себя различные P2P-приложения в основной дистрибутив платформы, включая обмен файлами, чат и VPN; кроме того, несколько внешних проектов (таких как secushare) также расширяют инфраструктуру GNUnet.
GNUnet не имеет отношения к более старому протоколу Gnutella P2P. Gnutella не является официальным проектом GNU, в отличие от GNUnet. [ 10 ]
Транспорт
[ редактировать ]Первоначально GNUnet использовал UDP в качестве основного транспорта. [ 11 ] Теперь транспортная подсистема GNUnet предоставляет несколько вариантов, таких как TCP и SMTP. [ 12 ]
Порт связи, официально зарегистрированный в IANA , — 2086 ( tcp + udp ). [ 13 ]
Трастовая система
[ редактировать ]GNUnet предоставляет систему доверия, основанную на экономической модели, основанной на избытке. [ 14 ] Идея использования экономической системы взята из сети MojoNation . [ 15 ]
В сети GNUnet нет доверенных лиц, поэтому невозможно поддерживать глобальную репутацию . Вместо этого каждый узел поддерживает собственное доверие для каждого из своих локальных каналов.
Когда ресурсы, такие как полоса пропускания и процессорное время, избытка, одноранговый узел предоставляет их всем запрашивающим соседям, не снижая доверия и не взимая с них иной платы. Когда узел находится в состоянии стресса, он отбрасывает запросы от соседних узлов, имеющих более низкое внутреннее значение доверия. Однако, когда у узла меньше ресурсов, чем достаточно для выполнения всех запросов, он отклоняет запросы тех соседей, которым он меньше доверяет, и взимает плату с других, снижая их доверие.
Обмен файлами
[ редактировать ]Основным приложением на данный момент является анонимный , устойчивый к цензуре обмен файлами, позволяющий пользователям анонимно публиковать или получать информацию любого рода. Протокол GNUnet, обеспечивающий анонимность, называется GAP (протокол анонимности GNUnet). [ 16 ] GNUnet FS может дополнительно использовать GNU libextractor для автоматического аннотирования общих файлов метаданными .
Кодировка файла
[ редактировать ]Файлы, совместно используемые с GNUnet, закодированы ECRS (кодирование для совместного использования без цензуры). [ 17 ]
Весь контент представлен в виде GBlocks. Каждый GBlock содержит 1024 байта. Существует несколько типов GBlocks, каждый из которых служит определенной цели. Любой ГБблок однозначно идентифицируется по хешу RIPEMD-160. .
DBlocks хранит фактическое содержимое файла и ничего больше. Файл разбивается по границе 1024 байта, а полученные фрагменты сохраняются в DBlocks. Блоки DBlock связаны в дерево Меркла с помощью блоков IBlock, в которых хранятся идентификаторы DBlock.
Блоки шифруются симметричным ключом, полученным из когда они хранятся в сети.
Вопросы и ответы
[ редактировать ]Протокол анонимности GNUnet состоит из запросов и ответов. В зависимости от загрузки узла пересылки сообщения пересылаются на ноль или более узлов.
Запросы используются для поиска контента и запроса блоков данных.
Запрос содержит идентификатор ресурса, адрес ответа, приоритет и TTL (время жизни).
Идентификатор ресурса данных это тройной хеш . [ 18 ] Узел, который отвечает на запрос, предоставляет чтобы доказать, что он действительно имеет запрошенный ресурс, не предоставляя к промежуточным узлам, поэтому промежуточные узлы не могут расшифровать .
Адрес ответа является основным отличием от протокола Freenet . В то время как во Freenet ответ всегда распространяется обратно по тому же пути, что и запрос, в GNUnet этот путь может быть короче. Узел, получивший запрос, может отбросить его, переслать без перезаписи адреса ответа или использовать косвенный адрес, заменив адрес ответа собственным адресом. Косвенно направляя запросы, одноранговый узел обеспечивает прикрытие трафика для своих собственных запросов, а пересылая их, одноранговый узел избегает быть ссылкой при распространении ответа и сохраняет свою пропускную способность. Эта функция позволяет пользователю пожертвовать анонимностью ради эффективности. Пользователь может указать уровень анонимности для каждой операции публикации, поиска и загрузки. уровень анонимности Нулевой может использоваться для выбора неанонимного обмена файлами. Инфраструктура DHT GNUnet используется только в том случае, если указан неанонимный общий доступ к файлам. Уровень анонимности определяет, какой объем прикрывающего трафика должен иметь узел, чтобы скрыть собственные действия пользователя.
Приоритет определяет, какую часть своего доверия пользователь хочет потратить в случае нехватки ресурсов.
TTL используется для предотвращения слишком длительного пребывания запросов в сети.
URI обмена файлами
[ редактировать ]Идентификатор fs модуля за которыми следует косая черта и значение, специфичное для состоит из chk , sks , ksk или loc, категории. Большинство URI содержат хеши, закодированные в base32hex . [ 19 ]
- chk идентифицирует файлы, обычно:
gnunet://fs/chk/[file hash].[query hash].[file size in bytes]
- Хэш файла — это хэш открытого текстового файла, который позволяет расшифровать его после загрузки. Хэш запроса — это хэш самого верхнего GBlock, который позволяет загрузить все дерево GBlocks, содержащее зашифрованный файл. Размер файла необходим для определения формы дерева.
- sks идентифицирует файлы в пространствах имен, обычно:
gnunet://fs/sks/NAMESPACE/IDENTIFIER
- ksk идентифицирует поисковые запросы, обычно:
gnunet://fs/ksk/KEYWORD[+KEYWORD]*
- loc идентифицирует данные на конкретной машине, обычно:
gnunet://fs/loc/PEER/QUERY.TYPE.KEY.SIZE
Примеры
[ редактировать ]Тип URI общего доступа к файлам GNUnet, указывающий на конкретную копию текста лицензии GNU GPL :
gnunet://fs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992
Другой тип URI общего доступа к файлам GNUnet, указывающий на результаты поиска по ключевому слову «gpl»:
gnunet://fs/ksk/gpl
Система имен GNU
[ редактировать ]GNUnet включает в себя реализацию системы имен GNU (GNS), децентрализованную и устойчивую к цензуре замену DNS . В GNS каждый пользователь управляет своими собственными зонами и может делегировать субдомены зонам, управляемым другими пользователями. Поиск записей, определенных другими пользователями, выполняется с использованием DHT GNUnet. [ 20 ] GNS была стандартизирована в РФК 9498 . Реестр GANA управляет доменом верхнего уровня «.alt» в GNS. [ 21 ]
Трансляция протокола
[ редактировать ]GNUnet может туннелировать IP-трафик через одноранговую сеть. При необходимости GNUnet может выполнить трансляцию протокола в процессе IPv4-IPv6. GNUnet предоставляет DNS-шлюз прикладного уровня для прокси-запросов DNS и при необходимости сопоставляет адреса с желаемым семейством адресов. Таким образом, GNUnet предлагает возможную технологию, облегчающую переход на IPv6 . Более того, в сочетании с GNS система трансляции протоколов GNUnet может использоваться для доступа к скрытым службам — службам на основе IP, которые работают локально на каком-то узле в сети и к которым можно получить доступ только путем разрешения имени GNS.
Социальный API
[ редактировать ]Габор X Тот опубликовал в начале сентября 2013 года диссертацию. [ 22 ] представить проект службы социальных сообщений для одноранговой инфраструктуры GNUnet, которая обеспечивает масштабируемость, расширяемость и сквозное зашифрованное соединение. Свойство масштабируемости достигается за счет многоадресной доставки сообщений, а расширяемость становится возможной благодаря использованию PSYC (протокола для синхронных конференций), который обеспечивает расширяемый синтаксис RPC (вызов удаленных процедур), который может развиваться со временем без необходимости обновления программного обеспечения на всех узлах. в сети. Еще одной ключевой функцией, обеспечиваемой уровнем PSYC, являются каналы многоадресной рассылки с отслеживанием состояния, которые используются, например, для хранения профилей пользователей. Сквозное зашифрованное соединение обеспечивается ячеистой службой GNUnet, на которой построены каналы многоадресной рассылки. Псевдонимные пользователи и социальные места в системе имеют криптографические идентификаторы, идентифицируемые их открытым ключом. Они сопоставляются с запоминающимися человеческими именами с помощью GNS ( система имен GNU ), где каждый псевдоним имеет зону, указывающую на его места.
Это необходимый строительный блок для превращения инфраструктуры GNUnet в полностью одноранговую платформу социальных сетей.
Чат
[ редактировать ]В модуле CADET реализован чат, [ 23 ] для которого интерфейс GTK для GNOME , существует [ 24 ] специально разработан для новых телефонов Linux (таких как Librem 5 или PinePhone ). [ 25 ]
См. также
[ редактировать ]Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ GNUnet.org - О GNUnet eV
- ^ Шанценбах, Мартин (01 апреля 2023 г.). «GNUnet 0.19.4» . gnunet.org . Проверено 03 апреля 2023 г.
- ^ Исходный код GNUnet
- ^ «уведомление о лицензии размещено вверху в одном из исходных файлов репозитория проекта, возможно, в каждом из его исходных файлов» . Проверено 8 июня 2018 г.
GNUnet является свободным программным обеспечением: вы можете распространять его и/или изменять в соответствии с условиями Стандартной общественной лицензии GNU Affero, опубликованной Фондом свободного программного обеспечения, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
- ^ ЭвансПолотГротофф 2012 .
- ^ Гротхофф, Кристиан (10 октября 2017 г.). Система GNUnet (кандидатская диссертация). Университет Ренна 1.
- ^ Гротхофф 2013 .
- ^ FerreiraGrothoffRuth 2003 , Рисунок 1.
- ^ ФеррейраГротоффРут 2003 , II. GNUNET И ТРАНСПОРТНЫЙ УРОВЕНЬ: «Ядро отвечает за межканальное шифрование, привязку идентификаторов узлов к маршрутизируемым адресам и обнаружение одноранговых узлов».
- ^ «Программное обеспечение GNU» . Программное обеспечение — Проект GNU — Фонд свободного программного обеспечения . Фонд свободного программного обеспечения, Inc. Проверено 25 января 2020 г.
- ^ GrothoffPatrascuBennettStef 2002 , 3.1.1 UDP.
- ^ ФеррейраГротоффРут 2003 .
- ^ Имя службы и реестр номеров портов транспортного протокола, стр. 38
- ^ Гротхофф 2003 .
- ^ GrothoffPatrascuBennettStef 2002 , 2.4 Mojo Nation.
- ^ Беннет Гротофф 2003 .
- ^ БеннеттГротоффГорозовПатраску 2002 .
- ^ GrothoffPatrascuBennettStef 2002 , 5.5 Подробнее о запросах.
- ^ Гротгоф, Кристиан. «URI общего доступа к файлам» . www.gnunet.org . Архивировано из оригинала 17 августа 2016 года . Проверено 15 июля 2016 г.
- ^ Вакс, Шанценбах и Гротхофф, 2014 .
- ^ «RFC 9498: Система имен GNU [LWN.net]» . lwn.net .
- ^ Тот, Габор X (05 сентября 2013 г.), Проектирование системы социальных сообщений с использованием многоадресной рассылки с отслеживанием состояния. Архивировано 22 февраля 2014 г. на Wayback Machine - Проверено 28 сентября 2013 г.
- ^ Документация GNUnet.org (14 ноября 2019 г.) Общение с (простым) клиентом - Проверено 14 ноября 2019 г.
- ^ кадет-gtk на GitLab
- ^ GNUnet CADET для мобильного Linux – Reddit
Дальнейшие ссылки
[ редактировать ]- Гротхофф, Кристиан; Патраску, Иоана; Беннетт, Криста; Стеф, Тиберий; Хорозов, Цветан (13 июня 2002 г.). Технический документ GNet (PDF) (Технический отчет). Университет Пердью.
- Беннетт, Криста; Гротхофф, Кристиан; Хорозов, Цветан; Патраску, Иоана (3 июля 2002 г.). Баттен, Линн ; Себерри, Дженнифер (ред.). Эффективный обмен зашифрованными данными . Конспекты лекций по информатике. Шпрингер Берлин Гейдельберг. стр. 107–120. CiteSeerX 10.1.1.19.9837 . дои : 10.1007/3-540-45450-0_8 . ISBN 9783540438618 .
- Феррейра, Роналду; Гротхофф, Кристиан; Рут, Пол (1 мая 2003 г.). «Абстракция транспортного уровня для одноранговых сетей» (PDF) . CCGrid 2003. 3-й Международный симпозиум IEEE/ACM по кластерным вычислениям и сетям, 2003. Материалы . IEEE. стр. 398–405. CiteSeerX 10.1.1.13.5086 . дои : 10.1109/CCGRID.2003.1199393 . ISBN 978-0-7695-1919-7 . S2CID 1928711 .
- Гротхофф, Кристиан с дипломом математика (1 июня 2003 г.). «Распределение ресурсов в одноранговых сетях». Бизнес-информатика . 45 (3): 285–292. дои : 10.1007/BF03254946 . ISSN 0937-6429 . S2CID 4479637 .
- Вакс, Матиас; Шанценбах, Мартин; Гротхофф, Кристиан (2014). «Устойчивая к цензуре, повышающая конфиденциальность и полностью децентрализованная система имен» (PDF) . Криптология и сетевая безопасность . Конспекты лекций по информатике. Том. 8813. стр. 127–142. дои : 10.1007/978-3-319-12280-9_9 . ISBN 978-3-319-12279-3 .
- Беннетт, Криста; Гротхофф, Кристиан (26 марта 2003 г.). «Пробел – практическая анонимная сеть». В Дингледине, Роджер (ред.). Технологии повышения конфиденциальности . Конспекты лекций по информатике. Том. 2760. Шпрингер Берлин Гейдельберг. стр. 141–160. CiteSeerX 10.1.1.125.9673 . дои : 10.1007/978-3-540-40956-4_10 . ISBN 9783540206101 .
- Эванс, Натан; Полот, Бартломей; Гротхофф, Кристиан (21 мая 2012 г.). «Эффективная и безопасная оценка размера децентрализованной сети». В Бестаке, Роберт; Кенкл, Лукас; Ли, Ли Эрран; Видмер, Йорг; Инь, Хао (ред.). Сеть 2012 . Конспекты лекций по информатике. Том. 7289. Шпрингер Берлин Гейдельберг. стр. 304–317. дои : 10.1007/978-3-642-30045-5_23 . ISBN 9783642300448 .
- Гротхофф, Кристиан (1 августа 2013 г.). «Видео: Вы сломали Интернет. Мы создаем GNU» . gnunet.org . Пиратская партия Германия , Берлин . Проверено 4 октября 2013 г.
- Гротхофф, Кристиан (2015). «Архитектура GNUnet: 45 подсистем за 45 минут» (PDF) . Проверено 14 июля 2016 г.
Внешние ссылки
[ редактировать ]- Программное обеспечение проекта GNU
- Бесплатная программа для обмена файлами
- Анонимные сети
- Анонимные сети обмена файлами
- Бесплатное программное обеспечение, написанное на C.
- Кроссплатформенное бесплатное программное обеспечение
- Программное обеспечение, использующее лицензию GNU AGPL.
- Маршрутизация на основе ключей