Rețea mixtă [1] ( Rețea mixtă în engleză ) - protocoale de rutare care creează o conexiune dificil de urmărit folosind un lanț de servere proxy cunoscute sub numele de mixuri, care primesc mesaje de la mulți utilizatori, le amestecă și le trimit mai departe în ordine aleatorie către următoarea destinație (poate într-un alt nod mix). Acest lucru întrerupe legătura dintre sursa mesajului și destinatar, ceea ce face mai dificilă interceptarea mesajului în comunicarea de la capăt la capăt. Mai mult, fiecare nod cunoaște doar informații despre nodul anterior și adresa următorului destinatar. Acest lucru face rețeaua rezistentă la noduri false [2] .
Fiecare mesaj este criptat pentru fiecare proxy folosind un sistem criptografic cu cheie publică. Rezultatele criptării sunt aranjate ca Matryoshka, cu excepția faptului că toate elementele au aceeași dimensiune. Fiecare nod al rețelei își dezvăluie propriul strat de matrioșcă. Astfel, el primește informații despre viitorul destinatar. Chiar dacă toate nodurile, cu excepția unuia, sunt compromise, identitatea va fi încă greu de declasificat.
Conceptul de rețea mixtă a fost descris pentru prima dată în 1981 [3] . Aplicații precum Tor și Mixmaster se bazează pe același principiu.
David Chaum a publicat conceptul de rețele mixte în 1979 în articolul „Poștă electronică de negăsit, adrese de retur și pseudonime digitale” [4] . Acest articol a fost pregătit pentru o teză de master, la scurt timp după ce a fost introdus pentru prima dată în domeniul criptografiei cu criptografie cu cheie publică de către Martin Hellman, Whitfield Diffie și Ralph Merkle. În timp ce criptografia cu cheie publică a oferit securitatea informațiilor, Chaum credea că există vulnerabilități de confidențialitate personală în metadatele găsite în mesaje. Unele dintre vulnerabilitățile care au permis încălcări ale confidențialității personale includ momentul în care mesajele trimise și primite, dimensiunea mesajelor și adresa expeditorului inițial.
Să definim expeditorul ca și destinatarul ca . Luați în considerare trimiterea unui mesaj printr-o rețea cu un singur nod. își pregătește mesajul în mai multe etape. În primul rând , adaugă o valoare aleatorie mesajului său. Apoi codifică mesajul cu cheia publică , adaugă adresa destinatarului și, în final, codifică mesajul cu cheia publică . Nodul, după ce a primit mesajul, îl decriptează folosind cheia sa privată, obținând astfel informații despre adresa finală și trimite mesajul destinatarului [4] .
Expeditorul preia cheia publică și, folosind-o, își criptează mesajul după ce i-a adăugat zgomot aleatoriu .
Adresa destinatarului (A) și un șir aleatoriu R 1 sunt adăugate celui primit în primul mesaj . Rezultatul este criptat folosind cheia publică a ultimei gazde .
Aceste operații sunt efectuate pentru toate N noduri. Primești un mesaj de genul:
În plus, acest mesaj este decriptat trecând prin fiecare nod, iar mesajul ajunge la destinatar , pe care îl decriptează cu cheia sa privată .
Sunt necesare șiruri aleatorii pentru a preveni ghicirea mesajelor. Se presupune că crackerul poate vizualiza toate mesajele primite și trimise. Dacă are o idee despre conținutul mesajului, își poate cripta mesajul cu cheia publică și poate compara rezultatul cu mesajul peeed. Astfel, atacatorul poate afla conținutul mesajului. Cu adăugarea unui șir aleator, acest lucru devine imposibil. Algoritmul pentru adăugarea unui șir aleator se numește Salt . Chiar dacă crackerul ghiceste mesajul nostru, el nu va putea verifica corectitudinea presupunerii sale.
Mai mult, este necesar să se poată răspunde înapoi, păstrând identitatea expeditorului.
Soluția la această problemă este de a genera o adresă de retur de neurmărat , unde este adresa reală, este o cheie publică unică generată doar pentru cazul curent și care se comportă ca un șir aleatoriu pentru a preveni posibilitatea de a compromite adresa. Apoi trimite adresa ca parte a mesajului conform algoritmului descris mai sus. Destinatarul trimite o scrisoare de răspuns în formular la nodul M, iar acest nod transformă mesajul în formularul .
Acest nod folosește șirul de biți ca o cheie pentru a re-codifica o parte a mesajului . Doar A poate decoda mesajul deoarece a generat atât cheile , cât și . Cheia suplimentară asigură că nodul nu va putea vedea conținutul mesajului de răspuns.
Ca exemplu, luați în considerare următoarea secvență de acțiuni. Mesaj de la :
Mesajul de raspuns de la :
Unde: = cheie publică B = cheie publică gazdă .
Mixmaster este o rețea de mesagerie anonimă de tip II care trimite mesaje în rafale de dimensiuni fixe și le reordonează, împiedicând spectatorii să urmărească mesajele primite și trimise. Aceasta este o implementare a Mix Network. Mixmaster a fost scris inițial de Lance Cottrell și întreținut de Len Sassaman . Peter Palfreider este menținătorul actual. Actualul software Mixmaster poate fi compilat și pentru a procesa mesaje Cypherpunk ; sunt necesare ca blocuri de răspuns pentru serverele nym .
În modul non-interactiv, Mixmaster citește un mesaj din intrarea sa standard sau dintr-un fișier. Adresa de destinație și fișierul de intrare pot fi specificate pe linia de comandă. Dacă nu este specificată nicio adresă pe linia de comandă, este de așteptat ca fișierul de intrare să conțină un mesaj cu anteturi de e-mail [5] .
În timp ce rețelele mixte oferă securitate chiar dacă un atacator poate vedea întreaga cale, amestecarea nu este o modalitate absolut ideală de a rămâne anonim. Atacatorii pot efectua atacuri de corelație îndelungate și pot urmări expeditorul și receptorul pachetelor [6] [7] .
Un atacator poate efectua un atac pasiv prin adulmecarea traficului în și în afara unei rețele mesh. O analiză a timpilor de sosire între mai multe pachete vă poate oferi informațiile de care aveți nevoie. Deoarece nu se fac modificări la pachete, un astfel de atac este dificil de detectat. În cel mai rău caz al unui atac, presupunem că atacatorul poate observa toate legăturile rețelei, iar infrastructura rețelei mixte este cunoscută.
Un pachet de pe linia de intrare nu poate fi corelat cu un pachet de pe linia de ieșire pe baza informațiilor despre momentul în care a fost primit pachetul, dimensiunea pachetului sau conținutul pachetului. Corelarea pachetelor bazată pe sincronizarea pachetelor este împiedicată prin grupare, iar corelarea bazată pe conținut și dimensiunea pachetului este împiedicată prin criptare și, respectiv, umplutură de pachete.
Intervalele dintre pachete, adică diferența de timp dintre observarea a două pachete consecutive pe două legături de rețea, sunt utilizate pentru a determina dacă aceste legături au aceeași conexiune. Criptarea și umplutura nu afectează intervalul dintre pachete asociat cu același flux IP. Secvențele de intervale de pachete variază foarte mult între conexiuni, de exemplu, când navigați pe web, traficul are loc în rafale. Acest fapt poate fi folosit pentru a identifica compusul [3] .
Atacurile active sunt efectuate prin introducerea de pachete țintite cu semnături de timp unice [8] . Un atacator poate efectua atacuri pentru a încerca să identifice aceste pachete pe alte legături de rețea. Este posibil să nu poată crea pachete noi din cauza cunoștințelor necesare ale cheilor simetrice în toate mixerele ulterioare.
Spațiul mare poate fi creat prin trimiterea unui număr mare de pachete consecutive către fluxul țintă. De exemplu, simularea trimite 3000 de pachete către fluxul țintă. Pe măsură ce numărul de pachete consecutive scăzute crește, eficiența protecției scade semnificativ.
Atacatorul poate crea explozii artificiale. Acest lucru se realizează prin crearea unei semnături din pachete artificiale, păstrându-le în canal pentru o anumită perioadă de timp și apoi eliberându-le pe toate odată. Securitatea este slăbită și un atacator poate determina fluxul țintă. Există și alte măsuri de protecție care pot fi luate pentru a preveni acest atac. O astfel de soluție ar putea fi algoritmii de umplutură adaptivă. Cu cât sunt întârziate mai multe pachete, cu atât este mai ușor de determinat comportamentul și, prin urmare, poate fi asigurată o protecție mai bună [7] .