diferencia entre la retención de datos en flash y en EEPROM

5

En una recomendación de seguridad ( Perfil de protección del sistema operativo móvil , §4.2.1 FCS_CKM_EXT. 4.1), se dan las siguientes instrucciones para borrar de forma segura una clave criptográfica de la memoria:

  
  • Para EEPROM no volátil, la ceroización se ejecutará mediante una única sobrescritura directa que consiste en un patrón pseudoaleatorio (...).
  •   
  • Para (...) memoria flash no volátil, la ceroización se ejecutará mediante una sola sobrescritura directa que consiste en una sola sobrescritura directa con ceros (...).
  •   

En inglés simple: puedes borrar datos en flash simplemente a cero, pero para EEPROM debes sobrescribir con un patrón aleatorio.

No tengo otra información para inferir lo que diferencia entre EEPROM y flash significa. Supongo que las tecnologías serían las de los teléfonos inteligentes típicos ya que este es el tipo de dispositivo al que se dirige este documento de seguridad.

¿Cuál es la diferencia entre sobrescribir datos en EEPROM y sobrescribir datos en memoria flash, eso explicaría los diferentes requisitos?

[Relacionado: ¿De dónde vienen estas reglas? ]

    
pregunta Gilles

4 respuestas

1

Si habla en términos generales, la diferencia principal entre flash y EE prom es simplemente arquitectónica con respecto al acceso a los datos, el mecanismo real de escritura / borrado es idéntico en el nivel de celda. Qué circuitos envuelven alrededor de esas celdas para mover los bits hacia y desde la celda, qué paralelo tiene la operación y cuántos suceden al mismo tiempo donde están las diferencias reales. Por lo tanto, una declaración precisa sería, si ha implementado una celda FAMOS o FGMOS, puede hacer un flash o un chip EEPROM a partir de eso, y la respuesta sería sí.

Pero tenga en cuenta que será difícil comparar varios EEPROMS con dispositivos Flash simplemente debido a las diferencias en la tecnología del proceso, las capacidades del proceso y su resistencia al desgaste.

Las EEPROMS tienden a ser pequeñas y, por lo tanto, tienden a ser más robustas y están diseñadas para un almacenamiento a largo plazo que afecta el diseño del proceso. En el otro extremo, puede ver que hay Flash de varios niveles optimizado para la densidad de bits. esta es otra optimización.

Todas las celdas de compuerta flotante se caracterizan por su uso del túnel Fowler-Nordheim (F-N) para la inyección de la carga en la compuerta flotante a través del óxido de la compuerta. La tunelización F-N a su vez se caracteriza por la tunelización cuántica mecánica a través de un pozo triangular en campos eléctricos elevados. El punto aquí es que la tunelización es inherentemente dañina para el óxido de la puerta y deja evidencia residual. La solución recomendada anteriormente es asegurarse de que cada celda esté desgastada en la misma cantidad para que no pueda volver a leer la evidencia de lo que había allí; cuando se pone de esa manera, realmente parece una buena idea.

Muy pocas personas / laboratorios tienen la capacidad de desarmar un dado y leer el daño residual en el dispositivo de la puerta flotante que se ha borrado. Es posible, ciertamente, pero no será a través del sondeo del dispositivo y sería muy difícil. Sería mejor capturar el dispositivo con carga aún en la puerta (pero esto plantea diferentes problemas en sí mismo).

    
respondido por el placeholder
2

El objetivo de la rutina de borrado es que el estado de carga de cada bit sea independiente de los datos escritos previamente. Si bien el circuito de un chip puede ser incapaz de distinguir un bit que está cargado al 70% de uno que está cargado al 98%, o un bit que está cargado al 30% de uno que está cargado al 2%, alguien con un equipo de sondeo suficientemente sofisticado puede ser capaz de para hacer tales distinciones.

Si un chip de memoria está diseñado de tal manera que al intentar borrar alguna área de la memoria se activará un circuito de "descarga" durante un período de tiempo fijo, entonces los bits que solían "cargarse" antes de que finalice la operación de borrado con más carga después que los bits que no lo eran (los circuitos de descarga no pueden agotar toda la carga; más bien, al encenderla durante un cierto número de microsegundos se drenará aproximadamente la mitad de la carga). Dado que el circuito de borrado para los chips de memoria generalmente no se puede controlar por bits, y dado que dejarlo encendido el tiempo suficiente para eliminar todos los residuos de carga detectables provocaría estrés en el dispositivo, el circuito de borrado no es en sí mismo en general suficiente para destruir de manera confiable información de tal manera que un equipo suficientemente sofisticado no pueda recuperarla.

La forma ideal de borrar información en un chip sería escribirle repetidamente patrones de datos aleatorios y luego borrarlos. Desafortunadamente, eso no siempre es práctico. Para un dispositivo que permita que el área que contiene una llave se borre sin alterar nada más, eso sería lo deseable. Sin embargo, realizar un borrado y luego sobrescribir los datos también es bastante bueno. Realizar un borrado seguido y luego escribir todos los ceros probablemente sería tan bueno como escribir datos aleatorios, pero simplemente no se escribirían los bits que aún no se han escrito (en una sola operación, y sin hacer el borrado primero). En realidad, el enfoque ideal para un solo ciclo de escritura / borrado podría ser poner a cero los bits en grupos aleatorios, luego realizar un borrado y luego poner a cero los bits en diferentes grupos aleatorios, pero ese enfoque solo funcionará en dispositivos que permitan a los bytes Se programará varias veces entre ciclos de borrado. Sospecho que el uso de datos aleatorios en lugar de todos ceros está destinado a forzar el rendimiento de un ciclo de borrado.

La forma en que se escriben físicamente los bits en los dispositivos flash es tal que a menudo habrá algunas variaciones impredecibles en el estado de carga de los bits "cero". Por lo tanto, escribir ceros en un dispositivo flash sin borrarlo primero probablemente hará un mejor trabajo para hacer que la información sea irrecuperable que escribir ceros en una EEPROM sin borrarla primero. Además, el borrado de un chip flash generalmente requiere que se programe con todos los ceros primero (los chips manejan esa operación internamente). Eso, combinado con el hecho de que tal vez no sea posible borrar solo la parte del chip que contiene una clave, es probablemente lo que impulsa la decisión de usar "rellenar con ceros" como el método adecuado para borrar las claves del flash.

    
respondido por el supercat
2

Hace tiempo leí un artículo muy interesante y logré encontrar un enlace Remanencia de datos en la memoria flash Dispositivos . Debería darle una idea de por qué se da la recomendación mencionada anteriormente.

El documento contiene muchos detalles sobre cómo se almacenan los datos en flash / EEPROM y discute problemas que "... podrían afectar seriamente la remanencia de datos en las memorias de puerta flotante ...".

  

... En dispositivos programables no volátiles, como UV EPROM, EEPROM o Flash, los bits se almacenan como carga en la puerta flotante de un transistor. Después de cada operación de borrado, parte de esta carga permanece. La protección de seguridad en microcontroladores y tarjetas inteligentes con memorias EEPROM / Flash se basa en el supuesto de que la información de la memoria desaparece por completo después de borrar ...

Se discuten los métodos invasivos y no invasivos para extraer datos y, al final, se presentan algunas posibles contramedidas.

  

Para evitar ataques de remanencia de datos en aplicaciones seguras, el desarrollador debe   siga algunas reglas generales de diseño que ayudan a hacer más difícil la recuperación de datos de las memorias de semiconductores [5]:   * Ciclo EEPROM / Flash celdas 10–100 veces con datos aleatorios antes de escribir algo sensible a ellos, para eliminar cualquier efecto notable que surja del uso de celdas nuevas.
  * Programe todas las celdas EEPROM / Flash antes de borrarlas para eliminar los efectos detectables de la carga residual.
  * ...

    
respondido por el Rev1.0
0

Estos requisitos son solo para fines de seguridad. No tienes que sobrescribir con un patrón para borrar tampoco. Para EEPROM, se dice que una escritura de ceros no es suficiente para evitar que los datos se puedan obtener.

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas