Pregunta

Estoy intentando escribir un encrpytion utilizando el método de OTP. De acuerdo con las teorías de seguridad que necesito los documentos de texto plano que se almacenan sólo en la memoria y nunca escriben en una unidad física. El comando tmpnam parece ser lo que necesito, pero por lo que puedo ver que guarda el archivo en el disco y no la memoria RAM.

El uso de C ++ ¿hay algún método (independiente de la plataforma) que permite que un archivo existe sólo en la memoria RAM? Me gustaría evitar el uso de un método de disco RAM si es posible.

Gracias

Editar: Gracias, es más sólo una cosa de aprendizaje para mí, soy nuevo en el cifrado y sólo trabajando a través de diferentes métodos, que en realidad no va a utilizar muchos de ellos (OTP esspecially debido a la duplicación del tamaño del archivo original debido a la "almohadilla ").

Si estoy totalmente honesto, soy un usuario de Linux así abandonando Windows no sería tan malo, estoy buscando en el uso de discos RAM por ahora como FUSIBLE parece un poco exagerado para una cosa "aprendizaje".

¿Fue útil?

Solución

La respuesta es simple: no, no hay una plataforma de manera independiente. Incluso manteniendo los datos sólo en la memoria, todavía corre el riesgo de ser llevados a swap en el disco por el administrador de memoria virtual.

En Windows, puede utilizar VirtualLock () para forzar la memoria para permanecer en la memoria RAM. También puede utilizar CryptProtectMemory () para evitar que otros procesos de la lectura.

En los sistemas POSIX (por ejemplo, BSD, Linux) se puede utilizar para bloquear mlock() de memoria en la memoria RAM.

Otros consejos

En realidad, no menos que cuentes corrientes en memoria (como stringstream).

No todo y, específicamente, por motivos de seguridad: cualquier pieza de información puede ser intercambiada con el disco en sistemas de memoria virtual.

En general, si usted está preocupado por la seguridad, usted tiene que utilizar métodos específicos de la plataforma de control de acceso: ¿De qué sirve mantener sus datos en la memoria RAM si todo el mundo puede leerlo?

Es posible que desee ver en TrueCrypt código fuente 's. Cómo obtener el código a nivel de sistema de archivos podría ser su mejor apuesta.

OTP es un método de encriptación terrible para archivos de su elección, a menos que tenga una enorme cantidad de entropía que pueda Garantía nunca se repite (por eso se llama "una sola vez"!)

Si desea crear un objeto de tipo fichero que sólo existe en la memoria y no se preocupan acerca de Windows, me vería en escribir un sistema FUSIBLE personalizado ( http://fuse.sourceforge.net/ ); De esta manera se garantiza lo que será y no se escriben en el disco, y sus archivos son accesibles a todos los programas.

El uso de uno de std::stringstream o fmemopen le conseguirá el acceso de tipo fichero a bloques de memoria. Si (por seguridad) que desea evitar que sea intercambiado, utilice mlock que es probablemente más fácil de usar con tampón de fmemopen que std::stringstream. Combinando mlock con std::stringstream probablemente tendría que ser hecho a través de un asignador de costumbre (utilizado como un parámetro de plantilla).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top