Quali sono le migliori pratiche per la sicurezza basata su RSA?

3

Sto costruendo una piattaforma con una strong sicurezza. La sicurezza si basa sulla crittografia dei dati con crittografia AES-256. Tuttavia, il sistema deve "condividere" queste chiavi tra gli utenti e devono essere trasferiti in modo crittografato. Per fare questo, sto usando un algoritmo RSA. La domanda è: come posso generare una coppia sicura di chiavi RSA? Ho anche letto che p, q, φ (n) devono ovviamente essere tenuti segreti. A proposito, quando invio una chiave pubblica, devo anche inviare il modulo n. Dato che la funzione totitiva è pubblicamente conosciuta, tutti potrebbero calcolare φ (n), giusto? Quindi, come posso mantenere il segreto φ (n)?

    
posta user18215 30.12.2012 - 20:33
fonte

1 risposta

3

L'elaborazione φ (n) di n equivale a factoring n :

  • Se conosci i fattori p e q allora φ (n) = (p-1) (q-1) .
  • Poiché φ (n) = n - (p + q) + 1 , conoscere n e φ (n) significa che tu conosci pq e p + q . Succede che p e q sono le due soluzioni dell'equazione quadratica X 2 - (p + q) X + pq = 0 ; trovare le radici di un'equazione quadratica (nei numeri reali) è facile .

Pertanto, non è una battuta vuota che chiamare la chiave pubblica "pubblica": puoi renderla pubblica senza dare la chiave privata.

Generare una coppia di chiavi RSA non è matematicamente difficile, ma, come con tutte le cose crittografiche, può fallire in molti modi sottili che non sarebbe possibile rilevare (come al solito, non è possibile testare per sicurezza, solo per funzionalità). Pertanto, si consiglia vivamente di utilizzare il codice e le strutture esistenti per tali lavori (ad esempio una libreria crittografica come OpenSSL o qualcosa di già incluso in il tuo framework di programmazione come java.security.KeyPairGenerator di Java).

La produzione di coppie di chiavi è la parte facile. Public-Key Infrastructure riguarda la parte più difficile : la distribuzione le chiavi. Algoritmi asimmetrici come RSA dividono le chiavi in una chiave pubblica e una chiave privata e devi solo distribuire la parte pubblica, e poiché è pubblica, tale distribuzione non richiede crittografia . Ciò rende la distribuzione delle chiavi più semplice ; ma non facile . Il problema principale è come l'utente A si assicurerà di avere la chiave pubblica "giusta" per l'utente B (cioè la chiave pubblica per la quale l'utente B conosce effettivamente la chiave privata, e non un'altra chiave che l'aggressore ha astutamente spinto al posto della chiave privata). tasto destro).

PKI è noto per essere un problema molto complesso (e anche un mercato difficile); la procedura migliore è non per ricostruirlo da zero. Invece, ricerca X.509 PKI (in particolare questo tutorial ) e OpenPGP (X.509 è progettato per supportare la PKI gerarchica, mentre OpenPGP era pensato per Webs of Trust).

    
risposta data 30.12.2012 - 21:25
fonte

Leggi altre domande sui tag