Τι είναι πραγματικά το SHA-256 Cuadernos Lacre · Έννοια · 19 Μαΐου 2026 https://solo2.net/el/notebooks/articulos/what-sha-256-actually-is.html Ένα μαθηματικό αποτύπωμα που χωράει σε εξήντα τέσσερις χαρακτήρες και αλλάζει ολόκληρο αν μετακινηθεί έστω και ένα κόμμα από το πρωτότυπο κείμενο. Γιατί το ονομάζουμε ψηφιακή σφραγίδα με βουλοκέρι. --- Η απλή ιδέα πίσω από το τεχνικό όνομα Φανταστείτε ότι υπάρχει μια μηχανή με μία μόνο υποδοχή και μία μόνο οθόνη. Από την υποδοχή εισάγετε ένα κείμενο: μια λέξη, μια φράση, ένα ολόκληρο μυθιστόρημα. Στην οθόνη εμφανίζεται, λίγες στιγμές αργότερα, μια αλληλουχία ακριβώς εξήντα τεσσάρων χαρακτήρων. Αυτή την αλληλουχία, για τον επαγγελματία αναγνώστη την ονομάζουμε hash ή κρυπτογραφική σύνοψη· για τον γενικό αναγνώστη, μπορούμε να την ονομάσουμε προς το παρόν ένα μαθηματικό αποτύπωμα του κειμένου, όπως το δακτυλικό αποτύπωμα είναι για έναν άνθρωπο. Εάν εισάγετε το ίδιο κείμενο δύο φορές, η μηχανή θα δείξει το ίδιο αποτύπωμα και τις δύο φορές. Εάν εισάγετε ένα κείμενο ελαφρώς διαφορετικό —ένα μόνο κόμμα μετατοπισμένο, ένα κεφαλαίο γράμμα που γίνεται πεζό— η μηχανή δείχνει ένα αποτύπωμα εντελώς διαφορετικό από το πρώτο. Όχι παρόμοιο: διαφορετικό. Αυτές οι δύο ιδιότητες μαζί —ο ντετερμινισμός και η ευαισθησία— είναι η απλή ιδέα. Όλα τα υπόλοιπα στο SHA-256 είναι ο μηχανισμός που τις κάνει να λειτουργούν σωστά. Είναι καλό να πούμε από την αρχή τι δεν κάνει η μηχανή. Δεν κρυπτογραφεί το κείμενο. Δεν το αποκρύπτει. Δεν το αποθηκεύει. Η μηχανή κοιτάζει το κείμενο, υπολογίζει το αποτύπωμα και ξεχνά το κείμενο. Το αποτύπωμα δεν επιτρέπει την ανακατασκευή του κειμένου που το παρήγαγε· επιτρέπει μόνο, δεδομένου ενός υποψήφιου κειμένου, να ελέγξουμε αν συμπίπτει ή όχι με το πρωτότυπο. Γι' αυτό λέμε ότι είναι μια σύνοψη μονής κατεύθυνσης: πας, αλλά δεν επιστρέφεις. Το hash δεν είναι το ίδιο με την κρυπτογράφηση Η σύγχυση είναι συχνή και είναι καλό να την ξεκαθαρίσουμε: η κρυπτογράφηση και το hashing είναι διαφορετικές λειτουργίες. Η κρυπτογράφηση συνίσταται στον μετασχηματισμό ενός κειμένου έτσι ώστε μόνο ο κάτοχος του κλειδιού να μπορεί να το επαναφέρει στην αρχική του μορφή. Το hashing συνίσταται στην παραγωγή ενός αποτυπώματος του κειμένου από το οποίο το αρχικό κείμενο δεν μπορεί να ανακτηθεί ποτέ, ούτε με κλειδί ούτε χωρίς αυτό. Το πρώτο είναι αναστρέψιμο από σχεδιασμό· το δεύτερο, μη αναστρέψιμο από σχεδιασμό. Η πρακτική συνέπεια έχει σημασία. Όταν μια εφαρμογή λέει «αποθηκεύουμε τον κωδικό πρόσβασής σας κρυπτογραφημένο», υπάρχει κάποιος που έχει το κλειδί για να τον αποκρυπτογραφήσει — η ίδια η εφαρμογή, σε κάθε περίπτωση. Όταν μια εφαρμογή λέει «αποθηκεύουμε τον κωδικό πρόσβασής σας με hashing», η ίδια η εφαρμογή δεν μπορεί να διαβάσει τον αρχικό κωδικό ακόμα κι αν το ήθελε· μπορεί μόνο να ελέγξει αν αυτό που γράφετε παράγει ξανά το ίδιο αποτύπωμα. Το δεύτερο μοντέλο, όταν γίνεται σωστά, είναι πολύ προτιμότερο από το πρώτο για την αποθήκευση κωδικών πρόσβασης. Στη συνέχεια θα δούμε γιατί το «σωστά» απαιτεί κάτι περισσότερο από το SHA-256 σκέτο. Οι τέσσερις ιδιότητες που καθιστούν χρήσιμο ένα κρυπτογραφικό hash Μια συνάρτηση hash που αξίζει το επίθετο κρυπτογραφική πληροί τέσσερις ιδιότητες: 1. Ντετερμινισμός. Η ίδια είσοδος παράγει πάντα το ίδιο αποτύπωμα. 2. Φαινόμενο χιονοστιβάδας (Avalanche effect). Μια μικρή αλλαγή στην είσοδο παράγει ένα εντελώς διαφορετικό αποτύπωμα, χωρίς ορατή ομοιότητα με το προηγούμενο. 3. Αντίσταση στην αναστροφή. Δεδομένου ενός αποτυπώματος, δεν είναι υπολογιστικά εφικτό να βρεθεί το κείμενο που το παρήγαγε. 4. Αντίσταση σε συγκρούσεις. Δεν είναι υπολογιστικά εφικτό να βρεθούν δύο διαφορετικά κείμενα που να παράγουν το ίδιο αποτύπωμα. «Δεν είναι υπολογιστικά εφικτό» δεν σημαίνει «είναι μαθηματικά αδύνατο». Σημαίνει ότι το κόστος σε χρόνο, ενέργεια και χρήμα για να επιτευχθεί υπερβαίνει κατά τάξεις μεγέθους το σύνολο όλης της λογικά διαθέσιμης υπολογιστικής ικανότητας. Για το SHA-256, αυτό το όριο μετριέται σε χιλιάδες δισεκατομμύρια χρόνια ακόμα και για τις πιο αισιόδοξες προσεγγίσεις με εξειδικευμένο υλικό. Το οποίο, για τους πρακτικούς σκοπούς του αναγνώστη, είναι το ίδιο με το «δεν γίνεται». Το SHA-256, συγκεκριμένα Το όνομα τα λέει όλα. SHA είναι τα αρχικά του Secure Hash Algorithm: αλγόριθμος ασφαλούς κατακερματισμού. Ο αριθμός 256 υποδηλώνει το μέγεθος του αποτυπώματος σε bits: διακόσια πενήντα έξι bits, δηλαδή τριάντα δύο bytes, τα οποία εμφανίζονται σε δεκαεξαδική μορφή ως οι εξήντα τέσσερις χαρακτήρες που ο αναγνώστης ήδη γνωρίζει. Το πρότυπο δημοσιεύθηκε από το αμερικανικό NIST, τον οργανισμό που τυποποιεί αυτού του είδους τις συναρτήσεις, το 2001 ως μέρος της οικογένειας SHA-2· η τρέχουσα έκδοση του προτύπου, FIPS 180-4, είναι του 2015. Οι διαστάσεις αξίζουν μια στιγμή προσοχής. Διακόσια πενήντα έξι bits επιτρέπουν δύο εις την διακοσιοστή πεντηκοστή έκτη διαφορετικές τιμές: ένας αριθμός με εβδομήντα οκτώ δεκαδικά ψηφία, αρκετές τάξεις μεγέθους μεγαλύτερος από τον εκτιμώμενο αριθμό ατόμων στο παρατηρήσιμο σύμπαν. Κάθε κείμενο στον κόσμο —κάθε βιβλίο, κάθε email, κάθε μήνυμα— πέφτει πάνω σε μία από αυτές τις τιμές. Η πιθανότητα δύο διαφορετικά κείμενα να συμπίπτουν τυχαία είναι, για πρακτικούς σκοπούς, μη διακρίσιμη από το μηδέν. Πώς φαίνεται σε κώδικα Γιατί το ονομάζουμε σφραγίδα με βουλοκέρι Στην ευρωπαϊκή αλληλογραφία από τον δέκατο πέμπτο έως τον δέκατο ένατο αιώνα, το βουλοκέρι σφράγιζε την επιστολή. Μια σταγόνα λιωμένο κερί, μια σφραγίδα που πιέζεται από πάνω, και η επιστολή έμενε μαρκαρισμένη με τρόπο ανεπανάληπτο. Δεν προστάτευε το περιεχόμενο από τον αποφασισμένο αδιάκριτο —το χαρτί μπορούσε να διαβαστεί στο φως, το βουλοκέρι μπορούσε να σπάσει— αλλά το αποδείκνυε. Οποιαδήποτε αλλοίωση του κλεισίματος ήταν ορατή στον παραλήπτη πριν καν ανοίξει το χαρτί. Το βουλοκέρι δεν εμπόδιζε τη ζημιά· την δήλωνε. Το SHA-256 του σώματος κάθε Cuaderno επιτελεί την ίδια λειτουργία στην ψηφιακή του έκδοση. Εάν μια μόνο λέξη του άρθρου άλλαζε μεταξύ της στιγμής που δημοσιεύθηκε και της στιγμής που το διαβάζετε, η δεκαεξαδική σφραγίδα στο κάτω μέρος του κειμένου δεν θα συνέπιπτε πλέον με το SHA-256 του κειμένου που έχετε μπροστά σας. Οποιοσδήποτε αναγνώστης με πέντε γραμμές κώδικα θα μπορούσε να το ελέγξει. Η έκδοση δεν μπορεί να ξαναγράψει την ιστορία της χωρίς η σφραγίδα να την προδώσει. Δεν προστατεύει από τη ζημιά· την καθιστά επαληθεύσιμη. Τι δεν είναι ένα hash Τέσσερις χρήσεις ζητούνται μερικές φορές από το SHA-256 που δεν του αντιστοιχούν: 1. Κρυπτογράφηση. Ένα hash συνοψίζει· δεν αποκρύπτει. Εάν θέλετε το κείμενο να μην μπορεί να διαβαστεί, πρέπει να το κρυπτογραφήσετε, όχι να του κάνετε hashing. 2. Αυθεντικοποίηση του συγγραφέα. Ένα hash δεν λέει ποιος έγραψε το κείμενο, μόνο ποιο κείμενο υποβλήθηκε σε hashing. Για τη συσχέτιση πατρότητας χρειάζεται μια κρυπτογραφική υπογραφή πάνω από το hash, όχι το hash σκέτο. 3. Αποθήκευση κωδικών πρόσβασης. Εδώ υπάρχει μια παγίδα που είναι καλό να κατανοήσουμε. Το SHA-256 έχει σχεδιαστεί για να είναι πολύ γρήγορο —κάτι που είναι καλό για πολλά πράγματα, αλλά κακό για αυτό. Ένας εισβολέας με εξειδικευμένο υλικό μπορεί να δοκιμάσει δισεκατομμύρια κωδικούς πρόσβασης ανά δευτερόλεπτο έναντι ενός hash SHA-256 μέχρι να βρει τον δικό σας. Για την αποθήκευση κωδικών πρόσβασης πρέπει να χρησιμοποιούνται σκόπιμα αργές συναρτήσεις παραγωγής κλειδιών όπως οι Argon2, scrypt ή bcrypt, σε συνδυασμό με ένα salt (ένα μοναδικό τυχαίο δεδομένο ανά χρήστη, που εμποδίζει δύο άτομα με τον ίδιο κωδικό πρόσβασης να έχουν το ίδιο hash). 4. Ανάγνωση του hash ως αναγνωριστικού του συγγραφέα. Δεν είναι. Ένα hash αναγνωρίζει το περιεχόμενο. Εάν δύο άτομα κάνουν hashing τη λέξη hola με SHA-256, και οι δύο παίρνουν την ίδια σύνοψη — και αυτό είναι η κεντρική ιδιότητα, όχι ένα ελάττωμα: αν ήταν διαφορετικές συνόψεις, δεν θα μπορούσαμε να ελέγξουμε τη σύμπτωση μεταξύ αυτού που δημοσιεύθηκε και αυτού που παραλήφθηκε. Πού εμφανίζεται το SHA-256 στην καθημερινότητά σας Ακόμα κι αν δεν το βλέπετε, το SHA-256 υποστηρίζει ένα μεγάλο μέρος αυτών που χρησιμοποιείτε καθημερινά στο διαδίκτυο. Η αλυσίδα μπλοκ (blockchain) του Bitcoin χτίζεται συνδέοντας το SHA-256 κάθε μπλοκ με το επόμενο· η αλλοίωση ενός παρελθόντος μπλοκ αναγκάζει στον επανυπολογισμό ολόκληρης της μεταγενέστερης αλυσίδας. Το Git, το σύστημα με το οποίο γίνεται η διαχείριση εκδόσεων του κώδικα του μισού κόσμου, αναγνωρίζει κάθε commit από το SHA-256 (σε πρόσφατες εκδόσεις) ή από τον προκάτοχό του SHA-1 (σε παλαιότερες εκδόσεις) του πλήρους περιεχομένου του. Τα πιστοποιητικά HTTPS που επαληθεύουν την ταυτότητα ενός ιστότοπου όταν εισέρχεστε φέρουν ένα σχετιζόμενο αποτύπωμα SHA-256. Οι λήψεις λογισμικού συνοδεύονται συχνά από ένα SHA-256 που δημοσιεύεται από τον προγραμματιστή, ώστε να επαληθεύσετε ότι το αρχείο δεν αλλοιώθηκε στη διαδρομή. Και, όπως είπαμε, στο κάτω μέρος κάθε Cuadernos Lacre. Για τον επαγγελματία αναγνώστη Τέσσερις λειτουργικές υπενθυμίσεις για όποιον αποφασίζει ή ελέγχει συστήματα: 1. Το Hash δεν είναι κρυπτογράφηση. Εάν ένας πάροχος συγχέει τους δύο όρους στην τεχνική του τεκμηρίωση, είναι σκόπιμο να ρωτήσετε τι ακριβώς εννοεί. 2. Για την αποθήκευση κωδικών πρόσβασης δεν πρέπει ποτέ να χρησιμοποιείται το SHA-256 σκέτο. Το SHA-256 είναι πολύ γρήγορο για αυτή την εργασία (βλ. σημείο 3 του Τι δεν είναι ένα hash). Το τρέχον πρότυπο είναι το Argon2id: αργό από σχεδιασμό, παραμετροποιήσιμο ανάλογα με τη χωρητικότητα του διακομιστή, σε συνδυασμό με ένα διαφορετικό τυχαίο salt ανά χρήστη. 3. Για την ακεραιότητα εγγράφων —συμβόλαια, φάκελοι, αρχεία— το SHA-256 παραμένει το πρότυπο αναφοράς. Είναι αυτό που χρησιμοποιούν οι εγκεκριμένοι πάροχοι υπηρεσιών χρονοσήμανσης στην ΕΕ. 4. Για μακροχρόνια διατήρηση (δεκαετίες) είναι σκόπιμο να υπολογίζεται και να αρχειοθετείται επίσης ένα SHA-3 ή ένα SHA-512 μαζί με το SHA-256· η κρυπτογραφική σύνεση συνιστά να μην βασιζόμαστε σε μία μόνο συνάρτηση κατά τη διάρκεια αρχειοθετήσεων αιώνων. Φανταστείτε ότι έχετε στήσει το πιο περίπλοκο κύκλωμα ντόμινο στον κόσμο: χιλιάδες πλακίδια, δεκάδες διακλαδώσεις, μηχανικές γέφυρες και ράμπες που διασχίζουν ολόκληρο το δωμάτιο, τοποθετημένα προσεκτικά κομμάτι-κομμάτι. Αν δώσετε ένα άγγιγμα στο πρώτο πλακίδιο, η αλυσίδα πέφτει σε μια ακριβή και επαναλήψιμη αλληλουχία. Ίδιο στήσιμο, ίδιο αρχικό άγγιγμα → πανομοιότυπο τελικό μοτίβο πεσμένων πλακιδίων, ξανά και ξανά. Εδώ είναι το ενδιαφέρον μέρος: μετακινήστε **ένα μόνο πλακίδιο** μισό εκατοστό προς τη μία πλευρά πριν ξεκινήσετε και αγγίξτε το ξανά. Μια ράμπα που έπρεπε να ενεργοποιηθεί παραμένει αδρανής, μια γέφυρα δεν πέφτει, μια διαφορετική διακλάδωση πυροδοτείται. Το τελικό μοτίβο των πλακιδίων στο πάτωμα είναι εντελώς αγνώριστο σε σύγκριση με το πρώτο. Ο SHA-256 είναι μαθηματικά αυτό το κύκλωμα. Το κείμενο που γράφετε είναι η αρχική θέση των πλακιδίων. Ο αλγόριθμος είναι το άγγιγμα που απελευθερώνει την καταρράκτη. Και το τελικό αποτέλεσμα —αυτό που ονομάζουμε *hash*— είναι η στατική φωτογραφία του δαπέδου όταν όλα έχουν σταματήσει. Αλλάξτε ένα μόνο κόμμα στο αρχικό κείμενο και η φωτογραφία θα είναι ριζικά διαφορετική. Τόσο απλά, και τόσο δραστικά. --- Εάν επιστρέψετε στο κάτω μέρος αυτού του άρθρου, θα δείτε μια δεκαεξαδική σφραγίδα εξήντα τεσσάρων χαρακτήρων. Είναι το SHA-256 του κειμένου που μόλις διαβάσατε, σε αυτή τη γλώσσα. Εάν μεταφράζαμε το άρθρο, η σφραγίδα θα ήταν άλλη· εάν άλλαζε μια λέξη της ελληνικής έκδοσης, η ελληνική σφραγίδα θα άλλαζε. Η σφραγίδα δεν προστατεύει το περιεχόμενο —γι' αυτό υπάρχουν άλλα εργαλεία— αλλά το προσδιορίζει μοναδικά. Και αυτό, όσο ταπεινό κι αν ακούγεται, αρκεί ώστε κανένα βήμα της εκδοτικής αλυσίδας να μην μπορεί να αλλοιώσει τα λεγόμενα χωρίς να γίνει αντιληπτό. Τα υπόλοιπα —κρυπτογράφηση, υπογραφή, ταυτοποίηση— χτίζονται πάνω σε αυτή την απλή ιδέα. Πηγές και περαιτέρω μελέτη - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), Αύγουστος 2015. Επίσημη προδιαγραφή της οικογένειας SHA-2, συμπεριλαμβανομένου του SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, Μάιος 2011. Κανονιστική έκδοση για υλοποιητές. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). Τα κεφάλαια 5 και 6 καλύπτουν τις συναρτήσεις hash και τις νόμιμες και παράνομες χρήσεις τους. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Πρακτικό παράδειγμα χρήσης του SHA-256 για τη σύνδεση μπλοκ σε μια αμετάβλητη δομή. - Κανονισμός (ΕΕ) 910/2014 (eIDAS) — πλαίσιο των εγκεκριμένων παρόχων υπηρεσιών χρονοσήμανσης. Το SHA-256 είναι η συνάρτηση αναφοράς για τις εγκεκριμένες ηλεκτρονικές υπογραφές και σφραγίδες που εκδίδονται στην ΕΕ. - Υλοποίηση αναφοράς στην Zig: std.crypto.hash.sha2.Sha256 στο επίσημο αποθετήριο της γλώσσας (github.com/ziglang/zig → lib/std/crypto/sha2.zig). Είναι η βελτιστοποιημένη και ελεγμένη έκδοση που χρησιμοποιεί στην πραγματικότητα το Solo2. Χρήσιμο για σύγκριση με τη διδακτική υλοποίηση του παραρτήματος. --- Cuadernos Lacre · Μια έκδοση της Menzuri Gestión S.L. · γραμμένη από τον R.Eugenio · επιμελημένη από την ομάδα του Solo2. https://solo2.net/el/notebooks/