Što je potpisivanje koda?

Hakeri često preuzimaju softver — bilo offline ili online — preuređuju i mijenjaju kôd kako bi ga učinili zlonamjernim, a zatim ga prebacuju na internet kako bi korisnici preuzeli besplatni program i zlonamjerni kod koji sadrži. Kako bi se osiguralo da korisnici ne naiđu na ovaj problem, koristi se potpisivanje koda. Potpisivanje koda je metoda kojom izvorni programer ili tvrtka koja je napravila program potpisuje program i, kada je program instaliran, provjerava se autentičnost kako bi se osiguralo da program nije dodao ili promijenio kodiranje. To ne zahtijeva nikakav poseban softver na strani korisnika, a korisnik može provjeriti identitet programera. Iako je to zamišljeno kao oblik sigurnosti, haker koji stvori program ili pronađe potpisivanje može stvoriti umjetno i pogrešno povjerenje.

Programi se stalno prodaju i online i offline. Kada netko kupi program izvan mreže od pouzdanog dobavljača ili prodavača, korisnik ima vrlo malo razloga za zabrinutost da će hakeri ubaciti zlonamjerni kod u program. To je zato što, osim ako programer softvera namjerno nije napravio opasan program, ne postoji način da netko mijenja softver i učini ga zlonamjernim. Kada korisnik preuzme program s interneta, takvo jamstvo ne postoji.

Kako bi se zaštitili korisnici koji kupuju ili preuzimaju programe online, implementirano je potpisivanje koda. Potpisivanje koda podijeljeno je na dva dijela: programera i krajnjeg korisnika. Programer koristi kriptografski hash, jednosmjernu operaciju koja prikriva kod programa, a zatim kombinira svoj privatni ključ s hashom. Time se stvara potpis koji je ugrađen u program.

Kada korisnik primi program, događa se drugi dio procesa potpisivanja koda. Program ispituje certifikat i javni ključ koje je programer stavio u program. Koristeći javni ključ, program može pokrenuti isti hash na trenutnom programiranju, a zatim provjerava izvornu verziju u odnosu na trenutnu verziju koja se instalira. Ako se i instalirani program i izvorni sinkroniziraju, to pokazuje korisniku da ništa nije izmijenjeno. Taj se proces obavlja automatski, a programi potrebni za ovu provjeru autentičnosti trebaju biti unaprijed instalirani na operacijskom sustavu (OS) računala.

Iako je potpisivanje koda moćna metoda za osiguranje sigurnosti, ima nedostataka. Ako korisnik preuzima program od hakera, autentifikacija će pokazati da je izvorni program netaknut. To bi korisnika dovelo do lažnog osjećaja sigurnosti; program je napravljen da bude zlonamjeran, pa se u tom smislu ne postiže sigurnost. Sofisticirani hakeri također mogu zaobići hash kako bi ubacili kodiranje, čineći potpisivanje koda beskorisnim.