Door AnoniemDoor rob
DES is geen hash functie en SHA is geen encryptie algorithme[/
quote] wat is sha256 dan?
SHA in een hash algorithme. Het verschil is dat een
encryptie algoritme klare tekst vercijferd, en dat het weer
*reversable* is met de juist key; kortom je kunt het dus
decrypten.
SHA is een hashing algorithme, dat noemt men ook een
'one-way hash', als je een willekeurig aantal bytes door een
one-way hash haalt krijg je een getal terug van een vaste
lengte die zoveel mogelijk uniek is en afhankelijk van de
klare tekst, die kun je niet meer doormiddel van en key
omzetten naar de originele tekst.
Encryptie schema benodigd: Encryptie algorithme + Klare
tekst + Key = Ciphertext
Hashing schema benodigd: One-way-hash algoritme + Klare
tekst = Hash
In tegenstelling tot een encryptie algoritme is het dus niet
de bedoeling dat een hash weer omgezet kan worden naar de
input klare tekst. Je bent dus niet bezig met het
vercijferen. In plaats daarvan haal je de klare tekst door
een aantal wiskundige functies waarvan bekend is dat het
moeilijk is om het tegenovergestelde te doen. Hashing
algoritmen zouden dus de eigenschap hebben dat je ze
gemakkelijk kunt *maken* maar heeel moeilijk terug kunt
rekenen. Lees wel; als je de klare tekst weet, dan kun je
een tweede keer een hash maken en controleren of die
overeenkomt. Dit wordt bijvoorbeeld gedaan om wachtwoorden
veilig op te slaan; alleen de gebruiker weet dan het
wachtwoord, het systeem kent alleen een hash.
Daarom wordt het onderandere gebruikt om wachtwoorden mee op
te slaan (wachtwoorden worden meestal *niet* versleuteld).
Maar het wordt ook gebruikt voor digital signatures. Je kunt
namelijk een hash maken van een stuk tekst, en die *hash*
encrypten met je private key. Iedereen die je public key dan
heeft, kan je encrypte hash decrypten. Maar, een aanvaller
die de inhoud van de tekst wil wijzigen kan dat niet
ongemerkt doen. Hij kan namelijk de hash niet wijzigen omdat
die versleuteld is met behulp van een private key. En de
private key heeft ie niet. Als de ontvanger je public key
heeft kan ie de hash decrypten en controleren of de klare
tekst dezelfde hash oplevert als die wie is meegestuurd.
Zodoende kan met een hoge mate van zekerheid worden
vastgesteld dat de tekst ongewijzigd is.
Merk op dat de klare tekst hierbij niet encrypted is.. want
dat is niet altijd nodig, soms wil je alleen maar dat je
bericht niet gewijzigd is. Bijvoorbeeld als je simpelweg een
contract verstuurd en wilt ondertekenen. Het contract hoeft
niet per se geheim te zijn, maar vereist wel dat het integer is.
Wat is nu het gevaar met veel populaire hashing algoritmen?
Onderzoekers zijn erin geslaagd een soort van 'shortcuts' te
vinden om een mogelijke klare tekst te genereren in veel
minder tijd dan waarvoor het ontworpen was. Het is namelijk
zo dat een hash omzetten heel veel rekenkracht kost, dat het
in de praktijk onmogelijk wordt geacht dat iemand dat kan
doen binnen afzienbare tijd. Echter, met de nieuwe aanvallen
zal het niet lang meer duren of het is mogelijk om een klare
tekst te *zoeken* bij een gegeven hash. Dit zou dus
praktisch onmogelijk moeten zijn, maar het kraken van de
hash is door de onderzoekers vele malen sneller geworden.
Het is nu mogelijk om zogenaamde 'collisions' veel
makkelijker te vinden dan toen dit nog niet bekend werd. Een
collission betekend dat het eenvoudiger is om meerdere klare
teksten te vinden die hetzelfde hash opleveren.
In de praktijk betekend dit nog niet direct een grote ramp,
want het is nog steeds niet praktisch om een paar woorden in
het contract te wijzigen en toch hetzelfde hash op te leveren.
Toch, hashes worden gebruikt in alle crypto-systemen, hash
algoritmen worden overal gebruikt in combinatie met
encryptie algoritmen, dus het zal wel gevolgen kunnen hebben.