Förtroende är avgörande i det mjukvarudrivna samhälle vi lever i. Men hur kan vi avgöra vilken mjukvara vi ska lita på och vilken vi ska undvika? Vi kan tacka kodsignering för det.
Utvecklare använder kodsignering för att visa en programvaras legitimitet och säkerställa att den kommer från en pålitlig källa och inte har manipulerats. Kryptografi, mer specifikt ett certifikat som kallas kodsigneringscertifikat, är nödvändigt för kodsignering.
Kunder bör ständigt vara uppmärksamma på tredje part som utger sig för att vara programvaruleverantörer när de laddar ner programvara från internet. Programvara kan säkerställas att den kommer från rätt källa med hjälp av ett verktyg som kodsignering. För att säkerställa att konsumenter får programvara som åstadkommer det som skaparen påstår sig göra, är kodsignering en process där en programvaruutvecklare eller distributör digitalt signerar filen som skickas ut. Signaturen indikerar att koden inte har ändrats från sitt ursprungliga tillstånd.
Fördelar med kodsignering
Kodsignering är en teknik för att lägga till en digital signatur till ett program, en fil, en programuppdatering eller en körbar fil så att dess giltighet och integritet kan kontrolleras vid installation och körning. Det garanterar för mottagaren vem författaren är och att den inte har öppnats och manipulerats, ungefär som ett vaxsigill. För att visa, till exempel, att din Windows 10-uppdatering verkligen kom från Microsoft och inte en hackare som försöker bryta sig in på din dator, använder Microsofts utvecklare, programmerare och mjukvaruingenjörer kodsignering.
Tack vare kodsignering kan du vara säker på att du laddar ner en fil från en legitim författare eller utgivare och inte från en angripare som försöker stjäla din personliga information och dina data. I grund och botten informerar den dig om att en skurk inte har ändrat koden så att du vet att det är säkert att installera och köra den på din maskin.
Om du någonsin har sett det lilla fönstret som visas när du försöker starta ett program du har laddat ner, det som frågar "Är du säker på att du vill köra det här?" och identifierar utgivaren, då vet du vad jag pratar om. Då har du upplevt kodsignering. Den dialogrutan informerar dig om att patchen för din Mac OS X är giltig och fortfarande i samma skick som när den signerades av Apple Inc.
Vad gör kodsignering?
Som användare har kodsignering några olika syften som kan hjälpa dig att avgöra om du ska lita på programnedladdningar och andra onlineinteraktioner. Kodsignering används oftast för att verifiera författarskapet till filer, nedladdningar och programvara. Till exempel är det mer sannolikt att du installerar en nedladdningsfil som levererats till dig från Microsoft än en från någon annan källa eftersom den verkar vara mycket mer tillförlitlig.
Det kommer oundvikligen att finnas uppdateringar för den programvara du installerar på din dator i framtiden. Du kan vara säker på att efterföljande uppdateringar kommer från samma källa och är säkra att köra på din dator när de är kodsignerade med samma nyckel som användes för att "försegla" dina första nedladdningar.
Hur fungerar kodsignering?
Ur en utvecklares perspektiv har kodsignering tre huvuddelar: osignerade programfiler; kodsigneringscertifikat; och kodsigneringsappar. Program för kodsignering ingår vanligtvis i operativsystem som Microsoft Windows, Mac OS X, etc. Certifikatutfärdare är ofta källan till kodsigneringscertifikat (CA:er).
Offentlig nyckelkryptering
När du kodar ett meddelande för att skydda det från obehöriga läsare använder du kryptering. Avkodningen av meddelandet är beroende av att du känner till nyckeln som återställer värdena till deras ursprungliga tillstånd, vilket gör att meddelandet kan läsas. Vanligtvis görs detta genom att köra det genom en matematisk funktion (kallad "nyckel") för att ändra värden. Nyckeln som krypterar meddelandet och nyckeln som dekrypterar det är olika i offentlig nyckelkryptering (även känd som asymmetrisk kryptering) (därav asymmetrisk). Det är känt som ett "publik nyckel"-system eftersom endast en nyckel – den "publika nyckeln" – används för att säkra kommunikationen, medan den andra – den "privata nyckeln" – hålls hemlig.
Privata nycklar måste förvaras säkra, konfidentiella och utom händerna på någon som försöker avlyssna eller manipulera meddelanden för att denna typ av kryptering ska fungera. Typen av överföring avgör om den publika nyckeln används för att koda eller avkoda meddelandet. Kryptera med den privata nyckeln och avkoda med den publika nyckeln om du vill att alla ska kunna läsa meddelandet men inte vill att någon ska manipulera det. Du krypterar med den publika nyckeln men avkodar med den privata nyckeln om du vill att alla ska kunna skicka meddelanden men inte vill att de avlyssnas av fel person.
Hash-funktion
En form av kryptering som kallas hashfunktioner är avsedd att vara irreversibel. Hashfunktioner är utformade för att vara enkelriktade och använder en matematisk funktion som modifierar data på ett sätt som inte kan ångras, i motsats till att koda med en nyckel och använda en nyckel för att avkoda. Den vanligaste jämförelsen är som att blanda färg. Som en illustration kommer att blanda blått (de ursprungliga värdena) och gult (hashfunktionen) alltid resultera i grönt, men det finns inget sätt att separera de två färgerna och få tillbaka det blå.
När du behöver ett fast värde och inte behöver läsa informationen igen används hashfunktioner. Det vanligaste exemplet är inloggningslösenord, som ofta hashas av webbplatser för lagring. Om det någonsin sker ett intrång har hackaren bara fått tag på en samling slumpmässiga tal. Webbplatsen hashar ditt lösenord igen och jämför det med det tidigare sparade hashvärdet när du loggar in. De släpper in dig om informationen du angav matchar det som finns i deras register. De behöver bara veta värdet; de behöver inte läsa själva lösenordet.
Kodsigneringscertifikat
Innan utvecklarna kan signera sitt arbete måste de generera ett offentligt/privat nyckelpar. Detta görs ofta lokalt med hjälp av programvaruverktyg som "OpenSSL". Utvecklare lämnar sedan den offentliga nyckeln och organisationens identitetsinformation till en pålitlig CA. CA:n verifierar äktheten av identitetsinformationen och utfärdar sedan certifikatet till utvecklaren. Detta är kodsigneringscertifikatet som signerades med CA:ns privata nyckel och innehåller utvecklarens organisations identitet och utvecklarens offentliga nyckel.
Utvecklare tar all kod de producerat och hashar den när de är redo att "signera" den för att bevisa författarskap. Utdatavärdet kodas sedan med den tidigare angivna privata nyckeln, som ofta skapas av författaren, samt kodsigneringscertifikatet, som innehåller den publika nyckeln och författarens identitet (vilket bevisar författarskapet). Resultatet av denna procedur inkluderas sedan i programmet som ska distribueras.
Detta är ett exempel på kodsignering. De flesta webbläsare och operativsystem levereras med CA:ns publika nyckel förinstallerad. När en användare laddar ner programmet autentiserar de först äktheten hos kodsigneringscertifikatet som ingår i den signerade programvaran för att säkerställa att det kommer från en pålitlig CA med hjälp av CA:ns publika nyckel. Den krypterade hashen dekrypteras sedan med utvecklarens publika nyckel, som sedan tas bort från certifikatet.
Programmet hashas sedan ytterligare en gång, och resultatet jämförs med det dekrypterade värdet. Programmet har inte manipulerats eller skadats under överföringen om hashvärdena som genererats av användaren och utvecklaren överensstämmer. Användaren informeras sedan om att programmet är i samma skick som när utvecklaren senast lämnade det och att det är säkert att installera och köra om utvecklaren kan litas på det.
Rotcertifikat
Kodsignering kan ge dig, slutanvändaren, förtroende för det nedladdade programmets tillförlitlighet och giltighet. Du bör dock också vara medveten om att illvilliga aktörer kan skapa ett kodsigneringscertifikat och ett offentligt-privat nyckelpar för att ge intrycket av att de auktoriserades av en legitim certifikatutfärdare. Hur avgör man om certifikat är tillförlitliga om vem som helst kan skapa ett kodsigneringscertifikat?
Rotcertifikat spelar en roll i detta. Kodsigneringscertifikat kan jämföras med ett släktträd. Du kan spåra certifikat tillbaka för att upptäcka vilket signeringscertifikat – ditt rotcertifikat – som finns i roten av trädet för att bekräfta var de kommer från. Eftersom du kan följa "förtroendekedjan" tillbaka till den ursprungliga signeringsmyndigheten med rotcertifikatet kan du avgöra om de andra kodsigneringscertifikaten är tillförlitliga.
Ett företag som Apple eller Microsoft kan betraktas som rotinspektör. Systemet kommer att varna dig för att lita på certifikatet som användes för att signera programmet du försöker ladda ner om din programvaras signeringscertifikat inte kan hitta ett tillförlitligt rotcertifikat. Även en betrodd inspektör kan ibland misslyckas med att kännas igen om den inte är installerad i en webbläsare eller i ett operativsystems förtroendearkiv. För att webbläsaren eller operativsystemet ska acceptera rotcertifikatet som tillförlitligt och giltigt i dessa situationer måste du manuellt lägga in det i ditt förtroendearkiv.
Vilka typer av digitala certifikat finns det?
Olika system kräver olika typer av autentisering. Det som fungerar på en stationär dator är sannolikt olämpligt för mobila system och vice versa. Här är några exempel på olika certifikat för både stationär och mobil programvara.
Skrivbordscertifikat:
- Microsoft
- java
- Microsoft Office och VBA
- Adobe AI
Mobila certifikat:
- Windows Phone
- Windows Phone Privat företag
- Java-verifierad
- Android
Om du vill signera och säkra din programvara bör du först veta vilken typ av programvara eller system du börjar med och arbeta utifrån det.
Vad är användningen av ett digitalt certifikat?
A digitalt certifikat är avsett att förse programvaran eller koden du distribuerar till dina användare med en identitet. Användare kan verifiera programutgivaren med hjälp av ett digitalt certifikat. Eftersom dessa digitala certifikat utfärdas av certifikatutfärdare har användarna större förtroende för utgivarna. Möjligheten att spåra deras produkt och antalet nedladdningar ger digitala certifikat ett stort mervärde till programvaruleverantörer.
Hur länge är ett digitalt certifikat giltigt?
Hur länge ett certifikat är giltigt är en annan vanlig fråga från de som försöker få ett eget digitalt kodsigneringscertifikat. Digitala certifikat har normalt bara ett eller två års giltighetstid, men den faktiska giltighetstiden kan variera beroende på utfärdaren.
Denna giltighet är kort av följande två skäl:
Privata nycklar och säkerhetscertifikat kan bli hackade och gör det. Alla tidigare certifieringar, även de som har blivit stulna, blir ogiltiga vid förnyelse och ändras vart eller vartannat år.
Tekniken utvecklas i ännu snabbare takt än resten av världen. För fem år sedan var det som var säkert inte längre alls lika säkert. Kodsigneringscertifikat kan uppdateras och ändras för att hålla certifikatsäkerheten aktuell.
Var används kodsignering?
Kodsignering används överallt där en utvecklare vill att en användare ska vara säker på källan till en programvara. Detta inkluderar:
1. Windows-program och programvaruuppdateringar
2. Apple-programvara
3. Microsoft Office VBA-objekt och makron
4. .jar-filer
5. .air- eller .airi-filer
6. I princip vilken körbar fil som helst
Var medveten om att på grund av Linux-utvecklingens distribuerade natur används kodsignering ofta inte för Linux-baserad programvara, så den programvaran kan komma att vara osignerad. Om det händer kommer din dator (om den ger någon anmälan) att meddela att den kommer från en "okänd utvecklare" eller något liknande. Här är några andra applikationer och program som använder kodsignering för att öka sin säkerhet.
- iOSKodsignering i iOS för App Store görs med Xcode. Syftet med att signera din app är helt enkelt att låta iOS veta vem som signerade appen ursprungligen och att se till att den inte har ändrats sedan den ursprungligen signerades av utvecklaren. Om du behöver återkalla ditt iOS-certifikat måste du använda ditt utvecklarkonto eller Xcode för att slutföra processen.
- XcodeXcode används av iOS för att kodsignera appar och säkerställa deras säkerhet. Innan en enhet kan laddas upp och godkännas för iTunes Store måste den ha ett giltigt Apple Developer ID med ett giltigt certifikat eller en giltigt profil. För att kunna integrera din app måste du använda ett utvecklingscertifikat. För att köra appen på en enhet måste du använda ett distributionscertifikat för att skicka ut appen och testa den.
- C#Visual C# använder stark namnsignering för att få en unik signeringskod som inte är tillgänglig för någon annan i världen och som inte kan förfalskas. När du använder Visual C# kan du helt enkelt signera din distribution med verktyget sn.exe. Detta fungerar som din signatur genom att använda signeringskontrollverktyget och skriva ut "Strong Name: Signed".
- Windows-certifikatNästan alla körbara filer kan signeras med en digital signatur för att verifiera filens säkerhet och integritet. För att filen ska anses vara säker i Windows måste den signeras av en erkänd certifikatutfärdare. Alla som distribuerar skadlig kod under ett giltigt certifikat hålls juridiskt ansvariga för den programvara de distribuerar.
- Visual StudioVisual Studio är särskilt användbart när det gäller stark namnsignering för sammansättningar – en notoriskt svår uppgift. Stark namnsignering via Visual Studio gör att andra datorer kan lita på programvaruutvecklaren.
