¿Cómo puedo validar los datos en el chip RFID que tiene firmas RSA y valores hash SHA1?

4

Tengo un chip RFID que tiene una firma digital que usa RSA y tiene datos con hash usando SHA1.

Me gustaría comparar los datos del chip y la entrada del usuario en un programa, pero creo que para hacerlo necesito la clave pública del RFID (que puedo obtener) y también la firma.

En primer lugar, ¿es correcto, en segundo lugar, cómo obtengo la firma? ¿Es un comando enviado al chip?

    
pregunta Jon 08.12.2011 - 12:55
fuente

1 respuesta

4

Si necesita la firma depende del tipo de firma.

El estándar principal para las firmas RSA es PKCS # 1 . Con ese estándar, una firma RSA es "solo una firma": puede verificarse con la clave pública y los datos firmados, pero no incorpora datos por sí misma. La firma es un elemento adicional . Si solo desea comparar los datos firmados con alguna información del usuario, puede ignorar completamente tanto la firma como la clave pública, son irrelevantes (a menos que desee asegurarse de que los datos que obtiene de la RFID son "genuinos", en en cuyo caso usted también desea verificar la firma).

Sin embargo, una firma RSA es tan grande como el módulo RSA, por lo tanto, para una clave RSA de 1024 bits (un tamaño de clave bastante común), la firma es de 128 bytes adicionales. En la tarjeta inteligente & El mundo de RFID, donde el espacio de almacenamiento y el ancho de banda de la red son recursos extremadamente escasos, les gusta mucho otro estándar de firma RSA llamado ISO 9796-2 (el estándar no es gratuito, pero puede tener una descripción razonable en la sección 2 de este artículo ). Ese tipo de firma utiliza un truco que permite incrustar algunos de los datos del mensaje dentro de la firma. Obtendrá los datos cuando verifique la firma. Con una clave RSA de 1024 bits y SHA-1 como función hash, la firma puede incrustar datos de 106 bytes, por lo que la sobrecarga de tamaño que implica la firma es de solo 22 bytes.

Entonces, si la firma es del tipo ISO 9796-2, necesita tanto la clave pública como la firma para recuperar los datos completos; de lo contrario, solo obtendría una parte (los bytes de datos más allá de los 106 que se pueden incrustar en la firma).

(Nota: ISO 9796-2 tiene algunas debilidades; con SHA-1 y su salida de 160 bits, no obtiene 2 80 , sino algo más bajo, más cercano a 2 61 operaciones de bits. El artículo que vinculo anteriormente muestra que esto es viable con un hardware masivo pero no tan caro. Si desea utilizar ISO 9796-2 en sus propios diseños, le sugiero que seleccione SHA -256, no SHA-1.)

No tengo idea de cómo puede obtener la firma, pero ciertamente se puede obtener tan fácilmente como los datos firmados en sí, porque de otra manera no tendría mucho sentido.

    
respondido por el Thomas Pornin 08.12.2011 - 14:24
fuente

Lea otras preguntas en las etiquetas