Δευτέρα 24 Μαρτίου 2014

Το φίμωμα του twitter στην Τουρκία

Από τις 20 Μαρτίου, όσοι χρήστες από την Τουρκία προσπαθούν να μπουν στην σελίδα του twitter ανακατευθύνονται σε  μια σελίδα που τους ενημερώνει πως με εντολή δικαστηρίου η πρόσβαση στο twitter έχει απαγορευθεί. Αρχικά η τούρκικη αρχή τηλεπικοινωνιών (BTK) απέτρεπε την πρόσβαση στο twitter "πειράζοντας" τους DNS κόμβους των τούρκικων παρόχων. Το DNS είναι ένα ιεραρχικό δίκτυο από υπολογιστές, το οποίο μεταφράζει ονόματα, όπως το www.twitter.com, σε IP διευθύνσεις, όπως  199.16.156.38. Η μετάφραση αυτή είναι αναγκαία αφού οι υπολογιστές επικοινωνούν με IP διευθύνσεις και όχι με ονόματα. Για να μετατραπεί ένα όνομα σε μια διεύθυνση χρειάζονται ένας αριθμός από βήματα, τα οποία εκτελούνται σε διαφορετικούς κόμβους του DNS. Αν ο χρήστης δεν έχει αλλάξει κάποια ρύθμιση στον υπολογιστή του, το πρώτο βήμα εκτελείται σε κάποιον DNS κόμβο του παρόχου του. Η τούρκικη κυβέρνηση επέβαλε στους παρόχους να παρεμβαίνουν σε αυτό το βήμα και να επιστρέφουν μια λάθος διεύθυνση. Όμως ένα τέτοιο μέτρο είναι εύκολο να παρακαμφθεί, αφού οι χρήστες μπορούν εύκολα να αλλάξουν από ποιο κόμβο του DNS θα ξεκινάει η όλη διαδικασία. Σύντομα λοιπόν γκράφιτι σαν και αυτό της εικόνας άρχισαν να εμφανίζονται στους δρόμους.
Google DNS σε γκράφιτι
Τα γκράφιτι αυτά ενημέρωναν τον κόσμο για εναλλακτικούς κόμβους DNS που μπορούν να χρησιμοποιήσουν οι χρήστες. Ο συγκεκριμένος είναι είναι ένας κόμβος της υπηρεσίας Google DNS. Η τούρκικη κυβέρνηση δεν άργησε να αντιδράσει και προχώρησε αφενός στο φιλτράρισμα των εναλλακτικών DNS κόμβων, αφετέρου στο φιλτράρισμα μηνυμάτων που αποστέλλονται σε  IP διευθύνσεις που ανήκουν στο twitter. Ποια είναι λοιπόν πλέον τα "όπλα" των Τούρκων χρηστών;

Tweets μέσω sms
To twitter επιτρέπει την αποστολή tweets μέσω sms. Φαίνεται πως η υπηρεσία αυτή ακόμη λειτουργεί στην Τουρκία.

VPN
Το VPN είναι μια υπηρεσία που επιτρέπει την δημιουργία ενός ασφαλούς διαύλου μεταξύ δυο υπολογιστών και την δρομολόγηση όλων των δεδομένων μέσω αυτού του διαύλου. Για παράδειγμα το προϊόν freedome της f-secure δημιουργεί ένα τέτοιο δίαυλο μεταξύ της συσκευής του χρήστη και ενός server στην Φιλανδία.

Tor
Η αρχή λειτουργίας του δικτύου Τor μοιάζει με αυτή του VPN: όλα τα μηνύματα του χρήστη δρομολογούνται μέσω ειδικών κόμβων (τους Τor relays). Μια μεγάλη κοινότητα διατηρεί λίστα από τέτοιους κόμβους που οποιοσδήποτε μπορεί να χρησιμοποιήσει. Το Tor είναι από τους πιο ανθεκτικούς μηχανισμούς σε τέτοιου είδους λογοκρισία, μιας και καταφέρνει να διαπεράσει ακόμη και το ηλεκτρονικό σινικό τείχος που έχει στήσει η Κίνα. Φαίνεται μάλιστα πως ο αριθμός των χρηστών του Tor στην Τουρκία έχει εκτοξευτεί
Χρήστες του Tor στην Τουρκία πηγή: https://metrics.torproject.org



Κυριακή 2 Μαρτίου 2014

Gotofail, το bug της Apple που θα συζητιέται για καιρό

Ήταν backdoor ή όχι; Ήταν προγραμματιστικό λάθος ή το "χέρι" κάποιας μυστικής υπηρεσίας; Όποια και αν είναι η ιστορία πίσω από το σοβαρό αυτό bug στον κώδικα της Apple, ένα είναι το γεγονός: Θα συζητιέται για πολύ καιρό.

Όλα ξεκίνησαν στις 21 Φεβρουαρίου, όταν η Apple έβγαλε μια ενημέρωση για το iOS (το λειτουργικό σύστημα των iPhone, iPad, iPod). Μία μέρα μετά ο Adam Langley1 αποκάλυπτε τον κώδικα που διόρθωνε αυτή η ενημέρωση. Ο κώδικας ήταν ο παρακάτω:

Τί είναι λοιπόν αυτός ο κώδικας; Όταν ένας υπολογιστής επικοινωνεί μέσω https με μια σελίδα χρησιμοποιεί το πρωτόκολλο TLS. Το πρώτο βήμα που εκτελεί αυτό το πρωτόκολλο είναι η ανταλλαγή ενός κλειδιού κρυπτογραφίας το οποίο χρησιμοποιείται για να κρυπτογραφηθούν όλα τα επόμενα μηνύματα. Χονδρικά, όταν το απομακρυσμένο μηχάνημα στέλνει το κλειδί του, χρησιμοποιεί μια διαδικασία η οποία λέγεται ψηφιακή υπογραφή και στην ουσία πιστοποιεί ότι το κλειδί το έχει στείλει όντως το απομακρυσμένο μηχάνημα και όχι κάποιος τρίτος κακόβουλος χρήστης. Ο παραπάνω κώδικας λοιπόν πιστοποιεί την ψηφιακή υπογραφή.

Ας προσέξουμε λίγο τον κώδικα. Στην γραμμή 4 δημιουργεί μια μεταβλητή με όνομα err. Στις γραμμές 8 και 10 γεμίζει στην ουσία μια στοίβα και τον πραγματικό έλεγχο της υπογραφής τον κάνει στην γραμμή 13. Μέχρι και πριν την γραμμή 13 η μεταβλητή err που δημιουργήθηκε στην γραμμή 4, έχει την τιμή 0 που σημαίνει "όλα καλά". Στην γραμμή 13 λοιπόν αν η υπογραφή δεν επαληθευτεί, η err αποκτάει  μια άλλη τιμή και ο κώδικα "πηδάει" στη γραμμή 19 όπου και επιστρέφει την τιμή της μεταβλητής err. Με μια προσεχτική ματιά όμως θα διαπιστώσετε πως ο κώδικας δεν θα φτάσει ποτέ στην γραμμή 13. Αυτό οφείλετε στην εντολή που υπάρχει στην γραμμή 12. Αυτή η εντολή παρόλο που έχει κενό μπροστά της δεν ανήκει στο if της γραμμής 10 αλλά είναι μια εντολή που εκτελείται πάντα. Η εντολή αυτή κάνει τον κώδικα να πηδήξει στην γραμμή 19 και να επιστρέψει την τιμή της err η οποία όμως είναι 0! Αυτό που συμβαίνει δηλαδή είναι πως ποτέ δεν γίνεται έλεγχος της υπογραφής οπότε οποιοσδήποτε τρίτος μπορεί να "παρέμβει" και να υποκλέψει μια φαινομενικά ασφαλή επικοινωνία, χωρίς ο χρήστης να καταλάβει κάτι!

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

Το bug αυτό, που θα μείνει στην ιστορία ως Gotofail bug, ξεσήκωσε πολλές συζητήσεις από το πώς πρέπει να γράφουμε κώδικα, μέχρι θεωρίες συνωμοσίας για το πώς  βρέθηκε το επιπλέον goto σε εκείνη την γραμμή.

Παραπομπές

  1. A. Langley, "Apple's SSL/TLS bug," Φεβ. 2014, [Online], Τελευταία πρόσβαση 3 Μαρ. 2014