La scadenza sembra semplice quando le persone spiegano i sistemi di identità digitale. Un emittente aggiunge una data di fine, un verificatore controlla il tempo e la credenziale non è più valida dopo. Sulla carta, sembra pulito e facile. Nel mondo reale, raramente rimane così semplice.
Il problema inizia quando una credenziale si sposta oltre il sistema dell'emittente. Viene utilizzata in diverse app, diverse catene, diversi ambienti di fiducia e diversi strati di dati. Alcuni sistemi si aggiornano rapidamente. Altri si basano su informazioni memorizzate nella cache. Alcuni verificatori controllano lo stato ogni volta, mentre altri no. È allora che una chiara regola di scadenza inizia a trasformarsi in qualcosa di molto meno affidabile.
Il vero problema non è la firma. Una credenziale potrebbe essere stata firmata correttamente e ancora essere non valida oggi. Ciò significa che la verifica non riguarda solo il controllo se la firma funzioni. Riguarda anche il controllo dello stato attuale della credenziale. È scaduta? È stata revocata? È stata sostituita? È stata contestata? Quelle risposte dipendono da dati freschi e dal fatto che il verificatore stia effettivamente guardando lo stato più recente invece di risultati memorizzati precedentemente.
Ecco perché @SignOfficial si distingue. Non sembra considerare lo stato come una piccola funzionalità extra aggiunta in seguito. Dal modo in cui Sign descrive il suo flusso di verifica e la risoluzione dello stato, il processo riguarda più che dimostrare che una firma è reale. Riguarda anche la comprensione della condizione attuale della credenziale. Stati scaduti, revocati, superati o contestati sono trattati come parti importanti del sistema, non casi limite rari.
Questo è ancora più importante una volta che le credenziali diventano portabili. Questo dovrebbe essere il valore di un sistema come Sign. Una credenziale dovrebbe muoversi tra diversi servizi e continuare a essere fidata. Ma nel momento in cui lascia l'ambiente del proprio emittente, l'applicazione diventa più difficile. Un verificatore potrebbe controllare lo stato attivo ogni volta. Un altro potrebbe aggiornare ogni ora. Un altro potrebbe dare priorità alla velocità e utilizzare dati memorizzati nella cache. Un altro potrebbe essere offline per parte della giornata. È così che le credenziali scadute possono comunque venire accettate. La crittografia potrebbe essere a posto, ma il sistema intorno non è più perfettamente allineato.
La sfida diventa più grande quando sono coinvolti diversi emittenti. Diversi emittenti possono utilizzare regole di scadenza diverse, metodi di revoca diversi e abitudini di aggiornamento diverse. Allora lo stesso tipo di credenziale potrebbe essere controllato da sistemi che si comportano in modo diverso. Un servizio potrebbe volere freschezza in tempo reale. Un altro potrebbe consentire un ritardo. Un altro potrebbe effettuare controlli più approfonditi solo in casi ad alto rischio. È qui che l'infrastruttura dell'identità inizia a diventare più difficile da gestire di quanto le persone si aspettino.
Ecco anche perché il punto dietro $SIGN è importante. Un protocollo può rendere lo stato visibile e verificabile. Può mostrare scadenza, revoca, registri collegati e lo stato di risoluzione più recente. Questo è necessario. Ma mostrare lo stato non è la stessa cosa che applicarlo. Uno è un problema di design. L'altro è un problema operativo distribuito su sistemi che non condividono sempre gli stessi standard, tempistiche o discipline.
La scadenza potrebbe non essere la parte più emozionante dell'infrastruttura dell'identità, ma rivela se un sistema è costruito per condizioni reali. Se un design assume che ogni verificatore sia sempre fresco, online e controlli la stessa fonte di verità nello stesso momento, allora non è costruito per il mondo reale. È costruito per una demo controllata. Sign almeno sembra capire che lo stato delle credenziali continua a cambiare, e questa realtà deve essere integrata nel sistema fin dall'inizio.
