Come posso convalidare i dati sul chip RFID con firme RSA e valori hash SHA1?

4

Ho un chip RFID che ha una firma digitale usando RSA e ha un hash di dati usando SHA1.

Vorrei confrontare i dati del chip e l'input dell'utente in un programma, ma credo che per fare ciò ho bisogno della chiave pubblica dell'RFID (che posso ottenere) e anche della firma.

In primo luogo è corretto, in secondo luogo, come ottengo la firma? È un comando inviato al chip?

    
posta Jon 08.12.2011 - 12:55
fonte

1 risposta

4

Se hai bisogno della firma dipende dal tipo di firma.

Lo standard principale per le firme RSA è PKCS # 1 . Con questo standard, una firma RSA è "solo una firma": può essere verificata con la chiave pubblica e i dati firmati, ma non incorpora dati da sola. La firma è un elemento aggiuntivo . Se vuoi solo confrontare i dati firmati con alcuni input dell'utente, puoi ignorare completamente sia la firma che la chiave pubblica, sono irrilevanti (a meno che tu non voglia essere sicuro che i dati che ricevi dalla RFID siano "genuini", in in questo caso anche vuoi verificare la firma).

Tuttavia, una firma RSA è grande quanto il modulo RSA, quindi, per una chiave RSA a 1024 bit (una dimensione della chiave piuttosto comune), la firma è di 128 byte aggiuntivi. Nella smartcard & Il mondo RFID, dove lo spazio di archiviazione e la larghezza di banda della rete sono risorse estremamente scarse, sono piuttosto affezionati a un altro standard di firma RSA chiamato ISO 9796-2 (lo standard non è gratuito, ma puoi avere una descrizione ragionevole nella sezione 2 di questo articolo ). Questo tipo di firma utilizza un trucco che consente l'incorporamento di alcuni dei dati del messaggio all'interno della firma. Ottieni i dati quando verifica la firma. Con una chiave RSA a 1024 bit e SHA-1 come funzione hash, la firma può incorporare 106 byte di dati, quindi l'overhead di dimensioni implicito dalla firma è di soli 22 byte.

Quindi, se la firma è di tipo ISO 9796-2, è necessario sia la chiave pubblica che la firma per recuperare i dati completi; altrimenti, otterresti solo una parte di esso (i byte di dati oltre il 106 che possono essere incorporati nella firma).

(Nota: ISO 9796-2 presenta alcuni punti deboli: con SHA-1 e la sua uscita a 160-bit, non si ottiene la sicurezza 2 80 , ma qualcosa più in basso, più vicino a 2 61 Operazioni bit L'articolo che ho linkato sopra mostra che questo è utilizzabile con hardware di massa ma non costoso. Se si desidera utilizzare ISO 9796-2 nei propri progetti, suggerisco di selezionare SHA -256, non SHA-1.)

Non ho idea di come si possa ottenere la firma, ma può certamente essere ottenuta con la stessa facilità dei dati firmati, perché altrimenti avrebbe molto poco senso.

    
risposta data 08.12.2011 - 14:24
fonte

Leggi altre domande sui tag