Limitazioni del filtro EVE

EVE è un pattern matcher. Decide se il testo di un messaggio corrisponde a una regola. È bravo in questo, e il livello di simboli ed evasione lo rende tollerante verso un'ampia gamma di trucchi. Ma un pattern matcher ha limiti duri e strutturali, ed è importante essere onesti su di essi prima di affidarsi al filtro.

Questa pagina è deliberatamente schietta. Un filtro che viene sopravvalutato è un filtro di cui ci si fida in situazioni che non può gestire.

EVE corrisponde al testo di superficie, non al significato

La cosa più importante da capire: EVE non ha alcuna comprensione di ciò che una persona intendeva. Confronta i caratteri di un messaggio contro i pattern. Non sa chi sta parlando, di cosa tratta la conversazione, se una parola viene citata, rivendicata, condannata o usata sul serio. Vede il testo, e decide se quel testo corrisponde a una regola.

Tutto quanto segue deriva da questo unico fatto.

Una corrispondenza è un blocco duro

Quando un messaggio corrisponde a una regola, l'esito è binario. Il filtro riporta uno di un piccolo insieme di risultati, e qualsiasi risultato diverso da CLEAN blocca il messaggio. Non c'è un punteggio, nessun "probabilmente", nessun credito parziale che un sistema a valle possa soppesare. Un messaggio o fa scattare una regola o non lo fa.

Questo è un design deliberato. Un filtro chat deve prendere una decisione istantanea e automatica su ogni messaggio, e un blocco duro è prevedibile e veloce. Ma significa anche che il filtro non ha spazio per le sfumature al momento della decisione. Non può lasciar passare un messaggio limite con un avvertimento, o trattenerlo per la revisione, da solo. Blocca, o non blocca.

Non c'è via di mezzo nella corrispondenza stessa

Una corrispondenza di regola è tutto-o-niente. Il filtro non può distinguere un vero attacco da un messaggio innocente che per caso contiene le stesse lettere. Entrambi fanno scattare la regola, ed entrambi vengono bloccati. Qualsiasi sfumatura deve venire dal modo in cui il tuo server risponde a un blocco, non dalla corrispondenza.

Le due conseguenze di un blocco duro e cieco al significato sono i falsi positivi e l'evasione. Sono due facce della stessa medaglia: il filtro traccia una linea nel testo, e qualsiasi linea tracciata nel solo testo catturerà messaggi innocenti da un lato e mancherà quelli colpevoli dall'altro.

Falsi positivi: il problema di Scunthorpe

Poiché EVE corrisponde alle lettere e non all'intento, un messaggio innocente che per caso contiene una sequenza di lettere proibita viene bloccato esattamente come se fosse un attacco.

L'esempio classico dà al problema il suo nome. La cittadina inglese Scunthorpe contiene una volgare sequenza di quattro lettere nel suo mezzo. Un filtro ingenuo che cerca quella sequenza blocca il nome della cittadina, e per estensione ogni luogo, cognome o parola che per caso la contiene. La parola è innocente; le lettere no; il filtro non può distinguere la differenza, perché vede solo le lettere.

Questo non è un bug che può essere corretto del tutto. È il risultato diretto del matching del testo di superficie. Ogni pattern proibito è un'affermazione che una serie di caratteri è sempre cattiva, e per quasi ogni serie del genere esiste qualche parola, nome o frase innocente che la contiene.

EVE riduce i falsi positivi con strumenti mirati:

  • Le liste never permettono a un pattern di escludere parole innocenti specifiche che altrimenti lo farebbero scattare. Una regola per un insulto può elencare le parole innocue che condividono le sue lettere e rifiutare di corrispondere a esse.
  • Il gating mantiene inattivo un pattern aggressivo a meno che una frase innescante non sia presente nelle vicinanze, o la parola stessa corrisponda chiaramente, così che il pattern si attivi solo in un contesto dove una vera corrispondenza è probabile.
  • I veto permettono a un pattern di ritirarsi quando una frase che segnala un uso innocente è presente nella riga.

Questi aiutano, e sono usati pesantemente nei filtri distribuiti. Ma sono toppe su pattern individuali, scritte a mano, un caso innocente alla volta. Non possono anticipare ogni messaggio innocente, e una lista never può escludere solo le parole a cui il suo autore ha pensato. I falsi positivi vengono ridotti, non eliminati.

I falsi positivi sono inevitabili

Qualsiasi filtro che blocca testo a volte bloccherà testo innocente. I passaggi anti-evasione aggressivi peggiorano questo, non lo migliorano: più grafie un pattern è disposto ad accettare, più parole innocenti cadono nella sua rete. La regolazione scambia i falsi positivi con l'evasione, e non c'è un'impostazione che rimuova entrambi.

Evasione: grafie e simboli nuovi

L'altra faccia della medaglia. I passaggi anti-evasione annullano famiglie note di offuscamento: caratteri simili, entità HTML, grafie allungate e punteggiate, trasposizioni e parole divise o unite. All'interno di quelle famiglie funzionano bene.

Ma possono annullare solo i trucchi che le tabelle e le regole conoscono già. Non possono dedurre l'intento, quindi un'evasione genuinamente nuova passa dritto:

  • Una nuova grafia che nessun pattern copre. Il linguaggio, e lo slang in particolare, inventa nuove grafie costantemente. Un pattern scritto oggi non conosce il neologismo di domani.
  • Una somiglianza o simbolo non nella tabella di ripiegamento. La tabella dei confondibili è grande ma finita. Un carattere che non elenca non viene ripiegato, e un emoji codificato non su un tabellone di simboli non viene catturato.
  • Una sostituzione che i pattern non anticipano. L'evasione è avversaria. Una volta che un trucco è noto e aggiunto, gli utenti passano al successivo, e il filtro risponde sempre all'ultima tecnica anziché alla prossima.

Questa è una corsa agli armamenti permanente, non un problema risolto. Il livello di evasione aumenta lo sforzo richiesto per aggirare il filtro. Non chiude, e non può chiudere, ogni lacuna, perché chiudere una lacuna richiede di conoscere il trucco specifico in anticipo, e il matching di testo privo di intento non può saperlo.

Il filtro può essere evaso

Un utente determinato che inventa una grafia o un simbolo che i pattern non coprono farà passare un messaggio. I passaggi anti-evasione riducono l'evasione occasionale; non fermano un tentativo nuovo e deliberato. Non trattare un risultato clean come prova che un messaggio è sicuro.

Cosa significa questo per il tuo server

Usa il filtro per ciò che è: una prima linea veloce e automatica che cattura il comune e l'ovvio, e gran parte dell'offuscato. Non trattarlo come un giudice dell'intento o una garanzia completa.

  • Un blocco non è prova di malizia. Un messaggio innocente può far scattare una regola. Considera come il tuo server risponde a un blocco anziché assumere che ogni blocco sia un'offesa punibile.
  • Un risultato clean non è prova di sicurezza. Un messaggio dannoso può usare una grafia o un simbolo che il filtro non copre. La moderazione umana conta ancora.
  • Alcune categorie meritano attenzione, non punizione. Il filtro separa i risultati che possono indicare un utente in crisi o che viene danneggiato dalle normali violazioni delle regole, proprio così che un server non punisca automaticamente una persona che potrebbe aver bisogno di aiuto. Rispetta quella separazione.

Il filtro è uno strumento. Gestisce il volume così che le persone non debbano leggere ogni messaggio, e rimuove i casi facili. I casi difficili, quelli che dipendono da ciò che una persona intendeva davvero, restano un compito per gli umani, perché giudicare l'intento è esattamente la cosa che un matcher di testo non può fare.