Domanda

Ho usato un bel dominio pubblico Implementazione DES C++ prima, ma ora ho bisogno di una crittografia semplice, basilare e veloce per un sistema embedded.

Non è necessario che sia indistruttibile, ma deve contrastare l'hacker occasionale (ovvero, niente che possa essere utilizzato per furto di denaro o identità, ma altre informazioni personali trasferite su schede di memoria che potrebbero perdersi o cadere nelle mani sbagliate ).

A causa della memoria limitata di questo processore, preferirei qualcosa che possa codificare in blocchi discreti (512 byte o meno).

Il progetto non è open source e non utilizzerà librerie, il che, so, limita ulteriormente le opzioni: il dominio pubblico è il migliore, ma BSD/Apache/etc probabilmente è accettabile...

Sono riluttante a lanciarne uno mio (come dovrebbero essere tutti).

-Adamo

È stato utile?

Soluzione

Se stai solo cercando offuscamento, XOR con una costante segreta è l'implementazione più piccola che troverai.Sarebbe anche banale da violare, poiché è vulnerabile all'analisi di frequenza per cercare le lettere inglesi più comuni.

Se hai bisogno di un algoritmo più potente, ti consiglio di guardare il pesce palla che tende ad essere piccolo e veloce.Richiede ancora memoria per le tabelle, ma si spera che funzioni per la tua applicazione.

Bruce Schneier ha reso esplicitamente di pubblico dominio l'algoritmo Blowfish, rinnegando i brevetti.Puoi ottenere la sua implementazione in C (e anche altre implementazioni) da il suo sito.Questa fonte non contiene alcun avviso di copyright.Sospetto che anche il codice sorgente sia di pubblico dominio, ma potrebbero essere necessari ulteriori controlli.

Altri suggerimenti

RC4 è semplice e veloce.

La stessa persona che ha rilasciato l'implementazione C++ DES ha rilasciato anche a Algoritmo di crittografia C Rijndael - Avrei dovuto curiosare un po' di più nel suo sito, The Piccolo algoritmo di crittografia (documento accademico qui) ha anche un ingombro di implementazione C molto ridotto.

Pesce palla sembra buono ed è probabilmente il migliore di questi tre per quanto riguarda la sicurezza.

Inizierò con il TEA (piccolo codice e impronta di memoria) ma lo avvolgerò in modo da poter passare a un altro algoritmo in seguito, se necessario.Presenta notevoli punti deboli nelle sue implementazioni precedenti, ma per questo progetto potrebbe addirittura essere eccessivo.

-Adamo

Potresti usare a Generatore di numeri pseudocasuali (PRNG) per generare una sequenza ripetibile di parole, che poi esegui XOR con la parola corrispondente nel flusso di dati.(Il trasmettitore e il ricevitore devono conoscere in anticipo i parametri utilizzati per generare la sequenza pseudocasuale.)

Questo approccio non è indistruttibile, ma è un passo avanti rispetto all'utilizzo di una costante per l'XOR - e i PRNG sono molto semplici da implementare, in genere consistono in un'operazione di moltiplicazione e modulo per ogni parola.

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