quarta-feira, 6 de julho de 2016

Pascal, internet, senhas e você


Você teria um minuto para ouvir a palavra de Pascal?
(A primeira pessoa que se tem notícia de ter escrito de maneira formal sobre permutações foi Blaise Pascal)
Este post seria uma (longa) resposta a este post. Por esse motivo faz referência à amigos que postaram respostas por lá.

Vamos ignorar a piada da foto e vamos fazer de conta que eu quero descobrir a senha do painel da foto, que tem 12 símbolos possíveis (e nenhum desgastado). Eu consigo imaginar duas possibilidades: o mesmo símbolo poder se repetir na senha (1) ou não (2) (mal aê Patrick Sérgio, não pensei nessa possibilidade antes de te responder).

No caso (1) então o primeiro simbolo pode ser qualquer um dos 12 possíveis. No segundo dígito também são 12 possíveis (pois os dígitos podem se repetir), assim como nos demais. Aí já fica fácil de sacar que a quantidade de senhas possíveis é elevado à , por exemplo, se o painel da foto tem 12 símbolos e a senha tiver 3 de comprimento dá 12 elevado à 3 senhas possíveis (1728 senhas). 

(2) Se um dígito só pode aparecer uma vez na senha a conta fica assim: o primeiro dígito podem ser 12 possíveis (12 senhas possíveis de um símbolo de comprimento), pro segundo dígito sobram 11 possíveis (12*11 símbolos possíveis de comprimento = 132 senhas possíveis), pro terceiro dígito 10 (12*11*10=1320), no quarto 9 (12*11*10*9=11880). Por essa lógica a conta fica assim: fatorial - (( - + 1) fatorial), por exemplo, se eu quero testar todas as senhas no painel (de 12 dígitos) com até 10 dígitos então eu tenho que testar: 12! - (12 - 10 + 1)! = 12! - 3! = 479001600 - 6 = 479.001.594 senhas possíveis. Por essa lógica a conta fica assim: fatorial - (( - + 1) fatorial) então, por exemplo, se eu quero testar todas as senhas no painel (de 12 dígitos) com até 10 dígitos então eu tenho que testar: 12! - (12 - 10 + 1)! = 12! - 3! = 479001600 - 6 = 479.001.594 senhas possíveis.

Respondendo a pergunta do Fernando: como as senhas costumam ser do tipo (1) então fica 4 elevado à 8 = 65536 senhas (que já é muito)

Tentando quebrar a senha do painel da foto (ou "Respondendo certo a pergunta do Patrick): ali tem 4 dígitos desgastados, então pelo que vimos até aqui isso facilita (muito) o trabalho. Como são 4 dígitos desgastados então a senha tem, pelo menos 4 dígitos, então se a senha for do tipo (2) são 24 senhas possíveis que, a princípio, é bem rápido de testar. Se não for (isto é, cai no caso (2)) a coisa degringola da seguinte maneira: senha de 4 dígitos de 4 possíveis (4 ^ 4 = 256, ainda é testável, talvez ao longo de alguns dias), senha de 5 dígitos possíveis (4 ^ 5 = 1024, ok ainda), 6 dígitos: 4 ^ 6 = 4096 (opa), 4 ^ 7 = 16384 (eita).... vcs já entenderam: a cada dígito novo que entra multiplica-se a quantidade de senhas possíveis pela quantidade de algarismos existentes no painel (como estamos pensando só nos desgastados são apenas 4).

Bônus: em quanto vc melhora a segurança das suas senhas do computador ao acrescentar um novo dígito (que, pra simplificar, podem ser uma das 27 letras ou um dos 10 números)?

TODO: Falar sobre aumento da complexidade das senhas.
TODO: Falar sobre bancos de senhas
TODO: Falar rapidamente sobre como proteger senhas em sistemas desktop
TODO: Postar o Leaked source