Kaj je podpisovanje kode?

Hekerji pogosto vzamejo programsko opremo – brez povezave ali na spletu – prerazporedijo in spremenijo kodo, da postane zlonamerna, in jo nato naložijo v splet, tako da uporabniki prenesejo brezplačen program in zlonamerno kodo, ki jo vsebuje. Za zagotovitev, da uporabniki ne naletijo na to težavo, se uporablja podpisovanje kode. Podpisovanje kode je metoda, s katero izvirni programer ali podjetje, ki je izdelalo program, podpiše program in, ko je program nameščen, se preveri pristnost, da se zagotovi, da program ni imel dodane ali spremenjene kode. To ne zahteva posebne programske opreme na strani uporabnika, uporabnik pa lahko preveri identiteto programerja. Čeprav je to mišljeno kot oblika varnosti, lahko heker, ki ustvari program ali poišče podpis, ustvari umetno in napačno zaupanje.

Programi se nenehno prodajajo na spletu in brez povezave. Ko nekdo kupi program brez povezave od zaupanja vrednega dobavitelja ali prodajalca, ima uporabnik zelo malo razloga za skrb, da bi hekerji v program vstavili zlonamerno kodo. To je zato, ker, razen če razvijalec programske opreme namerno izdela nevaren program, ne more nekdo posegati v programsko opremo in jo narediti zlonamerno. Ko uporabnik naloži program z interneta, takšne garancije ni.

Za zaščito uporabnikov, ki kupujejo ali prenašajo programe prek spleta, se izvaja podpisovanje kode. Podpisovanje kode je razdeljeno na dva dela: razvijalca in končnega uporabnika. Razvijalec uporablja kriptografsko razpršitev, enosmerno operacijo, ki prikrije kodo programa, nato pa združi svoj zasebni ključ z razpršitvijo. To ustvari podpis, ki je implantiran v program.

Ko uporabnik prejme program, se zgodi drugi del postopka podpisovanja kode. Program pregleda potrdilo in javni ključ, ki ju je programer vstavil v program. Z uporabo javnega ključa lahko program zažene isto razpršitev v trenutnem programiranju, nato pa preveri izvirnik glede na trenutno nameščeno različico. Če se tako nameščen program kot izvirnik sinhronizirata, to uporabniku pokaže, da ni bilo nič spremenjeno. Ta postopek se izvede samodejno, programi, potrebni za to preverjanje pristnosti, pa morajo biti vnaprej nameščeni v operacijskem sistemu (OS) računalnika.

Čeprav je podpisovanje kode močan način za zagotavljanje varnosti, ima pomanjkljivosti. Če uporabnik prenaša program od hekerja, bo preverjanje pristnosti pokazalo, da je izvirni program nedotaknjen. To bi uporabnika pripeljalo do lažnega občutka varnosti; program je narejen tako, da je zlonamerno, zato varnost v tem smislu ni dosežena. Sofisticirani hekerji lahko zaobidejo tudi hash in vnesejo kodiranje, zaradi česar je podpisovanje kode neuporabno.