Hálózatbiztonság
(adatkapcsolati réteg eleje) |
(ethernet) |
||
212. sor: | 212. sor: | ||
** Általában egy keretre jut egy magasabb szintű adatcsomag, de szükség lehet arra, hogy egy-egy csomagot több keretre bontsunk szét. |
** Általában egy keretre jut egy magasabb szintű adatcsomag, de szükség lehet arra, hogy egy-egy csomagot több keretre bontsunk szét. |
||
* ''Adatkapcsolati protokoll'': meghatározza a ''keret''ek formátumát és azt, hogyan kezelik őket ill. a ''kapcsolat''okat a ''csomópont''ok. |
* ''Adatkapcsolati protokoll'': meghatározza a ''keret''ek formátumát és azt, hogyan kezelik őket ill. a ''kapcsolat''okat a ''csomópont''ok. |
||
− | ** Pl.: adatátviteli hibák észlelése; szükség esetén újraküldés; folyamszabályozás; közeghozzáférés-vezérlés. |
+ | ** Garantál megbízhatóságot? |
+ | *** Csomag (keret) kézbesítését, integritását? |
||
+ | **** Hibadetektálás vagy hibajavítás. |
||
+ | **** Nyugtázás, újraküldés. |
||
+ | *** QoS-t? |
||
+ | *** Az átvitt adatokban? |
||
+ | *** Az infrastruktúrát illetően? |
||
+ | ** Broadcast vagy pont-pont? |
||
+ | *** Hogyan működik a címzés? |
||
+ | *** Közeghozzáférés-vezérlés (MAC: medium access control)? Módszerek: |
||
+ | **** Csatorna-felosztás (pl. frekvenciaosztásos vagy kódosztásos multiplexelés); |
||
+ | **** véletlen hozzáférés (pl. Ethernet) |
||
+ | ***** (carrier sensing, collision detection); |
||
+ | **** felváltva adás (pl. Token Ring). |
||
+ | ** Folyamszabályozás: a küldő ne küldjön gyorsabban, mint ahogy a fogadó fel tudja dolgozni. |
||
+ | ** Duplexitás (half duplex, full duplex). |
||
+ | |||
+ | '''Az adatkapcsolati réteg feladata: adatkeretek szállítása két szomszédos (közvetlenül összekapcsolt) csomópont között.''' |
||
+ | Az adatkapcsolati réteg fölött elhelyezkedő ''hálózati réteg'' már egymástól távoli csomópontok között szállít adatcsomagokat; |
||
+ | az útvonalon elhelyezkedő csomópontok (routerek) közötti szakaszokon más-más adatkapcsolati rétegbeli protokollt (vagyis hálózati technológiát) is használhatunk. |
||
+ | Ideális esetben a hálózati rétegben működő programok semmit sem tudnak (és semmit sem kell, hogy tudjanak) az adatkapcsolati réteg sajátosságairól. |
||
+ | |||
+ | : Analógia: ha Budapestről az Orkney-szigetekre akarunk eljutni (mi vagyunk a hálózati adatcsomag analógiája), akkor először eltaxizunk a reptérre (a taxi egy adatkapcsolati és fizikai rétegbeli protokoll); aztán repülővel elmegyünk mondjuk Edinburgh-ba; onnan vonattal Invernessbe; ott autót bérlünk és elautózon John o' Groats-ig; itt pedig az autóval felhajtunk a kompra, ami autóstul elvisz Burwickbe. |
||
+ | : Ez már az Orkney-szigetek egyikén található, vagyis célba értünk. Az utolsó szakaszon ''enkapszuláció'' is történt: az egyik adatkapcsolati rétegbeli keretet (az autót, benne a hálózat csomaggal, vagyis velünk) egy az egyben beraktuk egy másik technológiájú adatkapcsolati rétegbeli keretbe (a kompba). |
||
+ | : A komp-vonal két végpontja között a belső keret (az autó) változatlan formában utazott; a távoli végpontnál kicsomagoltuk a külső keretből a belsőt, amely folytatta útját, és végül célba juttatta a hálózati csomagot (az utast). |
||
Néhány elterjedt adatkapcsolati rétegbeli protokoll: |
Néhány elterjedt adatkapcsolati rétegbeli protokoll: |
||
− | * Ethernet ([http://en.wikipedia.org/wiki/IEEE_802 IEEE 802.*]) |
+ | * Ethernet ([http://en.wikipedia.org/wiki/IEEE_802 IEEE 802.3*]) |
* 802.11 WLAN (WiFi); |
* 802.11 WLAN (WiFi); |
||
* Token Ring (ritka); |
* Token Ring (ritka); |
||
+ | * FDDI (elavult); |
||
* PPP (Point to Point protocol); |
* PPP (Point to Point protocol); |
||
* [http://en.wikipedia.org/wiki/LAPB LAPB] (az X.25 adatkapcsolati rétegbeli protokollja); |
* [http://en.wikipedia.org/wiki/LAPB LAPB] (az X.25 adatkapcsolati rétegbeli protokollja); |
||
224. sor: | 225. sor: | ||
* [http://en.wikipedia.org/wiki/HDLC HDLC] (egy ősprotokoll; a LAPB pl. ennek a leszármazottja); |
* [http://en.wikipedia.org/wiki/HDLC HDLC] (egy ősprotokoll; a LAPB pl. ennek a leszármazottja); |
||
* [http://en.wikipedia.org/wiki/ARCnet ARCnet]. |
* [http://en.wikipedia.org/wiki/ARCnet ARCnet]. |
||
+ | |||
+ | Az adatkapcsolati rétegbeli protokoll megvalósítása általában hardveres, és a hálózati kártyában található. |
||
+ | |||
+ | === Ethernet === |
||
+ | |||
+ | "''Ethernet, n:'' a device used to catch the etherbunny." |
||
+ | |||
+ | * Majdnem biztosan a legelterjedtebb adatkapcsolati rétegbeli protokoll (és fizikai közeg). |
||
+ | * Minden csomópontnak (pontosabban: minden hálózati interfésznek) elvileg globálisan egyedi hatbájtos ''MAC-címe'' van. |
||
+ | ** Notációk: aa:bb:cc:dd:ee:ff (Unix); AA-BB-CC-DD-EE-FF (Windows); aabb.ccdd.eeff (Cisco). |
||
+ | ** A hardvergyártó állítja be, de ma már szinte mindig átírható szoftverből. |
||
+ | ** A címek strukturálatlanok (nincs pl. a hálózat topológiájából adódó hierarchia). |
||
+ | *** Mindazonáltal az első 24 bit azonosítja a gyártót. |
||
+ | * Broadcast ("üzenetszórásos") elven működik. |
||
+ | ** Minden, az adott ''szegmensben'' levő kártya ("adapter") minden keretet megkap; a címzés alapján dönti el, kell-e vele foglalkoznia. |
||
+ | ** Speciális cím: ff:ff:ff:ff:ff:ff (csupa egyes): mindenkinek szóló üzenet. |
||
+ | * Szigorúan véve nem Ethernet-specifikus, de ide tartozik: [[IP-alapok#ARP_.28Address_Resolution_Protocol.29|ARP]] (IP címhez keres MAC-címet). |
||
+ | * Keretformátum kb: |
||
+ | *# "Preamble" (a fizikai réteg sajátosságain alapul; könnyen észlelhető "keret eleje"-jelzés, 8 byte). A két végpont óráinak (órajelének) szinkronizálást is segíti. |
||
+ | *# Célcím (6 byte); |
||
+ | *# Forráscím (6 byte); |
||
+ | *# Hálózati rétegbeli protokoll azonosítója (2 byte; pl. IP, IPX, Decnet stb.); |
||
+ | *# Adatok (max. 1500 byte); |
||
+ | *# Ellenőrző összeg (CRC, 4 byte). |
||
+ | |||
+ | ==== Eszközök (hub, bridge, switch stb.) ==== |
||
+ | |||
+ | * Repeater: két fizikai szegmenst köt össze bit-szinten. |
||
+ | ** Ha az egyik interfészén megjelenik egy bit, azt kiküldi a másik interfészén. |
||
+ | ** Lényegében egy erősítő: a csillapított jel helyett egy szép új jel jelenik meg a másik interfészen. |
||
+ | ** A két fizikai szegmens egyetlen logikai szegmenst (collision domaint) alkot: nem adhat egyszerre két csomópont akkor sem, ha a repeater két oldalán vannak és a címzettjeik is a velük azonos oldalon találhatóak. |
||
+ | * Hub: sokportos repeater. |
||
+ | * Bridge: két fizikai szegmenst köt össze keretek szintjén. |
||
+ | ** Az egyik interfészen bejövő keretet megismétli a másik interfészen. |
||
+ | ** Megtanulja, melyik MAC-címek melyik interfész felé vannak, és csak akkor adja tovább a keretet, ha szükséges (a címzett a másik oldalon van, vagy broadcast keretről van szó). |
||
+ | ** Két különböző, de alapvetően Ethernet-szerű hálózat közé is tehető bridge: pl. vezetékes Ethernet és WiFi vagy Token Ring. |
||
+ | * Switch: sokportos bridge. |
A lap 2012. február 29., 15:56-kori változata
Miről lesz szó? (Hozzávetőleges tematika)
- Elméleti alapok: hitelesítés, hozzáférésvezérlés stb.
- Elterjedt protokollok működése, hozzájuk kapcsolódó biztonsági problémák, klasszikus támadások
- ISO/OSI hálózati referenciamodell
- Fizikai és adatkapcsolati réteg: Ethernet, WiFi
- Hálózati réteg: IP, ICMP, ARP
- Szállítási réteg: TCP, UDP
- Alkalmazási réteg: DNS, SMTP, FTP, HTTP (és webalkalmazások), SSL, SSH
- Vírusok, férgek, botnetek
- Single Sign On
Tartalomjegyzék
|
1 Hitelesítés
1.1 Kriptográfiai alapok
Alapfogalmak:
- Plaintext: titkosítás nélküli szöveg vagy adat.
- Ciphertext: titkosított szöveg vagy adat.
- Cipher: titkosítóalgoritmus (a titkosítás valamely konkrét módszere).
- Kód és cipher közötti különbség (noha a hétköznapi nyelvben összemosódik a két fogalom):
- a kód jelentésekhez rendel valamilyen jelsorozatot, általában egy kódkönyv segítségével
- (pl. a "hajnalban támadunk"-hoz tartozhat mondjuk az "ARVSA5" kód);
- a titkosítóalgoritmus egyedi jelekhez vagy jelsorozatokhoz rendel másik jelet vagy jelsorozatot.
- Számítógépes környezetben a titkosítóalgoritmusok használata általában előnyösebb, mert
- a kódok leginkább csak szöveg kódolására alkalmasak (titkosítani pedig digitalizált képet, hangot vagy mozgóképet is lehet);
- a kódok töbnnyire csak véges sok különböző jelentést tudnak kódolni;
- ügyesen megválasztott titkosítóalgoritmusokat a számítógépek rendkívül gyorsan tudnak futtatni.
- a kód jelentésekhez rendel valamilyen jelsorozatot, általában egy kódkönyv segítségével
- Kulcs: egy titkosítóalgoritmus alkalmazása során felhasznált (általában titkos) adat, amely a plaintexttel együtt meghatározza a ciphertextet.
- Formálisabban: ciphertext = F(plaintext, kulcs).
- Szimmetrikus kulcsú titkosítás: a titkosítás és a visszafejtés ugyanazzal a kulccsal történik. Formálisabban:
- ciphertext = F(plaintext, kulcs)
- plaintext = F'(ciphertext, kulcs)
- (Bizonyos titkosítások esetében F és F' ugyanaz a függvény, de ennek nem muszáj így lennie.)
- A ciphertext és a plaintext között adott szimmetrikus kulcs mellett kölcsönösen egyértelmű a leképezés.
- Aszimmetrikus vagy nyilvános kulcsú titkosítás:
- mindenkinek két kulcsa van: egy nyilvános és egy titkos.
- Ezeket nem tetszőlegesen választjuk; valamilyen matematikai kapcsolat van közöttük és speciális feltételeknek felelnek meg.
- Amit az egyikkel titkosítunk, azt a másikkal lehet visszafejteni.
- A nyilvános kulcsokat elvileg mindenki ismerheti (és kívánatos is, hogy ismerje).
- Ha valakinek olyan üzenetet akarunk küldeni, amelyet csak ő tud elolvasni, az ő nyilvános kulcsával titkosítjuk; a csak általa ismert titkos kulccsal tudja olvashatóvá tenni.
- Ha azt akarjuk, hogy bizonyítható legyen, hogy egy üzenetet mi küldtünk, a saját titkos kulcsunkkal titkosítjuk; ha a mi nyilvános kulcsunk segítségével dekódolható, abból következik, hogy a mi titkos kulcsunkkal lett titkosítva, és mivel azt csak mi ismerjük, ebből az is következik, hogy mi küldtük.
- Nyilván fontos, hogy algoritmuselméleti értelemben nehéz legyen egy adott nyilvános kulcshoz tartozó titkos kulcsot előállítani.
- mindenkinek két kulcsa van: egy nyilvános és egy titkos.
1.2 Klasszikus és modern titkosítóalgoritmusok
Klasszikus titkosírás pl. az ABC-eltolás (A helyett D-t írunk, B helyett E-t s.í.t.), vagy saját ABC használata. Itt nem válik el élesen az algoritmus és a kulcs: a titkosított üzenet csak akkor van biztonságban, ha a titkosítás módszerét nem fedjük fel.
A modern titkosítóalgoritmusokat úgy alkotják meg, hogy a titkosított üzeneteket akkor se lehessen a kulcs ismerete nélkül visszafejteni, ha a támadó ismeri az algoritmust. Az algoritmus tehát nyilvános; csak a kulcsot kell titokban tartani. Ha jó az algoritmus, a támadó dolgát nem könnyíti meg az algoritmus ismerete. A támadóról általában feltételezzük, hogy pontosan ismeri azt a titkosítóalgoritmust, amellyel az általa elolvasni kívánt rejtjelezett üzenetet titkosították.
1.3 Mitől jó egy titkosítás?
- A próbálgatásnál (brute force) ne legyen hatékonyabb módszer a kulcs előállítására.
- Várhatóan annyi ideig tartson a kulcs próbálgatásos előállítása a támadónak, hogy mire végez, minden olyan titkos üzenet, amelyhez így hozzáfér, aktualitását veszítse.
- Méretezési kérdés, milyen erőforrások birtoklását feltételezzük a támadó(k)ról.
- Egy jó szimmetrikus kulcsú titkosítóval manapság legalább 128 bites kulcsot illik használni;
- nyilvános kulcsú titkosításnál nagyobb (RSA-nál minimum 2048 bites) kulcshosszra van szükség.
- Létezik elvileg is feltörhetetlen titkosítás (a one-time pad).
- Itt a kulcs legalább olyan hosszú, mint az üzenet, és minden szakasza csak egyszer hasznosítható.
- Lavina-effektus: két, akár csak egyetlen bitben különböző plaintexthez gyökeresen eltérő ciphertext tartozik.
- Vagyis: ránézésre lehetetlen megállapítani, hogy két elfogott titkosított üzenet tartalma hasonló.
- Teljesség: a ciphertext minden bitje a plaintext minden bitjétől függ.
- Hatékonyság: a kulcs birtokában a titkosítás és a visszafejtés is legyen gyors és kicsi memóriaigényű.
1.4 Blokktitkosító, folyamtitkosító
- A blokktitkosítók fix méretű blokkokat képeznek le egymásra.
- Ha a plaintext hossza nem osztható a blokkmérettel, ki kell egészíteni valahogyan.
- Általában blokkszinten adott a lavina-effektus és a teljesség.
- A folyamtitkosító bitenként vagy bájtonként titkosít.
- Kulcsfolyamra van szükség hozzá.
- Hosszú kulcs használata nehézkes; gyakori cél rövid kulcsból hosszú kulcsfolyamot generálni.
- Kulcsfolyamra van szükség hozzá.
1.5 Hash (kivonat)
Cél: olyan rövid (96-512 bites) számot előállítani egy üzenetből, amelyre teljesül, hogy
- algoritmuselméleti értelemben nehéz az üzenetet úgy módosítani, hogy a hash értéke ne változzon.
- Nehéz adott H hash-hez olyan üzenetet találni, amelyre a hash-függvény a H értéket adja.
- A véletlen ütközések esélye rendkívül csekély.
1.6 Néhány konkrét titkosító- és kivonatképző algoritmus
(Csak nagyon röviden.)
1.6.1 Vernam-kód
- Egyfajta one-time pad, vagyis folyamtitkosító.
- Az amerikai hadsereg számára fejlesztette 1917-ben Gilbert Vernam.
- Lényege: a kommunikáló feleknek rendelkezésére áll egy titkos, véletlen bitekből álló bitsorozat, amelyet kulcsként használhatnak.
- Üzeneteiket valahogyan bitekké alakítják, és rendre hozzáadják az üzenetek bitjeihez a kulcs-bitsorozat bitjeit.
- (Mod2 összeadással, vagyis 0+0=0, 0+1=1, 1+0=1, 1+1=0.)
- A visszafejtés ugyanígy történik: ugyanazt a kulcs-bitfolyamot ugyanúgy hozzá kell adni a bejövő ciphertexthez, és visszakapjuk a plaintextet.
- Shannon 1949-ben bizonyította be, hogy a Vernam-kód feltörhetetlen.
- Nehézség: nagyon nagy kulcs kell, amit előre meg kell osztani egymással és folyamatosan titokban kell tartani.
1.6.2 DES
- 1976-os USA szabvány ("Digital Encryption Standard").
- Blokktitkosító, 64 bites blokkokkal, 56 bites kulccsal.
- Mára nem megfelelő; viszonylag olcsó hardverrel is mindössze órák (vagy legfeljebb napok) alatt feltörthető.
- Kísérlet a feljavítására: 3DES.
- Háromszor egymás után alkalmazza a DES-t, többféle kulccsal.
- Az effektív kulcshossz így 80-168 bit aszerint, hány különböző kulcsot használunk és milyen módon.
- Egyelőre megfelelő biztonságot nyújt, de lassú.
1.6.3 AES
- Lánykori nevén Rijndael.
- A DES-t váltó szabvány (2001-ben fogadták el).
- 128 bites blokkokat titkosít 128, 192 vagy 256 bites kulccsal.
- Gyors és egyelőre elegendően biztonságos.
1.6.4 RSA
Az egyik legelterjedtebb nyilvános kulcsú titkosítóalgoritmus.
- Rivest, Shamir és Adleman nevéhez fűződik, holott egy Clifford Cocks nevű brit már 1973-ban kitalálta - de a britek titkosították és nem használták fel.
- Rivest, Shamir és Adleman néhány évvel később publikálta saját, lényegében azonos algoritmusát.
- Feltörésének nehézsége azon alapul, hogy bizonyos számelméleti problémákra (mint pl. nagy egészek prímtényezős felbontására) nem ismertek gyors módszerek.
- De: ez nem jelenti azt, hogy nincsenek is ilyenek.
- Az elliptikus görbéken alapuló titkosítás jobbnak számít.
- Kisebb kulcshosszt igényel az RSA-nál és gyorsabb is.
1.6.5 RC4
- Folyamtitkosító.
- 1987-ben dolgozta ki Rivest; 1994-ben szivárgott ki a leírása.
- Előnye, hogy nagyon egyszerű és gyors.
- Széles körben elterjedt.
- Ésszel kell használni, mert különben nem ad jó eredményt.
- Az RC4 helytelen használata tette sebezhetővé pl. a WEP szabványt (részletesebben később).
1.6.6 MD5
- 1990-ben megjelent hash algoritmus.
- Széles körben elterjedt.
- 128 bites hasht állít elő.
- 2005-ben hibát találtak benne: aránylag könnyű ütközést generálni (másik olyan üzenetet találni, amelyhez ugyanaz a hash tartozik).
- Emiatt új kriptográfiai rendszerekben nem szabad használni.
1.6.7 SHA-1
- 1993-ban publikált hash algoritmus.
- Széles körben elterjedt.
- 160 bites hasht állít elő.
- Biztonságosnak számít.
- Vetélytársai: RIPEMD-160 (OpenPGP), Tiger (ez 192 bites; főleg fájlcserélők használják).
1.7 Jelszó alapú hitelesítés
- Ha egy szolgáltatást csak nevesített felhasználóknak akarunk nyújtani, valahogyan meg kell tudnunk, ki próbálja igénybe venni a szolgáltatást.
- A hitelesítés és a hozzáférésvezérlés két különböző dolog: lehet, hogy egy szolgáltatást bárki használhat, csak tudnunk kell, kicsoda (pl. bankszámlát akárki nyithat, de többnyire csak névvel).
Hogyan állapítsuk meg, ki a felhasználó?
- Kézenfekvő, egyszerű megoldás: felhasználónév+jelszó.
- A jelszó önmagában kevés: hozzáférésvezérléshez elegendő, hitelesítéshez viszont csak akkor, ha az üzemeltető osztja ki a garantáltan egyedi jelszavakat a felhasnzálóknak.
- Ha a felhasználó magának választhatja a jelszót, akkor a jelszó egyedisége nem garantált, tehát kell egy egyedi azonosító is; ez a felhasználónév.
- Aki egy adott {felhasználónév, jelszó} párost ismer, arról általában elhisszük, hogy az a személy, akihez az adott felhasználónév tartozik.
- A hozzáférésvezérlés szempontjából ez persze nem feltétlenül elegendő: lehet, hogy csak adott helyről vagy adott időablakban engedjük hozzáférni a szolgáltatáshoz.
Nehézségek a jelszó-alapú hitelesítésnél:
- A jelszavak a hálózaton lehallgathatók lehetnek. Lehetséges megoldások:
- titkosított protokoll használata;
- egyszer használatos jelszavak (OTP, one-time password) használata.
- Ezzel vigyázzunk; ha a támadó képes karakterenként lehallgatni a jelszót, az utolsó karakter felhasználó általi leütése előtt próbálgatásos támadást indíthat az utolsó karakter kitalálására.
- Challenge-response ("kihívás-válasz") alapú hitelesítés.
- Lényege: a jelszót nem utaztatjuk a hálózaton; a hitelesítő a jelszóra vonatkozó, kriptográfián alapuló "találós kérdést" ad fel a kliensnek, amely a jelszó birtokában tud rá helyesen válaszolni.
- Ez a viszonthitelesítést is lehetővé teszi: megoldható, hogy csak az tudjon érvényes találós kérdést feltenni, aki maga is ismeri a jelszót.
- Egyszerű példa: "itt van ez a véletlenszerűen generált sztring; fűzd össze a jelszóval és képezz belőle hash-t, majd a hash-t küldd vissza".
- Hátrány: sok challenge-response protokoll plaintext jelszó tárolását igényli.
- Lényege: a jelszót nem utaztatjuk a hálózaton; a hitelesítő a jelszóra vonatkozó, kriptográfián alapuló "találós kérdést" ad fel a kliensnek, amely a jelszó birtokában tud rá helyesen válaszolni.
- Márpedig ha a jelszavakat titkosítás nélkül tároljuk a szerveren, onnan egy menetben ellopható az összes.
- Ráadásul az emberek gyakran ugyanazt a jelszót több helyen is használják.
- Lehetséges megoldások:
- Jelszavak "titkosított" tárolása.
- A sima titkosítás nem sokkal jobb, mint a plaintext, hiszen a hitelesítéshez dekódolni kell a titkosított jelszót, ha pedig a hitelesítő képes erre, akkor még mindig ellopható az összes jelszó.
- A jelszó helyett csak egy hash-t tárolunk.
- Gond: két azonos jelszó hash-e is meg fog egyezni;
- ha valaki már egy csomó szótári szó hash-ét meghatározta, a tőlünk ellopott hash-ek között jó eséllyel talál olyat, amelyhez ismer jelszót.
- Jobb "megsózni" jelszót hash-elés előtt: kiegészíteni egy véletlen sztringgel, és azzal együtt hash-elni, majd a hash mellett ezt a sztringet is tárolni.
- Jelszavak "titkosított" tárolása.
- A hash-elt jelszótárolás és a kihívás-válasz alapú hitelesítés elvileg ötvözhető; így működik pl. az NTLMv2.
1.8 Ajánlott irodalom
- Your Top 20 Most Common Passwords -- 32 millió kiszivárgott jelszó vizsgálata.
- Hogyan választanak jelszót az emberek?
- John the Ripper -- Az egyik legelterjedtebb szótáralapú jelszótörő (képes a szótár szavait szabályok segítségével átírni, kombinálni, és az így nyert szavakkal is próbálkozni).
- egy cikk arról, mennyire könnyű "biztonságos" jelszót kitalálni, és cáfolata.
- An Illustrated Guide to Cryptographic Hashes -- Jó, tömör és szemléletes cikk a kriptográfiában használt hash-ekről.
- Amazon EC2 enables brute-force attacks on the cheap -- Az Amazon felhőjén néhány dollárért másodpercenként 400.000 jelszót próbálhatunk egy hash-re illeszteni.
- http://www.troyhunt.com/search/label/Passwords -- Jó cikksorozat a jelszavakról általában.
- The only secure password is the one you can’t remember
- webképregény arról, hogyan válasszunk nehezen feltörhető, de könnyen megjegyezhető jelszót, és cáfolata (konklúzió: használjunk véletlenszerű jelszavakat és ezeket tároljuk tikosítva úgy, hogy egyetlen erős jelszót kelljen csak megjegyezni ahhoz, hogy hozzájuk férhessünk).
- webképregény arról, hogyan lehet visszaélni azzal, hogy az emberek sok helyen ugyanazt a jelszót használják.
- webképregény arról, mennyire mindegy lehet, milyen erős titkosítást használunk - fizikai erőszakkal általában nem nehéz a jelszavak birtokába jutni.
2 Az adatkapcsolati (és fizikai) réteg; Ethernet
Fogalmak:
- Csomópont: olyan eszköz, amelynek van olyan interfésze, amellyel az adatkapcsolati rétegben kommunikálni tud; például hoszt vagy router.
- Kapcsolat: fizikai összeköttetés két vagy több fizikai interfész között.
- Keret: adatkapcsolati szintű adatcsomag; magasabb rétegbeli protokollok (pl. IP) csomagjait szállít(hat)ja egy kapcsolatnyi távolságra.
- Általában egy keretre jut egy magasabb szintű adatcsomag, de szükség lehet arra, hogy egy-egy csomagot több keretre bontsunk szét.
- Adatkapcsolati protokoll: meghatározza a keretek formátumát és azt, hogyan kezelik őket ill. a kapcsolatokat a csomópontok.
- Garantál megbízhatóságot?
- Csomag (keret) kézbesítését, integritását?
- Hibadetektálás vagy hibajavítás.
- Nyugtázás, újraküldés.
- QoS-t?
- Az átvitt adatokban?
- Az infrastruktúrát illetően?
- Csomag (keret) kézbesítését, integritását?
- Broadcast vagy pont-pont?
- Hogyan működik a címzés?
- Közeghozzáférés-vezérlés (MAC: medium access control)? Módszerek:
- Csatorna-felosztás (pl. frekvenciaosztásos vagy kódosztásos multiplexelés);
- véletlen hozzáférés (pl. Ethernet)
- (carrier sensing, collision detection);
- felváltva adás (pl. Token Ring).
- Folyamszabályozás: a küldő ne küldjön gyorsabban, mint ahogy a fogadó fel tudja dolgozni.
- Duplexitás (half duplex, full duplex).
- Garantál megbízhatóságot?
Az adatkapcsolati réteg feladata: adatkeretek szállítása két szomszédos (közvetlenül összekapcsolt) csomópont között. Az adatkapcsolati réteg fölött elhelyezkedő hálózati réteg már egymástól távoli csomópontok között szállít adatcsomagokat; az útvonalon elhelyezkedő csomópontok (routerek) közötti szakaszokon más-más adatkapcsolati rétegbeli protokollt (vagyis hálózati technológiát) is használhatunk. Ideális esetben a hálózati rétegben működő programok semmit sem tudnak (és semmit sem kell, hogy tudjanak) az adatkapcsolati réteg sajátosságairól.
- Analógia: ha Budapestről az Orkney-szigetekre akarunk eljutni (mi vagyunk a hálózati adatcsomag analógiája), akkor először eltaxizunk a reptérre (a taxi egy adatkapcsolati és fizikai rétegbeli protokoll); aztán repülővel elmegyünk mondjuk Edinburgh-ba; onnan vonattal Invernessbe; ott autót bérlünk és elautózon John o' Groats-ig; itt pedig az autóval felhajtunk a kompra, ami autóstul elvisz Burwickbe.
- Ez már az Orkney-szigetek egyikén található, vagyis célba értünk. Az utolsó szakaszon enkapszuláció is történt: az egyik adatkapcsolati rétegbeli keretet (az autót, benne a hálózat csomaggal, vagyis velünk) egy az egyben beraktuk egy másik technológiájú adatkapcsolati rétegbeli keretbe (a kompba).
- A komp-vonal két végpontja között a belső keret (az autó) változatlan formában utazott; a távoli végpontnál kicsomagoltuk a külső keretből a belsőt, amely folytatta útját, és végül célba juttatta a hálózati csomagot (az utast).
Néhány elterjedt adatkapcsolati rétegbeli protokoll:
- Ethernet (IEEE 802.3*)
- 802.11 WLAN (WiFi);
- Token Ring (ritka);
- FDDI (elavult);
- PPP (Point to Point protocol);
- LAPB (az X.25 adatkapcsolati rétegbeli protokollja);
- DOCSIS (a kábeltévés internetszolgáltatás fizikai és adatkapcsolati rétege);
- HDLC (egy ősprotokoll; a LAPB pl. ennek a leszármazottja);
- ARCnet.
Az adatkapcsolati rétegbeli protokoll megvalósítása általában hardveres, és a hálózati kártyában található.
2.1 Ethernet
"Ethernet, n: a device used to catch the etherbunny."
- Majdnem biztosan a legelterjedtebb adatkapcsolati rétegbeli protokoll (és fizikai közeg).
- Minden csomópontnak (pontosabban: minden hálózati interfésznek) elvileg globálisan egyedi hatbájtos MAC-címe van.
- Notációk: aa:bb:cc:dd:ee:ff (Unix); AA-BB-CC-DD-EE-FF (Windows); aabb.ccdd.eeff (Cisco).
- A hardvergyártó állítja be, de ma már szinte mindig átírható szoftverből.
- A címek strukturálatlanok (nincs pl. a hálózat topológiájából adódó hierarchia).
- Mindazonáltal az első 24 bit azonosítja a gyártót.
- Broadcast ("üzenetszórásos") elven működik.
- Minden, az adott szegmensben levő kártya ("adapter") minden keretet megkap; a címzés alapján dönti el, kell-e vele foglalkoznia.
- Speciális cím: ff:ff:ff:ff:ff:ff (csupa egyes): mindenkinek szóló üzenet.
- Szigorúan véve nem Ethernet-specifikus, de ide tartozik: ARP (IP címhez keres MAC-címet).
- Keretformátum kb:
- "Preamble" (a fizikai réteg sajátosságain alapul; könnyen észlelhető "keret eleje"-jelzés, 8 byte). A két végpont óráinak (órajelének) szinkronizálást is segíti.
- Célcím (6 byte);
- Forráscím (6 byte);
- Hálózati rétegbeli protokoll azonosítója (2 byte; pl. IP, IPX, Decnet stb.);
- Adatok (max. 1500 byte);
- Ellenőrző összeg (CRC, 4 byte).
2.1.1 Eszközök (hub, bridge, switch stb.)
- Repeater: két fizikai szegmenst köt össze bit-szinten.
- Ha az egyik interfészén megjelenik egy bit, azt kiküldi a másik interfészén.
- Lényegében egy erősítő: a csillapított jel helyett egy szép új jel jelenik meg a másik interfészen.
- A két fizikai szegmens egyetlen logikai szegmenst (collision domaint) alkot: nem adhat egyszerre két csomópont akkor sem, ha a repeater két oldalán vannak és a címzettjeik is a velük azonos oldalon találhatóak.
- Hub: sokportos repeater.
- Bridge: két fizikai szegmenst köt össze keretek szintjén.
- Az egyik interfészen bejövő keretet megismétli a másik interfészen.
- Megtanulja, melyik MAC-címek melyik interfész felé vannak, és csak akkor adja tovább a keretet, ha szükséges (a címzett a másik oldalon van, vagy broadcast keretről van szó).
- Két különböző, de alapvetően Ethernet-szerű hálózat közé is tehető bridge: pl. vezetékes Ethernet és WiFi vagy Token Ring.
- Switch: sokportos bridge.