Files
i2p.www/www.i2p2/pages/how_intro_el.html

205 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "_layout_el.html" %}
{% block title %}Μια μικρη εισαγωγη{% endblock %}
{% block content %}
<h2>Μια Μικρή Εισαγωγή στο Πως Δουλεύει το I2P</h2>
<p>
Το I2P είναι ένα πρόγραμμα για τη δημιουργία, την ανάπτυξη και τη διατήρηση ενός δικτύου
που υποστηρίζει ασφαλή και ανώνυμη επικοινωνία. Τα άτομα που χρησιμοποιούν το I2P μπορούν
να ελέγξουν το ποσοστό μεταξύ της ανωνυμίας, της αξιοπιστίας, της χρησιμοποίησης του
bandwidth και της καθυστέρησης. Δεν υπάρχει κάποιο κεντρικό σημείο στο δίκτυο στο οποίο
μπορεί να ασκηθεί πίεση ώστε να διακινδυνέψει η ακεραιότητα, η ασφάλεια ή η ανωνυμία του
συστήματος. Το δίκτυο υποστηρίζει δυναμική αναδιαμόρφωση ως απάντηση σε διάφορες επιθέσεις
και έχει σχεδιαστεί ώστε να χρησιμοποιεί επιπλέον πόρους όταν αυτοί γίνονται διαθέσιμοι.
Φυσικά, όλες οι πτυχές του δικτύου είναι ανοιχτές και ελεύθερα διαθέσιμες.
</p>
<p>
Εν αντιθέσει με άλλα ανώνυμα δίκτυα, το I2P δεν προσπαθεί να παρέχει ανωνυμία κρύβοντας τον
αποστολέα ενός μηνύματος αλλά όχι τον παραλήπτη, και αντίστροφα. Το I2P έχει σχεδιαστεί ώστε
να επιτρέπει σε κόμβους που χρησιμοποιούν το I2P να επικοινωνούν μεταξύ τους ανώνυμα &mdash;
και ο αποστολέας και ο παραλήπτης είναι μη αναγνωρίσιμοι μεταξύ τους αλλά και σε τρίτους.
Για παράδειγμα, σήμερα υπάρχουν και ιστοσελίδες μέσα στο 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 %}