En xuño de 2023, un programador chamado Neal Agarwal publicou na súa web, neal.fun, algo titulado The Password Game. Pídeche que escribas un contrasinal. Despois que teña polo menos cinco caracteres. Despois un número. Despois unha maiúscula. Despois un carácter especial.
Ata aquí non é un xogo. É o formulario do teu banco.
Despois comeza a outra parte. Que os díxitos sumen 25. Que conteña o nome dun mes. Que conteña números romanos cuxo produto sexa 35. Que leve a resposta do Wordle de hoxe. Que identifique o país dunha fotografía. Que conteña a mellor xogada dunha posición de xadrez, en notación alxébrica. Son trinta e cinco regras, e polo camiño aparece dentro do teu contrasinal un emoji de ovo chamado Paul, que nace e hai que alimentar con eirugas, mentres unha chama vai comendo os teus caracteres se non a apagas a tempo.
O xogo funciona por unha razón incómoda: ninguén ten que che explicar o chiste. Cólleslo no primeiro segundo, porque o mecanismo lévalo sufrindo media vida. O único que fixo Agarwal foi seguir tirando do fío.
E aí é onde convén ir amodo. As catro primeiras regras non as inventou el.
De onde saíron as regras que xa coñecías
Unha maiúscula, un número, un símbolo e unha lonxitude mínima non son folclore de internet: son a tradución práctica dun documento do NIST estadounidense publicado en 2003, o SP 800-63, escrito por Bill Burr. De alí baixaron aos formularios de medio mundo, e de alí á túa cabeza.
Contámolo enteiro en que é un contrasinal: Burr non tiña datos de contrasinais reais —apenas existían— así que razoou cara ao que parecía sensato. Máis variedade de caracteres, máis combinacións, máis seguridade. En 2017 o propio NIST deu marcha atrás, e Burr díxolle ao Wall Street Journal que lamentaba boa parte do que escribira.
Así que o xogo de Agarwal non esaxera unha política de seguridade. Continúa unha lista que xa estaba mal na súa primeira liña. A única diferenza entre «debe conter un símbolo» e «os díxitos deben sumar 25» é que á primeira xa te afixeches.
O que esas regras nunca mediron
Aquí é onde o chiste deixa de ter graza, porque se pode medir.
Estas cifras saen do comprobador deste sitio, co seu modelo declarado: un ataque fóra de liña contra un resumo criptográfico rápido, a 10¹² intentos por segundo. Non son estimacións de folleto; é o que verás se tecleas esas mesmas cadeas alí.
| contrasinal | regras que cumpre | intentos | aguanta |
|---|---|---|---|
Contrasinal1! |
as catro | 6,9 × 10⁸ | < 1 segundo |
Veran2026! |
as catro | 4,3 × 10⁸ | < 1 segundo |
Zx9#kQ2m |
as catro | 3,3 × 10¹⁵ | 55 minutos |
| seis palabras sacadas a dados, en minúscula | ningunha | 1,1 × 10²³ | 3.500 anos |
A última fila non sae do comprobador, sae da aritmética, e é a propósito: o comprobador non pode saber que esas seis palabras viñeron dun dado, así que calcularía outra cousa. Seis tiradas son 77,5 bits exactos, e 77,5 bits a 10¹² intentos por segundo son uns tres mil cincocentos anos. Volvemos a iso ao final.
Lelo outra vez. Contrasinal1! pasa calquera formulario do planeta e cae antes de
que soltes a tecla, porque a palabra está no dicionario e o demais é o adorno que
pon todo o mundo: a maiúscula diante, o número e o símbolo detrás. E a última fila,
seis palabras correntes en minúscula, non a aceptaría nin a metade dos sitios onde
tes conta: non leva maiúscula, nin número, nin símbolo.
Paga a pena deterse en Zx9#kQ2m, porque é o mellor caso posible da regra. Oito
caracteres verdadeiramente aleatorios, cos catro tipos, exactamente o que a política
de 2003 consideraba un contrasinal exemplar. Cincuenta e cinco minutos. E é un
teito: o comprobador non pode saber que o tecleaches ao chou, así que che
concede o beneficio da dúbida e calcula o mellor escenario. Ademais, ninguén teclea
así. Pídelle a unha persoa oito caracteres cun símbolo e o que sae é Futbol123! —
1,3 × 10⁸ intentos, menos dun segundo.
A regra non distingue eses dous casos. Para o formulario, Futbol123! e
Zx9#kQ2m son o mesmo contrasinal. Ese é o fallo enteiro: unha regra de
composición mide a forma da cadea, e a resistencia non está na forma.
A regra dos 90 días, ou como se inventa Outono2026!
A outra metade da herdanza de 2003 é a caducidade. Cámbiao cada noventa días.
Ninguén inventa un contrasinal novo cada noventa días. O que fai a xente —o que fas
ti, e eu— é incrementar o que xa tiña. Veran2026! convértese en Outono2026! e o
traballo está feito. Os dous aguantan menos dun segundo, e se un atacante ten o
primeiro, adiviñar o segundo non é un ataque: é encher un oco.
O NIST retirou a rotación obrigatoria no SP 800-63B, en 2017. Na revisión de agosto de 2025 o texto endureceu o ton: onde antes dicía que os verificadores non deberían impoñer regras de composición nin esixir cambios periódicos, agora di que non deben facer ningunha das dúas cousas. Só se forza o cambio se hai indicios de que o contrasinal está comprometido.
Nove anos despois da primeira retractación, a túa empresa segue a pedirche unha maiúscula cada trimestre.
O límite de caracteres é o peor sinal de todos
Agarwal contou que a gota que colmou o vaso, o que o levou a facer o xogo, foi intentar crear unha conta e que lle dixesen que o seu contrasinal era demasiado longo.
De todas as regras absurdas, é a única que ademais é un mal sinal.
Un sistema que garda o teu contrasinal como debe non o garda: garda o seu resumo, e un resumo mide sempre o mesmo, tanto se lle dás oito caracteres como se lle dás oitocentos. Non existe ningunha razón de almacenamento para un límite de dezaseis. Hai exactamente unha excepción técnica lexítima e coñecida —bcrypt ignora o que pase de 72 bytes— e non explica os formularios que se plantan en doce.
Un teito curto non demostra que che estean a gardar o contrasinal en claro, pero é o tipo de detalle que só aparece cando alguén o meteu nunha columna de base de datos de tamaño fixo. O propio SP 800-63B pide o contrario: que se acepten polo menos 64 caracteres.
A regra que si funciona non cabe nun formulario
A incomodidade de fondo é que a boa práctica non se pode expresar como unha caixa de validación. Ninguén pode escribir unha expresión regular para «que non o uses noutro sitio» nin para «que non saia na última filtración».
O que si se pode facer é contar. Unha frase de palabras escollidas a dados — Diceware— suma 12,9 bits limpos por palabra, e eses bits si son bits. Co mesmo modelo de 10¹² intentos por segundo:
- Cinco palabras son 64,6 bits: uns 164 días.
- Seis palabras son 77,5 bits: uns 3.500 anos.
Convén dicir as dúas cifras e non só a segunda. Repítese moito que unha frase de cinco palabras «aguanta séculos»; contra un resumo rápido non aguanta séculos: aguanta cinco meses e medio. Por iso Reinhold recomendaba cinco como mínimo e seis para o que importa de verdade. A palabra número seis é a que cambia a escala, e é de balde.
Ningunha das dúas pasaría o formulario do teu banco.
Por que o xogo ten graza
Cando o xogo che pide que a suma dos díxitos sexa 25, ris porque é unha condición arbitraria que non ten nada que ver co que fai seguro un contrasinal.
Esixir un símbolo tamén é unha condición arbitraria que non ten nada que ver co que fai seguro un contrasinal. A diferenza é que esa lévaa media internet, e que a esa collémoslle cariño.
Se queres o resumo operativo, cabe en tres liñas: usa o xerador ou uns
dados, mete o resultado no xestor, e cumpre as regras do formulario engadindo o
que che pida, sen crer que iso te protexeu de nada. A maiúscula ao principio e o !
ao final son unha peaxe, non unha defensa.
O demais é un xogo. Está moi ben feito, e oxalá quedase en xogo.
Fontes: Neal Agarwal, «The Password Game» (neal.fun, 27 de xuño de 2023), as súas 35 regras e o relato do propio autor sobre o formulario que lle dixo que o seu contrasinal era demasiado longo · NIST SP 800-63 (2003), SP 800-63B (2017) e SP 800-63B-4 (agosto de 2025), que pasa de «non deberían» a «non deben» sobre regras de composición e caducidade, e pide aceptar polo menos 64 caracteres · declaracións de Bill Burr ao Wall Street Journal, agosto de 2017 · Arnold G. Reinhold, Diceware (1995), de onde saen os 12,9 bits por palabra. Os tempos da táboa están medidos co comprobador deste sitio, co seu modelo declarado de 10¹² intentos por segundo contra un resumo rápido; os de Diceware, calculados co mesmo ritmo a partir de log₂(7.776) por palabra.
Foto de Olha Ruskykh · Pexels