Când lucrați cu acest mediu extrem de constrâns, probabil că este mai implicat decât ceea ce puteți obține din ascultarea unor străini pe stackexchange; probabil că fie trebuie să urmați unele standarde existente de criptare a magistralei CAN (scrise de un expert), fie să obțineți un dezvoltator profesionist - preocupările merg mult mai departe decât „cum folosesc AES”
Voi trece prin câteva dintre problemele evidente:
Care sunt obiectivele de securitate? Oare cineva care ascultă pe magistrala CAN nu poate citi mesajele? Sau este doar pentru a vă asigura că orice mesaj primit este de la expeditorul autorizat? De exemplu, altcineva din magistrala CAN nu poate introduce propriile comenzi, fie comenzi aleatorii (atac DOS), comenzi selectate, fie reemite comenzi valide anterioare? Este așa că cineva nu poate modifica comenzile în zbor (ceea ce ar putea fi posibil, dacă poate primi textul cifrat, împiedică cumva receptorul să obțină textul cifrat original și apoi să reediteze un text cifrat modificat)?
Afirmați că textul cifrat trebuie să fie de 8 octeți - textul simplu corespunzător este tot de 8 octeți? Problema cu asta este că cineva ar putea injecta un text cifrat de 8 octeți și va decripta într-un text simplu valid.
Utilizarea AES presupune că expeditorul și destinatarul partajează o cheie secretă; este adevărat? Cum este partajată cheia? Este preprovizionat în fabrică sau în momentul instalării? Sau, este cumva negociat (și dacă da, care sunt detaliile)?
Presupun că expeditorul și receptorul nu au garanția să rămână „sincronizate”; adică, destinatarul poate pierde un mesaj valid de la expeditor. De asemenea, presupun că sistemul trebuie să fie „cel mai bun efort”; adică, ca sistemul să respingă mesajele valide este intolerabil (de exemplu, nu doriți să ignorați mesajele pedalei de frână de „Tocmai am fost apăsat” doar pentru că criptosistemul tocmai a intrat în starea greșită). Dacă această presupunere nu este adevărată, există câteva tehnici utile care sunt posibile.
Acum, având în vedere răspunsurile probabile de mai sus, primul meu instinct pentru un mod de criptare ar fi să folosesc un format care păstrează criptarea, cum ar fi FF1 (care folosește AES pentru a cripta un mesaj de lungime arbitrară, cum ar fi 64 de biți). Cu toate acestea, FF1 este costisitor din punct de vedere computațional (folosește aproximativ 10 evaluări AES pentru a cripta/decripta un mesaj pe 64 de biți) și este în cel mai bun caz doar o mică parte din întreaga soluție.