O “ esquema XKCD frequentemente citado […] não é mais um bom conselho ”?

Eu estava cambaleando e me deparei com este ensaio de Bruce Schneier alegando que O esquema de senha XKCD estava efetivamente morto.

Os crackers de senha modernos combinam palavras diferentes de seus dicionários : […]

É por isso que o esquema XKCD frequentemente citado para gerar senhas – agrupar palavras individuais como ” correcthorsebatterystaple ” – não é mais um bom conselho. Os crackers de senha estão usando esse truque.

O invasor irá alimentar os crackers de senha com qualquer informação pessoal que ele tenha acesso sobre o criador da senha. Um bom cracker de senhas testará nomes e endereços do catálogo de endereços, datas significativas e qualquer outra informação pessoal que tenha. […] se o seu programa já o armazenou na memória, este processo irá capturá-lo.

Seu argumento parece ser isso porque é conhecido que as pessoas podem construir suas senhas de uma forma que as torne passíveis de ataque, mas parece que a força está puramente no poder dos expoentes. Presumo que ele esteja aludindo a pessoas que não escolhem as palavras de forma verdadeiramente aleatória, o que talvez não seja “t totalmente insincero, já que voltei a rolar algumas vezes para obter algo que não é todos advérbios e adjetivos. No entanto, eu suponho que reduzir a entropia por um fator de 2-10 não é realmente significativo (se a palavra listar é dobrado para 4000, não é tão difícil, a perda é mais do que recuperada).

A outra piada sobre ” se seu programa já o armazenou na memória ” é um pouco desconcertante, embora … não sejam todas as senhas armazenadas na memória uma vez ou outra? Isso parece um pouco amplo; o que ele está realmente se referindo para?

Comentários

  • Uma discussão com 123 comentários sobre isso está em reddit.com/r/technology/comments/1yxgqo/ …
  • Ao passar o mouse, o título da imagem revela – ” para qualquer pessoa que entenda de informações teoria e segurança e está em uma discussão irritante com alguém que não tem (possivelmente envolvendo uma mistura de casos), peço desculpas sinceramente. ” Isso ajudaria você:)
  • Esta palestra TED tem algumas pesquisas interessantes sobre diferentes esquemas de criação de senha, incluindo o xkcd: ted.com/talks/…
  • Apenas para registro: se sua senha realmente era correcthorsebatterystaple, agora ficou muito menos segura!
  • Se você usar uma senha como correcthorsebatterystaple, tome cuidado para não ‘ efetuar login em um sistema que silenciosamente a trunca! Uma senha como correcth é provavelmente mais fácil de adivinhar do que N#y;f8eR.

Resposta

A Guerra Santa

Acho que você descobrirá que a maneira correta de gerar senhas pode iniciar uma guerra santa onde cada grupo pensa que o outro está fazendo um erro matemático muito simples ou perder o ponto. Se você reunir 10 profissionais de segurança de computador em uma sala e perguntar a eles como encontrar boas senhas, você obterá 11 respostas diferentes.

O mal-entendido

Um dos muitos motivos que existe nenhum conselho consistente sobre senhas é que tudo se resume a uma questão de modelagem de ameaças . Do que exatamente você está tentando se defender?

Por exemplo: você está tentando se proteger contra um invasor que tem como alvo específico você e conhece seu sistema de geração de senhas? Ou você é apenas um entre milhões de usuários em algum banco de dados que vazou? Você está se defendendo contra o cracking de senha com base em GPU ou apenas contra um servidor web fraco? Você está em um host infectado com malware [1]?

Acho que você deve presumir que o invasor conhece seu método exato de geração de senhas e está apenas mirando em você. [2] O quadrinho xkcd assume em ambos os exemplos que todos os detalhes da geração são conhecidos.

A matemática

A matemática no quadrinho xkcd está correta, e não vai mudar .

Para senhas, preciso digitar e lembrar que uso um script python que gera senhas no estilo xkcd que são verdadeiramente aleatórias. Tenho um dicionário de 2 ^ 11 (2048) palavras comuns, fáceis de soletrar, em inglês. Eu poderia fornecer o código-fonte completo e uma cópia da minha lista de palavras para um invasor, ainda haverá 2 ^ 44 senhas possíveis.

Como diz o quadrinho:

1000 palpites / seg. Ataque plausível em um serviço remoto da web fraco. Sim, quebrar um hash roubado é mais rápido , mas não é com isso que o usuário comum deve se preocupar.

Isso atinge um bom equilíbrio entre fácil de lembrar e difícil de quebrar.

E se tentássemos mais potência ?

Claro 2 ^ 44 está ok, mas o cracking da GPU é rápido e “só vai ficar mais rápido. Hashcat pode quebrar um hash fraco [3] desse tamanho em alguns dias, não anos. Além disso, tenho centenas de senhas para lembrar. Mesmo no estilo xkcd fica difícil depois de alguns.

É aqui que entram os gerenciadores de senhas, gosto do KeePass , mas há muitos outros que são basicamente iguais. Então, você pode gerar apenas uma frase secreta xkcd mais longa que você pode memorizar (digamos 10 palavras). Em seguida, você cria uma senha única verdadeiramente aleatória de 128 bits para cada conta (hex ou base 64 são bons). 128 bits será forte o suficiente para um muito tempo. Se você quiser ser paranóico, vá além, não é um trabalho extra gerar senhas hexadecimais de 256 bits.


[1] É aqui que está o memorando A coisa entra, se você estiver em um host comprometido que você perdeu. Não importa se você digitá-lo ou usar um programa como o KeePass para copiar e colar se um invasor puder registrar / ler a memória.

[2] Em vez do mais fraco (mas mais provável) pressupondo que o invasor acabou de usar o torrent de um dicionário chamado ” Top Passw0rdz 4realz 111! “.

[3] Claro que todos deveríamos estar usando PBKDF2, etc … mas muitos sites ainda estão em SHA1. (E são os bons)

Comentários

  • @ Dick99999 GPUs modernas podem ter 6 GB de memória em um único cartão (embora ocupe 2 slots) e podem facilmente armazenar um dicionário de alguns milhares de palavras.
  • @NateKerkhofs Isso é assustador e incrível ao mesmo tempo. Minha primeira máquina (programável) tinha 1 mhz e 64 kb de RAM e você fala sobre memória de vídeo de 6 GB …
  • ” senha verdadeiramente aleatória de 128 bits … ” Verdadeiramente aleatório? Não ‘ ainda é pseudo-aleatório?
  • Este deve ser o resposta aceita apenas pela parte da Guerra Santa.
  • @Doorknob Depois de escolher combinações significativas, a maior parte da entropia desaparece. Não ‘ tentarei estimar quantas frases você poderia escolher, mas provavelmente está mais perto de uma em um bilhão do que de uma em 2 ^ 44.

Resposta

Schneier escreve isto:

É por isso que o esquema XKCD freqüentemente citado para gerar senhas – encadear palavras individuais como “correcthorsebatterystaple” – não é mais um bom conselho. Os crackers de senhas estão usando esse truque.

mas a chave para entender o que ele realmente quer é um pouco mais adiante em seu ensaio:

Ainda há um esquema que funciona. Em 2008, eu descrevi o “esquema Schneier “

então é isso. Ole “Bruce quer afirmar que seu esquema é o Único, o melhor, o vencedor, o esquema final. Portanto, ele precisa dizer coisas depreciativas sobre os” concorrentes “, sejam eles afirmações são cientificamente corretas ou não.

Nesse caso, sempre foi assumido que o método de geração de senha é conhecido pelo invasor. Esse é o ponto principal dos cálculos de entropia ; veja a análise . O fato de os invasores estarem “prontos para esse truque” muda absolutamente nada (quando um invasor conhece o método de geração de senha, o cálculo de entropia descreve exatamente a força da senha; quando o invasor está incompetente e não conhece o método de geração de senhas, a força da senha só é maior, em uma quantidade quase impossível de quantificar).

A piada sobre “senhas na memória” são apenas divagações mais incoerentes. As senhas necessariamente vão para a RAM em algum momento, quer você as digite ou copie e cole de um cofre de senhas ou algo semelhante.

Meu palpite é que Bruce estava bêbado.

Atualizar : Schneier foi especificamente solicitado a comentar sobre sua condenação de senha longa em um Reddit AMA que ocorreu em 2 de agosto de 2016. Ele continuou a defender seu sistema de criação de senha como um alternativa superior a senhas de palavras aleatórias. Schneier disse que seu esquema “dá a você mais entropia por caractere memorizável do que outros métodos”, o que é verdadeiro quando comparado a personagens que compõem palavras. Mas isso também é irrelevante quando um sistema depende da memorização de palavras em vez de caracteres, e você pode combinar palavras suficientes para gerar “entropia” adequada para sua frase secreta como um todo.

Comentários

  • Sim, achei que seus comentários fossem um desvio estranho de seus bons conselhos típicos.Seu esquema recomendado provavelmente não é ‘ ruim, mas não ‘ foi submetido a muitos testes reais. A abordagem da frase secreta é bastante fácil de testar em comparação, e você ‘ pensaria que isso atrairia o criptógrafo que existe nele. Talvez ele apenas tenha lido as notícias sobre como decifrar senhas de linguagem natural e não ‘ não viu uma distinção entre essas e as senhas de palavras aleatórias.
  • Seu argumento sobre ele precisar denegrir a competição falha, pois imediatamente após descrever seu esquema, ele diz ” Ainda melhor é usar senhas alfanuméricas aleatórias não memorizáveis (com símbolos, se o site permitir), e um gerenciador de senhas como o Password Safe para criá-los e armazená-los “.
  • @wfaulk Password Safe é Bruce Schneier ‘ s criação, então seu argumento sobre a competição ainda permanece. Sua declaração de falha falha 😉
  • @AviD: Eu não sabia disso totalmente. 😳
  • O que você ‘ está perdendo, e aparentemente Schneier também, é que não há ” truque ” para ” pegar para “. A segurança do Diceware já assume que o invasor conhece o esquema , na verdade, assume que o próprio dicionário é conhecido. Não ‘ não importa se o invasor tem seu dicionário e número de palavras exatos: simplesmente existem muitas combinações para fazer qualquer tipo de ataque bem-sucedido antes que o sol exploda.

Resposta

[Divulgação: eu trabalho para AgileBits, os criadores de 1Password]

Uma das razões pelas quais defendi um esquema semelhante ao XKCD (antes de ser chamado assim) em Para Melhores Senhas Mestras em 2011 é precisamente porque sua força sim não confie em que o invasor saiba qual esquema você usou. Se me permitem citar:

A grande vantagem do Diceware é que sabemos exatamente o quão seguro ele é, mesmo supondo que o invasor conheça o sistema usado. A segurança vem da aleatoriedade genuína de lançar os dados. Usar quatro ou cinco palavras deve ser suficiente contra os ataques plausíveis nos próximos anos dada a velocidade observada de crackers de senhas [contra 1Password Master Password]

O que o quadrinho XKCD não comunica de maneira eficaz é que a seleção de palavras deve ser (uniformemente) aleatória . Se você pedir aos humanos que escolham palavras ao acaso, terá uma tendência forte para substantivos concretos. Esses preconceitos podem e serão explorados.

Quanta força você deseja

Em um mundo perfeito, gostaríamos que a força de nossa senha fosse tão forte quanto as chaves que protegemos isto. Diga 128 bits. Mas, apesar dessas técnicas, os humanos não vão conseguir isso. Então, vamos olhar de forma realista para os ataques e o que nossos pequenos cérebros podem fazer.

Com a lista de palavras Diceware original de 7776 entradas, você obtém aproximadamente 12,9 bits por palavra que usa. Portanto, se você quiser pelo menos 64 bits para sua senha, então cinco palavras o farão.

Adivinhar senhas é mais lento do que adivinhar chaves

Nesta seção, chego a um retorno muito aproximado do envelope estima que, para uma quantia constante de dólares, é 2 ^ 13 vezes mais lento para testar uma senha do que para testar uma chave AES.

Observe que testar uma senha é muito mais lento do que testar uma chave. Se os tipos corretos de esquemas de hash de senha forem usados, é possível manter a maioria dos invasores com menos de 100.000 tentativas por segundo. Portanto, embora possamos nunca querer usar chaves de 50 bits, usar senhas de 50 bits ainda pode fazer sentido.

Se não nos limitarmos a lançar dados como em Arnold Reinhold “s esquema Diceware original de 1995, então podemos usar uma lista mais longa de palavras. O Strong Password Generator em 1Password for Windows usa uma lista de 17679 palavras em inglês entre 4 e 8 letras inclusive (sem palavras tabu e palavras que envolvem um apóstrofo ou hífens). Isso dá cerca de 14 bits por palavra. Então, quatro deles fornecem 56 bits, cinco fornecem 70.

Novamente, você precisa prestar atenção às velocidades de cracking. Deep Crack em 1997 foi capaz de executar 92 bilhões de testes DES por segundo. Supondo que um PC especializado de ponta possa realizar um milhão de tentativas por segundo contra uma senha razoavelmente bem hash poderia fazer 1 milhão de tentativas por segundo, então as senhas hoje são cerca de 16 bits mais difíceis de quebrar do que as chaves DES eram em 1997.

Então, vamos olhar esta estimativa do Stack Exchange para um processador dual core de 3,8 GHz: 670 milhões de chaves por segundo.Se assumirmos $ 5.000 em hardware, podemos facilmente exceder 10 bilhões de chaves por segundo. Portanto, com um custo de hardware semelhante, o cracking de chave ainda é mais de 2 ^ 13 vezes mais rápido do que o cracking de senha.

Metas revisadas de força de senha

Trabalhando em minha estimativa de 2 ^ 13 vezes mais caro testar uma senha bem hash do que testar uma chave AES, devemos considerar uma senha razoavelmente bem hash como sendo 13 bits mais forte do que sua entropia real em relação ao crack. Se quisermos atingir 90 bits de “força efetiva”, 77 bits de força de senha devem bastar. Isso é conseguido com uma senha Diceware de seis palavras (77,5 bits) da lista original e 84,6 bits com seis palavras tiradas de uma lista de 17679 palavras.

Não espero que a maioria das pessoas use senhas que longo. Espero que as pessoas usem coisas com 4 ou 5 palavras. mas se você está realmente preocupado com a NSA perseguindo suas senhas, então seis palavras devem ser suficientes, presumindo que você use um esquema de hash de senha decente.

Apenas estimativas muito aproximadas

Não gastei muito tempo pesquisando custos e benchmarks. Há muitas coisas em minhas estimativas para questionar. Tentei ser conservador (pessimista sobre o esquema que estou defendendo). Também fui vago sobre “senhas bem codificadas”. Mais uma vez, estou sendo muito conservador com relação ao hashing de senha em 1Password. (Para nosso novo formato de dados, os invasores foram mantidos com menos de 20.000 tentativas por segundo e para nosso formato de dados mais antigo eles alcançaram 300.000 tentativas por segundo para multi -Máquinas GPU. Em minhas estimativas aqui, eu “peguei 1 milhão de tentativas por segundo para uma” senha razoavelmente bem hash “.)

Mais algumas notas históricas

O geral ideia para senhas “semelhantes a XKCD” remonta ao menos desde as senhas de uso único S / Key do início dos anos 1980. Elas usavam uma lista de 2.048 uma através de palavras de quatro letras. Uma senha S / Key de seis palavras rendeu 66 bits. Não sei se essa ideia de usar palavras selecionadas aleatoriamente de uma lista para uma frase secreta é anterior a S / Key.

Em 1995 , Arnold Reinhold propôs Diceware . Não sei se ele estava ciente da S / Key na época. Diceware foi proposto no contexto do desenvolvimento de frases secretas para PGP. Também foi antes de a maioria dos computadores ter geradores de números aleatórios criptograficamente apropriados. Portanto, na verdade envolve dados rolantes. (Embora eu confie nos CSPRNGs nas máquinas que uso, ainda gosto de “acumular uma nova senha”).

Em junho de 2011, reavivei o interesse pela Diceware em Toward Better Master Passwords com algumas modificações adicionais. Isso resultou em meus 15 minutos de fama. Depois que o quadrinho XKCD foi lançado, produzi uma edição geek que examinou um pouco da matemática.

Em julho de 2011, Randall Monroe pegou os esquemas do tipo Diceware e publicou seu agora famoso quadrinhos . Como não sou o inventor da ideia, não me importo de ser ofuscado pelos quadrinhos. Na verdade, como eu disse em meu artigo de acompanhamento

O que quase me levou 2.000 palavras para dizer em termos não técnicos, Randall Monroe foi capaz de resumir em uma história em quadrinhos. Isso apenas mostra o poder da matemática …

Mas há uma coisa sobre como o quadrinho foi interpretado que me preocupa. É claro para mim e para as pessoas que já entenderam o esquema que as palavras devem ser escolhidas por meio de um processo aleatório uniforme e confiável. Escolher palavras “ao acaso” da sua cabeça não um processo uniforme e confiável .

Comentários

  • Ótimo que você mencionou Diceware em uma perspectiva histórica e, ao mesmo tempo, reconheceu o excelente trabalho de marketing que o XKCD fez para frases secretas. Sobre o seu esquema modificado, em algum lugar foi explicado por que palavras de 3 ou 2 letras não estão incluídas nessas listas de palavras? consulte blog.agilebits.com/2013/04/16/… . É porque palavras como ‘ off ‘ e ‘ linha ‘ também pode ser atacado por 1 palavra offline? Veja meus comentários no post de Raestloz. A lista Diceware original contém muitas palavras de 1, 2 e 3 letras.
  • Excelente pergunta! Meu pensamento (possivelmente errado) na época era que eu também queria que as senhas tivessem um comprimento mínimo. Eu queria ter certeza de que, se alguém usasse uma senha longa de três palavras, ela ultrapassaria o mínimo de 12 caracteres. Observo que S / Key também permite palavras de 1, 2 e 3 letras.
  • Verifiquei rapidamente a lista de palavras que meu gerador de frase secreta SimThrow e testador usa.A lista de Diceware original tem pelo menos 1400 dessas colisões como ‘ any ‘ ‘ como ‘ e ‘ de qualquer maneira ‘. Isso pode degradar uma frase de 4 palavras para 3 palavras, se nenhum separador for usado. É ‘ um número de colisão alto porque essa lista inclui todas as letras e combinações de 2 letras. Portanto, parece que você fez a escolha certa ao não incluir palavras de 2 letras. Diceware recomenda um comprimento mínimo de frase de 17. Meu gerador estima os tempos de recuperação com base em palavras e caracteres, para lidar com sites que permitem senhas curtas (20) apenas.
  • Também verifiquei as seguintes listas de palavras. S / Key : > 93 colisões, listas expandidas EUA : > 190 e minha lista da Holanda: > 750. Uma maneira de lidar com isso é recomendar a inclusão de um caractere separador entre as palavras de uma frase.
  • Cuidado, o lançamento de dados não é perfeitamente aleatório. forbes.com/sites/davidewalt/2012/09/06/… E insidescience.org/blog/2012/09/12/…

Resposta

O esquema de senha XKCD está tão bom quanto antes. A segurança não deriva do fato de ser desconhecida, mas de ser uma boa maneira de gerar senhas memoráveis a partir de um grande espaço de busca. Se você selecionar as palavras a serem usadas em vez de gerá-las aleatoriamente, esta vantagem se perde – humanos não são bons em ser aleatórios.

A parte sobre memória é mal declarada, mas é uma preocupação: se um malware para roubo de senhas entrar em seu computador, ele ” varra tudo como texto da RAM e do disco rígido para usar em um ataque direcionado às suas contas.

Comentários

  • +1 Não ‘ Não acho que a técnica XKCD está morta – ela ‘ não é ‘ um truque ‘ que os crackers ‘ estão em ‘. Você pode conhecer a técnica de dentro para fora, mas isso não ‘ para torná-lo mais crackable se ‘ for aleatório o suficiente.
  • @PiTheNumber se você ‘ se não estiver usando palavras suficientes ou um pequeno dicionário, você não ‘ está aplicando a técnica xkcd; mas não, mesmo no quadrinho xkcd ‘ é explicitamente claro que você NÃO está perdendo sua vantagem se contar a todos ” hey, I ‘ m usando a senha de estilo corretohorsebatterystaple ” – a quantidade de veriações / entropia bits é maior que a maioria das senhas normais, mesmo se o método for conhecido.
  • Desde que você não ‘ também use XKCD ‘ gerador de números aleatórios (ganhei ‘ o link, todos sabem disso).
  • @PiTheNumber o conceito de ‘ A senha verdadeiramente aleatória de 11 letras ‘ é irrelevante, pois não é uma alternativa razoável às senhas. Frases-senhas são alternativas às senhas memorizáveis , e são exatamente tão fracas quanto o xkcd descreve. Claro, se você usar uma senha armazenada em um gerenciador de senhas, senhas completamente aleatórias servirão, mas, nesse caso, ‘ essencialmente não ‘ sua senha ‘ como em algo que você usaria ou veria, mas em vez de uma ‘ chave aleatória gerada automaticamente token ‘ semelhante às chaves ssh.
  • @PiTheNumber As palavras não são escolhidas por humanos, elas são escolhidas aleatoriamente. O dicionário do qual as palavras são escolhidas é ele próprio escolhido por humanos, mas isso é uma questão diferente. Não há “mais provável” – a matemática no quadrinho xkcd está correta.

Resposta

Como os outros Dito isso, o ataque que Bruce Schneier descreve é eficaz quando o usuário escolhe várias palavras para si mesmo, sem usar uma ferramenta. Schneier geralmente escreve para um público em geral, que dificilmente compreenderá a diferença entre palavras “aleatórias” escolhidas por ele mesmo e palavras aleatórias escolhidas pelo programa.

Acrescento isso mesmo que você use um script ou outra ferramenta para escolher palavras aleatoriamente de um dicionário, você deve usar a primeira sequência que ela fornece . Se você decidir, ” Eu não gosto desse, e execute-o novamente até que você goste, não é mais uma senha aleatória , é escolhida por humanos.

Além disso, mesmo se você usar um script, e mesmo se você não prejudicar a aleatoriedade ao escolher o seu favorito de várias sequências, ainda há a possibilidade de que um invasor possa explorar seu PRNG (pseudo-aleatório gerador de número). Se o invasor puder descobrir quando você criou a senha e qual PRNG você usou, e talvez outras informações sobre seu PRNG, como o tráfego de rede que foi produzido usando seu PRNG na mesma época, isso poderia reduzir a entropia efetiva de sua senha aleatória.

Talvez um pouco esotérico, mas se o seu PRNG for explorável, o número 2 ^ 44 não será totalmente realizado. (E se você assumir que “ninguém tentará explorar meu PRNG”, por que você se preocupa em usar uma senha longa verdadeiramente segura?)

Comentários

  • +1 Ângulo interessante. Explorar o PRNG é óbvio no contexto da criptografia chaves – é ‘ interessante que parece ser praticamente uma reflexão tardia aqui. Acho que senhas típicas são tão ruins que PRNGs se sentem seguros em comparação. Presumivelmente, se um invasor pode roubar uma lista de senhas com hash, encontrar o pwdChangedTime ou equivalente seria trivial. Outro motivo para encerrar a prática de expiração de senha?
  • Verso rápido do envelope. Se você atualizar a senha em um minuto após gerá-la e a única fonte de entropia em seu PRNG for a hora do sistema, você pode estar tentando reduzir as coisas em até 2 ^ 35 para resolução de nanossegundos. Parece razoável?
  • Suponha que eu rejeite uma frase porque não ‘ gosto de uma palavra e faço isso 1000 vezes. Depois, reduzi o dicionário em 1000 palavras. A escolha desse dicionário reduzido ainda é aleatória? Se ainda for, então uma frase de 4 palavras de um dicionário Diceware assim reduzido de 7776 palavras ainda dá (7776-1000) ^ 4 = 2,1E15 / 50,9 possibilidades / bits de entropia, abaixo de 3,7E15 / 51,7 possibilidades / bits de entropia para o total dicionário. Não sou capaz de avaliar a influência do gerador aleatório. Eu uso o de www.random.org
  • @ Dick99999 Eu não ‘ acho que ‘ realmente sobre o número de opções oferecidas que você exclui ao escolher uma senha. É ‘ s sobre o padrão de quais frases você iria excluir, se apresentadas a você. Um invasor pode adivinhar que o usuário preferirá palavras mais curtas, palavras mais fáceis de digitar em um teclado QWERTY e palavras sem maiúsculas ou pontuação; essa estratégia pode reduzir muito o espaço das senhas a serem exploradas. Basicamente, é ‘ o mesmo problema que adivinhar os nomes dos times favoritos, aniversários e crianças ‘.
  • @wberry Não ‘ acho que a matemática funcione nisso. Suponha que você rejeite 1000 frases secretas antes de encontrar uma de sua preferência. Então, ‘ é uma estimativa razoável de que você só gosta de 1/1000 do espaço de senha possível. Agora suponha que um invasor seja capaz de adivinhar completamente qual 1/1000 do espaço é o seu favorito – isso reduz o número de possibilidades de 2 ^ 44 para 2 ^ 34, o que é significativo, mas não tanto que uma palavra extra possa ‘ para diminuir a perda. Além disso, se você limitar suas rejeições, mesmo isso não será necessário.

Resposta

Depende. Uma coisa que você precisa entender é que isso não é segurança por obscuridade: os valores de entropia usados na história em quadrinhos presumem que o invasor já sabe que você está usando este método . Se o invasor não souber como você está gerando a senha, então a entropia aumenta enormemente.

O truque do método XKCD é que você precisa realmente usar um gerador de números aleatórios e uma boa lista de palavras: nunca escolha as palavras você mesmo, nem mesmo “aleatoriamente” (entre aspas, porque os humanos são realmente muito ruins em escolher coisas aleatoriamente, e é por isso que você não deveria fazer isso). Diceware tem ferramentas para ajudá-lo a fazer isso e até mesmo tira o elemento aleatório do alcance do computador usando dados comuns.

Contra um ataque de base ampla – o tipo de coisa em que um invasor obtém uma lista de senhas de um site da Web e não sabe nada sobre quais senhas estão na lista – isso é mais forte do que nunca. Como você disse, sua força vem do poder dos expoentes (e de uma boa lista de palavras).

O ataque de Schneier pode funcionar, mas apenas em um contexto totalmente diferente. Seu ataque assume que você está sendo especificamente alvejado por um invasor que já sabe muito sobre você .Isso pode não parecer especialmente preocupante no início, porque o atacante determinado estereotipado é um agente de inteligência atrás de uma tela, e a maioria de nós não precisa se preocupar tanto com eles: há apenas alguns deles, e cada um só pode dar-se ao luxo de cuidar de tantas pessoas. Mas, na verdade, é mais problemático do que pode parecer à primeira vista, graças ao advento de malware sofisticado. Uma instalação de malware pode se dar ao luxo de se preocupar com você, mesmo que o invasor não se importe, e assim você ainda acaba enfrentando um invasor extremamente determinado. Ainda mais determinado do que um humano poderia ser, embora muito menos criativo.

O malware que compila informações sobre você dará às palavras que parecem importantes para você uma prioridade muito alta na lista de palavras. Isso ocorre porque a maioria das pessoas escolhe as palavras “aleatórias” por conta própria, mas, ao fazê-lo, elas tendem fortemente para as palavras que são mais importantes para elas: ainda pode “parecer” aleatório, mas algumas palavras são muito mais propensas surgem do que outros. Por esse motivo, dar a essas palavras alta prioridade geralmente resulta em acertos relativamente rápidos, e esse é o “truque” de que Schneier está falando.

No entanto, você ainda pode frustrar o ataque de Schneier usando a aleatoriedade real . O problema é que isso requer disciplina: todas as decisões sobre quais palavras usar em sua frase-senha (além de escolher uma palavra boa lista) deve ser totalmente afastado de suas mãos. É aqui que coisas como a Diceware podem ajudá-lo.

Comentários

  • @Gilles: A razão de a entropia diminui se o invasor conhece o método é que ele altera toda a estrutura da senha. Se você não ‘ não conhece o método, ” o grampo correto da bateria do cavalo ” parece 216 símbolos de um alfabeto de 2 símbolos: em outras palavras, 216 bits. Se você souber disso ‘ s quatro palavras em inglês (e saber XKCD

s lista de palavras), então se parece com 4 símbolos de um alfabeto de 2.048 símbolos. 2048 ^ 4 é grande, mas ‘ s menor do que 2 ^ 216, que é quantos bytes de entropia uma string de bits verdadeiramente aleatória desse comprimento teria. Mas a afirmação do XKCD ‘ já explica isso: 2048 ^ 4 = 2 ^ 44.

  • Supondo que os invasores acreditem que as senhas são sequências de bits que seguem uma distribuição uniforme é um modelo totalmente irreal de atacantes. Conhecer o método é responsável apenas por alguns bits de entropia.
  • A entropia não é definida em strings, mas em métodos para gerar strings. XKCD descreve um método para gerar strings, que possui 44 bits de entropia. O domínio desse método contém strings de 27 caracteres, bem como strings de outro comprimento – mas o comprimento das strings não é ‘ interessante do ponto de vista de segurança, apenas de um perspectiva de usabilidade.
  • Por que você saberia o comprimento da senha, mas não o fato de que as palavras em inglês têm mais probabilidade do que a média de aparecer nas senhas? Novamente, seu modelo de invasor é completamente irreal. Os invasores não ‘ vão “ei, eu ‘ gerarei todas as senhas de 27 letras possíveis”. Eles são mais como “ei, ‘ gerarei todas as senhas possíveis em ordem decrescente de probabilidade”.
  • @Giles Na verdade, a string e o método são relevantes . Você afirma que o parágrafo inicial de The Spooniest ‘ está errado, enquanto faz um argumento que parece reformulá-lo. Se você não ‘ não sabe como a senha é gerada, a entropia aumenta muito – ~ 166 bits para 27 caracteres (superior, inferior, dígito, pontuação). O que você está dizendo é que os invasores podem usar o conhecimento de como as senhas são geradas para reduzir isso. Parece que você está argumentando a mesma coisa de extremidades opostas. Além disso, não saber o comprimento aumenta a entropia.
  • Resposta

    A força a matemática é bastante simples se a escolha de palavras for aleatória: (número de palavras no dicionário) ^ (número de palavras na frase), assumindo que o invasor saiba o número de no dicionário. Portanto, uma frase de 5 palavras usando um dicionário conhecido ( pelo invasor !) Diceware de 7776 palavras: tem 7776 ^ 5 = 2.8E19 ou 64 bits de entropia.

    Há um item que não é mencionado no esquema: ao adicionar apenas 1 caractere (aleatório) em um lugar aleatório em toda a frase, a intensidade aumenta em cerca de 10 bits , consulte Diceware, itens opcionais .

    A matemática acima também não leva em conta o símbolo separador entre as palavras. Isso pode adicionar outros 5 bits.

    Comentários

    • O ponto (ou pelo menos um deles) do quadrinho XKCD é que adicionar um personagem aleatório em um lugar aleatório aumenta a dificuldade de memorizar a senha mais do que aumenta a dificuldade de quebrá-la.
    • Verdadeiro para memorizar em geral, não é verdade para uma senha mestra de um cofre, eu acho. Vejo ‘ fácil de digitar ‘ como a principal vantagem. Encontro cada vez mais situações em que os gerenciadores de senhas não conseguem preencher a senha (aplicativos, rede WifI para convidados) e tenho que digitá-los.
    • @Mark – os caracteres extras aleatórios (ou apenas fora do dicionário) podem ser o mesmo em todas as suas senhas, o que significa que você não ‘ esquecerá. Você ‘ ganhará os bits extras de entropia pelo menos até que várias outras de suas senhas sejam comprometidas, ponto em que a senha ainda é xkcd-Strength …
    • @imsotiredicantsleep – Essa é uma sugestão muito interessante. Sempre procurei uma solução para tornar esta técnica de fortalecimento mais fácil de usar. Pode ser chamado de segurança por obscuridade porque o invasor pode se beneficiar do conhecimento sobre o caráter aleatório e a posição. Uma pequena troca, acho que entre facilidade de uso e segurança.
    • @ Dick99999 absolutamente, ‘ é uma troca. Mas, até que o componente constante seja comprometido, ele derrotará um ataque de dicionário na ï ve, e retardará significativamente um mais sofisticado. Eu não ‘ não concordo que seja ‘ segurança por obscuridade, pois posso dizer que estou usando a técnica sem perder a entropia que os valores possíveis me dão. A principal fraqueza é que, uma vez que a parte constante é conhecida, você sacrificou o imóvel da senha que poderia ter sido randomizado.

    Resposta

    Eu “d também gostaria de adicionar uma sim resposta também, mas para outras razões. Não é um bom conselho [em geral] devido às restrições de comprimento:

    • Sites como Skype, ING, eBay e no meu país Binckbank e KPN limitam as senhas a 20 caracteres. (O limite do banco é 15, mas ele usou autorização de 2 fatores)
    • Com um comprimento médio de 4,5 caracteres / palavra para um dicionário curto de 3.000 a 8.000 palavras, que permite o uso de frases de 3 a 4 palavras apenas.
    • Ao usar dicionários grandes, a média pode ser de 6 a 7: 3 palavras apenas
    • Se o site insiste em usar um símbolo e um número na senha, apenas 18 caracteres estão disponíveis para a frase.

    Esses comprimentos protegem apenas contra ataques online. Para ataques off-line, depende da derivação de chave e da função hash, contagens de iteração e hardware de cracking usado pelo site do aplicativo, se uma frase de 3-4 palavras oferece proteção suficiente.

    Comentários

    • Sites que limitam o tamanho das senhas costumam ser um grande indicador de que seu sistema de armazenamento de senhas é muito inseguro. Fugir. Resumindo, os requisitos de força da senha tendem a ser mais prejudiciais do que úteis, IMO (tanto para segurança quanto para memorização).
    • Adicione Suntrust à lista de senhas limitada a 15 caracteres. Eu me pergunto o que está acontecendo com esse setor.
    • Por outro lado, é ‘ é significativamente mais fácil de digitar ‘ correcthorsebatterystaple ‘ em um smartphone do que manter alternando entre minúsculas, maiúsculas, números e pontuação.
    • Limites baixos de senha don ‘ t significa apenas métodos inseguros de armazenamento de senha – eles significam que as senhas estão sendo armazenadas em texto simples ou criptografadas (sem hash). @ Á ngel Minhas senhas para todas as contas relacionadas à Microsoft são mais longas do que isso, então ligo para o BS. Muito tempo atrás, antes do NTLM, as senhas do Windows eram limitadas a 16 caracteres, iirc. Isso é anterior ao XP e é pouco relevante.
    • @Zenexer Em relação às contas da Microsoft: as contas online da Microsoft (live.com, Office 365, etc.) são limitadas a 16 caracteres (letras, números e alguns símbolos são permitidos ).

    Resposta

    É importante ter o contexto correto. O xkcd comic compara Tr0ub4dor&3 em uma entropia presumida de 28 bits (embora eu calcule como 34,6) para correcthorsebatterystaple e seus 44 bits de entropia assumidos (um código de quatro palavras diceware é 51,7 bits … Mas uma dessas palavras não é diceware. Usando um dicionário ortográfico simples de 100 mil palavras, calculo que seja 66,4 bits).

    Primeiro, vamos tornar isso mais fácil de entender. Existem 94 caracteres imprimíveis. Uma senha de um caractere tem log₂(94) = 6.55 bits de entropia. Dois caracteres têm log₂(94²) = 13.10 bits de entropia.Você pode dividir a entropia final de um esquema de senha por 6,55 para determinar a complexidade equivalente de uma senha puramente aleatória medida em caracteres.

    Portanto:

    • 28 bits de entropia ≈ senha de 4,3 caracteres (muito ruim!)
    • 44 bits de entropia ≈ senha de 6,7 caracteres (também ruim)
    • 66,4 bits de entropia ≈ senha de 10,1 caracteres (ok para 2016)

    Confiando nos números de xkcd, você pode ver por que Schneier estava preocupado. Isso parece um pouco exagerado, já que a maioria dos invasores ainda desiste após dez ou mais caracteres [carece de fontes] —deve levar alguns anos para um grande cluster quebrar uma senha com hash MD5 de 10 caracteres— embora, obviamente, se um bom invasor conhece seu esquema, o comprimento absoluto dos caracteres não é um problema.

    A complexidade total do esquema é mais importante. Você deve presumir o pior caso (que o invasor conhece seu esquema exato) . É uma ótima ideia garantir que sua senha tenha mais de 11 caracteres ( quando permitido ), mas essa “é uma prioridade secundária (e vem de graça com frases secretas ).

     

    Crie frases secretas com quatro palavras mais uma senha

    Aqui está meu conselho de criação de passphharse (com estimativas de entropia):

    • Faça uma “frase” sem sentido de 4+ palavras de 4+ caracteres cada (100.000⁴)
    • Nenhuma dessas palavras pode ser conectada a vocês –ou uns aos outros– de qualquer maneira
    • Use maiúsculas e minúsculas, espaços e pelo menos dois símbolos ou sinais de pontuação (32²)
    • Pelo menos uma palavra deve falhar na verificação ortográfica (por exemplo, leetspeak, palavras estrangeiras, 64 cada)
    • Incluir pelo menos um outro “erro” (ortografia / gramática / sintaxe, entropia desconhecida)
    • Entre duas palavras, adicione uma senha tradicional “aleatória” de 7 + caracteres (92⁷)

    Isso deve ter pelo menos log₂(100000⁴ × 32 × 3 × 64 × 92⁵) = 112 bits de entropia (que é muito forte, ≈17 caracteres). Pulei a capitalização (presumo que apenas o primeiro caractere esteja em maiúscula) e um símbolo (presumo que termine em ., ! ou ?, então o segundo símbolo tem uma complexidade de 3) e também assumi que “aleatório” não é totalmente aleatório e calculei o código como um equivalente de cinco caracteres (estrita aderência ao acima fórmula forneceria mais de 128 bits de entropia a ≈20 caracteres).

     

    Vale a pena repetir o último ponto:

    Humanos são muito ruins em gerar aleatoriedade

    Muito poucas senhas de caracteres “aleatórias” geradas por humanos até mesmo se aproximam da verdadeira aleatoriedade. Haverá padrões no código relacionado ao teclado da pessoa, números favoritos e / ou uma suposição de que uma determinada palavra obscura é impossível de adivinhar.

    Eu projetei este esquema para ser robusto contra a falta de aleatoriedade inerente das pessoas; assumindo um vocabulário limitado (diga as 2600 palavras em Basi c inglês ), uso de palavras relacionadas (penalizado contando apenas três palavras) e uma senha limitada a apenas a entropia de seis alfanuméricos, log₂(2600³ × 62⁶) em si ainda é forte em 70 bits (≈10.6 caracteres).

    Não deixe que isso enfraqueça sua senha! Esta seção está presente para demonstrar que este esquema tem alguma resistência à entropia limitada de humanos escolhas, não para encorajar escolhas erradas.

    O único problema real vem de pessoas que tomam citações ou letras como suas quatro palavras. Essas frases secretas são trivialmente derrotadas se a citação ou letra da música puder ser adivinhada (por exemplo, olhando para seus likes no Facebook) ou caso contrário, teria uma entropia de cerca de 6 caracteres aleatórios em um tempo de crack de 30 segundos (MD5) a 17 dias (PBKDF2) .

     

    Você pode usar minha tabela de entropia para calcule a entropia do seu esquema de frase secreta.

    (Não se preocupe com o fato de que as senhas vivem brevemente na memória , a menos que você é um desenvolvedor)

    Comentários

    • Também deve ser observado que não- ASCII são como balas de prata, derrotando a maioria dos ataques automaticamente. Uma senha de ••••••••• (nove caracteres) é embaraçosamente segura (e parece a mesma mascarada que não mascarada!) Devido ao comprimento e obscuridade, embora ‘ seria uma ideia horrível depender apenas desse fato. Coloque um caractere não ASCII em sua senha + 4word e sua complexidade disparará (para calcular, use seu valor Unicode), embora talvez às custas da portabilidade (e se você ‘ está usando um amigo ‘ smartphone?)

    Resposta

    Não, acho que não.

    O conselho real nesse quadrinho xkcd é usar mnemônicos que sejam fáceis de lembrar e gere senha, contanto que você possa se lembrar dela . Esses são conselhos básicos de senha em qualquer lugar e sempre permanecerão verdadeiros (até mesmo o método de Schneier citado usa esses dois fatos básicos). Na verdade, os quadrinhos usam palavras comuns em inglês, mas sua implementação não precisa ser, nem a história em quadrinhos implica que você deveria.

    Claro, as senhas mais seguras são strings totalmente aleatórias, como a aparência de uma string MD5, e você provavelmente pode usar um gerenciador de senhas para armazenar todas essas senhas, mas então que senha você vai usar para esse gerente? ¯ \ (ツ) / ¯

    Comentários

    • ” Claro, as senhas mais seguras são strings totalmente aleatórias ” NÃO, veja para uma comparação en.wikipedia.org/wiki/Password_strength#Random_passwords
    • Não, que ‘ não é o que o xkcd aconselha, sugiro que você leia novamente – e a análise da questão relevante aqui (link acima).
    • Sua assinatura ” ¯ \ (ツ) / ¯ ” é uma senha excelente: curta, fácil para lembrar, muito difícil de quebrar, difícil de detectar como uma senha em um registro.
    • @Daniel Azuelos, … trivial para adicionar a uma lista de strings de uso comum …
    • @Raestloz Uma pessoa que fala uma língua que não ‘ t usar caracteres que estão no intervalo ASCII não ‘ t usar uma senha ASCII. Você acha que todas aquelas pessoas em terras asiáticas usam dois teclados, um para digitar todos os dias e outro para senhas? Ao contrário dos sistemas operacionais de trinta anos de idade, como o DOS, todos os sistemas operacionais modernos ‘ s lidam perfeitamente com Unicode e outros conjuntos de caracteres / páginas, e qualquer site deve suportá-los (desde que o o desenvolvedor não ‘ t codifica o formulário usando um conjunto de caracteres aleatório a cada vez ou deixa o navegador escolher). As senhas são apenas bits que significam algo para os humanos.

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *