Para estar en desacuerdo con los comentarios anteriores. Está bien (pero es altamente inusual) almacenar pares de claves públicas / privadas en una base de datos, dependiendo de su infraestructura. Podríamos hablar de PKIs basadas en Identy especiales, por ejemplo. Entonces, lo que debe proporcionar es más información sobre su infraestructura para obtener una respuesta adecuada.
Sin embargo, como usted dio los dos ejemplos:
"cifrar por el secreto generado por la aplicación": sí, pero también debes proteger ese secreto, por lo que parece que es un tipo de ciclomático. Lo único que puedes hacer es restringir el acceso a la base de datos.
"Cifrar la clave privada con algún secreto específico del usuario": parece ser una contradicción, ya que nunca almacenaría la clave privada de un usuario si el usuario también tiene esta clave privada y si guarda un secreto para cifrar esta clave privada, él podría mantener la clave privada en lugar de ella.