¿Cómo acceder al bloque de memoria protegido de reproducción (RPMB) en eMMC?

3

RPMB es una partición especial en eMMC 4.5. La investigación en Internet sugiere que se usa para guardar claves y es la única partición especial que responde a comandos como READ, WRITE. ¿Puede alguien explicarme cómo usar RPMB y cómo puede realmente mitigar los ataques de repetición?

    
pregunta Satya 27.07.2017 - 19:13
fuente

2 respuestas

5

RPMB se puede usar usando mmc-utils .

Puede soportar ataques de reproducción al requerir una clave para escribir en esta región. El rpmb tiene una tecla que se puede programar una vez. Más tarde, el host lee un valor de contador del rpmb. Utiliza este valor de contador y la tecla programada para generar un MAC. El dispositivo luego verifica el MAC dado frente al MAC que calculó usando la misma clave, y si coincide, se otorga acceso de escritura ( referencia , diapositiva 4).

    
respondido por el Ryan Schaefer 24.01.2018 - 20:03
fuente
-1

Normalmente, antes de cualquier acceso (por ejemplo, lectura o escritura) a la partición RPMB, debe programarse una clave de autenticación RPMB en el controlador RPMB en el dispositivo eMMC / UFS o NVMe.

Tenga en cuenta que esta tecla solo debe programarse una vez (al menos de acuerdo con la especificación RPMB), y en el comando / solicitud de programación, la tecla RPMB debe enviarse con texto no cifrado, por lo tanto, normalmente debe proveerse en un entorno seguro ( por ejemplo, la línea de fabricación de fábrica o el entorno de firmware confiable en el campo después de que eMMC / UFS / NVMe se reemplace por uno nuevo).

después de la programación, esta clave RPMB también debe estar bien protegida, por lo que, por lo general, el uso de RPMB debería incluir un TEE (entorno de ejecución confiable), como OP-TEE , Google Android Trusty o aquí para la plataforma Intel x86 . Sin embargo, este entorno TEE normalmente no tiene controlador PRMB, pero tiene la clave RPMB y mantiene esta clave segura dentro del TEE (o mundo seguro) para su protección, mientras que el controlador RPMB en sí debería estar en un mundo normal no seguro como Linux (consulte el controlador RPMB de Tomas Winkler ).

Luego, tome el acceso de escritura a RPMB como ejemplo, TEE usará la clave RPMB para firmar los datos de RPMB y enviará los datos de RPMB junto con la firma de autenticación HMAC-SHA256 (MAC) a Linux sobre IPC (entre el mundo seguro TEE y el mundo no seguro Linux), el controlador del kernel de Linux es responsable de enviar esos datos (también conocido como marco RPMB) juntos al dispositivo físico RPMB para la escritura de autenticación.

En cuanto a la protección REPLAY, se puede lograr de la siguiente manera para el acceso de lectura / escritura: El contador de escritura monotónico incorporado de H / W del controlador de almacenamiento se utiliza para la protección de reproducción en el acceso WRITE, siempre que una escritura autenticada tenga éxito, el contador de escritura H / W aumenta en 1, (inicialmente es cero), por lo que cualquier escritura contestada el acceso será rechazado porque el contador de escritura nunca puede disminuir. esto puede garantizar la actualización de los datos, sin embargo, siempre que el contador alcance su valor máximo (32 bits), se denegará cualquier acceso de escritura (esto significa que RPMB será un almacenamiento de solo lectura);

Si bien el número aleatorio generado por el software (nonce) se usa para la protección de reproducción en el acceso de lectura (READ), porque en el acceso de lectura, el software en TEE es responsable de autenticar los datos y verificar su actualización, nunca debe usar el mismo nonce o un generador de números aleatorios deficiente para generar nonce para evitar la reproducción de datos para el acceso de lectura.

para más detalles, puedes ver mi charla en Linux Security Summit Europe 2018: Implemente el almacenamiento seguro a prueba de manipulaciones de Android y asegúrelo en la virtualización , en esta diapositiva, junto al De esta forma, también se refiere a una de las soluciones de virtualización RPMB en la parte superior de hipervisor si está interesado.

Espero que esto ayude.

    
respondido por el Bing 26.11.2018 - 15:02
fuente

Lea otras preguntas en las etiquetas