Harjoitustehtäväkierros 2: Tietoturva ja kuljetuskerros
T-110.2100 kurssihenkilökunta deadline Tiistai 17.3.2011 18:00
Johdanto
Tällä tehtäväkierroksella pääset tutustumaan tietoturvan CIA-malliin, to- teuttamaan wget1 -tyylisen sovelluksen HTTP:n päälle ja vertailemaan kul- jetuskerroksen protokollia.
Ensimäisessä tehtävässä tarkoituksena on selvittää mikä CIA-malli on ja esimerkkien kautta havainnollistaa sen käsitteitä.
Toisessa tehtävässä tavoitteena on toteuttaa sovellus joka hakee inter- netistä halutun tiedoston URL:n perusteella ja tallentaa sen tiedostoksi.
Vinkki: Tehtävää tehdessä on eduksi palauttaa mieleen edellisen tehtäväkier- roksen HTTP-liikennöintiin liittyvät asiat.
Kolmannessa tehtävässä tutustutaan kuljetuskerroksen protokolliin, TCP:hen ja UDP:hen sekä niiden toimintaan.
Tehtävä palautetaan Rubyric-järjestelmään kurssin Noppa-sivuilta löy- tyvien ohjeiden mukaisesti. Kiinnitä huomiota palautuksen formatointiohjeisi- in. Väärästä tiedostoformaatista tai merkistöstä sakotetaan pisteitä!
1 Tietoturva (CIA-malli) (6p)
A Kerro lyhyesti mitä CIA-mallin kolme kohtaa tarkoittavat. (2p)
B Kuvaile kolme erilaista hyökkäysmenetelmää, kukin menetelmä keskit- tyen yhteen CIA-mallin kolmesta kohdasta. Kohteena hyökkäykselle on Aalto yliopiston Oodi-järjestelmä. Käytä menetelmien kuvauksis- sa Alice-Bob-Eve -nimeämiskäytäntöä 2. (4p)
1http://www.gnu.org/software/wget/manual/wget.html
2http://en.wikipedia.org/wiki/Alice_and_Bob
1
2 Ohjelmallinen tiedoston haku (8p)
Kirjoita komentoriviohjelma joka hakee vapaavalintaisen tiedoston HTTP- palvelimelta ja tallentaa sen samannimisenä tiedostona. Ohjelman ajaminen tulisi tapahtua samoin kuten wget -sovelluksen eli
"wget http://server.com/folder/le". Ohjelmointikielenä voi käyttää joko Javaa, Pythonia tai C:tä. Ohjelman rakenteen tulee täyttää seuraavat kriteerit:
i. Ohjelman on käytettävä SOCKET-rajapintaa, ei apukirjastoja.3 ii. Ohjelman on selvitettävä palvelimen osoite käsin.4
iii. Ohjelma voi joko käyttää HTTP/1.0 tai HTTP/1.1 -määrittelyä
iv. Ohjelman on tarkistettava HTTP Response Code, ilmoitettava se käyt- täjälle ja toimittava sen mukaisesti.
v. Ohjelman on tulostettava palvelimelta vastauksena tulevat otsikkoken- tät.
Muutama vinkki:
• Lue SOCKET:sta tuleva syöte tavuina, älä merkkeinä.5
• Host -otsikkokenttä ei ole HTTP/1.0 -määrittelyn mukainen, mutta yleisesti tarpeellinen.
• Kirjoita tiedostoon vain sisältö, ei otsikkotietoja.
• HTTP/1.0 palauttaa Content-Length -otsikkotiedon, jolloin voit ladata vain tarvittavan määrän tavuja SOCKET:sta.6
• Muista sulkea tiedosto ja yhteys lopuksi.
Anna vastauksesi kommentoituna lähdekoodina ja lisää vastauksesi perään ohjeet ohjelmasi ajamiseen Niksulan työasemilla. Muista myös lähdekoodin ja kommenttien kanssa vastauksen formatointiohjeet.
Tehtävien jatkuvuus: Tämän tehtävän vastauksena palautettava lähdekoodi voi hyvinkin toimia pohjana myöhemmille tehtäville, joten huomioi se palau- tuksesi laadussa.
3http://download.oracle.com/javase/6/docs/api/java/net/Socket.html
4http://download.oracle.com/javase/6/docs/api/java/net/InetAddress.html
5http://download.oracle.com/javase/6/docs/api/java/io/BueredInputStream.html
6Paremman toimivuuden takaamiseksi voit väittää käyttäväsi protokollan versiota 1.0 ja silti antaa Host-otsikkokentän).
2
3 Kuljetuskerros (6p)
A Ohjelmoija on kirjoittanut saman sovelluksen käyttäen kuljetuskerroksen protokollana TCP:tä sekä UDP:tä. Millä tavoin on pakettien katoami- nen huomioitava niin TCP:tä kuin UDP:tä käyttävässä sovelluksen ver- siossa? (2p)
B Mikä on SACK, ja millä tavoin se vaikuttaa TCP-liikenteeseen? (2p) C Jos TCP:n window scale -optio ei olisi käytössä, kuinka suuren osuuden
kaistasta saisi käyttöön 24MBit linkistä jonka RTT on 550ms? Perustele vastauksesi. (2p)
Materiaalia
• https://noppa.tkk./noppa/kurssi/t-110.2100/etusivuKurssin kotisivut
• http://www.cse.tkk./Tietoliikenne/Opinnot/Ohjeet/ T-110 -kurssien yleisiä ohjeita
• http://opetuki2.tkk./p/top/ Teekkarin ohjauspakki
• Internetin hakupalvelut (jos et löydä, googlaa)
3