2013-01-03 12 views
10

Ricerca di raccomandazioni e codice di riferimento per la crittografia di array di byte in C. Il problema è che devo inserirmi nella memoria 1KByte insieme ad altre routine e MCU è solo 8MHz. Quindi la dimensione e la velocità sono la chiave. Ho controllato Rijndael ma ha enormi tavoli per la mia MCU. Fondamentalmente ho intenzione di crittografare il formato intel hex su PC, probabilmente solo area dati, quindi decifrare in MCU.Algoritmo di crittografia simmetrica per il sistema integrato

L'utilizzo delle routine di allocazione della memoria dinamica non è consigliabile.

La mia ricerca su Google mi porta a implementazioni C#, utilizzando le librerie.

UPDATE:

decrittografia vincoli collaterali:

RAM: 512 byte 
MAX code size: 512-1024 words 
CPU: 8 bit, 8MHz 
+0

vorresti usare 'XOR', più comunemente utilizzare nella crittografia polimorfica Malware. È solo un'idea! –

+2

@GrijeshChauhan: XOR non è un metodo di crittografia a meno che non lo si usi come una volta. – Krystian

+0

Le tabelle normalmente non rappresentano un problema, purché contengano costanti. Le costanti possono essere memorizzate nella memoria persistente (ROM, EEPROM, Flash) invece di RAM. L'unica parte che deve essere memorizzata nella RAM è lo * stato *. Non esiste un "formato esadecimale" nella crittografia, solo dati binari. Hex (adecimali) è una rappresentazione che usa un [tag: codifica] in caratteri di quei dati binari. Sembra il pelo nell'uovo, ma se non lo fai bene, * * si troverà nei guai. –

risposta

13

un algoritmo di crittografia molto semplice che ho visto in uso nel mondo embedded è XXTEA

+0

Ho appena provato XXTEA e sembra piuttosto veloce e minuscolo. Se non esce niente di meglio, andrò a prenderlo e accetto questa risposta. – Pablo

+0

Ho usato XTEA (il precursore di XXTEA) in un bootloader ed è davvero facile da implementare, veloce e con un ingombro ridotto. E XTEA/XXTEA dovrebbe essere abbastanza sicuro per un prodotto economico. Posso consigliarlo – jeb

4

Tutte le tabelle della Rijndael sono definite come simplish operazioni in GF2. Come tale, sarei tentato di dire che è possibile scrivere ad es. AES 128 bit in 1k.

Consulta anche: https://electronics.stackexchange.com/questions/13275/smallest-aes-implementation-for-microcontrollers

Ma qualsiasi algoritmo scelto è un fattore secondario nella sicurezza ad es. se la chiave è distribuita con il binario. In tal caso, il meccanismo più semplice per svelare il binario originale consiste nell'eseguire il codice tramite l'emulatore e archiviare la memoria.

+0

+1 per il link e il suggerimento. La chiave non è distribuita ma è nella bootrom del dispositivo stesso, che è difficile da rompere (ma possibile). La decrittografia dovrebbe essere eseguita da bootrom. – Pablo

-1

Ho letto che la curva ellittica crypto (ECC) è la nuova cosa destinata a portare un forte cripto a piccoli processori.

A Google di:
curva ellittica crittografia microcontrollori
rendimenti discussione di implementazioni su micro a 8 bit in cima alla lista.

Ma forse prendere in considerazione il passaggio a Stack Exchange. Ad esempio, questo può essere utile:

Stack Exchange Crypto - Types of Cryptography for a 4-8 bit microcontroller

+1

Non si utilizzerà ECC per la crittografia da solo. Lo usi come meccanismo di scambio di chiavi insieme a una crittografia simmetrica. Il PO non ha indicato che abbia bisogno di asimmetria. – CodesInChaos

Problemi correlati