Sobes.tech
Intern

Cos'è la crittografia?

sobes.tech AI

Risposta dell'AI

La crittografia è il processo di trasformare informazioni leggibili (testo in chiaro) in un formato illeggibile (testo cifrato) utilizzando un algoritmo crittografico e una chiave. L'obiettivo è garantire la riservatezza dei dati, in modo che solo le persone autorizzate possano leggerli, usando la chiave appropriata per decifrarli.

Esistono due principali tipi di crittografia:

  1. Crittografia simmetrica: Si utilizza la stessa chiave sia per cifrare che per decifrare. La velocità è alta, ma il problema risiede nella trasmissione sicura della chiave. Esempi: AES, DES.

    <?php
    // Esempio di crittografia simmetrica (semplificato, solo per dimostrazione)
    $key = 'chiave123';
    $plaintext = 'Messaggio segreto';
    
    // Si assume una funzione di cifratura semplice (da non usare in produzione)
    function simple_encrypt($data, $key) {
        return base64_encode($data ^ $key); // Operazione XOR di esempio
    }
    
    // Si assume una funzione di decifrazione semplice (da non usare in produzione)
    function simple_decrypt($data, $key) {
        return base64_decode($data) ^ $key; // Operazione XOR di esempio
    }
    
    $ciphertext = simple_encrypt($plaintext, $key);
    echo "Cifrato: " . $ciphertext . "\n";
    
    $decryptedtext = simple_decrypt($ciphertext, $key);
    echo "Decifrato: " . $decryptedtext . "\n";
    ?>
    
  2. Crittografia asimmetrica (criptografia a chiave pubblica): Si utilizza una coppia di chiavi: chiave pubblica per cifrare e chiave privata per decifrare. La chiave pubblica può essere distribuita liberamente, mentre quella privata viene mantenuta segreta. La velocità è inferiore rispetto alla crittografia simmetrica. Esempi: RSA, ECC.

    <?php
    // Esempio di crittografia asimmetrica (semplificato, solo per dimostrazione RSA)
    // In pratica, si usano funzioni PHP per OpenSSL (openssl_public_encrypt, openssl_private_decrypt, ecc.)
    
    // Generazione di chiavi (processo complesso)
    // $privateKey = ...
    // $publicKey = ...
    
    $plaintext = 'Un altro messaggio segreto';
    
    // Cifratura con chiave pubblica
    // $encrypted = openssl_public_encrypt($plaintext, $ciphertext, $publicKey);
    // echo "Cifrato (asimmetrico): " . base64_encode($ciphertext) . "\n";
    
    // Decifratura con chiave privata
    // $decrypted = openssl_private_decrypt($ciphertext, $decryptedtext, $privateKey);
    // echo "Decifrato (asimmetrico): " . $decryptedtext . "\n";
    
    // Nel codice reale, si userebbero funzioni OpenSSL
    ?>
    

La crittografia viene applicata per proteggere i dati durante l'archiviazione (encryption at rest) e durante la trasmissione (encryption in transit), ad esempio nei protocolli SSL/TLS dei siti web.