Sunday 17 December 2017

Py bcrypt binário opções


No momento estou tentando construir um sistema de log in com uma segurança muito alta. Então eu quero usar o bcrypt e eu também encontrei uma biblioteca de terceiros, py-bcrypt. Mas o autor disse que é uma pura implementação do python. Agora eu ligo em algum lugar que não é recomendado usar bcrypt em python apenas porque é muito lento e isso resulta em um vazamento de segurança. Bcrypt deve ser implementado em C. Alguém pode confirmar isso Agora o que devo fazer bcrypt (python) SHA512 (do hashlib) algo diferente Eu estou usando o Google App Engine Deve-se notar que a implementação do puro-python (4) é muito lento para ser Utilizável, dado o número de rodadas atualmente exigidas para segurança. Por causa disso, é desativado por padrão, a menos que a variável de ambiente PASSLIBBUILTINBCRYPT habilitada esteja definida. Perguntou Jul 9 12 às 10:49 fechado como não construtivo por casperOne 10 de julho 12 às 14:01 Como está atualmente, esta questão não é uma boa opção para o nosso formato QampA. Esperamos que as respostas sejam apoiadas por fatos, referências ou conhecimentos, mas essa questão provavelmente solicitará debates, argumentos, votação ou discussão prolongada. Se você acha que esta questão pode ser melhorada e possivelmente reaberta, visite o centro de ajuda para orientação. Se esta pergunta puder ser reformulada para se adequar às regras na Central de Ajuda. Por favor, edite a pergunta. Por que quotbeing slowquot ser considerado um vazamento de segurança ndash Martin Konecny ​​Jul 31 13 às 14:20 Como sobre comparar os dois Aqui está o código para hash uma senha de 8000 bits aleatórios e os tempos correspondentes: Hashlib incluindo sal: respondeu Jul 9 12 às 11: 26 Eu modifiquei o script hashlib para incluir também um sal de 32 bytes, e os números ainda são mais ou menos o mesmo ndash Chopstick 9 de julho 12 às 11:44 ok agora o bcrypt corre 10 vezes mais lento do que o sha512, o que é melhor para ataques de brutforce. Mas o sha512 tem 128 letras. Não deveria este bcrypt de peso vivo mesmo com ataques bruturais. Ndash Maik Klein 9 de julho 12 às 11:57 Pauzão Usando uma função de hash em uma senha uma vez é completamente insegura e uma maneira absolutamente inaceitável de quotstoringquot uma senha. Se você estiver interessado em um esquema de armazenamento de senhas baseado em hash simples seguro, você pode usar PBKDF2 com um número grande (5 ou 6 dígitos), embora bcrypt seja uma solução ainda melhor. Editar: isso também deve ser direcionado para o OP. Reagi à sua resposta mais, pois continha o código real. Ndash Matt Nordhoff 17 de novembro 13 às 8: 22Há dois tipos de criptografia neste mundo: criptografia que impedirá a sua irmã do filho de ler seus arquivos e criptografia que impedirá os principais governos de ler seus arquivos. Este livro trata sobre o último. - Prefácio à Criptografia Aplicada por Bruce Schneier Descrição O Bcrypt é um utilitário de criptografia de arquivos multiplataforma. Os arquivos criptografados são portáteis em todos os sistemas operacionais e processadores suportados. Frases de acesso devem estar entre 8 e 56 caracteres e são esconderam internamente para uma chave de 448 bits. No entanto, todos os caracteres fornecidos são significativos. Quanto mais forte for sua senha, mais seguras serão suas informações. Além de criptografar seus dados, o bcrypt, por padrão, substituirá o arquivo de entrada original por lixo aleatório três vezes antes de excluí-lo para frustrar tentativas de recuperação de dados por pessoas que possam ter acesso ao seu computador. Se ainda não estiver pronto para este nível de paranóia, consulte as instruções de instalação abaixo para saber como desativar esse recurso. Se você não acha que isso é bastante paranóico. ver abaixo. O Bcrypt usa o algoritmo de criptografia de blowfish publicado por Bruce Schneier em 1993. Mais informações sobre o algoritmo podem ser encontradas em Counterpane. Especificamente, bcrypt usa a implementação de Paul Kochers do algoritmo. A fonte distribuída com o bcrypt foi ligeiramente alterada do original. O código-fonte original pode ser obtido a partir de counterpanebfsh-koc. zip. O Bcrypt foi testado com sucesso nas seguintes plataformas: x86: FreeBSD, OpenBSD, Linux, Cygwin, Win32 Sparc R220: Solaris 2.7, 2.8 Sparc Ultra60: Linux 2.4 Alpha: Linux 2.4 PPC G4: MacOS X 10.1 SERVER PPC RS6000: Linux 2.4 MIPS : Linux 2.0.34 (Cobalt) HPPA 1.1 HP-UX 11.0 Nenhum outro sistema operacional foi testado, mas a maioria deve funcionar com modificações mínimas. Se você obtiver bcrypt para compilar sem erros em qualquer outra plataforma ou arquitetura, gostaria de saber sobre isso. Se os patches forem necessários para obter o trabalho do bcrypt em seu sistema operacional, tentarei incorporá-los na distribuição principal. Se você tiver uma máquina não listada acima que seja incapaz de compilar o bcrypt e esteja disposta a me dar acesso à máquina, farei uma tentativa de transmiti-la ao seu sistema operacional. Notícias (atualizado em 11 de setembro de 2002) O Bcrypt 1.1 corrige alguns pequenos erros e adiciona suporte para muitos novos sistemas operacionais. Se você usou anteriormente 1.0 em uma plataforma não suportada, talvez não seja capaz de descriptografar arquivos criptografados que você tenha. Os sistemas Alpha são conhecidos por ter esse problema. Os sistemas de 32 bits não devem ter esse problema. Os sistemas de 64 bit provavelmente o fazem. Se seu sistema exibir esse problema, você deve descriptografar seus arquivos com 1.0 e reconfigurá-los com 1.1. 1.1 é imensamente mais rápido do que 1,0. Além disso, ele usa cerca de 50 memória com compactação desligada ou 66 com compressão. Os arquivos a seguir são cópias do arquivo LICENSE que foram criptografados com o eggheads da frase de senha. Se você pode descriptografar ambos, sua instalação deve ser compatível com qualquer outro sistema suportado. Se você estiver tão inclinado, edite config. h e altere os padrões para o que você achar apropriado para suas necessidades. Se você optar por não ter o bcrypt remover arquivos de entrada após o processamento ou configurar SECUREDELETE em 0, é provável que você tenha dados no seu disco rígido que possam ser recuperados mesmo após a exclusão. Todas essas opções também podem ser definidas na linha de comando. Quando estiver satisfeito com as configurações padrão, basta digitar: faça, então, su e digite: make install. Seria sábio testar a instalação em alguns arquivos sem importância antes de criptografar qualquer coisa que você valorize, removendo a única cópia e substituindo 127 vezes com lixo. Arquivo bcrypt - orc-sN. Os arquivos criptografados serão salvos com uma extensão de. bfe. Todos os arquivos que terminem em. bfe serão assumidos como criptografados com o bcrypt e tentarão descriptografá-los. Qualquer outro arquivo de entrada será criptografado. Se mais de um tipo de arquivo for fornecido, bcrypt processará todos os arquivos que são iguais ao primeiro tipo de arquivo fornecido. Por padrão, o bcrypt irá compactar arquivos de entrada antes da criptografia, remover arquivos de entrada depois de serem processados ​​(assumindo que eles são processados ​​com sucesso) e substituir arquivos de entrada com dados aleatórios para evitar a recuperação de dados. Passphrases pode ter entre 8 e 56 caracteres. Independentemente do tamanho da senha, a chave é interna internamente para 448 bits - o maior tamanho de teclado suportado pelo algoritmo do blowfish. No entanto, ainda é sábio usar uma senha segura. Imprimir saída para saída padrão. Implícita - r. NÃO compactar arquivos antes da criptografia. NÃO remova os arquivos de entrada após o processamento Quantas vezes para substituir arquivos de entrada com dados aleatórios antes do processamento. O número padrão de substituições é 3. Use - s0 para desativar esse recurso. Sem efeito se - r for fornecido. As opções o, c e r têm os efeitos opostos se as configurações apropriadas forem alteradas do padrão na config. h. Os arquivos criptografados devem ser compatíveis entre a maioria dos sistemas. A compatibilidade binária foi testada para todos os sistemas listados acima. Suporte, Ajuda, Erros, o que diabos é este johnny shelley - código principal e portas unix. Philip Stolarczyk - suporte e teste Win32 nativos. Copyright (c) 2002 Johnny Shelley Todos os direitos reservados. É permitida a redistribuição e uso em formas de origem e binárias, com ou sem modificação, desde que sejam atendidas as seguintes condições: 1. As redistribuições do código-fonte devem reter o aviso de direitos autorais acima, esta lista de condições e a seguinte declaração. 2. As redistribuições em formato binário devem reproduzir o aviso de direitos autorais acima, esta lista de condições e o seguinte aviso na documentação e outros materiais fornecidos com a distribuição. 3. Nem o nome do autor nem quaisquer contribuidores podem ser usados ​​para endossar ou promover produtos derivados deste software sem autorização prévia por escrito específica. ESTE SOFTWARE É FORNECIDO POR TITULARES DE DIREITOS AUTORAIS E COLABORADORES COMO É E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E APTIDÃO PARA UM PROPÓSITO ESPECÍFICO SÃO REQUERITADAS. EM NENHUMA CIRCUNSTÂNCIA, O AUTOR SERÁ RESPONSÁVEL POR QUAISQUER DANOS DIRETOS, INDIRECTOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENTES (INCLUINDO, MAS NÃO SE LIMITANDO A, AQUISIÇÃO DE PRODUTOS SUBSTITUTOS OU SERVIÇOS PERDA DE USO, DADOS OU LUCROS OU INTERRUPÇÃO DE NEGÓCIOS), NO ENTANTO CAUSADO E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA POR CONTRATO, RESPONSABILIDADE ESTRITA OU DELITO (INCLUINDO NEGLIGÊNCIA OU DE OUTRA FORMA) DECORRENDO DE FORMA DE USO DESTE SOFTWARE, INCLUSO SE AVISADO DA POSSIBILIDADE DE TAIS DANOS. scrypt 0.8.0 Ligações Para a biblioteca de funções de derivação de chaves do scrypt Este é um conjunto de ligações Python para a função de derivação da chave do scrypt. O Scrypt é útil quando criptografa a senha, pois é possível especificar uma quantidade mínima de tempo para usar ao criptografar e descriptografar. Se, por exemplo, uma senha demora 0,05 segundos para verificar, um usuário não perceberá o ligeiro atraso ao iniciar sessão, mas fazer uma busca de força bruta de vários bilhões de senhas levará uma quantidade considerável de tempo. Isso contrasta com funções de hash mais tradicionais, como MD5 ou a família SHA, que podem ser implementadas extremamente rápido em hardware barato. Instalação Você pode instalar o py-scrypt deste repositório se quiser a versão mais recente, mas possivelmente não compilável: Ou você pode instalar a versão mais recente do PyPi: Se desejar py-scrypt para o seu ambiente Python 3, basta executar os comandos acima com Seu intérprete Python 3. O Py-scrypt suporta tanto Python 2 como 3. gtFrom versão 0.6.0 (não disponível no PyPi ainda), o py-scrypt também oferece suporte a PyPy. Antes da criptografia, a biblioteca exporta duas funções criptografar e descriptografar: gtPor estas, pode-se fazer um verificador de senha simples usando as seguintes funções: Mas, se você quiser uma saída determinista e constante em tamanho, você pode usar a função hash: Reconhecimentos Scrypt Foi criado por Colin Percival e é licenciado como BSD de 2 cláusulas. Uma vez que o scrypt normalmente não se constrói como uma biblioteca compartilhada, incluí a fonte para a versão atual da biblioteca neste repositório. Quando uma nova versão chegar, atualizarei essas fontes. Kelvin Wong no Bitbucket forneceu alterações para tornar a biblioteca disponível no Mac OS X 10.6 e versões anteriores, bem como alterações para tornar a biblioteca funcionando mais como a versão de linha de comando do scrypt por padrão. Kelvin também contribuiu com testes de unidade, muitos testes de plataforma cruzada e trabalho na função hash. Burstaholic no Bitbucket forneceu as mudanças necessárias para tornar a biblioteca construída no Windows. O python-appveyor-demo repositório para configurar versões automatizadas do Windows para uma infinidade de versões do Python. Esta biblioteca está licenciada sob a mesma licença que o scrypt 2-clause BSD. (Editar: alguns números para pessoas que gostam de números) Se você já estiver usando bcrypt, relaxe, você está bem, provavelmente. No entanto, se você estiver procurando por uma função de derivação de chave (ou no caso de bcrypts, função de criptografia de senha) para um novo projeto, bcrypt provavelmente não é o melhor que você pode escolher. Na verdade, existem dois algoritmos que são cada um melhor em uma maneira diferente de bcrypt, e também amplamente disponíveis em várias plataformas. Eu escrevo esta postagem porque percebi uma espécie de culto de carga APENAS USE BCRYPT (obrigado Coda Hale). Esta é absolutamente a atitude errada sobre a criptografia. Mesmo que as pessoas que sabem muito mais sobre criptografia do que fiz um trabalho incrível empacotando essas cifras em bibliotecas fáceis de usar, o uso da criptografia não é algo que você empreende levemente. Saiba o que você está fazendo quando estiver usando, ou então não vai ajudá-lo. O primeiro ID de cifra sugerido que você considera além do bcrypt é PBKDF2. É onipresente e testado pelo tempo com um pedigree acadêmico da RSA Labs, você sabe, os caras que inventaram grande parte do ecossistema criptográfico que usamos hoje. Como o bcrypt, PBKDF2 possui um fator de trabalho ajustável. Ao contrário do bcrypt, o PBKDF2 tem sido objeto de pesquisa intensa e ainda continua sendo a melhor escolha conservadora. Houve uma pesquisa consideravelmente menor sobre a solidez do bcrypt como uma função de derivação chave em comparação com o PBKDF2, e simplesmente por esse motivo, o bcrypt é muito mais desconhecido quanto ao que ataques futuros podem ser descobertos contra ele. O bcrypt possui um fator de segurança-calculo-tempo mais elevado do que o PBKDF2, mas isso não o ajudará se um ataque for descoberto, o que mitiga a complexidade computacional de bcrypts. Tais ataques foram encontrados no passado contra cifras como 3DES. Onde o 3DES usa uma chave de 168 bits, vários ataques reduziram a eficácia dos tamanhos de chave para 80 bits. PBKDF2 é usado pelo WPA, cofre de senha popular como 1Password e LastPass, e ferramentas de criptografia de disco completo como TrueCrypt e FileVault. Enquanto eu muitas vezes me ofereço na Lamer News como um antipattern Sinatra. Eu tenho que aplaudir antirez em sua escolha de PBKDF2 quando ele foi bombardeado com um simples ataque bcrypt (embora bro, antirez, há uma jóia PBKDF2 que você pode usar. Você não tem que vendê-lo) A segunda cifra a considerar é o script. O scrypt não apenas proporciona mais segurança teórica do que o bcrypt por unidade de tempo de computação, mas também permite que você configure a quantidade de espaço na memória necessária para calcular o resultado. Onde algoritmos como o PBKDF2 e o bcrypt trabalham no local na memória, o scrypt é um algoritmo de memória rígida e, portanto, faz com que um invasor de força bruta pague penalidades tanto na CPU como na memória. Embora a solidez criptográfica do scrypts, como bcrypts, seja mal pesquisada, de uma perspectiva algorítmica pura é superior em todas as frentes. A próxima vez que você precisar escolher uma função de derivação chave, não use o bcrypt. 29 comentários: Eu acho que o ponto de usar o bcryptquot é quotdon39t use (mesmo salgado) sha1sha2quot O motivo que eu costumo recomendar bCrypt é realmente devido aos fatores humanos envolvidos essencialmente, as ligações estão disponíveis para todos os idiomas, a API é consistente e bastante infalível. Geralmente, não precisamos de funções de hash quotoptimally safequot, só precisamos quotgood o suficiente para ser indistinguível da melhor prática e bCrypt se encaixa no Bill aqui bem. Implementação em Python aqui: githubdotpotCrypton Singpolyma Por que não salgado sha1sha2 Agradecemos antecipadamente. CaStarCo: Um simples sal de cripta SHA256 (salt cleartextpassword) é exatamente tão fácil como crack bruto como cryptpass SHA256 (cleartextpassword) para uma única senha. Agora, os insultados são mais vulneráveis ​​a atacar múltiplas senhas em um banco de dados ao mesmo tempo, como todos os que usam a mesma senha serão quebrados simultaneamente, enquanto o salgado, se o sal for bom, só quebrará o mesmo. O benefício do PBKDF2, bcrypt e scrypt é o custo adicional de várias iterações que aumentam o custo de ataque bruto bruto, tornando-os muito mais seguros do que até os hashes salgados. Google hashcat - ele irá quebrar sua senha em 2 segundos ou mais, com ou sem sal :-) Como você responderia a esta publicação Eu sou apenas um seguidor do blog acima, eu só quero saber sua opinião. Desculpe, mas você está errado em quase todos os seus pontos. Primeiro, o bcrypt não é uma cifra, é uma função de derivação chave. Isso pode parecer fraco, mas seus casos de uso e cenários de ataque diferem de forma selvagem. Com uma cifra, você geralmente tem vários pares de texto claro e de texto criptografado e quer encontrar a chave criptografando o texto simples para o texto cifrado (para que você possa descrever os ciphertexts para os quais você não possui texto simples). Com uma função de derivação de chave, você geralmente possui uma baixa entrada de entropia e quer criar uma saída que é computacionalmente difícil de distinguir da saída de entropia alta. Essa entrada de baixa entropia pode ser uma senha cujo espaço-chave geralmente é muito pequeno. Assim, um KDF em nosso contexto tem que ser lento para calcular, e apenas com a implementação de referência, mas com qualquer implementação. QuotBreakingquot tal KDF significa encontrar um curto-circuito que permite uma computação significativamente mais rápida do que com o algoritmo de referência. Em seguida, por que você assume que o bcrypt teve menos escrutínio criptoanalítico do que PBKDF2. Ambos são aproximadamente da mesma idade. Na verdade, uma das razões por que o bcrypt é freqüentemente mencionado como uma boa escolha é porque agregou muita confiança nos últimos 13 anos. Também há muitos exemplos ruins no uso de PBKDF2, que principalmente decorrem de contagens de iterações muito baixas. TrueCrypt, que você menciona como um dos exemplos por que PBKDF2 é confiável, é especialmente ruim na escolha de parâmetros razoáveis: eles usam apenas uma contagem de iteração de 1000 para a maioria dos hashes (veja truecrypt. orgdocssheader-key-derivation). Os valores de PBKDF2 na tabela que você copiou de tarsnapscryptscrypt. pdf foram calculados com uma contagem de iteração de 86000 (primeira entrada - quot100msquot) e 4,300,000 (segunda entrada - quot5.0squot) WPA, outro exemplo que você menciona, também é notoriamente ruim ao usar Boa contagem de iteração. Essa é a razão pela qual os ataques de dicionário no WPA-PSK tornaram-se tão populares. Eu concordo com Blair Strang aqui, que uma das principais vantagens do bcrypt é que há uma documentação muito melhor disponível e as implementações têm melhores valores padrão. Uma nota lateral sobre os ataques 3DES. Tecnicamente, sim, você pode usar uma opção de digitação 3DES cujo tamanho da chave é 168. Mas ninguém nunca argumentou que a força real da cifra era de 168 bits. Na verdade, uma das primeiras coisas que você lê sobre o Triple DES é que sua força real é de no mínimo 112 bits, por causa de um ataque de encontro ao meio que é inerente ao seu design. E o quotattackquot que você menciona que o reduz para 80 bits nem sequer se aplica a casos de uso normal do 3DES (veja o documento que está relacionado no artigo da Wikipédia) e definitivamente não possui nenhuma aplicação sobre KDFs. Na verdade, o 3DES é um exemplo de um algoritmo antigo, que ainda é um dos mais fortes disponíveis. A principal razão pela qual todos mudaram para AES foi que era muito mais rápido. Se você quiser estar no lado seguro com o hashing de senha, você pode diversificar sua escolha: Seja p sua senha e SaltI seja de 128 bits de valores aleatórios. Derive p1 HMAC (Salt1quotPBKDF2quot) com a chave sha256 (p), p2 HMAC (Salt2quotbcryptquot) com a chave sha1 (p) e p3 HMAC (Salt3 quotscryptquot) com a chave sha1 (p). Derive a chave k1, k2 e k3 usando a função de derivação de chave PBKDF2, bcrypt e scrypt, respectivamente, cada uma usando 130 segundos de tempo de CPU com entrada p1, p2 e p3, respectivamente. Calcule a chave (ou entrada de referência do banco de dados) como sha256 (k1k2k3). Aqui quotquot designa a concatenação de arrays de bytes. Desta forma, você obtém o melhor de todos os mundos: um bcrypt comprovado, um script experimental, mas muito promissor e um PBKDF2 tradicional. O aspecto importante é que você ajusta os parâmetros de cada KDF, de modo que eles demoram muito para computar (isso é por isso que eu propus 130s de tempo de CPU). Então seu KDF é tão forte quanto o mais forte dos três. Por que o texto de 40 caracteres requer menos dinheiro, em seguida, o texto de 10 caracteres para travar ao mesmo tempo (não foi possível editar), acho que eles conseguiram a caixa de caracteres de 10 cartilhas e 40 caixas. Existe um erro desagradável na documentação sobre o github. Ele afirma que você deve: incluir 39scrypt39. Isso deve ser: incluir SCrypt. Levei meia hora para descobrir. Eu realmente não entendo o argumento para o bcrypt. Não há problema em configurar as rodadas na cripta comum () para SHA-512, etc., certo, que farão 1234 rodadas de SHA-512. Agora, qual é o ponto do bcrypt, que só pode lidar com os hashes do Blowfish. Use bcrypt, don39t use bcrypt. Para o inferno com isso, I39m aderindo ao md5 sem remédio Errado, sua senha é sempre tão forte quanto a mais fraca, se os três O que não é o que é mencionado é como o bcrypt é comparado com o pbkdf2 usando sha512 Isn39t bcrypt per se menos seguro, pois usa um Comprimento de bit mais curto Em termos de quotcostquot, você pode acelerar as iterações do pbkdf2. Não seria suficiente Cypher ALGO1. Rshift (dentro) Cypher ALGO2. Lshift (dentro) Cypher ALGO3. Rshift (Lshift (in)) Conclusão. A senha pode até ser mais fraca do que o algoritmo mais fraco (nesse caso, a composição deu identidade) Tibor Sekelj Wrong, lê-lo novamente. Você deve ser capaz de quebrar todos os 3 algoritmos para obter a senha. A desvantagem para a abordagem do uso de 3 algoritmos, porém, é que você só pode usar 13 do fator de trabalho para cada um, então, se a magia 2 dos 3 estiverem totalmente comprometidas, o terceiro algoritmo é muito mais rápido para crackar. O que na teoria ainda deve ser muito difícil, mas apenas apontando para fora. Mude o título para a isca de troll hsckernews para que eu possa ouvir centenas de hacks sem claves sobre algo que eles não entendem e usar esta postagem como uma referência. É interessante que as execuções de exemplo hashcat parecem indicar duas ordens de magnitude mais rápidas verificações por segundo para bcrypt do que para PBKF2, o que parece sugerir o oposto do que esta publicação sugere8230 YAHOO, você perdeu um k nesse benchmark. O PBKDF2 é o único que é a ordem de magnitude mais rápida. Eu leio a fonte da LamerNews39. Jesus, muita lógica no arquivo app. rb. Tanta lógica. O aspecto engraçado para esta discussão é que muitas pessoas estão usando MD5 salgados ou não salgados, se eles nem se importaram com senhas de hash. Não há necessidade de uma jóia, já está no stdlib: ruby-doc. orgstdlib-1.9.3libdocopensslrdocOpenSSLPKCS5.html Eu acho que algumas dessas preocupações parecem um pouco bobas. Todo o KDF foi projetado para resolver algo insolúvel no início. Todo o algo é apenas uma tentativa de adiar o problema. Nenhum é uma prova futura. Todos os KDF preocupam-se com recursos computacionais para que eles adicionem algum tipo de parâmetro de carga de trabalho para sintonizar o alogos. Esta abordagem soa como uma luta de braço. (Veja quem é o mais forte.) Na realidade, todos os computadores não crescem na velocidade da CPU ou na capacidade de memória. O que realmente importa é o fosso de recursos entre servidores de baixo custo e super computadores de ponta. A diferença é maior à medida que o tempo passa. Em um futuro próximo, alugar um poder de computação em nuvem pode ser barato, mas ainda usamos os mesmos servidores da velha escola. (A verificação de comparação de hash não é adequada para o sistema off-line em primeiro lugar). Então, eu acho que devemos escolher um algoritmo promissor, escolher um número mágico como parâmetro de carga de trabalho e o sal. Nunca os altere e admita que estamos perdidos. (Em corrida de potência computacional com padrão de algoritmo aberto. Não acho que se possa vencer por soluções de algoritmos brilhantes.) O bom está fora de linha O bruteforcing é o pior caso quando um servidor escapa a senha. Não há vazamento se outros sistemas de segurança estiverem funcionando corretamente. E o atacante provavelmente só obteve apenas a versão de colisão do hash da senha. Se os usuários não estão reutilizando a mesma senha para tudo. Eu acho que isso deve ser suficiente, mas, se não, o usuário é vulnerável aos proprietários de serviços de tudo o que eles usam no início. O KDF é apenas uma ferramenta que limita alguns outros critérios aos atacantes. Por exemplo, você pode especificar que somente a NSA e Jeff Bezos ou alguém ao longo da linha podem quebrar a senha e não outras. E, claro, critérios comuns de atacantes é aquele que também pode obter valor de hash de senha. P. S. O KDF em um cenário de usuário é outra história (por exemplo, gerando uma chave de cifra simétrica para criptografar um arquivo off-line). Você pode torná-lo lento como alguns segundos. Vou adicionar outro ponto aos críticos aqui. PBKDF2 é amigável em GPU, onde o bcrypt e o scrypt não são Obrigado pelo excelente artigo. Você poderia especificar quais parâmetros (N, r, p) foram usados ​​para o scrypt (64ms) e o scrypt (3.8 s). E o processador usado para alcançar isso Perspectivas de tempo - Você acabou de inventar sua própria solução para um problema comum de criptografia Veja também argon2, vencedor de 2017 em phc. Eu adoro usar PBKDF2 mais na geração de arquivos criptografados. OpenSSL até o fornece como uma função de biblioteca. Mas o OpenSSL não o fornece para criptografar arquivos Ele atualmente usa PBKDF1.5 para o uso da linha de comando 39enc39

No comments:

Post a Comment