Share via


Otimizando a segurança da senha visual

Desejamos falar um pouco mais sobre a segurança das senhas visuais em uma postagem de continuação com base em alguns dos comentários de vocês. Jeff Johnson, o diretor de desenvolvimento da equipe de experiência do usuário tem especial interesse na matemática e segurança desse recurso e escreveu esta postagem sobre como otimizar a segurança da senha visual. Como se trata de uma nova maneira de fazer logon e há a preocupação com a segurança (especialmente com dispositivos móveis) e com as novas técnicas de autenticação (a fragilidade do reconhecimento facial, por exemplo, ou os desafios que observamos com a biometria), não é de se surpreender que muitas pessoas tenham ficado pensando sobre possíveis falhas na abordagem. A nossa meta era oferecer um mecanismo prático que não fosse, evidentemente, menos seguro do que as senhas de texto (Jeff forneceu todos os cálculos). Abaixo, Jeff explica por que ela é uma solução totalmente forte. Ao ler a postagem, tenha em mente que, ao longo dos anos, muitas "melhores práticas" foram estabelecidas para senhas digitadas (políticas como números + letras + maiúsculas misturadas com minúsculas, tamanho, impossibilidade de reciclagem de senhas, proibição do uso de palavras dicionarizadas etc.), bem como cuidados importantes (como evitar terminais de Internet públicos com possíveis câmeras no teto ou keyloggers) -- como se pode imaginar, todos esses tipos de práticas têm o seu equivalente no uso da senha visual. Jeff descreve algumas dessas práticas equivalentes e a lógica por trás da segurança do modelo. --Steven


Uma pergunta frequente que ouvimos várias vezes de um jeito ou de outro é "Eu me preocupo com a segurança do meu computador; quais são as melhores práticas para se criar a sequência mais segura de gestos de logon?" Ela nos leva a uma análise interessante (pelo menos para um matemático como eu). Ela envolve a teoria dos jogos, mas primeiro vou falar sobre as melhores práticas.

  • Escolha uma foto que tenha pelo menos 10 pontos de interesse. O ponto de interesse é uma área que pode servir como um ponto de referência de um gesto – um ponto que seria tocado, locais que você conectaria com uma linha, uma área que seria circulada.
  • Use uma mistura aleatória de tipos de gestos e sequência. Embora a linha seja o gesto que tenha mais permutações, se você sempre usar 3 linhas, isso na verdade facilitará a vida do invasor, pois ele poderá eliminar as tentativas de sequências com os outros tipos de gestos.
  • Se você optar por usar um toque, uma linha e um círculo, escolha a ordem desses gestos de forma aleatória; isso gerará um número de combinações 6 vezes maior do que uma ordem previsível.
  • Para os gestos de círculo, escolha, de forma aleatória, desenhá-los no sentido horário ou anti-horário. Também considere fazer um círculo maior ou menor do que o tamanho "esperado".
  • Para os gestos de linha, o instinto talvez seja sempre desenhar da esquerda para a direita, mas é mais seguro se você escolher a direção usada para conectar os dois pontos de forma aleatória.
  • Assim como com todas as formas de autenticação, ao inserir a sua senha visual, evite deixar que outras pessoas observem você.
  • Mantenha o computador em um local seguro em que pessoas não autorizadas não tenham acesso físico a ele. Como com qualquer entrada de senha, observe a linha de visão e possíveis dispositivos de gravação que podem se intrometer na tela.
  • Saiba que as marcas de dedo na tela podem identificar os seus gestos. Sempre limpe a tela totalmente. Embora isso aumente o risco caso você limpe, entre e depois não faça nada, o acúmulo de óleo gerado pelo uso repetitivo geralmente é mais fácil de ser visto por um invasor (além do mais, quem gosta de usar um dispositivo sujo?). Observe que esse acúmulo é mais arriscado quando se usam PINs numéricos, quando o dispositivo é ligado e desligado frequentemente e você insere a sequência inúmeras vezes por dia (o óleo pode ficar acumulado nesses locais). Olhe a tela de logon da senha visual com frequência com um ângulo oblíquo e veja se parece haver um padrão que indique a sua sequência de gestos. Em caso positivo, limpe a tela ou acrescente algumas marcas na área da senha visual (o que aumenta efetivamente os POIs discutidos abaixo)

Se seguir essas dicas, você aumentará a segurança do seu computador de forma significativa.

Como várias pessoas sugeriram, nós também consideramos reduzir o tamanho da imagem e exibi-la em posições aleatórias e ligeiras rotações na tela para minimizar quaisquer riscos causados pelas marcas de dedo. Soubemos pelos comentários sobre usabilidade que o tamanho da imagem aumentou a dificuldade de se inserir os gestos corretamente e tornou a experiência de logon menos imersiva; no entanto, se havia um aumento significativo da segurança, desejamos analisar os custos e benefícios. O que descobrimos foi que, embora o deslocamento da imagem pudesse reduzir o acúmulo de marcas de dedo em lugares específicos, havia ainda mais "nuvens" proeminentes de toques, linhas e círculos que eram idênticas em relação entre si. Com essas informações, um invasor poderia facilmente deduzir os gestos relacionados entre si. Com essas informações, seria um exercício simples mover os gestos sobre a imagem até que eles parecessem coincidir com elementos significativos da imagem. Não houve um aumento notável na segurança e pudemos constatar um prejuízo expressivo na experiência rápida e fluida. Na verdade, o uso de marcas de dedo é muito difícil. Quando pegamos tablets que haviam sido usados por vários dias, normalmente havia tantas marcas de dedo que era impossível até mesmo começar o processo de dedução do conjunto de gestos. Mesmo quando recebemos a sequência de logon e sabíamos o que procurar, o nosso progresso foi limitado. Incluímos essa análise porque consideramos importante que, sempre que qualquer nova tecnologia inovadora é introduzida, que os possíveis vetores de ataque sejam divulgados e a comunidade técnica possa atingir um consenso geral a respeito do nível de uma ameaça e suas possíveis reduções. É claro que também temos confiança de que a tecnologia das telas continuará sendo aperfeiçoada e as marcas de dedo um dia serão raras.

A análise

Também é interessante calcular as chances de um ataque ocorrer em vários cenários. Como foi discutido na postagem anterior, os gestos são baseados em uma grade 100 x 100, portanto, até mesmo o gesto mais simples (toque) tem possibilidade equivalente a 10.000 (com a correspondência de proximidade, esse número é reduzido a 270). Na verdade, o número de POI (pontos de interesse) é muito menor do que isso – há menos pontos especiais em uma fotografia.

Embora haja outras formas de se estruturar uma análise, para fins desta discussão, vamos supor que haja um número pequeno de POIs e todos os gestos envolvam somente esses pontos. Consideramos que os toques caiam exatamente em um POI, os círculos tenham apenas dois tamanhos (pequeno e grande em torno de um ponto) e duas direções (sentido horário ou anti-horário) e as linhas sempre conectem dois POIs. Como isso não reflete rigorosamente a realidade, o número de permutações é na verdade até maior.

O Windows oferece proteção adicional para senhas visuais (e PINs), desabilitando o mecanismo de logon após 5 tentativas incorretas (a partir desse número, você precisa usar a senha convencional). Tendo isso em mente, é interessante classificar a segurança relativa de duas maneiras em um determinado cenário.

Primeiro, quais são as chances de um invasor que conheça toda a sua metodologia de seleção de gestos entrar no seu computador antes de o bloqueio ser ativado (chamaremos isso de Chances1). Se houver x sequências igualmente prováveis, as chances de dedução em cinco tentativas antes do bloqueio é de 5/x .

A outra visão interessante supõe que você tenha recebido 100 computadores, cada um com uma senha selecionada de forma aleatória de acordo com as regras do cenário (chamaremos isso de Chances100). Quais são as chances de um invasor fazer logon em pelo menos um desses computadores? Como se trata de eventos independentes, as chances de isso acontecer são:
  1)/x)^100.

Cenário básico

Vamos supor um cenário terrivelmente inseguro: A sua "imagem" é toda preta e contém apenas um ponto branco no meio. Como há apenas um POI, somente o toque e o círculo podem ser usados (não há pontos para se conectar uma linha). Obviamente, se você usar somente o toque, o invasor terá 100% de sucesso, pois a única sequência válida será a de três toques no ponto branco. Vamos supor que você use somente círculos. Há 4 círculos possíveis que podemos escolher de forma aleatória para cada gesto. Isso nos dá um total de 43 = 64 sequências de gestos possíveis. Nesse cenário, as Chances1 são de 7,81% e a Chances100 são de 99,97%. É surpreendente que, considerando um único computador, as chances de uma entrada bem-sucedida com a senha visual sejam inferiores a 8% (de acordo com a minha intuição, eu arriscaria um número maior), embora seja praticamente certo que, em 100 computadores, pelo menos um deles seria comprometido. Embora alguns usuários fiquem tranquilos com essa porcentagem, a maioria das pessoas que se preocupam com segurança e dos administradores de TI que gerenciam um grande número de computadores a consideraria inaceitável.

Agora vamos ampliar o cenário e escolher aleatoriamente cada gesto, seja um toque ou um círculo. Seria tentador dizer que isso dobra a complexidade de cada gesto, mas não é verdade. Há 4 círculos possíveis e 1 toque possível, portanto, 5 gestos únicos, o que resulta em um total de 125 sequências.

Vamos dizer que optamos por implementar a nossa metodologia "aleatória" da seguinte maneira: fazendo cara ou coroa para usar um toque ou um círculo. Se for um círculo, escolheremos uma das quatro possibilidades de forma aleatória. Embora pareça uma boa ideia por ser um método aleatório, na verdade ele é menos seguro do que usar somente círculos. Isso porque metade das vezes que escolhermos um gesto, haverá apenas uma possibilidade (o toque). O invasor concentraria seus esforços em gestos com dois ou três toques e teria mais sucesso. Uma estratégia ideal de ataque (há outras com chances idênticas) seria testar 3 toques e, em seguida, 2 toques seguidos por cada um dos quatro tipos de círculo, totalizando o número de tentativas permitido antes do bloqueio. Em vez das aparentes Chances1 de 4% (uma melhora em relação aos 7,81% anteriores), um invasor atingiria as Chances1 de 25%, mais do que três vezes pior do que usar somente círculos. As estatísticas podem ser enganosas!

Felizmente, há uma forma fácil de corrigir isso. Para cada gesto, escolhemos um número aleatório entre 1 e 5. Se for 1, usamos o toque. Caso contrário, usamos o valor selecionar uma das 4 possibilidades de círculo. Isso resulta em Chances1 de 4% (quase duas vezes melhor do que o primeiro cenário), mas as Chances100 seriam de terríveis 98,31%.

Uma leve melhora

Vamos melhorar um pouquinho a nossa metodologia. Esse cenário envolve uma imagem com apenas dois POIs (é realmente difícil imaginar uma foto real tão simples, portanto, podemos supor que seja uma tela com dois pontos brancos). Isso nos permite incluir o gesto de linha, mas há somente duas possibilidades: desenhar do primeiro ponto para o segundo ou do segundo para o primeiro.

Tendo a experiência do exemplo anterior, não escolheremos o tipo de gesto e o gesto de forma aleatória. Somaremos todos os gestos possíveis e escolheremos um número aleatório para mapear cada gesto possível com igual probabilidade. Há dois toques possíveis, 8 círculos possíveis e 2 linhas possíveis. O número total de sequências de gestos é de 123 = 1728. Com isso, temos Chances1 de 0,29% e Chances100 de 25,2%. É um tanto incrível que, com uma imagem tão simples com somente 2 POIs, as chances de um ataque seriam tão baixas. Mesmo que você tivesse 100 computadores para tentar, você somente conseguiria entrar em pelo menos um computador em uma das quatro tentativas.

Melhorando mais

Vamos supor que agora haja 5 POIs na sua imagem. Posso começar a imaginar algumas imagens muito simples em que isso seria possível. Agora temos 5 toques possíveis, 20 círculos possíveis e 20 linhas possíveis. Com isso, temos 453 = 91.125 sequências possíveis. As Chances1 agora são microscópicas: 0,0055% e as Chances100 também são muito baixas: 0,55%. Essas chances são suficientes para proteger os dados de muitos usuários.

O máximo de segurança

Vamos supor que você se preocupe muito com a segurança e escolha uma imagem com 10 POIs. Pode haver controvérsia quanto ao número de POIs que uma determinada foto pode conter. Entretanto, não importa quantos POIs são "óbvios", basta escolher 10 pontos com os quais você se identifique para neles aplicar gestos de forma aleatória. Na verdade, se alguns dos pontos não forem óbvios (mas você puder aplicar gestos a eles de forma confiante), terá mais segurança.

Agora temos 10 toques possíveis, 40 círculos possíveis e 90 linhas possíveis. Isso representa o grande número de 1403 = 2.744.000 sequências. As Chances1 são realmente microscópicas: 0,0002%. Na verdade, uma pessoa teria 50 vezes mais chances de ganhar US$ 10.000 com um bilhete de US$ 1 na loteria do estado de Washington do que ter o computador invadido usando uma imagem com 10 POIs! As Chances100 caíram para 0,018% e até as Chances1000 são de apenas 0,18%.

Engenharia social

A engenharia social é uma das ameaças mais importantes para todos os tipos de segurança de entrada, seja senha, PIN ou senha visual. Usar um dispositivo de escolha aleatória para ajudar a criar a sua sequência de entrada é igualmente útil para cada um desses métodos.

Para os apaixonados pela técnica, é possível implementar os esquemas acima com um pouco de programação ou o uso do Excel. Entretanto, seria útil uma forma menos técnica de criar uma sequência de gestos que pudesse ser empregada por um público maior. É claro que não devemos nos iludir achando que o número de pessoas que recorreriam a essas ferramentas e procedimentos seria maior do que o número de pessoas que escolheria senhas de texto fortes voluntariamente sem que isso fosse exigido por administradores de sites.

Uso de um dado

Achei que seria divertido propor uma forma de gerar uma sequência de gestos aleatórios por meio de um exercício bem-humorado. Para fazer isso, optei por usar um dado de seis lados (D6 para os jogadores fanáticos :-)) para gerar uma sequência de gestos com 6 POIs. Além de possibilitar um mapeamento perfeito com o dado, uma imagem com 6 POIs permite que o número de linhas possíveis (30) seja exatamente igual à soma do número de toques (6) com o número de círculos (24), portanto, é fácil dividir o tipo de gestos também.

Repita estas etapas para cada um dos três gestos:

  1. Jogue o dado.
    O número indica qual dos seis POIs será usado para o gesto (se for uma linha, será o POI inicial).
  2. Jogue o dado novamente.
    • Se o número for par, o gesto será uma linha
      Jogue o dado novamente.
      Se o número for igual ao primeiro, jogue o dado novamente até que saia outro número.
      Esse número será o segundo ponto da linha.
    • Se o número for ímpar, o gesto será um toque ou um círculo
      Jogue o dado novamente.
      Use a lista de números do dado abaixo para determinar o gesto.
      1 - Um toque
      2 - Um círculo pequeno com sentido horário
      3 - Um círculo pequeno com sentido anti-horário
      4 - Um círculo maior com sentido horário
      5 - Um círculo maior com sentido anti-horário
      6 - Jogar novamente

Como esperado, a complexidade proporcionada por 6 POIs fica entre 5 POIs e 10 POIs. As Chances1 são de 0,0023% e as Chances100 são de 0,23%.

Desejamos que você goste de usar a nova senha visual com a mesma intensidade com que curtimos criá-la!

--Jeff Johnson