SHA-1

In cryptografie, SHA-1 is een cryptografische hash-functie is ontworpen door de Amerikaanse National Security Agency en is een Amerikaanse Federal Information Processing Standard gepubliceerd door de Verenigde Staten NIST.

SHA-1 produceert een 160- bit (20- byte ) hash-waarde. Een SHA-1 hash-waarde wordt meestal weergegeven als een hexadecimaal getal, 40 cijfers lang.

SHA staat voor ” SHA-familie “. De vier SHA algoritmen verschillend gestructureerd en genoemd SHA-0, SHA-1, SHA-2 en SHA-3. SHA-0 is de originele versie van de 160-bit hash-functie gepubliceerd in 1993 onder de naam “SHA”: het werd niet door vele toepassingen aangenomen. Gepubliceerd in 1995, SHA-1 is vergelijkbaar met SHA-0, maar verandert het oorspronkelijke SHA hash specificatie om vermeende tekortkomingen te verhelpen. SHA-2, gepubliceerd in 2001, is significant verschillend van de SHA-1 hash-functie.

SHA-1 is de meest gebruikte van de bestaande SHA hash functies en wordt in verschillende verspreide toepassingen en protocollen.

In 2005, cryptanalysts gevonden aanvallen op SHA-1 suggereert dat het algoritme niet veilig genoeg voor de lopende gebruik zou kunnen zijn. NIST vereist veel toepassingen in de federale agentschappen om te verhuizen naar SHA-2 na 2010 als gevolg van de zwakte. Hoewel geen succesvolle aanvallen zijn nog gerapporteerd SHA-2, is algoritmisch vergelijkbaar SHA-1. In 2012, na een lange hardloopwedstrijd, NIST gekozen een extra algoritme, Keccak, voor de normalisatie op de SHA-3. In november 2013 Microsoft hun afschrijvingen beleid op SHA-1, volgens welke Windows zal stoppen met het accepteren aangekondigd SHA-1 certificaten SSL 2017. In september 2014 Google aangekondigd hun afschrijvingen beleid op SHA-1, volgens welke Chrome zal stoppen met het accepteren van SHA-1 certificaten SSL op een gefaseerde wijze in 2017. Mozilla is ook plannen om te stoppen met het accepteren van SHA-1-gebaseerde SSL-certificaten in 2017.

Inhoud

  • 1 De SHA-1 hash-functie
  • 2 Toepassingen
    • 2.1 Cryptografie
    • Integriteit 2.2 Gegevens
  • 3 Cryptanalyse en validatie
    • 3.1 Aanvallen
    • 3.2 SHA-0
    • 3.3 Officiële validatie
  • 4 Voorbeelden en pseudocode
    • 4.1 Voorbeeld hashes
    • 4.2 SHA-1 pseudocode
  • 5 Vergelijking van SHA-functies
  • 6 Zie ook
  • 7 Notes
  • 8 Verwijzingen
  • 9 Externe links

De SHA-1 hash-functie

Een iteratie binnen de SHA-1 compressie functie:
A, B, C, D en E zijn 32-bits woorden van de toestand;
F is een niet-lineaire functie die varieert;
linker shift n staat voor een linkse beetje rotatie door n plaatsen;
n varieert voor elke bewerking;
W t is de uitgebreide boodschap woord van ronde t;
K t is de ronde constante van ronde t;
Toevoeging duidt Daarnaast modulo 2 32.

SHA-1 produceert een message digest gebaseerd op beginselen die vergelijkbaar zijn met die van Ronald L. Rivest van MIT in het ontwerp van de MD4 en MD5 message digest-algoritmen, maar heeft een meer conservatieve ontwerp.

De originele specificatie van het algoritme werd gepubliceerd in 1993 onder de titel Secure Hash Standard, FIPS PUB 180, door de Amerikaanse overheid normen agentschap NIST (National Institute of Standards and Technology). Deze versie wordt nu vaak genoemd SHA-0. Het werd ingetrokken door de NSA kort na de publicatie en werd vervangen door de herziene versie, gepubliceerd in 1995 in FIPS PUB 180-1 en gewoonlijk aangeduid SHA-1. SHA-1 verschilt van SHA-0 door slechts één bitsgewijze rotatie in de boodschap schema van de compressiefunctie ; dit werd gedaan volgens de NSA, om een fout in het oorspronkelijke algoritme dat de cryptografische veiligheid verminderd corrigeren. Echter, de NSA geen enkele verdere uitleg of identificeren van de fout die is gecorrigeerd. Zwakke punten zijn vervolgens gerapporteerd in zowel SHA-0 en SHA-1. SHA-1 blijkt groter weerstand te bieden tegen aanvallen het ondersteunen van de NSA’s bewering dat de verandering vergroot de veiligheid.

Toepassingen

Cryptografie

Voor meer informatie over dit onderwerp, zie cryptografische hash-functie § Applications .

SHA-1 maakt deel uit van een aantal grote schaal gebruikt beveiligingstoepassingen en protocollen, waaronder TLS en SSL, PGP, SSH, S / MIME en IPsec. Deze toepassingen kunnen ook gebruik maken van MD5 ; zowel MD5 en SHA-1 stammen af van MD4 . SHA-1 hash wordt ook gebruikt in gedistribueerde revisie controle systemen zoals Git, Mercurial, en Monotone revisies te identificeren en op te sporen data corruptie of manipulatie. Het algoritme is ook gebruikt op Nintendo’s Wii -spelcomputer voor ondertekening verificatie bij het opstarten , maar een belangrijke fout in de eerste implementaties van de firmware toegestaan voor een aanvaller om de veiligheid regeling van het systeem te omzeilen.

SHA-1 en SHA-2 zijn de veilige hash algoritmen door de wet vereist voor gebruik in bepaalde Amerikaanse regering toepassingen, waaronder het gebruik binnen andere cryptografische algoritmes en protocollen, voor de bescherming van gevoelige geclassificeerde informatie. FIPS PUB 180-1 ook aangemoedigd invoering en het gebruik van SHA-1 door particuliere en commerciële organisaties. SHA-1 wordt teruggetrokken uit de meeste overheid gebruikt; het Amerikaanse National Institute of Standards and Technology zei: “federale agentschappen moeten stoppen met het gebruik van SHA-1 voor toepassingen die botsing weerstand nodig hebben zo snel als praktisch mogelijk, en moet het gebruik van SHA-2 familie van hash functies voor deze toepassingen na 2010 ” (nadruk in het origineel), hoewel dat later ontspannen.

Een van de belangrijkste motivatie voor de publicatie van de SHA-familie was het Digital Signature Standard , waarin het is verwerkt.

De SHA hashfuncties zijn gebruikt voor de basis van de SHACAL blokcijfers.

Data-integriteit

Source control management systemen zoals Git en Mercurial gebruiken SHA-1 niet voor de veiligheid, maar om ervoor te zorgen dat de gegevens niet is veranderd als gevolg van toevallige corruptie. Linus Torvalds heeft gezegd over Git: “Als je de schijf corruptie, als je DRAM corruptie, als u enige vorm van problemen bij allen, Git zal ze opmerken Het is niet een kwestie van of, het is een garantie U kunt mensen hebben.. die proberen kwaadaardig te zijn. Ze zullen niet slagen. Niemand staat om SHA-1, breken is geweest, maar het punt is de SHA-1, voor zover Git betreft, is niet eens een beveiligingsfunctie . Het is puur een consistentiecontrole. De beveiliging onderdelen zijn elders, dus veel mensen gaan ervan uit dat er sinds gebruikt Git SHA-1 en SHA-1 wordt gebruikt voor het cryptografisch beveiligde spullen, ze denken dat, OK, het is een enorme beveiligingsfunctie. Het heeft helemaal niets te maken met de veiligheid, het is gewoon de beste hash je kunt krijgen. Ik garandeer je, als je je gegevens in Git, kunt u vertrouwt het feit dat vijf jaar later, nadat het werd omgezet van uw harde schijf naar DVD met wat nieuwe technologie en u hebt gekopieerd het mee, vijf jaar later kunt u controleren of de gegevens die u terug krijgt is exact dezelfde gegevens die u in en van de redenen waarom ik de zorg is voor de kernel, hadden we een pauze in op één van de BitKeeper sites waar mensen probeerden corrupte de kernel source code repositories. ” Niettemin, zonder de tweede voorafbeelding weerstand van SHA-1, ondertekend commits en labels zouden niet langer veilig de toestand van de repository als ze alleen de wortel van een ondertekenen Hash-boom.

Crypto-analyse en validatie

Voor een hash functie waarin L het aantal bits in de berichtsamenvatting vinden van een bericht dat overeenkomt met een bepaald bericht digest kan altijd worden uitgevoerd met een brute kracht zoekactie in ongeveer 2 L evaluaties. Dit wordt genoemd een voorafbeelding aanval en al dan niet praktisch zijn afhankelijk L en de specifieke computeromgeving. Het tweede criterium, het vinden van twee verschillende berichten dat de productie van het zelfde bericht verteren, namelijk een botsing, vergt gemiddeld slechts ongeveer 1,2 * 2 L / 2 evaluaties met behulp van een verjaardag aanval . Om deze reden is de kracht van een hashfunctie gewoonlijk vergeleken met een symmetrische codering van halve bericht samenvattingslengte. Aldus SHA-1 werd oorspronkelijk gedacht dat 80-bit sterkte.

Codeurs hebben botsing paren geproduceerd voor SHA-0 en hebben algoritmen die SHA-1 botsingen moeten produceren in veel minder dan de oorspronkelijk verwachte 2 80 evaluaties gevonden.

In termen van praktische veiligheid, een grote zorg over deze nieuwe aanvallen is dat ze de weg kunnen vrijmaken om meer efficiënt zijn. Of dit het geval is nog te zien, maar een migratie sterker hashes wordt verondersteld voorzichtig zijn. Sommige van de applicaties die cryptografische hashes gebruiken, zoals het wachtwoord opslag, zijn slechts minimaal beïnvloed door een botsing aanval. De bouw van een wachtwoord dat werkt voor een bepaalde rekening vereist een voorafbeelding aanval , alsmede toegang tot de hash van het oorspronkelijke wachtwoord, al dan niet triviaal. Omkeren wachtwoord-encryptie (bijvoorbeeld om een wachtwoord te verkrijgen om te proberen tegen de account van een gebruiker elders) niet mogelijk gemaakt door de aanslagen. (Maar zelfs een veilig wachtwoord hash niet voorkomen dat brute-force aanvallen op zwakke wachtwoorden .)

In het geval van een document ondertekent, kan een aanvaller niet gewoon fake een handtekening uit een bestaand document-de aanvaller zou hebben om een paar van documenten, een onschadelijk en een schadelijk te produceren, en krijg de private sleutel houder om de onschuldige document te ondertekenen. Er zijn praktische omstandigheden waarin dit mogelijk is; tot het einde van 2008, was het mogelijk om vervalste maken van SSL -certificaten met een MD5 botsing.

Vanwege het blok en iteratieve structuur van de algoritmen en de afwezigheid van aanvullende definitieve stappen, alle SHA functies zijn kwetsbaar voor de lengte-uitbreiding en gedeeltelijke-bericht botsing aanvallen. Deze aanvallen waardoor een aanvaller een bericht alleen ondertekend door een smidse ingetoetst hash – SHA (bericht || Toets) of SHA (key || bericht) – Door de uitbreiding van het bericht en herberekening van de hash zonder te weten de sleutel. De eenvoudigste verbetering om deze aanvallen te voorkomen is om twee keer hash: SHA_d (bericht) = SHA (SHA (0 ^ b || bericht)) (De lengte van 0 ^ b Nul blok, gelijk aan de blokgrootte van hashfunctie).

Aanvallen

In het begin van 2005, Rijmen en Oswald een aanval op een gereduceerde versie van SHA-1-53 van de 80 rondes-die botsingen komt met een computationele inspanning van minder dan 2 80 operaties gepubliceerd.

In februari 2005, een aanval van Xiaoyun Wang, Yiqun Lisa Yin en Hongbo Yu werd aangekondigd. De aanvallen kunnen botsingen in de volledige versie van SHA-1, waarbij minder dan 2 69 operaties vinden. (A Brute force zou 2 80 operaties nodig zijn.)

De auteurs schrijven: “In het bijzonder wordt onze analyse gebouwd op het oorspronkelijke verschil aanval op SHA-0 [ sic ], de bijna-botsing aanval op SHA-0, de uit meerdere botsing technieken, evenals de Berichtmodificatiesysteem technieken die in de botsing zoeken aanval op MD5. Breaking SHA-1 niet mogelijk zijn zonder deze krachtige analytische technieken. ” De auteurs hebben een aanrijding 58-round SHA-1, gevonden met 2 33 hash operaties gepresenteerd. Het papier met de volledige beschrijving aanval werd gepubliceerd in augustus 2005 op de crypto-conferentie.

In een interview, Yin stelt dat, “Grofweg, we gebruik maken van de volgende twee zwakke punten. Een daarvan is dat het bestand voorverwerkingsstap niet genoeg is ingewikkeld, een ander is dat bepaalde rekenkundige bewerkingen in de eerste 20 ronden onverwachte veiligheidsproblemen”

Op 17 augustus 2005 is een verbetering ten opzichte van de SHA-1 aanval werd aangekondigd namens Xiaoyun Wang, Andrew Yao en Frances Yao op de romp sessie CRYPTO 2005, het verlagen van de complexiteit die nodig is voor het vinden van een botsing in SHA-1 tot 2. Op 18 december 2007 heeft de gegevens van dit resultaat werd uitgelegd en gecontroleerd door Martin Cochran.

Christophe De Cannière en Christian Rechberger verder verbeterd de aanval op SHA-1 in “Finding SHA-1 Kenmerken: Algemeen Resultaten en toepassingen,” ontvangen van de Best Paper Award op ASIACRYPT 2006. Een twee-blok botsing voor 64-round SHA-1 werd gepresenteerd, gevonden met behulp van niet-geoptimaliseerde methoden met 2 35-compressie functie evaluaties. Aangezien deze aanval vereist het equivalent van ongeveer 2 35 evaluaties, wordt het beschouwd als een belangrijke theoretische pauze zijn. Hun aanval werd verder uitgebreid naar 73 rondes (van 80) in 2010 door Grechnikov. Met het oog op een te vinden feitelijke botsing in de volledige 80 ronden van de hashfunctie echter enorme hoeveelheden computertijd nodig. Daartoe een botsing zoektocht naar SHA-1 met behulp van de distributed computing platform BOINC begon 8 augustus 2007, georganiseerd door de Technische Universiteit van Graz. De inspanning werd verlaten 12 mei 2009 te wijten aan gebrek aan vooruitgang.

Bij de Rump zitting van CRYPTO 2006, Christian Rechberger en Christophe De Cannière beweerde een botsing aanval op SHA-1, dat zou een aanvaller om minstens een gedeelte van het bericht te selecteren ontdekt te hebben.

In 2008, een aanval methodologie van Stéphane Manuel gemeld hash botsingen met een geschatte theoretische complexiteit van 2 operaties. Maar hij later ingetrokken die bewering na de vaststelling dat de lokale botsing paden waren niet echt onafhankelijk, en tenslotte een offerte voor de meest efficiënte een botsing vector die al eerder dit werk bekend was.

Cameron McDonald, Philip Hawkes en Josef Pieprzyk presenteerde een hash collision-aanval met beweerde complexiteit 2 bij de Rump zitting van Eurocrypt 2009. Echter, de bijbehorende papieren, “Differential Pad voor SHA-1 met complexiteit O (2 52) ” is ingetrokken als gevolg van de ontdekking van de auteurs dat hun schatting onjuist was.

Met ingang van 2012, is de meest efficiënte aanval tegen SHA-1 beschouwd als de ene door Marc Stevens zijn met een geschatte kosten van $ 2.77M tot een enkele hash-waarde te doorbreken door het huren van CPU-kracht van cloud servers. Stevens ontwikkeld deze aanval in een project genaamd HashClash, het implementeren van een differentiële pad aanval. Op 8 november 2010 beweerde hij dat hij een volledig werkende bijna-botsing aanval tegen volledige SHA-1 werken met een geschatte complexiteit gelijk aan 2 57.5 SHA-1 compressies gehad. Hij schat deze aanval kan worden uitgebreid tot een volledige botsing met een complexiteit ongeveer 2 61.

SHA-0

Op CRYPTO 98, twee Franse onderzoekers, Florent Chabaud en Antoine Joux, presenteerde een aanval op SHA-0 ( Chabaud en Joux, 1998 ): botsingen kan worden gevonden met de complexiteit 2 61, minder dan de 2 80 voor een ideale hash-functie van de dezelfde grootte.

In 2004, Biham en Chen gevonden in de buurt-botsingen voor SHA-0-twee berichten die hash tot bijna dezelfde waarde; in dit geval, 142 van de 160 bits gelijk. Zij vonden ook vol botsingen van SHA-0 gereduceerd tot 62 van haar 80 rondes.

Vervolgens, op 12 augustus 2004, een botsing voor het volledige SHA-0-algoritme werd aangekondigd door Joux, Carribault, Lemuet en Jalby. Dit werd gedaan met behulp van een veralgemening van de Chabaud en Joux aanval. Het vinden van de botsing had complexiteit 2 51 en duurde ongeveer 80.000 CPU-uren op een supercomputer met 256 Itanium 2 processors. (Gelijkwaardig aan 13 dagen van de full-time gebruik van de computer.)

Op 17 augustus 2004, tijdens de Rump zitting van CRYPTO 2004 voorlopige resultaten werden aangekondigd door Wang Feng, Lai en Yu, over een aanval op MD5 , SHA-0 en andere hash functies. De complexiteit van hun aanval op SHA-0 2 40 aanzienlijk beter dan de aanval van Joux et al.

In februari 2005, een aanval van Xiaoyun Wang, Yiqun Lisa Yin en Hongbo Yu werd bekend gemaakt welke botsingen in SHA-0 in 2 39 operaties kon vinden.

Andere aanval in 2008 de toepassing van de boemerang aanval bracht de complexiteit van het vinden van botsingen omlaag naar 2 33.6, die wordt geschat op 1 uur op een gemiddelde PC.

In het licht van de resultaten voor SHA-0, sommige deskundigen gesuggereerd dat de plannen voor het gebruik van SHA-1 in nieuwe cryptosystemen moet worden heroverwogen. Nadat de Crypto 2004 resultaten gepubliceerd, NIST aangekondigd dat ze van plan waren uit te faseren het gebruik van SHA-1 in 2010 ten gunste van de SHA-2 varianten.

Officiële validatie

Hoofd artikel: cryptografische Module Validation Program

Implementaties van alle FIPS goedgekeurde beveiligingsfuncties officieel kan worden gevalideerd door de CMVP programma, gezamenlijk beheerd door de National Institute of Standards and Technology (NIST) en de Communications Security Establishment (CSE). Voor informele verificatie, wordt een pakket maatregelen om een hoog aantal testvectoren genereren beschikbaar gesteld voor download op de NIST site; de resulterende verificatie betekent echter niet in de plaats, op welke manier, de formele CMVP validatie, die wettelijk verplicht is voor bepaalde toepassingen.

Met ingang van december 2013 , zijn er meer dan 2000 gevalideerd implementaties van SHA-1, met 14 van hen staat de behandeling van berichten met een lengte in bits geen veelvoud van acht (zie SHS Validatie List ).

Geef een reactie