Pergunta

Estou trabalhando em um sistema que usa criptografia assimétrica em um grande número de arquivos.Atualmente estou usando RSA com chaves de 4096 bits para criptografar uma chave AES de 256 bits gerada aleatoriamente para cada arquivo, mas o desempenho está um pouco deficiente, pois uma operação necessária é verificar todos os arquivos (número estimado quando o sistema está em o uso é de cerca de 10.000) e identificar quais podem ser descriptografados usando uma chave privada específica.Embora eu não espere que esta operação seja instantânea, ela está demorando muito no momento (cerca de 2 arquivos processados ​​por segundo).Considerei reduzir o comprimento da chave, mas mesmo reduzi-la para 2.048 bits não fornece o nível de desempenho necessário.512 bits seriam suficientes, mas como essas chaves agora podem ser quebradas trivialmente, isso está fora de questão.

Alguém pode me indicar um sistema que seja mais rápido, mas com força criptográfica semelhante?Precisaria ser implementado através de um provedor Java JCA (por exemplo,algo como bouncycastle) para conectar-me perfeitamente ao meu aplicativo existente.Eu sei que o castelo inflável suporta El Gamal, mas não consigo encontrar detalhes sobre o quão forte é esse algoritmo, ou se é provável que seja mais rápido que o RSA.Também ouço falar de sistemas de curva elíptica que precisam apenas de chaves relativamente curtas (384 bits ou similares), mas não sei onde encontrar uma implementação de uma delas.

Foi útil?

Solução

Para responder à sua pergunta, experimente Diffie-Hellman sobre curvas elípticas, também conhecidas como "ECDH".Estimar a segurança é um pouco difícil uma vez que lidamos com tamanhos que não podem ser quebrados com a tecnologia atual, pois isso depende de como apostamos nas evoluções tecnológicas futuras.No entanto, pode-se dizer que o ECDH na curva P-256 fornece “128 bits” de segurança, um nível semelhante ao que você obteria com o RSA de 2.048 bits.Esse nível é amplamente suficiente para todos os usos atuais ou, mais apropriadamente, se o P-256 não for suficiente para você, então seu problema tem necessidades muito especiais e a força criptográfica provavelmente será a menor das suas preocupações.

No meu PC (um Intel Core2 de 2,4 Ghz, modo de 64 bits, rodando Linux), o OpenSSL afirma processar cerca de 900 instâncias ECDH por segundo, usando um único núcleo.

Editar: para estimativa da segurança da chave, dependendo do comprimento, para vários algoritmos, consulte esse site.

Outras dicas

Por que você não calcula um hash criptograficamente forte de cada chave e depois o armazena de forma clara com cada nome de arquivo?Então, dada uma chave que você precisa para corresponder a todos os arquivos, você pode simplesmente fazer o hash da chave e procurá-la na tabela.

Eu optaria por uma abordagem que exigisse menos operações RSA.SSL/TLS, embora usem RSA etc. para criptografar chaves AES etc., não use AES para os dados simplesmente porque é uma operação computacionalmente cara em tamanhos de chave suficientemente grandes para que a segurança seja feita por pacote ou no seu caso , por arquivo.

Outro sistema de chave pública é: http://en.wikipedia.org/wiki/ElGamal_encryption.Em termos de segurança, acredito que ainda não foi quebrado, mas pessoalmente confiaria na RSA por enquanto.Não sei se há algum algoritmo de criptografia de curva elíptica disponível atualmente - ou seja, sei que eles estão sendo pesquisados, mas entendo que podem não estar prontos para uso em produção e ouvi dizer que havia problemas de patentes.

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