Η κρυπτογραφία (cryptography) είναι ο πυρήνας της σύγχρονης ασφάλειας: κρύβει, προστατεύει και επαληθεύει δεδομένα. Σε αυτόν τον οδηγό για αρχάριους θα ξεχωρίσεις τρεις έννοιες που συχνά μπερδεύονται — encoding, hashing και encryption — θα δεις τη διαφορά συμμετρικής (symmetric) και ασύμμετρης (asymmetric) κρυπτογραφίας, και θα τα δοκιμάσεις όλα με το openssl μέσα σε ένα απομονωμένο εργαστήριο.
Γιατί έχει σημασία
Κάθε φορά που ανοίγεις μια ιστοσελίδα με HTTPS, στέλνεις ένα μήνυμα σε μια εφαρμογή, ή συνδέεσαι μέσω SSH, η κρυπτογραφία δουλεύει από κάτω για να μην μπορεί κανείς στο δίκτυο να διαβάσει ή να αλλοιώσει τα δεδομένα σου. Για έναν αρχάριο ethical hacker, η κατανόηση της κρυπτογραφίας δεν είναι θεωρία — είναι πρακτική ανάγκη: θα τη συναντήσεις σε tokens, σε cookies, σε αρχεία ρυθμίσεων, σε πιστοποιητικά (certificates) και σε αποθηκευμένους κωδικούς.
Το πιο συχνό λάθος των αρχαρίων είναι να μπερδεύουν το encoding (π.χ. Base64) με πραγματική κρυπτογράφηση. Πολλά «κλειδωμένα» δεδομένα που θα δεις σε μια εξουσιοδοτημένη αξιολόγηση δεν είναι κρυπτογραφημένα — είναι απλώς κωδικοποιημένα, δηλαδή ανοιχτά για οποιονδήποτε. Ξεχωρίζοντας σωστά τις τρεις έννοιες, καταλαβαίνεις πότε ένα δεδομένο είναι πραγματικά προστατευμένο και πότε όχι. Όλα τα παραδείγματα εδώ τρέχουν σε ένα απομονωμένο εργαστήριο (isolated lab) — καμία επίθεση σε πραγματικό σύστημα.
Βασικές έννοιες
Ας βάλουμε τα τρία θεμέλια σε σειρά, γιατί μοιάζουν αλλά κάνουν εντελώς διαφορετική δουλειά:
- Encoding (κωδικοποίηση): μετατρέπει δεδομένα σε άλλη αναπαράσταση για μεταφορά ή συμβατότητα (π.χ. Base64). Είναι δημόσιο και πλήρως αντιστρέψιμο χωρίς κλειδί. Δεν προσφέρει καμία ασφάλεια.
- Hashing (κατακερματισμός): παράγει μια μονόδρομη «υπογραφή» σταθερού μήκους (digest). Είναι μη αντιστρέψιμο εκ σχεδιασμού και δεν έχει κλειδί. Χρησιμεύει για ακεραιότητα (integrity) και αποθήκευση κωδικών.
- Encryption (κρυπτογράφηση): μετατρέπει τα δεδομένα σε μη αναγνώσιμη μορφή (ciphertext) που είναι αντιστρέψιμη μόνο με το σωστό κλειδί. Προστατεύει την εμπιστευτικότητα (confidentiality).
Ένας απλός κανόνας: αν μπορείς να το «ξεκλειδώσεις» χωρίς κλειδί, είναι encoding· αν δεν αντιστρέφεται καθόλου, είναι hashing· αν χρειάζεσαι κλειδί για να το γυρίσεις πίσω, είναι encryption.
Symmetric vs. Asymmetric κρυπτογραφία
Η κρυπτογράφηση χωρίζεται σε δύο μεγάλες οικογένειες:
- Συμμετρική (symmetric): το ίδιο μυστικό κλειδί χρησιμοποιείται και για κρυπτογράφηση και για αποκρυπτογράφηση. Είναι γρήγορη και ιδανική για μεγάλο όγκο δεδομένων. Αντιπροσωπευτικός αλγόριθμος: το AES. Το πρόβλημά της είναι η διανομή του κλειδιού: πώς στέλνεις το μυστικό κλειδί στον παραλήπτη με ασφάλεια;
- Ασύμμετρη (asymmetric): χρησιμοποιεί ένα ζεύγος κλειδιών — ένα δημόσιο (public) που μοιράζεσαι ελεύθερα και ένα ιδιωτικό (private) που κρατάς μυστικό. Ό,τι κρυπτογραφείται με το δημόσιο κλειδί αποκρυπτογραφείται μόνο με το ιδιωτικό. Αντιπροσωπευτικός αλγόριθμος: το RSA. Λύνει το πρόβλημα της διανομής κλειδιού, αλλά είναι πιο αργή.
Στην πράξη, πρωτόκολλα όπως το TLS (πίσω από το HTTPS) συνδυάζουν τα δύο: χρησιμοποιούν ασύμμετρη κρυπτογραφία για να ανταλλάξουν με ασφάλεια ένα προσωρινό συμμετρικό κλειδί (session key) και μετά συμμετρική για την ταχύτητα. Αυτό λέγεται hybrid encryption.
Πρακτικό κομμάτι: κρυπτογραφία στο lab
Ας το δούμε ζωντανά. Ξεκινάμε με το πιο παρεξηγημένο κομμάτι — το Base64. Θα κωδικοποιήσουμε και θα αποκωδικοποιήσουμε ένα string για να δεις ότι δεν χρειάζεται κανένα κλειδί, άρα δεν προσφέρει καμία προστασία.

Παρατήρησε ότι το base64 -d επαναφέρει αμέσως το αρχικό κείμενο, χωρίς κωδικό. Γι’ αυτό, όταν σε ένα HTTP header Basic Auth ή στο payload ενός JWT βλέπεις Base64, δεν βλέπεις κάτι κρυπτογραφημένο — βλέπεις καθαρά δεδομένα με άλλη «στολή». Ένας defender που αποθηκεύει credentials απλώς σε Base64 δεν έχει κάνει τίποτα για την ασφάλεια.
Συμμετρική κρυπτογράφηση με AES
Τώρα πραγματική κρυπτογράφηση. Με το openssl enc θα κρυπτογραφήσουμε ένα αρχείο με AES-256 χρησιμοποιώντας έναν κωδικό (από τον οποίο παράγεται το κλειδί μέσω PBKDF2). Το ίδιο μυστικό χρειάζεται και για την αποκρυπτογράφηση — αυτή είναι η ουσία της συμμετρικής κρυπτογραφίας.

Το ciphertext (message.enc) είναι ακατανόητα bytes — ξεκινά με το πρόθεμα Salted__ επειδή χρησιμοποιήσαμε salt, ώστε ο ίδιος κωδικός να παράγει διαφορετικό αποτέλεσμα κάθε φορά. Χωρίς τον σωστό κωδικό, το αρχείο είναι άχρηστο. Πρόσεξε ότι εδώ το «κλειδί» είναι ένα και μοιράζεται ανάμεσα σε αποστολέα και παραλήπτη — αυτό είναι και το αδύναμο σημείο της συμμετρικής προσέγγισης.
Ασύμμετρη κρυπτογράφηση με RSA
Ας λύσουμε το πρόβλημα της διανομής κλειδιού. Θα φτιάξουμε ένα ζεύγος RSA, θα κρυπτογραφήσουμε ένα μήνυμα με το δημόσιο κλειδί και θα το αποκρυπτογραφήσουμε μόνο με το ιδιωτικό. Έτσι, οποιοσδήποτε μπορεί να σου στείλει κρυφό μήνυμα χρησιμοποιώντας το δημόσιο κλειδί σου, αλλά μόνο εσύ μπορείς να το διαβάσεις.

Αυτό είναι το θεμέλιο των ψηφιακών πιστοποιητικών, του HTTPS και των κλειδιών SSH. Το ίδιο ζεύγος χρησιμεύει και για ψηφιακές υπογραφές (digital signatures): υπογράφεις με το ιδιωτικό κλειδί και οποιοσδήποτε επαληθεύει με το δημόσιο, αποδεικνύοντας ταυτότητα και ακεραιότητα. Σημείωσε ότι το RSA κρυπτογραφεί μόνο μικρά δεδομένα — γι’ αυτό στην πραγματικότητα κρυπτογραφεί ένα συμμετρικό κλειδί, όχι ολόκληρα αρχεία.
Hashing vs. Encryption στην πράξη
Τέλος, ας δούμε γιατί το hashing δεν είναι κρυπτογράφηση. Με το openssl dgst υπολογίζουμε το SHA-256 digest ενός μηνύματος. Δεν υπάρχει κλειδί και δεν υπάρχει τρόπος να «γυρίσεις» το digest πίσω στο αρχικό κείμενο.

Δύο βασικές παρατηρήσεις: πρώτον, η ίδια είσοδος δίνει πάντα το ίδιο digest (deterministic), ενώ αλλάζοντας έναν μόνο χαρακτήρα αλλάζει ριζικά ολόκληρο το αποτέλεσμα (avalanche effect). Δεύτερον, το HMAC προσθέτει ένα μυστικό κλειδί στο hashing για να επαληθεύεις και την ακεραιότητα και την αυθεντικότητα ενός μηνύματος — μια τεχνική που θα δεις παντού σε API tokens και webhooks. Το hash προστατεύει την ακεραιότητα· η κρυπτογράφηση προστατεύει την εμπιστευτικότητα. Δύο διαφορετικές δουλειές.
Το εργαστηριακό περιβάλλον (isolated lab)
Όλα τα παραπάνω τα εξασκείς με απόλυτη ασφάλεια σε ένα απομονωμένο εργαστήριο, καθώς αφορούν αποκλειστικά τον δικό σου υπολογιστή — δεν χρειάζεσαι καν δίκτυο. Ένα ελάχιστο setup:
- Μία εικονική μηχανή Kali Linux (μέσω VirtualBox ή VMware), όπου το
opensslκαι τοbase64είναι προεγκατεστημένα. - Δικά σου αρχεία-δείγματα και strings για πειραματισμό — ποτέ πραγματικά μυστικά τρίτων.
- Έναν φάκελο εργασίας (π.χ.
~/eh-lab) όπου κρατάς τα κλειδιά, το plaintext και το ciphertext ξεχωριστά, ώστε να βλέπεις καθαρά τι μετασχηματίζεται σε τι.
Ένα χρήσιμο αμυντικό σενάριο είναι να συγκρίνεις τι φαίνεται στο δίκτυο όταν στέλνεις δεδομένα σε καθαρή μορφή, σε Base64 και σε πραγματική κρυπτογράφηση. Έτσι καταλαβαίνεις, ως μελλοντικός defender, γιατί το HTTPS και το σωστό key management είναι μη διαπραγματεύσιμα.
Ηθικό και νομικό πλαίσιο
Το να κρυπτογραφείς και να αποκρυπτογραφείς δικά σου δεδομένα είναι εντελώς ακίνδυνο. Οι ίδιες όμως τεχνικές συνδέονται και με ανάλυση δεδομένων τρίτων — και εκεί μπαίνουν αυστηρά όρια. Ως αρχάριος, να θυμάσαι:
- Μόνο δικά σου δεδομένα: δημιούργησε, κρυπτογράφησε και ανάλυσε μόνο κλειδιά, αρχεία και μηνύματα που σου ανήκουν ή σου έχουν δοθεί ρητά για δοκιμή.
- Καμία υποκλοπή: η προσπάθεια αποκρυπτογράφησης ή «σπασίματος» δεδομένων τρίτων χωρίς άδεια είναι παράνομη, ακόμη κι αν το κάνεις «για μάθηση».
- Προσοχή στα κλειδιά: τα ιδιωτικά κλειδιά είναι μυστικά — μην τα ανεβάζεις σε δημόσια repositories και μην τα μοιράζεσαι, ούτε στο lab.
- Έμφαση στην άμυνα: ο στόχος της μάθησης είναι να χτίζεις και να αξιολογείς πιο ασφαλή συστήματα — σωστοί αλγόριθμοι, σωστό key management — όχι να επιτίθεσαι.
Βασικά συμπεράσματα
- Το encoding (Base64) είναι δημόσιο και αντιστρέφεται χωρίς κλειδί — δεν είναι ασφάλεια, μόνο αναπαράσταση.
- Το hashing είναι μονόδρομο και χωρίς κλειδί· προστατεύει την ακεραιότητα, όχι την εμπιστευτικότητα.
- Η encryption είναι αντιστρέψιμη μόνο με κλειδί και προστατεύει την εμπιστευτικότητα των δεδομένων.
- Η συμμετρική κρυπτογραφία (AES) είναι γρήγορη με ένα κοινό κλειδί· η ασύμμετρη (RSA) λύνει τη διανομή κλειδιού με ζεύγος public/private.
- Πρωτόκολλα όπως το TLS συνδυάζουν και τα δύο (hybrid), ενώ το HMAC προσθέτει κλειδί στο hashing για αυθεντικότητα.
- Εξάσκηση μόνο σε δικά σου δεδομένα ή σε απομονωμένο, νόμιμο εργαστήριο — ποτέ σε ξένα μυστικά ή κρυπτογραφημένα δεδομένα.
Από τη θεωρία στην πράξη. Η Audax Cybersecurity προσφέρει επαγγελματικές υπηρεσίες offensive security — penetration testing & offensive validation — ενώ για όσους ξεκινούν το ταξίδι τους στο ethical hacking, το #1 ελληνικό βιβλίο «Ethical Hacking — Η Κρυφή Γνώση» είναι ο ιδανικός οδηγός.
Θέλετε συνεχή επικύρωση της ασφάλειάς σας — όχι έλεγχο μία φορά τον χρόνο;
Το Erevos AI είναι η ετήσια, managed υπηρεσία CTEM της Audax — ενοποιεί exposure mapping, penetration testing, adversary emulation, detection validation & remediation σε έναν συνεχή, αποδεικτικό κύκλο. Human-led. Machine-scaled. Technically proven. Ευθυγραμμισμένο με NIS2 & DORA.
Ανακαλύψτε το Erevos AI →Χρειάζεστε Penetration Testing για τον οργανισμό σας;
Περιγράψτε το scope του ελέγχου μέσα από το δομημένο ερωτηματολόγιο και λάβετε εξατομικευμένη τεχνική & οικονομική προσφορά από την ομάδα Offensive Security της Audax. Χωρίς αυτόματη τιμή ή δέσμευση — η προσφορά αποστέλλεται μετά από τεχνική αξιολόγηση του scope.
Ζητήστε προσφορά Penetration Testing →