mirror of
https://github.com/Revertron/Alfis
synced 2024-11-17 03:25:43 +00:00
87 lines
14 KiB
Markdown
87 lines
14 KiB
Markdown
# Мотивация
|
||
На сегодняшний день Система Доменных Имён (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 хэша, и если вы не покажете ваш домен миру, то о нём никто не узнает (если забыть о брутфорсе).
|