205 lines
19 KiB
HTML
205 lines
19 KiB
HTML
{% extends "_layout_el.html" %}
|
||
{% block title %}Μια μικρη εισαγωγη{% endblock %}
|
||
{% block content %}
|
||
|
||
<h2>Μια Μικρή Εισαγωγή στο Πως Δουλεύει το I2P</h2>
|
||
|
||
<p>
|
||
Το I2P είναι ένα πρόγραμμα για τη δημιουργία, την ανάπτυξη και τη διατήρηση ενός δικτύου
|
||
που υποστηρίζει ασφαλή και ανώνυμη επικοινωνία. Τα άτομα που χρησιμοποιούν το I2P μπορούν
|
||
να ελέγξουν το ποσοστό μεταξύ της ανωνυμίας, της αξιοπιστίας, της χρησιμοποίησης του
|
||
bandwidth και της καθυστέρησης. Δεν υπάρχει κάποιο κεντρικό σημείο στο δίκτυο στο οποίο
|
||
μπορεί να ασκηθεί πίεση ώστε να διακινδυνέψει η ακεραιότητα, η ασφάλεια ή η ανωνυμία του
|
||
συστήματος. Το δίκτυο υποστηρίζει δυναμική αναδιαμόρφωση ως απάντηση σε διάφορες επιθέσεις
|
||
και έχει σχεδιαστεί ώστε να χρησιμοποιεί επιπλέον πόρους όταν αυτοί γίνονται διαθέσιμοι.
|
||
Φυσικά, όλες οι πτυχές του δικτύου είναι ανοιχτές και ελεύθερα διαθέσιμες.
|
||
</p>
|
||
|
||
<p>
|
||
Εν αντιθέσει με άλλα ανώνυμα δίκτυα, το I2P δεν προσπαθεί να παρέχει ανωνυμία κρύβοντας τον
|
||
αποστολέα ενός μηνύματος αλλά όχι τον παραλήπτη, και αντίστροφα. Το I2P έχει σχεδιαστεί ώστε
|
||
να επιτρέπει σε κόμβους που χρησιμοποιούν το I2P να επικοινωνούν μεταξύ τους ανώνυμα —
|
||
και ο αποστολέας και ο παραλήπτης είναι μη αναγνωρίσιμοι μεταξύ τους αλλά και σε τρίτους.
|
||
Για παράδειγμα, σήμερα υπάρχουν και ιστοσελίδες μέσα στο I2P (επιτρέποντας ανώνυμη δημοσίευση
|
||
/ φιλοξενία) καθώς και HTTP proxies για το κανονικό Internet (επιτρέποντας ανώνυμη περιήγηση
|
||
στο διαδίκτυο). Η δυνατότητα να τρέχετε εξυπηρετητές μέσα στο I2P είναι απαραίτητη, καθώς είναι
|
||
πολύ πιθανό κάποια outbound proxies για το κανονικό Internet να παρακολουθούνται, να είναι
|
||
απενεργοποιημένα ή να έχουν παραβιαστεί με σκοπό κάποια επίθεση.
|
||
</p>
|
||
|
||
<p>
|
||
Το δίκτυο είναι "μηνυματοστραφές" - είναι ουσιαστικά ένα ασφαλές και ανώνυμο επίπεδο IP, όπου
|
||
τα μηνύματα απευθύνονται σε κρυπτογραφικά κλειδιά (Προορισμοί) και μπορεί να είναι αρκετά
|
||
μεγαλύτερα από τα IP πακέτα. Κάποια παραδείγματα χρήσης του δικτύου περιλαμβάνουν τα "eepsites"
|
||
(εξυπηρετητές ιστού που φιλοξενούν κανονικές διαδικτυακές εφαρμογές μέσα στο I2P), μία
|
||
εφαρμογή-πελάτη για το BitTorrent ("I2PSnark"), ή μία κατανεμημένη αποθήκη δεδομένων. Με τη
|
||
βοήθεια της εφαρμογής <a href="i2ptunnel">I2PTunnel</a>, είμαστε ικανοί για μία παραδοσιακή
|
||
TCP/IP επικοινωνία πάνω από το I2P, όπως το SSH, IRC, ένα squid proxy ακόμα και streaming ήχου.
|
||
Οι περισσότεροι άνθρωποι δεν θα χρησιμοποιήσουν το I2P ευθέως, ή ακόμα δεν χρειάζεται να ξέρουν
|
||
ότι το χρησιμοποιούν. Αντιθέτως αυτό που θα βλέπουν, θα είναι μία από τις I2P εφαρμογές, ή ίσως
|
||
κάποια εφαρμογή διαχείρισης που θα τους επιτρέπει να ανοίξουν και να κλείσουν κάποιους proxies
|
||
που τους παρέχουν ανωνυμία.
|
||
</p>
|
||
|
||
<p>
|
||
Μία απαραίτητη διαδικασία του σχεδιασμού, της ανάπτυξης και της δοκιμής ενός ανώνυμου δικτύου είναι
|
||
να οριστεί το <a href="how_threatmodel">threat model</a>, εφόσον δεν υπάρχει κάτι σαν "αληθινή"
|
||
ανωνυμία, αλλά μόνο αυξανόμενα μεγάλο κόστος για την αναγνώριση κάποιου. Συνοπτικά, ο σκοπός του
|
||
I2P είναι να επιτρέπει στους ανθρώπους να επικοινωνούνε σε διάφορα εχθρικά περιβάλλοντα προσφέροντας
|
||
καλή ανωνυμία, με την βοήθεια επαρκούς "κίνησης κάλυψης" από την κίνηση διάφορων άλλων ανθρώπων που
|
||
απαιτούν λιγότερη ανωνυμία. Με αυτό τον τρόπο, μερικοί χρήστες μπορούν να αποφύγουν την ανίχνευση
|
||
από κάποιον πολύ ισχυρό εχθρό, ενώ άλλοι προσπαθούν να αποφύγουν κάποιον πιο αδύναμο, <i>όλα στο
|
||
ίδιο δίκτυο</i>, όπου τα μηνύματα καθενός είναι ουσιαστικά δυσδιάκριτα από των αλλωνών.
|
||
</p>
|
||
|
||
<h2>Γιατί;</h2>
|
||
<p>
|
||
Υπάρχει μία πληθώρα από λόγους για τους οποίους θέλουμε ένα σύστημα να υποστηρίζει ανώνυμη
|
||
επικοινωνία και ο κάθε ένας έχει τους δικούς του λόγους. Υπάρχουν διάφορες
|
||
<a href="how_networkcomparisons">άλλες προσπάθειες</a> που προσπαθούν να παρέχουν διάφορους
|
||
τρόπους ανωνυμίας στα άτομα σε όλο το Internet, αλλά δεν μπορούσαμε να βρούμε κάποιο που να
|
||
ικανοποιούσε τις ανάγκες μας ή το threat model μας.
|
||
</p>
|
||
|
||
<h2>Πώς;</h2>
|
||
|
||
<p>
|
||
Το δίκτυο με μια ματιά αποτελείται από ένα πακέτο από κόμβους ("routers") με έναν αριθμό από
|
||
μονής κατεύθυνσης inbound και outbound εικονικά μονοπάτια ("tunnels", όπως περιγράφονται στη
|
||
σελίδα <a href="how_tunnelrouting">tunnel routing</a>). Κάθε router αναγνωρίζεται από μία
|
||
κρυπτογραφική ταυτότητα (RouterIdentity) που συνήθως έχει μεγάλη διάρκεια ζωής. Αυτοί οι
|
||
routers επικοινωνούν μεταξύ τους μέσω υπαρχόντων μηχανισμών μεταφοράς (TCP, UDP, κτλ),
|
||
ανταλλάσσοντας διάφορα μηνύματα. Οι εφαρμογές πελάτη έχουν τα δικά τους κρυπτογραφικά
|
||
αναγνωριστικά ("Destination") που τους επιτρέπουν να στέλνουν και να λαμβάνουν μηνύματα. Αυτές
|
||
οι εφαρμογές-πελάτες μπορούν να συνδεθούν σε οποιοδήποτε router και να εξουσιοδοτηθούν για προσωρινή
|
||
δέσμευση ("lease") μερικών tunnels που θα χρησιμοποιηθούν για την αποστολή και παραλαβή μηνυμάτων
|
||
στο δίκτυο. Το I2P έχει τη δικιά του εσωτερική <a href="how_networkdatabase">δικτυακή βάση δεδομένων</a>
|
||
(χρησιμοποιώντας μια παραλλαγή του αλγορίθμου Kademlia) για την ασφαλή κατανεμημένη δρομολόγηση και
|
||
εύρεση στοιχείων επικοινωνίας.
|
||
</p>
|
||
|
||
<div class="box" style="text-align:center;"><img src="_static/images/net.png" alt="Network topology example" title="Παράδειγμα Τοπολογίας Δικτύου" /></div>
|
||
|
||
|
||
<p>
|
||
Παραπάνω, η Alice, o Βοb, ο Charlie και ο Dave τρέχουν routers με μοναδικό Προορισμό στο τοπικό τους
|
||
router. Όλοι τους έχουν ένα ζευγάρι από 2-hop inbound tunnels για κάθε προορισμό (σημειώνονται ως 1,
|
||
2, 3, 4, 5 και 6). Επίσης εμφανίζεται ένα μικρό μέρος από τα 2-hop outbound tunnels από τα router κάθε
|
||
χρήστη. Χάριν απλότητας, τα inbound tunnels του Charlie και τα outbound tunnels του Dave δεν εμφανίζονται,
|
||
ούτε τα διαθέσιμα outbound tunnels των υπολοίπων routers (συνήθως εφοδιασμένα με μερικά tunnels τη φορά).
|
||
Όταν η Alice και ο Bob μιλάνε μεταξύ τους, η Alice στέλνει ένα μήνυμα από τα (ροζ) outbound tunnels της που
|
||
επικοινωνούν με ένα από τα (πράσινα) inbound tunnels του Bob (tunnel 3 ή 4). Γνωρίζει σε ποιο από όλα τα tunnels
|
||
του router να το στείλει ρωτώντας τη δικτυακή βάση δεδομένων, που είναι συνεχώς ενημερωμένη καθώς νέα
|
||
leases εξουσιοδοτούνται και παλιά λήγουν.
|
||
</p>
|
||
|
||
<p>
|
||
Εάν ο Bob θέλει να απαντήσει στην Alice, ακολουθάει πάλι την ίδια διαδικασία - στέλνει ένα μήνυμα από ένα
|
||
από τα outbound tunnels του που επικοινωνούν με ένα από τα inbound tunnels της Alice (tunnel 1 ή 2). Για
|
||
να γίνουν πιο εύκολα τα πράγματα, τα περισσότερα μηνύματα μεταξύ της Alice και του Bob είναι
|
||
<a href="how_garlicrouting">garlic</a> wrapped, έχοντας τις τωρινές lease πληροφορίες του αποστολέα έτσι
|
||
ώστε ο αποδέκτης να μπορεί να απαντήσει αμέσως χωρίς να χρειάζεται να κοιτάξει στη δικτυακή βάση δεδομένων
|
||
για τις τωρινές πληροφορίες.
|
||
</p>
|
||
|
||
<p>
|
||
Για να αντιμετωπιστεί μία ευρεία γκάμα επιθέσεων, το I2P είναι πλήρως κατανεμημένο χωρίς κεντρικούς
|
||
πόρους - συνεπώς δεν υπάρχει κάποια κεντρική υπηρεσία που να κρατάει στατιστικά για την απόδοση και
|
||
την αξιοπιστία των routers στο δίκτυο. Επομένως, κάθε router θα πρέπει να διατηρεί προφίλ διάφορων
|
||
routers και είναι υπεύθυνο για την επιλογή των κατάλληλων κόμβων για να επιτύχει την ανωνυμία, την
|
||
απόδοση και την αξιοπιστία που χρειάζονται οι χρήστες, όπως περιγράφονται στη σελίδα
|
||
<a href="how_peerselection">επιλογής κόμβων</a>.
|
||
</p>
|
||
|
||
<p>
|
||
Το δίκτυο κάνει μεγάλη χρήση <a href="how_cryptography">κρυπτογραφικών τεχνικών και αλγορίθμων</a> -
|
||
μία πλήρης λίστα περιλαμβάνει 2048bit ElGamal κρυπτογράφηση, 256bit AES σε CBC λειτουργία με
|
||
PKCS#5 padding, 1024bit DSA υπογραφές, SHA256 συνάρτηση κατακερματισμού, 2048bit Diffie-Hellman
|
||
για την διαπραγμάτευση των συνδέσεων με πιστοποίηση από άκρο σε άκρο, και
|
||
<a href="how_elgamalaes">ElGamal / AES+SessionTag</a>.
|
||
</p>
|
||
|
||
<p>
|
||
Το περιεχόμενο που στέλνεται στο I2P κρυπτογραφείται από τρία επίπεδα garlic κρυπτογράφησης (χρησιμοποιείται
|
||
για την πιστοποίηση της αποστολής του μηνύματος στον παραλήπτη), tunnel κρυπτογράφησης (όλα τα μηνύματα
|
||
που περνάνε μέσα από ένα tunnel κρυπτογραφούνται από το gateway μέχρι το τέλος του tunnel) και
|
||
κρυπτογράφηση μέσα στο router από το επίπεδο μεταφοράς (π.χ. το TCP επίπεδο μεταφοράς χρησιμοποιεί
|
||
AES256 με εφήμερα κλειδιά).
|
||
</p>
|
||
|
||
<p>
|
||
Η κρυπτογράφηση από άκρη σε άκρη (I2CP) (εφαρμογή-πελάτη με εφαρμογή-εξυπηρετητή) απενεργοποιήθηκε
|
||
στην έκδοση 0.6; η κρυπτογράφηση από άκρη σε άκρη (garlic) (I2P router πελάτη με I2P router εξυπηρετητή)
|
||
από το router της Alice "a" μέχρι το router του Bob "h" παραμένει. Προσέξτε τους διαφορετικούς όρους χρήσης!
|
||
Όλα τα δεδομένα από το a μέχρι το h είναι κρυπτογραφημένη από άκρη σε άκρη, αλλά η I2CP σύνδεση μεταξύ του
|
||
I2P router και των εφαρμογών δεν είναι κρυπτογραφημένη από άκρη σε άκρη! Τα a και h είναι τα routers των
|
||
Alice και Bob, ενώ οι Alice και Bob στο παρακάτω γράφημα είναι οι εφαρμογές που τρέχουν πάνω από το I2P.
|
||
</p>
|
||
|
||
<div class="box" style="text-align:center;"><img src="_static/images/endToEndEncryption.png" alt="End to end layered encryption" title="Κρυπτογράφηση επιπέδων από άκρη σε άκρη." /></div>
|
||
|
||
<p>
|
||
Η συγκεκριμένη χρήση αυτών των αλγορίθμων περιγράφονται <a href="how_cryptography">αλλού</a>.
|
||
</p>
|
||
|
||
<p>
|
||
Οι δύο κύριοι μηχανισμοί που επιτρέπουν τη χρήση του δικτύου από άτομα που χρειάζονται ισχυρή ανωνυμία
|
||
είναι garlic routed μηνύματα με ρητή καθυστέρηση και πιο περιεκτικά tunnels για την υποστήριξη pooling
|
||
και mixing των μηνυμάτων. Αυτά προς το παρών είναι προγραμματισμένα για την έκδοση 3.0, αλλά garlic
|
||
routed μηνύματα χωρίς καθυστερήσεις και FIFO tunnels είναι ήδη διαθέσιμα. Επιπλέον, η έκδοση 2.0 του
|
||
I2P θα επιτρέπει στους χρήστες να το ρυθμίσουν και να το χρησιμοποιούν πίσω από περιορισμένες
|
||
δρομολογήσεις (μάλλον με έμπιστους κόμβους), όπως επίσης και την ανάπτυξη πιο ευέλικτων και ανώνυμων
|
||
μεταφορών.
|
||
</p>
|
||
|
||
<p>
|
||
Ευλόγως υπάρχουν κάποια θέματα σχετικά με την επεκτασιμότητα του I2P. Θα υπάρξει σίγουρα
|
||
ανάλυση στο μέλλον, αλλά η αναζήτηση κόμβων και η ενσωμάτωσή τους στο δίκτυο περιορίζεται
|
||
σε <code>O(log(N))</code> λόγω του αλγορίθμου της <a href="how_networkdatabase">δικτυακής βάσης δεδομένων</a>,
|
||
ενώ η ανταλλαγή μηνυμάτων από άκρη σε άκρη θα πρέπει να είναι <code>O(1)</code> (ελεύθερο κλίμακας),
|
||
καθώς τα μηνύματα φεύγουν σε K βήματα από το outbound tunnel και χρειάζονται άλλα K βήματα
|
||
για το inbound tunnel, με το K να μην είναι μεγαλύτερο από 3. Το μέγεθος του δικτύου (N) δεν έχει
|
||
κάποια επίπτωση.
|
||
</p>
|
||
|
||
<h2>Πότε;</h2>
|
||
<p>Το I2P αρχικά ξεκίνησε τον Φεβρουάριο του 2003 ως μία τροποποίηση του
|
||
<a href="http://freenetproject.org">Freenet</a> που θα επέτρεπε τη χρήση διαφορετικών μεταγωγών, όπως το
|
||
<a href="http://java.sun.com/products/jms/index.jsp">JMS</a>, έπειτα συνέχισε σαν αυτόνομο έργο ως
|
||
'anonCommFramework' τον Απρίλιο του 2003, καταλήγοντας σε I2P τον Ιούλιο, ξεκινώντας την σημαντική
|
||
υλοποίησή του τον Αύγουστο του 2003. Το I2P είναι προς το παρόν υπό ανάπτυξη, ακολουθώντας το
|
||
<a href="roadmap">roadmap</a>.
|
||
</p>
|
||
|
||
<h2>Ποιος;</h2>
|
||
<p>
|
||
Είμαστε μία μικρή <a href="team">ομάδα</a> που εκτείνεται σε αρκετές ηπείρους, δουλεύοντας πάνω
|
||
σε διαφορετικά μέρη του έργου. Είμαστε πολύ ανοιχτοί σε άλλους developers που θέλουν να
|
||
ασχοληθούν και άλλους που θέλουν να συνεισφέρουν με διάφορους τρόπους, όπως κριτικές, αξιολόγηση,
|
||
δοκιμή, την ανάπτυξη εφαρμογών για το I2P ή τεκμηρίωση. Ολόκληρο το έργο είναι ανοιχτό λογισμικό - το
|
||
router και το μεγαλύτερο μέρος του SDK είναι διαθέσιμα σε public domain άδεια με κάποιο μέρος του
|
||
κώδικα να είναι υπό την άδεια BSD και Cryptix, ενώ μερικές εφαρμογές όπως το I2PTunnel και το
|
||
I2PSnark είναι GPL. Σχεδόν τα πάντα είναι γραμμένα σε Java (1.5+), αν ορισμένες τρίτες εφαρμογές
|
||
είναι γραμμένες σε Python και άλλες γλώσσες. Ο κώδικας δουλεύει σε <a href="http://java.com/en/">Sun Java SE</a>
|
||
και άλλα Java Virtual Machines.
|
||
</p>
|
||
|
||
<h2>Που;</h2>
|
||
<p>
|
||
Όποιος ενδιαφέρεται θα πρέπει να μας βρει το κανάλι #i2p στο IRC (φιλοξενείται παράλληλα στα
|
||
irc.freenode.net, irc.postman.i2p, irc.freshcoffee.i2p, irc.welterde.i2p και irc.einirc.de).
|
||
Προς το παρόν δεν υπάρχουν κανονισμένες συναντήσεις για την ανάπτυξη, ωστόσο
|
||
<a href="meetings">υπάρχει ιστορικό διαθέσιμο</a>.
|
||
</p>
|
||
|
||
<p>
|
||
Ο τρέχοντας πηγαίος κώδικας είναι διαθέσιμος στο <a href="monotone.html">monotone</a>.
|
||
</p>
|
||
|
||
<h2>Επιπλέον Πληροφορίες</h2>
|
||
<p>
|
||
Δείτε το <a href="how_el.html">ευρετήριο της Τεχνικής Τεκμηρίωσης</a>
|
||
</p>
|
||
|
||
{% endblock %}
|