Reacties
- Hash dezelfde invoer opnieuw en vergelijk de hash.
- SHA256 is een cryptografische hash, geen encryptie … En ja, het punt is specifiek eenrichtingsverkeer. Ik stel voor dat je de basisprincipes van deze termen leert, bijv. zelfs van Wikipedia. Dan kun je meer specifieke vragen komen stellen …
- Mogelijk duplicaat van Waarom zijn hashfuncties in één richting? Als ik het algoritme ken, waarom kan ik dan ' t ik de invoer ervan berekenen?
Antwoord
Ten eerste is er een verschil tussen hashing en versleuteling . SHA256 is een hashfunctie, geen coderingsfunctie.
Ten tweede, aangezien SHA256 geen coderingsfunctie is, kan het niet worden gedecodeerd. Wat je bedoelt is waarschijnlijk omkeren. In dat geval kan SHA256 niet worden teruggedraaid omdat het “sa eenrichtingsfunctie is. Als het omkeren zou een preimage-aanval , die zijn ontwerpdoel verslaat.
Ten derde werkt SHA256-verificatie door het opnieuw te berekenen en het resultaat te vergelijken met het huidige resultaat. Als beide resultaten overeenkomen, is de verificatie geslaagd. De theoretische achtergrond is dat het moeilijk is om een andere invoer te vinden die hetzelfde hash-resultaat geeft. Overtreding hiervan leidt tot een tweede preimage-aanval , die het ontwerpdoel verslaat.
Ten slotte digitale handtekeningen zijn niet alleen hash- en sleutelcombinaties . Maar een hash-functie kan de beveiliging ervan verbeteren.
Answer
SHA256 is geen versleutelingsfunctie maar een hash-functie . Het fundamentele verschil is dat hoewel versleuteling een tweerichtingsfunctie is (gezien de sleutel), hash slechts een eenrichtingsfunctie is: gegeven sommige gegevens kun je de hash berekenen, gezien de hash is het moeilijk (en wiskundig onmogelijk) om de gegevens terug te krijgen .
Ik zei dat het wiskundig onmogelijk is om de gegevens uit de hash te vinden, omdat een hash-functie typisch een klein codomein heeft (bijvoorbeeld 256 bit voor SHA256) maar een groot domein (je kunt elke string hashen), dus er zullen botsingen zijn: verschillende strings met dezelfde hash.
Om deze reden, als je wachtwoord wordt opgeslagen in een gehashte vorm, dan bestaat er een oneindig wachtwoord (maar ze kunnen erg lang zijn) dat je account ontgrendelt.
Het goede nieuws is dat botsingen zeldzaam zijn wanneer u cryptografische hashfuncties gebruikt, zodat uw account nog steeds veilig is.
Door het eerste deel van uw vraag te beantwoorden, is gegevensverificatie eenvoudig: als Alice een bestand met de hash-checksum naar Bob stuurt, kan Bob gemakkelijk de hash van t berekenen het bestand dat hij heeft ontvangen en vergelijk het met de hash die hij van Alice heeft ontvangen. Dit is meestal voldoende om erachter te komen of er een fout is opgetreden tijdens de verzending (dus het bestand is corrupt), maar het is niet genoeg als de verzending is gewijzigd door een aanvaller die ook de hash heeft gewijzigd. Alice en Bob hebben dus een beveiligd kanaal om de hash te verzenden (bijvoorbeeld een https-pagina met een geldig certificaat) of ze moeten de hash op de een of andere manier ondertekenen.
Dus gaan we verder met het antwoord op uw tweede vraag: Alice kan de hash door haar privésleutel te gebruiken voordat deze naar Bob wordt gestuurd, op deze manier kan een aanvaller “ermee knoeien zonder de handtekening ongeldig te maken.
Nu zou je kunnen vragen waarom Alice alleen met haar RSA-sleutel (of soortgelijke) tekent de hash en niet alle berichten, dit komt omdat het berekenen van RSA langzamer is dan het berekenen van een hash (dus ze hoeft alleen het langzame te doen op een kleine string: de hash). Dit was vooral het geval wanneer PGP werd gemaakt en computers langzamer waren.