Förstå Secure Hashing Algorithms (SHA-256)

Säkra hashalgoritmer (SHA-256)

I transaktioner som involverar kryptovalutor som bitcoin, tas transaktionerna som indata och körs genom en säker hashalgoritm ("SHA"). SHA består av fyra SHA-algoritmer:SHA-0, SHA-1, SHA-2 och SHA-3.

SHA-1 är den mest använda av de nuvarande SHA-hashfunktionerna, som används i många applikationer och protokoll, inklusive Secure Socket Layer (SSL) säkerhet.

SHA-2 är den andra vanligaste, som består av SHA-224, SHA-256, SHA-384 och SHA-512, beroende på antalet bitar i ett hashvärde.

Till exempel använder bitcoin SHA-256, vilket ger det ett hashvärde med en fast längd. Oavsett storlek eller längd på ingången kommer utdata alltid att ha en fast längd på 256 bitar. Detta för att du inte behöver komma ihåg indata, vilket kan vara enormt - allt du behöver göra är att komma ihåg hashen och hålla reda på. För mer information om SHA-funktioner, klicka här.

Kryptografiska hash-funktioner

Beroende på dess kryptografiska egenskaper kan hashfunktioner tillämpas på två olika sätt:lösenordslagring och dataintegritet.

Lösenordslagring

Istället för att lagra lösenordet i det fria, lagrar alla inloggningsprocesser hashvärdena för lösenord i själva filen. Lösenordsfilen består av en tabell med par, som är i form av (användar-id, h(P)).

Processen visas i nedanstående grafik:

I händelse av att en inkräktare kommer över filen kan de bara se hasharna för lösenord, även om de fick åtkomst till själva lösenordet. De skulle inte kunna logga in med hash och inte heller kan de härleda lösenordet från hash-värde, eftersom hash-funktionen har egenskapen pre-image resistans.

Dataintegritet

Detta är den vanligaste tillämpningen av hashfunktionerna. Den används för att generera kontrollsummor på datafiler, vilket ger användaren försäkran om att data är korrekta.

Förstå Secure Hashing Algorithms (SHA-256)

I bilden ovan kan du se integritetskontrollen som hjälper användaren att upptäcka eventuella ändringar som gjorts i originalfilen.

Förbehållet med dataintegritetskontroller är att detta bara är värdefullt om du tror att filen i själva verket är originalfilen.

Exempel:En inkräktare kommer in och istället för att ändra fildata ändrar de hela filen och beräknar en helt ny hash, och skickar den sedan till mottagaren. Hur skulle du veta det? Du skulle inte.

Så integritetskontrollen är bara användbar om användaren är säker på filens originalitet.

Kryptografiska egenskaper/egenskaper

För att en hashfunktion ska anses vara ett "säkert" och ett effektivt kryptografiskt verktyg måste den ha vissa egenskaper eller egenskaper.

Deterministisk

Under den här egenskapen, oavsett hur många gånger en individ går igenom en viss inmatning genom en hashfunktion, kommer du alltid att få samma resultat. Detta för att det ska vara enkelt att hålla reda på en viss ingång.

Snabb beräkning

Under den här egenskapen skulle alla hashfunktioner behöva returnera hashen för indata snabbt.

Motstånd före bild

Egenskapen "pre-image resistance" betyder att det borde vara beräkningsmässigt svårt att vända en hashfunktion.

Exempel:Om en hashfunktion (h) producerade ett hashvärde (z), borde det vara en svår process att hitta något indatavärde (x) som hashas till (z). Länken i kedjan är mycket svår att hitta. Detta garanterar mot alla potentiella hackare som bara har ett hashvärde och försöker hitta input (länk i kedjan).

Andra förbildsmotstånd

Den här egenskapen innebär att det borde vara svårt att hitta en annan ingång med samma hash.

Exempel:Om en hashfunktion (h) för en indata (x) ger ett hashvärde h(x), så borde det vara svårt att hitta något annat indatavärde (y) så att h(y) =h(x).

Detta skyddar mot alla hot som har ett indatavärde och dess hash, och som vill ersätta ett annat värde h(x) som legitimt värde istället för det ursprungliga ingångsvärdet.

Kollisionsmotstånd

Den här egenskapen gör det svårt att hitta två olika ingångar oavsett längd som är resultatet av samma hash.

Exempel:För en hashfunktion, h, borde det vara svårt att hitta två olika utgångar, x och y till där hackaren skulle kunna sätta ihop h(x) =h(y).

Även om hashfunktioner i huvudsak komprimerar funktioner med en fast hashlängd, är det omöjligt för en hashfunktion att inte ha en kollision. Genom att ha egenskapen "kollisionsfri", gör det bara desto svårare för en angripare att hitta två indatavärden med samma hash.

Pusselvänlig

För varje utdata, "y", om "K" väljs från en fördelning med "hög minentropi", är det mycket svårt att hitta en ingång "x" så att H(k|x) =Y.

En "hög minentropi" betyder att värdet som väljs är så stort fördelat över en rad värden att sannolikheten för att välja rätt värde är mycket osannolik.

Kom ihåg spelet "välj ett nummer mellan 1 och 100?" Det är hög minentropi.

Den | betyder join--med andra ord betyder k|x kx.

Datastruktur

När vi talar om datastrukturegenskaper hänvisar vi till pekare och länkade listor.

Pekare är variabler som lagrar adressen till en annan variabel i programmering och pekar på platsen för andra variabler.

En länkad lista är en sekvens av block som vart och ett innehåller en uppsättning data som är länkad till nästa block via en pekare.

Förstå Secure Hashing Algorithms (SHA-256)

Inuti varje block kommer du att se en pekare, som innehåller adressen till nästa block. Det första blocket där du ser pekaren kallas Genesis Block

Förstå Secure Hashing Algorithms (SHA-256)

Merkleträdet

När vi talar om datastrukturegenskaper hänvisar vi till pekare och länkade listor.

Pekare är variabler som lagrar adressen till en annan variabel i programmering och pekar på platsen för andra variabler.

En länkad lista är en sekvens av block som vart och ett innehåller en uppsättning data som är länkad till nästa block via en pekare.

Förstå Secure Hashing Algorithms (SHA-256)

När du tittar på ett Merkle-träd är det bäst att börja längst ner med lövnoderna (L1, L2, L3, L4). När du flyttar uppåt kommer du att se icke-bladsnoder, som fungerar som hash för värdena (hash(L1)), (hash(L2)), (hash(L3)) och (hash(L4)) för deras undernoder (hash 0-0, 0-1, 1-0, 1-1).

En "barnnod" är de noder som matas in i hashen. För Hash 0 är barnnoderna Hash 0-0 och Hash 0-1. För Hash 1 är de underordnade noderna Hash 1-0 och Hash 1-1.

Förstå Secure Hashing Algorithms (SHA-256)

Om du flyttar upp i diagrammet till den högsta nivån, märkt "Top Hash", är detta rotnoden.

Så du undrar vad syftet är med Merkleträdet? Att sortera igenom ett visst block är inte en lätt uppgift, men när du använder ett Merkle-träd sparar du tid på att leta efter en viss transaktion för att avgöra om den hör hemma i det specifika blocket eller inte.

När du tittar på en transaktion vill du försäkra dig om att informationen som finns hör hemma i lämpliga block. Genom att använda Merkle-trädet kan du snabbt spåra data genom att följa spåret av hash.

Förstå Secure Hashing Algorithms (SHA-256)

Tillämpa hashing på gruvprocessen

När ett nytt block kommer, hashas hela innehållet i dessa block. Om hashen är mindre än svårighetsmålet, läggs det sedan till blockkedjan så att samhället kan erkänna det.

Väldigt sällan får man ett nytt block redo att läggas till i kedjan, bara sådär. Därför läggs en godtycklig sträng av data till blockets hash. När den väl lagts till hashas strängen igen och jämförs med svårighetsgraden.

Om det är högre än svårighetsgraden ändras nonce och det fortsätter att upprepas om och om igen tills svårighetsnivåkraven är uppfyllda. Först när dessa krav är uppfyllda läggs blocket slutligen till blockkedjan.

Hashhastigheten

Hashhastigheten beskriver hur snabbt hashoperationer tar under gruvprocessen.

En hög hashhastighet innebär att det finns fler parter inblandade i gruvprocessen, vilket ger en smidig drift. Men om en hashhastighet är för hög ökar svårighetsgraden.

Om hashhastigheten blir för långsam sänks svårighetsgraden. Tanken är att alltid säkerställa att systemet fungerar smidigt, så det är viktigt att tillhandahålla alla medel för korrekta hashoperationer.

Så, för att sammanfatta:

När du väl tar emot ett datablock, kombineras hashen av innehållet i det blocket med en nonce eller slumpmässig datasträng.

Den nya datasträngen (hash + nonce) hashas sedan igen, jämfört med svårighetsgraden. Beroende på om den uppfyller kraven, hashas den nya strängen antingen igen eller läggs till i blockkedjan.

När det väl har lagts till i blockkedjan informeras samhället

Gruvarbetare som ansvarar för denna process belönas med bitcoins.


Fondinformation
  1. Fondinformation
  2. Offentlig investeringsfond
  3. Privata investeringsfonder
  4. Hedgefond
  5. Investeringsfond
  6. Indexfond