På denne siden:
1  Plan for seminaret
2  tcpdump og Wireshark
3  Kryptering
4  Proxy
5  Referanser

Seminar III: Datasikkerhet (nettverk, TCP, kryptering, proxy)

Forkunnskapskrav: grunnleggende systemadministrasjon fra CLI, grunnleggende Git og Github, Go moduler, go build, go test og grunnleggende programmering i Go (forstå package, import, func main() og noen funksjoner fra pakker fmt, os, io, log, bufio, math, bytes, strings, strconv, net, sync).

Aktivitetene og mål på seminaret III er:

VIKTIG! Det kan være feil i all eksempelkode, derfor er det viktig å teste koden både manuelt og eventuelt med enhetstester. Det er ikke garantert at eksemplene som er beskrevet her, vil gi nøyaktig samme output på deres vertssystemer. Instruksjonene som er gitt i Seminar III er ikke like detaljerte som i Seminarene I og II. Det forventes at studentene skal forsøke å finne løsning selv i tilfeller hvor noen av detaljene i instruksjonene er utelatt.

1 Plan for seminaret

Plan for seminar I
Dato Tid Aktivitet Godkjenningskrav
17.04 (aud B1 018) 8:15 - 8:30 Introduksjon og registrering.
17.04 8:30 - 9:00 Vi danner en adskilt gruppe for de som har utfordringer med installasjon og konfigurasjon av programvaren på sin platform. De som har fått sin datamaskin konfigurert, oppfordres til å bidra til at andre får det gjort. Temaene for dette seminaret blir implementering av kommunikasjonssesjoner mellom to eller flere noder, kryptering og overvåkning.
17.04 9:15 - 9:30 Presentasjon av programvare for overvåkning av nettverkstrafikk.
17.04 9:30 - 10:00 tcpdump og Wireshark (oppgavesett #1) Demonstrere at man kan sette opp et nettverk ved hjelp av Docker kontainere (finne IP adresser til kontainere og bestemme seg for portnummer for at prosessene kan samarbeide mellom kontainere). Konfigurere og utføre tcp_client.go og tcp_server.go. Demonstrere at man kan fange opp pakker fra trafikken mellom klient- og serverprosesser, som utfører i forskjellige Docker kontainere.
17.04 10:15 - 11:00 Fortsetter med tcpdump og Wireshark (oppgavesett #2)
17.04 11:15 - 12:00 Kryptering (oppgavesett #2) Demonstrere at man forstår og kan implementere primitiv kryptering i en gitt kodebase.
21.04 (aud B1 007) 8:15 - 8:30 Proxy-server (oppgavesett #3) Demonstrere at man forstår og kan konfigurere en "dum" proxyserver og fange datapakker som går gjennom en virtuell instans av Linux operativsystem (Docker kontainer).
21.04 8:30 - 9:00 Fortsetter med Proxy-server (oppgavesett #3)
21.04 09:15 - 10:00 Fortsetter med Proxy-server (oppgavesett #3)
21.04 10:15 - 12:00 Godkjenning

2 tcpdump og Wireshark

Wireshark er et verktøy for overvåkning av nettverkstrafikk mellom noder i et nettverk. tcpdump er et kommandolinjeverktøy for samling av datapakkene sendt mellom noder i et nettverk. I dette seminaret skal tcpdump brukes for å fange opp datapakker sendt mellom to virtuelle noder i et virtuelt nettverk innen Docker applikasjonen. Wireshark skal brukes for å vise frem pakkefangst på en brukbar måte på vertssystemet. Vertssystemet her betegner det systemet som er installert på brukerens datamaskin (i vår gruppe er det nesten utelukkende MS Windows eller macOS). Virtuelle noder betegner kontainere skapt fra en image i Docker applikasjonen, som utfører på vertssystemet (se Figur 1).

Oversikt over Docker kontainere for Seminar III.

Figur 1. Oversikt over Docker kontainere for Seminar III.

Neste delen av oppgavene gjelder "sniffing" ved hjelp av tcpdump. "Sniffing" skal gjennomføres i kontainener bob.

For flere detaljer om bruken av tcpdump kommandolinjeverktøyet se dokumentet i Canvas under Moduler Chapter 6_ Packet Analysis on the Command Line _ Practical Packet Analysis, 3rd Edition.pdf (lenken krever autentisering i Feide).

Oppgaver for Godkjenning

3 Kryptering

Som dere fant ut i forrige avsnittet, så kan alle data, som sendes over et nettverk som ren tekst, sees av alle noder dataene skal gjennom. Slike noder kan være rutere, men etthvert nettverk kan også deployere noder med andre kapabiliteter enn kun ruting. For eksempel er det vanlig å deployere såkalte "proxy-servere" i et nettverk for større organisasjoner. Slike "proxy-servere" kan filtrere og overvåke trafikken mellom Internett og organisasjonsnettverk, samt også fungere som mellomlagringsplass (cache) for informasjon som ofte forespørres i organisasjonsnettverket.

La oss først se på en måte vi kan gjøre det vanskeligere for uvedkommende å tolke våre data, - kryptering. Kryptering er sterkt forankret i matematikken, og kan være avansert, men prinsippene for kryptering er forholdsvis enkle. For at andre ikke skal lese våre meldinger, må vi endre de slik (chiffrere) at de er uleselige. En betingelse er at den som skal kunne lese vår melding, trenger å gjøre den leselig igjen (dechiffrere).

Så et enkelt forløp er at RENTEKST gjøres til CHIFFERTEKST ved hjelp av CHIFFER (regler for endring av tekst eller informasjon generelt) og så kan CHIFFERTEKST igjen trasformeres til RENTEKST ved hjelp av den samme CHIFFER. Så meningen med kryptering er å skjule meningen i meldingen og ikke selve meldingen. Det er to måter å endre tekst basert på symboler (ofte en alfabet) på, - substitusjon (erstatter hvert symbol med en annen symbol) og transponering (endrer ikke symbolene, men endrer posisjoner til symbolene). Vi skal kun se på det enkleste tilfelle av substitusjon, hvor vi skal ta et utgangspunkt i et posisjonsbasert alfabet (mengde av symboler) og ersatte hvert symbol i teksten med et symbol i en annen posisjon i alfabetet, som er relatert til symbolets posisjon.

For eksempel, hvis alfabetet er abcde, kan lage en CHIFFER slik at hvert symbol i teksten erstattes med et symbol 4 posisjoner til høyre fra symbolets posisjon i alfabetet. Siden alfabetet er endelig, må vi også legge inn en regel om rotasjon, dvs. hvis summen av posisjon til symbolet i teksten og antall posisjoner (4 i vårt eksempel), vi har valgt å forskyve teksten med er større enn lengden på alfabetet må vi begynne å telle fra begynnelsen igjen, dvs. fra venstre siden. For eksempel, hvis RENTEKST er ada, så CHIFFERTEKST basert på vår CHIFFER ece, siden 4 posisjoner fra a er e og 4 posisjoner fra d er c, på grunn av at det er en posisjon fra d til e og så teller vi 3 posisjoner til som gir oss en c.

Implementasjon av en slik forskyvningsalgoritme ligger i REP03: https://github.com/uia-worker/is105sem03.git

Oppgaver for Godkjenning

4 Proxy

I denne delen av oppgaven skal dere konfigurere en proxy-server. Som nevnt i forrige kapittel, en "proxy-servere" kan brukes for å filtrere og overvåke trafikken mellom Internett og et organisasjonsnettverk, samt også fungere som mellomlagringsplass (cache) for informasjon som ofte forespørres i organisasjonsnettverket. I vårt eksempel vil vi kun se på en "dum" "proxy-server", som kopierer alt den får fra en node, til en annen node. Med dette mønstre kan man relativt enkelt implementere både filtrering og caching. Et slik mønster kan også være et godt utgangspunkt for å bygge en "chat-server", hvor da "proxy-serveren" fungerer som en sentral master.

Den distribuerte applikasjonen, som dere skal konfigurere og implementere skal kunne gi mulighet til Alice å sende en linje til Bob gjennom en Coach (proxy) med temperaturmåling på formatet som vi allerede kjenner fra oppgaven minyr


Kjevik;SN39040;18.03.2022 01:50;6

Applikasjonen skal være en simulering av et nettverk, som kan inneholde diverse noder (proxy, rutere, gateways osv.) som alle kan overvåke dataene som de mottar og sender videre til neste node. En overvåker kan installere en sniffer av typen tcpdump på nodene som er mellom Alice og Bob og lese meldingene som Alice sender til Bob. Applikasjonen skal implementere en enkel kryptering, som gjør det vanskeligener for et mellomledd å få innsikt i innholdet i meldingene. Coach kan fortsatt se meldingene, men de vil umiddelbart ikke gi noen mening. Coach trenger å finne en chiffer, for å dechiffrere meldingene. Se Figur 2 for en oversikt.

Oversikt nettverksapplikasjonen for Seminar III.

Figur 2. Oversikt nettverksapplikasjonen for Seminar III.

Oppgaver for Godkjenning

Koden i figurene og REP01, REP02, REP03 og REP04 er delvis basert på (Woodbeck, 2021).

SLUTT.

5 Referanser