Non credo che sarai in grado di garantirlo.
Quindi, supponiamo di avere un comando che richiede la password in un prompt, ad es.
echo mypassword | cryptsetup luksOpen /dev/disk volume'
E vuoi chiedere la password una volta e aprire diversi volumi:
#!/bin/sh
set -e
read -p "What's the password? " password || exit 1
for disk in disk1 disk2 disk3; do
FOLDER=/media/$USER/$disk
echo "$password" | cryptsetup luksOpen /dev/$disk $disk && \
mkdir -p "$FOLDER" && \
mount /dev/mapper/$disk "$FOLDER/$disk"
done
password="xxxxxxxxxxxxxxxxxxxxxx"
Questo script di shell avrebbe funzionato. Tranne che, dopo il completamento di bash, e la memoria viene restituita al sistema, non abbiamo alcuna garanzia che la password stessa non sia ancora in memoria da qualche parte (no, nonostante quest'ultima dichiarazione la tua shell potrebbe non sovrascrivere la posizione in cui è stata salvata).
Quindi, potremmo riscrivere questo in C e assicurarci manualmente che tale posizione sia sovrascritta, usando qualcosa come memset_s
(sì, un memset normale non funzionerebbe).
Tuttavia, ci potrebbero essere delle copie della password in chiaro nei buffer stdio, quelli usati da cryptsetup, ecc. Il kernel non darà tali pagine ad altri programmi senza prima azzerarli, ma se un investigatore forense è venuto a congelare la tua memoria slot con azoto e scaricando il contenuto, potrebbe essere ancora lì.
Inoltre, l'effettiva chiave del disco (decrittografata dalla passphrase) sarà in memoria fino a quando i volumi saranno montati. Quindi, probabilmente non vale la pena insistere per garantirlo, e lasciare che il programma finisca sarebbe accettabile.
Suggerirei di crittografare la partizione del disco principale (e lo scambio, ovviamente) e di avere i file di chiavi per ognuno degli altri dischi (possono essere letti solo per root). Pertanto, è sufficiente inserire una password (al momento dell'avvio) e sarà in grado di decrittografare tutti i dischi. Non ci sono password crittografate che escono quando il sistema è spento, e se un utente malintenzionato ha rootato il tuo sistema in modo che sia in grado di rubare i tuoi file di chiavi, potrebbe accedere direttamente ai file (e fare troppe cose brutte), quindi non rende le cose molto più insicure.
Lo scenario principale per cui posso pensare è dove si ottiene l'accesso ripetuto, ad es. i tuoi dischi criptati vengono clonati e in seguito (dopo averne sbrogliato alcuni segreti), ottengono i tuoi passphrase / keyfiles, in modo da poter decifrare la loro copia precedente. Probabilmente potrebbero farlo anche estraendo le chiavi del disco in memoria, ma l'esistenza dei file di chiavi rende le cose più semplici. (Per evitare ciò, modificare le password e i file di chiavi e reinserire il disco dopo aver rimosso la formula segreta di Coca Cola)
Spero che questo aiuti