Ha importanza quale chiave è considerata privata e quale pubblica?

13

Matematicamente, c'è una differenza quale set di caratteri è private_key e quale è public_key?

@EDIT Al momento di chiedere che stavo pensando su RSA, non crittografia asimmetrica in generale.

    
posta so_user 05.12.2014 - 03:16
fonte

2 risposte

13

Non dovrebbe necessariamente avere importanza ... In RSA puoi usare sia d (privato) che e (pubblico) per crittografare e anche decifrare. Questo non funziona con tutti i cryptosystems. Ad esempio DSA non lo consentirà.

Quindi tecnicamente non sarebbe importante se tu scambiassi i valori di e ed d.

... ma
Prestazioni:
Ma in realtà di solito vuoi la verifica (usando e) per essere veloce. E poi accetta che la firma (usando d) sia più lenta.

Solitamente l'esponente pubblico viene scelto per rappresentare una rappresentazione binaria semplice e piccola. Il numero 65537 (0b10000000000000001) viene regolarmente selezionato come esponente pubblico. E un numero molto più grande (circa della stessa dimensione del modulo, quindi circa 2048 bit al giorno d'oggi) è il numero della chiave privata.

Vedi anche: link

Sicurezza
E: non puoi davvero capovolgerlo (grande esponente pubblico, piccolo esponente privato), perché ci sono attacchi pubblicati su piccoli esponenti privati. ( Wiki: attacco di Wiener )

Vedi anche: link

    
risposta data 05.12.2014 - 08:10
fonte
5

In generale, sì. Con molti criptosistemi asimmetrici, una delle chiavi può essere derivata dall'altra, quindi non c'è scelta su quale mantenere privata.

Molti algoritmi crittografici asimmetrici si basano sulla difficoltà di calcolare logaritmi discreti . La chiave privata è un intero k e la chiave pubblica è il valore g k per alcuni parametri pubblici g in uno spazio in cui il calcolo del logaritmo discreto è impossibile con grandi numeri, ma l'esponenziazione è ragionevolmente veloce. Questo è il caso per esempio con i numeri modulo un grande numero p : calcolando g k mod p da g e k è semplice, ma risolvendo l'equazione g k mod p = y per k non è fattibile quando p viene scelto appropriatamente (un primo con proprietà addizionali che dipendono sull'algoritmo). Quindi, per dimensioni accettabili della chiave, è facile calcolare la chiave pubblica dalla chiave privata, ma non esiste un metodo noto per calcolare la chiave privata dalla chiave pubblica in tempo reale. Due algoritmi popolari basati sulla difficoltà del logaritmo discreto sono DSA e Diffie-Hellman (incluse le loro varianti di curva ellittica - DSA e DH si basano sulla difficoltà di calcolare i logaritmi in ℤ / pℤ, ECDSA e ECDH in curve ellittiche su finito campi).

Esiste una famiglia popolare di criptosistemi in cui la chiave privata e la chiave pubblica vivono nello stesso spazio matematico e le operazioni li trattano in modo identico: RSA . Al centro di RSA c'è l'operazione M M k mod n , in cui k è la chiave privata d per la decrittazione e la firma e la chiave pubblica e per la crittografia e la verifica della firma ( n è un parametro pubblico, e la sicurezza di RSA richiede il prelievo di n diversi per ogni coppia di chiavi). Calcolare d dato solo e e n non è fattibile se i valori sono scelti correttamente. È possibile generare una coppia di chiavi RSA in cui i due esponenti sono intercambiabili. Tuttavia, questo è raramente fatto perché c'è un vantaggio in termini di prestazioni nella scelta di un piccolo valore per k . Pertanto, in pratica, RSA utilizza un piccolo valore per la chiave pubblica e e il valore corrispondente per la chiave privata d . Il piccolo valore deve essere la chiave pubblica, perché se la chiave privata era piccola, potrebbe essere facilmente trovata dalla forza bruta ( d non può essere calcolata da e , ma è facile convalidare se un'ipotesi di d corrisponde ai valori noti per e e n , quindi la sicurezza si basa sull'avere uno spazio di ricerca incredibilmente grande per d ).

    
risposta data 05.12.2014 - 14:40
fonte

Leggi altre domande sui tag