2010-08-30 28 views
7

Ho un esame di domani in Sviluppo avanzato, ma sono bloccato sul tema della crittografia. Ho letto su di esso a http://support.microsoft.com/kb/246071. Tuttavia sono ancora confuso.Crittografia asimmetrica

Se un messaggio viene crittografato utilizzando la crittografia asimmetrica, utilizzando la chiave pubblica, in che modo il decrittore deve conoscere la chiave privata con cui decrittografarlo? Sicuramente l'unico modo per farlo è rendere pubblica la chiave privata, ma ciò sconfigge l'oggetto di Asymmetric Encryption.

Qualcuno può spiegare questo in modo che un non-tecnico sarebbe in grado di capirlo? La sua unica crittografia asimmetrica non capisco, non Symmetric Encryption. Grazie in anticipo.

saluti,

Richard

Edit: Quindi, per riassumere tutte le risposte nel caso di un'applicazione web (l'uso specifico per cui ho bisogno di sapere su questo):

  1. L'utente visita un sito Web;
  2. L'utente è pregato di fornire una chiave pubblica;
  3. L'utente crea una coppia di chiavi pubblica e privata, mantiene privata quella privata e restituisce la chiave pubblica al server;
  4. Server utilizza la chiave pubblica per crittografare tutto ciò che deve essere inviato all'utente e invia le informazioni all'utente;
  5. L'utente utilizza la propria chiave privata per decrittografare la risposta dal server;
  6. L'utente fa ciò di cui ha bisogno e invia una risposta al server, utilizzando la chiave privata per crittografarlo;
  7. Il server decripta utilizzando la chiave pubblica. I passaggi 4 - 7 possono continuare molte volte, oppure possono accadere solo una volta oppure possono avvenire solo 4 e 5.

È tutto corretto? Se è così allora dovrebbe essere tutto ciò che devo sapere per l'esame. Non dovrei pensare che avrei bisogno di saperne di più per ottenere il massimo del 40% se dovesse sorgere una domanda su questo argomento - menzionerò comunque l'esistenza di certificati e firme.

Grazie per tutto l'aiuto.

saluti,

Richard

Edit: Beh, ho appena tornato dal mio esame ed è andata abbastanza bene credo. Ma non è emersa alcuna domanda sulla crittografia, comunque ... L'aiuto è stato apprezzato comunque. Ringrazia tutti.

saluti,

Richard

+1

http://en.wikipedia.org/wiki/Public-key_cryptography? –

+1

BTW, se sei interessato alla crittografia, dovresti dare un'occhiata a "The Code Book" di Simon Singh –

+0

Grazie per il link a wiki, comunque a) ci è stato detto di non usare mai wiki (lo faccio comunque comunque per la maggior parte delle cose !!) eb) il modo in cui è stato spiegato qui è molto più facile da capire rispetto a wiki. Comunque wiki ha dei buoni capitoli su come implicazioni pratiche. – ClarkeyBoy

risposta

7

Alice crea la sua chiave privata + chiave pubblica. Tiene privata la sua chiave privata. Rende pubblica la sua chiave pubblica.

Bob prende la chiave pubblica di Alice (dovrebbe prima verificare, che è davvero la chiave pubblica di Alice!) E la utilizza per crittografare un messaggio, che invia ad Alice.

Alice può decodificare il messaggio utilizzando la sua chiave privata.

+0

Da quello che ho capito funziona anche nel contrario - Alice può cifrare usando la sua chiave privata e poi Bob può decifrare. Buon modo per spiegarlo Grazie. – ClarkeyBoy

+0

No. In questo scenario, Bob avrebbe dovuto utilizzare la chiave pubblica per decodificare. Ma chiunque altro conosce anche la chiave pubblica (è pubblica!) E potrebbe decodificare anche. – Jens

+0

@Jens: non è utile per la crittografia (nel senso della segretezza), ma può essere utilizzato per firmare i messaggi. Nota: a seconda dello schema di cifratura, potrebbe essere importante utilizzare chiavi diverse per firma e crittografia (vedi ad esempio http://security.stackexchange.com/q/1806) –

2

La chiave pubblica viene fornita al "criptato" dal "decrittografia", quindi, per definizione, il "decryptor" conosce la chiave privata (perché è parte di la coppia di chiavi creata dal "decrittografia".

+0

Ah, quindi stai dicendo che il messaggio è crittografato dal decryptor che utilizza la chiave privata, quindi il crittografo può decifrare il messaggio, quindi inviare un messaggio crittografato usando la chiave pubblica che solo un utente con la chiave privata originale può decifrare? Questo ha senso, a meno che un hacker non riesca a impossessarsi del messaggio originale che ha la chiave pubblica con esso. O ancora non lo capisco? – ClarkeyBoy

+1

No ... con crittografia asimmetrica è necessario inviare ad altre persone solo la propria chiave pubblica. Non importa chi ascolta quel messaggio, chiunque può crittografare le informazioni utilizzando la tua chiave pubblica e inviarlo a te. Se qualcuno sta ascoltando, non importa, perché solo tu hai la chiave privata (che non dovrebbe mai essere trasmessa). – Sebastian

+0

Quindi da questo prendo intendo che, in un'applicazione web, sono i client (utenti) stessi che forniscono la chiave pubblica al server e mantengono la chiave privata ..? Se è così allora questo ha perfettamente senso. Grazie. – ClarkeyBoy

1

Diciamo "Decryptor" = D, e "criptato" = E.

D inviato in precedenza la sua chiave pubblica ad e, quindi e può crittografare il mesage.Poiché solo D conosce la propria chiave privata, solo D saprà come decrittografare il messaggio E lo ha appena inviato (ricorda: una chiave viene utilizzata per crittografare, l'altra per decifrare). In questo modo, ottieni privacy.

5

Altri hanno fornito una descrizione "generica" ​​e approfondirò il lato della vita reale.

I più moderni standard di crittografia asimmetrica operano non con chiavi pubbliche e private, ma con wrapper più complessi, come certificati X.509 o chiavi OpenPGP (queste sono le due più diffuse infrastrutture di crittografia asimmetrica oggi). Sia i certificati che le chiavi OpenPGP contengono informazioni aggiuntive che li rendono facilmente identificabili, cercati e gestiti.

Ora, il blocco dati crittografato di solito include la parte pubblica (vale a dire il certificato o la chiave pubblica OpenPGP) utilizzata per la crittografia, o almeno l'ID (hash di questa parte pubblica). Il destinatario dei dati di solito ha (o dovrebbe avere) parti sia pubbliche che private (le chiavi private sono solitamente tenute insieme con i certificati o le chiavi pubbliche di openpgp). Quindi, quando il destinatario riceve i dati crittografati, sa che ha bisogno di cercare la sua chiave privata di archiviazione per la parte pubblica con un dato ID (o per una determinata parte pubblica quando è inclusa nei dati crittografati).

Esistono casi in cui non è incluso nulla. Quindi il destinatario non ha nulla da fare se non provare tutte le chiavi private disponibili per la decrittografia. Ma tali casi sono rari in quanto per impostazione predefinita il certificato o l'ID della chiave sono presenti nel blocco dati crittografato.

+0

Questa è una buona risposta: è necessario aggiungere informazioni identificative al blocco/blob crittografato per identificare quale chiave (e) la decodificherà. (Nome, impronta digitale o hash della chiave pubblica) –

12

Una chiave privata deve essere conosciuta solo dal suo utente legittimo e non distribuita. La sua controparte, la chiave pubblica, può essere distribuita a chiunque.

Sulla base di questo, è possibile ottenere 4 operazioni:

  • crittografare utilizzando la chiave pubblica
  • decifrare utilizzando la chiave segno privata
  • utilizzando la chiave privata
  • verificare la firma con il pubblico chiave

Il prossimo problema che potresti incontrare è il legame di un'identità con una chiave pubblica (come non vorrai t voglio cifrare qualcosa con o fidarsi di qualcosa firmato con la chiave pubblica di un impostore). Esistono vari modelli di distribuzioni di chiavi pubbliche. In genere, si può avere:

  • un web of trust, dove le persone firmano reciprocamente associazione tra la chiave pubblica e l'identità: questo è in genere il modello PGP.
  • a public key infrastructure (PKI) in cui le autorità di certificazione ottengono certificati, spesso con prodotti intermedi, in una gerarchia ad albero. (PGP può usare anche questo modello, ma questo sembra meno comune.)