ES2938363T3 - Actualización de versión anti-restablecimiento en chip de memoria asegurada - Google Patents

Actualización de versión anti-restablecimiento en chip de memoria asegurada Download PDF

Info

Publication number
ES2938363T3
ES2938363T3 ES17187862T ES17187862T ES2938363T3 ES 2938363 T3 ES2938363 T3 ES 2938363T3 ES 17187862 T ES17187862 T ES 17187862T ES 17187862 T ES17187862 T ES 17187862T ES 2938363 T3 ES2938363 T3 ES 2938363T3
Authority
ES
Spain
Prior art keywords
data item
version identifier
signature
storage location
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17187862T
Other languages
English (en)
Inventor
Nir Tasher
Itay Admon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Winbond Electronics Corp
Original Assignee
Winbond Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Winbond Electronics Corp filed Critical Winbond Electronics Corp
Application granted granted Critical
Publication of ES2938363T3 publication Critical patent/ES2938363T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Static Random-Access Memory (AREA)

Abstract

Un sistema de almacenamiento seguro incluye una memoria no volátil y un controlador. La memoria no volátil está configurada para almacenar un primer elemento de datos y un identificador de primera versión respectivo asignado al primer elemento de datos. El controlador está configurado para recibir un segundo elemento de datos acompañado de un segundo identificador de versión y una firma, para reemplazar el primer elemento de datos en la memoria no volátil, para autenticar al menos el segundo identificador de versión usando la firma, para hacer una comparación entre el identificador de la primera versión almacenado y el identificador de la segunda versión, y para reemplazar el primer elemento de datos con el segundo elemento de datos solo en respuesta a la verificación de que (i) el identificador de la segunda versión se autentica con éxito, y (ii) el segundo elemento de datos es más reciente que el primer elemento de datos, (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Actualización de versión anti-restablecimiento en chip de memoria asegurada
Referencia cruzada a solicitudes relacionadas
Esta solicitud reivindica el beneficio de la Solicitud de Patente Provisional de Estados Unidos 62/381,028, presentada el 30 de agosto de 2016.
Campo técnico
Las realizaciones descritas en la presente se refieren en general al almacenamiento de datos, y en particular a métodos y sistemas para actualización de versión asegurada en un chip de memoria.
Antecedentes
En varios dispositivos portátiles y otros, un procesador se acopla a un chip de memoria y ejecuta un programa de computadora almacenado en el chip de memoria. En algunos dispositivos de este tipo, el chip de memoria gestiona el almacenamiento de datos de una manera asegurada.
Los documentos GB 2 430 774 A, US 2011/208975 A1 y US 8 745 612 B1 divulgan técnicas para llevar a cabo actualizaciones de software/firmware con protección antimanipulación. Estas técnicas comprenden comprobaciones de integridad con base en firmas digitales o certificados y proporcionan protección contra ataques de restablecimiento al asegurar que cualquier actualización que se aplique tenga un número de versión más alto que ese de la versión instalada actualmente.
Breve Descripción
La invención proporciona un sistema de acuerdo con la reivindicación 1 y un método correspondiente de acuerdo con la reivindicación 7
Breve descripción de las figuras
La figura 1 es un diagrama de bloques que ilustra esquemáticamente un dispositivo de usuario que recibe actualizaciones para ser almacenadas de manera segura en un chip de memoria local, de acuerdo con una realización que se describe en la presente;
La figura 2 es un diagrama de bloques que ilustra esquemáticamente el controlador de memoria del chip de memoria de la figura 1, de acuerdo con una realización que se describe en la presente;
La figura 3 es un diagrama de flujo que ilustra esquemáticamente un método para almacenar de manera segura un nuevo artículos de datos, de acuerdo con una realización que se describe en la presente; y
La figura 4 es un diagrama de flujo que ilustra esquemáticamente un método para actualizar de manera segura un artículo de datos almacenado, de acuerdo con una realización que se describe en la presente.
Descripción detallada de las realizaciones
Descripción general
Las realizaciones que se describen en la presente proporcionan métodos y sistemas para el almacenamiento de datos seguro en un sistema de almacenamiento. El sistema de almacenamiento puede comprender un chip de memoria o un sistema de almacenamiento de cualquier otro tipo adecuado tal como, por ejemplo, una unidad de estado sólido (SSD). En la descripción que sigue nos referimos principalmente a un sistema de almacenamiento de ejemplo que comprende un chip de memoria. El chip de memoria comprende un controlador de memoria y un dispositivo de memoria no volátil tal como un dispositivo de memoria Flash. El chip de memoria se puede usar en diversos dispositivos de usuario tal como, por ejemplo, una computadora personal (PC, por sus siglas en inglés), un teléfono celular, o un nodo de Internet de las cosas (IOT, por sus siglas en inglés).
En algunas realizaciones, el chip de memoria almacena artículos de datos para un procesador del dispositivo de usuario en la memoria no volátil, y recupera los artículos de datos para el procesador a pedido. Un artículo de datos puede comprender, por ejemplo, código ejecutable, tal como un programa de aplicación o un código de arranque de un sistema operativo subyacente. De manera alternativa o adicionalmente, también se pueden utilizar artículos de datos de otros tipos adecuados. Otros tipos de artículos de datos pueden incluir claves y otra información criptográfica, contraseñas y credenciales de identificación, huellas dactilares y otros datos biométricos, datos bancarios y financieros, billetera electrónica, datos médicos, otra información personal, y similares.
Un artículo de datos almacenado en la memoria no volátil puede requerir una actualización de vez en cuando. Por ejemplo, la versión de un programa de aplicación almacenado actualmente se puede reemplazar con una versión avanzada que incluye correcciones de errores, características adicionadas recientemente y similares.
Las versiones actualizadas de un artículo de datos a veces están disponibles para la descarga desde un servidor remoto. En principio, el chip de memoria puede compartir con un proveedor autorizado de un artículo de datos una clave secreta que el proveedor autorizado usa para firmar liberaciones del artículo de datos, y el chip de memoria usa para verificar la integridad y autenticidad de los artículos de datos descargados. El proveedor autorizado comparte una clave secreta con el chip de memoria.
El esquema de actualización descrito anteriormente puede ser vulnerable a un ataque de restablecimiento, en el que un atacante intenta instalar en el chip de memoria un artículo de datos capturado anteriormente que se firmó por el proveedor autorizado utilizando la clave secreta correcta, pero liberado por el proveedor autorizado antes que el artículo de datos almacenado actualmente. El atacante puede lanzar un ataque de restablecimiento (también conocido como un ataque de día cero) con la intención de aprovechar vulnerabilidades anteriormente conocidas de una versión anterior del código de aplicación.
En algunas realizaciones divulgadas, los artículos de datos recibidos para almacenamiento en el chip de memoria se asignan identificadores de versión. Habitualmente, un proveedor autorizado libera actualizaciones de un artículo de datos determinado en algún orden de liberación, y asigna respectivos identificadores de versión a las actualizaciones liberadas de acuerdo con el orden de liberación.
En algunas realizaciones, el controlador de memoria recibe un artículo de datos para reemplazar un artículo de datos almacenado en la memoria no volátil. El controlador de memoria reemplaza el artículo de datos almacenado con el artículo de datos recibido sólo en respuesta a la verificación de que (i) el identificador de versión del artículo de datos recibido se autentica exitosamente, y (ii) el artículo de datos recibido es más reciente que el artículo de datos almacenado, con base en una comparación entre sus respectivos identificadores de versión. En algunas realizaciones, el artículo de datos y el identificador de versión se firman conjuntamente en una firma común, y el controlador de memoria autentica el artículo de datos utilizando esta firma común.
En algunas realizaciones, el controlador de memoria recibe con el artículo de datos una respectiva firma. El controlador de memoria calcula para el artículo de datos recibido una firma calculada usando la clave secreta compartida. El controlador de memoria verifica que el identificador de versión del artículo de datos recibido es auténtico al comprobar si o no la firma calculada coincide con la firma del artículo de datos recibido.
En algunas realizaciones, el controlador de memoria mapea entre direcciones lógicas utilizadas por una computadora central del chip de memoria y direcciones físicas utilizadas por el dispositivo de memoria no volátil. En el espacio de direcciones físico, el controlador de memoria asigna para el artículo de datos un espacio de almacenamiento para la versión usada actualmente y otro espacio de almacenamiento para escribir una versión actualizada del artículo de datos. Después de validar la versión actualizada, como se describe anteriormente, el controlador de memoria vuelve a mapear las direcciones lógicas a físicas para intercambiar funciones entre los dos espacios de almacenamiento.
En algunas realizaciones, para escribir un artículo de datos en un espacio de almacenamiento, el controlador de memoria desbloquea este espacio de almacenamiento antes de la escritura, y bloquea el espacio de almacenamiento después de que concluya la escritura del artículo de datos. En otras realizaciones, el controlador de memoria escribe un artículo de datos al enviar a la memoria no volátil múltiples comandos de escritura, tal que cada comando transporte una respectiva parte del contenido de artículo de datos, y cada comando se firma con una respectiva firma. La memoria no volátil ejecuta cada uno de los comandos de escritura sólo después de validar las respectivas firmas.
En algunas realizaciones, el controlador de memoria autentica el identificador de versión recibido y valida que el artículo de datos recibido es más reciente que el artículo de datos almacenado, con base en los respectivos identificadores de versión, en una operación atómica individual que es interrumpible. Estas realizaciones garantizan que la actualización real se permita sólo si se satisfacen todas las condiciones requeridas.
Las técnicas divulgadas soportan el almacenamiento de datos seguro en un chip de memoria. Usando las técnicas divulgadas, no se requiere una cadena compleja de confianza, y los artículos de datos en el chip de memoria se pueden actualizar de manera segura y eficientemente, incurriendo en una latencia mínima.
Descripción de sistema
La figura 1 es un diagrama de bloques que ilustra esquemáticamente un dispositivo de usuario 24 que recibe actualizaciones para ser almacenadas de manera segura en un chip de memoria local 32, de acuerdo con una realización que se describe en la presente. El dispositivo de usuario 24 comprende una computadora central 28, acoplada al chip de memoria 32 del dispositivo de usuario mediante un bus o enlace de comunicación 36. El chip de memoria 32 almacena datos para la computadora central en una memoria no volátil 44, una memoria Flash en el presente ejemplo. El chip de memoria 32 soporta la información de actualización almacenada en la memoria no volátil 44 de una manera asegurada, como se describirá en detalle a continuación.
El chip de memoria 32 se puede utilizar en diversos sistemas y dispositivos de computadora central de usuario, tal como en dispositivos informáticos, computadoras personales (PC) o servidores de computadora, teléfonos celulares u otras terminales de comunicación, computadoras portátiles, tabletas, módulos de memoria removibles, discos de estado sólido (SSD), dispositivos de almacenamiento tal como discos duros, tarjetas digitales seguras (SD), tarjetas de multimedios (MMC) y MMC integradas (eMMC), cámaras digitales, música y otros reproductores de medios, nodos de IOT y/o cualquier otro sistema o dispositivo en el que se almacenan y recuperan datos.
La computadora central 28 comprende un procesador 40 que habitualmente ejecuta programas, tal como, por ejemplo, un sistema operativo, una función de cargador de arranque, firmware, uno o más programas de aplicación de usuario, una pila de comunicación, y similares. El dispositivo de usuario 24 comprende habitualmente medios para interconectar entre el procesador 40 y un usuario humano tal como un teclado o una almohadilla táctil, y una pantalla (no mostrada). La computadora central 28 comprende medios para la comunicación con servidores remotos, como se describirá más adelante.
La memoria no volátil 44 habitualmente comprende una pluralidad de celdas de memoria (no mostradas). En el presente ejemplo, la memoria no volátil 44 comprende una memoria Flash, pero alternativamente se puede implementar utilizando cualquier otra tecnología adecuada. La capacidad de almacenamiento de la memoria no volátil 44 depende de los requisitos de almacenamiento del dispositivo de usuario de alojamiento y puede estar en el orden de varios megabits o incluso varios gigabits.
El chip de memoria 32 comprende un controlador de memoria 48 que gestiona el almacenamiento de datos en la memoria no volátil 44. El controlador de memoria 48 se acopla a la memoria no volátil 44 mediante un bus o enlace de comunicación interno 52 que comprende cualquier bus de comunicación adecuado. En el chip de memoria 32, cualquier información transmitida a través del bus de comunicación 52 entre el controlador de memoria y la memoria no volátil es inaccesible fuera del chip de memoria 32.
Aunque la memoria no volátil 44 puede comprender múltiples bancos de memoria física, el controlador de memoria accede a la memoria no volátil como una memoria lógica unificada.
En algunas realizaciones, la computadora central 28 opera en un espacio de direcciones que comprende direcciones lógicas, en tanto que la memoria no volátil 44 opera en un espacio de direcciones diferente que comprende direcciones físicas. Al almacenar y recuperar datos hacia y desde la memoria no volátil, el controlador de memoria se traslada entre las direcciones lógica y física, como se describirá en detalle con referencia a la figura 2 a continuación.
El bus de comunicación 36 entre la computadora central y el chip de memoria puede comprender cualquier bus o enlace adecuado que opere de acuerdo con cualquier protocolo adecuado. El bus de comunicación 36 puede comprender, por ejemplo, un bus de interfaz periférica en serie (SPI) o un circuito inter-integrado (bus I2C). El bus de comunicación 36 puede operar como un bus serie o como un bus paralelo, enviando y recibiendo información a cualquier tasa adecuada. Un bus de SPI y de manera similar un bus I2C pueden operar a tasas de bits de varios Kbps a varios Mbps (por ejemplo, más de 400 Mbps en bus SPI Octal basado en 50 MHz). Los buses serie ATA (SATA) y (Integrated Drive Electronics) IDE operan habitualmente a tasas de bits de varios cientos de Mbps.
En la realización de ejemplo de la figura 1, el chip de memoria 32 comprende un motor criptográfico 56, para implementar varios aspectos de seguridad del chip de memoria, como se describirá en detalle a continuación. En una realización, el motor criptográfico 56 descarga al controlador de memoria de la carga de aplicar operaciones criptográficas complejas, tal como cifrado, descifrado, autenticación, cálculo de clave de datos, validación de firma, y similares. En realizaciones alternativas, el controlador de memoria realiza algunas o todas las operaciones criptográficas requeridas.
En algunas realizaciones, se asegura el tráfico comunicado entre la computadora central 28 y el chip de memoria 32 a través del bus de comunicación 36. En estas realizaciones, cada una de la computadora central 28 y el controlador de memoria 48 cifra los datos que se enviarán a través del bus de comunicación 36 (utilizando cualquier método de cifrado adecuado), y descifra los datos recibidos cifrados del bus de comunicación 36. El cifrado del tráfico a través del bus de comunicación 36 asegura que un atacante que puede obtener acceso al bus de comunicación 36 es incapaz de descifrar la información transmitida. Otros aspectos de seguridad de la comunicación a través del bus de comunicación 36 incluyen verificación de autenticidad con base en firmas, y verificación de integridad con base en un código de comprobación de redundancia cíclica (CRC), una función de cálculos de clave, una firma o cualquier otro método de comprobación de integridad adecuado.
La computadora central 28 puede almacenar datos en el chip de memoria 32 y recuperar los datos a pedido. Los datos almacenados habitualmente comprenden uno o más artículos de datos de cualquier tipo adecuado tal como, por ejemplo, código ejecutable tal como un sistema operativo, un código de arranque del sistema operativo o programas de aplicación de usuario. Otros tipos de datos pertinentes incluyen claves secretas, credenciales de identificación, datos de usuario, firmware, diversos controladores y similares.
En el ejemplo de la figura 1, la memoria no volátil 44 almacena dos programas de aplicación 60A y 60B denotados APP1 y APP2, respectivamente, para ejecutarse por el procesador 40 de la computadora central. En algunas realizaciones, para ejecutar un programa de aplicación tal como APP1 o APP2, la computadora central lee el código del programa de aplicación de la memoria no volátil 44, por ejemplo, al enviar al chip de memoria 32 un comando de lectura adecuado.
La memoria no volátil 44 almacena adicionalmente para cada programa de aplicación 60A y 60B un respectivo identificador de versión 62A (denotado VER1) o 62B (denotado VER2). El controlador de memoria usa los identificadores de versión para verificar que sólo se instalarán actualizaciones de artículos de datos que sean auténticos y más recientes que sus contrapartes almacenadas actualmente, como se describirá a continuación.
Una versión inicial de cada artículo de datos, así como versiones actualizadas del artículo de datos, por ejemplo, de los programas de aplicación APP1 y APP2, se pueden descargar habitualmente por el dispositivo de usuario 24 a través de una red de comunicación 68. En el ejemplo de la figura 1, un proveedor 64A (denotado PROVEEDOR1) almacena una versión actualizada denotada APP1' 72a del programa de aplicación APP1 60A, y un proveedor 64B (denotado PROVEEDOR2) almacena una versión actualizada APP2' 72B del programa de aplicación APP2 60B. Los proveedores 64 habitualmente almacenan una o más versiones de cada artículo de datos en un servidor que se conecta a la red de comunicación 68.
La red de comunicación 68 puede comprender, por ejemplo, una red de paquetes tal como, por ejemplo, una red de Ethernet o Protocolo de Internet (IP). Alternativamente, la red de comunicación 68 puede operar de acuerdo con cualquier otra norma o protocolo adecuado. La red de comunicación 68 puede comprender una red de cable, por ejemplo, una red de área local (LAN) o una red de área amplia (WAN), o una red inalámbrica, por ejemplo, una red celular o una LAN inalámbrica tal como una red WiFi. Además, de manera alternativa o adicionalmente, la red de comunicación 68 combina redes de cable e inalámbricas.
En algunas realizaciones, en lugar de (o además de) interactuar con la red de comunicación 68, el dispositivo de usuario 24 comprende una o más interfaces dedicadas (no mostradas) para recibir una versión inicial o una versión actualizada de un artículo de datos, de una manera directa. Por ejemplo, el dispositivo de memoria puede descargar un artículo de datos almacenado en un almacenamiento de disco compacto (CD), o en un dispositivo de almacenamiento de bus serial universal (USB).
Cada proveedor 64 puede actualizar ocasionalmente un artículo de datos almacenado localmente en el servidor del proveedor. Por ejemplo, el proveedor 64A (o 64B) puede emitir una versión actualizada del programa de aplicación APP1 (o APP2) que corrige problemas en la funcionalidad del programa de aplicación, por ejemplo, resuelve riesgos de seguridad, y/o adiciona nuevas características al programa de aplicación. Cuando, por ejemplo, una versión actualizada APP1' (72A) está disponible en el lado del proveedor, el dispositivo de usuario 24 puede descargar la versión actualizada a través de la red de comunicación 68 para reemplazar la APP1 (60A) que se almacena actualmente en la memoria no volátil 44.
En algunas realizaciones, cada proveedor 64 asigna a sus versiones almacenadas localmente del artículo de datos los respectivos identificadores de versión. En el presente ejemplo, el proveedor 64A asigna un identificador de versión 76A (denotado VER1') a APP1' y el proveedor 64B asigna un identificador de versión 76B (denotado VER2') a APP2'.
Cada uno de los proveedores 64 asigna identificadores de versión a un respectivo artículo de datos en una secuencia de un orden creciente. Como tal, a una versión más reciente del artículo de datos se le asigna un identificador de versión más avanzado en la secuencia. Por ejemplo, suponiendo que el proveedor 64A emita identificadores de versión en algún orden, puesto que APP1' (72A) es una versión actualizada de APP1 (60A), el proveedor 64A asigna a APP1' el identificador de versión VER1' (76A) que es más avanzado en el orden que la versión VER1 (62A) de APP1. En algunas realizaciones, los identificadores de versión comprenden números de versión. En estas realizaciones, los números de versión asignados satisfacen VER1'>VER1. Se aplican principios similares de asignación de identificadores de versión al programa de aplicación APP2 y a artículos de datos de cualquier otro tipo adecuado.
El dispositivo de usuario 24 descarga una versión actualizada de un artículo de datos acompañado de su identificador de versión. En el presente ejemplo, el dispositivo de usuario 24 descarga APP1' con VER1' y APP2' con VER2'. El controlador de memoria compara entre los identificadores de versión recibidos y almacenados del artículo de datos pertinente, y permite instalar en la memoria no volátil sólo versiones autenticadas que son más recientes que las versiones almacenadas, como se describirá en detalle a continuación.
En algunas realizaciones, el controlador de memoria autentica el identificador de versión de un artículo de datos descargado utilizando una clave secreta que se comparte con un proveedor autorizado del artículo de datos. En la descripción que sigue, el término "proveedor autorizado" se refiere a un proveedor de un artículo de datos para el que el chip de memoria comparte una clave secreta.
En el ejemplo de la figura 1, el chip de memoria 32 comparte una clave secreta 80A (denotada CLAVE1) con el proveedor 64A de APP1 (y APP1'), y una clave secreta 80B (denotada CLAVE2) con el proveedor 64B de APp2 (y Ap P2'). Cada proveedor 64 usa la clave secreta para firmar el respectivo artículo de datos con una firma, y el chip de memoria 32 autentica el artículo de datos recibido y su identificador de versión al verificar la firma usando la clave secreta. Las claves 80 se almacenan habitualmente en la memoria no volátil 44, y son accesibles sólo dentro del chip de memoria 32, por ejemplo, por el controlador de memoria 48 y/o el motor criptográfico 56.
Aunque en la figura 1 cada artículo de datos (programas de aplicación APP1 y APP2) se asocia con una respectiva clave secreta, esta asignación no es obligatoria. Por ejemplo, dos o más artículos de datos, o incluso todos los artículos de datos autenticados por el chip de memoria, se pueden asociar con una clave secreta común. Como otro ejemplo, uno o más dispositivos de usuario pueden compartir una clave secreta determinada con el dispositivo de usuario 24. Las claves secretas 80 se inicializan habitualmente durante la producción del chip de memoria 32 o en un memento posterior, por ejemplo, por el fabricante del chip de memoria o del dispositivo de usuario. Alternativamente, un usuario del dispositivo de usuario 24 inicializa las claves secretas 80. Después de inicializarse, la clave secreta no se puede leer o sobrescribir a través de ninguna de las interfaces diseñadas del chip de memoria o del dispositivo de usuario.
Control de acceso seguro en chip de memoria
La figura 2 es un diagrama de bloques que ilustra esquemáticamente el controlador de memoria 48 del chip de memoria 32 de la figura 1, de acuerdo con una realización que se describe en la presente. El ejemplo en la figura 2 se refiere principalmente a la aplicación de control de acceso al programa de aplicación APP1 (60A en la figura 1), pero se aplica de manera similar a otros programas de aplicación y artículos de datos adecuados.
El controlador de memoria 48 comprende un módulo de control de acceso 86 para gestionar el acceso asegurado a la memoria no volátil 44. En algunas realizaciones, para gestionar el almacenamiento y control de acceso, el controlador de memoria asigna respectivos descriptores a al menos algunos de los artículos de datos almacenados en la memoria no volátil, por ejemplo, el controlador de memoria asigna el descriptor 90A al programa de aplicación APP1. En una realización, el controlador de memoria almacena los descriptores en la memoria no volátil. Los descriptores, por ejemplo, el descriptor 90A, habitualmente comprenden múltiples campos tal como aquellos listados en la presente:
• Dirección
• Tamaño (por ejemplo, en bytes)
• Identificador de versión (por ejemplo, un número de versión)
• Firma del artículo de datos
• Estado
• Derechos de acceso: por ejemplo, protección de lectura e indicadores de protección de escritura.
El campo de dirección en el descriptor puede incluir direcciones físicas, direcciones lógicas, o ambas. El campo de dirección se usa habitualmente para identificar una o más ubicaciones de almacenamiento. El campo de estado se puede utilizar para el control y la gestión, por ejemplo, para retener el estado de autenticación (por ejemplo, pasar o fallar) y el estado de intercambio de direcciones.
En algunas realizaciones, un artículo de datos determinado, tal como APP1, ocupa múltiples espacios de almacenamiento en la memoria no volátil, como se describirá a continuación. Los descriptores pueden comprender conjuntos separados de valores para al menos algunos de los campos por cada uno de los espacios de almacenamiento asignados al artículo de datos. Para habilitar (o deshabilitar) Un artículo de datos (por ejemplo, APP1) para la lectura, el controlador de memoria establece (o borra) el indicador de protección de lectura pertinente. De manera similar, para habilitar (o deshabilitar) la escritura o actualización del artículo de datos en la memoria no volátil, el controlador de memoria establece (o borra) el indicador de protección de escritura pertinente. Cuando el controlador de memoria solicita acceso al artículo de datos, el módulo de control de acceso 86 comprueba los derechos de acceso en el respectivo descriptor, por ejemplo, en el descriptor 90A de APP1, y permite o impide el acceso, en consecuencia.
El controlador de memoria puede establecer diferentes derechos de acceso a los diferentes espacios de almacenamiento del artículo de datos. Las operaciones de impedir y permitir el acceso a un espacio de almacenamiento se conocen en la presente como operaciones de “bloqueo” y “desbloqueo”, respectivamente. Por ejemplo, durante algún período de tiempo, el controlador de memoria puede desbloquear un espacio de almacenamiento de un artículo de datos sólo para lectura, y desbloquear otro espacio de almacenamiento del mismo artículo de datos sólo para escritura.
Cada descriptor se puede asociar con una respectiva clave secreta. La figura 2 representa la CLAVE180A, que se asocia con el respectivo descriptor 90A del programa de aplicación APP160A. Alternativamente, un artículo de datos y su respectivo descriptor se pueden asociar con diferentes respectivas claves secretas. En algunas realizaciones, obtener acceso a los campos de un descriptor (por ejemplo, 90A) requiere el conocimiento de la respectiva clave secreta (por ejemplo, 80A).
En algunas realizaciones, el controlador de memoria almacena un artículo de datos (por ejemplo, APP1) en un espacio de almacenamiento junto con una respectiva firma. En algunas realizaciones, el controlador de memoria almacena la firma en un campo del descriptor asignado al artículo de datos. El controlador de memoria utiliza la firma almacenada para verificar la integridad del artículo de datos en el espacio de almacenamiento pertinente. Para este fin, el controlador de memoria calcula la firma, y compara la firma calculada a la firma almacenada. El controlador de memoria decide que el artículo de datos no se ha manipulado (es decir, la comprobación de integridad ha pasado exitosamente) en respuesta a la detección de que la firma calculada coincide con la firma almacenada.
El controlador de memoria puede calcular la firma correspondiente a un artículo de datos en un respectivo espacio de almacenamiento, de diversas maneras. En algunas realizaciones, el controlador de memoria calcula la firma al calcular una función de cálculos de clave criptográfica adecuada, una función de cálculos de clave de SHA, sobre el espacio de almacenamiento. En algunas realizaciones, el controlador de memoria calcula la firma sobre el artículo de datos y su respectivo identificador de versión utilizando la clave secreta asociada con el artículo de datos. Alternativamente, el controlador de memoria calcula la firma usando cualquier método de cifrado de clave simétrica adecuado (usando la clave secreta pertinente), por ejemplo, el método de Estándar de Cifrado Avanzado (AES) configurado para operar, por ejemplo, en el modo de cadenas de bloques de Cifras (CBC).
En algunas realizaciones, el controlador de memoria valida un artículo de datos almacenado en la memoria no volátil (por ejemplo, utilizando firmas como se describe anteriormente) en respuesta a la recepción de un comando de validación adecuado del procesador 40. De manera alternativa o adicionalmente, el descriptor pertinente puede incluir un campo de validación que instruye al controlador de memoria para validar el respectivo artículo de datos sobre un respectivo espacio de almacenamiento en el que se almacena la versión utilizada actualmente del artículo de datos. Por ejemplo, después de concluir un proceso de reinicio del chip de memoria, el dispositivo de usuario o ambos, el controlador de memoria escanea los descriptores de los artículos de datos almacenados actualmente, y valida los artículos de datos que se indican para la validación en el respectivo descriptor.
En algunas realizaciones, el controlador de memoria recibe del procesador 40 un comando de almacenamiento destinada a un artículo de datos determinado, donde el comando de almacenamiento se firmó por el proveedor que tiene la clave secreta asociada con el descriptor del artículo de datos determinado. El comando de almacenamiento puede comprender, por ejemplo, un comando para bloquear o desbloquear un espacio de almacenamiento del artículo de datos determinado, un comando para validar el artículo de datos en un respectivo espacio de almacenamiento, o cualquier otro comando de almacenamiento adecuado. En estas realizaciones, el controlador de memoria verifica la autenticidad del comando de almacenamiento, utilizando la clave secreta, antes de ejecutar el comando de almacenamiento.
En algunas realizaciones, el controlador de memoria se desbloquea para escribir un espacio de almacenamiento en el que se va a escribir una versión actualizada del respectivo artículo de datos, y bloquea este espacio de almacenamiento cuando concluye la escritura de la versión actualizada. Por ejemplo, antes de escribir una versión actualizada de APP1 en la memoria no volátil, el controlador de memoria se desbloquea para escribir uno de los espacios de almacenamiento SEC_1P o SEC_2P.
En algunas realizaciones, para evitar el desbloqueo del espacio de almacenamiento durante un tiempo relativamente largo, el controlador de memoria escribe la versión actualizada del artículo de datos en el espacio de almacenamiento pertinente al enviar a la memoria no volátil múltiples comandos de escritura que cada uno se firma utilizando la clave secreta asociada con el respectivo artículo de datos. La memoria no volátil escribe la versión actualizada al verificar la firma de cada comando de escritura, y ejecutar los comandos de escritura sólo después de autenticar los comandos de escritura con base en sus respectivas firmas. En una realización, la firma se calcula sobre tanto el segundo artículo de datos como su respectivo identificador de versión. En estas realizaciones, el controlador de memoria ejecuta la comando de escritura sólo después de validar que el identificador de versión de la respectiva firma de la comando de escritura es más reciente que el identificador de versión de la versión utilizada actualmente del artículo de datos.
En algunas realizaciones, cada comando de escritura (que comprende, por ejemplo, 16 bytes) se firma por separado, y el controlador de memoria recibe, además, el identificador de verificación y la información de dirección dentro de los comandos firmados. El controlador de memoria recibe un "paquete" de actualización completo que incluye múltiples comandos de escritura, seguido por un comando de "protección de restablecimiento” firmado. El controlador de memoria almacena los datos transportados por los comandos de escritura verificados en la memoria no volátil, y entonces ejecuta el comando de protección de restablecimiento para autenticar todo el artículo de datos escrito. El controlador de memoria finalmente intercambia el mapeo de direcciones lógicas a físicas para reemplazar el artículo de datos almacenado con la versión actualizada del artículo de datos.
El módulo de control de acceso 86 comprende un mapeador de direcciones 88 que mapea entre direcciones lógicas en un espacio de direcciones lógicas utilizado por la computadora central 28, y direcciones físicas en un espacio de direcciones físicas utilizado en la memoria no volátil 44. El procesador 40 de la computadora central aplica operaciones de almacenamiento a la memoria de chip 32 usando direcciones lógicas, y habitualmente no es consciente de las direcciones físicas a las que se mapean las direcciones lógicas. En una realización, el mapeador de dirección 88 se implementa como una tabla almacenada en la memoria no volátil 44 o en alguna otra memoria del chip de memoria 32 (no mostrado).
En algunas realizaciones, a cada artículo de datos se le asigna uno o más espacios de almacenamiento en cada uno del espacio de direcciones lógicas y el espacio de direcciones físicas.
En el contexto de la presente divulgación y en las reivindicaciones, un espacio de almacenamiento que comprende múltiples direcciones también se conoce como una "ubicación de almacenamiento". Una ubicación de almacenamiento físico comprende múltiples direcciones físicas en el espacio de direcciones físicas, y una ubicación de almacenamiento lógico comprende múltiples direcciones lógicas en el espacio de direcciones lógicas. En algunas realizaciones, las direcciones en una ubicación de almacenamiento ocupan un intervalo contiguo de direcciones en el espacio de direcciones pertinente. Alternativamente, las direcciones en una ubicación de almacenamiento no son contiguas en el espacio de direcciones pertinente. En la descripción que sigue, los términos "espacio de almacenamiento" y "ubicación de almacenamiento" se utilizan indistintamente.
En la figura 2, al programa de aplicación APP1 de la figura 1 se le asignan dos espacios de almacenamiento denotados SEC_1L y SEC_2L en el espacio de direcciones lógicas, y dos espacios de almacenamiento denotados SEC_1P y SEC_2P en el espacio de direcciones físicas.
En algunas realizaciones, las direcciones lógicas de SEC_1L, denotadas LA1, sirven para leer la versión actualmente instalada de APP1 del chip de memoria, en tanto que las direcciones lógicas de SEC_2L, denotadas LA2, sirven para escribir una versión actualizada de APP1 en el chip de memoria. La versión actualmente utilizada de APP1 se puede almacenar en SEC_1 P o en SEC_2P de la memoria no volátil.
Cuando la versión actualmente utilizada de APP1 se almacena en SEC_1P, el mapeador de direcciones 88 mapea las direcciones lógicas LA1 a las direcciones físicas PA1 para leer el programa de aplicación APP1 desde la SEC_1 L. Cuando el controlador de memoria recibe una versión actualizada del programa de aplicación APP1, a través de las direcciones lógicas LA2, el mapeador de direcciones mapea las direcciones lógicas LA2 a las direcciones físicas PA2 para escribir la versión actualizada de APP1 en SEC_2P.
De manera similar, se puede acceder a la versión actualmente utilizada de APP1 y se puede almacenar en SEC_2P de la memoria no volátil para la lectura por parte del mapeador de direcciones que mapea las direcciones lógicas LA1 a las direcciones físicas pA2. En este caso, el controlador de memoria escribe la versión actualizada de APP1 en SEC_1P al mapear las direcciones lógicas LA2 a las direcciones físicas PA1 usando el mapeador de direcciones 88. La tabla 1 resume las alternativas de mapeo de lógica-física seleccionadas.
T l 1: M ir i n l i fí i
Figure imgf000008_0001
Al usar dos espacios de almacenamiento separados para cada artículo de datos (por ejemplo, APP1), el controlador de memoria puede leer la versión actualmente instalada de un artículo de datos desde un espacio de almacenamiento de la memoria no volátil, y escribir una versión del artículo de datos recibido para reemplazar el artículo de datos actualmente usado en un espacio de almacenamiento diferente de la memoria no volátil.
El controlador de memoria realmente reemplaza la versión utilizada actualmente por la versión recibida sólo después de validar la integridad y autenticidad del identificador de versión recibido y que la versión del artículo de datos recibido es más reciente que la versión utilizada actualmente. En algunas realizaciones, el controlador de memoria reemplaza el artículo de datos utilizado actualmente con la versión actualizada (y autenticada) del artículo de datos al intercambiar el mapeo de direcciones lógicas a físicas de SEC_1 P y SEC_2P. Después del intercambio, el controlador de memoria puede leer la versión actualizada del artículo de datos a través de las direcciones lógicas LA1. Además, el controlador de memoria puede escribir datos en el espacio de almacenamiento de la versión obsoleta a través de direcciones lógicas LA2.
En algunas realizaciones, los espacios de almacenamiento se asignan tal que cada dirección física en SEC_1 P tenga una dirección física correspondiente en SEC_2P tal que estas dos direcciones físicas difieran sólo en el bit más significativo del espacio de direcciones físicas. En estas realizaciones, el mapeador de direcciones intercambia entre SEC_1P y SEC_2P, al invertir el MSB de las direcciones físicas, logrando de esta manera una latencia mínima al realizar el remapeo de direcciones.
Las configuraciones del dispositivo de usuario 24 y el chip de memoria 32 en las figuras 1 y 2 son configuraciones de ejemplo, que se eligen puramente por el bien de la claridad conceptual. En realizaciones alternativas, también se puede utilizar cualquier otra configuración adecuada de un dispositivo de usuario y un chip de memoria. Los diferentes elementos del chip de memoria 32, tal como el controlador de memoria 48, la memoria no volátil 44 y el motor criptográfico 56, se pueden implementar utilizando cualquier hardware adecuado, tal como en un circuito integrado de aplicación específica (ASIC) o matriz de compuertas programables en el campo (FPGA). En algunas realizaciones, algunos elementos del chip de memoria 32 se pueden implementar utilizando software, o utilizando una combinación de elementos de hardware y software.
En algunas realizaciones, ciertos elementos del chip de memoria 32, tal como el controlador de memoria 48, pueden comprender un procesador de propósito general, que se programa en software para llevar a cabo las funciones descritas en la presente. El software se puede descargar al procesador en forma electrónica, a través de una red, por ejemplo, o puede, de manera alternativa o adicionalmente, proporcionarse y/o almacenarse en medios tangibles no transitorios, tal como memoria magnética, óptica, o electrónica.
En el dispositivo de usuario 24, la computadora central 28 y el chip de memoria 32 pueden comprender cada uno un troquel de semiconductor separado, y los dos troqueles residen en un paquete común o en paquetes separados. En algunas realizaciones, el controlador de memoria 48, la memoria no volátil 44 y el motor criptográfico 56, todos residen en un troquel común que comprende el chip de memoria 32.
Métodos para actualización segura de artículos de datos en un chip de memoria
La figura 3 es un diagrama de flujo que ilustra esquemáticamente un método para almacenar de manera segura un nuevo artículos de datos, de acuerdo con una realización que se describe en la presente. El método se puede ejecutar, por ejemplo, por el controlador de memoria 48 del chip de memoria 32. El método de la figura 3 se describe principalmente con referencia al artículo de datos APP1 (60A) de las figuras 1 y 2. El método es aplicable de manera similar, sin embargo, a artículos de datos de cualquier otro tipo adecuado. En el método de la figura 3, los identificadores de versión comprenden números de versión.
El método comienza con el controlador de memoria 48 que recibe para el almacenamiento el programa de aplicación APP1, en un paso de recepción 100. En el presente ejemplo, se supone que APP1 aún no está instalado en el chip de memoria 32. El controlador de memoria recibe adicionalmente para APP1 el respectivo número de versión y la firma. Cuando APP1 se origina por un proveedor autorizado, por ejemplo, PROVEEDOR1 (64A) en el presente ejemplo, el proveedor autorizado ha asignado el número de versión VER1 (62A) a APP1, y ha calculado la firma sobre APP1 y el número de versión usando la clave secreta CLAVE1 (80A), que el chip de memoria comparte con PROVEEDOR1.
En un paso de asignación de direcciones 104, el controlador de memoria asigna para APP1 direcciones lógicas LA1 y LA2 en ubicaciones de almacenamiento lógico SEC_1L y SEC_2L, respectivamente. El controlador de memoria mapea, usando el mapeador de direcciones 88, las direcciones lógicas LA1 y LA2 con las respectivas direcciones físicas pA1 y PA2 de las respectivas ubicaciones de almacenamiento físico SEC_1P y SEC_2P en la memoria no volátil. En algunas realizaciones, el controlador de memoria inicializa un descriptor (90A) para APP1 en la memoria no volátil.
En un paso de escritura 108, el controlador de memoria desbloquea las direcciones físicas PA1 para escribir, por ejemplo, utilizando los derechos de acceso en el descriptor 90A de APP1, y escribe el artículo de datos recibido APP1 en las direcciones físicas PA1 de la ubicación de almacenamiento físico SEC_1P a través de las direcciones lógicas LA1 de la ubicación de almacenamiento lógico SEC_1L.
En un paso de verificación 112, el controlador de memoria verifica la autenticidad e integridad de APP1 que se almacenó en las direcciones físicas PA1. Para este fin, el controlador de memoria calcula la firma sobre la APP1 almacenada, incluyendo el número de versión recibido, y se compara a la firma recibida en el paso 100. Si la firma calculada y la firma recibida coinciden, APP1 y su número de versión recibido se autentican exitosamente.
En un paso de inicialización 116, en respuesta a una verificación exitosa en el paso 112, el controlador de memoria almacena el número de versión recibido VER1 de APP1, por ejemplo, en el respectivo descriptor 90A. El número de versión almacenado se utilizará como un identificador de versión de referencia para aceptar actualizaciones posteriores de APP1 que se emiten por PROVEEDOR1 para su descarga más tarde que APP1. El controlador de memoria asigna además direcciones lógicas LA1 (de ubicación de almacenamiento lógico s Ec_1L) para leer APP1, y direcciones lógicas LA2 (de ubicación de almacenamiento lógico SEC_2L) para escribir versiones actualizadas de APP1, al establecer los indicadores de derechos de acceso de lectura y escritura en el descriptor 90A. Después del paso 116, el método termina.
La figura 4 es un diagrama de flujo que ilustra esquemáticamente un método para actualizar de manera segura un artículo de datos almacenado, de acuerdo con una realización que se describe en la presente. El método se puede ejecutar, por ejemplo, por el controlador de memoria 48 del chip de memoria 32. Al describir el método de la figura 4, se supone que el programa de aplicación APP1 ya estaba instalado en el chip de memoria, por ejemplo, usando el método de la figura 3, y ocupa las direcciones físicas PA1 de la ubicación de almacenamiento físico s Ec_1p . El método es aplicable de manera similar, sin embargo, a artículos de datos de cualquier otro tipo adecuado. En el método de la figura 4, los identificadores de versión comprenden números de versión.
El método comienza, en un paso de recepción 200, con el controlador de memoria 48 recibiendo una versión actualizada APP1' para reemplazar la versión APP1 que se almacena actualmente en las direcciones físicas PA1 de la ubicación de almacenamiento físico SEC_1P en la memoria no volátil. El controlador de memoria recibe adicionalmente para APP1' un respectivo número de versión actualizado VER1' y una respectiva firma.
Cuando APP1 se origina por un proveedor autorizado que comparte la CLAVE1 con el chip de memoria (PROVEEDOR1 en el caso de APP1), el proveedor autorizado ha asignado el número de versión actualizado VER1' a APP1', y ha calculado la firma sobre APP1' y VERI' usando la clave secreta CLAVE1 (80A). Además, el proveedor autorizado asigna el número de versión actualizado VER1' tal que VER1'>VER1, es decir, mayor que el número de versión de la versión actualmente instalada de APP1.
En un paso de escritura 204, el controlador de memoria escribe la versión actualizada recibida APP1' en las direcciones físicas PA2 de la ubicación de almacenamiento físico SEC_2P mediante las direcciones lógicas LA2 de la ubicación de almacenamiento lógico SEC_2L. En un paso de validación 208, el controlador de memoria autentica APP1' y el número de versión actualizado VER1' usando la firma recibida en el paso 200 y la clave secreta CLAVE1 asociada con el artículo de datos APP1. El controlador de memoria realiza la autenticación de manera similar al paso 112 de la figura 3 anterior, pero para APP1' en las direcciones físicas PA2 de la ubicación de almacenamiento físico SEC_2P.
En un paso de verificación de número de versión 212, en respuesta a la detección de que VER1' se autenticó exitosamente, el controlador de memoria valida además que VER1' es igual a o mayor que VER1, es decir, el número de versión de APP1 almacenado actualmente. Puesto que sólo el proveedor autorizado posee la clave compartida pertinente (CLAVE1) y puede firmar APP1 y un número de versión seleccionado, las validaciones en los pasos 208 y 212 proporcionan protección contra los ataques de restablecimiento.
En un paso de intercambio 216, después de la autenticación exitosa en el paso 208, y la validación exitosa en el paso 212, el controlador de memoria vuelve a mapear las direcciones lógicas a físicas. Específicamente, el mapeador de direcciones 88 mapea las direcciones lógicas LA1 de la ubicación de almacenamiento lógico SEC_1L a las direcciones físicas PA2 de la ubicación de almacenamiento físico SEC_2P (en la que ahora se almacena la versión actualizada APP1'), y mapea las direcciones lógicas LA2 de la ubicación de almacenamiento lógico SEC_2L a las direcciones físicas PA1 de la ubicación de almacenamiento físico SEC_1P, para escribir una actualización posterior de APP1, cuando esté disponible.
En algunas realizaciones, el controlador de memoria actualiza un artículo de datos utilizando una operación atómica individual. En estas realizaciones, el controlador de memoria ejecuta los pasos 208, 212 y 216 anteriores como una operación interrumpible que comprende: autenticar el identificador de versión para producir un resultado de autenticación (paso 208), comparar entre los números de versión recibidos y almacenados (paso 212), y reemplazar condicionalmente el artículo de datos almacenado con el artículo de datos recibido con base en el resultado de autenticación y en la comparación (paso 216). Esta realización asegura que el controlador de memoria actualice realmente el artículo de datos sólo cuando se satisfagan todas las condiciones requeridas.
Las realizaciones descritas anteriormente se dan a modo de ejemplo, y también se pueden utilizar otras realizaciones adecuadas. Por ejemplo, aunque en las realizaciones descritas anteriormente a los artículos de datos se les asignan dos espacios de almacenamiento en la memoria no volátil, en realizaciones alternativas un artículo de datos se puede asociar con más de dos espacios de almacenamiento, por ejemplo, para almacenar múltiples versiones del artículo de datos.
En las realizaciones descritas anteriormente, en general asumimos que la clave compartida (por ejemplo, CLAVE180A) es la misma en el lado de proveedor y el chip de memoria. En realizaciones alternativas, se pueden compartir claves no simétricas que admiten firmar un artículo de datos en el lado de proveedor y verificar la autenticidad del artículo de datos en el chip de memoria.
Aunque en las realizaciones descritas anteriormente se utilizan claves compartidas tal como la CLAVE180A y la CLAVE280B para la autenticación, estas claves u otras claves, por ejemplo, derivadas de la CLAVE1 y la CLAVE2, se pueden utilizar para el cifrado de extremo a extremo de los artículos de datos enviados a través de la red de comunicación.
En las realizaciones descritas anteriormente, se hace referencia principalmente a dos ubicaciones de almacenamiento lógico por artículo de datos (es decir, SEC_1L y SEC_2L), donde una de las ubicaciones de almacenamiento lógico se utiliza para leer el artículo de datos y la otra se utiliza para escribir una versión actualizada del artículo de datos. Sin embargo, esta configuración no es obligatoria, y en realizaciones alternativas, las dos ubicaciones de almacenamiento lógico pueden intercambiar funciones (por ejemplo, dinámicamente) entre lectura y escritura.
Se apreciará que las realizaciones descritas anteriormente se citan a manera de ejemplo, y que las siguientes reivindicaciones no se limitan a lo que se ha mostrado y descrito particularmente anteriormente en la presente. La invención se define por las reivindicaciones anexas.

Claims (12)

REIVINDICACIONES
1. Un sistema de almacenamiento asegurado, que comprende:
un chip de memoria (32);
una memoria no volátil (44) en el chip de memoria, configurada para almacenar un primer artículo de datos (APP1), para almacenar un respectivo primer identificador de versión (VER1) asignado al primer artículo de datos, y para almacenar además una clave secreta (CLAVE1), donde el primer artículo de datos se firma por la clave secreta; y
un controlador de hardware (48) en el chip de memoria, configurado para:
recibir un segundo artículo de datos (APP1') para reemplazar el primer artículo de datos en la memoria no volátil, donde el segundo artículo de datos se acompaña por un segundo identificador de versión (VER1') y una firma, donde el secreto se proporciona por un proveedor del segundo artículo de datos y se comparte por el controlador de hardware y el proveedor; autenticar al menos el segundo identificador de versión usando la firma;
hacer una comparación entre el primer identificador de versión almacenado y el segundo identificador de versión; y reemplazar el primer artículo de datos con el segundo artículo de datos sólo en respuesta a la verificación de que (i) el segundo identificador de versión se ha autenticado exitosamente, y (ii) el segundo artículo de datos es más reciente que el primer artículo de datos, como se indica por la comparación entre el primer identificador de versión almacenado y el segundo identificador de versión autenticado,
donde el controlador de hardware se configura para autenticar el segundo identificador de versión al verificar la firma con base en la clave secreta compartida,
donde el controlador de hardware se configura para calcular la firma para el segundo artículo de datos recibido para producir una firma calculada, con base en la clave secreta compartida y en al menos el segundo identificador de versión, y para verificar si la firma calculada coincide o no con la firma recibida;
donde en respuesta a la firma calculada que coincide con la firma recibida, el segundo identificador de versión se autentica exitosamente; y
donde el chip de memoria comprende además un bus de comunicación interno (52) que conecta la memoria no volátil y el controlador de hardware, tal que la información transmitida a través del bus de comunicación es inaccesible fuera del chip de memoria.
2. El sistema de almacenamiento de acuerdo con la reivindicación 1, donde el controlador de hardware se configura para (i) autenticar al menos el identificador de versión para producir un resultado de autenticación, (ii) realizar la comparación, y (iii) reemplazar condicionalmente el primer artículo de datos con el segundo artículo de datos con base en el resultado de autenticación y en la comparación, en una operación ininterrumpible individual.
3. El sistema de almacenamiento de acuerdo con cualquier reivindicación anterior, donde el primer artículo de datos ocupa una primera ubicación de almacenamiento físico (SEC_1 P) en un espacio de direcciones físicas de la memoria no volátil, donde el controlador de hardware se configura para asignar para el segundo artículo de datos una segunda ubicación de almacenamiento físico (SEC_2P) en el espacio de direcciones físicas, para mapear entre direcciones físicas de la primera ubicación de almacenamiento físico y direcciones lógicas de una primera ubicación de almacenamiento lógico (SEC_1L) en un espacio de direcciones lógicas utilizado por el sistema de almacenamiento, y para mapear entre direcciones físicas de la segunda ubicación de almacenamiento físico y direcciones lógicas de una segunda ubicación de almacenamiento lógico (SEC_2L) en el espacio de direcciones lógicas.
4. El sistema de almacenamiento de acuerdo con la reivindicación 3,
donde el controlador de hardware se configura para reemplazar el primer artículo de datos con el segundo artículo de datos al escribir el segundo artículo de datos en la segunda ubicación de almacenamiento físico de la memoria no volátil mediante la segunda ubicación de almacenamiento lógico;
el controlador de hardware se configura para reemplazar el primer artículo de datos con el segundo artículo de datos al volver a mapear direcciones lógicas de la primera ubicación de almacenamiento lógico a direcciones físicas de la segunda ubicación de almacenamiento físico para leer el segundo artículo de datos;
el controlador de hardware se configura para asignar un indicador de protección de escritura para bloquear y desbloquear para escribir la segunda ubicación de almacenamiento físico, para desbloquear la segunda ubicación de almacenamiento físico antes de escribir el segundo artículo de datos en la segunda ubicación de almacenamiento físico, y para bloquear la segunda ubicación de almacenamiento físico después de concluir la escritura del segundo artículo de datos en la segunda ubicación de almacenamiento físico.
5. El sistema de almacenamiento de acuerdo con la reivindicación 3, donde el controlador de hardware se configura para escribir el segundo artículo de datos en la segunda ubicación de almacenamiento físico al enviar a la memoria no volátil múltiples comandos de escritura que cada uno porta una respectiva parte del segundo artículo de datos;
cada uno de los comandos de escritura comprende una respectiva firma de comando calculada usando la clave secreta compartida, y donde el controlador de hardware se configura para ejecutar cada comando de escritura sólo después de verificar la respectiva firma de comando usando la clave secreta compartida; la firma se calcula tanto sobre el segundo artículo de datos como sobre el segundo identificador de versión, y donde el controlador de hardware se configura para ejecutar el comando de escritura sólo después de validar que el segundo identificador de versión de la respectiva firma de comando es más reciente que el primer identificador de versión.
6. El sistema de almacenamiento de acuerdo con cualquiera de las reivindicaciones anteriores, donde el controlador de hardware se configura para almacenar el segundo identificador de versión, en la memoria no volátil, para comparar entre el segundo identificador de versión y un identificador de versión de una actualización de versión posterior.
7. Un método para almacenamiento asegurado, que comprende:
almacenar un primer artículo de datos (APP1) y un respectivo primer identificador de versión (VER1) asignado al primer artículo de datos en una memoria no volátil (44) en un sistema de almacenamiento, donde la memoria no volátil está en un chip de memoria (32);
almacenar una clave secreta (CLAVE1) en la memoria no volátil en el sistema de almacenamiento, donde el primer artículo de datos se firma por la clave secreta;
recibir, por un controlador de hardware (48) en el chip de memoria, un segundo artículo de datos (APP1') para reemplazar el primer artículo de datos en la memoria no volátil, donde el segundo artículo de datos se acompaña por un segundo identificador de versión (VER1') y una firma, y la clave secreta se proporciona por un proveedor del segundo artículo de datos y se comparte por el controlador de hardware y el proveedor;
autenticar, por el controlador de hardware en el chip de memoria, al menos el segundo identificador de versión usando la firma;
hacer, por el controlador de hardware en el chip de memoria, una comparación entre el primer identificador de versión almacenado y el segundo identificador de versión autenticado; y
reemplazar, por el controlador de hardware en el chip de memoria, el primer artículo de datos con el segundo artículo de datos sólo en respuesta a verificar que (i) el segundo identificador de versión se autentica exitosamente, y (ii) el segundo artículo de datos es más reciente que el primer artículo de datos, como se indica por la comparación entre el primer identificador de versión almacenado y el segundo identificador de versión autentificado,
donde la autenticación del al menos el segundo identificador de versión comprende: verificar la firma con base en la clave secreta compartida,
donde verificar la firma comprende:
calcular la firma para el segundo artículo de datos recibido para producir una firma calculada con base en la clave secreta compartida y en al menos el segundo identificador de versión; y
verificar si o no la firma calculada coincide con la firma recibida, y
donde en respuesta a la firma calculada que coincide con la firma recibida, el segundo identificador de versión se autentica exitosamente, y
donde el chip de memoria (32) comprende un bus de comunicación interno (52) que conecta la memoria no volátil y el controlador de hardware, tal que la información transmitida a través del bus de comunicación es inaccesible fuera del chip de memoria.
8. El método de acuerdo con la reivindicación 7, y que comprende aplicar una operación ininterrumpible individual que comprende (i) autenticar al menos el identificador de versión para producir un resultado de autenticación, (ii) realizar la comparación, y (iii) reemplazar condicionalmente el primer artículo de datos con el segundo artículo de datos con base en el resultado de autenticación y en la comparación.
9. El método de acuerdo con cualquiera de las reivindicaciones anteriores 7 u 8, donde el primer artículo de datos ocupa una primera ubicación de almacenamiento físico (SEC_1 P) en un espacio de direcciones físicas de la memoria no volátil, y que comprende asignar para el segundo artículo de datos una segunda ubicación de almacenamiento físico (SEC_2P) en el espacio de direcciones físicas, mapear entre direcciones físicas de la primera ubicación de almacenamiento físico y direcciones lógicas de una primera ubicación de almacenamiento lógico (SEC_1L) en un espacio de direcciones lógicas utilizado por el sistema de almacenamiento, y mapear entre direcciones físicas de la segunda ubicación de almacenamiento físico y direcciones lógicas de una segunda ubicación de almacenamiento lógico (SEC_2L) en el espacio de direcciones lógicas.
10. El método de acuerdo con la reivindicación 9, donde reemplazar el primer artículo de datos con el segundo artículo de datos comprende escribir el segundo artículo de datos en la segunda ubicación de almacenamiento físico de la memoria no volátil a través de la segunda ubicación de almacenamiento lógico;
reemplazar el primer artículo de datos con el segundo artículo de datos comprende volver a mapear direcciones lógicas de la primera ubicación de almacenamiento lógico a direcciones lógicas de la segunda ubicación de almacenamiento físico para leer el segundo artículo de datos; reemplazar el primer artículo de datos con el segundo artículo de datos comprende asignar un indicador de protección de escritura para bloquear y desbloquear para escribir la segunda ubicación de almacenamiento físico, desbloquear la segunda ubicación de almacenamiento físico antes de escribir el segundo artículo de datos en la segunda ubicación de almacenamiento físico, y bloquear la segunda ubicación de almacenamiento físico después de concluir la escritura del segundo artículo de datos en la segunda ubicación de almacenamiento físico.
11. El método de acuerdo con cualquiera de las reivindicaciones anteriores 9 a 10, donde reemplazar el primer artículo de datos con el segundo artículo de datos comprende escribir el segundo artículo de datos en la segunda ubicación de almacenamiento físico al enviar a la memoria no volátil múltiples comandos de escritura que cada uno porta una respectiva parte del segundo artículo de datos;
cada uno de los comandos de escritura comprende una respectiva firma de comando calculada usando la clave secreta compartida, y que comprende ejecutar cada comando de escritura, en la memoria no volátil, solo después de verificar la respectiva firma de comando usando la clave secreta compartida; la firma de comando se calcula tanto sobre el segundo artículo de datos como sobre el segundo identificador de versión, y donde ejecutar cada comando de escritura comprende ejecutar el comando de escritura sólo después de validar que el segundo identificador de versión de la respectiva firma de comando es más reciente que el primer identificador de versión.
12. El método de acuerdo con cualquiera de las reivindicaciones anteriores 7 a 11, y que comprende almacenar el segundo identificador de versión en la memoria no volátil para comparar entre el segundo identificador de versión y un identificador de versión de una actualización de versión posterior.
ES17187862T 2016-08-30 2017-08-25 Actualización de versión anti-restablecimiento en chip de memoria asegurada Active ES2938363T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662381028P 2016-08-30 2016-08-30
US15/670,062 US10754988B2 (en) 2016-08-30 2017-08-07 Anti-rollback version upgrade in secured memory chip

Publications (1)

Publication Number Publication Date
ES2938363T3 true ES2938363T3 (es) 2023-04-10

Family

ID=59772403

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17187862T Active ES2938363T3 (es) 2016-08-30 2017-08-25 Actualización de versión anti-restablecimiento en chip de memoria asegurada

Country Status (6)

Country Link
US (1) US10754988B2 (es)
EP (1) EP3291122B1 (es)
KR (2) KR20180025261A (es)
CN (2) CN120973437A (es)
ES (1) ES2938363T3 (es)
TW (1) TWI676116B (es)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107678762B (zh) * 2017-09-26 2020-08-14 杭州中天微系统有限公司 一种系统版本升级方法及装置
CN108985049A (zh) * 2018-06-06 2018-12-11 晶晨半导体(上海)股份有限公司 防回滚方法及系统
US11258772B2 (en) * 2018-06-19 2022-02-22 Cypress Semiconductor Corporation Secured communication from within non-volatile memory device
JP6697038B2 (ja) * 2018-07-31 2020-05-20 日本電信電話株式会社 情報処理装置、検証方法および検証プログラム
US11263124B2 (en) 2018-08-03 2022-03-01 Micron Technology, Inc. Host-resident translation layer validity check
US11100228B2 (en) * 2018-10-25 2021-08-24 Dell Products, L.P. System and method to recover FPGA firmware over a sideband interface
CN109460249A (zh) * 2018-11-07 2019-03-12 绿驰汽车科技(上海)有限公司 一种控制模块刷新方法
US11226907B2 (en) 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11226894B2 (en) * 2018-12-21 2022-01-18 Micron Technology, Inc. Host-based flash memory maintenance techniques
JP2020119298A (ja) * 2019-01-24 2020-08-06 キオクシア株式会社 メモリシステム
CN110244976A (zh) * 2019-05-21 2019-09-17 深圳壹账通智能科技有限公司 应用程序版本切换方法及装置
CN110412907A (zh) * 2019-06-11 2019-11-05 武汉欣叶电子科技有限公司 一种香氛发生器、车载香氛控制系统及方法
US20200396054A1 (en) * 2019-06-17 2020-12-17 Macronix International Co., Ltd. Secure Memory Read
CN111108734B (zh) * 2019-06-26 2022-05-31 蚂蚁双链科技(上海)有限公司 基于存储空间互换的改进的防重放设备
US11301566B2 (en) * 2019-07-03 2022-04-12 Ati Technologies Ulc Firmware anti-rollback
US11409877B2 (en) 2020-03-27 2022-08-09 Intel Corporation Firmware verification mechanism
CN112084538A (zh) * 2020-09-10 2020-12-15 上海商米科技集团股份有限公司 一种用于终端设备的防固件被复制方法以及系统
US11681514B2 (en) * 2020-12-29 2023-06-20 Pixart Imaging Inc. Mouse chip easily updating firmware and operating method thereof
US12190101B2 (en) 2020-12-29 2025-01-07 Pixart Imaging Inc. Operating method of mouse chip
EP4312136A1 (en) * 2022-07-25 2024-01-31 Nxp B.V. Apparatuses and methods for verification of updated data-set
US20240086170A1 (en) * 2022-09-09 2024-03-14 Renesas Electronics Corporation Software update system and software update method
US20240160749A1 (en) * 2022-11-10 2024-05-16 International Business Machines Corporation Security and reliability of cloud-based systems by removing device firmware persistence
US12360893B2 (en) 2023-09-07 2025-07-15 Texas Instruments Incorporated Address space mapping
EP4621619A1 (en) * 2024-03-18 2025-09-24 Nicoventures Trading Limited Aerosol provision system
KR20250148010A (ko) 2024-04-03 2025-10-14 영남대학교 산학협력단 검증용 기판을 이용한 마이크로 엘이디 전계발광 검사장비

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801994B2 (en) * 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
JP2003256228A (ja) * 2002-02-28 2003-09-10 Denso Corp プログラム書換装置
US7844367B2 (en) * 2003-12-23 2010-11-30 Rain Bird Corporation Code replacement for irrigation controllers
US20060069849A1 (en) * 2004-09-30 2006-03-30 Rudelic John C Methods and apparatus to update information in a memory
US7761922B1 (en) * 2005-02-28 2010-07-20 Adobe Systems Inc. Methods and apparatus for contemporaneously acquiring and certifying content
GB2430774B (en) * 2005-10-03 2007-08-08 Nec Technologies Method of software updating and related device
US20070168668A1 (en) * 2005-12-08 2007-07-19 Chang Robert C Media card with command pass through mechanism
JP2007219802A (ja) * 2006-02-16 2007-08-30 Hitachi Global Storage Technologies Netherlands Bv 記憶装置、そのコントローラ、および、その制御方法
ATE470909T1 (de) * 2006-04-24 2010-06-15 Ericsson Telefon Ab L M Prüfung der berechtigung der installation einer softwareversion
US20080307507A1 (en) * 2007-06-08 2008-12-11 Conley Kevin M Memory device using time from a trusted host device
WO2009156302A1 (en) * 2008-06-23 2009-12-30 Nxp B.V. Electronic device and method of software or firmware updating of an electronic device
US8689206B2 (en) * 2009-03-05 2014-04-01 International Business Machines Corporation Isolating operating system in-memory modules using error injection
US8364886B2 (en) * 2010-01-26 2013-01-29 Seagate Technology Llc Verifying whether metadata identifies a most current version of stored data in a memory space
JP2011227611A (ja) * 2010-04-16 2011-11-10 Sony Corp メモリ装置、ホスト装置、およびメモリシステム
EP2629226B1 (en) * 2010-10-14 2017-08-09 Fujitsu Limited Content data playback device, update management method, and update management program
US8745612B1 (en) * 2011-01-14 2014-06-03 Google Inc. Secure versioning of software packages
WO2012127266A1 (en) * 2011-03-23 2012-09-27 Sandisk Il Ltd. Storage device and method for updating data in a partition of the storage device
US9146683B2 (en) * 2011-04-20 2015-09-29 Seagate Technology Llc Logical block address mapping
CN102243595B (zh) * 2011-08-03 2014-02-19 浙江大学 基于MMU架构的Java Card系统组件更新方法
CN102724308A (zh) * 2012-06-13 2012-10-10 腾讯科技(深圳)有限公司 软件更新方法及软件更新系统
US9910659B2 (en) * 2012-11-07 2018-03-06 Qualcomm Incorporated Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory
US20140250290A1 (en) * 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
WO2014138626A1 (en) * 2013-03-08 2014-09-12 Robert Bosch Gmbh Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
WO2016057006A2 (en) * 2013-07-16 2016-04-14 Intel Corporation Mobile wallet detection at a contactless point of sale terminal
JP5876017B2 (ja) * 2013-08-30 2016-03-02 株式会社ソニー・コンピュータエンタテインメント 周辺機器制御装置および情報処理装置
US9898410B2 (en) * 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
WO2015065333A1 (en) * 2013-10-29 2015-05-07 Hewlett-Packard Development Company, L.P. Mapping virtual memory pages to physical memory pages
US10203876B2 (en) * 2013-11-22 2019-02-12 Nec Corporation Storage medium apparatus, method, and program for storing non-contiguous regions
US9230634B2 (en) * 2013-12-09 2016-01-05 Qualcomm Incorporated Refresh scheme for memory cells with next bit table
KR101527779B1 (ko) * 2014-01-13 2015-06-10 현대자동차주식회사 효율적인 차량용 리프로그래밍 장치 및 그 제어방법
US9460312B2 (en) * 2014-03-11 2016-10-04 Qualcomm Incorporated Data integrity protection from rollback attacks for use with systems employing message authentication code tags
US9983878B2 (en) * 2014-05-15 2018-05-29 International Business Machines Corporation Branch prediction using multiple versions of history data
US9804922B2 (en) * 2014-07-21 2017-10-31 Sandisk Technologies Llc Partial bad block detection and re-use using EPWR for block based architectures
US9621549B2 (en) * 2014-07-25 2017-04-11 Qualcomm Incorporated Integrated circuit for determining whether data stored in external nonvolative memory is valid
US9658782B2 (en) * 2014-07-30 2017-05-23 Excelero Storage Ltd. Scalable data using RDMA and MMIO
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9817752B2 (en) * 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9710675B2 (en) * 2015-03-26 2017-07-18 Intel Corporation Providing enhanced replay protection for a memory
JP6595822B2 (ja) * 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
GB2545250B (en) * 2015-12-10 2019-06-12 Advanced Risc Mach Ltd Devices and method of operation thereof
US10339317B2 (en) * 2015-12-18 2019-07-02 Intel Corporation Computing devices
US9940123B1 (en) * 2015-12-29 2018-04-10 Amazon Technologies, Inc. Updating device code through a bus
US10496388B2 (en) * 2016-03-24 2019-12-03 Intel Corporation Technologies for securing a firmware update
US10673811B2 (en) * 2016-07-25 2020-06-02 ColorTokens, Inc. Updating address mapping for local and network resources
US10380342B2 (en) * 2016-07-29 2019-08-13 Qualcomm Incorporated Kernel-based detection of target application functionality using virtual address mapping
US11461485B2 (en) * 2016-08-12 2022-10-04 ALTR Solutions, Inc. Immutable bootloader and firmware validator

Also Published As

Publication number Publication date
CN120973437A (zh) 2025-11-18
KR20200064968A (ko) 2020-06-08
EP3291122B1 (en) 2022-11-23
US10754988B2 (en) 2020-08-25
US20180060607A1 (en) 2018-03-01
KR102254256B1 (ko) 2021-05-21
TWI676116B (zh) 2019-11-01
KR20180025261A (ko) 2018-03-08
TW201807616A (zh) 2018-03-01
EP3291122A1 (en) 2018-03-07
CN107797827A (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
ES2938363T3 (es) Actualización de versión anti-restablecimiento en chip de memoria asegurada
US20250211452A1 (en) System and methods for confidential computing
US10997297B1 (en) Validating firmware for data storage devices
US11368299B2 (en) Self-encryption drive (SED)
US8286004B2 (en) Saving encryption keys in one-time programmable memory
US8909900B2 (en) Storage device and method for updating data in a partition of the storage device
ES2873598T3 (es) Sistema de memoria y procedimiento de enlace entre el mismo y el host
US20100023777A1 (en) System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US11088856B2 (en) Memory storage system, host system authentication method and memory storage device
CN110795126A (zh) 一种固件安全升级系统
US11683155B2 (en) Validating data stored in memory using cryptographic hashes
US12432071B2 (en) Secure serial peripheral interface (SPI) flash
KR102695289B1 (ko) 저장 디바이스와 호스트 디바이스 사이의 데이터 전송을 인증하는 모듈 및 방법
JP2024507531A (ja) デジタルデバイスのためのトラステッドコンピューティング
US10452565B2 (en) Secure electronic device
US11947676B2 (en) Processor system with a communication interface
KR20160141462A (ko) 단말의 보안 데이터 관리 장치 및 그 방법
US11775650B2 (en) Processor system
US20200012823A1 (en) Secure storage system
US20150169901A1 (en) Method and Systems for Integrity Checking a Set of Signed Data Sections
KR20240158217A (ko) 전자 디바이스의 소유권 관리