. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Implementace šifry XTEA
10. listopadu 2009 - 10:09 | Pandatron | Implementace šifry XTEA | Komentářů: 4  

Implementace šifry XTEA

Příklad implementace šifry XTEA na mikrokontrolérech PIC a AVR včetně kompletních zdrojových kódů a výsledků měření.

XTEA (eXtended TEA) je bloková šifra autorů Davida Wheelera a Rogera Needhama určená pro použití v malých mikrokontrolérech s omezenými prostředky. Jedná se o přepracovanou původní verzi šifry TEA (Tiny Encryption Algorithm), vynikající svým vysokým stupněm odolnosti i vysokým výkonem, plynoucím z velice krátkého zdrojového kódu. Základní funkce je definována pro použití 128-bitového klíče pro zašifrování 64-bitů dat a to v celkem 64 průchodech Feistelovou sítí.

Malého rozsahu zdrojového kódu je dosaženo především díky použití základních instrukcí pro sčítání, posuvy a funkce xor, namísto tabulkové substituce a bitové permutace známé z algoritmů DES, AES apod.. Navíc je v každém kroku zpracována pouze polovina 64 bitů dat, takže zpracování na 32-bitových mikrokontrolérech je otázkou několika málo instrukcí.


Obr. 1: Diagram funkce XTEA

Více informací je možné nalézt v dřívějším článku Šifra XTEA a její spojení s KEELOQ, případně dokumentaci samotné šifry, dostupné na konci článku.

XTEA na AVR:
Implementace šifry XTEA na mikrokontrolérech AVR vychází z referenčního kódu uvolněného na základě licence public domain. Následující kód funkce main() reprezentuje celý vzorový proces programu.

 
int main (void) {
  xtea_setup();
  xtea_encrypt(ROUND, value, key);
  eeprom_write_dword((unsigned long *)EE_ENC_1, value[0]);
  eeprom_write_dword((unsigned long *)EE_ENC_2, value[1]);
  xtea_decrypt(ROUND, value, key);
  eeprom_write_dword((unsigned long *)EE_DEC_1, value[0]);
  eeprom_write_dword((unsigned long *)EE_DEC_2, value[1]);
  for(;;);
}
 

64-bitová vstupní data určená k zašifrování i 128-bitový klíč jsou uloženy v interní paměti EEPROM, odkud jsou po zapnutí mikrokontroléru načteny. Adresy pro klíč začínají pozicí 00h a pro data 10h, přičemž definovány jsou v podobě konstant v souboru xtea.h.


Obr. 2: Klíč (30h - 3Fh) a vstupní data TESTTEST

Po načtení klíče a vstupních dat proběhne celkem 32 cyklů (konstanta ROUND) funkce xtea_encrypt(), obsahující Feistelovu síť, jejíž výsledek v délce 64 bitů je uložen v interní paměti EEPROM od pozice 20h. 32 průběhů funkce je doporučená hodnota pro 64 kol Feistelovy sítě.
Dále shodným způsobem proběhne funkce xtea_decrypt(), která se opět postará o rozšifrování předchozích dat a ty jsou pro možnou kontrolu uloženy do paměti EEPROM od adresy 30h.


Obr. 3: Data v paměti po spuštění programu obsahují zašifrovaný (20h) i znovu dešifrovaný (30h) vstupní text

Praktickým měřením na obvodu ATmega48 s taktovací frekvencí 8 MHz byla zjištěna shodná reálná doba pro funkce xtea_encrypt() a xtea_decrypt() (včetně jejich vstupu a ukončení) s hodnotou 1,474 ms. Z toho plyne maximální výkon šifry umožňující zpracování více než 2700 bytů za jednu sekundu.

Zdrojové kódy včetně výsledného souboru HEX jsou ke stažení zde: xtea_implementace_avr.zip

XTEA na PIC:
Naprosto shodným postupem byla implementována šifra XTEA i na obvod firmy Microchip a to konkrétně typ PIC16F876, taktovaný krystalem o frekvenci 6 MHz.

64-bitová vstupní data i 128-bitový klíč jsou opět uloženy v interní paměti EEPROM. Stejně tak se do této paměti ukládá výsledný zašifrovaný i opět dešifrovaný text a to na shodné pozice jako v případě obr. 2 a obr. 3.

Jedinou výraznější změnou je absence funkce umožňující práci s interní pamětí EEPROM v rozsahu 32-bitů (jako je tomu u obvodů AVR), o což je nutně zdrojový kód v jazyce C rozsáhlejší.

Praktickým měřením na obvodu PIC16F876 s taktovací frekvencí 6 MHz a bez použití optimalizací byla zjištěna téměř shodná reálná doba pro funkce xtea_encrypt() a xtea_decrypt() (včetně jejich vstupu a ukončení) s hodnotou 11,846 ms. Z toho plyne maximální výkon šifry na těchto obvodech umožňující zpracování necelých 400 bytů za jednu sekundu.

Zdrojové kódy včetně výsledného souboru HEX jsou ke stažení zde: xtea_implementace_pic.zip

Závěr:
Jak je vidět z výsledků měření, obvody AVR a použitý WinAVR GCC kompilátor poskytují mnohem vyšší výkon šifry než obvody PIC ve spojení s komerčním kompilátorem Hi-tech C Lite.

Odkazy & Download:
Šifra XTEA a její spojení s KEELOQ
Zdrojové kódy jsou ke stažení uvnitř článku

Tiny Encryption Algorithm
XTEA
AN1285 - KeeLoq with XTEA Encryption Receiver/Decoder
AN953 - Data Encryption Routines for the PIC18
Více o teorii blokových šifer







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (4):

Zobrazit starší 30 dnů (4)...



Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
AS433 AUREL
Anténa vertikální 433.92MHz, 50 ohmů, max. 50W, s koaxiálním kablíkem
od 189 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007