Hoxe en día topamonos en moitas facetas da nosa vida diaria coa necesidade de lembrar contrasinais e números PIN. O noso móvil, a tarxeta do banco, o correo electrónico... son tantas as claves que temos que moitas veces imos ó fácil e escollemos unha palabra ou número moi fácil de recordar ou moi obvio, o cal está compromentendo a nosa información privada.
Moita xente quitalle importancia a isto, a veces autoenganandose con frases como "de todas manerias dame igual que lean o meu correo, non teño nada que esconder", ou "a miña contrasinal é unha palabra que só eu coñezo". Sen embargo, esas afirmacións non son máis que o producto de unha falsa sensación de seguridade e do descoñecemento do usuario medio do mecanismo das contrasinais á hora de protexer os datos.
É por iso que o 99% dos accesos non autorizados a unha información persoal ou clasificada baseanse na confianza e o descoñecemento do propio usuario.
Imos analizar os erros máis comúns á hora de escoller unha clave, os mitos sobre a importancia ou non de protexer uns datos determinados, e os mecanismos internos das contrasinais.
Como funcionan as claves
Aínda que con pequenas variacións, imonos centrar no mecanismo criptográfico básico que se emprega para o almacenamento de claves nun servidor e como se acada a autentificación empregando esas claves.
Cando creamos un usuario nun sistema operativo, ou nunha páxina web, ou en case calquera sistema que empregue usuario/contrasinal como método de autentificación, tanto o nome como a clave (así como outros datos) quedan gardadas nun arquivo ou base de datos de un servidor para nun futuro poder acceder a ese usuario. A contrasinal, como dato crítico que é gardase como un hash, unha cadea de texto criptografiada, para que ninguen con acceso a ese servidor sexa capaz de ler a clave tal cal é, nin sequera os administradores do mesmo.
Ese hash xérase cifrando a clave orixinal empregando un algoritmo criptográfico de un só sentido; isto é, unha vez criptográfiada a clave, non existe un algoritmo inverso para descifrala. Algúns dos algoritmos de un só sentido máis empregados son o triple DES, MD5, SHA...
Cando tentamos autentificarnos no sistema co noso usuario e a nosa clave, o sistema non trata de descifrar o hash que está almacenado para ver se e a correcta; o que fai é cifrar a clave que nos lle damos, e cotexalo co que está gardado, e se coinciden significa que a clave é a correcta para deixanos pasar.
Ainda que este é o método máis seguro hoxe en día para este tipo de autentificación, e aínda que existen multitude de mecanismos para protexer os arquivos desa base de datos para que non poidan ser accedidos, non está libre de ser violado, xa que aínda que a clave gardada non se pode descifrar, si se pode tentar descubrir empregando software de forza bruta.
Se algunha persoa conseguise acceder o servidor onde se gardan as claves, e saltarse a seguridade desa máquina para acceder os arquivos de claves, o único que protexe a túa clave é a forza do algoritmo empregado para cifrala (o tempo que lle costa a un ordenador cifrar unha palabra calquera con ese algoritmo), e o boa que sexa a túa clave.
Forza bruta e ataques de diccionario
O contrario do que pode parecer, a forza bruta non trata sobre introducir usuarios e claves o azar ata dar coa correcta, de feito existen mecanismos para evitar ese tipo de cousas, como poñer un número limitado de intentos e despois bloquear o sistema unhas horas. A forza bruta realizase directamente sobre os arquivos onde se almacenan esas claves cifradas no caso de que conseguisen violar a seguridade do sistema e obtelos.
O que fai un software de forza bruta e comezar a cifrar palabras, e comparalas cos hash almacenados nese arquivo, e as que coincidan son válidas. Falabamos da forza do algoritmo criptográfico con que esas claves están cifradas; isto non é máis que o tempo que necesita un ordenador para cifrar unha palabra, canto máis tempo lle leve, menos comparacións por segundo pode facer o cracker. Poderiamos dicir "¿por qué non utilizar un algoritmo que precise de unha hora para cifrar unha clave?". A resposta e obvia: precisamos encontrar o equilibrio entre "forza" e "usabilidade", xa que non sería razoable ter que esperar unha hora cada vez que queremos acceder ó noso correo electrónico.
Os programas de forza bruta empregan algoritmos sofisticados para optimizar o seu rendemento, é dicir, tratan de comparar so "posibles" claves, en lugar de probar tódalas palabras.
Por exemplo, se non empregasen ningún tipo de discriminación, comezarían probando con "a", despois "b", despois "c"... despois "aa", "ab", "ac"... ata cousas como "AsJJsuYS3". Considerando que unha clave pode conter tanto números como maiúsculas como minusculas, as combinacións posibles son enormes, e podería levarlle anos dar coa correcta.
Aparece entón o concepto de ataques de diccionario, nos que o programa xa non compara claves o azar, senón que toma palabras sacadas dun diccionario (un arquivo de texto cheo de palabras), nomes propios, e un largo etcetera, xa que o máis habitual é que alguén empregue palabras reais, e non números e letras sen sentido. Con eso reducen infinitamente o tempo necesario para probar todas esas combinacións.
Pero imos mais alá. Istos programas son moi listos, e non só proban esas palabras de diccionario, senon que ademais fan permutacións sobre elas para abarcar un maior campo.
Tomada a palabra "camion", ou "pepito", o programa vai probar con "itopep", "otipep", "PePiTo", "PEPITO", "P3p1t0", "pepito1", "pepito2", etc, etc. Incluso probará combinacións de varias palabras, como "camionpepito", e "pepitocamion". Existen incluso algoritmos moito máis sofisticados que empregan coñecementos psicolóxicos sobre o ser humano para saber cal é a forma habitual de escoller unha clave por parte do usuario medio, de forma que poden chegar a formar comparacións como "ocamiondepepito" (ou sexa, empregar conxuncions da lingua).
Cando un ataque de este tipo non é efectivo, en lugar de probar con palabras ó azar, van a probar primeiro a xerar palabras aleatorias, pero seguindo un patrón de sílabas, xa que como persoas que somos o máis normal e que poñamos algo pronunciable como "puFicruMo" e non "uIDNs3udywO"
Visto esto deducimos que unha boa clave e unha clave larga, que empregue maiusculas, minusculas e números, que non estea basada nunha palabra real, e que non siga un patrón silábico. Desta forma poñeremosllo moi difícil á forza bruta.
Sabemos e entendemos que unha clave deste tipo é complicada de memorizar, máis se cabe cando temos que memorizar máis de unha, e que non debemos apuntalas en papel. Para iso imos usar algúns trucos.
Trucos para escoller unha boa clave
Non existe unha fórmula maxistral para escoller unha contrasinal en condicións (e se existíse xa non serviría, ¿recordades o de non seguir patróns coñecidos?).
Se és unha persoa con boa memoria, o ideal é que xeres unha o azar seguindo os consellos que demos antes, e tratar de memorizala. Sen embargo, podes empregar algúns trucos como os seguintes (non os tomes o pé da letra, son só suxerencias para que ti mesmo crees o teu propio truco).
- Colle as iniciais dos teus fillos, despois os 3 ultimos números do teu teléfono, e despois as duas últimas letras de cada un dos teus apelidos (a primeira en maiúscula, e a segunda en minúscula).
- Dalle a volta ó teu nóme, alterna cada letra (maiúscula-minúscula-maiúscula...) e intercala os dixitos do teu DNI co resultado: Ex. antonio -> oinotna -> oInOtNa -> o4I4n8O2t3N6a
Agora que sabes todo isto, ¿é a túa clave segura?