Domanda

Vorrei firmare un dispositivo e ho 64 bit per memorizzare la mia firma nel dispositivo. Questo dispositivo ha un indirizzo MAC e alcuni altri dettagli (del valore di circa 30 byte) che posso manipolare per creare la mia firma.

Se possibile, vorrei che il metodo fosse unidirezionale, in modo da poter verificare che la firma sia valida senza sapere come creare una firma valida. La maggior parte delle chiavi pubblico-private hanno questa funzione ma generano firme lunghe 48 byte (ne ho solo 8 byte).

L'implementazione in Python è un vantaggio.

Grazie

Modifica :  Grazie per il consiglio a tutti. Sembra che non ci sia un modo sicuro per farlo, solo un modo che è moderatamente scomodo per gli attaccanti. Probabilmente userò un hash crittografico combinato con bit-shuffle casuale. Questo sarà sicuro come qualsiasi altro collegamento nella mia (molto debole) "sicurezza".

È stato utile?

Soluzione

Le funzioni hash e le firme digitali sono molto diverse.

La dimensione di una firma digitale dipende dalla funzione hash sottostante e dalla lunghezza della chiave. Quindi, in teoria, puoi creare un'implementazione RSA che genera firme a 64 bit, ma sarebbe una firma estremamente debole.

Per lunghezze di chiave inferiori, potresti voler esaminare la crittografia con curva ellittica.

EDIT: Sì, sono un crittografo.

EDIT 2: Tuttavia, se hai solo bisogno di una funzione hash, puoi guardare elf64 o RIPEMD-64 come suggerito Fernando Migu & # 233; lez.

MODIFICA 3: Facendo i calcoli, dovresti usare le chiavi a 16 bit in ECC per generare firme a 64 bit, che è molto debole. Per ECC, qualsiasi valore inferiore a 128 bit può essere considerato debole. Per RSA questo è 1024 bit.

Altri suggerimenti

Fondamentalmente ciò di cui hai bisogno è una funzione di hash crittografica a 64 bit, come Ripemd- 64 o elf-64. Quindi crittografate l'hash con un metodo crittografico e ottenete una firma a 64 bit. L'unico problema è, dal punto di vista di un non criptoanalista, che 64 bit offre una firma molto più debole rispetto al tipico hash oltre 128 bit. Tuttavia potrebbe essere comunque adatto alla tua applicazione.

Puoi semplicemente utilizzare una funzione di hashing standard (MD5 SHA1) e utilizzare solo il primo o gli ultimi 30 byte.
Il numero di byte che genera una funzione di hashing è abbastanza arbitrario - è ovviamente un compromesso tra spazio e unicità. Non c'è niente di speciale nella lunghezza della firma che usano.

Modifica - mi dispiace stavo pensando che MD5 ha restituito 32byte - actaulyl restituisce 16byte ma di solito è scritto come cifre 32hex.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top