ΠΡΟΣΟΧΗ

Προσοχή! Οι οδηγοί μου είναι μόνο για εκπαιδευτικούς σκοπούς,
εφαρμόζοντας τους κακόβουλα σε τρίτους είναι με δικιά σας ευθύνη καθώς ορισμένοι απο αυτούς είναι παράνομοι


Πέμπτη 3 Μαρτίου 2016

Πως εξασφαλιζουμε μια ασφαλη επικοινωνια (εισαγωγη στην κρυπτογραφηση)





Τι θα χρειαστείτε;

1.Kali Linux



Εισαγωγή

Πλέον ζούμε σε μια εποχή που όλες  οι επικοινωνίες μας γίνονται ψηφιακά
παρόλο που είναι εύκολος και γρήγορος ο τρόπος ,κανείς δεν σας εγγυάται ότι δεν υποκλέπτονται.

Και όπως γνωρίζετε όλοι το 2013 ο Εντουαρντ Σνοουντεν μας το επαλήθευσε.
όσοι δεν γνωρίζουν διαβάστε εδω
 *(καλο θα ητανε να δειτε και το ντοκυμαντερ "Citizenfour")

Στην Ελλαδα υπήρχε το πρόγραμμα "Νόμιμη Συνακρόαση" που εφαρμόστηκε το 2004 με τους ολυμπιακούς αγώνες (Σκάνδαλο Vodafone κτλ)

σαφώς καταλαβαίνετε οτι καμία επικοινωνία δεν είναι ασφαλής

και έτσι ερχόμαστε στην κρυπτογράφηση

Η κρυπτογράφηση ονομάζεται η διαδικασια μετατροπής ενός μηνύματος σε μια ακατανόητη μορφή  ώστε να μην μπορεί να διαβαστεί από κανέναν εκτός του νόμιμου παραλήπτη.

Στο παρελθόν οι ποιο αξιόλογες κρυπτογραφησεις που χρησιμοποιήθηκαν ειναι:

  • Η Σπαρτιάτικη σκυτάλη

ήταν μια ξύλινη ράβδος, ορισμένης διαμέτρου, γύρω από την οποία ήταν τυλιγμένη ελικοειδώς μια λωρίδα περγαμηνής. Το κείμενο ήταν γραμμένο σε στήλες, ενα γραμμα σε κάθε έλικα, όταν δεν ξετύλιγα τη λωρίδα, το κείμενο ήταν ακατάληπτο εξαιτίας της αναδιάταξης των γραμμάτων. Το «κλειδι» ηταν η διάμετρος της σκυτάλης

πχ


  • ο Κωδικας του Καισαρα 

Ειναι κωδικας αντικαταστασης στον οποιο καθε γραμμα του κειμενου αντικαθισταται απο καποιο αλλο γραμμα με σταθερη αποσταση καθε φορα στο αλφαβητο. Για παραδειγμα, με μετατοπιση 3, το A θα αντικαθιστουνταν απο το D, το B απo το E, κτλ

πχ


οποτε  vdlo0u ειναι η λεξη sail0r

  • το τετραγωνο του Πολυβιου
Ο τροπος λειτουργιας του πινακα ειναι:
καθε γραμμα αναπαρισταται απο τις συντεταγμενες του στο πινακα.
Ετσι η λεξη "καλημερα" χρησιμοποιωντας τον διπλανο πινακα μετασχηματιζεται σε
25 11 31 22 32 15 42 11

  •  η συσκευη Enigma των Ναζι
Η μηχανη ειχε τρεις κυλινδρικους στροφεις οι οποιοι ρυθμιζοταν σε διαφορετικες καθε φορα θεσεις. Στη συνεχεια απο το πληκτρολογιο που διεθετε εισηγαγε καποιος το μηνυμα και η μηχανη αυτοματα παρηγαγε το κωδικοποιημενο μηνυμα. Ετσι αν καποιος δεν ηξερε την αρχικη θεση των στροφεων δε μπορουσε να αποκρυπτογραφησει το μηνυμα


και φτανουμε στο σημερα που η κρυπτογραφηση γινετε απο υπολογιστες

εμεις σε αυτο τον οδηγο θα χρησιμοποιησουμε το PGP (Pretty Good Privacy)

το PGP ειναι ενα εργαλειο το οποιο κρυπτογραφει τα μηνυματα σας

οποτε ας αρχισουμε

πρωτα πρεπει να δημιουργησουμε το public key μας

ανοιγουμε ενα τερματικο και γραφουμε

gpg --gen-key


 επιλεγουμε 1

επιλεγουμε το μεγεθος που θελουμε να εχει το κλειδι μας οσο ποιο μεγαλο ειναι τοσο ποιο αργα θα κανει να κρυπτογραφηση η να αποκρυπτογραφηση αλλα θα ειναι σαφεστατα ποιο ασφαλη οποτε βαζουμε 4096


τωρα βαζουμε ποτε θα ληγει το κλειδι μας αναλογα με τις αναγκες σας διαλεγετε

επιλεγουμε 0


μετα θα μας ρωτισει αν ειμαστε σιγουροι οτι το κλειδι μας δεν ληγει ποτε

επιλεγουμε y

βαζουμε το ονομα μας η το ψευδωνυμο (θα βαλετε το ψευδωνυμο σας εφοσον αν προκειτε για μια μυστικη συνομιλια) και το email ,δεν εχει σημασια τι θα βαλετε φτανει ο αποδεχτης που θα στειλετε το κρυπτογραφημενο μηνυμα να αναγνωρισει οτι ειστε εσεις


γραφουμε O και πληκτρολογουμε τον κωδικο που θελουμε να εχει το κλειδι ,με αυτο το τροπο αν καποιος παρει το κλειδι μας δεν θα μπορει να υπογραψει αλλα ουτε να στηλει κρυπτογραφημενα μυνηματα εκμερους μας


τωρα ενω κανουμε τυχαιες κινησεις με το mouse η καθως γραφουμε ενα κειμενο καλη ωρα εγω τωρα που γραφω αυτο τον οδηγο δημιουργει τον αλγορυθμο


και τελος μας εχει φτιαξει το κλειδι


τωρα θα φτιαξουμε το αρχειο revoke ετσι ωστε αν το κλειδι μας εκτεθει να μπορουμε να το ανακτησουμε

οποτε τρεχουμε την εντολη ωστε να δουμε το κλειδι

gpg --list-keys


και

gpg --output anakthsh.asc --gen-revoke 99A2B6E1

επιλεγουνε τον λογο που θελουμε να δημιουργησουμε το αρχειο ανακτησης
επιλεγουμε 0 βαζουμε τον κωδικο και μας δημιουργειτε το αρχειο anakthsh,asc


περνουμε το αρχειο anakthsh,asc και το μεταφερουμε καπου ασφαλες

για να καταλαβετε πως δουλευει το pgp πχ εγω θελω να κρυπτογραφησω ενα μυνημα και να το στειλω στον Μητσο πρεπει πρωτα να επικοινωνησω με τον Μητσο ωστε να μου στηλει το public key και να του στειλω και εγω το δικο μου.δλδ στελνωντας στον Μητσο το public key μου θα μπορει να κρυπτογραφει μυνηματα εκμερους μου και να μου τα στελνει εφοσον ειναι δικο μου το public key και με το private key ΜΟΝΟ εγω μπορω να αποκρυπτογραφησω τα μυνηματα .Το ιδιο ισχυει και για τον Μητσο δλδ μου στελνει το public key του κρυπτογραφω τα μηνυματα που θελω να του στειλω και αυτος με το private key του τα αποκρυπτογραφει

τωρα εφοσον τα εχουμε ρυθμισει ολα παμε να παρουμε το public key του ανθρωπου που θελουμε να επικοινωνησουμε και να ανεβασουμε και το δικο μας public key ωστε να μπορει να το παρει και αυτος

εμεις το ανεβαζουμε με την εντολη

gpg --send-keys --keyserver pgp.mit.edu 99A2B6E1


ας πουμε οτι θελω να επικοινωνησω με τον nickthesail0r ψαχνω στο server που φοιλοξενει τα κλειδια με την εντολη

gpg --keyserver pgp.mit.edu --search-keys nickthesail0r


στο πανω παραδειγμα επητηδες δημιουργησα 5 κλειδια και τα ανεβασα στον keyserver για να δειτε το εξεις προβλημα

Παρολο που ολα λενε nickthesail0r και εχουνε το email πως ξερω εγω οτι ειναι οντως ο nickthesail0r ?
και αν παρω το public key και κρυπτογραφω εκμερους του πως θα ξερω οτι θα μπορουν να διαβαζοντε απο αυτον?και οτι επικοινωνω με τον ιδιο?

πολυ απλα δεν το ξερω γιαυτο πρεπει να επικοινωνησει μαζι μου με ασφαλη τροπο και να μου επαληθευσει το αποτυπωμα (fingerprint) απο το public key του

για να δουμε το fingerprint γραφουμε την εντολη

gpg --fingerprint


οποτε οταν καποιος κατεβασει το public key μου τοτε πρεπει να επικοινωνησει με ενα ασφαλη τροπο και να του επιβαιβεωσω το key fingerprint πχ

C130 106E B2EF 4609 1A71  156A 12B6 988A 4347 933C

μετα να το εισαγει και να το υπογραψει ετσι ωστε να ξερω οτι το μηνυμα προηλθε απο αυτον


για να καταλαβετε καλυτερα θα δημιουργησω τον Alpha και τον Bhtaa

απο την μερια του Alpha

δημιουργουμε το κλειδι

gpg --gen-key

βλεπουμε το κλειδι

gpg --list-keys



και ανεβαζουμε το κλειδι

gpg --send-keys --keyserver pgp.mit.edu BFFCC10C


απο την μερια του Βhtaa η ιδια διαδικασια

τωρα απο την μερια του Alpha ψαχνουμε για τον βητα

gpg --keyserver pgp.mit.edu --search-keys Bhtaa


επιλεγουμε 1 και εισαγουμε το κλειδι

και με την εντολη gpg --list-keys βλεπουμε οτι το εχουμε εισαγει


τωρα για να δουμε το fingerprint γραφουμε

gpg --fingerprint Bhtaa

οποτε τωρα η μεσω τηλεφωνου η οποιδηποτε αλλου τροπου που νομιζετε οτι ειναι ασφαλης επικοινωνειτε για να σας επιβεβαιωση ο Bhtaa οτι αυτο ειναι το fingerprint του

πχ

 και το ιδιο κανει και ο Bhtaa

τωρα εφοσον εχουνε και οι δυοι επιβεβαιωσει  το public key του καθενος τοτε πρεπει να υπογραψουνε το public key δλδ ο Alpha να υπογραψει το public key του Bhtaa ωστε ο Bhtaa να ξερει οτι το κρυπτογραφημενο μηνυμα προηλθε απο τον Alpha

οποτε ο Alpha με την εντολη

gpg --sign-key Bhtaa (*η 427AC3BB)

υπογραφη το public key του Bhtaa


τωρα ο Alpha γραφει το μηνυμα σε ενα αρχειο κειμενου το αποθηκευει και το κρυπτογραφει με την εντολη

 gpg --encrypt -r Bhtaa --armor /root/Desktop/μηνυμα.txt

με την εντολη cat /root/Desktop/μηνυμα.txt.asc ο Alpha μπορει δει το κρυπτογραφημενο μνμ


και τωρα ο Alpha θα το στηλει στον Bhtaa

* o Alpha μπορει η να αντιγράψει ολο το κρυπτογραφημενο κείμενο και να το στηλει η να στηλει ολο το αρχειο (μηνυμα.txt.asc)

πως το στελνει? πολυ απλα με email



απο την μερια του o Bhtaa οταν παρει το email θα το αντιγράψει,σε ενα τερματικο θα γραψει

gpg

θα κανει επικόλληση του κρυπτογραφημενου μηνύματος ,θα βαλει τον κωδικο του και τελος θα πατησει ctrl+D , το μηνυμα θα αποκρυπτογραφηθεί


Μπορείτε να μην ανεβάστε το public key σας στους server και να το στειλετε κατευθειαν στον ανθρωπο που θελετε να επικοινωνήσετε


ο αλλος θα το αντιγράψει και με την εντολη

gpg --import

θα κανει επικόλληση και μετα ctrl+D


Προσοχή θα σας συμβούλευα να εξασκηθείτε στη χρηση του gpg πριν αρχίσετε την επικοινωνία

Το pgp μπορειτε να το κανετε εγκατάσταση και στα windows αλλα για λόγους ασφαλείας επειδή αναφέρθηκε οτι δεν σου παρέχει καθόλου ασφάλεια δεν θα αναφερθώ καν

τωρα για οσους εχουνε android μπορείτε να κατεβάσετε το OpenKeychain πατήστε εδω

αλλα αν δειτε τις άδειες που ζητάει σαν εφαρμογη


σίγουρα δεν θα νιωσετε ασφάλεια

οπως και να εχει το καλο ειναι οτι σας δινει ολο τον κώδικα της εφαρμογής και μπορείτε να τον φτιάξετε στο eclipse το οποιο θα δουμε σε επόμενο οδηγο
πατηστε εδω