in case I store a password in an object, how can I securely delete it?
Penso che tu intenda; come puoi impedire a un utente malintenzionato con accesso al dispositivo di recuperare la password?
Dipende dal livello di accesso che l'attaccante ha acquisito.
Se l'autore dell'attacco è limitato all'API esterna che fornisci (non una buona ipotesi), allora il controllo degli accessi utilizzando java.security.AccessController dovrebbe essere sufficiente. Se si progettano correttamente i controlli di accesso (molto difficile da eseguire) e l'utente malintenzionato non può ignorare i controlli di accesso, il controllo degli accessi impedirà all'utente malintenzionato di ottenere i dati.
Se l'autore dell'attacco è limitato a operare all'interno della Java virtual machine ma non della propria API, è necessario proteggere i dati con KeyStore.PrivateKeyEntry. A questo livello non puoi fare affidamento sul corretto funzionamento del tuo progetto per proteggere i dati e devi fare affidamento sulla macchina virtuale Java per fornire protezione.
Se l'autore dell'attacco è limitato al sistema operativo (non alla macchina virtuale Java), non è possibile proteggere i dati. Se l'utente malintenzionato può impedire il funzionamento della macchina virtuale Java come progettato, l'utente malintenzionato può ignorare qualsiasi meccanismo di sicurezza Java.
Se l'utente malintenzionato ha accesso fisico al dispositivo, è impossibile proteggere i dati da tutti gli attacchi. A questo livello, l'utente malintenzionato può leggere i dati mentre vengono scritti su RAM, flash, moduli hardware, ecc.