Il metodo needle-in-a-haystack che stai impiegando è esattamente quello che faccio con TrueCrypt. Ci sono circa 600 file chiave in una directory su una penna flash e ne vengono utilizzati ~ 10.
La penna flash ha un interruttore di sola lettura hardware, che impedisce al sistema operativo di aggiornare i metadati "Ultimo accesso". Tienilo a mente se stai utilizzando un supporto scrivibile per la memorizzazione: i file chiave a cui accedi verranno (probabilmente) dati dalla data di accesso. Ho anche aggiunto un po 'di "chaff" extra a questo randomizzando le date create / modificate / accessibili sui file, per rendere tutte le date completamente inaffidabili.
Ciò rende molto difficile trovare i file chiave giusti - 1.545.269.050.000.000.000.000 potenziali combinazioni, supponendo 10 scelte tra 600 file, se l'ordine non è importante e qualsiasi file chiave può essere utilizzato solo una volta. Ogni combinazione deve essere provata per ogni password potenziale, rendendo la forza bruta completamente impossibile. Finché utilizzi file di chiavi casuali di dimensioni sufficienti (di solito uso 4kB o più) non c'è neanche un modo fattibile per forzare il contenuto. La chiave è (solitamente) generata da un hash del contenuto del file o da un composito di questi hash se viene utilizzato più di un file chiave, combinato con l'hash della password. Nota che "hash" potrebbe significare un semplice hash come SHA256, o l'output di un algoritmo di derivazione chiave come PBKDF2 o bcrypt. In quanto tale, calcolare la chiave senza i file di chiavi è impossibile. Al contrario, è impossibile identificare il file di chiavi dal volume, poiché è necessario conoscere la chiave per dedurre una cosa del genere.
Per affrontare il potenziale attacco di temporizzazione della cache menzionato nei commenti da fatfredyy - questo è altamente improbabile. L'attacco proposto comporta la lettura di vari file e il confronto dei tempi di accesso. Un file letto di recente dovrebbe leggere più velocemente degli altri, poiché si troverebbe nella cache. Tuttavia, i tempi di lettura dal disco sono rumorosi sui dischi rigidi (i tempi di ricerca da settori correnti sconosciuti rendono le cose interessanti) e l'accesso alla cache ha un effetto Heisenberg: la lettura di un file probabilmente la caricherà nella cache e potenzialmente corromperà l'integrità della cache in termini di potenziale per gli attacchi temporali. Un problema simile si verifica sugli SSD, che impiegano una cache di lettura relativamente piccola e molta cache di scrittura. In alcuni sistemi, è possibile che la lettura sequenziale di file in una directory comporti il prefetch dei file successivi, complicando ulteriormente l'attacco temporale. A parte l'estrazione fisica dei dati della cache dell'hardware dall'unità, non credo sia fattibile.