Domanda

Qual è la differenza tra Obfuscation, Hashing e Encryption?

Ecco la mia comprensione:

  • L'hash è un algoritmo a senso unico; non può essere invertito
  • L'offuscamento è simile alla crittografia ma non richiede alcun "segreto" per capire (ROT13 è un esempio)
  • La crittografia è reversibile ma un "segreto" è necessario per farlo
È stato utile?

Soluzione

L'hashing è una tecnica per creare chiavi semi-uniche basate su grandi quantità di dati. In un determinato hash alla fine avrai "collisioni" (ad es. due diversi pezzi di dati calcolando lo stesso valore hash) e, in tal caso, in genere crei una dimensione della chiave hash più grande.

l'offuscamento generalmente implica il tentativo di rimuovere indizi utili (cioè nomi di variabili / funzioni significative), rimuovere spazi bianchi per rendere le cose difficili da leggere e, in generale, fare le cose in modi contorti per rendere seguire ciò che sta accadendo difficile. Non fornisce alcun livello di sicurezza serio come "vero" crittografia sarebbe.

La crittografia può seguire diversi modelli, uno dei quali è il "segreto" metodo, chiamato crittografia a chiave privata in cui entrambe le parti dispongono di una chiave segreta. La crittografia della chiave pubblica utilizza una chiave unidirezionale condivisa per crittografare e una chiave del destinatario privato per decrittografare. Con la chiave pubblica, solo il destinatario deve avere il segreto.

Altri suggerimenti

Questa è una spiegazione di alto livello. Proverò a perfezionarli:

Hashing: in un mondo perfetto, è un oracolo casuale. Per lo stesso input X, ricevi sempre lo stesso output Y, che in NO WAY è correlato a X. Ciò è matematicamente impossibile (o almeno non provato per essere possibile). Il più vicino che otteniamo sono le funzioni della botola. H (X) = Y per con H-1 (Y) = X è così difficile da fare, stai meglio cercando di forzare una Z in modo tale che H (Z) = Y

Obfuscation (la mia opinione) - Qualsiasi funzione f, tale che f (a) = b dove ti affidi che f è segreto. F può essere una funzione di hash, ma "offuscamento" parte implica sicurezza attraverso l'oscurità. Se non avessi mai visto ROT13 prima d'ora, sarebbe offuscato

Crittografia - Ek (X) = Y, Dl (Y) = X dove E è noto a tutti. k e l sono chiavi, possono essere uguali (in simmetrica, sono uguali). Y è il testo cifrato, X è il testo in chiaro.

Un hash è un algoritmo unidirezionale utilizzato per confrontare un input con un riferimento senza comprometterlo.

È comunemente usato negli accessi per confrontare le password e puoi anche trovarlo sul tuo reciepe se acquisti utilizzando la carta di credito. Lì troverai il numero della tua carta di credito con alcuni numeri nascosti, in questo modo puoi dimostrare con alta propensione che la tua carta è stata utilizzata per acquistare le cose mentre qualcuno che cerca nella tua spazzatura non sarà in grado per trovare il numero della tua carta.

Un hash molto ingenuo e semplice è " Le prime 3 lettere di una stringa " . Ciò significa che l'hash di "abcdefg" sarà "abc". Questa funzione non può ovviamente essere invertita, il che è l'intero scopo di un hash. Tuttavia, tieni presente che "abcxyz" avrà esattamente lo stesso hash, questo si chiama collisione . Ancora una volta: un hash dimostra solo con una certa propensione che i due valori confrontati sono gli stessi .

Un altro hash molto ingenuo e semplice è il modulo 5 di un numero, qui vedrai che 6,11,16 ecc. avranno tutti lo stesso hash: 1.

I moderni algoritmi hash sono progettati per mantenere il numero di collisioni il più basso possibile ma non possono mai essere completamente evitati. Una regola empirica è: più lungo è il tuo hash, meno collisioni ha.

Offuscamento nella crittografia sta codificando i dati di input prima di essere hash o crittografati.

Ciò rende meno fattibili gli attacchi di forza bruta, poiché diventa più difficile determinare il testo in chiaro corretto.

Ecco come l'ho sempre guardato.

  • L'hashing sta derivando un valore da un altro, usando un algoritmo set. A seconda dell'algo utilizzato, questo potrebbe essere un modo, potrebbe non esserlo.

  • L'offuscamento sta facendo qualcosa più difficile da leggere per simbolo la sostituzione.

  • La crittografia è come l'hashing, tranne per il fatto che il valore dipende da un altro valore fornito dall'algoritmo.

Non è una brutta descrizione di alto livello. Ecco alcune considerazioni aggiuntive:

L'hashing in genere riduce una grande quantità di dati a dimensioni molto più ridotte. Ciò è utile per verificare il contenuto di un file senza dover confrontare due copie, ad esempio.

La crittografia comporta l'archiviazione di alcuni dati segreti e la sicurezza dei dati segreti dipende dal mantenere una "chiave" separata al sicuro dai cattivi.

L'offuscamento nasconde alcune informazioni senza una chiave separata (o con una chiave fissa). In questo caso, mantenere segreto il metodo è come proteggere i dati.

Da questo, puoi vedere come un algoritmo hash potrebbe essere utile per le firme digitali e la convalida del contenuto, come viene utilizzata la crittografia per proteggere i tuoi file e le connessioni di rete e perché l'offuscamento viene utilizzato per la gestione dei diritti digitali.

Una breve risposta:

Hashing: creazione di un campo di controllo su alcuni dati (per rilevare quando i dati vengono modificati). Questa è una funzione unidirezionale e i dati originali non possono essere derivati ??dall'hash. Standard tipici per questo sono SHA-1, SHA256 ecc.

Offuscamento: modifica i tuoi dati / codice per confondere chiunque altro (nessuna protezione reale). Ciò può o meno perdere alcuni dei dati originali. Non ci sono standard reali per questo.

Crittografia: utilizzo di una chiave per trasformare i dati in modo che solo quelli con la chiave corretta possano comprenderli. I dati crittografati possono essere decifrati per ottenere i dati originali. Gli standard tipici sono DES, TDES, AES, RSA ecc.

Tutto bene, tranne l'offuscamento, non è molto simile alla crittografia - a volte non implica nemmeno cifre semplici come ROT13.

  • L'hashing è un'attività a senso unico per la creazione di un valore da un altro. L'algoritmo dovrebbe cercare di creare un valore il più breve e il più unico possibile.

  • l'offuscamento sta rendendo qualcosa illeggibile senza cambiare la semantica. Implica la trasformazione del valore, la rimozione di spazi bianchi, ecc. Alcune forme di offuscamento possono anche essere a senso unico, quindi è impossibile ottenere il valore iniziale

  • La crittografia
  • è bidirezionale e c'è sempre qualche decodifica che funziona al contrario.

Quindi, sì, hai quasi sempre ragione.

L'offuscamento si nasconde o rende qualcosa di più difficile da capire.

L'hashing accetta un input, lo esegue attraverso una funzione e genera un output che può essere un riferimento all'input. Non è necessariamente unico, una funzione può generare lo stesso output per input diversi.

La crittografia trasforma l'input in un output in un modo unico. Esiste una correlazione uno a uno, quindi non vi è alcuna potenziale perdita di dati o confusione: l'output può sempre essere trasformato in input senza ambiguità.

L'offuscamento sta semplicemente rendendo qualcosa di più difficile da comprendere mediante tecniche di intrusione per confondere qualcuno. Gli offuscatori di codice di solito lo fanno rinominando le cose per rimuovere qualsiasi cosa significativa dai nomi di variabili o metodi. Non è simile alla crittografia in quanto non è necessario decrittografare nulla per essere utilizzato.

In genere, la differenza tra hashing e crittografia è che generalmente l'hash impiega una formula per tradurre i dati in un'altra forma in cui la crittografia utilizza una formula che richiede chiavi per crittografare / decrittografare. Esempi potrebbero essere la codifica di base 64 che è un algoritmo hash in cui md5 è un algoritmo di crittografia. Chiunque può cancellare i dati codificati in base64, ma non è possibile decodificare i dati crittografati md5 senza una chiave.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top