2
0
mirror of https://github.com/Revertron/Alfis synced 2024-11-17 03:25:43 +00:00
Alfis/docs/about_ru.md
2021-04-14 14:09:41 +02:00

87 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Мотивация
На сегодняшний день Система Доменных Имён (DNS) является скорее единственной областью, которая не развивается с древних, по меркам Интернета, времён.
Мы защитили трафик HTTP с помощью SSL/TLS, изобрели HTTP/2, скоро уже будет внедряться HTTP3 на основе UDP/QUIC, но DNS остаётся таким же, каким был 20 лет назад.
Да, вы скажете, что появился и уже состарился DNSCrypt, уступив место таким протоколам как DNS-over-HTTPS, DNS-over-TLS, и даже DNS-over-QUIC.
Но это ведь только протоколы доступа к рекурсивным серверам DNS, а не изменение _самой системы_!
А в чём проблема текущей системы доменов, спросите вы? Проблем довольно много, вот некоторые из них.
1. Доменная система в данное время централизована. Каждая доменная зона принадлежит какой-то корпорации, либо государственному комитету по доменам.
И управление этими зонами иногда превращается в нечто странное, как недавно было с доменной зоной `.org`. Ваш домен может быть экспроприирован, удалён, либо заблокирован по любой странной причине.
2. Доменная система коммерциализирована. Да, за домены надо платить. Но проблема даже не в цене, хотя иногда она слишком завышена, но в том, что вы иногда даже не знаете сколько посредников участвуют в регистрации домена, и как формируется цена.
Часто регистрация домена похожа на подсаживание на иглу - первая доза почти бесплатно, а через год выкатывают полную цену! То есть можно зарегистрировать домен на первый год за 1 доллар, а за продление потребуют 40!
3. Ваш домен не конфиденциален. Да, у многих доменных зон существуют регулярно обновляемые списки недавно зарегистрированных доменов.
Удивлены? Да, многие спамеры о них знают, и буквально через пару часов на адреса вроде `webmaster@example.tld` и `admin@example.tld` начинают пытаться слать рекламные письма.
4. Кроме того, текущая система доменов не позволяет достаточно анонимно пользоваться анонимными (и не очень) сетями, вроде i2p, Tor и Yggdrasil.
5. Но самое главное, это безопасность. Да, любой клиент может использовать зашифрованный канал до рекурсивного сервера, которому он в данный момент доверяет, но ведь дальше трафик DNS совершенно не защищён.
Самая распространённая система защиты ответов DNS-сервера от подделки это DNSSEC, но и она не лишена [большого числа недостатков](https://ru.wikipedia.org/wiki/DNSSEC#Проблемы_внедрения_и_недостатки), вроде централизованности, частичной незащищённости, увеличения трафика и накладных расходов.
Именно поэтому она внедряется очень медленно, только крупными компаниями.
Если я вас убедил, или хотя бы заинтересовал, читайте дальше.
# Требования к новой системе
* Использование системы должно быть быстрым, анонимным и общедоступным.
* Создание и владение доменом должно быть анонимным.
* Система не должна иметь централизованного управления.
* Цензура информации в системе, то есть удаление или стороннее изменение, должны быть невозможны.
* Искажение или исчезновение данных на некоторых серверах не должно влиять на консистентность данных на других узлах и на функционирование всей системы.
* Старые, необновляемые и неиспользуемые домены должны освобождаться.
* Система должна быть защищена от сквоттеров.
# Решение ALFIS
ALFIS это ALternative Free Identity System. Альтернативная бесплатная система идентификаторов. Кроме доменов в будущем планируется добавить хранение сертификатов TLS, и каких-нибудь других ключей. Например, для PGP.
Данная система построена на базе технологии Blockchain, то есть системы блоков, связанных друг с другом криптографически. Никто не может подменить какой-то старый блок, не изменив все блоки после него.
## Как работает этот блокчейн?
Чтобы внести какой-то блок в цепочку (или в сеть) нужно проделать некоторую работу, это называется PoW, или доказательством проделанной работы.
В упрощённом виде это выглядит как перебор чисел и последовательное хэширование блока, пока хэш от блока не будет удовлетворять определённым условиям, прописанным в коде ПО.
То есть, "регистрация домена" это выполнение работы и рассылка полученного блока другим узлам сети.
Чтобы добиться одинакового состояния цепи на всех узлах, то есть консистентности данных, используется специальный алгоритм консенсуса.
### Консенсус сети
Самое главное в консенсусе это однозначность определения того, какой блок из двух претендентов выбрать.
То есть, если в сеть одновременно вышли несколько блоков с одинаковым индексом (высотой цепи),
то когда они оба дойдут до любого узла, этот узел сможет однозначно выбрать тот, который "лучше" по критериям, прописанным в ПО.
Таким образом, у большинства узлов (если они не модифицированы и не злонамеренны) будет самая длинная цепочка блоков.
Важные критерии отбора блоков:
* Криптографическая консистентность и консистентность данных. Например, не допускаются блоки с временем/датой из далёкого будущего (дальше 1 минуты).
* Наличие права на изменение существующих идентификаторов (доменов), либо на его создание, если его ещё нет.
Остальное в следующем разделе.
### Защита от сквоттеров и злоумышленников
В текущей системе доменных имён единственной защитой от регистрации огромного количества доменов являются деньги.
Если бы за домены не приходилось платить, то мы быстро пришли бы к отсутствию свободных доменов в любой зоне, и пришлось бы их выкупать у кибер-сквоттеров.
А так как эта система Free, что следует из названия, то надо заранее предпринимать меры противодействия, и закладывать их в сам механизм функционирования.
1. Для доступа к системе нужна регистрация.
Нет, не ввод e-mail или номера телефона на сайте админа, а майнинг пары ключей `ed25519` для подписи своих блоков.
Но ведь генерация пары ключей эллиптических кривых плёвое дело, скажете вы! Да, это так. Но у нас требуется такая пара ключей, чтобы хэш публичного ключа содержал определённое количество нулевых бит в самом начале.
Да, как в блоках Биткоина. Если конкретно, то 23 нулевых бита, а алгоритм хэширования Blakeout (о нём дальше).
2. Каждая пара ключей может добавлять один домен в земные сутки, чаще сеть не примет. Именно для этого и был введён майнинг ключей, так как если бороться со сквоттерами с помощью усложнения майнинга самих доменов, то сеть потеряет своё удобство, так как майнинга доменов надо будет ждать целую вечность.
А так получается, что легитимный пользователь, единожды намайнивший ключи, довольно просто сможет создавать нужные ему домены. С интервалом в сутки.
3. Начиная с 35-го блока включается режим подписей блоков.
Каждый блок, содержащий транзакцию, то есть создающий или меняющий какой-нибудь домен, должен быть подписан группой узлов, обладающих блоками перед текущим блоком.
Выбираются 7 публичных ключей из блоков блокчейна, владельцы которых должны подписать блок.
Вычисление происходит исходя из последних 8 байт подписи подписываемого блока.
Блок должен быть подписан минимум четырьмя валидаторами. То есть, после 25-го блока каждый "полный" блок подписывается 4 пустыми блоками из 7 возможных.
## Дополнительные возможности
ALFIS содержит несколько особенностей, которых нет в обычном DNS.
* Неограниченное количество доменных зон. Да, поддерживаемые зоны майнятся так же, как и домены, только с повышенной сложностью.
И эти зоны становятся доступны каждому в сети.
Но доменные зоны из списка IANA, OpenNIC, и других альтернативных систем, недоступны для добавления.
Так что опасаться, что кто-то намайнит `.com` не следует.
* У доменов есть поле `contacts`, которое позволит вам вписать свои контакты, ссылки на сайт или что-то подобное. Это как WHOIS, только по желанию.
* Есть возможность указать нескольких владельцев домена для совместного управления.
* Конечно же, есть передача домена другому владельцу.
* Приватность доменов. Да, домены хранятся в виде двойного Sha256 хэша, и если вы не покажете ваш домен миру, то о нём никто не узнает (если забыть о брутфорсе).