FID
SELF-SOVEREIGN IDENTITY PROTOCOL

Introducing Fediverse-ID 1.0

FID è il protocollo di autenticazione crittografica e Single Sign-On (SSO) basato su Zen SEA per applicazioni ActivityPub, istanze TuneCamp e la rete decentralizzata P2P.

IDENTITY CREATION

Master Key Source

La tua identità si deriva da alias + passphrase. Nessun account, nessun server: le stesse due parole riproducono la stessa identità su qualsiasi dispositivo, e da lì un'identità ActivityPub deterministica per dominio/username.

La tua chiave pubblica viaggia in chiaro in ogni token SSO: chi la vede può provare passphrase offline all'infinito, senza nessun server che lo rallenti. La passphrase è la tua identità, e non si può cambiare senza cambiare identità.

ACTIVE USER @anonymous
METHOD Zen SEA (Gun/PBKDF2)
KEYPAIR CREDENTIALS

Zen SEA Keys

Le tue chiavi crittografiche attive risiedono esclusivamente nel browser e non vengono mai trasmesse.

STATUS Valid & Active
STORAGE Browser LocalStorage
CROSS-INSTANCE LINKING

Instance Registry

Collega i tuoi artisti su diverse istanze TuneCamp. Il portal aggrega il tuo profilo unificato.

Nessuna istanza collegata. Aggiungi la prima sotto.

TOTAL LINKED 0
VERIFIED 0
P2P RELAY NETWORK

Zen Graph Relay

Connessione WebSocket diretta al nodo di relay P2P per la propagazione del grafo di identità.

[System] Initializing P2P monitor...
HOST delay.scobrudot.dev
STATE Connecting...
FEDIVERSE INTEGRATION

ActivityPub Persona Sandbox

Derivazione deterministica degli indirizzi WebFinger ed Ed25519 PBKDF2 seed per il Fediverse.

WEBFINGER @alice@tunecamp.org
ACTOR URI https://tunecamp.org/users/alice
ED25519 SEED -
PAYLOAD INSPECTOR

FidSsoToken Payload Structure

// Clicca "Aggiorna Payload" per generare il JSON live del FidSsoToken
HOW IT WORKS

Architettura e Flusso di Autenticazione

FID elimina la necessità di password memorizzate sui server centralizzati e riduce il rischio di phishing nel Fediverso attraverso un flusso crittografico a tre fasi.

1

Identità Master Globale

L'utente sblocca la sua coppia di chiavi Zen SEA secp256k1 sul browser usando alias + passphrase. La chiave master non viene mai trasmessa via rete.

2

Derivazione Isolata del Seed

Per ogni dominio di destinazione (es. un'istanza TuneCamp), il portale calcola un seed crittografico a 32 byte isolato, impedendo la tracciabilità tra diverse istanze.

3

Firma del Token & Codice Monouso

Il portale firma a conoscenza zero il token SSO e invia il seed all'istanza via POST, che genera un codice di login monouso rimediabile in sicurezza dal browser.

TECHNOLOGY STACK

Componenti Crittografiche e Standard

FID si basa su librerie crittografiche moderne ad alte prestazioni e standard W3C aperti per garantire la compatibilità con il Fediverse decentralizzato.

Zen SEA (secp256k1)

Algoritmi SEA di GunDB per crittografia ellittica e firme asimmetriche direttamente sul browser.

PBKDF2-SHA256

Derivazione sicura delle chiavi con 10,000 iterazioni eseguite nativamente tramite Web Crypto API.

Ed25519 (EdDSA)

Generazione di chiavi identità ActivityPub (PEM) veloci e resistenti agli attacchi side-channel.

ActivityPub & WebFinger

Standard del W3C per lo scambio di messaggi e la scoperta degli attori decentralizzati nel social web.

DEVELOPER INTEGRATION GUIDE FID v4.0.0 Ready

Come Integrare FID nelle tue App Fediverso

Guida completa con snippet di codice per implementare il protocollo Single Sign-On (SSO), la derivazione deterministica delle chiavi ActivityPub (Ed25519) e il sistema di collegamento tra istanze (Instance Passports).

1. Single Sign-On (SSO) — Flusso "Login with FID"

L'utente autenticato sul portale autorizza la tua app. Il portale firma il token SSO e invia la chiave ActivityPub del dominio (apSeed) via POST all'istanza, restituendo all'app un codice monouso per completare la sessione senza esporre segreti nell'URL.

client-sso-integration.ts
import { FidSsoHandler, createZenMasterKeySource, deriveApSeed, resolveRedirectUri } from 'fid';

// 1. Definisci i parametri dell'applicazione client
const clientId = 'my-fediverse-app';
const instanceDomain = 'sudorecords.scobrudot.dev';
const redirectUri = 'https://sudorecords.scobrudot.dev/api/auth/callback';

// 2. Valida l'URI di reindirizzamento prima dell'invio (HTTPS o loopback obbligatorio)
const target = resolveRedirectUri(redirectUri, instanceDomain);
if (!target) throw new Error('redirectUri non valido o non conforme a HTTPS');

// 3. Reindirizza l'utente al portale FID per il consenso SSO:
// https://fid-portal.vercel.app/sso.html?clientId=my-fediverse-app&redirectUri=...&instanceDomain=sudorecords.scobrudot.dev

// 4. Lato Client Portale: Emissione del token SSO e invio all'istanza (mode: "code")
const zenSource = createZenMasterKeySource(masterPrivKey, zenPubKey);
const ssoHandler = new FidSsoHandler('instance-shared-secret');
const ssoReq = ssoHandler.createSsoRequest(clientId, redirectUri, instanceDomain);

// Genera il token SSO firmato con la chiave master Zen SEA secp256k1
const ssoToken = await ssoHandler.issueSsoToken(ssoReq, username, zenSource);

// Deriva il seed 32-byte ActivityPub per QUESTO specifico dominio
const apSeedBytes = deriveApSeed(zenSource, instanceDomain, username);
const apSeedHex = Array.from(apSeedBytes).map(b => b.toString(16).padStart(2, '0')).join('');

// 5. Invia via POST all'endpoint dell'istanza per ottenere il codice monouso
const response = await fetch(`https://${instanceDomain}/api/auth/zen/sso`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ ssoToken, apSeed: apSeedHex, mode: 'code' })
});

const { code } = await response.json();
// Reindirizza l'utente alla tua app con il codice monouso:
window.location.href = `${redirectUri}?fid_code=${code}`;
Copiato negli appunti