quando usare la codifica per l'hashing?

0

Se la codifica viene utilizzata per l'integrità, qualcuno può manometterla attraverso la rete perché si basa su uno schema pubblicamente noto.

Quando usi la codifica e quando usi l'hashing per preservare l'integrità?

La mia comprensione è che la codifica viene utilizzata per preservare l'integrità tra sistemi eterogenei quando la riservatezza non è importante. Perché le persone usano ancora basi64 (autenticazione di base) per inviare nome utente / password anche se le informazioni di autenticazione sono riservate?

    
posta user1493834 15.04.2016 - 09:27
fonte

3 risposte

1

Raramente usi codifica per l'integrità 1 . La codifica viene utilizzata per trasformare alcuni dati in un altro formato, in genere perché è più adatto all'altro sistema. Ad esempio, base64 viene utilizzato perché alcuni sistemi potrebbero non reagire molto bene ad alcuni dati binari. La codifica potrebbe aiutarti solo contro errori di trasmissione . (Ad esempio, se i dati base64 ricevuti contengono un carattere non valido, si sa che qualcosa è andato storto.)

Funzioni hash possibile essere utilizzato per l'integrità per garantire che i dati non siano stati manomessi da un utente malintenzionato . codice di autenticazione dei messaggi con chiave cancellata (HMAC) usa una funzione di hash, insieme a un tasto (conosciuto dal mittente e dal destinatario) per garantire che i dati siano stati inviati dalla persona giusta, eseguendo così l'autenticazione.

Come puoi vedere, la codifica offre semplicemente l'integrità e non ti protegge da un utente malintenzionato. Le funzioni di hash, se utilizzate correttamente, possono proteggere l'integrità dei dati trasmessi sia dagli errori di trasmissione che dagli aggressori.

Nel caso di fornire un nome utente e una password a un sito web, autenticazione di base codificherà il tuo nome utente e password con base64. Questo non fornisce alcuna sicurezza, perché chiunque può decrittografarlo. Ad esempio, possiamo facilmente recuperare il nome utente / password utilizzati nella pagina di Wikipedia sull'autenticazione di base:

# Encoding the username and password
$ echo -n "Aladdin:OpenSesame" | base64 
QWxhZGRpbjpPcGVuU2VzYW1l

# Retrieving the encoded username and password
$ echo -n "QWxhZGRpbjpPcGVuU2VzYW1l" | base64 -D
Aladdin:OpenSesame

Il nome utente / password non sono codificati per ragioni di sicurezza, ma per sfuggire al carattere speciale.

1 Vedi rilevamento degli errori e correzione (Wikipedia)

    
risposta data 15.04.2016 - 09:48
fonte
1

La codifica non è un mezzo per garantire l'integrità. La codifica è qui per la rappresentazione. Codifichi una stringa in base64 perché è più facile / più sicuro usare i simboli nell'ambiente internet, ad es. URL in cui alcuni caratteri sono difficili da trasmettere e interpretare correttamente in seguito. UTF-8 è usato perché abbiamo bisogno di un ampio spazio per rappresentare caratteri di lingue straniere e altri nuovi simboli.

L'hashing di alcuni contenuti è un mezzo per verificare l'integrità. Se il contenuto C ha D = H(C) , puoi trasmettere C e D verificare che il messaggio ricevuto C' verifichi D' = H(C') = D = H(C) . In caso contrario, il messaggio ha perso l'integrità.

    
risposta data 15.04.2016 - 09:39
fonte
1

Prima di tutto, sono tre concetti diversi. E lasciami incollare questo blocco dal sito che hai collegato:

Encoding is designed to protect the integrity of data as it crosses networks and systems, i.e. to keep its original message upon arriving, and it isn’t primarily a security function. It is easily reversible because the system for encoding is almost necessarily and by definition in wide use. Encryption is designed purely for confidentiality and is reversible only if you have the appropriate key/keys. With hashing the operation is one-way (non-reversible), and the output is of a fixed length that is usually much smaller than the input. (source: danielmiessler.com)

Quindi lasciatemi introdurre alcuni esempi, poiché potrebbero confondervi

encoding : Girando la corda http://security.stackexchange.com/questions in http%3A%2F%2Fsecurity.stackexchange.com%2Fquestions è la codifica URL. Non ha nulla a che fare con la sicurezza, facilmente reversibile e aiuta il trasporto.

CRITTOGRAFIA : La stringa security.stackexchange.com con la chiave di crittografia example e AES-256 diventa g4jBsloWrMkqNJvPOkKvgOv9qQvLWcDgFqAih4LrQLs= . Questa è una forma sicura di dati, a condizione che example sia abbastanza difficile da indovinare. (Nella vita reale dovrebbe essere più complicato)

hashing : Le funzioni di hash sono funzioni a senso unico, troncano l'output su un certo numero di bit. Quindi non c'è modo di invertire i valori hash, il loro scopo è la verifica. È possibile recuperare il valore grezzo solo dalle tabelle arcobaleno o tramite bruteforcing manuale. Un esempio di hash security.stackexchange.com con l'algoritmo md5 è a7711987f4696a33c69ea8e48dc616d5 .

    
risposta data 15.04.2016 - 10:40
fonte

Leggi altre domande sui tag