Sei que Criptografia garante, por um determinado período de tempo, a confidencialidade dos dados - até alguém teoricamente conseguir quebrar a chave.
Mas ela garante a integridade dos dados?
Se eu tiver como pegar o dado cifrado,alterar algo (mesmo que eu nem saiba o que eu alterei de fato) e conseguir enviar para o destinatário, eu não quebrei a integridade dos dados? Mesmo com criptografia?
criptografia não garante integridade, garante a “privacidade”.
o que garante é vc ter algum mecanismo que cheque a integridade, como um hash sha1/md5 (da mensagem) criptografado. é o principio de uma assinatura digital, por exemplo. se alguem conseguir quebrar a assinatura… bem… ai babau.
Olá peczenyj, acho que não se quebra uma assinatura já que é uma operação sem volta - afinal, ela só gera um valor de um mesmo tamanho independente do valor entrado.
Eu penso que, se for um sistema que recebe arquivos cifrados e descritografa e guarda em um lugar no disco, sem intervenção humana? Chave errada gera dados decifrados diferentes do original, não gera erro no processo de descriptografia; logo, teríamos arquivos inválidos sendo decifrados do outro lado, e o sistema de decifragem nem saberia disso.
Por “integridade dos dados” entende-se: os dados são transmitidos do remetente para o destinatário sem perdas, modificações ou adições.
Para garantir a integridade dos dados, costuma-se usar recursos como checksums (por exemplo, CRC-32) ou hashes criptográficos (por exemplo, MD5 ou SHA-1), ou então modos especiais de criptografia.
xdraculax:
Vc disse:“Teoricamente, não tem como você gerar o mesmo hash,
mesmo para um conjunto de dados iguais em momentos distintos.” Se fosse assim hash não teria nenhuma utilidade …
Na verdade é exatamente o contrário … o hash tem que ser sempre o mesmo para um determinado dado. Por isso que o hash garante integridade.
Por exemplo … quem vai enviar calcula o hash do que vai ser enviado e manda as duas coisas: os dados e o hash. Para garantir a integridade, quem recebe o dado calcula novamente o hash(com o mesmo algoritmo de hash) e verifica se é igual ao hash que foi recebido. Se foi é porque o dado não sofreu alteração.
dsjbv, desculpe, acho que me expressei mal, você tem razão.
Mas quando eu disse não tem como gerar o mesmo hash, eu me referia a situação de, por exemplo, eu gerar o hash de um dado, e em outro momento outra pessoa gerar um hash igual com dados diferentes. Repetir o hash. Teoricamente, isso não deve acontecer.
Mas está errado mesmo o que esrevi, vou até editar.
Dados distintos podem sim gerar o mesmo hash.
O que é muito (mas muito mesmo) raro de acontecer, e é isso que as novas técnicas de hash tentam evitar, é dados relativamente próximos (semanticamente falando) gerarem chaves iguais.
Qualquer algoritmo de hash está sujeito a isso, já que não existe uma base global, aonde o algoritmo saiba que determinada chave já foi usada e a descarte.
Poder até podem … mas não devem … pelo menos quando usados para integridade … na minha opinião a chance de um dado ser alterado e o hash permacer o mesmo de antes é nula …