Pobierz - Politechnika Poznańska, Wydział Informatyki
Transkrypt
Pobierz - Politechnika Poznańska, Wydział Informatyki
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Środowisko http://www.silabs.com/products/mcu/Pages/MCUniversity.aspx# hardware 10-2014 Zygmunt Kubiak 2 Środowisko http://www.silabs.com/products/mcu/Pages/MCUniversity.aspx# hardware 10-2014 Zygmunt Kubiak 3 Środowisko http://sourceforge.net/projects/sdcc/files/ 10-2014 Zygmunt Kubiak 4 Środowisko http://www.silabs.com/products/mcu/Pages/ApplicationNotes.as px#devtools 10-2014 Zygmunt Kubiak 5 Lab3 - szyfrowanie AES128 http://www.silabs.com/products/mcu/Pages/ApplicationNotes.as px#devtools Przykład kod źródłowy – AN324SW !!! Program AN324SW przygotowany został dla kompilatora Keil i mikrokontrolera C8051F326 10-2014 Zygmunt Kubiak 6 Lab3 - szyfrowanie AES128 Startujemy od aplikacji Base Tworzymy folder aes Projekt tworzymy pod nazwą aes z plikiem aes.c Do folderu aes kopiujemy z Base pliki dev.h i uart.h Zawartość pliku main.c z Base kopiujemu do aes.c Sprawdzamy czy aplikacja bazowa działa poprawnie z terminalem Następnie zakomentować w funkcji void main(void) instrukcję while(1) {} i utworzyć nową instrukcję while(1) {} Tworzenie projektu aes Rozpoczynamy od utworzenia i uruchomienia generatora kluczy rund Skopiować do aes.c definicje z plików F326_AES_Parameters.h oraz z F326_AES_Typedef.h Usunąć def. byte i w miejsce byte wpisać U8, zamiast unsigned int – U16, zamiast unsigned char – U8, zamiast zmiennej b - bt 10-2014 Zygmunt Kubiak 7 Lab3 - szyfrowanie AES128 Tworzenie projektu aes Z pliku F326_AES_KeyExpander.h kopiujemy tablicę CIPHER_KEY[] dla CIPHER_KEY_LENGTH =128 static code const byte zmieniamy na static __code const U8 Z pliku F326_AES_KeyExpander.c kopiujemy stałe globalne, typ pdata byte zmieniamy na __xdata U8 Kopiujemy funkcję KeyExpansion() (przed funkcją void main(void) )zmieniamy typy char i byte na U8 oraz b0..b3 na bt0..bt3 Do folderu aes skopiować plik F326_AES_Sbox.h i zmienić jego nazwę na aes.h; do plików nagłówkowych dodać aes.h, poniżej uart.h W pliku aes.h zmienić typ static byte const code na static U8 const __code 10-2014 Zygmunt Kubiak 8 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 9 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 10 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 11 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 12 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 13 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 14 Lab3 - szyfrowanie AES128 Fragment projektu 10-2014 Zygmunt Kubiak 15 Lab3 - szyfrowanie AES128 Dalszą część projektu przygotowujemy analogicznie Po uruchomieniu generatora kluczy przechodzimy do uruchomienia szyfrowania a po przetestowaniu szyfrowania uruchamiamy deszyfrowanie Z pliku F326_AES_InvCipher kopiujemy do aes.h tablice InvSbox[256], log_table[256] oraz exp_table[256] …….. Docelowo należy utworzyć z projektu pojedynczy plik aes.h (ewentualnie aes.h i aes.c) z dostępnymi funkcjami szyfrowania i deszyfrowania 10-2014 Zygmunt Kubiak 16 Dziękuję Zygmunt Kubiak 17 09200 6