1 - BLOB è la mia preferenza perché codificarlo in base64 aumenterà sia lo spazio che il tempo di elaborazione (dal momento che dovrai decodificare anche base64 prima di decifrare)
2 - openssl_seal
non fornisce la chiave che è stata utilizzata per crittografare i dati. Lo scopo di env_keys è archiviare il modulo crittografato della chiave generata. Quando chiami openssl_open, gli dai questa chiave della busta e la chiave privata di cui ha bisogno per decodificare la chiave della busta. La chiave privata deve essere abbinata alla chiave pubblica utilizzata per generare la chiave della busta.
3- Se la tua chiave privata richiede una passphrase, tecnicamente i tuoi dati sono relativamente sicuro. Anche se hanno la chiave della busta e la chiave privata, non potranno usarla... ma quanto è sicura la tua passphrase? Una cosa da capire è che puoi quasi non garantire mai uno schema completamente sicuro, ma puoi sicuramente renderlo duro con gli hacker. Usa la tua immaginazione qui. A proposito, la tua passphrase è in chiaro nel tuo codice?