Supponiamo di trovarci nel campo delle applicazioni desktop che devono memorizzare i loro dati in un database. Come immagazzino la password per questo database evitando gli errori più ovvi, che sono:
1) hard coding della password del database all'interno del codice (citata come horror di codifica # 21 in "Password hardcoded" all'interno di link )
2) crittografando la password del database e memorizzandola in un file, si dovrebbe spostare il problema su: "dove memorizzo la password che crittografa la password del database?"
3) utilizzando un server di database remoto e un'architettura n-tier in cui il programma non accede direttamente al database ma si autentica con un altro layer che garantisce ogni operazione e la inoltra al livello del database. Tutto viene crittografato tramite ssl e l'autenticazione avviene tramite un certificato digitale (in modo efficace usando la crittografia a chiave pubblica).
Il numero 3 è in realtà una soluzione ma non si applica alle applicazioni desktop che devono funzionare offline!
Qualcuno su un'altra domanda simile ha risposto che "dare agli utenti non fidati un accesso affidabile a un sistema" è irrealizzabile, ecco perché il DRM non ha mai funzionato, tuttavia non ha citato uno studio provato o un teorema provato.
Si noti che lo stesso problema si verifica se si desidera crittografare il database: dove memorizzo la password con cui crittografo un database in un'applicazione desktop?
Qualcuno può fare qualche intuizione? Grazie
NOTA: questo stesso problema è discusso in CWE-259: uso della password hardcoded ma nessuna soluzione definitiva è stata spiegata