Pergunta

Eu estive olhando para a maioria das bibliotecas python de criptografia, eu decidi usar qualquer PyCrypto ou M2Crypto.
Eu descartado ezPyCrypto porque ele só suporta MD5 para assinar e Keyczar porque não é maduro o suficiente.

Então, eu li que RSA é vulnerável a vários ataques se o texto para-ser-criptografado (ou hash de assinatura) não é propriamente acolchoada.
O que significa?
Nem PyCrypto ou M2Crypto mencionou nada sobre isso e google não encontrou nada relevante. Será que essas bibliotecas adicionar automaticamente o paddign? Como se pode dizer?

Se a resposta à pergunta acima é não, o que é considerado o preenchimento correto?

Foi útil?

Solução

PyCrypto não adiciona o preenchimento mencionado.
M2Crypto vez faz.

M2Crypto é construído em cima do OpenSSL, suportes mostlyl tudo que você precisa, ainda é mantido e atualizado enquanto as questões PyCrypto vários avisos deprecation.

Outras dicas

Uma das razões para aleatória preenchimento pode ser de que "a partir do livro" RSA com baixa expoente (digamos 3) pode ser quebrada realmente simplesmente se exatamente a mesma mensagem é enviada para várias pessoas ( três).

Você teria, portanto, melhor se certificar de que você não enviar exatamente a mesma mensagem através da aplicação de algum tipo de transformação aleatório (ainda inversible) à sua mensagem antes.

Talvez seja isso que coisa estofamento é sobre!?

EDIT: Eu olhei no wikipedia. o que eu estava falando é chamado de ataque de Hastad.

Eu recentemente lutou através descobrir criptografia ... este artigo ajudou muito em explicar o que foi apartamento por padding:

http://www.di-mgt.com.au/cryptopad.html

(método de um parecia o mais fácil para mim para implementar)

eu posso compartilhar alguns trechos de código, se necessário.

P.S. Este arquivo veio a calhar também em ajudar a criar chaves seguras (google para ele) PBKDF2.py - PKCS # 5 v2.0 senha baseada em Key Derivação

Não inteiramente certo, mas se você adicionar um componente aleatório para sua mensagem RSA impede ataques de dicionário

Em primeiro lugar, você deve estar usando AES, uma vez que é o padrão de-facto.

AES criptografa bytes no bloco-tamanhos de 16 bytes. Obviamente esta multa funciona para qualquer pedaço grande de dados. Mas o último pedaço de que, obviamente, talvez menor do que 16 bytes.

Para o último bloco, você precisa preenchê-lo, e estofamento típico é feito através PCKS7, que é bem simples.

Vamos dizer que você tem uma string:. "Sorvete", como o último bloco

"icecream" é de 8 bytes, então você precisa mais 8 bytes para fazer um bloco

Então, o que você faz é simplesmente anexar o personagem 8 (não '8') 8 vezes

"icecream\x08\x08\x08\x08\x08\x08\x08\x08"

seria a sua cadeia resultante. Agora vá em frente um criptografar os dados.

Lembre-se que ao descriptografar, você precisa pegar este último bloco, e tira o preenchimento antes de usá-lo.

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