Cu toate acestea, există abordări moderne și mai bune pentru crearea unor astfel de „chei de instalare offline”?
Există două abordări evidente:
- Una este să utilizați un cod de autentificare a mesajelor (MAC); acesta este un algoritm criptografic care preia un șir și o cheie secretă și generează o „etichetă”; ideea este că, fără a cunoaște cheia secretă, este greu să generezi o altă pereche șir/tag care validează.
Deci, ceea ce ați face ca producător este să selectați o cheie secretă aleatorie (pe care ați introduce-o în produsele dvs.). Pentru a genera o „cheie de produs” (etichetă care este atașată produsului), veți lua un număr de secvență, îl rulați prin MAC pentru a genera o etichetă și faceți ca numărul de secvență și eticheta să fie cheia de produs.
Apoi, când produsul este instalat, utilizatorul introduce cheia produsului; software-ul separă numărul de secvență și eticheta; apoi rulează numărul de secvență prin MAC (folosind cheia secretă pe care a introdus-o producătorul) și compară acea etichetă calculată cu eticheta care se afla în cheia de produs - dacă se potrivesc, continuați cu instalarea.
Avantajele sunt că acest lucru este ușor și că lungimea cheii de produs poate fi controlată cu ușurință (cu un MAC bun, să zicem, HMAC, o etichetă de 20 de biți va face ca probabilitatea de ghicire aleatorie să fie mai mică de unu la un milion pe ghicire - dacă nu este suficient de scăzut, alegeți doar o etichetă mai lungă).
Dezavantajul este că, dacă un hacker bun îți dezactivează produsul, poate extrage cheia secretă și apoi poate genera propriile chei de produs după bunul plac. Au existat încercări de a proiecta implementări care sunt rezistente la acest lucru („criptografie cutie albă”); acestea s-au dovedit a fi dezamăgitoare. Cu toate acestea, dacă efortul implicat din partea atacatorului este mai mult decât efortul de a distribui doar cheia de produs bună cunoscută, ar putea fi acceptabil.
- Cealaltă abordare ar fi să mergeți cu un algoritm de semnătură cu cheie publică (cu o semnătură scurtă).
Această idee este similară, cu excepția faptului că producătorul generează o pereche de chei publice/private și inserează cheia publică pe dispozitiv.
Producătorul folosește cheia privată pentru a genera „chei de produs”; la instalare, software-ul folosește copia sa a cheii publice pentru a valida cheia de produs.
Avantajul este că nu mai trebuie să ne facem griji că un hacker va avea capacitatea de a crea noi chei de produs - pentru a face asta, are nevoie de cheia privată, iar aceasta nu este pe dispozitiv.
Dezavantajul este lungimea etichetei - chiar și algoritmii cu cea mai scurtă semnătură (care cred că este BLS) au încă semnături moderat lungi (de exemplu, 256 de biți pentru 100 de biți de securitate); și spre deosebire de cazul MAC, acestea nu pot fi trunchiate.
Au fost companii care au folosit semnături pentru cheile lor de produs - mă aștept că erau în minoritate.