Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Axiom-protocol — L'objectif d'Axiom est de fournir une plateforme de médias sociaux complètement anonyme, décentralisée et résistante à la censure. Pour rendre cela possible, l'architecture est strictement divisée entre le protocole et les clients. Ce dépôt définit le protocole, le contrat intelligent et une structure de données standardisée sur un réseau Ethereum Layer 2. | Kitploit
Outils/GitHubGitHub/kl4v3/axiom-protocol
Authentification et AutorisationOutils de Chiffrement/DéchiffrementGestion des IdentitésCryptographieProtection de la Vie PrivéeIngénierie Sociale
GitHubkl4v3/axiom-protocol

Axiom-protocol

Voir le dépôt
5il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

L'objectif d'Axiom est de fournir une plateforme de médias sociaux complètement anonyme, décentralisée et résistante à la censure. Pour rendre cela possible, l'architecture est strictement divisée entre le protocole et les clients. Ce dépôt définit le protocole, le contrat intelligent et une structure de données standardisée sur un réseau Ethereum Layer 2.

Partager

Axiom : Protocole de communication décentralisé et résistant à la censure

🚀 Détails du déploiement en direct

  • Réseau : Arbitrum One (L2 principal)
  • ID de chaîne : 42161
  • Point de terminaison RPC : https://arb1.arbitrum.io/rpc (ou tout point de terminaison personnalisé Alchemy/Infura)
  • Adresse du contrat proxy Axiom : 0xc11CFf8111e8b1F055eba095Efb679a38Abe6b63

(Remarque : Axiom utilise une architecture de proxy UUPS (Universal Upgradeable Proxy Standard). Toutes les interactions client doivent toujours être dirigées vers cette adresse de proxy, jamais vers le contrat d'implémentation sous-jacent).

📖 Comment lire les données (Indexeur / Clients)

Les clients ne doivent jamais tenter de lire les publications du protocole directement à partir des variables d'état du contrat intelligent (car préserver le gaz est une priorité, le contenu n'est pas stocké dans l'état). Au lieu de cela, les clients doivent indexer les événements de la blockchain.

✍️ Comment publier des données (Soumission de transaction client)

Pour publier des données sur le protocole, les clients doivent soumettre une transaction on-chain appelant la fonction publishAxiom sur le contrat proxy.


L'objectif d'Axiom est de fournir une plateforme de médias sociaux complètement anonyme, décentralisée et résistante à la censure.

Pour rendre cela possible, l'architecture est strictement divisée : la fondation (le protocole) et les clients (le logiciel). Ce référentiel définit cette fondation — un contrat intelligent et une structure de données standardisée sur un réseau Ethereum Layer 2.

Périmètre du projet

Le protocole établit la fondation de la plateforme :

  • Convention de nommage standard : Une structure claire définissant comment les charges utiles sont envoyées au contrat intelligent et comment les clients les lisent.
  • Immutabilité : La blockchain sert de base de données inviolable et de sécurité.
  • Focus microblogging : Le protocole n'est pas conçu pour de grandes quantités de données on-chain, mais suit plutôt le concept traditionnel du microblogging (messages courts). Les fichiers multimédias ne sont pas stockés nativement sur la chaîne ; ils sont intégrés via des liens externes si nécessaire.
  • Protection anti-spam : Les frais de transaction et des frais d'entrée uniques et faibles pour le premier message d'un portefeuille empêchent les attaques de gonflement d'état par des botnets.
  • Routage de sécurité : Le protocole impose la séparation OPSEC des messages en fonction d'exigences de sécurité spécifiques.

Niveaux de sécurité du protocole

Axiom est conçu pour permettre une véritable liberté d'expression aux utilisateurs dans les pays où la communication est restreinte. Le protocole distingue trois niveaux de sécurité. Il suppose que les utilisateurs savent quel niveau de sécurité est approprié pour leur situation spécifique.

  • Niveau 1 : Ouvert La communication se fait ouvertement en texte clair sur la blockchain. Tous les clients peuvent lire et traiter l'ensemble du trafic. L'intégration de liens (par exemple, pour les images via des fournisseurs tiers) est autorisée à ce niveau. On s'attend à ce que les communications standard des médias sociaux aient lieu ici — y compris les photos de chats amusantes. Cela génère un bruit important dans le réseau. C'est moins sûr en ce qui concerne le suivi IP pur, mais les messages restent totalement incensurables.
  • Niveau 2 : Fermé Ce niveau est destiné à une sécurité stricte. Il ne prend en charge que les messages en texte clair. Le protocole interdit les liens vers des médias ici pour exclure techniquement toute fuite IP lorsque les clients chargent du contenu externe. Les utilisateurs doivent s'assurer indépendamment d'acquérir la cryptomonnaie utilisée pour les frais de gaz de manière anonyme.
  • Niveau 3 : Chiffré Conçu pour une confidentialité maximale. Les messages eux-mêmes sont chiffrés avec AES-256-GCM avant d'être envoyés. Seules les métadonnées, le vecteur d'initialisation (IV) et le texte chiffré sont stockés sur la blockchain. Seuls les clients des utilisateurs qui possèdent la bonne clé cryptographique peuvent déchiffrer et lire ces messages.

Sécurité réseau et suivi IP (Règle stricte)

Pour tous les niveaux, le routage Onion (par exemple, Tor) est strictement obligatoire. Communiquer avec des fournisseurs RPC commerciaux (comme Infura ou Alchemy) divulgue l'adresse IP de l'expéditeur en texte clair. Pour fermer les vulnérabilités OPSEC potentiellement mortelles pour les dissidents, les clients sont tenus de router les transactions vers les nœuds RPC exclusivement via le réseau Tor.


Normes cryptographiques (Pour le niveau 3)

Pour les messages de niveau 3, tous les clients doivent strictement respecter les normes cryptographiques suivantes pour garantir l'interopérabilité et éviter de compromettre la sécurité.

  1. Algorithme de chiffrement : AES-256-GCM Toutes les charges utiles de niveau 3 doivent être chiffrées symétriquement à l'aide d'AES en mode GCM avec une longueur de clé de 256 bits. Le vecteur d'initialisation (IV/Nonce) doit être régénéré aléatoirement pour chaque message et est écrit sur la blockchain en tant que métadonnées en texte clair. Cela empêche la reconnaissance de motifs par des observateurs externes.
  2. Dérivation de clé : Argon2id Les utilisateurs saisissent des mots de passe lisibles par l'homme dans leurs clients. Ceux-ci ne doivent jamais être utilisés directement comme clés AES. Les clients sont strictement tenus d'utiliser l'algorithme de hachage Argon2id. (Remarque : Les développeurs doivent définir des paramètres fixes pour les itérations et l'utilisation de la mémoire dans le client afin que tous génèrent exactement la même clé).
  3. Échange de clés : Hors bande Axiom ne gère pas les échanges de clés on-chain. Le protocole ne stocke aucune clé publique. L'échange du mot de passe (secret partagé) pour un canal spécifique est de la responsabilité des utilisateurs et doit avoir lieu en dehors du réseau (par exemple, en personne).
  4. Intégrité des données AES-GCM génère une étiquette d'authentification (Authentication Tag). Les clients doivent valider cette étiquette. Si la validation échoue, le client doit silencieusement rejeter le message (drop).

Structure des données, livraison de la charge utile et indexation

Axiom utilise une livraison de charge utile hybride (ABI Split). Pour éviter que le contrat intelligent n'ait à décompresser des formats de données coûteux, les données sont séparées avant la transmission :

  1. Variables logiques : Le niveau (uint8 _level) et le vecteur d'initialisation (bytes _iv) sont passés comme paramètres directs au contrat intelligent, car celui-ci en a besoin pour appliquer ses règles de sécurité.
  2. Données opaques : Le contenu réel du message est construit en interne par le client en JSON et compressé en CBOR (Concise Binary Object Representation). Le contrat traite ce paquet CBOR "à l'aveugle" et le transmet directement au journal des événements.

Clés de la charge utile (Structure CBOR)

Axiom utilise des lettres uniques comme clés pour économiser des octets. L'auteur (msg.sender) et l'horodatage (block.timestamp) sont omis, car le contrat intelligent extrait ces valeurs de manière inviolable.

  • t (Type) : Entier. Le type d'action.
  • c (Contenu) : Chaîne/Octets. Le texte, le nom ou le texte chiffré.
  • h (Hashtags/Tags) : Tableau. Optionnel. Utilisé pour la catégorisation (sous-canaux).
  • m (Indice de message) : Octets (longueur de 2). Niveau 3 uniquement. Un hachage HMAC de 2 octets utilisé pour le regroupement flou (fuzzy bucketing).
  • r (Réponse à) : Octets. Optionnel. Le hachage de transaction d'un message référencé.

Types d'actions (champ t)

  • 0 = Mise à jour de profil (Lie l'adresse du portefeuille à un nom lisible dans le champ c)
  • 1 = Publication (Message standard)
  • 2 = Réponse (r nécessite le hachage de la publication originale)
  • 3 = J'aime (r nécessite le hachage de la publication)
  • 4 = Je n'aime plus (Annule le type 3)
  • 5 = Retweet / Repost (r nécessite le hachage de la publication)
  • 6 = Annuler le Retweet (Annule le type 5)

Sous-canaux et routage sombre (champ h)

  • Niveau 1 et 2 : Les tags sont transmis en texte clair.
  • Niveau 3 (Chiffré) : La transmission de tags en texte clair est strictement interdite au niveau du protocole, car cela fuit des métadonnées. Les tags doivent être chiffrés exactement comme le contenu (c). Pour les observateurs externes, les tags sont donc complètement invisibles (Routage sombre / Dark Routing).

Niveau 3 : Regroupement flou (champ m)

Étant donné que les tags sont chiffrés au niveau 3, les clients doivent théoriquement tenter de déchiffrer chaque message (Déchiffrement par essai / Trial Decryption). Pour éviter la surcharge du CPU, Axium utilise des indices de message (Message Hints) :

  • L'expéditeur calcule HMAC-SHA256(AES_Key, IV) et place les 2 premiers octets comme champ m dans la charge utile CBOR.
  • Les récepteurs calculent cet indice pour leurs mots de passe stockés localement. Le processus de déchiffrement coûteux n'est exécuté que s'il y a correspondance. Cela filtre 99,99 % du trafic non pertinent sans fuite de métadonnées.

Identité : Profils globaux vs. Alias privés

Axiom gère l'identité avec une transparence totale : L'adresse du portefeuille L2 (msg.sender) est la seule identité sociale et financière. Le protocole transfère la responsabilité de l'OPSEC financière entièrement à l'utilisateur (par exemple, l'utilisation de mixeurs et de ponts pour se procurer des jetons de gaz de manière anonyme).

L'action de mise à jour de profil (t: 0) se comporte différemment selon le niveau de sécurité choisi :

  1. Identité globale (Niveau 1 et 2) Si un portefeuille envoie une mise à jour de profil non chiffrée, cela sert de déclaration globale. Le portefeuille devient connu sur tout le réseau sous ce nom. Tout le monde voit ce nom (par exemple, construire une réputation publique en tant que @Dissident99).
  2. Alias privés et surnoms (Niveau 3) Si un portefeuille envoie une mise à jour de profil dans une charge utile chiffrée de niveau 3, cela crée un alias privé et isolé. Cet alias n'est visible que dans le sous-canal déchiffré pour les utilisateurs qui connaissent le mot de passe. Cela permet des distributions de rôles pseudonymes dans des groupes fermés sans modifier l'identité globale. Priorité de rendu : Pour le niveau 3, le frontend doit toujours vérifier si un alias local existe avant de revenir au nom global.

Architecture du contrat intelligent et applications OPSEC

Axiom repose sur une validation on-chain avec une complexité O(1). Pour maintenir les coûts de gaz à un minimum absolu, le contrat intelligent n'effectue que des vérifications cryptographiques de base. Toutes les validations de contenu gourmandes en ressources sont déchargées vers les clients (Layer 2).

1. Validation on-chain (Le contrat intelligent)

Le contrat agit comme un videur incorruptible. Si une charge utile ne respecte pas les règles strictes, la transaction est annulée (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);
    }
}
  • Contamination de portefeuille bidirectionnelle (isolement forcé) : Si un portefeuille publie au niveau 1 pour la première fois, il est définitivement bloqué pour les niveaux 2/3. S'il publie au niveau 2 ou 3 en premier, le niveau 1 est bloqué.
  • Paramètres obligatoires : Pour le niveau 3, le contrat impose strictement un IV de 12 octets.

2. Validation hors chaîne (Par les clients)

Si une publication viole les règles du protocole, le client doit la rejeter silencieusement (Rejet local / Local Drop).

  • Le bloqueur de liens de niveau 2 : Les clients analysent le texte clair (c) des messages de niveau 2. Si des URL, des adresses IP ou des balises médiatiques typiques sont détectées, la publication est complètement bloquée.
  • Auto-nettoyage : Si un attaquant spamme le réseau avec des liens au niveau 2, il paiera les frais de gaz, mais aucun client Axiom valide ne rendra jamais ces messages.

Infrastructure et architecture client recommandée

Axiom est déployé sur un réseau Ethereum Layer 2 (L2) (par exemple, Arbitrum Nova).

Pour éviter de surcharger les appareils mobiles (autonomie de la batterie, limitations de stockage, limites WebAssembly pour Argon2id), Axiom impose une architecture client très performante :

  • Axiom Core (Nœud auto-hébergé) : Un serveur/conteneur Docker (par exemple, fonctionnant sur un NAS) qui lit la blockchain via RPC, indexe les événements et exécute nativement la cryptographie gourmande en ressources.
  • Axiom UI (Client léger) : Une application mobile ou interface Web qui communique uniquement avec le propre Axiom Core de l'utilisateur via une API.

Récupération des données et EIP-4444

Les clients ne téléchargent pas l'état complet de la blockchain. Ils filtrent l'événement AxiomPost du contrat intelligent, qui contient toutes les données nécessaires en texte clair (Expéditeur, Niveau, IV, CBOR, Horodatage).

Étant donné que les nœuds Ethereum finiront par supprimer les données historiques (événements de plus de 365 jours) conformément à EIP-4444, le protocole recommande que les Axiom Cores locaux servent d'archives décentralisées, stockant les bases de données de manière permanente.


Exemple de flux de travail : Un message de niveau 3

Pour illustrer le fonctionnement de l'architecture en pratique, voici un cycle de vie complet.

Scénario : Alice veut publier le message « Réunion à 20h » dans le sous-canal « AxiomDev ». Le groupe a préalablement convenu hors ligne du mot de passe « Secret123 ».

Étape 1 : Préparation locale et chiffrement (Axiom Core)

Le Axiom Core d'Alice gère le gros du travail de calcul :

  1. Dérivation de clé : Il convertit le mot de passe en une clé AES 256 bits en utilisant Argon2id.
  2. Génération de l'IV : Un vecteur d'initialisation aléatoire de 12 octets est généré (par exemple, 0x12ab34cd56ef789012ab34cd).
  3. Chiffrement : Le contenu et le tag (« AxiomDev ») sont chiffrés à l'aide d'AES-GCM.
  4. Génération de l'indice : Le hachage HMAC de 2 octets pour le regroupement flou est calculé (m: "0xa1b2").

Étape 2 : Construction de la charge utile (Sérialisation CBOR)

Étant donné que le niveau et l'IV sont passés directement au contrat, ils sont exclus de l'objet CBOR.

Représentation JSON interne :

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

Ce JSON est compressé en un tableau d'octets CBOR brut (0xa3617401...) pour économiser du gaz.

Étape 3 : L'appel au contrat intelligent (Interaction blockchain)

Alice déclenche la fonction du contrat. Important : L'appel est strictement routé via Tor !

(Exemples pour L3 et L1 :)

root@kitploit:~
// Exemple 1 : Client appelant le contrat intelligent pour un message chiffré de niveau 3
await axiomContract.publishAxiom(
    3,                                      // _level: 3
    "0x12ab34cd56ef789012ab34cd",           // _iv: chaîne hexadécimale de 12 octets requise
    "0xa3617401616358208a4f..."             // _cbor: chaîne hexadécimale CBOR compressée
);

// Exemple 2 : Client appelant le contrat intelligent pour un message public de niveau 1
await axiomContract.publishAxiom(
    1,                                      // _level: 1
    "0x",                                   // _iv: tableau d'octets strictement vide
    "0xa361740161634c48656c6c6f204178..."   // _cbor: chaîne hexadécimale CBOR compressée
);

Le contrat intelligent émet alors l'événement :

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

Étape 4 : Indexation et déchiffrement par essai (Récepteur)

Le Axiom Core de Bob écoute la blockchain et reçoit l'événement.

  1. Stockage local et reconnaissance : L'événement est écrit dans la base de données locale. Le Core détecte Level 3 et décompresse le CBOR pour accéder au contenu, aux tags et à l'indice m.
  2. Déchiffrement par essai : Le Core vérifie l'indice de 2 octets m par rapport aux mots de passe stockés de Bob.
  3. Correspondance et transmission : L'indice correspond à « Secret123 ». L'étiquette GCM confirme que la charge utile n'a pas été altérée. Les données sont déchiffrées en RAM et envoyées au smartphone de Bob via l'API locale. Le message « Réunion à 20h » apparaît dans le fil « #AxiomDev ».
  4. File d'attente inconnue : Pour les utilisateurs sans le mot de passe correct, la vérification de l'indice échoue. Ce bruit de données illisible est automatiquement supprimé après l'expiration d'un tampon glissant (par exemple, 30 jours).
Télécharger l’outil