Hash data. Hashing koncept


Frågor:

1. Konceptet med en hashfunktion.

2. Använda blockkrypteringsalgoritmer för att generera en hashfunktion.

3. Granskning av algoritmer för bildandet av hashfunktioner.

1. Hash funktion koncept

Hash funktion(hash-funktion) är en matematisk eller annan funktion som, för en sträng av godtycklig längd, beräknar något heltalsvärde eller någon annan sträng med fast längd. Matematiskt kan det skrivas så här:

h = H (M) ,

var M - det ursprungliga meddelandet, ibland kallat prototyp , a h - resultatet, kallat hashvärde (och även hash-kod eller sammanfatta meddelanden(från engelskan. meddelandesammanfattning)).

Innebörden av hash-funktionen är att bestämma den karakteristiska egenskapen för förbilden - värdet av hash-funktionen. Detta värde har vanligtvis en viss fast storlek, till exempel 64 eller 128 bitar. Hashkoden kan analyseras ytterligare för att lösa alla problem. Så, till exempel, hashing kan användas för att jämföra data: om två datamatriser har olika hashkoder, är matriserna garanterat olika; om de är samma är arrayerna troligen desamma. I det allmänna fallet finns det ingen en-till-en-överensstämmelse mellan originaldata och hash-koden på grund av att antalet värden för hashfunktioner alltid är mindre än antalet varianter av indata. Därför finns det många inmatningsmeddelanden som ger samma hashkoder (sådana situationer kallas kollisioner ). Sannolikheten för kollisioner spelar en viktig roll för att bedöma kvaliteten på hashfunktioner.

Hash-funktioner används ofta i modern kryptografi.

Den enklaste hashfunktionen kan konstrueras med "summa modulo 2"-operationen enligt följande: vi får indatasträngen, adderar alla byte modulo 2 och returnerar resultatbyten som värdet på hashfunktionen. Längden på hashvärdet i detta fall kommer att vara 8 bitar, oavsett storleken på inmatningsmeddelandet.

Anta till exempel att det ursprungliga digitaliserade meddelandet var följande (i hexadecimalt format):

2 B1 4 A9 5 FE4

Låt oss översätta meddelandet till binär form, skriva byten under varandra och lägga till bitarna i varje kolumn modulo 2:

0010 1011

0001 0100

1010 1001

0101 1111

1110 0100

——————-

0010 1101

Resultat: 0010 1101 eller 2 D och kommer att vara värdet på hashfunktionen.

En sådan hashfunktion kan dock inte användas för kryptografiska ändamål, till exempel för att generera en elektronisk signatur, eftersom det är ganska enkelt att ändra innehållet i ett signerat meddelande utan att ändra kontrollsummans värde.

Därför är den övervägda hashfunktionen inte lämplig för kryptografiska applikationer. Inom kryptografi anses en hashfunktion vara bra om det är svårt att skapa två förbilder med samma hashvärde, och även om funktionens utdata inte uttryckligen är beroende av input.

Låt oss formulera de grundläggande kraven för kryptografiska hashfunktioner:

· Hashfunktionen måste vara tillämpbar på ett meddelande av vilken storlek som helst;

· Beräkningen av värdet på funktionen bör utföras tillräckligt snabbt;

Med ett känt värde på hashfunktionen borde det vara svårt (nästan omöjligt) att hitta en lämplig förbild M ;

Med ett känt meddelande M det borde vara svårt att hitta ett annat meddelande M ' med samma hashvärde som det ursprungliga meddelandet;

· Det borde vara svårt att hitta några slumpmässiga olika meddelanden med samma hashvärde.

Att skapa en hashfunktion som uppfyller alla dessa krav är ingen lätt uppgift. Man bör också komma ihåg att data av godtycklig storlek tas emot vid ingången av funktionen, och hashresultatet bör inte vara detsamma för data av olika storlekar.

För närvarande används i praktiken funktioner som hashfunktioner som bearbetar inmatningsmeddelandet block för block och beräknar hashvärdet Hej för varje block M i inmatningsmeddelande genom beroenden av formuläret

h i = H (M i, h i-1),

var h i-1 - resultatet som erhålls vid beräkning av hashfunktionen för föregående block med indata.

Som ett resultat, utmatningen av hash-funktionen h n är en funktion av alla n block av inmatningsmeddelandet.

2. Använder blockkrypteringsalgoritmer för att generera en hashfunktion.

En symmetrisk blockkrypteringsalgoritm kan användas som en hashfunktion. Om blockalgoritmen som används är kryptografiskt säker, kommer hashfunktionen baserad på den också att vara tillförlitlig.

Det enklaste sättet att använda blockalgoritmen för att få en hashkod är att kryptera meddelandet i CBC-läge ( Cipher Block Chaining - Kedja block av chiffertext). I detta fall presenteras meddelandet som en sekvens av block, vars längd är lika med längden på krypteringsalgoritmblocket. Vid behov stoppas det sista blocket till höger med nollor för att få ett block av önskad längd. Hashvärdet kommer att vara det sista krypterade textblocket. Förutsatt att en pålitlig blockkrypteringsalgoritm används kommer det resulterande hashvärdet att ha följande egenskaper:

· Det är nästan omöjligt att beräkna hashvärdet för en given öppen array av information utan att känna till krypteringsnyckeln;

· Det är praktiskt taget omöjligt att välja öppen data för ett givet värde på hashfunktionen utan att känna till krypteringsnyckeln.

Det hashvärde som bildas på detta sätt brukar kallas imitationsinsats eller autentisering och används för att kontrollera meddelandets integritet. Sålunda är infogande personifiering en kontrollkombination som beror på öppna data och hemlig nyckelinformation. Syftet med att använda en simulerad infogning är att upptäcka alla oavsiktliga eller avsiktliga ändringar i informationsfältet. Värdet som erhålls av hashfunktionen vid bearbetning av inmatningsmeddelandet läggs till meddelandet i det ögonblick då meddelandet är känt för att vara korrekt. Mottagaren verifierar meddelandets integritet genom att beräkna efterbildningen av det mottagna meddelandet och jämföra det med den mottagna hashkoden, som måste överföras på ett säkert sätt. En av sådana säkra metoder kan vara kryptering av personifieringen med avsändarens privata nyckel, d.v.s. skapa en signatur. Det är också möjligt att kryptera den mottagna hashkoden med en symmetrisk krypteringsalgoritm om avsändaren och mottagaren har en gemensam symmetrisk krypteringsnyckel.

Den specificerade processen för att erhålla och använda en simulerad insats beskrivs i den inhemska standarden GOST 28147-89. Standarden föreslår att använda de minst signifikanta 32 bitarna av blocket som tas emot vid utgången av krypteringsoperationen för hela meddelandet i läget för sammanlänkning av chifferblock för att styra integriteten hos det överförda meddelandet. På samma sätt kan vilken blocksymmetrisk krypteringsalgoritm som helst användas för att generera en imiterad insättning.

Ett annat möjligt sätt att använda ett blockchiffer för att generera en hashkod är följande. Det ursprungliga meddelandet behandlas sekventiellt i block. Det sista blocket är utfyllt med nollor, om nödvändigt, ibland läggs meddelandets längd till det sista blocket som ett binärt tal. I varje steg krypterar vi hashvärdet som erhölls i föregående steg, och tar det aktuella meddelandeblocket som nyckel. Det senast mottagna krypterade värdet blir det slutliga hashresultatet.

Således, om det vanliga meddelandekrypteringsschemat är M med hjälp av ett blockchiffer f på nyckeln TILL vi spelade in som E = f (M, K) , sedan schemat för att erhålla hashkoden h enligt ovanstående algoritm kan representeras som

Hej = f ( Hej -1 , M )

Som den första hashkoden h 0 ta lite konstant. Kryptering utförs i enkelt överskrivningsläge. När du använder den angivna metoden är blockstorleken densamma som nyckellängden och storleken på hashvärdet blir blocklängden.

Ett annat sätt att använda blockchifferet i enkelt ersättningsläge är också möjligt: ​​meddelandeelement krypteras med hashvärden som erhållits i föregående steg:

Hej = f ( M , Hej -1 ,)

Faktum är att det finns flera fler möjliga scheman för att använda ett blockchiffer för att bilda en hashfunktion. Låt vara M i - blocket för det ursprungliga meddelandet, Hej - värdet av hashfunktionen på i -th etappen, f - blockkrypteringsalgoritm som används i det enkla ersättningsläget - additionsoperation modulo 2. Då är till exempel följande scheman för att generera en hashfunktion möjliga:

I alla dessa scheman är längden på det genererade hashvärdet lika med längden på det krypterade blocket. Alla dessa, liksom några andra scheman för att använda blockkrypteringsalgoritmen för att beräkna hashvärden, kan tillämpas i praktiken.

Den största nackdelen med hashfunktioner utformade på basis av blockalgoritmer är den relativt låga drifthastigheten. Den erforderliga kryptografiska styrkan kan uppnås i ett mindre antal operationer på indata. Det finns snabbare hashalgoritmer (de vanligaste av dem är MD5, SHA-1, SHA-2 och GOST R 34.11-94).

3. Granskning av algoritmer för bildandet av hashfunktioner.

För närvarande har olika speciella algoritmer för att beräkna hashfunktionen föreslagits och används praktiskt. De mest kända algoritmerna är MD5, SHA-1, SHA-2 och andra versioner av SHA, såväl som den inhemska algoritmen som anges i GOST R 34.11-94.

Algoritm MD5 dök upp i början av 90-talet av 1900-talet som ett resultat av förbättringen av algoritmen för att generera MD4-hashfunktionen. Tecknen i namnet "MD" står för Message Digest - en sammanfattning av meddelandet. Författaren till MD4- och MD5-algoritmerna är R. Rivest. Som ett resultat av att använda MD5 genereras ett 128-bitars hashvärde för ett godtyckligt meddelande. Indata bearbetas i block om 512 bitar. Algoritmen använder elementära logiska operationer (inversion, konjunktion, addition mod 2, cykliska skift, etc.), såväl som vanlig aritmetisk addition. Den komplexa upprepningen av dessa elementära funktioner i algoritmen säkerställer att resultatet efter bearbetning är väl blandat. Därför är det osannolikt att två meddelanden, valda slumpmässigt, har samma hash-kod. MD5-algoritmen har följande egenskap: varje bit av det mottagna hashvärdet är en funktion av varje bit av inmatningen. MD5 anses vara den starkaste hashfunktionen för ett 128-bitars hashvärde.

Algoritm SHA Secure Hash Algorithm (Secure Hash Algorithm) utvecklades av US National Institute of Standards and Technology (NIST) och publicerades som en amerikansk federal informationsstandard 1993. SHA-1, liksom MD5, är baserad på MD4-algoritmen. SHA-1 genererar ett 160-bitars hashvärde baserat på bearbetning av det ursprungliga meddelandet i block om 512 bitar. SHA-1-algoritmen använder också enkla logiska och aritmetiska operationer. Den viktigaste skillnaden mellan SHA-1 och MD5 är att SHA-1-hash är 32 bitar längre än MD5-hash. Om vi ​​antar att båda algoritmerna är av samma komplexitet för kryptoanalys, så är SHA-1 en mer robust algoritm. Med en brute force attack (frontal attack) är det svårare att skapa ett godtyckligt meddelande som har en given hashkod, och det är också svårare att skapa två meddelanden som har samma hashkod.

År 2001 antog US National Institute of Standards and Technology tre hashfunktioner som en standard med en längre hashlängd än SHA-1. Dessa hashfunktioner kallas ofta SHA-2 eller SHA-256, SHA-384 och SHA-512 (namnet anger längden på hashkoden som genereras av algoritmerna). Dessa algoritmer skiljer sig inte bara i längden på den genererade hashkoden, utan också i de använda interna funktionerna och längden på det bearbetade blocket (för SHA-256 är blocklängden 512, och för SHA-384 och SHA-512, blocklängden är 1024 bitar). Gradvisa förbättringar av SHA-algoritmen leder till en ökning av dess kryptografiska styrka. Trots skillnaderna mellan de övervägda algoritmerna från varandra är de alla vidareutvecklingar av SHA-1 och MD4 och har en liknande struktur.

I Ryssland har GOST R34.11-94 antagits, vilket är den inhemska standarden för hashfunktioner. Dess struktur skiljer sig ganska mycket från strukturen för SHA-1,2 eller MD5-algoritmerna, som är baserade på MD4-algoritmen. Längden på hashkoden som genereras av GOST R 34.11-94-algoritmen är 256 bitar. Algoritmen behandlar sekventiellt det ursprungliga meddelandet i block om 256 bitar från höger till vänster. Algoritmens parameter är hashstartvektorn - ett godtyckligt fast värde med en längd på också 256 bitar. GOST R 34.11-94-algoritmen använder operationerna permutation, skift, aritmetisk addition, additionsmodulo 2. Som en hjälpfunktion använder GOST 34.11-94 algoritmen enligt GOST 28147-89 i det enkla ersättningsläget.

4. Hashkrav

En hashfunktion är en enkelriktad funktion utformad för att hämta ett sammandrag eller "fingeravtryck" av en fil, ett meddelande eller något datablock.

Hashkoden genereras av funktionen N :

h = H (M)

Var M är ett meddelande av godtycklig längd och h är en hashkod med fast längd.

Tänk på de krav som en hashfunktion måste uppfylla för att den ska kunna användas som meddelandeautentisering. Låt oss ta en titt på ett mycket enkelt exempel på en hashfunktion. Därefter kommer vi att analysera flera tillvägagångssätt för att bygga en hashfunktion.

Hash funktion N som används för att autentisera meddelanden måste ha följande egenskaper:

1. Hash-funktion N måste appliceras på ett datablock av valfri längd.

2. Hash-funktion N skapar en utgång med fast längd.

3. H (M) relativt lätt (i polynomtid) beräknas för vilket värde som helst M .

4. För ett givet hashkodvärde h beräkningsmässigt omöjligt att hitta M Så att H (M) = h .

5. För varje given NS det är beräkningsmässigt omöjligt att hitta det

H (y) = H (x).

6. Det är beräkningsmässigt omöjligt att hitta ett godtyckligt par ( NS , y ) Så att H (y) = H (x) .

De tre första egenskaperna kräver hash-funktionen för att generera en hashkod för alla meddelanden.

Den fjärde egenskapen definierar kravet på enkelriktad hashfunktion: det är lätt att skapa en hashkod från ett givet meddelande, men det är omöjligt att återställa ett meddelande från en given hashkod. Den här egenskapen är viktig om hashautentisering innehåller ett hemligt värde. Det hemliga värdet i sig kanske inte skickas, men om hashfunktionen inte är enkelriktad kan motståndaren enkelt avslöja det hemliga värdet enligt följande. När överföringen avlyssnas får angriparen ett meddelande M och hashkod C = H (SAB || M) ... Om angriparen kan invertera hashfunktionen, kan han därför få SAB || M = H-1 (C) ... Eftersom angriparen nu vet och M och SAB || M , motta SAB rätt enkel.

Den femte egenskapen säkerställer att inget annat meddelande kan hittas vars hashvärde matchar hashvärdet för detta meddelande. Detta förhindrar att autentiseringsenheten manipuleras när en krypterad hashkod används. I det här fallet kan motståndaren läsa meddelandet och därför generera sin hashkod. Men eftersom motståndaren inte äger den hemliga nyckeln kan han inte ändra meddelandet så att mottagaren inte upptäcker det. Om denna egenskap inte uppfylls kan angriparen utföra följande sekvens av åtgärder: fånga upp meddelandet och dess krypterade hashkod, beräkna meddelandets hashkod, skapa ett alternativt meddelande med samma hashkod, ersätta det ursprungliga meddelandet med en falsk . Eftersom hashkoderna för dessa meddelanden är desamma, kommer mottagaren inte att upptäcka spoofing.

En hashfunktion som uppfyller de första fem egenskaperna kallas en enkel eller svag hashfunktion. Om dessutom den sjätte egenskapen är uppfylld kallas en sådan funktion för en stark hashfunktion. Den sjätte egenskapen skyddar mot en klass av attacker som kallas födelsedagsattacken.

5. Enkla hashfunktioner

Alla hash-funktioner utförs enligt följande. Ett indatavärde (meddelande, fil, etc.) behandlas som en sekvens n -bitblock. Inmatningsvärdet bearbetas sekventiellt block för block och skapas m -bitars hashkodvärde.

Ett av de enklaste exemplen på en hashfunktion är den bitvisa XOR för varje block:

C i - i th biten av hashkoden, 1 <= i <= n .

k - siffra n -bitars block av input.

b ij i biten in j blocket.

Sedan krypteras hela meddelandet, inklusive hashkoden, i CBC-läget för att skapa krypterade block Y1, Y2, ..., YN + 1. Per definition av SHS har vi:

Men XN + 1 är hashkoden:

Eftersom termerna i den tidigare likheten kan beräknas i vilken ordning som helst, kommer därför inte hashkoden att ändras om de krypterade blocken omarrangeras.

Den ursprungliga standarden som föreslagits av NIST använde enkel XOR, som tillämpades på 64-bitars meddelandeblock, sedan krypterades hela meddelandet med CBC-läge.

"Födelsedagsparadoxen"

Innan man tittar på mer komplexa hashfunktioner finns det en speciell attack på enkla hashfunktioner som måste analyseras.

Den så kallade "födelsedagsparadoxen" är följande. Antag att antalet utdatavärden för hashfunktionen är N lika n ... Vilket nummer ska vara k så att för ett specifikt värde X och värderingar Y1, , Yk sannolikheten att minst en Yi uppfyller jämställdheten

H (X) = H (Y)

skulle vara större än 0,5.

För en Y sannolikheten att H (X) = H (Y) , är lika med 1/n .

Följaktligen är sannolikheten att , är lika med 1 - 1 / n .

Om du skapar k värden, då är sannolikheten att ingen av dem kommer att matcha lika med produkten av sannolikheterna som motsvarar ett värde, d.v.s. (1 - 1 / n) k .

Därför är sannolikheten för minst en matchning

1 - (1 - 1 / n) k

Således fick vi reda på att för m -bitars hashkod räcker för att välja 2m-1 meddelanden så att sannolikheten för att matcha hashkoder är större än 0,5.

Tänk nu på följande problem: beteckna P (n, k) sannolikheten att i en uppsättning av k element, som var och en kan ta n värden finns det minst två med samma värden. Vad ska vara lika k , till P (n, k) skulle vara mer 0,5 ?

Antalet olika sätt att välja element på ett sådant sätt att det inte finns några dubbletter är

n (n-1) ... (n-k + 1) = n! / (n-k)!

Det totala antalet möjliga sätt att välja element är n k

Sannolikheten att det inte finns några dubbletter är n! / (n-k)! n k

Sannolikheten att det finns dubbletter är respektive

1 - n! / (N-k)! Nk P (n, k) = 1 - n! / ((n-k)! x nk) = 1 - (n x (n-1) x ... x (n-k-1)) / nk = 1 - [(n-1) / n x (n-2) / n x ... x (n-k + 1) / n] = 1 - [(1- 1 / n) x (1 - 2 / n) x ... x (1 - (k-1) / n)]

Om hashkoden är lång m bit dvs. tar 2m värden alltså

Detta resultat kallas "födelsedagsparadoxen" eftersom det, enligt ovanstående resonemang, för att två personer ska ha en större chans än 0,5 att sammanfalla födelsedagar måste det bara finnas 23 personer i en grupp. Detta resultat verkar överraskande, kanske för att för varje individ i gruppen är sannolikheten att deras födelsedag kommer att sammanfalla med födelsedagen för någon annan i gruppen ganska liten.

Låt oss gå tillbaka till att överväga egenskaperna hos hashfunktioner. Låt oss anta att du använder en 64-bitars hashkod. Det kan anses att detta är en helt tillräcklig och därför säker längd för hashkoden. Till exempel, om den krypterade hashkoden är MED sänds med motsvarande okrypterade meddelande M , då måste fienden hitta M ' Så att

H (M ") = H (M) ,

för att förfalska meddelandet och lura mottagaren. I genomsnitt måste motståndaren gå igenom 263 meddelanden för att hitta en vars hashkod är lika med det avlyssnade meddelandet.

Ändå är olika typer av attacker möjliga utifrån "födelsedagsparadoxen". Följande strategi är möjlig:

1. Fienden skapar 2 m/2 meddelandealternativ, som vart och ett har en viss betydelse. Motståndaren förbereder samma antal meddelanden, som vart och ett är falskt och avsett att ersätta det riktiga meddelandet.

2. De två uppsättningarna meddelanden jämförs för att hitta ett par meddelanden som har samma hashkod. Sannolikheten för framgång enligt "födelsedagsparadoxen" är större än 0,5. Om inget matchande par hittas, genereras ytterligare original och falska meddelanden tills en matchning hittas.

3. Angriparen erbjuder avsändaren det ursprungliga meddelandet för underskrift. Denna signatur kan sedan fästas på den falska varianten för överföring till mottagaren. Eftersom båda alternativen har samma hashkod kommer samma signatur att genereras. Motståndaren kommer att vara säker på framgång även utan att känna till krypteringsnyckeln.

Således, om en 64-bitars hash-kod används, är den nödvändiga beräkningskomplexiteten i storleksordningen 232.

Sammanfattningsvis noterar vi att längden på hashkoden måste vara tillräckligt stor. En längd på 64 bitar anses inte vara säker för närvarande. Mer föredraget är längden i storleksordningen 100 bitar.

Använder krypterad blockkedja

Det finns olika hashfunktioner baserade på skapandet av en kedja av krypterade block, men utan användning av en hemlig nyckel. En sådan hashfunktion föreslogs av Rabin. Meddelande M uppdelad i block av fast längd M1, M2,. ... ... , МN och använder en symmetrisk krypteringsalgoritm som DES för att beräkna hashkoden G på följande sätt:

H 0 - ursprungligt värde Hej = E Mi G = H N

Detta liknar att använda kryptering i CBC-läge, men i det här fallet finns det ingen hemlig nyckel. Som med vilken enkel hashfunktion som helst, är denna algoritm mottaglig för en "födelsedagsattack", och om krypteringsalgoritmen är DES och endast en 64-bitars hashkod genereras, anses systemet vara ganska sårbart.

Andra attacker som "födelsedag" kan utföras, vilka är möjliga även om motståndaren har tillgång till endast ett meddelande och motsvarande krypterade hashkod och inte kan ta emot flera par meddelanden och krypterade hashkoder. Följande scenario är möjligt: ​​anta att motståndaren snappade upp meddelandet med autentiseringsenheten i form av en krypterad hashkod, och det är känt att den okrypterade hashkoden har en längd m bitar. Därefter måste fienden utföra följande åtgärder:

Med hjälp av algoritmen som beskrivs ovan, beräkna den okrypterade hashkoden G .

Skapa ett falskt meddelande som Q1, Q2,. ... ... QN-2 .

Beräkna Hi = E Qi för 1 <= i <= N-2 .

· Skapa 2 m/2 slumpmässiga block NS och för varje sådant block NS Beräkna E X ... Skapa ytterligare 2 m/2 slumpmässigt block Y och för varje block Y Beräkna D Y [G] , var D - motsvarande dekrypteringsfunktion E ... Baserat på "födelsedagsparadoxen" kan vi säga att med en hög grad av sannolikhet kommer denna sekvens att innehålla block NS och Y Så att E X = D Y [Y] .

Skapa meddelande Q1, Q2,. ... ... QN-2, X, Y ... Detta meddelande har en hashkod G och kan därför användas i kombination med en krypterad autentisering.

Denna form av attack är känd som en möte-i-mitt-attack. Olika studier har föreslagit mer sofistikerade metoder för att förstärka blockchain-metoden. Till exempel beskrev Davis och Price följande alternativ:

Ett annat alternativ är möjligt:

Men båda dessa system är också sårbara för olika attacker. Mer generellt kan någon form av "födelsedagsattack" visa sig lyckas med vilken hashalgoritm som helst som involverar användning av en chifferblockkedja utan användning av en hemlig nyckel.

Ytterligare forskning var inriktad på att hitta andra metoder för att skapa hashfunktioner.

Hashfunktion MD5

Tänk på MD5 (RFC 1321) meddelandesammandragsalgoritm som utvecklats av MIT:s Ron Rivest.

MD5 exekveringslogik

Algoritmen tar emot ett meddelande av godtycklig längd som indata och skapar en 128-bitars meddelandesammanfattning som utdata. Algoritmen består av följande steg:

Ris. 8.1. MD5 exekveringslogik

Steg 1: lägga till saknade bitar

Meddelandet kompletteras så att dess längd blir 448 modulo 512 (). Detta innebär att längden på det tillagda meddelandet är 64 bitar mindre än en multipel av 512. Tillägget görs alltid, även om meddelandet har den önskade längden. Till exempel, om ett meddelande är 448 bitar långt, är det utfyllt med 512 bitar till 960 bitar. Således varierar antalet tillagda bitar från 1 till 512.

Tillägget består av en följt av det antal nollor som krävs.

Steg 2: lägga till längd

64-bitars representationen av den ursprungliga (före tillägg) meddelandelängden i bitar läggs till resultatet av det första steget. Om den ursprungliga längden är större än 2 64 används endast de sista 64 bitarna. Således innehåller fältet längden på det ursprungliga meddelandet modulo 64.

De första två stegen skapar ett meddelande som är en multipel av 512 bitar. Detta utökade meddelande representeras som en sekvens av 512-bitars block Yo, Y1,. ... ., Y L-1, medan den totala längden av det utökade meddelandet är L * 512 bitar. Sålunda är längden på det mottagna utökade meddelandet en multipel av sexton 32-bitars ord.

Ris. 8.2. Utökad meddelandestruktur

Steg 3: initiera MD-bufferten

En 128-bitars buffert används för att lagra de mellanliggande och slutliga resultaten av hashfunktionen. Bufferten kan representeras som fyra 32-bitars register (A, B, C, D). Dessa register initieras med följande hexadecimala tal:

A = 01234567 B = 89ABCDEF C = FEDCBA98 D = 76543210

Steg 4: bearbeta en sekvens av 512-bitars (16-ord) block

Grunden för algoritmen är en modul som består av fyra cykliska processer, betecknade som HMD5. De fyra slingorna har en liknande struktur, men varje slinga använder sin egen atomära logikfunktion, betecknad f F, f G, f H respektive f I.

Ris. 8.3. Bearbetar nästa 512-bitars block

Varje cykel tar som ingång det aktuella 512-bitarsblocket Yq, som bearbetas för tillfället, och 128-bitarsvärdet för bufferten ABCD, som är ett mellanliggande sammandragsvärde, och ändrar innehållet i denna buffert. Varje slinga använder också den fjärde delen av tabellen T med 64 element baserat på sin funktion. Det i:te elementet i T, betecknat med T [i], har ett värde lika med heltalsdelen av 2 32 * abs (sin (i)), i är i radianer. Eftersom abs (sin (i)) är ett tal mellan 0 och 1, är varje element i T ett heltal som kan representeras av 32 bitar. Tabellen tillhandahåller en "slumpmässig" uppsättning 32-bitars värden som borde eliminera all regelbundenhet i inmatningen.

För att erhålla MD q + 1 läggs utsignalen från fyra cykler till modulo 2 32 med MD q. Addition utförs oberoende för vart och ett av de fyra orden i bufferten.

CLS s - cirkulär vänsterförskjutning med s bitar av ett 32-bitars argument.

X [k] - M är det k:te 32-bitarsordet i det q:te 512 meddelandeblocket.

T [i] - i:te 32-bitarsordet i matris T.

+ - addition mod 2 32.

Vid var och en av de fyra cyklerna av algoritmen används en av de fyra elementära logiska funktionerna. Varje atomfunktion tar tre 32-bitars ord som indata och skapar ett 32-bitars ord vid utgången. Varje funktion är en uppsättning bitvisa logiska operationer, dvs. Den n:te biten av utsignalen är en funktion av den n:te biten av de tre ingångarna. De elementära funktionerna är följande:

En matris med 32-bitars ord X innehåller värdet på det aktuella 512-bitars inmatningsblocket som för närvarande bearbetas. Varje cykel exekveras 16 gånger, och eftersom varje block av ingångsmeddelandet behandlas i fyra cykler, behandlas varje block av inmatningsmeddelandet enligt schemat som visas i fig. 4, 64 gånger. Om vi ​​representerar det ingående 512-bitarsblocket i form av sexton 32-bitars ord, så används varje ingångs 32-bitars ord fyra gånger, en gång i varje cykel, och varje element i tabellen T består av 64 32-bitars ord används endast en gång. Efter varje steg i slingan skiftas fyra ord A, B, C och D cykliskt åt vänster. Vid varje steg ändras endast ett av de fyra orden i bufferten ABCD. Därför ändras varje ord i bufferten 16 gånger, och sedan den 17:e gången i slutet för att få den slutliga utmatningen av det blocket.

smälta.

2. Hastighet: mjukvaruimplementeringen av algoritmen bör vara tillräckligt snabb. I synnerhet bör algoritmen vara tillräckligt snabb på en 32-bitars arkitektur. Därför är algoritmen baserad på en enkel uppsättning elementära operationer på 32-bitars ord.

3. Enkelhet och kompakthet: Algoritmen ska vara enkel att beskriva och lätt att programmera, utan stora program eller uppslagstabeller. Dessa egenskaper har inte bara uppenbara mjukvarufördelar, utan är också önskvärda ur säkerhetssynpunkt, eftersom det är bättre att ha en enkel algoritm för att analysera möjliga svagheter.

4. Little-endian-arkitektur önskvärt: vissa processorarkitekturer (som Intel 80xxx-linjen) lagrar vänster byte av ett ord i positionen för de minst signifikanta byteadresserna (little-endian). Andra (som SUN Sparcstation) lagrar ordets högra byte i positionen för de minst signifikanta byteadresserna (stor MD4 extra konstant i den första slingan gäller inte. En liknande extra konstant används för vart och ett av stegen i den andra En annan extra konstant används för vart och ett av stegen i den tredje slingan. Hashkoden är en funktion av varje bit av inmatningen. Den komplexa upprepningen av atomfunktionerna f F, f G, f H och f I säkerställer att resultatet är väl blandat, det vill säga det är osannolikt att två meddelanden väljs slumpmässigt, även om de har till synes liknande mönster, hade samma sammandrag som producerar samma utdatavärde, vilket betyder att man gör MD5 på en enda 512-bitars block kommer att resultera i samma utgång för två olika ingångar i buffert ABCD.finns inte på MD5.

Konverterade datakomprimeringsmetoder baserade på enkelriktade hashfunktioner

En hashfunktion (hash, hash-funktion) är en transformation som erhåller ett visst värde (faltning) av en fast längd från data av godtycklig längd. De enklaste exemplen är kontrollsummor (t.ex. crc32). Det finns:

· Kryptografiska hash;

· Programmerare hash.

En kryptografisk hash skiljer sig från en programmerarhash i följande två egenskaper: oåterkallelig och frihet från kollisioner. Låt oss beteckna:

m - initiala data,

h (m) - hashfunktion från dem.

Irreversibilitet innebär att om talet h0 är känt så är det svårt att välja m så att h (m) = h0.

Kollisionsfri innebär att det är svårt att hitta m1 och m2 så att m1 inte är lika med m2, utan h (m1) = h (m2).

Kryptografiska hashfunktioner är indelade i två klasser:

Nyckellösa hashfunktioner (MDC (Modification (Manipulation) Detect Code) - koder),

Hash-funktioner med en nyckel (MAC (Message Authentication Code) - koder).

Nyckellösa hashfunktioner är uppdelade i två underklasser: svaga hashfunktioner, starka hashfunktioner.

En svag hashfunktion är en envägsfunktion H (x) som uppfyller följande villkor:

1. argument x kan vara en sträng av bitar av godtycklig längd;

2. Värdet på h (x) måste vara en bitsträng med fast längd;

3. värdet på h (x) är lätt att beräkna;

4. för något fast x är det beräkningsmässigt omöjligt att hitta ett annat x "≠ x så att h (x") = h (x).

Paret x "≠ x när h (x") = h (x) kallas en hashkollision.

En stark hashfunktion är en envägsfunktion h (x) som uppfyller villkor 1-4 för en svag hashfunktion och egenskap 5:

5. det är beräkningsmässigt omöjligt att hitta något par x "≠ x så att h (x") = h (x).
Eftersom det följer av egenskaperna 1-2 att uppsättningen av hashfunktionsdefinitionen är mycket bredare än uppsättningen värden, måste kollisioner förekomma. Egenskap 4 kräver att det var nästan omöjligt att hitta dem för ett givet värde på x. Krav 5 säger att det är beräkningsmässigt omöjligt att hitta någon kollision för en stark hashfunktion.

Det finns flera algoritmer för att beräkna hashfunktioner

MD2 (Message Digest) är en kryptografisk vikningsalgoritm. Genererar ett block med längden 128 bitar från ett meddelande med godtycklig längd. Allmänt schema för MD2-drift:

a. att komplettera meddelandetexten till en längdmultipel av 128 bitar;

b. beräkning av en 16-bitars kontrollsumma, de mest signifikanta bitarna kasseras;

c. lägga till en kontrollsumma till texten;

d. omräkning av kontrollsumman.

MD2-algoritmen är mycket långsam, så MD4, MD5, SHA (Secure Hash Algorithm) används oftare. Den resulterande hashen är 160 bitar lång.



GOST R34,11-94. Rysk algoritm. Konvolutionslängd - 256 bitar (mycket bekvämt för att generera en nyckel för GOST 28147-89 med ett lösenord).

US National Institute of Standards and Technology (NIST) har på sin webbplats http://www.nist.gov/sha/ publicerat specifikationer för nya hashalgoritmer SHA-256, SHA-384 och SHA-512, vars syfte är att tillhandahålla en nivå av kryptografisk styrka för hashen som motsvarar nyckellängderna för den nya DES-krypteringsstandarden.

Kom ihåg att en n-bitars hash är en mappning av ett meddelande med godtycklig längd till en n-bitars pseudoslumpmässig sekvens (hashvärde). En kryptografisk hash, som en speciell typ av en sådan funktion, är en n-bitars hash som har egenskaperna "enriktad" och "kollisionsmotstånd".

Hittills har de mest populära hashfunktionerna skapade av Rivist varit MD4 och MD5, som genererar hashkoder med längden n = 128, och SHA-1-algoritmen, utvecklad av US NSA, som genererar hashkoder med längden n = 160.

GOST R34.10-94 "Procedurer för att generera och verifiera en elektronisk digital signatur baserad på en asymmetrisk kryptografisk algoritm."

För ett mycket stort antal säkerhetsteknologier (till exempel autentisering, EDS) används envägskrypteringsfunktioner, även kallade hashfunktioner... Huvudsyftet med sådana funktioner är att från ett meddelande ta emot en godtycklig storlek på dess sammanfattning - ett värde med en fast storlek. Sammanfattningen kan användas som kontrollsumman för det ursprungliga meddelandet, vilket ger (vid användning av lämpligt protokoll) informationsintegritetskontroll. Grundläggande egenskaper för hashfunktionen:

  1. ett meddelande av godtycklig längd matas till ingången för hashfunktionen;
  2. ett datablock med fast längd bildas vid utgången av hashfunktionen;
  3. värdena vid utgången av hashfunktionen är jämnt fördelade;
  4. när en bit vid ingången av hash-funktionen ändras, ändras utsignalen avsevärt.

För att hashfunktionen ska vara robust mot attacker måste den dessutom uppfylla följande krav:

  1. om vi vet värdet på hashfunktionen h, sedan problemet med att hitta ett meddelande M så att H (M) = h måste vara beräkningsmässigt svårt;
  2. för ett givet meddelande M måste uppgiften att hitta ett annat meddelande M', så att H(M) = H (M'), vara beräkningsmässigt svår.

Om hash-funktionen uppfyller de listade egenskaperna, kommer värdet den genererar att identifiera meddelandena unikt, och varje försök att ändra meddelandet under överföringen kommer att upptäckas genom att utföra hashning på den mottagande sidan och jämföra med sammanfattningen som tas emot på den sändande sidan.

En annan egenskap hos hashfunktioner är att de inte tillåter den omvända transformationen - det är omöjligt att få det ursprungliga meddelandet från dess sammanfattning. Därför kallas de även för envägskrypteringsfunktioner.

Hash-funktioner konstrueras på ett iterativt sätt, när det ursprungliga meddelandet är uppdelat i block av en viss storlek, och ett antal transformationer utförs på dem med både reversibla och irreversibla operationer. Som regel ingår en komprimeringsfunktion i hashtransformationen, eftersom dess utdata ofta är mindre i storlek än blocket som tillförs ingången. Ingången för varje hashcykel matas med utdata från föregående cykel, såväl som nästa meddelandeblock. Således, på varje cykel, utmatningen av hash-funktionen Hejär den förstas hash i block.

Om du kommer ihåg hur blockchiffer randomiserar inmatningsmeddelandet, kan du använda något blockchiffer som en hashtransformeringsfunktion. Det faktum att blockchiffer är reversibla transformationer motsäger inte egenskaperna hos hashfunktionen, eftersom blockchifferet är irreversibelt i termer av krypteringsnyckeln, och om utdata från det föregående hashtransformationssteget används som krypteringsnyckel, och nästa meddelandeblock används som det krypterade meddelandet (eller vice versa ), då kan du få en hashfunktion med bra kryptografiska egenskaper. Detta tillvägagångssätt används till exempel i den ryska hashingstandarden - GOST R 34.11-94. Denna hashfunktion genererar ett 256-bitars utdatavärde med hjälp av GOST 28147-89-blockchifferet som en transformationsoperation (Figur 2.17). Hashfunktionen H tar emot hashen som erhölls i föregående steg (värdet h 0 godtyckligt frö), såväl som nästa meddelandeblock m jag... Dess inre struktur visas i figur 2.18. Här i blocket av krypteringstransformationen att ändra Hej v är jag blockchifferet GOST 28147-89 används. Shuffle-transformen är en modifierad Feistel-permutation. För det sista blocket m N(N är det totala antalet meddelandeblock) fyllning utförs till en storlek av 256 bitar med tillägg av den sanna meddelandelängden Parallellt är meddelandekontrollsumman ∑ och den totala längden L, som deltar i den slutliga komprimeringsfunktionen, beräknad.


Den största nackdelen med hashfunktioner baserade på blockchiffer är deras långsamma prestanda. Därför har ett antal specialiserade algoritmer designats som, samtidigt som de ger liknande motstånd mot attacker, utför mycket färre operationer på indata och ger högre hastighet. Exempel på denna typ av algoritmer är: MD2, MD4, MD5, RIPEMD - 160, SHA. Låt oss titta närmare på strukturen för SHA-hashalgoritmen (Secure Hash Algorithm), som beskrivs i SHS-standarden och säkerställer säkerheten för den digitala DSA-signaturen genom att bilda ett 160-bitars meddelandesammandrag.

Först delas meddelandet upp i 512-bitars block. Om meddelandelängden inte är en multipel av 512 tilldelas det sista blocket 1 till höger, varefter det utfylls med nollor till 512 bitar. Meddelandelängdskoden skrivs i slutet av det sista blocket. Som ett resultat tar meddelandet formen n 512-bitars block M 1, M 2, ..., M n.

SHA-algoritmen använder 80 logiska funktioner f 0, f 1, ..., f 79, som utför operationer på tre 32-bitars ord (B, C, D):

Algoritmen använder också speciellt initierade 4 konstanter Ki och 5 initiala värden H i.

Vi delar upp arrayen M i grupper om 16 ord W 0, W 1, ..., W 15 (W 0 är ordet längst till vänster).
För t= 16 - 79 W t = S 1 (W t-3 ⊕ W t-8 ⊕ W t-14 ⊕ W t-16)
S k betyder operationen av cyklisk växling till vänster med k utsläpp.
Låt nu A = H 0, B = H 1, C = H 2, D = H 3, E = H 4.
för t= 0 till 79 do
TEMP = S 5 (A) + med(B, C, D) + E + Wt + Ki.
E = D; D = C; C = S 30 (B); B = A; A = TEMP;
Låt Ho = Ho + A; Hi = H1 + B; H2 = H2 + C; H3 = H3 + D; H4 = H4 + E.

Grafiskt visas en SHA-cykel i figur 2.19.

Som ett resultat av bearbetningen av M-matrisen kommer 5 ord H 0, H 1, H 2, H 3, H 4 att erhållas med en total längd av 160 bitar, vilka bildar meddelandesammandraget.

Från de givna uppgifterna är det tydligt att komplexiteten hos den amerikanska hashstandarden är lägre än den för den ryska. Den ryska standarden förutsätter prestanda för fyra krypteringar i en hashcykel, eller totalt 128 omgångar. Varje omgång av kryptering kräver ungefär ett och ett halvt dussin elementära maskinoperationer, vilket avsevärt ökar datortiden som spenderas på att utföra linjära blandningsoperationer. En omgång att generera SHA-hash är mycket enklare: allt kan implementeras i cirka 15-20 kommandon, det totala antalet omgångar är bara 80, och i en cykel för att generera hashen, bearbetas dubbelt så mycket av den initiala datan - 512 mot 256 i GOST P34.ll - 94. Så Således kan det antas att prestandan för SHA-implementeringar av programvara kommer att vara ungefär 3-6 gånger snabbare än den för den inhemska standarden.


Huvuduppgiften för hashfunktioner är att generera sammandrag som är unika för ett visst dokument. Om hash-funktionen ger samma sammandrag för två olika inmatningsblock anropas denna situation haschkollision... Av ett teorem som kallas födelsedagsparadoxen, följer det att för ett n-bitars hashvärde, i genomsnitt 2 n / 2 olika inmatningsmeddelanden för att orsaka en kollision. Detta gör det nästan omöjligt att ändra ett dokument när det är signerat med till exempel SHA-algoritmen genom ett enkelt urval, eftersom det med detta tillvägagångssätt kommer att vara nödvändigt att generera cirka 2 80 olika meddelanden för att få samma meddelande ersatt av fått sammandrag. Denna siffra är ouppnåelig för den nuvarande tekniknivån.

Ofta, när man laddar ner torrents eller direkt själva filerna, innehåller beskrivningen något i stil med "ad33e486d0578a892b8vbd8b19e28754" (till exempel i ex.ua), ofta med efterskriften "md5". Denna hash-kod är resultatet som hashfunktionen producerar efter att ha bearbetat inkommande data. Översatt från engelska betyder hash förvirring, marijuana, ogräs eller en maträtt med finhackat kött och grönsaker. väldigt, väldigt svårt, vi kan säga att det är nästan omöjligt. Då uppstår frågan: "Varför behöver vi alla dessa, de ger ut obegripligt skratt, som fortfarande inte går att tyda?" Detta är vad som kommer att diskuteras i den här artikeln.

Vad är en hashfunktion och hur fungerar den?

Denna funktion är avsedd för att konvertera inkommande data av valfri storlek till ett resultat med en fast längd. Själva processen med en sådan transformation kallas hashing, och resultatet är en hash- eller hashkod. Ibland används fortfarande orden "fingeravtryck" eller "meddelandesammandrag", men i praktiken är de mycket mindre vanliga. Det finns många olika algoritmer för hur du kan förvandla vilken datamatris som helst till en viss sekvens av tecken av en viss längd. Den mest utbredda är en algoritm som heter md5, som utvecklades redan 1991. Trots att md5 idag är något föråldrad och inte rekommenderas för användning, används den fortfarande och ofta istället för ordet "hash-kod" skriver sajter helt enkelt md5 och anger själva koden.

Varför behövs en hashfunktion?

Genom att känna till resultatet är det nästan omöjligt att bestämma initialdata, men samma indata ger samma summa. Därför används hashfunktionen (även kallad fold-funktionen) ofta för att lagra mycket viktig information, såsom lösenord, inloggning, identitetsnummer och annan personlig information. Istället för att jämföra den information som användaren matat in med den som lagras i databasen, jämförs deras hash. Detta säkerställer att i händelse av ett oavsiktligt läckage av information, kommer ingen att kunna använda viktig data för sina egna syften. Genom att jämföra hashkoden är det också bekvämt att kontrollera korrektheten av att ladda ner filer från Internet, särskilt om det uppstod avbrott i anslutningen under nedladdningen.

Hashfunktioner: vad de är T

Beroende på dess syfte kan hashfunktionen vara av en av tre typer:

1. Funktion för kontroll av informationens integritet

När det är gjort över nätverket beräknas paketets hash och detta resultat skickas också tillsammans med filen. Vid mottagning beräknas hashkoden igen och jämförs med värdet som tas emot över nätet. Om koden inte matchar indikerar detta fel, och det skadade paketet kommer att överföras igen. En sådan funktion har en snabb beräkningshastighet, men ett litet antal hashvärden och dålig stabilitet. Ett exempel på denna typ: CRC32, som bara har 232 olika värden.

2. Kryptografisk funktion

Används för att skydda mot (ND). De låter dig kontrollera om datakorruption har inträffat som ett resultat av ND under filöverföring över nätverket. Den sanna hashen i det här fallet är allmänt tillgänglig, och hashen för den resulterande filen kan beräknas med många olika program. Sådana funktioner har en lång och stabil livslängd, och sökandet efter kollisioner (möjliga sammanträffanden av resultatet från olika indata) är mycket svårt. Det är dessa funktioner som används för att lagra lösenord (SH1, SH2, MD5) och annan värdefull information i databasen.

3. En funktion utformad för att skapa en effektiv datastruktur

Dess syfte är en kompakt och ganska ordnad organisation av information i en speciell struktur som kallas en hashtabell. Den här tabellen låter dig lägga till ny information, ta bort information och söka efter den data du vill ha i mycket hög hastighet.

Etc.). Valet av en viss hashfunktion bestäms av detaljerna i det problem som löses. De enklaste exemplen på hashfunktioner är checksumman eller CRC.

I det allmänna fallet finns det ingen en-till-en-överensstämmelse mellan originaldata och hash-koden. Därför finns det många datamatriser som ger samma hashkoder – de så kallade kollisionerna. Sannolikheten för kollisioner spelar en viktig roll för att bedöma "kvaliteten" på hashfunktioner.

Kontrollsummor

Okomplicerat, extremt snabbt och lätt att implementera i hårdvarualgoritmer som används för att skydda mot oavsiktlig förvrängning, inklusive hårdvarufel.

När det gäller beräkningshastighet är det tiotals och hundratals gånger snabbare än kryptografiska hashfunktioner, och mycket enklare i hårdvaruimplementering.

Betalningen för en så hög hastighet är bristen på kryptografisk styrka - en enkel möjlighet att justera ett meddelande till ett förutbestämt belopp. Vanligtvis är också bitheten för kontrollsummor (typiskt antal: 32 bitar) lägre än kryptografiska hash (typiska tal: 128, 160 och 256 bitar), vilket innebär risken för oavsiktliga kollisioner.

Det enklaste fallet med en sådan algoritm är att dela upp ett meddelande i 32- eller 16-bitars ord och summera dem, vilket används till exempel i TCP / IP.

Vanligtvis krävs en sådan algoritm för att spåra typiska hårdvarufel, såsom flera på varandra följande felbitar upp till en given längd. Familjen av algoritmer så kallade. "Cykliska redundanskoder" uppfyller dessa krav. Dessa inkluderar till exempel CRC32 som används i ZIP-hårdvara.

Kryptografiska hashfunktioner

Bland de många befintliga hashfunktionerna är det vanligt att urskilja kryptografiskt starka sådana som används i kryptografi. En kryptografiskt stark hashfunktion måste först och främst ha kollisionsmotstånd av två typer:

Använder hash

Hashfunktioner används också i vissa datastrukturer som hashtabeller och kartesiska träd. Kraven för hashfunktionen är i det här fallet olika:

  • bra datablandning
  • snabb beräkningsalgoritm

Dataavstämning

I allmänhet kan den här applikationen beskrivas som att den kontrollerar viss information för identitet till originalet, utan att använda originalet. För verifiering används hashvärdet för den information som verifieras. Det finns två huvudriktningar för denna applikation:

Kontrollerar efter fel

Till exempel kan kontrollsumman sändas över kommunikationskanalen tillsammans med huvudtexten. Vid mottagandet kan kontrollsumman räknas om och jämföras med det överförda värdet. Om en avvikelse hittas betyder det att det förekom förvrängning under överföringen och du kan begära ett nytt försök.

I det här fallet kan en hushållsanalog av hashing vara en teknik när antalet bagage hålls i minnet när man flyttar. Sedan, för att kontrollera, behöver du inte komma ihåg om varje resväska, men det räcker med att räkna dem. En match kommer att innebära att ingen resväska har förlorats. Det vill säga antalet stycken bagage är dess hashkod.

Kontrollera lösenordsfraser

I de flesta fall lagras inte lösenordsfraser på målobjekt, bara deras hashvärden lagras. Det är opraktiskt att lagra lösenfraser, eftersom i händelse av obehörig åtkomst till en fil med fraser kommer angriparen att ta reda på alla lösenfraser och kommer att kunna använda dem omedelbart, och när han lagrar hashvärden kommer han bara att känna till hashvärden som inte är reversibla till originaldata, i detta fall i lösenfras. Under autentiseringsproceduren beräknas hashvärdet för den inmatade lösenfrasen och jämförs med den lagrade.

Ett exempel i det här fallet är GNU / Linux OS och Microsoft Windows XP. De lagrar endast hashvärden för lösenordsfraser från användarkonton.

Påskyndar datahämtning

När man till exempel skriver textfält i databasen kan deras hashkod beräknas och data kan placeras i den sektion som motsvarar denna hashkod. När du sedan söker efter data måste du först beräkna hashkoden för texten och det blir omedelbart känt i vilket avsnitt du behöver söka efter dem, det vill säga du behöver inte söka i hela databasen, men endast i en av dess sektioner (detta snabbar upp sökningen avsevärt).

Den vardagliga analogen av hashing i det här fallet kan vara placeringen av ord i ordboken alfabetiskt. Den första bokstaven i ett ord är dess hash-kod, och när vi söker tittar vi inte igenom hela ordboken, utan bara den önskade bokstaven.

Algoritmlista

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
  • RIPEMD-160
  • RIPEMD-320
  • Snefru
  • Tiger (Whirlpool
  • IP Internetkontrollsumma (RFC 1071)

Länkar

Wikimedia Foundation. 2010.

  • Hashan Moheyan
  • Hash-kod

Se vad en "hash-funktion" är i andra ordböcker:

    Hash funktion- en funktion som hashar en rad data genom att mappa värden från en (mycket) stor uppsättning värden till en (betydligt) mindre uppsättning värden. På engelska: Hash-funktion Se även: Cryptographic Algorithms Financial ... ... Finansiell vokabulär

    kryptografisk hashfunktion- En funktion som omvandlar text av godtycklig längd till text med en fast (i de flesta fall kortare) längd. Huvudapplikationen för hashfunktionen finns i det digitala signaturschemat. Eftersom hash-funktionen beräknas snabbare än en digital signatur, istället för ... ...

    Enkelriktad hashfunktion- hash-funktion, som är en beräkningsmässigt irreversibel funktion. På engelska: One way hash function Se även: Cryptographic Algorithms Financial Dictionary Finam ... Finansiell vokabulär

    TIGER - hashfunktion- TIGER hash-funktion, utvecklad av Ros Anderson och Eli Biham 1996. TIGER hash-funktionen är en ny snabb hash-funktion som är designad för att vara mycket snabb på moderna datorer, i synnerhet 64-bitars datorer. TIGER ... ... Wikipedia

    envägs hashfunktion- För en envägsfunktion är det beräkningsmässigt omöjligt att hitta två olika argument för vilka dess värden är desamma. [] Ämnen informationssäkerhet EN one way hash-funktion ... Teknisk översättarguide

    Tiger (hashfunktion)- Tiger hash-funktion, utvecklad av Ros Anderson och Eli Biham 1995. Tiger designades för att köras särskilt snabbt på 64-bitars datorer. Tiger har inga patentrestriktioner, kan användas fritt som med ... ... Wikipedia

    hashfunktion- hashfunktion 1. En funktion som styr processen att mata in data i en hashtabell, definiera (adresser till fria celler. 2. En funktion som representerar kartläggningen av ett fragment av ett öppet meddelande till en krypterad sträng med fast längd. I . ... ... Teknisk översättarguide

    Hashbord- I programmering är en hashtabell en datastruktur som implementerar gränssnittet för en associativ array, nämligen den låter dig lagra par (nyckel, värde) och utföra tre operationer: operationen att lägga till ett nytt par, en sökoperation och en raderingsoperation ... Wikipedia

    Hash-kod- Hashing (ibland hashing) omvandling av en indatamatris av godtycklig längd till en utgångsbitsträng med fast längd. Sådana transformationer kallas också hashfunktioner eller vikningsfunktioner, och deras resultat ... ... Wikipedia

    Hashfunktionskollision- Kollisionen av hashfunktionen H är två olika indatablock x och y så att H (x) = H (y). Kollisioner finns för de flesta hashfunktioner, men för "bra" hashfunktioner är frekvensen av deras förekomst nära det teoretiska minimum. I ... ... Wikipedia







2021 gtavrl.ru.