Meccanismo di crittografia

0

Desidero inviare i dati su Internet in modo sicuro. Per questo, sto usando una chiave pubblica del ricevitore per crittografare i dati. In questo caso, se un intruso nella rete modifica i dati, come posizionare i bit ruotando, posso decifrare i dati con successo?

E inoltre sto inviando dati sulla rete tutto il tempo. Se l'intruso modifica i dati come menzionato nel metodo precedente, come posso inviare in modo sicuro?

Inoltre, questo caso è applicabile a tutte le crittografie simmetriche?

    
posta user45475 26.07.2014 - 07:54
fonte

2 risposte

1

Parlando di crittografia in generale, non limitandola a RSA, se un man-in-the-middle modifica un messaggio crittografato, il messaggio non verrà decrittografato come lo stesso messaggio inviato. Dipende davvero dall'algoritmo di crittografia utilizzato. Ad esempio, se è stato utilizzato un codice a blocchi, solo il blocco con i dati modificati non riuscirà a decrittografare correttamente, il resto dei blocchi decifrare correttamente, anche se non c'è modo di dire quale sia stato alterato. Altri tipi di crittografia non riuscirebbero a decrittografare un messaggio se un byte è stato modificato.

Detto questo, lo scopo principale della crittografia è quello di fornire riservatezza, poiché è usato per garantire che la conversazione tra te e l'altra parte non possa essere intercettata e letta da nessun altro. Ciò che sembra chiedere è un modo per garantire che i dati inviati non siano stati modificati durante il trasporto. La crittografia può essere d'aiuto, dal semplice hashing di base, all'utilizzo del DSA (algoritmo di firma digitale). Se prendi un hash del tuo messaggio, metti l'hash alla fine del tuo messaggio e cripta il tutto, quando il ricevente riceve il messaggio e lo decrittografa, possono ripetere il messaggio e verificarlo con l'hash fornito. Se sono uguali, possono dire con certezza che il messaggio non è stato alterato durante il transito.

Nota a margine - RSA è lento e solitamente riservato agli usi di piccoli messaggi, come lo scambio di una chiave simmetrica o la "firma" di un hash di un messaggio. Normalmente non viene utilizzato per crittografare messaggi di grandi dimensioni.

    
risposta data 26.07.2014 - 08:16
fonte
1

Di norma, la crittografia fornisce riservatezza , non integrità . A seconda dell'algoritmo, l'attaccante può avere più o meno il controllo su ciò che verrà mostrato dopo la decrittazione.

In ogni caso, stiamo parlando di RSA, in cui la crittografia utilizza la chiave pubblica del destinatario. Come suggerisce il nome, la chiave pubblica è pubblica (e tenerla "segreta" può essere difficile). Pertanto, un utente malintenzionato può tentare di creare un elemento dati da solo, crittografarlo con la chiave RSA del destinatario e inviarlo come se provenisse dal client originale. Se vuoi proteggerti da questo, allora hai bisogno di un modo per distinguere un messaggio inviato dal mittente giusto, da un falso messaggio inviato dall'attaccante. Ciò richiede l'autenticazione .

Esistono principalmente due metodi con cui è possibile ottenere quel tipo di autenticazione, ed entrambi si basano su protocolli e software esistenti (e questa è una buona cosa , perché l'implementazione della propria crittografia è un cattiva idea che ha ripetutamente provocato il disastro):

  1. Fai in modo che i mittenti posseggano anche coppie di chiavi pubbliche / private e il mittente segni il messaggio che invia. Verificando la firma, il destinatario può assicurarsi che il messaggio ricevuto sia corretto, esatto e corretto fino all'ultimo bit. Questo è il modello "email firmata", quindi questo è lo standard OpenPGP . Sono disponibili implementazioni di supporto (ad es. GnuPG ).

  2. Stabilire un tunnel sicuro tra mittente e destinatario. All'interno di quel tunnel, il destinatario autentica il mittente (ad es. Con una password); quindi il client invia il messaggio all'interno del tunnel. Il tunnel utilizza la crittografia per mantenere la sua integrità anche contro gli aggressori attivi. Questo è il modello Web / HTTPS, il tunnel è SSL / TLS . Il codice di supporto SSL è ampiamente disponibile nel software client e server e esistono anche librerie autonome (ad es. OpenSSL ).

risposta data 28.07.2014 - 17:29
fonte