Q: Se pedali all'indietro su un pesce, va indietro?
A: ???
Un pesce non è una bicicletta. Allo stesso modo, non è possibile utilizzare una chiave privata per crittografare un messaggio o una chiave pubblica per decrittografare un messaggio. Non hanno l'attrezzatura giusta.
Con RSA , che è un popolare sistema di crittografia a chiave pubblica ma non l'unico, la chiave privata e la chiave pubblica hanno le stesse proprietà matematiche, quindi è possibile usarle in modo intercambiabile negli algoritmi. (Non hanno le stesse proprietà di sicurezza, tuttavia - la chiave pubblica è di solito facilmente indovinabile dalla chiave privata.) Puoi prendere un algoritmo di crittografia RSA e dargli una chiave privata, o un algoritmo di decrittazione RSA e dargli un pubblico chiave. Tuttavia, i risultati non sono significativi secondo gli algoritmi standard.
Questa simmetria tra chiavi pubbliche e chiavi private non si estende alla maggior parte degli altri sistemi crittografici a chiave pubblica. In generale, la chiave pubblica non è il giusto tipo di oggetto matematico da utilizzare per l'algoritmo di decrittazione e la chiave privata non è il giusto tipo di oggetto matematico da utilizzare per l'algoritmo di crittografia.
Detto questo, i cryptosystems a chiave pubblica si basano sul concetto di funzioni botola . Una funzione a senso unico è una funzione che è facile da calcolare, ma il cui inverso è difficile da calcolare. Una funzione botola è come una funzione a senso unico, ma esiste un valore "magico" che rende facile calcolare l'inverso.
Se hai una funzione botola, puoi usarla per creare un algoritmo di crittografia a chiave pubblica: andando avanti (nella direzione facile), la funzione crittografa; andando indietro (nella direzione difficile), la funzione decodifica. Il valore magico richiesto per decrittografare è la chiave privata.
Se hai una funzione botola, puoi anche usarla per creare un algoritmo di firma digitale : andando indietro (nella direzione difficile), i segni di funzione ; andando avanti (nella direzione facile), la funzione verifica una firma. Ancora una volta, il valore magico richiesto per firmare è la chiave privata.
Le funzioni della botola si trovano generalmente nelle famiglie; i dati necessari per specificare un particolare elemento della famiglia sono la chiave pubblica.
Sebbene la crittografia a chiave pubblica e le firme digitali siano basate sugli stessi concetti, non sono strettamente identiche. Ad esempio, la funzione botola RSA si basa sulla difficoltà di annullare una moltiplicazione se non si conosce già uno dei fattori. Esistono due famiglie comuni di schemi di crittografia a chiave pubblica basati su RSA , noti come PKCS # 1 v1.5 e OAEP. Esistono anche due famiglie comuni di schemi di firma digitale basati su RSA, noti come PKCS # 1 v1.5 e PSS. I due "PKCS # 1 v1.5" hanno design simili, ma non sono identici. Questa risposta di Thomas Pornin e questa risposta di Maarten Bodewes descrivono alcuni dettagli della differenza tra firma / verifica e decodifica / crittografia nel caso di RSA.
Attenzione che alcune presentazioni laiche della crittografia a chiave pubblica mascherano la firma e la verifica digitali come decrittazione e crittografia, per motivi storici: RSA è stata prima resa popolare e l'operazione principale di RSA è simmetrica. (L'operazione principale di RSA, nota come "libro di testo RSA", è una delle fasi di un algoritmo di firma / verifica / crittografia / decrittografia RSA, ma non costituisce di per sé un algoritmo di firma, verifica, crittografia o decrittografia.) sono simmetrici dalla vista di 10000 piedi, ma non sono simmetrici una volta entrati nei dettagli.
Vedi anche Riduzione dalle firme alla crittografia? , il che spiega che è possibile creare uno schema di crittografia da uno schema di firma, ma solo a determinate condizioni.