Pergunta

Estou pensando o seguinte: eu tenho algum fluxo de dados que eu gostaria de proteger o mais seguro possível - isso faz qualquer sentido aplicar digamos AES com algumas IV, em seguida, Blowfish com algum IV e, finalmente, de novo AES com algumas IV?

O processo de codificação / decodificação serão ocultados (mesmo protegido contra a depuração), por isso não vai ser fácil de adivinhar que foram utilizados método de criptografia eo que IVs (no entanto, estou ciente do fato do poder desta cadeia de criptografia pode' t ser dependem esse fato já que toda proteção contra depuração é quebrável depois de algum tempo).

Eu tenho poder de computador para isso (essa quantidade de dados não é tão grande) para que a questão só é se vale a pena de implementação. Por exemplo, TripleDES trabalhou de forma muito semelhante, usando três IVs e criptografar / descriptografar / criptografar esquema por isso provavelmente não é um disparate total. Outra questão é o quanto eu diminuir a segurança quando eu uso o mesmo IV para a 1ª e 3ª parte ou mesmo o mesmo IV para todas as três partes?

Congratulo-me com quaisquer sugestões sobre este assunto

Foi útil?

Solução

Eu não tenho certeza sobre esta combinação específica, mas é geralmente uma má idéia de misturar as coisas como esta, a menos que essa combinação específica tem sido extensivamente pesquisado. É possível as transformações matemáticas seria realmente neutralizar um ao outro e o resultado final seria mais fácil de cortar. A única passagem da AES ou Blowfish deve ser mais do que suficiente.

UPDATE: Do meu comentário abaixo ...

Usando TripleDES como um exemplo: pense em como tempo e esforço muito de melhores criptógrafos do mundo entrou em criar essa combinação (note que DoubleDES tinha uma vulnerabilidade), e o melhor que poderia fazer é de 112 bits de segurança, apesar de 192 bits de chave.

UPDATE 2: Eu tenho que concordar com Diomidis que a AES é extremamente Não deve ser o elo mais fraco no seu sistema. Praticamente todos os outros aspectos do seu sistema é mais provável que seja comprometida a AES.

Update 3: Dependendo do que você está fazendo com o fluxo, você pode querer usar apenas TLS (o sucessor do SSL). Eu recomendo Practical Cryptography para mais detalhes, ele faz um trabalho muito bom de dirigir um monte de as preocupações que você precisa para endereço. Entre outras coisas, ele discute cifras de fluxo , que pode ou não pode ser mais apropriado do que a AES (desde AES é um bloco cifra e você mencionou especificamente que você tinha um fluxo de dados para criptografar).

Outras dicas

Eu não acho que você tem nada a perder, aplicando um algoritmo de criptografia em cima do outro, que é muito diferente do primeiro. No entanto, gostaria ser cauteloso de executar uma segunda rodada do mesmo algoritmo em cima do primeiro, mesmo se você executar um outro no meio. A interação entre as duas corridas podem abrir uma vulnerabilidade.

Dito isso, eu acho que você é angustiante demais na parte de criptografia. A maioria das exposições de dados não acontecem por quebrar um algoritmo de criptografia padrão da indústria, como AES, mas através de outras deficiências no sistema. Gostaria de sugerir a passar mais tempo em olhar para gerenciamento de chaves, a manipulação de dados não criptografados, deficiências na implementação do algoritmo (a possibilidade de vazamento de dados ou chaves), e problemas do sistema mais amplo, por exemplo, o que você está fazendo com backups de dados.

Um hacker sempre atacar o elemento mais fraco de uma cadeia. Por isso, ajuda pouco para fazer um forte elemento ainda mais forte. Cracking uma criptografia AES já é impossível com comprimento de chave de 128 bits. O mesmo vale para Blowfish. Escolhendo ainda maiores comprimentos de chave tornar ainda mais difícil, mas na verdade 128 Bit nunca foi rachado até agora (e provavelmente não vai nos próximos 10 ou 20 anos). Então essa criptografia não é provavelmente o elemento mais fraco, portanto, por isso tornando-se mais forte? Ele já é forte.

Pense sobre o que mais pode ser o elemento mais fraco? O IV? Na verdade, eu não iria perder muito tempo sobre a seleção de um grande IV ou escondê-lo. A chave mais fraco geralmente é a chave enccryption. Por exemplo. se você estiver criptografando os dados armazenados no disco, mas esta necessidades de dados para ser lido pelo seu aplicativo, suas necessidades de aplicação para saber a IV e ele precisa saber a chave de criptografia, portanto, ambos tem de ser dentro o binário. Este é realmente o elemento mais fraco. Mesmo se você tomar 20 métodos de criptografia e encadeá-los em seus dados, os IVs e chaves de criptografia de todos os 20 precisa ser no binário e se um hacker pode extraí-los, o fato de que você usou 20 em vez de 1 método de criptografia fornecida Zero adicional segurança.

Desde que eu ainda não sei o que todo o processo é (que criptografa os dados, que decodifica os dados, onde os dados são armazenados, como é transportado, que precisa de saber as chaves de criptografia, e assim por diante), é muito difícil dizer o que o elemento mais fraco realmente é, mas eu duvido que a AES ou Blowfish criptografia em si é o seu elemento mais fraco.

Quem você está tentando proteger seus dados contra? Seu irmão, seu concorrente, o seu governo, ou os alienígenas?

Cada um destes tem diferentes níveis em que você poderia considerar que os dados sejam "mais seguro possível", dentro de um orçamento significativo (de tempo / dinheiro)

A criptografia duas vezes é mais seguro do que a criptografia de uma vez, mesmo que este pode não ser claro em primeiro lugar.

Intuitivamente, parece que criptografar duas vezes com o mesmo algoritmo não dá nenhuma proteção extra porque um intruso pode encontrar uma chave que decifra todo o caminho na parte de trás cyphertext final ao texto simples. ... Mas este não é o caso.

por exemplo. Eu começo com texto simples A e criptografar com chave K1 -lo para obter B . Em seguida, criptografar I B com chave K2 para obter C .

Intuitivamente, parece razoável supor que pode muito bem haver uma chave, K3 , que eu poderia usar para criptografar A e obter C diretamente. Se este for o caso, então um atacante usando força bruta seria acabará se deparando com K3 e ser capaz de decifrar C , com o resultado que a etapa de criptografia adicional não tem nenhum segurança.

No entanto, é altamente improvável que exista uma tecla (para qualquer esquema de criptografia moderna). (Quando eu digo "altamente improvável" aqui, quero dizer que uma pessoa normal poderia expressar usando a palavra "impossível").

Por quê?
Considere as chaves como funções que fornecem um mapeamento de texto simples para cyphertext.
Se nossas chaves são KL bits de comprimento, em seguida, existem 2 ^ KL tais mapeamentos.
No entanto, se eu usar 2 chaves de KL bits cada, isso me dá (2 ^ KL) ^ 2 mapeamentos.
Nem todos estes pode ser equivalente a uma criptografia de estágio único.

Outra vantagem de criptografar duas vezes, se forem utilizados 2 algoritmos diferentes , é que, se uma vulnerabilidade é encontrada em um dos algoritmos, o outro algoritmo ainda oferece alguma segurança.

Como outros já mencionado, força bruta a chave é tipicamente um último recurso. Um atacante, muitas vezes, tentar quebrar o processo em algum outro ponto (por exemplo, usando a engenharia social para descobrir a senha).

Outra forma de aumentar a segurança é simplesmente usar uma chave mais longa com um algoritmo de criptografia.

... Sinta-se livre para corrigir a minha matemática!

Além disso, não perca tempo ofuscar o algoritmo - aplicar o princípio de Kirchoff, e lembre-se que a AES, por si só, é usado (e reconhecido para ser usado) em um grande número de lugares onde as necessidades de dados para ser " seguro".

Damien: você está certo, eu deveria escrever isso mais claramente. Estou falando de concorrente, é para uso comercial. Portanto, não há orçamento significativa disponíveis, mas eu não quero implementá-lo sem ter a certeza que eu sei por que estou fazendo isso:)

Hank: sim, é isso que eu estou com medo de também. A fonte mais apoio para esta idéia foi TripleDES mencionados. Por outro lado, quando eu usar um algoritmo para criptografar alguns dados, em seguida, aplicar uma outra, que seria muito estranho se o 'poder' de criptografia de todo seria menor do que usando o algoritmo independente. Mas isso não significa que não possa ser igual ... Esta é a razão pela qual eu estou pedindo alguma dica, esta não é a minha área de conhecimento ...

Diomidis: este é basicamente o meu ponto de vista, mas o meu colega está tentando me convencer de que realmente a segurança 'aumenta'. Minha proposta seria a utilização de chave de criptografia mais forte em vez de um algoritmo após o outro sem qualquer pensamento ou conhecimento profundo do que estou fazendo.

Eu não iria contar com obscurecendo os algoritmos que você está usando. Este tipo de "segurança por obscuridade" não funciona por muito tempo. Decompiling o código é uma maneira de revelar a criptografia que você está usando, mas geralmente as pessoas não guardar segredos assim por muito tempo. É por isso que temos criptografia de chave privada / pública em primeiro lugar.

@Miro Kropacek - seu colega está tentando adicionar segurança através Voodoo. Em vez disso, tentar construir algo simples que você pode analisar para falhas -. Tais como apenas usando AES

Eu estou supondo que era ele (ela?), Que sugeriu o reforço da segurança através da protecção de depuração também ...

Você não pode realmente fazer coisas menos seguro Se você criptografar mais de uma vez com IVs distintas e chaves, mas o ganho em segurança pode ser muito menos do que se antecipa: No exemplo da 2DES, os meios meet-in-the-middle ataque é apenas duas vezes mais difícil de quebrar, em vez de quadratura a dificuldade.

Em geral, porém, é muito mais seguro para ficar com um único algoritmo conhecido-bem e aumentar o comprimento da chave se precisar de mais segurança. Deixar compor sistemas criptográficos para os especialistas (e eu não me número um deles).

Sim, ele pode ser benéfico, mas provavelmente um exagero na maioria das situações. Além disso, como Hank menciona certas combinações pode realmente enfraquecer a sua criptografia.

TrueCrypt oferece uma série de combinação de algoritmos de criptografia como AES-Twofish-Serpente. Claro, há uma penalidade de desempenho quando usá-los.

Alterar o algoritmo não é melhorar a qualidade (exceto você espera um algoritmo para ser quebrado), é apenas sobre o comprimento da chave / bloco e alguma vantagem em ofuscação. Fazê-lo várias vezes é interessante, pois mesmo que a primeira chave vazou, os dados resultantes não é distinguível de dados aleatórios. Existem tamanhos de bloco que são processados ??melhor em uma determinada plataforma (ex. Registo tamanho).

Atacar algoritmos de criptografia de qualidade só funciona pela força bruta e, assim, dependendo do poder de computação que você pode gastar em. Isto significa, eventualmente, você só pode aumentar a provável necessidades médias de tempo de alguém para decifrá-lo.

Se os dados são de real valor, é melhor eles não iria atacar os dados, mas o porta-chaves ...

Eu concordo com o que foi dito acima. Vários estágios de criptografia não vai comprar-lhe muito. Se você estiver usando um algoritmo de 'seguro', então é praticamente impossível de quebrar. Usando AES em algum modo de streaming padrão. Consulte http://csrc.nist.gov/groups/ST/toolkit/index .html para cifras aceitos e modos. Qualquer coisa recomendada nesse local deve ser suficientemente seguro quando usado corretamente. Se você quiser ser mais seguro, uso de AES de 256, embora 128 ainda deve ser de qualquer maneira suficiente. Os maiores riscos não são ataques contra o próprio algoritmo, mas sim ataques contra gerenciamento de chaves, ou ataques de canal lateral (que pode ou não ser um risco, dependendo da aplicação e uso). Se você é aplicação é vulnerável a ataques de gerenciamento de chaves ou a ataques de canal lateral, então ele realmente não importa quantos níveis de criptografia que você aplicar. Aqui é onde eu iria concentrar seus esforços.

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