A magánszféra védelme az internet alapú távközlésben: 4. rész

Az eszköz: A VoIP titkosításhoz használható algoritmus kiválasztása

Előző cikkünkben megvizsgáltuk, hogy a VoIP adatátvitel során mely szinteken célszerű beavatkozni a megfelelő lehallgathatatlanság biztosítása érdekében. A mostani cikk a különböző titkosítási algoritmusok bemutatásával, továbbá a célnak leginkább megfelelő eljárás kiválasztásával foglalkozik.

Titkosítási algoritmusok, módszerek

A rejtjelezésben a titkosítás az a folyamat, mely során egy algoritmust használva az információt (a kódolatlan szöveget) úgy alakítjuk át, hogy senki ne tudja elolvasni azt, csupán azok, akik birtokában vannak egy különleges tudásnak, melyet általában kulcsnak nevezünk. E folyamat végeredménye egy titkosított adattömeg, melyet a kriptológia rejtjelezett szövegnek (cipher text) nevez. A legtöbbször a titkosítás értelemszerűen a folyamat fordítottjára, vagyis a visszafejtésre is utal (pl. a “titkosító szoftver” általában képes a visszafejtésre is), ami a titkosított információ újból olvashatóvá tételét jelenti.

A különböző kormányok és hadseregek már hosszú ideje a titkosítják adatforgalmukat. Manapság a titkosítást megannyi polgári rendszerben is használják, mint például számítógépek, tárolóeszközök (pl. USB flash drive), hálózatok (pl. Internet), mobil telefonok, vezeték nélküli mikrofonok, vezeték nélküli telefonok, bluetooth eszközök és banki automaták (ATM) esetében. A titkosítást használják a digitális jogok kezelésénél is (DRM), hogy megakadályozzák a szerzői jogokkal védett termékek törvényellenes másolását - szoftverek esetében a visszafejtést.

A titkosítás magában képes megvédeni az üzenetek titkosságát, de emellett egyéb technikákra is szükség van ahhoz, hogy egy üzenet hitelességét és integritását megvédjük; például egy üzenet-hitelesítő kód (MAC) vagy egy digitális aláírás segítségével. Ma már számos szabvány, titkosítást alkalmazó szoftver, illetve titkosításra alkalmas hardver létezik, azonban a biztonságos kommunikáció létrehozása nem olyan egyszerű. Egyetlen baklövés a rendszertervezésben vagy a kialakításban már könnyen sikeressé teheti az esetleges támadást. Az is előfordulhat, hogy az “ellenség” anélkül jut titkosítatlan információhoz, hogy közvetlenül eltávolítaná a titkosítást.

Az első korai nyilvános kulcsú titkosítási alkalmazás a Pretty Good Privacy (PGP) volt. Ezt 1991-ben írta Phil Zimmermann, tőle a ma PGP Corporation ismert Network Associates vette meg 1997-ben.

Ebben a részben a leggyakoribb szimmetrikus és asszimetrikus titkosításokról lesz szó. A következő szimmetrikus titkosítások kerülnek bemutatásra:

  • DES
  • TDES
  • Blowfish
  • Twofish
  • AES

Miután megvizsgáltuk a szimmetrikus titkosítási algoritmusokat, egy rövid áttekintést adunk a következő asszimetrikus titkosításokról:

  • Diffie-Hellman
  • RSA
  • DSS

Ezen fejezet utolsó részében a széles körben használt TLS és SSL protokollokról lesz szó. Általános algoritmusok teszteredményeiről, valamint a megfelelő algoritmusok és metódusok teszteken, továbbá összehasonlításon alapuló kiválasztásáról az utolsó alfejezetben ejtünk szót.

Szimmetrikus titkosítás

A szimmetrikus-kulcs algoritmusokat két csoportra, stream-kódolókra és blokk-kódolókra oszthatjuk. A stream-kódolók az üzenet bitjeit külön titkosítják, míg a blokk kódolók vesznek egy adott számú bitet és azokat egy egységként titkosítják. A 64 bites blokkok igen elterjedtek; az AES (Advanced Encryption Standard) algoritmus, melyet a NIST 2001 decemberében hagyott jóvá, 128 bites blokkokat használ.

Néhány elismert és népszerű szimmetrikus titkosítási algoritmus: Twofish, Serpent, AES (más néven Rijndeal), Blowfish, CAST5, RC4, TDES és IDEA.

A szimmetrikus-kulcs algoritmusok általában kevésbe intenzívek számítási szempontból, mint az asszimetrikus-kulcs algoritmusok, általában százszor, ezerszer is gyorsabbak az utóbbiaknál.

Az alábbi fejezet a leggyakoribb szimmetrikus algoritmusokkal foglalkozik.

DES

A Data Encryption Standard (DES, Adattitkosító szabvány) egy blokk-kódoló melyet az NBS az Egyesült Államok hivatalos szövetségi titkosítási eljárásának választott 1976-ban, és mely ezután nemzetközileg is igen elterjedtté vált. Ez egy szimmetrikus-kulcs algoritmuson alapul, mely 56-bites kulcsot használ. Az algoritmus kezdetben ellentmondásos volt a titkos dizájn elemei, a relatív rövid kulcshosszúsága és a Nemzetbiztonsági Hivatal felé meghagyott kiskapuja miatt. A DES folyamatosan alapos akadémiai vizsgálatoknak volt kitéve, melyek a blokk-kódolók és azok titkosítás-vizsgálatával kapcsolatban a felfogás megújítását ösztönözték.

A DES-ről ma úgy tartják, hogy sok szempontból nem biztonságos. Ennek oka elsősorban a túl kicsi, 56 bites kulcsmérete. 1999 januárjában a distributed.net és az Electronic Frontier Foundation együttműködve nyilvánosan 22 óra és 15 perc alatt feltörték a DES-t. Van néhány analitikai eredmény, melyek bizonyítják a kódoló elméleti gyengeségeit - habár ezeket a gyakorlatban kihasználni nem lehet. Az algoritmussal kapcsolatban úgy hiszik, hogy az a Triple DES formájában a gyakorlatban biztonságos, ugyanakkor léteznek elméleti támadások. Az utóbbi években a kódolót az AES eljárás gyakorlatilag kiváltotta.

A DES a blokk-kódoló archetípus – egy algoritmus, mely vesz egy fix hosszúságú kódolatlan szövegsort és több bonyolult művelet segítségével átalakítja azt egy azonos hosszúságú kódolt adatsorrá. A DES esetében a blokk mérete 64 bit. A DES emellett egy kulcsot is használ, hogy egyedivé tegye az átalakítást, így a visszafejtést elvileg csak azok végezhetik, akik ismerik a titkosítás során használt kulcsot. A kulcs látszólag 64 bitet tartalmaz, habár ezek közül csak 56-ot használ az algoritmus. Nyolc bitet kizárólag a paritás ellenőrzésére használ, majd utána ezeket elhagyja.

TDES (Tripple DES)

Amikor rájöttek, hogy a DES 56 bites kulcsa nem elég ahhoz, hogy megvédjen a nagy erejű támadásoktól, a TDES-t választották arra, hogy egyszerűen növeljék meg a kulcs méretét, egy másik algoritmusra való áttérés nélkül. A három lépés használata kulcsfontosságú védelem a középreállásos támadások ellen, melyek a dupla DES titkosítással szemben hatékonyak.

A TDES két paraméter variációjával működtethető: kulcsok száma és a műveletek sorrendje.

Blowfish

A Blowfish-t Schneier egy univerzális algoritmusnak készítette, azzal a céllal, hogy leváltsa az elöregedő DES-t, megpróbálván megoldást adni a korábbi módszerek problémáira és korlátaira. A Blowfish megjelenésekor a legtöbb elérhető titkosítási eljárás védett volt - szabadalmi oltalom alá esett, vagy vállalati/kormányzati tittoknak minősült. Schneier azt állította, hogy "a Blowfish nem szabadalmaztatott, és az is fog maradni az összes országban. Ezáltal az algoritmus közkincs, és bárki szabadon használhatja.” A Blowfish legjelentősebb tulajdonságai a kulcsfüggő S-boxok és az igen összetett kulcs-ütemezési módszerek

A Blowfish 64 bites blokkmérettel dolgozik, míg kulcshosszúsága 32 és 448 bit között változik. Egy 16 ciklusú Feistel kódolót és nagy, kulcsfüggő S-boxokat használ. Szerkezetében hasonló a CAST-128-hoz, mely fix S-boxokat használ.

A fenti diagramon a Blowfish működése látható. Minden egyes vonal 32 bitnek felel meg. Az algoritmus két alkulcs tömböt tárol: a18 elemű P-tömböt, és a 4 darab 256 elemű S-boxot. Az S-boxok 8 bites bemenetet fogadnak és 32 bites kimenetet generálnak. A P-tömb egy bemenetét minden ciklusban használja, és az utolsó ciklus után az adatblokk mindkét fele XOR-olásra kerül az egyik fennmaradó P tömbbel.

A Blowfish F-funkciója szétválasztja a 32 bites bemenetet négy 8 bites negyeddé, és ezeket a negyedeket az S-box inputjaiként használja.

Twofish

A Twofish jellemző tulajdonságai az előre kiszámított kulcsfüggő S-boxok használata és komplex kulcsütemezése. Az n-bites kulcs egyik fele a titkosítási kulcs, míg a másik fele a titkosítási algoritmus módosítására szolgál (kulcsfüggő S-boxok). A Twofish néhány elemet más rendszerből kölcsönöz, például a pszeudo-Hadamard transzformációt (PHT) a kódolók SAFER családjától. A Twofish ugyanazt a Feistel szerkezetet használja, mint a DES.

A legtöbb szoftver platformon a Twofish kicsivel lassabb, mint a Rijndael (az AES által választott algoritmus) a 128 bites kulcsoknál, de néha gyorsabb a 256 bites kulcsok esetében.

A Twofish rejtjelező nem került szabadalmaztatásra, implementálási tájékoztatója hozzáférhető a nyilvánosság számára. Ennek eredményeképpen a Twofish algoritmus szabadon felhasználható mindenki számára, bármiféle megkötés nélkül. A Twofish kevésbé elterjedt, mint a Blowfish, amely már régebb óta elérhető.

AES

A kriptográfiában az AES (Advanced Encryption Standars) az Amerikai Egyesült Államok által elfogadott titkosítási szabvány. A szabvány három blokk-rejtlezőt foglal magába, az AES-128-at, az AES-192-őt és az AES-256-ot, melyet az eredetileg a Rijndael által közreadott nagyobb gyűjteményből vettek át. Minden egyes AES rejtjel 128 bites blokkmérettel rendelkezik, egyenként 128-as, 192-es vagy 256 bites kulcsméretekkel. Az AES kódolót igen komolyan elemezték és mára az egész világon használják, akárcsak korábban az elődjét, a DES-t.

Az AES-t a Nemzeti Szabványügyi és Technológiai Intézet (NIST) jelentette be 2001. novemberében, öt évnyi szabványosítási folyamat után, mely során tizenöt versengő dizájnt mutattak be és bíráltak el, mielőtt a Rijndaelt választották volna a legmegfelelőbbnek. Szabványként 2002. májusától kezdték használni. 2009.-re az AES lett az egyik legnépszerűbb algoritmus a szimmetrikus kulcsos kriptográfia területén. Sok különböző titkosítási csomagban elérhető. Az AES az első nyilvánosan hozzáférhető és nyílt kódoló, melyet az Amerikai Nemzetbiztonsági Hivatal elfogadott a szigorúan titkos információk titkosításához.

Az AES mind szoftveresen, mind hardveresen gyors, viszonylag könnyű implementálni és kevés memóriát igényel. Elődjével, a DES-sel ellentétben - mely egy Feistel hálózatot használt – az AES kódoló egy helyettesítés-permutáció hálózat.

Feltéve, hogy egy byte 8 bitnek felel meg, a fix 128 bites blokk mérete 128 ÷ 8 =16 byte. Az AES 4×4-es tömbökön működik, és az AES műveleteinek nagy része egy speciális véges mezőn van értelmezve.

Az AES kódoló több ismétlődő átalakítás-ciklusként van meghatározva, melyek a beérkező kódolatlan szöveget egy végső kódolt szöveggé alakítják át. Minden egyes ciklus néhány lépésből áll, ezek közül egy a titkosítási kulcson alapul. Ellentétes ciklusokat használ, hogy a kódolt szöveget ugyanazon titkosítási kulcs felhasználásával visszaalakítsa az eredeti kódolatlan szöveggé.

Aszimmetrikus titkosítás

A nyílt kulcs kriptográfia egy módszer, mely lehetővé teszi a titkos kommunikációt két fél között titkoskulcs-csere nélkül, és emellett digitális aláírás készítésére is használható. A nyílt-kulcs kriptográfia egy alapvető és széles körben elterjedt technológia az információ biztonságos internetes átvitelére.

Mindez asszimetrikus kulcs kriptográfia néven is ismert, mivel a kulcs, amit a titkosításhoz használnak, különbözik attól, melyet a visszafejtés során használnak. A nyilvános kulcs kriptográfiában a felhasználó két kulccsal rendelkezik - egy nyilvános kulccsal, illetve egy privát kulccsal. A privát kulcsot titokban tartják, míg a nyilvánosat szabadon publikálják. Az üzeneteket a fogadó nyilvános kulcsával titkosítják, és csupán a megfelelő privát kulccsal lehet visszafejteni azt. A kulcsok matematikailag kapcsolódnak egymáshoz, de a privát kulcsot nem lehet a nyilvánosból visszafejteni.

A központi probléma a nyilvános-kulcs kriptográfia használatánál: nem lehetünk biztosak, hogy a nyilvános kulcs a megfelelő személyhez tartozik, azt nem befolyásolta, vagy cserélte ki egy ártó szándékú harmadik fél. Ezen probléma megoldásának általános megközelítése, hogy nyilvános kulcs infrastruktúrát (PKI) kell használni, mellyel egy vagy több külső fél, más néven tanúsítvány-hatóság (Certification Authority) igazolja a kulcspárok tulajdonjogát. Egy másik megközelítés, melyet a PGP használ, a “web of trust” módszer, mely biztosítja a kulcspárok hitelesítését.

Minden ismert nyilvános kulcs technika sokkal számításigényesebb, mint a hasonló szimmetrikus titkosítási technikák, de még így is nagyon sokféle területen felhasználhatóak. A gyakorlatban hatékonysági szempontok miatt legtöbbször a nyilvános kulcs kriptográfiát a titkos kulcs módszerekkel együtt használják. Ezen kombinációkat hibrid kriptorendszereknek nevezzük. A titkosításhoz a küldő titkosítja az üzenetet egy titkos kulcs algoritmussal, melyhez egy véletlenszerűen generált kulcsot használ, és ez a random kulcs titkosításra kerül a fogadó nyilvános kulcsával együtt. Digitális aláírások esetében, a küldő hash-eli az üzenetet (egy kriptográfiai hash funkciót használva) majd megjelöli a hash értéket. Mielőtt ellenőrizné az aláírást, a fogadó fél szintén kiszámítja az üzenet hash-ét, és összehasonlítja a hash értékét a jelölt hash értékkel, hogy megbizonyosodjon afelől: az üzenetet nem manipulálták.

Azonosítás és bizalmasság céljából a küldő fél először megjelölheti az üzenetet saját privát kulcsát használva, majd utána titkosíthatja az üzenetet és aláírhatja azt a fogadó nyilvános kulcsával.

Néhány titkosítási séma megbízhatóságát be lehet bizonyítani olyan matematikai problémák feltételezett nehézségén alapulva, mint az egész számok faktorizációja, vagyis nagy prímszámok szorzata, vagy a diszkrét logaritmusok. Meg kell jegyezni, hogy a “megbízhatóság” jelen esetben egy precíz matematikai fogalom, és többféle módon lehet definiálni, hogy egy titkosítási séma mennyire biztonságos. A “megfelelő” definíció függ a kontextustól, melyben a séma alkalmazásra kerül.

A végtelen átkulcsolásos rejtjelezéssel szemben, egyetlen nyilvános kulcsot használó titkosítási sémáról sem bizonyosodott be, hogy biztonságos lenne végtelen számítástechnológiai erőforrással rendelkező lehallgatókkal szemben. Az asszimetrikus kulcsú kriptográfiáról csupán annyi jelenthető ki biztonsággal, hogy a séma nem törhető fel egy asztali számítógéppel X ezer éven belül - vagy a rendszer biztonságos, amíg nem jelenik meg egy korszerűbb módszer egész számok faktorálására.

Nyilvános kulcsú titkosítás

Az üzenetet, melyet a fogadó nyilvános kulcsával titkosítanak, csupán az képes visszafejteni, aki rendelkezik a hozzá tartozó privát kulccsal -- feltehetően ez a személy a kulcs tulajdonosa lesz, a személy, akit hozzárendelhetünk a használt nyilvános kulcshoz.

A nyilvános kulcsú titkosítás hasonlatos egy lezárt, egy nyílással rendelkező postaládához. Ez a levélbedobó nyílás elérhető a nyilvánosság számára, a földrajzi helyzete (az utca címe) ismert és kulcsfontosságú - a nyilvános kulcs szempontjából is. Bárki, aki ismeri a postaláda címét, odamehet ahhoz, bedobhatja megírt üzenetét a nyíláson keresztül, ugyanakkor az egyetlen, aki ki tudja nyitni a ládát, és elolvashatja az üzenetet a postaláda kulcsával rendelkező személy lesz.

Digitális aláírás

A küldő privát kulcsával megjelölt üzenetet bárki ellenőrizheti, aki rendelkezik a küldő nyilvános kulcsával. A nyilvános kulcs képes bizonyítani, hogy a küldőnek volt hozzáférése a privát kulcshoz - tehát a feladó minden bizonnyal az, aki a privát kulcsot használta, azaz az üzenetet nem manipulálták.

A digitális aláírás hasonlatos a borítékon lévő egyedi viaszpecséthez. A borítékot bárki kinyithatja, de a pecsét jelenléte azonosítja a feladót.

A digitális aláírás használható a küldő hitelesítésére és a letagadhatatlanságára. Ezzel a módszerrel a felhasználó, aki üzenetet szeretne küldeni egy digitális aláírást generál az üzenethez, és utána ezt a digitális aláírást az üzenettel együtt elküldi a címzettnek. A digitális aláírási sémák rendelkeznek azzal a tulajdonsággal, hogy az aláírás csak a privát kulcs ismeretében kerülhet feldolgozásra. A meggyőződéshez, hogy az üzenetet valóban a felhasználó írta alá, és nem került módosításra, a fogadónak csupán a megfelelő nyilvános kulcsot kell ismernie. Néhány esetben (pl: RSA) a digitális aláírás sémák sokban hasonlítanak a titkosítási sémákhoz. Más esetben (pl. DSA) az algoritmus nem hasonlít egyetlen titkosítási sémára sem.

Diffie-Hellman algoritmus

Az 1976-ben megalkotott Diffie-Hellman algoritmus volt az első a nyilvános kulcsú kriptográfiai algoritmusok közül. A Diffie-Hellman algoritmus nem megfelelő digitális aláírásokhoz vagy titkosítási feladatokhoz. Ez egy kriptográfiai protokoll, mely lehetővé tesz két fél számára - akiknek nincs előzetes információjuk egymást illetően -, hogy közösen létrehozzanak egy megosztott titkos kulcsot egy nem biztonságos kommunikációs csatornán keresztül. Ez a kulcs egy következő kommunikáció titkosítására használható, egy szimmetrikus kulcs kódoló használatával.

Példa: a felhasználók neve legyen A és B. Elsőként megegyeznek két prímszám használatáról, melyek legyenek g és p, ahol p nagy méretű (általában minimum 512 bit) míg a g egy primitív gyök modulo p. (A gyakorlatban jó ötlet, ha úgy választjuk meg p-t, hogy (p-1)/2 szintén prímszám.) A p és g számokat nem kell titokban tartani más felhasználók elől. Most A választ egy nagy véletlenszerű számot (a) mint az ő saját kulcsa, míg B szintén választ egy számot, melyet b-vel jelölünk. Ezután A kiszámolja, értékét, melyet elküld B-nek, aki kiszámolja a értékét, melyet aztán elküld A-nak.

Ezután A és B kiszámolják a közös kulcsukat: melyet A úgy számol ki:

és B úgy számol ki:

A és B ezek után használhatják a közös K kulcsukat, egymással való információcserére anélkül, hogy más felhasználók hozzáférnének ehhez az információhoz. Egy potenciális lehallgatónak (E) mindehhez meg kellene tudnia értékét, úgy hogy csupán a g-t, a p-t, -t és -t ismeri.

Ezt úgy lehet megtenni, hogy kiszámolja a-t ebből: és b ebből . Ez egy diszkrét logaritmus probléma, amely számításkapacitás szempontjából nem megvalósítható nagy p érték esetén. Egy modulo p szám diszkrét logaritmusát kiszámolni nagyjából annyi időt vesz igénybe, mint a p-vel azonos mérető két prím szorzatának faktorálása. Ezen az időigényen alapul az RSA kriptorendszer biztonságossága.

RSA algoritmus

Az RSA egy nyilvános kulcsú titkosítási algoritmus. Ez az első algoritmus, mely aláíráshoz és titkosításhoz is megfelelő, egyike a nyilvános kulcsú kriptográfiában történt nagy előrelépéseknek. Az RSA széles körben használatos elektronikus kereskedelmi protokollokban, vélhetően biztonságos a kellően hosszú kulcsoknak és a korszerű implementációknak köszönhetően.

Az RSA algoritmus három lépésből áll: kulcsgenerálás, titkosítás, visszafejtés.

Összehasonlítások, tesztek

Ahhoz, hogy kiválaszthassuk a VoIP-ban használható, számításigény szempontjából még elfogadható rejtjelezést, számos kíserletet és összehasonlító tesztelést kellett elvégezni. Az következőkben ismertetjük a vizsgálat eredményeit.

Szimmetrikus titkosítások

Kulcs- és blokkméretek

Az alábbi táblázat összefoglalja a leggyakrabban használt szimmetrikus titkosítási algoritmusok kulcs- és blokkméretét.

1. táblázat: szimmetrikus titkosítások kulcs-é s blokkmérete

Algoritmus

Kulcsméret(bit)

Blokkméret(bit)

DES

64

64

3DES

192

64

RC2

8-128

64

RC6

128,192,256

128

AES

128,192,256

128

Blowfish

32-448

64

Végrehajtási idők P4 2.4 GHz-es gépen

A következő táblázat a titkosítási és visszafejtési műveletek lefutási idejét mutatja milliszekundumban, különböző blokkméretek esetén, a leggyakoribb algoritmusokat használva.

1. táblázat: visszafejtési műveletek futási ideje

Inputméret (Kbyte)

AES

3DES

DES

RC6

Blowfish

RC2

49

56

54

29

41

36

57

59

38

48

33

24

36

60

100

90

81

49

60

37

91

247

112

111

47

77

45

121

321

164

167

82

109

45

168

694

210

226

144

123

46

262

899

258

299

240

162

64

268

963

208

283

250

125

66

295

5345.28

1237

1466

1296

695

122

1570

7310.336

1366

1786

1695

756

107

1915

Átlagos idő

374

452

389

217

60.3

480.7

Eredmény (MB/sec)

4.174

3.45

4.01

7.19

25.892

3.247

3. táblázat: visszafejtési algoritmusok végrehajtási idejének összehasonlítása, különböző csomagméretek esetén

Inputméret (Kbyte)

AES

3DES

DES

RC6

Blowfish

RC2

49

63

53

50

35

38

65

59

58

51

42

28

26

59

100

60

57

57

58

52

90

247

76

77

72

66

66

95

321

149

87

74

100

92

161

694

142

147

120

119

89

165

899

171

171

152

150

102

183

963

164

177

157

116

80

194

5345.28

655

835

783

684

149

904

7310.336

882

1101

953

745

140

1216

Átlagos idő

242

275.6

246

210

83.4

313.2

Eredmény (MB/sec)

6.452

5.665

6.347

7.43

18.72

4.985

Összehasonlítás Crypto++ használatával

Mivel még pontosabb képet akarunk kapni az összehasonlított algoritmusokat illetően, ezen fejezetben más forrásokból kapott eredményekkel is foglalkozunk.

Az egyik ismert kriptográfiai könyvtár a Crypto++. A Crypto++ könyvtár a titkosítási sémák ingyenes C++ osztályú könyvtára. Jelen pillanatban a könyvtár az alábbi táblázatban felsorolt, különböző fejlesztők által megírt kódokat tartalmazza.

4. táblázat: a Crypto++ használatának összehasonlító eredményei

A 3-as táblázat néhány gyakran használt kriptográfiai algoritmus sebesség benchmark-ját tartalmazza. Ezek mindegyike C++-ban íródott. Microsoft Visual C++ .NET 2003-vel fordítva (teljes program optimalizáció, sebességoptimalizáció, P4 kód generálás) az algoritmusok egy Pentium 4 2.1 Ghz-es gépen futottak, Windows XP SP 1. operációs rendszer alatt

Látható, hogy a többihez képest a Blowfish és az AES nyújtja a legjobb teljesítményt. Mindkettőről tudható, hogy jobb a titkosításuk (erősebbek adattámadások ellen), mint a többinek.

Aszimmetrikus titkosítások

RSA teszteredmények

Az asszimetrikus titkosítás matematikája nagyon számításigényes. Egy Intel T7400 processzoron - a népszerű OpenSSL benchmarkkal - elvégzett sebességteszt eredményei a következőek:

5. táblázat: RSA teszteredmények

Kulcsméret(bit)

Kulcstipus

Számítás

Idő(s) adott számítás számra

512

privát

10485

2.77s

512

nyilvános

52428

1.27s

1024

privát

1310

1.80s

1024

nyilvános

13107

0.97s

2048

privát

163

1.45s

2048

nyilvános

3276

0.86s

4096

privát

20

1.27s

4096

nyilvános

819

0.84s

Az RSA-nak jelenleg egy 2790 és 3390 bit közötti modulus méretre van szüksége ahhoz, hogy megfeleljen a 128 bites Rijndael titkosítás biztonságának. A Rijndael-192 biztonsága 7160-8200 bit modulos mérettel érhető el. Ugyanezen adat Rijndael-256 esetében 14200 és 15800 bit közé tehető.

A media streamnek 180 Kbit/s-re van szüksége. Így húsz RSA művelet 1.27 másodperc alatt – ez túl kevés egy teljes asszimetrikus titkosításhoz. Ebből kifolyólag kell hibrid megoldást alkalmaznunk.

Konklúzió és döntés

Ahogy a tesztek mutatják, valós idejű media stream titkosítására az asszimetrikus megoldások nem megfelelőek. Ebből kifolyólag a media streamekhez a következő kettő titkosítási algoritmust választottuk:

  • Blowfish
  • AES

A táblázatokban látható teszteredmények egyértelműen igazolják a választást.

Mivel a szimmetrikus titkosítás legkritikusabb momentuma a szimmetrikus kulcsok cseréje, elfogadható megoldás lehet a szimmetrikus kulcsok asszimetrikus titkosítása. Az RSA algoritmus nagy kulcsmérettel használható, mert ez nem befolyásolja a media titkosításának idejét, csupán a munkafázis létrehozatala tart egy kicsit tovább.

Fontos, hogy megfelelő kézfogás mechanizmust használjunk a kulcscsere folyamathoz. Ez magában kell foglalja a végpont digitális aláírással történő azonosítását, még mielőtt megtörténne a kulcscsere, hogy a középre állásos támadásokat a lehetőségek határáig megakadályozzuk. A TLS protokoll alapjai használhatók a kulcscsere megtervezésére.

Cikksorozatünk következő számában a kulccsere kérdését fogjuk megvizsgálni.

Jelen publikáció eredményei a GOP-1.1.1-08/1-2008-0015 számú, “Biometrikus azonosításon alapuló titkosított hangátvitelt megvalósító, szolgáltató-független, hordozható távközlési végberendezés prototípusának kifejlesztése” című projekt keretében került kidolgozásra.

Kapcsolat: zoltan.hegyes@bh-bess.com

Azóta történt

Előzmények