¿Qué tan seguro es almacenar información criptográfica en el registro de la CPU en lugar de RAM?

1

Leí sobre Tresor / TreVisor / Blindado .

¿Qué tan seguro es el almacenamiento de información criptográfica en el CPU Debug-Register a través del almacenamiento en la memoria RAM?

¿Y por qué actualmente no se usa mucho?

Sé que esto mitigará un ataque de arranque en frío, que es una de las formas de "romper" un cifrado de disco completo, pero ¿cuáles son otros usos?

Por lo que sé, la programación de esta funcionalidad no es mucho más complicada que el uso "normal" de la RAM.

    
pregunta Serverfrog 28.02.2017 - 10:19
fuente

1 respuesta

3

La respuesta depende obviamente del tipo de CPU del que estés hablando.

Por ejemplo, con los registros de propósito general en una CPU x86 moderna, tiene varios problemas:

  1. Los registros de CPU tienen en su mayoría 64 bits de ancho. Para almacenar una clave criptográfica de tamaño decente, necesitaría al menos dos registros. Esto es un problema porque el número de registros en x86 es muy limitado (es aún peor con las CPU x86 más antiguas)

  2. Los registros de CPU son el "área de trabajo" principal de una CPU, por lo que no puede almacenar una clave criptográfica allí por períodos de tiempo más largos porque básicamente no hay protección / aislamiento en efecto, cualquier registro, excepto algunos Cualquier persona que pueda hacer que el procesador ejecute unas pocas instrucciones puede acceder a los registros de propósito especial (que, sin embargo, son necesarios para el correcto funcionamiento del sistema operativo / cambio de tareas, y por lo tanto no pueden utilizarse para almacenar claves criptográficas). . Esto no es cierto para la memoria, que puede ser protegida del acceso por programas no autorizados.

  3. En los sistemas operativos que admiten tareas múltiples (por lo tanto, básicamente en todos los sistemas operativos actuales), cuando se produce un cambio de tarea, todos los contenidos del registro se guardan en la RAM cuando una tarea se sustituye y se vuelve a cargar desde la RAM cuando se le asigna CPU de nuevo. Esto sucede docenas, si no cientos de veces por segundo. Así que sus claves criptográficas terminarán almacenadas en la memoria de todos modos. También podrían terminar intercambiados en el disco cuando una página que almacenaba una tarea actualmente detenida fue intercambiada en el disco para dejar espacio para otro proceso.

Editar : como lo explican su comentario de seguimiento y mi respuesta, puede solucionar algunos de estos problemas utilizando registros de propósito especial que generalmente no se utilizan. Sin embargo, todavía hay problemas que no parecen hacer que esto valga la pena:

  1. Su sistema operativo debe cooperar: si utiliza estos registros de propósito especial para el propósito para el que fueron diseñados, sus claves se sobrescriben y sus datos pueden ser eliminados sin que usted se dé cuenta.

  2. Aún está protegido contra los ataques de arranque en frío (suponiendo que ningún estado abandone la CPU, lo que no es tan fácil de garantizar debido a la prevención de tareas) y contra los ataques de bajo privilegio que no se pueden obtener acceso al anillo 0. Cuando su kernel se ve comprometido, sus claves aún pueden ser robadas fácilmente con solo unas pocas instrucciones simples de la CPU. Podría ser incluso más fácil robarlos en ese caso, porque sabría exactamente dónde buscarlos. Por lo tanto, no está agregando ninguna seguridad excepto contra el arranque en frío y quizás algunos ataques DMA (cuando un programa sin privilegios almacena claves en la RAM, otros programas sin privilegios tampoco pueden leerlos).

No sé cómo prevalecen los ataques de arranque en frío para la extracción de claves en la naturaleza. Asumiría que los equipos de operaciones especiales patrocinados por el estado, además de tu ocasional fanático de los artilugios podrían lograrlo. Pero me preocuparía mucho más sobre los kernels del sistema operativo comprometidos que sobre los ataques de arranque en frío.

    
respondido por el Pascal 28.02.2017 - 14:57
fuente

Lea otras preguntas en las etiquetas