Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Axiom-protocol — Цель Axiom — предоставить полностью анонимную, децентрализованную и устойчивую к цензуре платформу социальных сетей. Для этого архитектура строго разделена на протокол и клиенты. Данный репозиторий определяет протокол, смарт-контракт и стандартизированную структуру данных в сети Ethereum Layer 2. | Kitploit
Инструменты/GitHubGitHub/kl4v3/axiom-protocol
Аутентификация и авторизацияИнструменты шифрования/дешифрованияУправление идентификациейКриптографияКонфиденциальностьСоциальная инженерия
GitHubkl4v3/axiom-protocol

Axiom-protocol

Репозиторий
4 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

Цель Axiom — предоставить полностью анонимную, децентрализованную и устойчивую к цензуре платформу социальных сетей. Для этого архитектура строго разделена на протокол и клиенты. Данный репозиторий определяет протокол, смарт-контракт и стандартизированную структуру данных в сети Ethereum Layer 2.

Поделиться

Axiom: Децентрализованный и устойчивый к цензуре протокол связи

🚀 Детали развертывания в реальном времени

  • Сеть: Arbitrum One (Mainnet L2)
  • ID сети: 42161
  • RPC-адрес: https://arb1.arbitrum.io/rpc (или любой кастомный Alchemy/Infura endpoint)
  • Адрес прокси-контракта Axiom: 0xc11CFf8111e8b1F055eba095Efb679a38Abe6b63

(Примечание: Axiom использует UUPS Upgradeable Proxy архитектуру. Все взаимодействия клиентов должны всегда направляться на этот адрес прокси, а не на нижележащий контракт реализации).

📖 Как читать данные (Индексатор / Клиенты)

Клиентам никогда не следует пытаться читать посты протокола напрямую из переменных состояния смарт-контракта (поскольку сохранение газа является приоритетом, содержимое не хранится в состоянии). Вместо этого клиенты должны индексировать события блокчейна.

✍️ Как публиковать данные (Отправка транзакций клиентом)

Чтобы опубликовать данные в протоколе, клиенты должны отправить транзакцию, вызывающую функцию publishAxiom на прокси-контракте.


Цель Axiom — предоставить полностью анонимную, децентрализованную и устойчивую к цензуре платформу социальных сетей.

Чтобы сделать это возможным, архитектура строго разделена: основа (протокол) и клиенты (программное обеспечение). Этот репозиторий определяет эту основу — смарт-контракт и стандартизированную структуру данных на сети Ethereum Layer 2.

Объем проекта

Протокол закладывает основу платформы:

  • Стандартное соглашение об именовании: Чёткая структура, определяющая, как полезная нагрузка отправляется в смарт-контракт и как клиенты её читают.
  • Неизменность: Блокчейн служит отказоустойчивой и защищённой от взлома базой данных.
  • Фокус на микроблогинг: Протокол не предназначен для больших объёмов ончейн-данных, а следует традиционной концепции микроблогинга (короткие посты). Медиафайлы не хранятся напрямую в цепочке; вместо этого они встраиваются через внешние ссылки при необходимости.
  • Защита от спама: Комиссии за транзакции и одноразовый низкий вступительный взнос для первого поста кошелька предотвращают атаки на раздувание состояния со стороны ботнетов.
  • Маршрутизация безопасности: Протокол обеспечивает разделение сообщений в соответствии с требованиями OPSEC на основе конкретных требований безопасности.

Уровни безопасности протокола

Axiom спроектирован для обеспечения истинной свободы слова для пользователей в странах, где коммуникация ограничена. Протокол различает три уровня безопасности. Предполагается, что пользователи знают, какой уровень безопасности подходит для их конкретной ситуации.

  • Уровень 1: Открытый Коммуникация происходит открыто в виде обычного текста в блокчейне. Все клиенты могут читать и обрабатывать весь трафик. Встраивание ссылок (например, для изображений через сторонних провайдеров) разрешено на этом уровне. Ожидается, что здесь будет происходить стандартное общение в социальных сетях — включая смешные картинки с котиками. Это создаёт важный шум в сети. Уровень менее безопасен с точки зрения чистого отслеживания IP, но посты остаются абсолютно не подлежащими цензуре.
  • Уровень 2: Закрытый Этот уровень предназначен для строгой безопасности. Он поддерживает исключительно сообщения в виде обычного текста. Протокол запрещает здесь медиа-ссылки, чтобы технически исключить любые утечки IP при загрузке клиентами внешнего контента. Пользователи должны самостоятельно обеспечивать анонимное приобретение криптовалюты для оплаты газа.
  • Уровень 3: Зашифрованный Создан для максимальной приватности. Сами сообщения перед отправкой шифруются с помощью AES-256-GCM. В блокчейне сохраняются только метаданные, вектор инициализации (IV) и шифротекст. Только клиенты пользователей, обладающих правильным криптографическим ключом, могут расшифровать и прочитать эти сообщения.

Сетевая безопасность и отслеживание IP (Жесткое правило)

Для всех уровней использование луковой маршрутизации (например, Tor) строго обязательно. Взаимодействие с коммерческими RPC-провайдерами (такими как Infura или Alchemy) раскрывает IP-адрес отправителя в открытом виде. Чтобы закрыть потенциально опасные для жизни уязвимости OPSEC для диссидентов, клиенты обязаны направлять транзакции к RPC-узлам исключительно через сеть Tor.


Стандарты криптографии (Для Уровня 3)

Для сообщений на Уровне 3 все клиенты должны строго соблюдать следующие криптографические стандарты для обеспечения совместимости и предотвращения компрометации безопасности.

  1. Алгоритм шифрования: AES-256-GCM Все полезные нагрузки Уровня 3 должны быть симметрично зашифрованы с использованием AES в режиме GCM с длиной ключа 256 бит. Вектор инициализации (IV/Nonce) должен быть случайным образом перегенерирован для каждого отдельного сообщения и записываться в блокчейн в виде метаданных в открытом виде. Это предотвращает распознавание шаблонов внешними наблюдателями.
  2. Вывод ключа: Argon2id Пользователи вводят читаемые пароли в свои клиенты. Они никогда не должны использоваться напрямую в качестве ключей AES. Клиенты строго обязаны использовать алгоритм хеширования Argon2id. (Примечание: Разработчики должны определить фиксированные параметры для количества итераций и использования памяти внутри клиента, чтобы все генерировали одинаковый ключ).
  3. Обмен ключами: Внеполосный Axiom не занимается обменом ключами в цепочке. Протокол не хранит открытые ключи. Обмен паролем (общим секретом) для конкретного канала является обязанностью пользователей и должен происходить вне сети (например, лично).
  4. Целостность данных AES-GCM генерирует тег аутентификации. Клиенты должны проверять этот тег. Если проверка не удалась, клиент должен молча отбросить сообщение (отбросить).

Структура данных, доставка полезной нагрузки и индексация

Axiom использует гибридную доставку полезной нагрузки (ABI Split). Чтобы смарт-контракту не приходилось распаковывать дорогостоящие форматы данных, данные разделяются перед передачей:

  1. Логические переменные: Уровень (uint8 _level) и вектор инициализации (bytes _iv) передаются как прямые параметры в смарт-контракт, так как они необходимы ему для выполнения правил безопасности.
  2. Непрозрачные данные: Фактическое содержимое сообщения внутренне конструируется клиентом как JSON и сжимается в CBOR (Concise Binary Object Representation). Контракт обрабатывает этот CBOR-пакет "вслепую" и перенаправляет его непосредственно в журнал событий.

Ключи полезной нагрузки (Структура CBOR)

Axiom использует для ключей отдельные буквы, чтобы сэкономить байты. Автор (msg.sender) и временная метка (block.timestamp) опущены, так как смарт-контракт извлекает эти значения защищённым от взлома способом.

  • t (Тип): Целое число. Тип действия.
  • c (Содержимое): Строка/Байты. Текст, имя или шифротекст.
  • h (Хэштеги/Теги): Массив. Опционально. Используется для категоризации (подканалы).
  • m (Подсказка сообщения): Байты (длина 2). Только Уровень 3. 2-байтовый HMAC-хеш, используемый для нечёткой группировки.
  • r (Ответ на): Байты. Опционально. Хеш транзакции ссылающегося поста.

Типы действий (поле t)

  • 0 = Обновление профиля (Связывает адрес кошелька с читаемым именем в поле c)
  • 1 = Пост (Стандартное сообщение)
  • 2 = Ответ (r требует хеш исходного поста)
  • 3 = Лайк (r требует хеш поста)
  • 4 = Отмена лайка (Отменяет Тип 3)
  • 5 = Репост/Ретвит (r требует хеш поста)
  • 6 = Отмена репоста (Отменяет Тип 5)

Подканалы и тёмная маршрутизация (поле h)

  • Уровень 1 и 2: Теги передаются в открытом виде.
  • Уровень 3 (Зашифрованный): Передача тегов в открытом виде строго запрещена на уровне протокола, так как это раскрывает метаданные. Теги должны быть зашифрованы точно так же, как содержимое (c). Для внешних наблюдателей теги поэтому полностью невидимы (Тёмная маршрутизация).

Уровень 3: Нечёткая группировка (поле m)

Поскольку теги на Уровне 3 зашифрованы, клиентам теоретически приходится пытаться расшифровать каждое сообщение (пробное дешифрование). Чтобы предотвратить перегрузку ЦП, Axiom использует подсказки сообщений:

  • Отправитель вычисляет HMAC-SHA256(AES_Key, IV) и помещает первые 2 байта как поле m в полезную нагрузку CBOR.
  • Получатели вычисляют эту подсказку для своих локально сохранённых паролей. Дорогостоящий процесс дешифрования выполняется только при совпадении. Это отфильтровывает 99,99% нерелевантного трафика без утечки метаданных.

Идентификация: Глобальные профили и частные псевдонимы

Axiom обрабатывает идентификацию с полной прозрачностью: Адрес кошелька L2 (msg.sender) является единственной социальной и финансовой идентичностью. Протокол полностью возлагает на пользователя ответственность за финансовую OPSEC (например, использование миксеров и мостов для анонимного приобретения токенов на газ).

Действие по обновлению профиля (t: 0) ведёт себя по-разному в зависимости от выбранного уровня безопасности:

  1. Глобальная идентичность (Уровень 1 и 2) Если кошелёк отправляет незашифрованное обновление профиля, оно служит глобальным заявлением. Кошелёк становится известен в сети под этим именем. Все видят это имя (например, для создания публичной репутации как @Dissident99).
  2. Частные псевдонимы и прозвища (Уровень 3) Если кошелёк отправляет обновление профиля в зашифрованной полезной нагрузке Уровня 3, оно создаёт изолированный частный псевдоним. Этот псевдоним виден только внутри расшифрованного подканала пользователям, знающим пароль. Это позволяет псевдонимно распределять роли в закрытых группах без изменения глобальной идентичности. Приоритет рендеринга: Для Уровня 3 интерфейс должен сначала проверять, существует ли локальный псевдоним, и только затем использовать глобальное имя.

Архитектура смарт-контракта и обеспечение OPSEC

Axiom полагается на ончейн-проверку с сложностью O(1). Чтобы поддерживать затраты на газ на абсолютном минимуме, смарт-контракт выполняет только базовые криптографические проверки. Все ресурсоёмкие проверки содержимого выносятся на сторону клиентов (Layer 2).

1. Ончейн-проверка (Смарт-контракт)

Контракт действует как неподкупный вышибала. Если полезная нагрузка не соответствует строгим правилам, транзакция отменяется (revert).

root@kitploit:~
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

contract Axiom is Initializable, UUPSUpgradeable, OwnableUpgradeable {
    uint256 public entryFee;
    mapping(address => uint8) public walletPath; // 0=New, 1=PathA(Level1), 2=PathB(Level2/3)

    event AxiomPost(address indexed sender, uint8 level, bytes iv, bytes cbor, uint256 timestamp);

    /// @custom:oz-upgrades-unsafe-allow constructor
    constructor() {
        _disableInitializers();
    }

    function initialize() initializer public {
        __Ownable_init(msg.sender);
        entryFee = 0.0001 ether;
    }

    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}

    function publishAxiom(
        uint8 _level,
        bytes calldata _iv,
        bytes calldata _cbor
    ) external payable {
        require(_level >= 1 && _level <= 3, "Invalid level");

        uint8 requiredPath = (_level == 1) ? 1 : 2;
        uint8 currentPath = walletPath[msg.sender];

        if (currentPath == 0) {
            require(msg.value >= entryFee, "Anti-Sybil: Insufficient entry fee");
            walletPath[msg.sender] = requiredPath;
        } else {
            require(msg.value == 0, "Fee already paid");
            require(currentPath == requiredPath, "OPSEC Violation: Wallet is tainted");
        }

        if (_level == 3) {
            require(_iv.length == 12, "Level 3 strictly requires a 12-byte IV");
        } else {
            require(_iv.length == 0, "Level 1 and 2 require strictly empty IV");
        }

        emit AxiomPost(msg.sender, _level, _iv, _cbor, block.timestamp);
    }

    function withdraw() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }
}
  • Двунаправленная порча кошелька (Принудительная изоляция): Если кошелёк впервые публикует на Уровне 1, ему навсегда блокируется доступ к Уровню 2/3. Если он сначала публикует на Уровне 2 или 3, блокируется Уровень 1.
  • Обязательные параметры: Для Уровня 3 контракт строго требует 12-байтовый IV.

2. Внецепочечная проверка (Со стороны клиентов)

Если пост нарушает правила протокола, клиент должен молча отбросить его (локальное удаление).

  • Блокировщик ссылок Уровня 2: Клиенты сканируют обычный текст (c) сообщений Уровня 2. Если обнаружены URL-адреса, IP-адреса или типичные медиа-теги, пост полностью блокируется.
  • Самоочистка: Если злоумышленник засоряет сеть ссылками на Уровне 2, он платит комиссию за газ, но ни один корректный клиент Axiom никогда не отобразит эти сообщения.

Инфраструктура и рекомендуемая архитектура клиента

Axiom развёрнут в сети Ethereum Layer 2 (L2) (например, Arbitrum Nova).

Чтобы избежать перегрузки мобильных устройств (время автономной работы, ограничения хранилища, ограничения WebAssembly для Argon2id), Axiom поддерживает высокопроизводительную архитектуру клиента:

  • Axiom Core (Самостоятельно размещённый узел): Сервер/Docker-контейнер (например, работающий на NAS), который читает блокчейн через RPC, индексирует события и нативно выполняет ресурсоёмкую криптографию.
  • Axiom UI (Тонкий клиент): Мобильное приложение или веб-интерфейс, который взаимодействует исключительно с собственным Axiom Core пользователя через API.

Получение данных и EIP-4444

Клиенты не загружают всё состояние блокчейна. Они фильтруют событие AxiomPost смарт-контракта, которое содержит все необходимые данные в открытом виде (Отправитель, Уровень, IV, CBOR, Временная метка).

Поскольку узлы Ethereum со временем будут отбрасывать исторические данные (события старше 365 дней) в соответствии с EIP-4444, протокол рекомендует, чтобы локальные Axiom Core служили децентрализованными архивами, сохраняя базы данных постоянно.


Пример рабочего процесса: Публикация на Уровне 3

Чтобы проиллюстрировать, как архитектура работает на практике, вот полный проход по жизненному циклу.

Сценарий: Алиса хочет опубликовать сообщение "Встреча в 20:00" в подканале "AxiomDev". Группа ранее договорилась офлайн о пароле "Secret123".

Шаг 1: Локальная подготовка и шифрование (Axiom Core)

Axiom Core Алисы выполняет вычислительно сложную работу:

  1. Вывод ключа: Он преобразует пароль в 256-битный ключ AES с помощью Argon2id.
  2. Генерация IV: Генерируется случайный 12-байтовый вектор инициализации (например, 0x12ab34cd56ef789012ab34cd).
  3. Шифрование: Содержимое и тег ("AxiomDev") шифруются с помощью AES-GCM.
  4. Генерация подсказки: Вычисляется 2-байтовый HMAC-хеш для нечёткой группировки (m: "0xa1b2").

Шаг 2: Построение полезной нагрузки (Сериализация CBOR)

Поскольку уровень и IV передаются напрямую в контракт, они исключаются из объекта CBOR.

Внутреннее представление JSON:

root@kitploit:~
{
  "t": 1,
  "c": "0x8a4f...",
  "h": ["0x9b5e..."],
  "m": "0xa1b2"
}

Этот JSON сжимается в сырой массив байтов CBOR (0xa3617401...) для экономии газа.

Шаг 3: Вызов смарт-контракта (Взаимодействие с блокчейном)

Алиса вызывает функцию контракта. Важно: вызов строго направляется через Tor!

(Примеры для L3 и L1:)

root@kitploit:~
// Пример 1: Клиент вызывает смарт-контракт для зашифрованного поста Уровня 3
await axiomContract.publishAxiom(
    3,                                      // _level: 3
    "0x12ab34cd56ef789012ab34cd",           // _iv: 12 байт шестнадцатеричная строка, требуется
    "0xa3617401616358208a4f..."             // _cbor: упакованная шестнадцатеричная строка CBOR
);

// Пример 2: Клиент вызывает смарт-контракт для публичного поста Уровня 1
await axiomContract.publishAxiom(
    1,                                      // _level: 1
    "0x",                                   // _iv: строго пустой массив байтов
    "0xa361740161634c48656c6c6f204178..."   // _cbor: упакованная шестнадцатеричная строка CBOR
);

Затем смарт-контракт генерирует событие:

Event: AxiomPost(Sender: 0xAlice..., Level: 3, IV: 0x12ab..., CBOR: 0xa361..., Timestamp: 1710425890)

Шаг 4: Индексация и пробное дешифрование (Получатель)

Axiom Core Боба прослушивает блокчейн и получает событие.

  1. Локальное хранение и распознавание: Событие записывается в локальную базу данных. Core определяет Level 3 и распаковывает CBOR, чтобы получить доступ к содержимому, тегам и подсказке m.
  2. Пробное дешифрование: Core проверяет 2-байтовую подсказку m по сохранённым паролям Боба.
  3. Совпадение и пересылка: Подсказка совпадает с "Secret123". Тег GCM подтверждает, что полезная нагрузка не была изменена. Данные дешифруются в оперативной памяти и отправляются на смартфон Боба через локальный API. Сообщение "Встреча в 20:00" появляется в ленте "#AxiomDev".
  4. Неизвестный остаток: Для пользователей без правильного пароля проверка подсказки не проходит. Этот нечитаемый шум данных автоматически удаляется после истечения скользящего буфера (например, 30 дней).
Скачать инструмент