Per non essere d'accordo con i commenti precedenti. È OK (ma molto insolito) memorizzare coppie di chiavi private / pubbliche in un database, a seconda della tua infrastruttura. Ad esempio, potremmo parlare di speciali PKI basati su Identy. Quindi, quello che devi fornire, è più informazioni sulla tua infrastruttura, per ottenere una risposta adeguata.
Tuttavia, come hai dato i due esempi:
"crittografa dal segreto generato dall'applicazione" - sì, ma devi proteggere anche quel segreto, quindi sembra che sia una specie di ciclomatico. L'unica cosa che puoi fare è limitare l'accesso al database.
"Crittografa la chiave privata con qualche segreto specifico dell'utente" - sembra essere una contraddizione, poiché non si memorizzerebbe mai la chiave privata di un utente se l'utente tiene anche questa chiave privata e se detiene un segreto per crittografare questa chiave privata, potrebbe invece contenere la chiave privata al suo posto.