2010-01-05 25 views
6

Per la mia applicazione iPhone, Apple vuole sapere se la mia password di crittografia (md5) è maggiore di simmetrica a 64 bit o maggiore di simmetrica a 1024 bit. Non sono stato in grado di trovarlo online, quindi mi chiedo se qualcuno conosce la risposta. Inoltre, questa è considerata una tecnologia di crittografia appropriata per le password, o dovrei usare qualcosa di diverso?La crittografia Md5 è simmetrica o asimmetrica?

Grazie per qualsiasi aiuto!

risposta

32

MD5 è una funzione di hashing, quindi per definizione non è reversibile. Questo non è il caso della crittografia (simmetrica o asimmetrica), che deve essere reversibile per essere utile.

Per essere più precisi, gli hash sono funzioni unidirezionali, in quanto un numero infinito di input può essere mappato su un singolo output, quindi è impossibile ottenere l'input esatto, con certezza, che ha prodotto un dato output.

Tuttavia, potrebbe essere possibile trovare un input diverso che esegue l'hash sullo stesso output. Questa è chiamata una collisione .

Generalmente, le password di hashing invece di memorizzare il testo normale (anche crittografato) sono una buona idea. (Ancora meglio se si utilizza un sale) Tuttavia, MD5 ha noti punti deboli (e grandi raccolte di tabelle arcobaleno che aiutano a trovare collisioni), quindi sarebbe una buona idea passare a qualcosa come SHA-1 o uno degli SHA-2 famiglia di hash.

Tuttavia, per rispondere alla domanda originale, non c'è davvero alcun modo per confrontare MD5 o qualsiasi hash con qualsiasi tipo di crittografia; non hanno equivalenti perché è come paragonare mele e arance.

+3

Ciao Peter: Ciò significa che la mia app non "contiene crittografia"? – PF1

+1

In senso stretto, no. L'uso di MD5 o di qualsiasi altra funzione di hash in modo che la password effettiva non venga memorizzata viene a volte definita "crittografia unidirezionale", sebbene l'uso del termine crittografia sia un termine improprio: (Link obbligatorio di Wikipedia: http: //en.wikipedia .org/wiki/One-way_encryption) – Peter

+0

So che è tardi, ma basta aggiungere ... Invece di usare SHA-1 o SHA-2, potresti anche provare a salare un hash o anche usare sia MD5 che SHA -1. –

7

md5 non è una crittografia simmetrica o asimmetrica perché non è reversibile né simmetricamente né asimmetricamente. È un algoritmo Message Digest (secure hash).

2

È NON crittografia affatto.

5

Non è crittografia, è un digest. Se non lo hai salato, non è particolarmente sicuro, ma ti stanno ponendo la domanda sbagliata.

Che cosa stai facendo esattamente con MD5 e password? Ci sono modi standard di fare le cose qui, ed è sempre meglio usarne uno, ma senza sapere cosa vuoi fare è difficile indicarti uno standard pertinente.

0

Penso che MD5 sia usato per una maggiore sicurezza .... se parliamo di un algoritmo di crittografia o decrittografia, sono solo per convertire qualsiasi testo normale in testo cifrato ... ma d'altra parte MD5 fornisce un'unicità su quel testo in chiaro che verrebbe inviato da qualsiasi fonte (Alice) ... quindi possiamo dire che per una maggiore sicurezza o per fornire una busta su testo normale dovrebbe essere usato MD5 prima di usare qualsiasi algoritmo di crittografia (simmetrico o asimmetrico).

0

Come gli altri numerosi ragazzi qui sopra citati, MD5 non è un algoritmo simmetrico o asimmetrico.

Invece si tratta di un ramo diverso in crittografia tutti insieme. È uno dei più piccoli algoritmi di hash disponibili nel framework .Net. A soli 16 byte per le sue chiavi, che dovrebbero essere a 128 bit. Qualcosa con cui impari il pane e il burro.

Quindi sì è maggiore di 64 bit che ha solo 8 byte di dimensione.

La dimensione massima della chiave utilizzata dal comune simm 'enc' è 256 bit (Rijndael Managed).

Se si desidera esaminare i tasti più grandi di quello, è possibile utilizzare il codice di errore 'enc' di RC2 che supporta le dimensioni delle chiavi variabili. Qualcosa con cui puoi sperimentare?

Se si desidera un valore superiore a 1024 bit, è necessario esaminare Asymm 'Enc' Algs come la classe RSACryptoServiceProvider che supporta le dimensioni della chiave fino a 16 KB in Bit, penso?

Se si desidera utilizzare password, è necessario utilizzare Keying Hashing Algs, come qualsiasi cosa di HMAC ', devono essere Keying Hashing Algorithms o MacTripleDes. Questi utilizzano tutti i codici segreti per crittografare l'hash generato dai dati forniti. Le chiavi vengono create utilizzando password e valori salt attraverso la classe RFC2898DerivesBytes. < - Non dimenticare che RC2, Rijndael, AES, DES ed ecc. Possono essere configurati per utilizzare le password per ottenere le chiavi segrete. Nel caso stiate pensando che la frase di apertura di questo paragrafo sia un po 'fuorviante. Così ho aggiunto questo per essere sicuro nel caso in cui l'hashing non è quello che ti serve del tutto.

* RICORDA CHE CI SONO GERARCHIE DI EREDITÀ UNICHE NELLA .net's Cryptography NameSpace. Quindi MD5 è la classe base astratta di tutte le classi derivate MD5 da cui derivare. .Net fornisce una classe derivata chiamata classe MD5CryptoServiceProvider. Che è essenzialmente una classe wrapper gestita che effettua chiamate a API di Crypto-Libraries non gestite da Windows. MD5 è conosciuto nei libri di testo ufficiali della MS sotto il termine omonimo come algoritmo di hashing non codificato. *

Ci sono molte opzioni disponibili.

:) Buona visione!

2

Apple pone la domanda sull'utilizzo di MD5 per le password di hashing per verificare se è necessaria l'autorizzazione per l'esportazione dal Dipartimento del Commercio/Ufficio di Industria e Sicurezza.

La risposta a tale scopo è che l'utilizzo MD5 protezione password non è controllata così forte crittografia (come algoritmi simmetrici superiori a 64 bit) in accordo con la nota tecnica 15 CFR parte 774, Supplemento 1, ECCN 5A002, paragrafo a.1, che descrive l'uso della crittografia per la protezione con password. Tuttavia, può ancora essere controllato con ECCN 5A992.

http://www.bis.doc.gov/encryption/ccl5pt2.pdf

Le altre risposte non sono utili nel contesto del motivo per cui la domanda è stata posta.

Inoltre, è possibile chiamare il Dipartimento del Commercio/Ufficio per l'industria e la sicurezza al numero 202-482-0707 e chiedere informazioni sulla propria applicazione specifica.

1

La funzione hash molte volte è un modo per comprimere i dati. Sono funzioni hash unidirezionali, il che significa che sono difficili da invertire (con la funzione hash = digest di un messaggio è difficile trovare il messaggio originale che viene convertito nello specifico valore hash). D'altra parte, sono molto facili da implementare perché non è necessario alcun tipo di chiave.

Non è un algoritmo simmetrico o asimmetrico. Questo tipo di algoritmi viene utilizzato per crittografare e non per i dati hash. La crittografia viene utilizzata per motivi di riservatezza, per proteggere i dati dagli autori di attacchi laddove tentano di leggere quelli di qualcuno.

Gli algoritmi di crittografia o crittografia necessitano di chiavi per eseguire le loro attività in contrasto con gli hash dove non è necessario alcun tipo di chiave. Gli hash non vengono utilizzati per motivi di riservatezza ma per ragioni di integrità anche se non hanno abbastanza forza.MD5 è un tipo di funzione hash in cui esistono molti altri perché MD5 non è abbastanza potente

Problemi correlati