Kormányablak, Ügyfélkapu, magyarorszag.hu, kormany.hu
KORMÁNYABLAK, ÜGYFÉLKAPU - A ZÁRT AJTÓK MÖGÖTT...
(nem hivatalos e-kormányzati témájú oldal)
  
BEMUTATKOZÁS 
E-KÖZIGAZGATÁS 
IT BIZTONSÁG 
  
































  Mottó:
When two worlds collide
So who will survive
There's no place to hide
When two worlds collide
/Iron Maiden:
When two worlds collide/
2012. április 2.  
 P2P ütközések 
   
A nagy állományok tömegek számára való megosztása e-közigazgatási rendszereknél is érdekes lehet, de a magánjellegű használatnál is a MegaUpload bezárása, és a hasonló oldalak korlátozása (a PutLocker valahogy kivétel, ezért ez most az egekben szárnyal) révén derült ki, hogy a háttérben milyen sok helyen használják - legális és illegális tartalmakhoz - őket. Ha azonban a központi, kliens-szerveres megoldások nem működnek, akkor maradnak a peer-to-peer (P2P) hálózatok.

A P2P hálózatoknál a háttérben eddig is erőteljesen kihasználták a kriptográfiát, de az újabb törekvések még inkább előtérbe helyezik. A cél a minél kisebb mértékű függőség kialakítása a központi szervertől, aminek a vége a ú.n. "magnet link". A lényeg nem változik: a nagy állomány darabkáit kriptográfiai lenyomatok (hash) azonosítják egyértelműen. Ezen lenyomatok listáját azonban majd nem "tracker" szerverekről kell lekérdezni, nem is a kiemelt peer-ektől, mint a "distributed hash table" (DHT) esetében, hanem a közvetlen peer-szomszédoktól a "peer exchange" (PEX) protokoll alapján. Nem is az az érdekes most itt, hogy miképp terjesztik tova az egyes peer-ek a hash-listákat, hanem az, hogy a hash lesz az egyetlen lekérdezési paraméter.

Miért is érdekes ez? Mi történne egy esetleges ütközésnél (hash collision)? Ha lenne két különböző tartalmú, de azonos lenyomatú állomány, akkor félremehetne a lekérdezés. Szélsőséges esetben (pl. összesen egy darabból áll az egész letöltendő adat) ez azt jelentheti, hogy a keresett pl. vicces video-val azonos lenyomatú, de már egy exploit-tal kiegészített változatát kapja meg a felhasználó.

A kriptográfiai algoritmusoknak alapvető követelménye az egyirányúság mellett az egyediség is, azonban ritkán, de lehet látni példát arra, hogy ez az elv sérül (ld. az MD5 algoritmust 2004-ben - bővebben a Mai menü: "szósz" és "hekk" bejegyzésemben). A "magnet link" lenyomatok esetében SHA-1 algoritmust használnak az alábbi módon:

A "magnet:" prefix után több paramétert is meg lehet adni (pl. "dn" - "display name", "kt" - "keyword topic", "mt" - "manifest topic"), azonban ezek közül az "xt" ("exact topic") az, amelyiket mindegyik rendszer tudja értelmezni, illetve számunkra is ez a legfontosabb, mert ez tartalmazza a kriptográfiai lenyomatot. A BitTorrent esetében az "xt" paraméter az "urn:btih:" prefix-et és a Base16 (hex) vagy Base32 kódolt SHA-1 lenyomatot tartalmazza.

Mekkora az esélye annak, hogy SHA-1 algoritmus esetében találunk ütközést? Az algoritmusban egyelőre nem találtak olyan sérülékenységet, mint az MD5, vagy az SHA-0 esetében, de azért nem is teljesen "érintetlen"... Az SHA-1 algoritmus pszeudo-kódja szerint XOR és rotate műveleteket hajt végre egy olyan ciklusban, amit 80-szor kell lefuttatni. Az ütközések keresésénél fontos mérőszám, hogy az eredeti algoritmus lépéseit megtartva, de hányadik ciklusban találnak egyezést. A 80 körös ciklus esetében akkor lenne teljes a törés, ha a 80. kör végén, azaz a teljes SHA-1 lefutása után találnának két azonos lenyomatot a különböző bemenetekhez. Egyelőre ott tart a tudomány, hogy 2005-ben az 53. körnél, majd az 58. körnél, 2006-ban a 64. körnél, 2007-ben a 70. körnél, 2010-ben a 73. körnél, 2011-ben a 75. körnél találtak egyezést (a 80-ból). Természetesen nem szabad messzemenő következtetéseket levonni az eddigi tendenciákból, de tény, hogy 2012. január 1. óta - a nemzetközi iránymutatásoknak megfelelően - Magyarországon, "minősített" szintű rendszereknél már SHA-256 algoritmust kell használni SHA-1 helyett.

Az eddigi legjobb eredményeket 2011-ben E. A. Grechnikov érte el, aki a 75. körben tudott egyezést találni. Ahhoz, hogy be tudjam mutatni az eddigi "legerősebb" ütközést, Marcus Campbell és Jerome Clarke PHP-s SHA-1 implementációját vettem kölcsön, ami kis módosítás után már a kívánt módon működött. Ellenőrzésképpen megnéztem, hogy a 80. kör eredménye megegyezik-e a PHP, illetve OpenSSL beépített függvényeinek kimenetével. Mivel ezzel nem volt gond, így már hihető volt, hogy a 75. lépésnél ott virító két azonos lenyomat a különböző bemenetekre hiteles eredmény...

Az egyszerű felhasználó manapság még ritkán botlik bele olyan rendszerekbe (pl. elektronikus aláírást használó iratkezelő alkalmazásba), ahol már kizárólag az SHA-256 algoritmust lehet használni. Ahol viszont naponta találkozik minden felhasználó a kriptográfiával, az pont a SSL/TLS csatorna, ami a rejtjelezés révén védi a bizalmas adatokat pl. Facebook vagy GMail bejelentkezéskor. Joggal lehet feltenni a kérdést azonban, hogy akkor ezek a fontos rendszerek miért használnak még jelenleg is SHA-1 + RSA algoritmussal aláírt tanúsítványokat? A válasz egyszerű: egy algoritmusváltás azt is jelentheti, hogy azonnal hozzáférhetetlenné válik a fiókok jelentős hányada a felhasználók számára, ugyanis ezen "új" algoritmusokat csak bizonyos patch-ekkel megáldott operációs rendszerek tudják kezelni. Ebben ráadásul az az érdekes, hogy még csak nem is a Windows XP SP3, vagy Windows Server 2003 SP1 (+ KB938397) megugrása a problémás. Elsősorban az üzletemberek körében számítanak elterjedtnek az iOS-alapú rendszerek, amelyeknél azonban a böngésző kriptográfiai rétegét biztosító OpenSSL-nek egy SHA-256 algoritmust nem támogató, sok évvel ezelőtti példánya ma is a hivatalos, legfrissebb változat (persze, jailbreak után a github-ról már le lehet szedni iOS-re portolt újabb OpenSSL-t). Így aztán könnyen előfordulhat, hogy az iOS-t használó menedzser nem tud belépni saját netbankjának felületén...

Amíg a világ az SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) családra való átállással foglalatoskodik, addig a háttérben zajlik az SHA-3 családnak szánt algoritmus (pl. Skein, Keccak) kiválasztásának versenye, ahol az eredményhirdetést idénre, 2012-re ígérték.

UPDATE:
A NIST (National Institute of Standards and Technology) 2012 október 2-án a Keccak algoritmust választotta ki az SHA-3 család alapjául.

Kapcsolódó anyagok:
 vissza 
   
  info@kormanyablak.org
info@ugyfelkapu.info