STM32 w aplikacjach kryptograficznych

 

Tab. 1. Czasy wykonania operacji przez CRYP

Algorytm Klucz/długość Liczba taktów HCLK
DES 1/56 b 16
TripleDES 1, 2, 3/168 b 48
AES -/128 14
AES -/192 16
AES -/256 18

 

W systemach kryptograficznych ważną rolę odgrywają generatory liczb losowych, których zadaniem jest m.in. tworzenie kluczy sesji lub stałych, których wartości są trudne do ustalenia dla osób postronnych. W mikrokontrolerach STM32F4 producent zastosował interesujący koncepcyjnie, choć nie do końca jawny od strony szczegółów budowy generator RNG, którego schemat blokowy pokazano na rysunku 6. Jego rdzeniem cyfrowym jest rejestr LFSR (Linear Feedback Shift Register), którego stan początkowy jest inicjowany przez wielokanałowy generator analogowy. Takie rozwiązanie powoduje – jak deklaruje producent – uzyskanie współczynnika losowości generowanych liczb na poziomie 85% wymaganych w FIPS 140-2 (Security Requirements For Cryptographic Modules).

 

Rys. 6. Schemat blokowy generator liczb losowych RNG

Rys. 6. Schemat blokowy generator liczb losowych RNG

 

 

Za pomocą modułu RNG można uzyskać 32-bitową liczbę losową co każde 40 taktów zegara PLL48CLK. Generator wyposażono w system kontroli entropii i w przypadku jej braku zgłaszany jest błąd, co zapobiega nieskutecznej ochronie danych. Monitorowane są także: poprawność sygnału taktującego PLL48CLK oraz jakość “zaczynu” na wejściu rejestru LFSR – wystąpienie błędów powoduje zgłoszenie przerwań.
Ostatnim blokiem peryferyjnym wbudowanym w STM32F4, związanym z kryptografią, jest sprzętowy generator skrótu (funkcji haszującej) HASH, obsługujący algorytmy SHA-1, MD5 oraz HMAC. Budowę bloku HASH pokazano na rysunku 7. Funkcje skrótu są stosowane najczęściej do autentykacji paczek danych (także bardzo dużych) za pomocą krótkich sygnatur, ich zadaniem jest ochrona danych przed modyfikacjami (skróty spełniają rolę zaawansowanych sum kontrolnych).

 

Rys. 7. Schemat blokowy koprocesora HASH

Rys. 7. Schemat blokowy koprocesora HASH

 

 

Koprocesor HASH wbudowany w mikrokontrolery STM32F4 generuje skrót SHA-1 o długości 160 bitów lub MD5 o długości 128 bitów dla wiadomości o długości do 264-1 bitów dostarczanych w blokach po 512 bitów. Czas trwania obliczania skrótu SHA-1 dla paczki danych wynosi 66 taktów zegara HCLK, czas trwania obliczeń skrótu MD5 wynosi 50 taktów HCLK – obydwa czasy bez uwzględnienia czasu niezbędnego do załadowania danych do koprocesora (16 taktów HCLK). Podobnie jak CRYP, także HASH jest obsługiwany przez DMA z dostępem do magistrali AHB2.

Podsumowanie

Przedstawione w artykule wyposażenie mikrokontrolerów STM32F4 ułatwia budowanie zaawansowanych aplikacji z wbudowanymi mechanizmami ochrony danych, zwłaszcza że producent chcąc ułatwić korzystanie z tych raczej nietypowych bloków peryferyjnych udostępnił pakiet dedykowanych im bibliotek programistycznych. Są one dystrybuowane w pakiecie bibliotek CMSIS 2.0/SPL, za ich pomocą można wygodnie zainicjować i skonfigurować wszystkie opisane w artykule peryferia. W jej ramach są dostępne także “drivery” umożliwiające przyjazne dla użytkownika wykorzystywanie w aplikacjach możliwości funkcjonalnych bloków peryferyjnych, bez konieczności “wgryzania” się w szczegóły ich działania – zgodnie z zasadą “czas to pieniądz”. Programy przygotowane przez firmę STMicroelectronics są dość dokładnie skomentowane, co ułatwia zrozumienie co, jak i dlaczego się w nich odbywa.
W artykule przedstawiliśmy kolejny fragment możliwości nowych mikrokontrolerów STMicroelectronics, które poza dużą wydajnością, obsługą instrukcji SIMD i sprzętowym wspomaganiem obliczeń DSP, okazują się także silną i kompletną platformą kryptograficzną. W połączeniu z wbudowanym interfejsem MAC-Ethernet konstruktorzy otrzymują jednoukładowy komputer z możliwością obsługi protokołu SSL/TSL, którego zastosowania ogranicza wyłącznie ich wyobraźnia.

O autorze