Pergunta

O que é a diferença entre Ofuscação, hash e criptografia?

Aqui está o meu entendimento:

  • hash é um algoritmo one-way; não pode ser revertida
  • Obfuscation é semelhante ao de criptografia, mas não exige qualquer "segredo" para entender (ROT13 é um exemplo)
  • A criptografia é reversível, mas um "segredo" é necessário para fazê-lo
Foi útil?

Solução

Hashing é uma técnica de criação de teclas semi-exclusivo com base em pedaços maiores de dados. Em um dado de hash você acabará por ter "colisões" (por exemplo, duas peças diferentes de dados de cálculo para o mesmo valor de hash) e quando o fizer, você normalmente cria um tamanho maior chave de hash.

ofuscação geralmente envolve a tentar remover votos pistas (ou seja, nomes de função / variável significativas), removendo espaços em branco para fazer coisas difíceis de ler, e geralmente fazendo as coisas de maneiras complicadas para fazer seguir o que está acontecendo difícil. Ele fornece nenhum nível grave de segurança, como criptografia de "verdadeiro" seria.

A criptografia pode seguir vários modelos, um dos quais é o método "segredo", chamado de criptografia de chave privada, onde ambas as partes têm uma chave secreta. criptografia de chave pública utiliza uma tecla de forma compartilhada para criptografar e uma chave destinatário particular para descriptografar. Com a chave pública, somente as necessidades do destinatário ter o segredo.

Outras dicas

Isso é uma explicação de alto nível. Vou tentar refiná-los:

Hashing - em um mundo perfeito, é um oráculo aleatório. Para a mesma entrada X, você sempre receber a mesma saída Y, que é de forma alguma relacionado com X. Isso é matematicamente impossível (ou pelo menos não comprovada para ser possível). O mais próximo que temos é alçapão funções. H (X) = Y para com H-1 (Y) = X é tão difícil de fazer você é melhor fora de tentar força bruta a Z tal que H (Z) = Y

Obfuscation (minha opinião) - Qualquer função f, tal que f (a) = b, onde você depende de f ser secreta. F pode ser uma função hash, mas a parte "ofuscação" implica segurança pela obscuridade. Se você nunca viu antes ROT13, seria ofuscação

Criptografia - Ek (X) = Y, Dl (Y) = X em que E é conhecido por todos. K e L são teclas, eles podem ser o mesmo (na simétrica, que são o mesmo). Y é o texto cifrado, o símbolo X representa o texto simples.

A de hash é um uma maneira algoritmo usado para comparar uma entrada com uma referência sem comprometer a referência.

É comumente usado em logins para comparar senhas e você também pode encontrá-lo em seu reciepe Se você comprar usando de cartão de crédito. Lá você vai encontrar o seu crédito-cartão-número com alguns números escondidos, desta forma você pode provar com alta propability que o seu cartão foi usado para comprar o material enquanto alguém pesquisar através de seu lixo não será capaz para encontrar o número do seu cartão.

Um hash muito ingénuo e simples é "As 3 primeiras letras de uma string" . Isso significa que o hash "abcdefg" será "abc". Esta função pode, obviamente, não ser revertida, que é a finalidade inteira de um hash. No entanto, nota que "abcxyz" terá exatamente o mesmo hash, isso é chamado de colisão . Então, novamente: a de hash só prova com uma certa propability que os dois valores comparados são os mesmos

.

Outra de hash muito ingénuo e simples é o 5-módulo de um número, aqui você vai ver que 6,11,16 etc .. todos terão o mesmo hash:. 1

Maconha algoritmos modernos são projetados para manter o número de colisões como baixo possível, mas eles nunca pode ser completamente evitada. A regra de ouro é: quanto mais tempo a sua hash é, menos colisões que tem

.

ofuscação na criptografia é que codifica os dados de entrada <> forte antes que é hash ou encriptada.

Isso faz ataques de força bruta menos viável, uma vez que fica mais difícil para determinar o cleartext correta.

Isto é como eu sempre olhei para ele.

  • Hashing é derivar um valor de outro, usando um algoritmo set. Dependendo do algo usado, isso pode ser uma maneira, não pode ser.

  • ofuscando está fazendo algo mais difícil de ler por símbolo substituição.

  • A criptografia é como hashing, exceto o valor é dependente de outro valor que você fornece o algoritmo.

Isso não é uma descrição ruim de alto nível. Aqui estão algumas considerações adicionais:

hashing reduz tipicamente uma grande quantidade de dados para um tamanho muito menor. Isso é útil para verificar o conteúdo de um arquivo sem ter que ter duas cópias para comparar, por exemplo.

Criptografia envolve armazenar alguns dados secretos, ea segurança dos dados segredo depende da manutenção de um seguro, separado "chave" dos maus.

Obfuscation está escondendo alguma informação sem uma chave separada (ou com uma chave fixa). Neste caso, mantendo o método um segredo é como você manter o cofre de dados.

A partir daí, você pode ver como um algoritmo de hash pode ser útil para assinaturas digitais e validação de conteúdo, como a criptografia é usada para proteger seus arquivos e conexões de rede, e por ofuscação é usado para gerenciamento de direitos digitais.

A breve resposta:

Hashing - a criação de um campo de verificação em alguns dados (para detectar quando os dados são modificados). Esta é uma função de sentido único e os dados originais não pode ser derivada a partir do hash. padrões típicos para isso são SHA-1, SHA256 etc.

Obfuscation - modificar seus dados / código para confundir qualquer outra pessoa (sem proteção real). Isto pode ou não pode perder alguns dos dados originais. Não existem padrões reais para isso.

Encryption - usando uma chave para transformar os dados para que apenas aqueles com a chave correta pode compreendê-lo. Os dados criptografados pode ser descriptografado para obter os dados originais. padrões típicos são DES, TDES, AES, RSA etc.

Tudo bem, exceto ofuscamento não é realmente semelhante ao de criptografia -., Por vezes, nem sequer envolvem cifras tão simples como ROT13

  • Hashing é unidirecional tarefa de criar um valor de outro. O algoritmo deve tentar criar um valor que é tão curto e tão original quanto possível.

  • ofuscação está fazendo algo ilegível sem alterar a semântica. Ela envolve a transformação de valor, removendo espaços em branco, etc. Algumas formas de ofuscação também pode ser de sentido único, por isso é impossível obter o valor inicial

  • criptografia é bidirecional, e há sempre alguma descriptografia trabalhar o contrário.

Então, sim, você está na maior parte correto.

Obfuscation é escondendo ou fazendo algo mais difícil de entender.

Hashing toma uma entrada, executa-lo através de uma função de, e gera uma saída que pode ser uma referência para a entrada. Não é necessariamente única, uma função pode gerar a mesma saída para diferentes entradas.

Encryption transforma a entrada em uma saída de uma maneira única. Existe uma correlação um-para-um para que não haja perda potencial de dados ou de confusão -. A saída sempre pode ser transformado de volta para a entrada sem ambigüidade

Obfuscation está apenas fazendo algo mais difícil de entender por intruducing técnicas para confundir alguém. Código obfuscators costumo fazer isso renomeando coisas para remover qualquer coisa significativa a partir de nomes de variáveis ??ou método. Não é semelhante ao de criptografia em que nada tem de ser decifrada a ser utilizado.

Normalmente, a diferença entre hashing e criptografia é que hashing geralmente apenas emprega uma fórmula para traduzir os dados para outra forma em que a criptografia usa uma fórmula exigindo chave (s) para cifrar / decifrar. Exemplos seriam de base 64 que codifica ser um algoritmo de hash MD5 onde ser um algoritmo de encriptação. Qualquer um pode unhash base64 codificado de dados, mas você não pode md5 unencrypt dados criptografados sem a chave.

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