Puncte:1

Utilizarea CMAC în loc de funcția hash pentru semnarea mesajelor

drapel us

În general, când dorim să generăm o semnătură pentru mesajul M folosim funcția hash H și semnăm rezultatul lui H(M) cu cheia privată. Ce se întâmplă dacă în loc de funcția hash H am folosi un CMAC cu cheia K și apoi am semna rezultatul CMAC(M, K) cu cheia privată? Este o astfel de operațiune sigură din punct de vedere criptografic? Dacă da, cheia K trebuie păstrată secretă?

Am un dispozitiv cu accelerator hardware pentru AES-CMAC și mă întreb dacă l-aș putea folosi, în loc să implementez algoritmul de hashing în software.

kelalaka avatar
drapel in
Bun venit la Cryptography.SE. Hashing apoi semnarea va fi mult mai rapidă. Puteți găsi multe implementări pentru orice funcție hash bună. Care este algoritmul tău de semnătură digitală? De obicei, ele vin împreună cu o funcție hash. Implementați o semnătură digitală pe cont propriu? Dar atacurile pe canale laterale?
morsisko avatar
drapel us
Bună ziua, algoritmul meu de semnătură este ECDSA. Am un microcontroler cu accelerator hardware AES-CMAC. Folosesc implementarea semnăturii digitale open-source a ECDSA oferită de proiectul micro-ecc. Sunt conștient că aș putea implementa algoritmul de hashing în software, dar m-am întrebat care sunt efectele secundare ale utilizării CMAC în loc de hash
kelalaka avatar
drapel in
Criptați și mesajele? Atunci cu ce algoritm?
morsisko avatar
drapel us
Nu, mesajele nu sunt criptate. De fapt, mesajul este conținutul firmware-ului. În timpul pornirii, dispozitivul calculează hash/cmac al firmware-ului și apoi verifică dacă semnătura ECDSA generată offline (pe computer) este validă pentru firmware-ul curent folosind cheia publică încorporată
Puncte:5
drapel my

Ce se întâmplă dacă în loc de funcția hash H am folosi un CMAC cu cheia K și apoi am semna rezultatul CMAC(M, K) cu cheia privată? Este o astfel de operațiune sigură din punct de vedere criptografic?

Dacă $K$ folosit pentru o anumită semnătură este public (ceea ce va trebui să fie pentru ca semnătura să fie verificată de cineva care deține cheia publică și semnătura și nimic secret), atunci este ușor să găsești un al doilea mesaj $M'$ astfel încât $\text{CMAC}(M, K) = \text{CMAC}(M', K)$; adică semnătura ar verifica și cu acel al doilea mesaj $M'$.

De fapt, atacatorul ar avea o mare flexibilitate în alegerea asta $M'$; el poate preciza întregul $M'$ mesaj, cu excepția unui bloc aliniat de 16 octeți oriunde în mesajul respectiv - el poate apoi calcula eficient care trebuie să fie valoarea de 16 octeți; care îi oferă întregul $M'$.

Pe de altă parte, dacă $K$ este secret, cele de mai sus nu se aplică. Desigur, asta ridică întrebarea evidentă: dacă semnatarul și verificatorul împărtășesc un secret (și poți avea încredere că verificatorul nu va încerca să genereze falsuri), de ce nu folosești pur și simplu CMAC și nu te deranjează cu operațiunea de semnare ?

morsisko avatar
drapel us
Multumesc pentru raspunsul tau. Are un astfel de atac un nume pentru a citi mai multe despre asta? Am crezut că găsirea unei coliziuni pentru CMAC cu cheia cunoscută nu este mai ușoară decât găsirea unei coliziuni pentru o funcție hash
poncho avatar
drapel my
@morsisko: unde ai citit asta? Nu știu dacă atacul are un nume - este atât de simplu, nu știu dacă cineva s-a obosit să-l numească. Tot ce trebuie să facă atacatorul este să calculeze CMAC înainte până la blocul nespecificat (este ușor dacă cunoașteți k) și să îl calculeze înapoi de la valoarea țintă până la blocul nespecificat (din nou, ușor dacă știți k și CMAC se bazează pe un cifr de bloc inversabil) - xorul celor două valori de stare în cele două direcții este valoarea care trebuie să fie blocul nespecificat.
morsisko avatar
drapel us
Mulțumiri. Acum inteleg

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.