Pergunta

Então, pessoal, há muitas cifras diferentes disponíveis - mas qual é a mais segura de usar hoje em dia?

Lista: http://www.php.net/manual/en/mcrypt.ciphers.php

Foi útil?

Solução

Se não tiver certeza, use AES (também conhecido como "Rijndael") com uma chave de 128 bits. Se você desenvolveu algum tipo de fetiche sobre o tamanho da chave, poderá cumprir seus escrúpulos irracionais selecionando uma chave maior, por exemplo, 192 ou 256 bits; O custo extra não é alto (+40% de carga de trabalho para o AES-256, em comparação com o AES-128, e é preciso muito muito rede rápida para realmente observar essa diferença).

Cuidado que, independentemente do tamanho da chave escolhido, a Cipher McRypt correta para AES é sempre MCRYPT_RIJNDAEL_128. Isso ocorre porque o padrão AES refere-se ao sabor da cifra Rijndael com um tamanho de bloco de 128 bits. Se você quiser AES-256, você precisa usar MCRYPT_RIJNDAEL_128 com uma chave de 256 bits (32 byte), não MCRYPT_RIJNDAEL_256.

A AES foi publicada em 1998 e adotada pelo governo dos EUA como padrão federal em 2001, e não mostra sinal de fraqueza hoje em dia. Algumas propriedades matemáticas foram encontradas posteriormente, mas não afetam a segurança real; Principalmente, eles destacam que temos algum conhecimento relativamente preciso sobre por que o AES está seguro. Nenhum outro algoritmo de criptografia simétrica recebeu tanta atenção (por milhares de criptografistas talentosos) que os AES.

A maioria dos problemas de segurança vem de como o algoritmo criptográfico é usado, não o próprio algoritmo. Use um modo de encadeamento adequado, adicione um Mac, gerencie o preenchimento e, acima de tudo, lide com o chaves com segurança. Se você acertou todo esse direito (o que é muito mais complicado do que parece), então se torna tempo para se preocupar em escolher Rijndael, duplo ou qualquer outra coisa.

Outras dicas

Além da ótima resposta de Thomas Pornin, você também deve considerar o que está tentando alcançar em termos de "segurança" (confidencialidade/integridade/autenticidade/disponibilidade).

Para todos os casos, você precisará abordar algumas perguntas, como ... para quem isso se aplica? Onde e por que está sendo usado (o que você está protegendo)? Quanto tempo deve durar? etc.

Por exemplo, provavelmente não há sentido em criptografar dados da sessão com uma sucessão completa de operações de 256 bits, quando os dados realmente devem durar de 20 a 30 minutos. Um algoritmo seguro de 128 bits seria quase duas vezes rápido ou pelo menos usar cargas menos ciclos de relógio e seria tão seguro (se não mais).

Também não faz sentido criptografar algo que deve durar muito tempo (como um documento ou arquivo confidencial, chave privada etc ...) com um método de chave curta e fraca. Às vezes, você gostaria de vários algoritmos com algum tipo de autenticação e uso adequado do preenchimento. Eu criptografi e assinei regularmente o conteúdo mediante solicitação de clientes usando vários algoritmos (principalmente dois, AES, RSA).

E também para não esquecer (como Thomas apontou), você pode implementar um método (ou métodos) seguro) com insegurança. Com as vastas quantidades de variantes de cada fórmula e tal, pode ser complicado implementar algo que seja "seguro".

Geralmente, algo é tão seguro quanto a chave é desbloqueá -la. Se eu deixar as chaves do meu carro no carro com o carro destrancado, as chaves não são seguras e estão abertas para a tomada por qualquer pessoa que passe. Blowfish com uma chave de 32 caracteres bem dispersa seria tão segura quanto qualquer outra coisa hoje. Uma chave de 3 caracteres, no entanto, pode ser quebrada em um piscar de olhos.

"A cifra mais forte é AES-256"

A partir dos detalhes do site de Bruce Schneier, o AES-256 pode, ironicamente, ser o menos seguro dos três tamanhos principais 128, 192 e 256. Há problemas com a geração chave na variante de 256 bits.

Alguns algoritmos são melhores do que outros em coisas diferentes - não tenho certeza de quais são seus critérios para "mais seguros".

Você certamente não deve estar usando nenhum dos algoritmos baseados em DE hoje em dia (supondo que tenha uma escolha livre). Aes (Rijndael) é o padrão atual para o NIST e outros corpos.

Em geral, mais bits para um algoritmo específico significa mais seguro, mas garanta que você use um vetor de inicialização e não use o BCE.

Hth

C.

De acordo com o artigo do NIST, Rjindael tinha uma baixa margem de segurança em comparação com Marte, dupla ou serpente. Se você realmente precisa da cifra mais forte, escolha um deles.

http://csrc.nist.gov/archive/aes/round2/r2report.pdf

Para citar: "Marte parece ter uma alta margem de segurança. Uma caracterização precisa de Marte é difícil devido ao fato de Marte empregar dois tipos diferentes de rodadas. Marte recebeu algumas críticas baseadas em sua complexidade, o que pode ter prejudicado sua análise de segurança durante o prazo do processo de desenvolvimento da AES.

Rijndael parece ter uma margem de segurança adequada. A margem de segurança é um pouco difícil de medir, porque o número de rodadas muda com o tamanho da chave. Rijndael recebeu algumas críticas por dois motivos: que sua margem de segurança está no lado baixo entre os finalistas e que sua estrutura matemática pode levar a ataques. No entanto, sua estrutura é bastante simples, o que pode ter facilitado sua análise de segurança durante o prazo especificado do processo de desenvolvimento da AES.

A serpente parece ter uma alta margem de segurança. A Serpent também possui uma estrutura simples, que pode ter facilitado sua análise de segurança durante o prazo especificado do processo de desenvolvimento da AES.

O duplo parece ter uma alta margem de segurança. Como o duplo usa a função redonda dependente da chave, a noção de margem de segurança pode ter menos significado para esse algoritmo do que para os outros finalistas. A dependência das caixas S dois em apenas k/2 bits de entropia no caso K-Bit Key levou a uma especulação de que o duplo pode ser passível de um ataque de divisão e conquista, embora nenhum ataque tenha sido encontrado. O Twofish recebeu algumas críticas por sua complexidade, dificultando a análise durante o prazo do processo de desenvolvimento da AES ".

Se você quiser olhar para os detalhes, há um artigo, principalmente por mim, em cifras em bloco em http://en.citizendium.org/wiki/block_cipher

Para cumprir os padrões atuais dos EUA, use Aes, anteriormente Rijndael. Qualquer um dos outros finalistas da competição da AES-Serpente, Marte, Twofish ou RC-6-também deve estar bem. Eu acho que você precisa de uma licença para o RC6, no entanto.

Normalmente, uso o AES-128, pois o AES é aprovado pelo AES. A cifra mais forte é AES-256 (mcrypt_rijndael_256).

McRypt possui um design modular e a nova cifra pode ser adicionada facilmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top