Els codis d’un sol ús poden ser perfectament correctes al vostre telèfon i ser rebutjats pel servidor en el mateix segon. Els dos costats calculen la mateixa funció a partir d’un secret compartit i del pas de temps actual, de manera que una discrepància sobre l’hora produeix una discrepància sobre el codi. Això converteix la deriva del rellotge en una fallada rellevant per a la seguretat, no en una molèstia.

Aquí importen dos rellotges, i arreglar el visible és la part que la gent fa primer. El que normalment necessita atenció és l’altre.

El codi és una funció del temps, no una contrasenya

TOTP pren el secret compartit i un comptador derivat de l’hora actual, passa tots dos per un hash amb clau i trunca el resultat a una cadena decimal curta; això està especificat a RFC 6238. El comptador avança a cada pas de temps, convencionalment trenta segons, de manera que el mateix secret produeix un valor nou quan canvia el pas. El verificador recalcula el valor esperat per al pas actual i el compara, cosa que requereix el mateix secret i la mateixa idea d’ara. Una contrasenya es pot reutilitzar fins que es canvia, mentre que aquest valor caduca en un límit que el client no pot veure.

Per això un codi funciona i el següent falla moments després. També explica per què copiar un codi d’un missatge de xat és un hàbit tan poc fiable.

Dos rellotges han de coincidir, no un

El material d’enregistrament és la primera cosa compartida, i el temps és la segona. Si el secret és correcte mentre els rellotges difereixen més de la finestra tolerada, cada valor generat cau al pas equivocat i es rebutja. Si els rellotges coincideixen mentre el secret és incorrecte, cada valor també es rebutja, i totes dues fallades semblen idèntiques des de la pantalla d’inici de sessió. Separar-les significa comprovar l’entrada del compte i el temps de manera independent, en aquest ordre.

El rellotge del verificador mereix el mateix escrutini que el del dispositiu. Un servidor amb una font de temps avariada rebutja els codis correctes de tots els usuaris alhora, i els informes descriuran una interrupció sobtada en lloc d’una deriva. Val la pena reconèixer aquest patró, perquè la seva correcció pertoca al servidor i no a cent telèfons.

Què costa ampliar la finestra

Les implementacions poden acceptar un codi d’un pas adjacent per absorbir diferències petites, i aquesta tolerància és una decisió de disseny, no un ajust gratuït. Cada pas addicional multiplica el nombre de valors vàlids en qualsevol moment, que és exactament el que prefereix un atacant que endevina. La regla de repetició importa pel mateix motiu, ja que un codi acceptat dues vegades és un codi que s’ha filtrat de manera útil. Un administrador que amplia la finestra per silenciar les queixes intercanvia una propietat real per una millora cosmètica.

Corregir el rellotge és la reparació, mentre que ampliar la finestra és un sedant. El primer elimina la causa i el segon l’amaga.

Comproveu tots dos rellotges abans de tornar-ho a intentar

Llegiu l’hora al dispositiu i al servidor, i compareu els desfasaments en lloc de les hores locals mostrades. Les ordres següents mostren l’estat de sincronització i l’instant UTC en brut en un amfitrió o servidor Linux. Executeu-les als dos extrems abans de canviar qualsevol paràmetre d’autenticació.

timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status

Un desfasament mesurat en segons és inofensiu, un de mesurat en minuts explica un rebuig, i un sistema que no informa de cap font de sincronització és candidat a totes dues coses. Compareu les dues marques de temps UTC directament, ja que l’hora local inclou una zona horària que l’algoritme mai no veu. Si els desfasaments són petits i els codis encara fallen, deixeu d’ajustar rellotges i examineu l’entrada d’enregistrament. Els intents repetits contra un compte bloquejat fan més difícil d’observar la fallada original.

Registreu l’hora del rebuig, el desfasament i el text de l’error, i deixeu el secret compartit fora d’això. El suport pot treballar amb els tres primers i no hauria de veure mai el quart.

Articles relacionats