Explorer
KNOW-PAT-164

OSINT — Moteur cascade graphe nodes/edges, real data only

Domaine
cybersecu
Type
pattern
Priorité
P1

Parent : [[INDEX-CYBERSECU]]

Cascade graph OSINT — real data only

Problème

Les outils OSINT « devinent » des liens → fausses pistes et responsabilité légale.

Solution

Modèle CascadeNode / CascadeEdge :

  • Entrée typée (phone, email, IP, domain, handle, company…)
  • Pas de spéculation — seules réponses API réelles créent des nodes
  • « Outils » = liens externes, pas résultats inventés
  • Enrichissement async via lookup routes → append nodes/edges au graphe
  • UI : graph / timeline / stats (SearchHub, CascadeGraph)

Philosophie codée en en-tête : cascade-engine.ts v2 REAL DATA ONLY.

Implémentation

interface CascadeNode {
  id: string;
  type: 'phone' | 'email' | 'ip' | 'domain' | 'handle' | 'company';
  value: string;
  source: string;       // API qui a retourné ce node
  confidence: 'proven';  // jamais 'speculative'
  createdAt: Date;
}

interface CascadeEdge {
  from: string;  // node id
  to: string;    // node id
  relation: string;  // 'resolved-to', 'registered-by', 'found-on'
  source: string;
}

// Le moteur ne crée un node que si l'API retourne une réponse réelle
async function enrich(node: CascadeNode): Promise<CascadeNode[]> {
  const results = await lookupService(node.type, node.value);
  // Pas de speculation : si l'API ne retourne rien, pas de node
  return results.map(r => createNode(r.type, r.value, r.source));
}

Quand l'utiliser

Tout outil d'investigation OSINT où la fiabilité des liens importe plus que la couverture.

Quand NE PAS l'utiliser

Outils exploratoires où les hypothèses sont acceptables (avec label explicite speculative).

Source projet

  • osint-investigation-board/src/lib/cascade-engine.ts
  • osint-investigation-board/src/lib/types.ts
  • osint-investigation-board/src/components/hub/SearchHub.tsx

Références

  • [[KNOW-PAT-165]] — Routes lookup par service
  • [[KNOW-PAT-056]] — OSINT Hunchly investigation