¿Cómo podría implementarse la protección contra escritura de hardware para medios flash?

1

Vengo de un fondo de software, pero siento que esta es una pregunta de hardware / electrónica.

Buscando una forma de protección contra escritura de hardware en medios flash, compré una tarjeta SDHC (con un pequeño interruptor etiquetado como "bloqueo") y un lector de tarjetas USB barato. Quería crear un dispositivo de "solo lectura" que pueda estar seguro de que no se modificará, sin tener que considerar el software en los hosts a los que lo conecto.

Insertada directamente en mi computadora portátil Dell, la tarjeta solo se puede escribir cuando está desbloqueada ... Supuse que esto significaba que la protección contra escritura está implementada por la tarjeta SD ... Sin embargo, cuando coloco la tarjeta SD en el lector USB , la misma laptop me permite escribir en la tarjeta bloqueada. Ahora he leído esta pregunta , y esta confirmación de que estaba equivocado al asumir que el interruptor de "bloqueo" proporcionaría protección de escritura contra hardware . Ahora sé que el 'bloqueo' no es una característica de la tarjeta de forma aislada, y que el 'bloqueo' estándar depende de los controladores del sistema operativo (en los que no quiero que me obliguen a confiar).

Me gustaría saber: ¿Cuál sería una forma sencilla, confiable, limpia y económica de implementar un interruptor de protección contra escritura de hardware para medios flash? Idealmente, me gustaría acceder a este medio a través de USB. ¿Supongo que necesitaré un dispositivo que pueda interceptar los bloques de datos intercambiados a través de la interfaz en serie a USB o la tarjeta SD?

    
pregunta aSteve

2 respuestas

2

Puede marcar la tarjeta SD como de solo lectura o como protección temporal contra escritura. También puede ocultar el almacenamiento o la protección de contraseña para escritura.
Si no desea modificar el código / los controladores, puede simplemente construir una unidad externa para proteger rápidamente sus tarjetas SDC. Vea aquí para una implementación que utiliza un micro ATTiny85 externo como man-in-the-middle.

Debería leer las especificaciones simplificadas

Encontrará una discusión general en Physical Layer 5.0 Puede marcar un almacenamiento de forma permanente e irrevocablemente área como sólo lectura.

4.3.6 Write Protect Management
La tarjeta de memoria SD admite tres métodos de protección contra escritura de la siguiente manera:
- Interruptor mecánico de protección contra escritura (solo responsabilidad del anfitrión)
- Tarjeta interna de protección contra escritura (responsabilidad de la tarjeta)
- Operación de bloqueo de la tarjeta de protección de contraseña.

El bloqueo de la tarjeta de contraseña parece ser la mejor opción para usted.

4.3.7 Bloqueo de tarjeta / Desbloqueo de operación
 La función de protección con contraseña le permite al anfitrión bloquear una tarjeta mientras proporciona una contraseña, que luego se usará para desbloquear la tarjeta. La contraseña y su tamaño se guardan en los registros PWD de 128 bits y PWD_LEN de 8 bits, respectivamente. Estos registros no son volátiles, por lo que un ciclo de energía no los borrará.

Tenga en cuenta (por el discurso de Ali Chen) que no todas las tarjetas SDC que compre tienen todas las características de la especificación implementada. YMMV dependiendo de lo que compres. Si quisiera ser concienzudo, le enviaría un correo electrónico a Sandisk u otros y les preguntaría si son compatibles con esta función.

Mira estos dos proyectos:

  1. enlace Esto le muestra cómo configurar PERM_WRITE_PROTECT .... no hay vuelta atrás ... protegido contra escritura de forma permanente.
  2. enlace Esto le muestra cómo configurar el bit TMP_Write_Protect y la protección con contraseña.

Samsung definitivamente admite PERM_WRITE_PROTECT como se muestra en su spec para el registro CSD. Se muestra correctamente como (W) 1 ... un valor de escritura una vez.

A partir de estos, debería poder encontrar una solución que satisfaga sus necesidades.

    
respondido por el Jack Creasey
1

La respuesta más simple es encontrar un lector de tarjetas USB diferente, uno que implemente correctamente el bloqueo.

Parece que podría ver los lectores de tarjetas USB como dispositivos de paso simple. No lo son: el protocolo USB es completamente diferente de los protocolos de la tarjeta SD. Así que ya hay un microcontrolador interceptando continuamente los bloques de datos. Solo necesitas encontrar uno mejor que también compruebe el bit de bloqueo.

    
respondido por el Justin

Lea otras preguntas en las etiquetas