Ročníkový projekt

Vývoj VPN protokolu a virtuálneho sieťového rozhrania

Meno študenta
Anton Shevchuk
Vedúci projektu
RNDr. Jaroslav Janáček, PhD.

Cieľ projektu

Cieľom projektu je navrhnúť a implementovať vlastný vzdelávací VPN protokol, ktorý umožní vytvoriť zabezpečené spojenie medzi klientom a serverom, vykonať autentifikáciu, odvodiť reláciové kľúče a prenášať IPv4 pakety cez šifrovaný tunel.

Projekt sa nezakladá na hotovom VPN protokole. Implementácia je postavená postupne v jazyku Rust tak, aby bolo možné sledovať jednotlivé časti systému: UDP transport, formát správ, kryptografiu, virtuálne sieťové rozhranie TUN, smerovanie a testovanie na reálnych paketoch.

Aktuálna implementácia - rust_network

Hlavná časť práce je v repozitári rust_network. Program je jeden binárny súbor s režimami server, client a routes. Cieľová platforma je Linux.

Architektúra riešenia

Klient a server najskôr vykonajú krátky handshake. Po úspešnom overení PSK si obe strany vytvoria reláciu, odvodené kľúče a začnú spracovávať pakety z TUN rozhrania. Každý paket z TUN sa overí ako IPv4 paket, zašifruje sa a odošle cez UDP. Na druhej strane sa rámec autentifikuje, dešifruje a zapíše späť do TUN rozhrania.

Routing nie je aplikovaný automaticky. Program zatiaľ tlačí príkazy, ktoré je možné ručne spustiť počas Linux testu. Tento prístup znižuje riziko, že vzdelávací prototyp nechtiac zmení sieťové nastavenia systému.

Bezpečnostný model

Aktuálna verzia používa PSK režim. Šifrované rámce sú autentifikované pomocou AEAD a hlavička rámca je súčasťou autentifikovaných dát. Implementácia obsahuje kontrolu veľkosti rámcov, validáciu IPv4 paketov a sliding replay window pre odmietanie opakovaných alebo príliš starých paketov.

Ide o vzdelávací prototyp, nie produkčný VPN systém. Súčasná PSK schéma neposkytuje forward secrecy. Ako ďalší krok je možné doplniť certifikáty alebo dočasnú výmenu kľúčov.

Testovanie

Projekt obsahuje jednotkové a integračné testy pre kódovanie rámcov, handshake, šifrované správy, replay ochranu, kontrolu IPv4 paketov a výstup CLI príkazov. Samostatná dokumentácia opisuje aj plán Linux smoke testu s reálnym TUN rozhraním.

Predchádzajúca práca - zimný semester

V zimnom semestri vznikol repozitár rust_demo, ktorý slúžil ako príprava na hlavnú implementáciu. Obsahoval menšie demonštračné projekty pre TUN rozhranie, UDP komunikáciu, preposielanie paketov medzi TUN a UDP a základné použitie symetrickej kryptografie.

Tieto experimenty nie sú finálnou VPN implementáciou. Tvoria technický základ, z ktorého vychádza aktuálny projekt rust_network.

Odkazy

Reporty

Nasledujúce reporty patria k prípravnej práci zo zimného semestra.