2013-01-03 40 views
10

Poszukuję rekomendacji i kodu do szyfrowania tablicy bajtów w C. Problem polega na tym, że muszę zmieścić się w pamięci 1KBajt wraz z innymi procedurami, a MCU to tylko 8MHz. Więc rozmiar i szybkość to klucz. Sprawdziłem Rijndael, ale ma on ogromne tabele dla mojego MCU. Zasadniczo zamierzam zaszyfrować format intel hex na PC, prawdopodobnie tylko w obszarze danych, a następnie odszyfrować w MCU.Symetryczny algorytm szyfrowania dla systemu wbudowanego

Korzystanie z dynamicznych procedur alokacji pamięci nie jest pożądane.

Moje wyszukiwanie google przynosi mnie do implementacji C#, używając bibliotek.

UPDATE:

deszyfrowania ograniczenia niepożądane:

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

chcesz użyć 'XOR', bardziej powszechnie używać szyfrowania polimorficzne Malware. To tylko pomysł! –

+2

@GrijeshChauhan: XOR nie jest metodą szyfrowania, chyba że używasz go jako jednokrotnego bloku czasu. – Krystian

+0

Tabele zwykle nie stanowią problemu, o ile zawierają stałe. Stałe mogą być przechowywane w pamięci trwałej (ROM, EEPROM, Flash) zamiast pamięci RAM. Jedyną częścią, która musi być przechowywana w pamięci RAM, jest * stan *. W kryptografii nie ma czegoś takiego jak "format szesnastkowy", a jedynie dane binarne. Hex (adecimals) to reprezentacja używająca [tag: encoding] w znakach tych danych binarnych. Wygląda na to, że cię lubi, ale jeśli tego nie zrobisz, * wpadniesz w kłopoty. –

Odpowiedz

13

Bardzo prosty algorytm szyfrowania, które widziałem są wykorzystywane w osadzonym świat jest XXTEA

+0

Właśnie próbowałem XXTEA i wygląda dość szybko i malutko. Jeśli nic lepszego nie wyjdzie, pójdę po to i przyjmiemy tę odpowiedź. – Pablo

+0

Użyłem XTEA (prekursora XXTEA) w bootloaderze i jest naprawdę łatwy do wdrożenia, szybki i niewielki. A XTEA/XXTEA powinna być wystarczająco bezpieczna dla taniego produktu. Mogę to polecić. – jeb

4

Wszystkie tabele w Rijndael są zdefiniowane jako simplish operacje w GF2. Jako taki, chciałbym pokusić się o stwierdzenie, że można napisać np. 128-bitowa AES w 1k.

Zobacz także: https://electronics.stackexchange.com/questions/13275/smallest-aes-implementation-for-microcontrollers

Ale każdy wybrany algorytm jest małoletni czynnikiem bezpieczeństwa, np. jeśli klucz jest dystrybuowany z plikiem binarnym. W takim przypadku najprostszym mechanizmem odsłaniającym oryginalny plik binarny jest uruchomienie kodu za pomocą emulatora i zapisanie pamięci.

+0

+1 za link i sugestię. Klucz nie jest dystrybuowany, ale jest w bootromie samego urządzenia, które jest trudne do złamania (ale możliwe). Odszyfrowywanie powinno być uruchamiane z bootrom. – Pablo

-1

Czytałem, że krypto krzywych eliptycznych (ECC) to nowa rzecz, która ma przynieść silną krypto do małych procesorów.

Google z:
krzywej eliptycznej mikrokontrolery kryptografiiComment
plony omówienie implementacji na 8-bitowymi Micros na szczycie listy.

Ale może warto rozważyć przeniesienie do Exchange Stack. Na przykład, może to być przydatne:

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

+1

Nie używałbyś ECC do szyfrowania samodzielnie. Używasz go jako mechanizmu wymiany kluczy wraz z symetrycznym szyfrowaniem. PO nie dał żadnych wskazówek, że potrzebuje asymetrii. – CodesInChaos