Versión en español - - - english version









PASSWORDS ASSOCIATIVAS - UM NOVO CONCEITO

COMO MELHORAR A SEGURANÇA DAS SENHAS E PASSWORDS NOS SISTEMAS INFORMATICOS

Com a consolidação da Internet, sistemas antigamente restritos a algumas centenas de usuários, passaram a ser acessíveis a milhões de pessoas em forma imediata. Até alguns anos atrás, para tentar quebrar o código de uma conta corrente, era necessário chegar fisicamente até o terminal bancário, ou até algum terminal conectado á rede interna do banco. Mas agora, centenas de milhões de pessoas tem o poder de brincar com contas e passwords, comodamente sentadas nas suas casas, em qualquer lugar do mundo.

A quantidade de contas e usuários a ser testados é tão elevada, que os modernos hackers usam uma estratégia muito mais lucrativa que adivinhar um password: eles escolhem um password único e simples, digamos '1234', e ficam checando contra muitas contas simultaneamente, com a garantia de que em pouco tempo, alguma destas contas se encaixará no password.

Mesmo em sistemas tradicionais, que não operam ligados á Internet, a segurança dos velhos passwords está se mostrando vulnerável á moderna tecnologia. Recentemente, a Receita Federal do Brasil descobriu um esquema de eliminação de dívidas de empresas, realizado por funcionários desonestos nos próprios computadores da Receita Federal. Estes funcionários roubavam as senhas de outros funcionários legalmente habilitados, usando um pequeno aparelho conectado à porta externa do computador.

O interessante é que, muitas instituições financeiras estão gastando grande quantidade de recursos para proteger as senhas dos usuários na Internet, usando ferramentas bastante avançadas, e substituindo o teclado pelo mouse (teclado virtual) para digitar a senha. Ainda assim, insistem no velho esquema da senha única e fixa como proteção, enquanto poderiam usar estes recursos de forma mais prática. Muitos bancos utilizam dupla checagem (duas senhas diferentes), e mostram tabelas de conversão aleatórias para digitar os caracteres, de forma que os valores digitados não sejam os valores reais da senha. Estes processos, se bem aumentam a segurança do sistema, por outro lado tornam a vida dos usuários muito mais difícil.

Mesmo assim, o atual esquema de bancos e financeiras é muito vulnerável. Suponha que um usuário vai até ume cyber café para efetuar uma transação bancaria. A instituição financeira teve o trabalho de substituir o teclado pelo mouse, usar tabelas aleatórias e outros artifícios, com o intuito de evitar que o computador estranho se aproprie das informações deste usuário. Mas também sabemos que a tecnologia joga a favor dos hackers, e nada impede que uma pequena camera de TV, imperceptível a olho nu, grave tudo que se passa nas costas deste usuário no cyber café. Neste caso, a camera registrará o que está sendo 'teclado virtualmente' pelo mouse, quais são as tabelas de conversão aleatórias que aparecem na tela do computador, e o que a pessoa digita manualmente no teclado (alem do numero da conta, nome, endereço e muitas outras informações).

Neste trabalho, é analisado um esquema mais simples e seguro que o tradicional baseado em senhas fixas. Em lugar de usar as senhas de 'caracteres fixos' (como por exemplo o número da placa do carro, ou o nome da namorada), é mais seguro e barato usar senhas de posições fixas e caracteres variáveis, com o qual toda tentativa de descobri-la deixa de ter utilidade. O sistema aqui mostrado é tão prático, que o usuário pode até mostrar a senha que está digitando a outras pessoas, com a certeza de que os outros não poderão acessar sua conta de forma alguma.

Imagine que um usuário chamado Alberto vai retirar dinheiro da máquina ATM, e esta lhe mostra um pequeno quadrado (como este aqui) para digitar a senha:



então Alberto sabe que a 'sua senha' é a primeira posição de cima, seguida pela diagonal, virando a esquerda abaixo, e logo a direita, tal como representado pelas letras a, b, c, d, nesta ordem.



Assim, Alberto digita '1332' como senha para retirar o dinheiro, a máquina compara o que Alberto digitou contra as posições 'abcd' e valida a operação.

IMPORTANTE: Alberto não toca no tabuleiro apresentado ao digitar a senha, ele somente olha para o tabuleiro, e digita os números da senha num teclado convencional, que pode ser o teclado da maquina ATM, o teclado do computador, ou o teclado de um telefone celular. Desta forma, não é possivel saber o caminho da senha atraés do movimento dos dedos no tabuleiro.

O tabuleiro é preenchido aleatoriamente pela máquina cada vez que solicita a senha, de forma que os números sempre serão diferentes, importando apenas a posição dos caracteres a ser digitados. É evidente que cada usuário terá uma seqüência diferente de posições para formar a senha. Por exemplo um usuário que joga xadrez poderia escolher os movimentos do cavalo em diversas posições, enquanto que outro poderia simplesmente fazer um movimento como o relógio. Desta forma, o banco agora pedirá ao cliente que 'escolha um caminho no tabuleiro', em lugar de pedir que escolha uma senha determinada.

Visto que é impossível para um espião saber qual o número que o usuário está olhando no tabuleiro quando escolhe os dígitos (mesmo usando câmaras muito sofisticadas que focalizem o olho do usuário, isto seria impossível), ele nunca saberá qual foi a posição do número que foi escolhido. O computador deve tomar o cuidado de mostrar sempre vários números repetidos, para evitar que alguém identifique qual foi a posição escolhida na senha. No exemplo acima, o número '1' pode ter vindo de 3 posições diferentes, o '2' de quatro posições, e o '3' de duas posições diferentes, totalizando 3 x 2 x 2 x 4 = 48 combinações (ou caminhos) pelos quais a senha '1332' poderia ser formada.

Na próxima operação, após digitar a conta, a máquina mostraria um tabuleiro como este para Alberto:



e então a senha para validar a operação agora é '2123', diferente da anterior. Note-se que mesmo se um observador muito cuidadoso (como aquela fotografia de um rapaz olheiro que tem nas máquinas) pudesse observar a senha, esta não teria nenhum valor para a próxima operação. No caso do fraude na Receita Federal, de nada adiantariam os aparelhos coletores de senhas para memoriza-las.

Se um espião consegue várias amostras de senhas digitadas por um mesmo usuário (junto com os tabuleiros aleatorios orginais), poderá deduzir quais foram as posições escolhidas, após um cuidadoso trabalho de eliminação. Mas o trabalho de coletar 'várias amostras' pode não ser muito fácil, porque as senhas continuarão a ser substituídas por coringas '*' no terminal, e pelo fato de que geralmente, o usuário e o presunto espião se encontram frente a frente uma única vez na vida, por exemplo num caixa eletrónico, num cyber café, ou outro tipo de contato que permita 'coletar' uma senha a traves de artifícios, como os conhecidos programas que memorizam o teclado em forma escondida.

É fácil mostrar que, dado um tabuleiro com P posições, a quantidade ótima de símbolos diferentes que deve ser mostrado ao usuário, para dificultar a identificação, é dado pela fórmula sqr(P). Se o tabuleiro escolhido for um quadrado onde P = N x N (N = tamanho do lado), então a quantidade ótima de símbolos é igual a sqr(P) = N.

Para chegar a esta conclusão, devemos notar que existe um compromisso (trade off) entre quantidade de símbolos (ou caracteres) mostrados e quantidade de caminhos possíveis para construir uma senha dada. Se uma senha tem tamanho T de caracteres, e podem ser usados S símbolos diferentes para construi-la, então a quantidade de combinações possíveis para adivinhar a senha ao acaso é dado por S^T. Como exemplo, num alfabeto com 26 letras (S=26), se a senha tem um tamanho de 4 (T=4), a quantidade de combinações possíveis é de 26^4 = 456.976, e adivinhar a senha por acaso tem uma probabilidade de 1/456.976 = 0,0000021 .

Por outro lado, se no tabuleiro são mostrados muitos símbolos diferentes (para otimizar o valor anterior), um espião pode deduzir facilmente qual foi o caminho utilizado. Por exemplo, se no tabuleiro inicial cada casa tem um caracter diferente, existe um único caminho para construir a senha, e embora adivinhar a senha na sorte seja muito difícil, uma vez conhecida a senha (e o tabuleiro), também se conhece o (único) caminho para construi-la, arriscando assim todo o sistema de segurança.

Dados S símbolos diferentes, cada um com uma quantidade Q1, Q2... Qs no tabuleiro, o total de caminhos diferentes para construir uma senha é dado por Q(s1) x Q(s2) ... X Q(st). Por exemplo, se no tabuleiro ha 2 caracteres '1' e 3 caracteres '2', e supondo que o espião tenha observado que a senha era '1122' (ou seja T=4), então a quantidade de caminhos possíveis para formar esta senha é de 2 x 2 x 3 x 3 = 36 .

No outro extremo, se o tabuleiro contiver apenas um único símbolo (digamos o '3'), a quantidade de caminhos possíveis para construir esta senha é o máximo (dadas as combinações), mas por outro lado, adivinhar a senha e muito fácil, já que existe apenas uma única senha possível a ser apresentada, que é '3333'. Isto pode se traduzir como 'quanto mais caminhos existam, menor será a quantidade de senhas possíveis'.

Desta forma, devemos fazer com que o valor S^X (quantidade de senhas possíveis) seja o máximo, e também devemos fazer com que a quantidade de caminhos possíveis para construir uma senha, também seja o máximo. Uma forma de solucionar o problema, é colocando a mesma quantidade para todos os símbolos no tabuleiro, assim Q1 = Q2 = ... = Qs, e então, a quantidade de caminhos para formar uma senha é dado por Q1 x .. x Qt = Q^T.

Se existem S símbolos diferentes num quadrado de P posições, então cada símbolo S aparecerá P/S vezes, logo Q = P/S , e a equação se reduz a conseguir que (P/S)^T = máximo. Fazendo os dois máximos iguais (quantidade de caminhos e quantidade de senhas), temos que (P/S)^T = S^T = máximo, e assim P/S = S , ou S = sqr(T) = N, que é o lado do quadrado (caso o tabuleiro seja um quadrado de N x N posições).

Isto quer dizer que, se for escolhido um quadrado de 3 x 3 para apresentar a senha, então o mais seguro é permitir que o password tenha até 3 caracteres diferentes, e cada um deles deve aparecer 3 vezes no tabuleiro. Estes valores dificultam ao máximo tanto a adivinhação da senha por tentativa e erro, quanto a dedução do caminho uma vez conhecida a senha.

O quadrado de 3 x 3 posições aqui apresentado pode ser modificado de muitas formas, e quando os sistemas evoluírem suficiente, o tabuleiro frio pode ser substituído por fotografias aleatórias de rostos, paisagens ou quaisquer outra imagem em forma quadriculada, de forma que o usuário se sinta confortável quando navegue na 'sua senha particular' ao escolher os dígitos. Por exemplo, um tabuleiro de 20 x 20 posições pode parecer muito complicado para um usuário navegar e escolher os dígitos, mas se este tabuleiro tiver como fundo a imagem de um rosto, o usuário pode imediatamente saber que seus dígitos estão 'no olho direito, na orelha esquerda e na boca' da imagem ao fundo. Desta forma, as chances de um estranho deduzir a senha correta praticamente se evaporam. Num tabuleiro de 20 x 20 posições, a quantidade de caminhos possíveis para formar uma senha se tornam astronômicos.



Usando os recursos de imagens e cores, hoje disponíveis na maior parte dos sistemas informáticos, é possível estender a segurança dos passwords até níveis muito elevados. Um ponto fraco no sistema apresentado aqui, reside no fato de que a informação transmitida para o teclado (os números), também estão presentes no tabuleiro gerador. Desta forma, se um hacker se apropria de pelo menos duas passwords e dois tabuleiros geradores, tem certa chance de conseguir quebrar a segurança. Isto é um avanço enorme se comparado aos sistemas atuais, onde apenas o conhecimento de uma única senha coloca em perigo todo o sistema. Mesmo assim, esta brecha pode ser coberta ao eliminar a informação dos tabuleiros geradores.

Sem esta informação, um hacker não tem nenhuma chance de entrar ao sistema, mesmo tendo roubado centenas de passwords e tabuleiros geradores. Inclusive naquele cyber café, onde o usuário está sendo gravado pelas costas por uma micro-camera, um hacker não teria nenhuma chance.

Para implementar um sistema assim, o usuário terá que memorizar duas coisas, a) o caminho a ser seguido no tabuleiro, e b) uma pequena tabela associativa entre imagens e números. Num primeiro exemplo, suponhamos que Alberto, o nosso usuário, alem de escolher o caminho já citado para sua senha, também é obrigado a decorar a seguinte tabela: branco = zero, preto = um, vermelho = dois e azul = 3.

Quando Alberto faz a transação, a máquina pode apresentar o seguinte tabuleiro para ele:



E então, lembrando da tabela de cores associada, Alberto digitaria '3321' como senha. Observe que agora, um presunto espião que se apodere de ambos, o password '3321' e o tabuleiro das cores, não tem como saber as cores que Alberto escolheu como '3', '2', ou '1', visto que esta informação está presente apenas na cabeça de Alberto, e no computador que controla o sistema.

Ha muitos esquemas similares ao das cores que podem funcionar, por exemplo, quando Alberto vai ao banco para criar sua senha, o funcionário pode apresentar uma lista de animais que começam com a mesma letra do digito em questão. Assim uma 'zebra' representa o numero zero, 'urso' é o numero um, o 'dinossauro' o dois e o 'tigre' o três. Neste caso, Alberto pode ver um tabuleiro como o seguinte na máquina ATM:



com o qual digitaria '1211' (Urso-Dino-Urso-Urso) para validar a operação. Observe que podem ser colocados objetos que propositadamente desviem a atenção do hacker, como pássaros e outros bichos que nada tem a ver, de forma que ele não consiga deduzir qual a associação que o usuário esta realizando. Não é impossível pensar no usuário colocando suas próprias imagens pessoais (foto da namorada, da sua mãe, o gato preferido etc.) e dando-lhe números associados. Estas imagens nada vão dizer a um observador estranho, mas tem grande importância para o usuário, que pode assim fazer facilmente associações.

Uma técnica de 'camouflagem' interesante pode ser pensada ao fazer associaçòes 'fuzzy' sobre objetos. Em lugar de relacionar figuras ou desenhos fixos com os números a serem digitados (os quais podem ser rastreados por um hacker experto), pode se fazer associçào com 'classes de objetos'. Por exemplo: o usuário é obrigado a decorar uma regra como a seguinte - 'se no quadrado aparece um desenho animado qualquer, vocé digita 1, se aparece uma fotografia colorida qualquer, digita 2, e se aparece uma letra qualquer, digita 3 no campo da senha', ou seja, tres classes de objetos facilmente diferenciaveis uns dos outros. Desta forma, um hacker sempré vera desenhos, fotografias e letras diferentes (duzias deles) para um mesmo usuário, e não poderá deduzir qual exatamente é a associaçào que este faz com os números digitados. No caso de colocar figuras fixas (por ex. 'tweety', 'garfield' e 'victoria'), estes podem ser mapeados sobre um número suficiente de amostras coletadas e assim descobrir o caminho original.

As rotinas de 'digitação de senha pelo mouse' já foram desenvolvidas por quase todos os bancos para as transações na Internet, e com isto a digitação 'por localização' em lugar de digitação 'por caracter fixo' é apenas uma questão de costume para o usuário. Uma simples troca de hábito pode salvar muito dinheiro e esforço, mas aparentemente as instituições se resistem a mudar de hábito, e acabam pagando um alto preço por isto.

Se deseja testar este sistema agora mesmo e desafiar seus amigos hackers, faça o seguinte: primeiro lembre de usar o mesmo caminho 'a,b,c,d' que foi mostrado acima, e logo lembre esta regra de conversão 'fuzzy' para entrar os números:

Desenhos DIGITE 1
Fotos DIGITE 2
Letras DIGITE 3

Logo clique AQUI para brincar. A probabilidade de acertar por acaso é de 3^4 = 81.

Aconselho fazer o seguinte teste: reuna um grupo de pessoas muito espertas, e faça o teste com eles mostrando claramente qual a senha que está digitando a cada momento (mas sem dizer qual a relacão entre figuras e números), e pedindo que eles tratem de deduzir o que você observa nos quadrados para construir a senha. Após um número suficiente de tentativas, arrisque um novo passo: diga a eles qual é o caminho que você esta olhando (a,b,c,d), mas sem dizer qual a relação, e veja quanto tempo demoram em descobrir o truque, mesmo depois de saber o caminho utilizado e as senhas digitadas. Isto dará uma medida da segurança do sistema, apenas usando 3 figuras diferentes para cada classe de objeto, e uma senha de apenas 4 caracteres.


Curitiba - Brasil - 12 de Setembro de 2003 - comentarios para m02041952@yahoo.com

Aviso: este texto está registrado en varios lugares publicos da rede Internet com data y hora. Por tanto, se você vai reproducir o mismo em algum lugar, tenha o cuidado de dizer a fonte onde se originou.

Esta pagina foi lida vezes




Conheça o site mais especializado em relações pessoais em portugues - Amigos.com!