Hashfunktioner är en av de vanligaste metoderna för att skydda data i vår cybersäkerhetsfokuserade värld. Förutom kryptering är hashing en av de vanligaste teknikerna, särskilt i databaser. Hashing är en relativt enkel process som fungerar för att dölja data och säkerställa att den inte kan återställas till klartextformat. Detta säkerställer att informationen är verkligen skyddad och inte kan återställas oavsett hur länge en angripare har informationen.
En hashfunktion konverterar data av valfri storlek till en sträng med fast längd (en hash-digest) genom en enkelriktad process som inte kan vändas. Den blir sårbar när forskare hittar ett sätt att producera två olika indata med samma digest, kallad en kollision, vilket hände med SHA-1 2017. Vid kodsignering är hashning det första steget: filen hashas, och det är den hashen, inte själva filen, som faktiskt signeras.
Kort sagt: hashing omvandlar en fil till en digest med fast längd; kodsignering krypterar den digesterade filen med en privat nyckel för att skapa en signatur, som vem som helst kan verifiera med den matchande publika nyckeln. SHA-1 är föråldrad och osäker för ny signering; SHA-256 är den nuvarande standarden.
Key Takeaways
- SHA-1 är föråldrat för kodsignering; branschstandarden idag är SHA-256, och SHA-3 finns som ett strukturellt annorlunda alternativ om en framtida svaghet upptäcks i SHA-2-familjen.
- Hashing och kryptering löser olika problem: hashing är envägs och används för att upptäcka manipulering; kryptering är tvåvägs och används för att hålla data konfidentiell. Kodsignering använder båda, i sekvens.
Hur fungerar hashing?
Tanken bakom hashing är att maskera data så att den inte kan läsas i klartextformat , vilket är anledningen till att denna metod används så ofta i databaser. Så länge informationen har en fast längd spelar det ingen roll vad informationen faktiskt finns i databasen. Samma funktioner och procedurer som körs i en databas kan användas oavsett om kolumnerna som innehåller personnummer, till exempel, är giltiga personnummer eller inte.
Eftersom hashing skapar en hash-sammanfattning med fast längd kan en användare hasha all personligt identifierbar information (PII) , vilket säkerställer att allt som behöver göras med databasen kan göras korrekt. Men om en hotaktör skulle få tillgång till databasen skulle de inte kunna stjäla någon PII.
Hashning i sig är inte en extremt komplicerad process, och bilden nedan illustrerar denna process. Det innebär att man matar in en sträng, i vårt exempel ett personnummer, i en hashfunktion. Denna hashfunktion genererar sedan en slumpmässig sträng, kallad en hashdigest, som fortfarande kan användas i något som en databas, samtidigt som den faktiska data som hashades döljs.
Som jag nämnde tidigare, till skillnad från kryptering, som är en tvåvägsoperation som låter dig dekryptera informationen så länge du har nyckeln, är hashing en envägsprocess. Det betyder att även om en angripare skulle få tillgång till hela din databas, så länge personligt identifierbar information hashas, skulle de aldrig kunna använda den informationen och stjäla den information som skyddas. Några andra användningsområden för hashing är meddelandeintegritet, lösenordsvalidering och skapande av digitala signaturer.

Hashning är den främsta metoden som används för att skapa digitala signaturer av flera anledningar. Klientsidig hashning, en metod för att omvandla en fil till en sträng på klientmaskinen och sedan hasha den där på den klientmaskinen, gör det möjligt för en användare att skicka en säker fil som de behöver digitalt signerad utan att riskera en " Man in the Middle"-attack vid överföringen av hashen till servern som genererar signaturen.
Genom att hasha filen på klientsidan kan en angripare ta hash-sammanfattningen som genereras på klientdatorn under överföring, men fortfarande inte ha åtkomst till själva filen eftersom hashning är en enkelriktad process. Dessutom hjälper användningen av hashning i digitala signaturer till att säkra dessa digitala signaturer. Genom att signera programvara med en hashad signatur kan en användare omedelbart veta att signaturen kommer från programvaruutvecklaren och att ingen skadlig kod har placerats i programvaran medan den var på väg till användaren.
Vad är en hashfunktion?
Nu när vi har en bättre förståelse för hur hashing fungerar, låt oss ta en titt på själva hashfunktionerna. Du har förmodligen hört talas om de olika hashalgoritmerna, såsom SHA-1, SHA-256 och SHA-512.
SHA står för Secure Hash Algorithm, och siffran i slutet av varje algoritm refererar till bitstorleken på hash-digesten som skapas med hash-algoritmen i fråga. SHA-1 hash-digester är 160 bitar stora, SHA-256 hash-digester är 256 bitar stora, och så vidare. Dessa Secure Hashing-algoritmer skapades på grund av National Institute of Standards and Technologys standarder FIPS 180-4, Secure Hash Standard.
FIPS 180-4, eller Federal Information Processing Standards, kräver användning av hashalgoritmer eftersom hashkoder är beräkningssäkra och eftersom det är nästan omöjligt att hitta två olika meddelanden med samma hashdigest. Anledningen till att du inte kan hitta två olika meddelanden med samma hashdigest är att om du ändrar en enda bokstav i en fil och hashar den före och efter ändringen av den enda bokstaven, kommer hashdigesten som genereras att vara helt annorlunda. Det betyder att inga två olika meddelanden kan dela samma hashdigest.
Vilka är några säkerhetsbrister med hashing?
Jag har talat om hur säker hashing är, men det har upptäckts sårbarheter tidigare. För närvarande har SHA-1-hashalgoritmen föråldrats, eftersom den har visat sig vara svag på grund av ökande processorkraft, samt att molntjänster har kommit i framkant i datorlandskapet. Ett team på Google upptäckte att de kunde generera en fil som gav samma hashdigestvärde när de använde SHA-1-algoritmen. Detta har orsakat en del problem, eftersom om detta är möjligt med SHA-1, så kan detta i framtiden eller en snar framtid hända med de för närvarande betraktade säkra hashalgoritmerna.
Problemet bakom den här typen av sårbarheter är att en dator som använder SHA-1 för att verifiera att en webbplats är rätt webbplats istället kan ansluta till en skadlig webbplats, vilket resulterar i att information stjäls, inloggningsuppgifter stjäls eller skadlig programvara laddas ner till offrets dator. Om starkare säkra hashalgoritmer kan brytas på samma sätt, kan verktyg som använder dessa i den dagliga driften bli oanvändbara i framtiden. För närvarande har NIST släppt SHA-3, vilket har gjort stora framsteg för att vara säkrare än SHA-1.
Jämförelse av hashalgoritmer för kodsignering
| Algoritm | Storlek på digest | Status | Använd för ny signering |
|---|---|---|---|
| SHA-1 | 160 bitar | Föråldrad; praktiska kollisioner demonstrerade (SHAttered, 2017) | Nej |
| SHA-256 | 256 bitar | Nuvarande branschstandard | Ja |
| SHA-512 | 512 bitar | Starkare variant av SHA-2-familjen | Ja, där större smältningar är acceptabla |
| SHA-3 | Variabel (224–512 bitar) | Standardiserad (FIPS 202); strukturellt annorlunda än SHA-2 | Ja, som ett diversifieringsalternativ |
Hur hashing passar in i kodsigneringsprocessen
Hashning är ett steg i en större sekvens. Hela processen ser ut så här:
- Hasha filen: Programvaran eller filen som ska signeras körs via en hashfunktion (SHA-256 idag) för att producera en sammanfattning med fast längd.
- Kryptera hashen med den privata nyckeln: sammanfattningen, inte själva filen, krypteras med undertecknarens privata nyckel, vanligtvis lagrad i en HSMDenna krypterade sammanfattning är den digitala signaturen.
- Bifoga certifikatet och tidsstämpeln: Signaturen bäddas in i filen tillsammans med undertecknarens certifikat med offentlig nyckel och, helst, en betrodd tidsstämpel som bekräftar att certifikatet var giltigt vid signeringstillfället.
- Verifiera från mottagarens sida: Mottagarens system hashar den nedladdade filen på nytt, dekrypterar den inbäddade signaturen med den publika nyckeln från det bifogade certifikatet och jämför de två hasherna. En matchning bekräftar att filen inte har ändrats sedan signeringen.
Publika kontra privata nycklar vid signering
Den privata nyckeln signerar; den publika nyckeln verifierar. Endast den privata nyckeln, som aldrig lämnar signerarens kontroll (helst en HSM), kan producera en giltig signatur. Den publika nyckeln, som distribueras öppet via certifikatet, låter vem som helst bekräfta signaturen utan att någonsin kunna skapa en själv. Denna asymmetri är det som gör att en oberoende tredje part litar på en signatur utan att behöva en befintlig relation med signeraren.
Certifikattyper
Kodsigneringscertifikat finns i två huvudsakliga valideringsnivåer: Organisationsvaliderad (OV) , som verifierar ett registrerat företags inloggningsuppgifter, och Utökad validering (EV) , som innebär en mer grundlig identitetsverifiering och, på de flesta system, omedelbart undertrycker varningar om "Okänd utgivare". Båda typerna förlitar sig på samma underliggande hash-och-signeringsprocess som beskrivs ovan.
Varför tidsstämpling är viktigt
En tidsstämpel registrerar att certifikatet var giltigt vid signeringstillfället, från en betrodd tidsstämpelinstans. Utan den är en signaturs förtroende direkt kopplat till certifikatets giltighetsperiod, vilket innebär att signerad programvara blir otillförlitlig i det ögonblick certifikatet löper ut, även om själva programvaran aldrig har ändrats. Med en tidsstämpel förblir signaturen giltig på obestämd tid, eftersom den bevisar att certifikatet var giltigt när signeringen skedde, inte att det är giltigt nu.
Förtroendekedjan
Ett kodsigneringscertifikat är betrott eftersom det länkar tillbaka till en rotcertifikatutfärdare (CA) som operativsystem och webbläsare redan litar på, genom ett eller flera mellanliggande certifikat. Att verifiera en signatur innebär att gå igenom denna kedja: bekräfta att signerarens certifikat utfärdades av en betrodd mellanhand, som själv utfärdades av en betrodd rot. Om någon länk i den kedjan är trasig, saknas eller återkallas, misslyckas verifieringen även om själva hashen matchar.
Vanliga frågor om partihandel med mat och dryck
Är SHA-1 helt trasig, eller bara försvagad?
Praktiskt taget trasig av säkerhetsskäl. Forskare demonstrerade en fungerande kollisionsattack (två olika filer som producerar samma SHA-1-hash) år 2017, vilket är anledningen till att stora webbläsare, certifikatutfärdare och kodsigneringsstandarder har avskrivit den till förmån för SHA-256.
Bekräftar verifiering av en kodsignatur att programvaran är säker?
Nej. Det bekräftar att programvaran kommer från certifikatinnehavaren och inte har ändrats sedan signeringen. Det säger ingenting om huruvida programvaran är fri från buggar eller skadlig logik som signeraren själv har introducerat, vilket är anledningen till att signering kombineras med metoder som sårbarhetsskanning snarare än behandlas som en fullständig säkerhetsgaranti i sig.
Slutsats
Sammanfattningsvis är det av yttersta vikt att skydda data genom hashing, särskilt inom området digitala signaturer. Hashing säkerställer integriteten och skyddet av känslig information, vilket gör det till en grundläggande del av cybersäkerheten.
När vi navigerar i det ständigt föränderliga landskapet av cyberhot är det avgörande att erkänna potentiella sårbarheter i hashalgoritmer, vilket framgår av utfasningen av SHA-1. På Encryption Consulting LLC inser vi vikten av robust dataskydd.
Vår kodsigneringsplattform , CodeSign Secure , är ett bevis på vårt engagemang för säkra metoder. Genom att använda klientsidig hashing, virusskanning och signaturgenerering med hårdvarusäkerhetsmoduler erbjuder CodeSign Secure en omfattande lösning för att säkerställa att våra kunders data förblir skyddade under överföring och i vila. Vi prioriterar säkerhet för att erbjuda ett snabbt och enkelt sätt att signera olika filtyper. För att fråga om någon av våra produkter eller för att boka en demo av CodeSign Secure, besök vår webbplats www.encryptionconsulting.com.
