Domanda

Sto cercando di scrivere un codice cliccando con il metodo OTP. In linea con le teorie di sicurezza ho bisogno di documenti di testo normale per essere memorizzati solo nella memoria e mai e poi mai scritti su un drive fisico. Il comando tmpnam sembra essere quello che mi serve, ma da quello che posso vedere che salva il file sul disco e non la RAM.

con C ++ v'è alcun metodo (indipendente dalla piattaforma), che consente a un file di esistere solo nella RAM? Vorrei evitare di utilizzare un metodo di disco RAM, se possibile.

Grazie

Modifica: Grazie, la sua più solo una cosa di apprendimento per me, Sono nuovo di crittografia e solo lavorando con metodi diversi, io in realtà non intenzione di usare molti di loro (esspecially OTP a causa di raddoppiare la dimensione del file originale a causa della "pad ").

Se io sono totalmente onesti, io sono un utente Linux in modo affossa di Windows non sarebbe troppo male, sto esaminando utilizzando dischi RAM per ora come FUSE sembra un po 'eccessivo per una cosa "apprendimento".

È stato utile?

Soluzione

La risposta è semplice: no, non esiste una piattaforma modo autonomo. Anche mantenendo i dati solo nella memoria, sarà ancora rischiare di essere scambiati su disco da parte del gestore della memoria virtuale.

In Windows, è possibile utilizzare VirtualLock () per forzare la memoria di rimanere nella RAM. È inoltre possibile utilizzare CryptProtectMemory () per evitare che altri processi di leggerlo.

Sui sistemi POSIX (ad esempio BSD, Linux) è possibile utilizzare mlock() per bloccare la memoria RAM.

Altri suggerimenti

Non proprio a meno che non si contano i flussi in memoria (come stringstream).

Nessun particolare e specificatamente per motivi di sicurezza: ogni pezzo di dati può essere scambiato a disco su sistemi di memoria virtuale.

In generale, se siete preoccupati per la sicurezza, è necessario utilizzare i metodi specifici della piattaforma per il controllo dell'accesso: A che serve mantenere i vostri dati nella RAM se tutti possono leggerlo?

Si potrebbe desiderare di guardare TrueCrypt codice sorgente s '. Ottenere il codice a livello di file system potrebbe essere la soluzione migliore.

OTP è un metodo di crittografia terribile per file arbitrari, a meno che non si dispone di una massiccia quantità di entropia che puoi garanzia non si è mai (è per questo che si chiama "una tantum"!) Ripete

Se si desidera creare un oggetto simile a file che esiste solo nella memoria e non si cura su Windows, mi piacerebbe guardare a scrivere un file system FUSE personalizzato ( http://fuse.sourceforge.net/ ); in questo modo si garantisce che cosa e non andranno scritti su disco, ei file sono accessibili da tutti i programmi.

Utilizzando uno dei std::stringstream o fmemopen li otterrà l'accesso ai file-like ai blocchi di memoria. Se (per la sicurezza) che si desidera evitare che venga scambiato, utilizzare mlock che è probabilmente più facile da usare con tampone di fmemopen di std::stringstream. Combinando mlock con std::stringstream avrebbe probabilmente bisogno di essere fatto tramite un allocatore personalizzato (utilizzato come parametro di template).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top