Védekezési stratégiák
Nyilván titkosítással lehet megvédeni adatainkat, no de ez sem olyan egyszerű kérdés. Az alábbiakban ezzel foglalkozunk.
Négy fő követelménye van a hálózati biztonságnak: a titkosság, a hitelesség, a letagadhatatlanság és a sérthetetlenség. Távoli gépeknél fontos, hogy ellenőrizni tudja egy kiszolgáló, hogy a tőle adatokat vagy szolgáltatásokat kérő távoli gép vajon tényleg az-e, akinek kiadja magát, és ennek megfelelően van-e joga azokhoz a dolgokhoz, amiket kér. Ez a hitelesítés témaköre. A letagadhatatlanság és sérthetetlenség inkább banki meg pénzügyi területeken fontos: ha egyszer létrejött egy szerződés vagy más hivatalos dokumentum, akkor azt később egyik fél se tudja letagadni, illetve megmásítani semmilyen okból (pl. bank, arany).
A “lehallgató támadók” két fajtája létezik: az aktív illetve a passzív támadó. A passzív csak hallgatódzik, az aktív meg bele is nyúl az általa elért adatokba.
A hálózati biztonság (az adatok titokban tartása értelemben) mindegyik hálózati réteghez hozzátartozik, mi most az alkalmazási szintet vizsgáljuk, ennek módszereit.
Hagyományosan kétfajta titkosítási módszert különböztetünk meg: a helyettesítő, illetve a keverő típusú titkosítást. A helyettesítő titkosításnál minden betű vagy betűcsoport egy másikra helyettesítődik egy előre legyártott kulcs alapján, míg a keverő eljárás csak a sorrendet változtatja meg. Itt a kulcs egy olyan szó pl. amiben minden betű egyszer fordul csak elő, és az előforduló betűk abc-s sorrendjének megfelelően kell a forrásszöveg karaktereit megkutyulni.
Két alapvető kriptográfiai (titkosítási) elv a következő: 1: redundancia, 2: visszajátszhatatlanság. A redundancia alatt azt értjük, hogy a titkosításnál a “csomagokba” olyan fölösleges karaktereket is teszünk, amik csak azért vannak, hogy megnehezítsék az aktív támadók dolgát a valódinak tűnő üzenetek gyártásánál. A visszajátszhatatlanságot például időbélyegekkel biztosíthatjuk (ne játszhassanak vissza korábbi, valódi üzeneteket).
A DES és az IDEA
Régen azt az elvet követték, hogy egyszerű algoritmusokat hoztak létre, és a kód feltörhetetlenségét hosszú – és így biztonságos – kulcsokkal akarták biztosítani. Ma ennek az ellenkezője érvényes: bonyolult algoritmusokat hoznak létre, hogy ezt ne tudja kiismerni a kódtörő. Mindkét elv azonban titkos kulcsú algoritmusokat használ, a kulcs mindig rejtett (legalábbis ez a cél), és csak a felhasználók ismerik. Ilyen a DES (Data Encryption Standard) és az IDEA (International Data Encryption Algorythm). Ma már léteznek azonban nyilvános kulcsú algoritmusok is, sőt, ezek a jobbak, amelyek valójában két kulcsból állnak: egy nyilvános bekódoló kulcsból, és egy titkos dekódolókulcsból. Ez a két kulcs egymástól független, nem állíthatók elő egymásból.
A DES-t 1977-ben fejlesztették ki. 56 bites kulcsszót használ, 64 bites blokkokkal, a keverő és helyettesítéses technikákat együtt. Jó bonyolult az algoritmus, de ma már nem számít megbízhatónak. Hozzá hasonló az IDEA (1990., 1992.), amely 128 bites kulcsot használ, és amely jelenleg emberi idő alatt nem feltörhető.
Az RSA
Az RSA nyilvános kulcsú algoritmus, 1978-ban fejlesztette ki az M. I. T. három kutatója, Rivest, Shamir, és Adleman (innen a név). Főbb lépései:
- Válasszunk két nagy prímszámot, p-t és q-t (lehetőleg 10^100-nál nagyobb számok legyenek).
- Számoljuk ki az n=pq és a z=(p-1)(q-1) számokat.
- Válasszunk egy z-hez relatív prímet, jelöljük d-vel.
- Keressünk egy olyan e számot, melyre ed=1 mod z.
Ezek után a titkosítás: a nyílt szöveget, mint egyszerű bitsorozatot n-nél kisebb hosszúságú blokkokra osztjuk. A titkosítandó üzenetdarab alapján kiszámoljuk a C=P^e (mod n) értéket. A visszakódoláshoz a P=C^d (mod n) összefüggést használjuk. Látjuk, hogy a kódoláshoz az e és n számok szükségesek, a visszafejtéshez pedig a d és n számok, tehát a nyilvános kulcs az (e,n) számpárból, az egyéni kulcs pedig a (d,n) számpárból áll.