Učebnica oboznamuje študentov so základnými technikami implementácie kryptografických stavebných blokov (kryptografických primitív), ktoré sú využívané v moderných vstavaných systémoch, základnými metódami ich optimalizácie a nástrojmi pre ich efektívnu implementáciu a testovanie. Cieľom je poukázať na úzku súvislosť medzi teoretickými poznatkami z matematiky (teória čísel, algebra a štatistika) a efektívnou implementáciou kryptografických algoritmov v moderných vstavaných systémoch. Na vybraných príkladoch kryptografických blokov sú v učebnici naznačené možnosti využitia základného vývojového nástroja – jazyka C, s ktorým sa študenti stretávajú v základných predmetoch štúdia. Využíva sa tiež efektívny matematický nástroj (softvérový balík Magma), ktorý umožňuje výrazne zvýšiť efektivitu testovania pri vývoji a implementácii moderných kryptografických algoritmov a protokolov. Hlavným cieľom učebnice je prehĺbiť znalosti z algoritmizácie a programovania v tejto špecifickej oblasti, a čo najjednoduchšou formou poukázať na praktické využitie matematického aparátu, s ktorým sa študenti stretávajú počas štúdia len okrajovo. Tomuto cieľu je prispôsobený aj výber vývojových nástrojov, ktoré sú v učebnici využívané. Všetky použité nástroje sú voľne dostupné aj v tzv. testovacích verziách, ktorých funkčnosť je pre náplň učebnice postačujúca.
Učebnica je určená hlavne študentom odborov počítačové inžinierstvo, elektronika a telekomunikačná technika, ale aj ďalším záujemcom o problematiku využitia kryptografie vo vstavaných systémoch. Publikácia vznikla s prispením grantovej agentúry APVV SR v rámci riešenia projektov APVV-0586-11 a APVV-15-0692.
Použité vývojové nástroje:
Vývojové prostredie
DEC C++
- integrovaný GNU C a C++ prekladač, linker, debuger a podporné programy (make, ...) pre platformu Windows
Softvérový balík
Magma
- v učebnici su realizované výpočty pomocou voľne dostupnej
kalkulačky Magma
Nástroj
OpenSSL
- dostupné
inštalačné balíky
Vývojový nástroj
MDK
(Microcontroller Development Kit) firmy
ARM Keil
pre mikrokontroléry s 32-bitovým jadrom ARM. MDK obsahuje aj simulátor
uVision
- voľne dostupná
testovacia verzia
MDK je dostupná na tejto
stránke.
Testovacia verzia pre 8-bitové MCU s jadrom Intel 8051 je dostupná na tejto
stránke.
Program "Hello World" pre využívané platformy:
HelloWorldWindows
- pre Windows OS s inštalovaným
DEC C++
HelloWorldSTM32F103
- pre MCU STM32F103RB (32-bitové jadro ARM Corte-M3) a nainštalovaným balíkom
MDK
HelloWorldIntel8052
- pre MCU Intel8052 (8-bitové jadro kompatibilné s 8051) a nainštalovaným balíkom pre
C51
HelloWorldADuC836
- pre MCU ADuC836 (8-bitové jadro kompatibilné s 8051) a nainštalovaným balíkom pre
C51
HelloWorldADuC842
- pre MCU ADuC842 (zrýchlené 8-bitové jadro kompatibilné s 8051) a nainštalovaným balíkom pre
C51
Štatistické testy FIPS140:
TestyFIPS140
- zdrojové C kódy štatistických testov FIPS140 programu pre Windows OS s inštalovaným
DEC C++
FIPS140_Normy
- rôzne verzie normy FIPS140, v ktorých boli uvedené prahy využívané v zdrojových C kódoch
Referenčné implementácie:
AES
- malá portovateľná implementácia AES128,192,256 v jazyku C [lokálna
kópia archívu AES
so zjednodušeným makefile pre PC platformu]
SHA1
- malá implementácia hašovacej funkcie SHA1 v jazyku C
SHA2
- malá implementácia hašovacej funkcie SHA2 v jazyku C
SHA3
- malá implementácia hašovacej funkcie SHA3 v jazyku C
CryptoLib
CryptoLib - príklad malej knižnice v jazyku C (vrátane AES, SHA1 a SHA2) bez externých závislostí
TinyCrypt
- malá kryptografická knižnica pre vstavané zariadenia
Násobenie v GF(2^128):
gf128_mul - implementácia násobenia v Galoisovom poli GF (2^128) pre GCM mód blokovej šifry
Príloha:
Magma - stručný úvod a linky na podrobnejšie informácie
Referencie:
Referencie a register knihy v
PDF
formáte s aktívnymi hyperlinkami
Námety, pripomienky a otázky posielajte na email