Po vsech aktualne ziskanych znalostech bych ulohu asi rozdelil na dve casti:
1. sifrovani/desifrovani
2. obrana proti replay attack
Druhym bodem se zatim nebudu zabyvat, protoze ten to hodne komplikuje, ale teoreticky mam napad.
Mně přijde že to vyměnění náhodné výzvy na začátku by mělo být docela v pohodě, ne?
K prvnimu bodu jsem se inspiroval tim jak to dela napr. sifrovanej archiv RAR viz: https://www.rar.cz/faq.php?title=napoveda%3Asifrovani
Zde popis citat z uvedeneho odkazu:
K šifrování RAR archivu se používá algoritmus AES-256 v režimu CBC pro archivy RAR 5.0 a AES-128 v režimu CBC pro archivy typu RAR 4.x. Algoritmus odvození klíče u archivů RAR 5.0 je založen na PBKDF2 s použitím HMAC-SHA256.
Uvedené neříká nic o autentizaci a naopak odvozování klíče ty dělat nebudeš.
Pokud bych tedy neco takoveho chtel zrealizovat mohl bych si rici, ze jsem schopen zasifrovat zpravu pomoci AES-256 a mam kod i na CBC (predpokladam, ze implementace je funkcni). Takze mam klic, ktery zna pouze klient a server (verme tomu ze to tak je), mam zakodovanou zpravu a mam nahodne vygenerovany inicializacni vektor. Az sem to chapu. Proc nemuzu tedy tuto zpravu odeslat? Bez klice a znalosti vektoru zpravu preci nedesifruju. K cemu mi je tedy HMAC-SHA256
Aby nešlo přehazováním bitů v ciphertextu přehazovat bity v plaintextu, viz tato tabulka
https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Error_propagationAby nešlo dělat padding oracle útoky.
Aby nešlo dělat dalších 20 útoků, kdy jen tak bez mrknutí oka natvrdo dešifruješ útočníkem dodaný vstup, které si my ani nedokážeme představit.
Bez klice a znalosti vektoru zpravu preci nedesifruju.
Vektor musíš předat v čitelné formě spolu se zprávou (a MAC počítej z něj i ze zprávy, viz ta tabulka na wikipedii).
a klic odvozenej od PBKDF2?
Ten ti opravdu k ničemu nebude, nemáš přece žádný důvod PBKDF počítat. Víš co je to "P" v PBKDF? Tak já vám to řeknu, pane redaktore

. Password. Password. Máte snad nějaké password?
Pokud predpokladam, ze utocnik nikdy nevidel rozsifrovanou zpravu
Tak to předpokládáš blbě. Těch zařízení máš předpokládám víc - opravdu se nemůže stát, že jedno z nich někdo ukradne, rozebere, a na zprávy se podívá?
Nemusim tedy resit, ze by byl tak hustej aby z toho rozsypanyho caje pochopil, ze je tam nejaky CRC
Ve skutečnosti „na konci je CRC“ a „nasbíral jsem 1000 zpráv, tady jsou nějaké bloky co jsou furt podobné, a tady je něco co se náhodně mění, tak to asi bude CRC“ jsou doslova první dvě věci co útočníka napadnou.
takze proc resit integritu dat, kdyz o tu se mi principielne postara samotny aplikacni protokol, nebo to je take alfa omega 101 jak tu nekdo psal?
Protože (a se svými znalostmi už vůbec) tohle nedokážeš ohlídat. S CTR tam bude díra téměř určitě, s CBC možná. Takže než se v noci strachovat co kde tiká za časovanou bombu tak tam prostě ten HMAC přilep a neřeš to, tečka.