Quero criptografar um arquivo binário. Meu objetivo é evitar que alguém leia o arquivo sem a senha.
Qual é a melhor solução, AES ou Blowfish com o mesmo comprimento de chave? Podemos supor que o atacante possui grandes recursos (softwares, conhecimento, dinheiro) para crackear o arquivo.
security
encryption
aes
blowfish
mimrock
fonte
fonte
Respostas:
Provavelmente AES. Blowfish foi o predecessor direto do Twofish. Twofish foi a entrada de Bruce Schneier na competição que produziu AES. Ele foi julgado como inferior a uma entrada chamada Rijndael, que foi o que se tornou AES.
Interessante à parte: em um ponto da competição, todos os participantes foram convidados a dar sua opinião sobre a classificação das cifras. Provavelmente não é nenhuma surpresa que cada equipe escolheu sua própria entrada como a melhor - mas todas as outras equipes escolheram Rijndael como a segunda melhor.
Dito isso, existem algumas diferenças básicas nos objetivos básicos do Blowfish vs. AES que podem (indiscutivelmente) favorecer o Blowfish em termos de segurança absoluta. Em particular, Blowfish tenta dificultar um ataque de força bruta (exaustão da tecla) tornando a configuração da tecla inicial uma operação bastante lenta. Para um usuário normal, isso é de pouca importância (ainda é menos de um milissegundo), mas se você está tentando milhões de chaves por segundo para quebrá-lo, a diferença é bastante substancial.
No final das contas, não vejo isso como uma grande vantagem, no entanto. Eu geralmente recomendo AES. Minhas próximas escolhas provavelmente seriam Serpent, MARS e Twofish, nessa ordem. O Blowfish viria em algum lugar depois daqueles (embora haja alguns outros que eu provavelmente recomendaria antes do Blowfish).
fonte
Blowfish
é o mais rápidoÉ um fato raramente reconhecido que o tamanho do bloco de uma cifra de bloco também é uma consideração importante de segurança (embora nem de longe tão importante quanto o tamanho da chave).
Blowfish (e a maioria das outras cifras de bloco da mesma era, como 3DES e IDEA) têm um tamanho de bloco de 64 bits, o que é considerado insuficiente para os tamanhos de arquivo grandes que são comuns hoje em dia (quanto maior o arquivo e menor o tamanho do bloco , maior a probabilidade de um bloco repetido no texto cifrado - e esses blocos repetidos são extremamente úteis na criptoanálise).
O AES, por outro lado, tem um tamanho de bloco de 128 bits. Esta consideração por si só é justificativa para usar AES em vez de Blowfish.
fonte
Em termos dos algoritmos em si, eu escolheria o AES, pela simples razão de que ele foi aceito pelo NIST e será revisado por pares e criptanalisado por anos. No entanto, eu sugeriria isso em aplicações práticas, a menos que você esteja armazenando algum arquivo que o governo queira manter em segredo (nesse caso, a NSA provavelmente forneceria a você um algoritmo melhor do que AES e Blowfish), usar qualquer um desses algoritmos venceu não faz muita diferença. Toda a segurança deve estar na chave, e ambos os algoritmos são resistentes a ataques de força bruta. Blowfish só demonstrou ser fraco em implementações que não fazem uso das 16 rodadas completas. E embora o AES seja mais recente, esse fato deve fazer você se inclinar mais para o BlowFish (se você levar apenas a idade em consideração). Pense desta forma,
Aqui está o que eu colocaria para você ... em vez de olhar para esses dois algoritmos e tentar escolher entre o algoritmo, por que você não olha para o seu esquema de geração de chave. Um invasor em potencial que deseja descriptografar seu arquivo não vai sentar lá e apresentar um conjunto teórico de chaves que podem ser usadas e, em seguida, fazer um ataque de força bruta que pode levar meses. Em vez disso, ele vai explorar outra coisa, como atacar o hardware do seu servidor, fazer engenharia reversa do assembly para ver a chave, tentar encontrar algum arquivo de configuração que contenha a chave ou talvez chantagear seu amigo para copiar um arquivo do seu computador . Esses estarão onde você está mais vulnerável, não o algoritmo.
fonte
AES.
(Também estou assumindo que você quer dizer dois peixes, não o baiacu muito mais velho e mais fraco)
Ambos (AES e twofish) são bons algoritmos. No entanto, mesmo que fossem iguais ou duas vezes estivessem um pouco à frente no mérito técnico, AINDA escolheria AES.
Por quê? Publicidade. AES é O padrão para criptografia governamental e, portanto, milhões de outras entidades também o usam. Um criptanalista talentoso simplesmente obtém mais "retorno do investimento" ao encontrar uma falha no AES do que o muito menos conhecido e usado.
A obscuridade não oferece proteção na criptografia. Mais corpos procurando, estudando, sondando, atacando um algoritmo é sempre melhor. Você quer o algoritmo mais "examinado" possível e, agora, esse é o AES. Se um algoritmo não está sujeito a um escrutínio intenso e contínuo, você deve confiar menos em sua força. Claro que o twofish não foi comprometido. É por causa da força da cifra ou simplesmente porque poucas pessoas deram uma olhada de perto ... AINDA
fonte
A escolha do algoritmo provavelmente não importa muito. Eu usaria o AES, já que foi mais pesquisado. O que é muito mais importante é escolher o modo de operação correto e a função de derivação de chave .
Você pode querer dar uma olhada na especificação do formato TrueCrypt para se inspirar, se quiser acesso aleatório rápido. Se você não precisa de acesso aleatório, então o XTS não é o modo ideal, já que tem pontos fracos que outros modos não têm. E você pode querer adicionar algum tipo de verificação de integridade (ou código de autenticação de mensagem) também.
fonte
Sei que essa resposta viola os termos de sua pergunta, mas acho que a resposta correta para sua intenção é simplesmente esta: use o algoritmo que permitir o comprimento de chave mais longo e, em seguida, certifique-se de escolher uma chave realmente boa. Pequenas diferenças no desempenho da maioria dos algoritmos bem considerados (criptograficamente e cronologicamente) são superadas por alguns bits extras de uma chave.
fonte
Ambos os algoritmos (AES e twofish) são considerados muito seguros. Isso foi amplamente abordado em outras respostas.
No entanto, como o AES é amplamente usado agora em 2016, ele foi especificamente acelerado por hardware em várias plataformas, como ARM e x86. Embora não seja significativamente mais rápido do que o twofish antes da aceleração de hardware, o AES agora é muito mais rápido graças às instruções dedicadas da CPU.
fonte