BitMessage: egy új Web 2.0-modell?

2012-12-10

Szerző: Vitalik Buterin

A titkosítási technológiák demokratizálódása mindeddig példátlan szintű magánszféra-védelmi lehetőségeket tárt elénk az elmúlt húsz év során, melyek segítségével már az átlagember is tallózhat dokumentumok között, beszélgethet, sőt – a Bitcoin révén – immár pénzt is küldhet világszerte bárkinek anélkül, hogy abba akár a leghatalmasabb kormányok vagy vállalatok is beleszólhatnának. E technológiák tényleges elterjedése – és ezáltal a lehetőségek realizálása – mégis mindvégig rendkívül lassú maradt. 1991-ben, amikor Phil Zimmermann megalkotta a PGP kódolórendszert, sokan vélték úgy, hogy néhány éven belül ez lesz az email-kommunikáció új, univerzális szabványa – de ehhez képest itt vagyunk immár 2012-ben, és az email-kommunikáció legnagyobbrészt még mindig teljesen nyíltan, titkosítatlanul zajlik, a szolgáltatók pedig – így például a Gmail – minden további nélkül beleolvashatnak mindenbe és bármibe, amit csak írnak a felhasználóik.

Egyesek szerint a titkosítási technológiákat mindössze egyetlen ok miatt nem építették be az email-protokollokba – ez az ok pedig értelemszerűen nem más, mint a profit. Elvégre ha a Google nem szkennelhetné végig a felhasználói emailjeit különböző kulcsszavak után kutatva, úgy személyre szabott hirdetéseket sem kínálhatnának nekik, és így nem is termelhetnének annyi bevételt. Mások emellett az emberek általános apátiájára hivatkoznak, Mark Zuckerberg híres kijelentését idézve, mely szerint a társadalom már nem igényli a magánszférát. Van azonban itt még egy harmadik, még alapvetőbb tényező is, ami pedig nem más, mint a hálózati hatás: ha most azonnal küldenél egy barátodnak egy PGP-vel titkosított emailt, úgy az jó eséllyel nemigen tudna mit kezdeni vele. A titkosításnak csak akkor van értelme, ha a barátod is rendelkezik a megfelelő dekódolókulccsal – legyen az bár egy nyilvános vagy egy általatok közösen meghatározott szimmetrikus kulcs. Aki pedig igazi kihívást keres, az próbáljon csak meggyőzni egy nem annyira technológiai érdeklődésű embert arról, hogy miért is lenne érdemes ilyen kulcsokat használnia. Vannak ugyan olyan elszigetelt közösségek, amelyek használnak ilyesféle kódolási technikákat, akár ideológiai okok miatt, akár kényszerűségből (így pl. a Bitcoin közösségében is számos olyan álneves üzletember és fejlesztő tevékenykedik, akik PGP útján tartják fenn az online “álarcukat”), de a széles nyilvánosságra ez a legkevésbé sem jellemző. Az átlagember csak akkor élne ilyesmikkel, ha eléggé népszerű és elterjedt lenne a kódolt email, mint olyan, de mivel ez jelenleg is csak egy marginálisan használt technológia, ezért nem fognak élni vele. Így pedig továbbra is fennmarad a 22-es csapdája-jellegű helyzet.

Itt lép be aztán a képbe a Bitcoin. Amire bár hajlamosak vagyunk egyszerűen úgy gondolni, mint egy alapvetően csak pénzügyi tranzakciók lebonyolítására tervezett rendszerre, a közelmúlt fejleményei mégis szépen illusztrálták, hogy mennyivel több mindenre is ad lehetőséget a rendszer kriptográfiája. Egyesek már 2011-ben is kódoltak különböző üzeneteket a blokkláncba a bitcoin-tranzakciók alsóbb számaival; az egyik Bitcoinica-tolvaj például ily módon tette közzé az “expect mass leak soon” (= “hamarosan tömeges kiszivárogtatásra számíthattok”) c. üzenetét. Túl azon, hogy ez az üzenete most már mindörökre ott is marad, a blokkláncba kódolva, ennek az eljárásnak megvan még az az előnye is, hogy hitelesített is egyben, mivel ilyen üzenetet csak akkor küldhet az ember, ha valóban rendelkezik annak a címnek a kulcsaival, amelyről az üzenetet kódoló tranzakciókat indította. Ha azt már lehet tudni, hogy egy bizonyos cím hozzád tartozik, akkor ezzel együtt teljesen nyilvánvaló lehet az is, hogy valóban te indítottad a szóban forgó tranzakciókat is.

Ez az ad-hoc üzenőrendszer azonban meglehetősen otromba, és a hatásfoka sem valami jó – azóta pedig már két újabb változatával is találkozhattunk a bitcoinos üzenetküldés koncepciójának. Az első a Blockchain.info-féle blokklánc-jegyzetek rendszere. Az alapelv igen egyszerű: a feladó létrehoz egy nem szabványos, két kimenetes tranzakciót. Az egyik kimenet egy egészen minimális, jelképes összeget küld a fogadónak, a másik pedig nem szól senkinek egyáltalán; ennek a kimenete tartalmazza magát az üzenetet. Szkriptként ezt az üzenetet értelmezni nem lehet – ezáltal teljesíteni sem -, így az egyszerűen ott marad a blokkláncban, és soha nem kerül elköltésre. A Bitcoin fejlesztői azonban erősen ellenzik ezt az eljárást, mivel feleslegesen szemeteli össze a blokkláncot. Ahogy azt Gavin Andersen is megfogalmazta: “Igen, kérünk mindenkit, hogy ne hozzátok létre elkölthetetlen scriptPubKey-ek tömkelegeit. Vannak sokkal kezelhetőbb módjai is a tranzakciókba ágyazott üzenetküldésnek – és még hatékonyabb módjai is az üzenetek tranzakciókkal való összekapcsolásának, hogy csak az adott tranzakcióban érintett felek olvashassák el a szóban forgó üzenetet (ha ez a cél). Szóval, találjuk már meg ennek a megfelelő módját.” A blokklánc-jegyzetelő rendszert rövidesen be is falazták a blockchain.info tárcaszolgáltatásába.

A második az üzenet-aláírások rendszere. A hivatalos (Satoshi-) Bitcoin-kliens 0.6 verziója élesítette be először azt a funkciót, amelynek segítségével a kliens üzeneteket is ugyanúgy aláírhat az algoritmusával, mint ahogyan bitcoinos tranzakciókat is. Így az eddig csak a bányászok által az egyes tranzakciók ellenőrzésére használt kriptográfiai eljárásokkal immár az ily módon aláírt üzenetek hitelességét is ellenőrizheti bárki (az ehhez szükséges eszköz a 0.7-es Satoshi-verzióval került szintén élesítésre – de az Electrum és a Brainwallet.org is támogatja ezt a szabványt aláírások és ellenőrzés esetében is). Ez a mechanizmus tehát már a blokklánc összeszemetelése nélkül biztosítja a hitelesítést, viszont ugyanakkor megvan a saját baja is: nem rendelkezik beépített üzenettovábbító rendszerrel. A PGP-hez hasonlóan így csak akkor lehet aláírt üzenetet küldeni vele, ha létrehozunk egy olyan formátumot (mint a PGP-nél az ASCII armoring), amely egy blokkban egyesíti az üzenetet és az aláírást, majd ezt a blokkot küldjük el teljes egészében üzenetként. Amivel így lényegében egy, a Bitcoin elliptikus görbés kriptográfiájára épülő PGP-klónt hozunk létre, annak minden előnyével és hátrányával.

A BitMessage azonban mindkét problémát megoldja egyszerre. Ez ugyanis a Bitcoiné helyett egy saját, kifejezetten üzenetküldésre tervezett P2P-hálózatot hoz létre. Ahogy azt a rendszer technikai leírásában is elmagyarázzák, “az objektumok egy Bitmessage-streamen keresztül kerülnek továbbításra. Azt javasoljuk, hogy a csomópontok kereken két napig tároljanak minden objektumot, majd töröljék azokat. A hálózathoz csatlakozó csomópontok lekérik mindazon objektumok listáját, amelyekkel még nem rendelkeznek, így ők is hozzájuthatnak az elmúlt két nap összes nekik címzett üzenetéhez.” Az “objektumok” a hálózat működési alapegységei, és az egész hálózatban elterjesztésre kerülnek. A spammelés és a gátlástalan, tömeges üzenetküldés megakadályozása érdekében az objektumok létrehozása munkabizonyíték-számítást igényel, ami egy átlagos számítógépen megközelítőleg négy percet vesz igénybe. Más szóval ez tehát tekinthető Adam Back 1997-ben felvázolt HashCash-koncepciója újrahasznosításának is.

Ebben a rendszerben az üzenetküldés négy lépésből áll. Az üzenetküldő először is létrehoz egy objektumot, amellyel elkéri a címzett nyilvános kulcsát. Amikor aztán a címzett megkapja ezt, ő is létrehoz egy válasz-objektumot, amellyel visszaküldi a kulcsát az üzenőnek. Az üzenő így már létre tudja hozni a tényleges üzenetet tartalmazó, a címzett nyilvános kulcsával kódolt objektumot, amit így már el is küldhet neki – aki pedig végül egy visszaigazolással jelzi, hogy sikeresen megkapta az üzenetet. Maga az üzenet természetesen sokkal hosszabb is lehet annál a rövid karaktersztringnél, amit még be lehet illeszteni tranzakciók egy sorába vagy egy kimeneti rekeszbe; a technikai leírás konkrétan ki is mondja, hogy ez a rendszer “egyéneknek és vállalatoknak is egyaránt lehetőséget biztosítana tartalmak névtelen publikálására”. Ha az üzenetküldés idején a címzett és a feladó is online vannak, úgy az egész folyamat pillanatok alatt végbemehet – egyéb esetben pedig két napjuk van rá, hogy négy egymást követő alkalommal fellépjenek a hálózatra (sőt, akár csak három is elég lehet, mivel a visszaigazolás már nem kulcsfontosságú része a folyamatnak, a tényleges üzenetküldés és fogadás már azelőtt lezajlik) a folyamat teljes lebonyolítása érdekében. További könnyebbség, hogy ha a felek már rendelkeznek egymás nyilvános kulcsával, úgy az első és a második lépést is kihagyhatják. A BitMessage a személyazonosságokat a Bitcoin-címekhez hasonló, nyilvános kulcsokból kialakított címeken tárolja, amelyek például így nézhetnek ki: “BM-2nijaB5b1C6HESgdqFMoMzWqNchA9w84Xmv”.

Persze azért a BitMessage-nek is megvannak a maga hibái – annak ellenére is, hogy az alapkoncepciója nagyon jó és eléggé innovatív is egyben. Egy blogger például a rendszer biztonsági problémáira mutatott rá igen élesen, jelezve, hogy több alapvető hibát is vétettek a kódolóalgoritmusok alkalmazásában. Először is, közvetlen RSA-t használnak az üzeneteknél ahelyett, hogy egy egyszeri kulcsot generálnának vele, és azzal kódolnák aztán az üzenetet; ez csak egy igen apró és egyszerű módosítás, de máris nagyban felgyorsítja és lényegesen biztonságosabbá is teszi a rendszert, eleve kivédve a kifejezetten az algoritmus matematikai tulajdonságainak kiaknázására tervezett, mesterséges blokkok létrehozására épülő támadásokat. Másodszor, egymástól függetlenül kódolnak minden egyes blokkot ahelyett, hogy összekapcsolnák azokat egyfajta kódolt blokkláncba. Ennek hiányában pedig egy támadó tetszés szerint átrendezheti egy kódolt üzenet blokkjait, amitől azonban az még mindig hitelesnek látszik majd a címzett oldalán, mintha a feladó eredetileg is a támadó által módosított sorrendben küldte volna azt. Harmadszor, hitelesítő réteget sem építettek be a kódolómechanizmusba, újabb különbözőféle és -fajta támadási lehetőségek előtt nyitva meg így a kaput. Pozitív azonban, hogy Jon Warren, a BitMessage fejlesztője mindezt tudomásul vette, és jelenleg is keményen dolgozik a protokoll egy újabb verzióján, amely már kiküszöböli ezeket a hibákat is.

További komoly hiányossága azonban a BitMessage-nek még az is, hogy nem kompatibilis a Bitcoinnal. A tranzakcióit – és immár üzeneteit is – elliptikus görbés kriptográfiával (ECC) kódoló Bitcoinnal ellentétben ugyanis a BitMessage 2048 bites RSA-t használ, amivel sok tekintetben nehezebb dolgozni, mint az ECC-vel; a 2048 bites RSA ugyanis csak jóval hosszabb kulcsokkal tudja biztosítani ugyanazt a védettséget, mint amit az ECC lényegesen rövidebbekkel (a Bitcoin 256 bites ECC-jének például csak a 3072 bites RSA feleltethető meg úgy hozzávetőlegesen). Mivel pedig az RSA-kulcsoknak egy bizonyos tulajdonsággal is rendelkezniük kell ahhoz, hogy érvényesek legyenek (két nagy prímszámból kell előállítani őket), ezért viszonylag lassan lehet csak előállítani őket, és arra sincs lehetőség, hogy szabványosított algoritmusok útján, determináltan generálhassunk kulcspárokat seedekből. A Bitcoin-kompatibilitás legfőbb előnye azonban még ezen is túlmutat; ha ugyanis egy ilyen rendszer kompatibilis lenne a Bitcoin titkos és nyilvános kulcsaival, úgy az építhetne a Bitcoin már meglévő infrastruktúrájára is. Használhatná a Bitcoin-felhasználók tárcáiban már most ott gubbasztó több százezer titkos és nyilvános kulcsot, és kivághatná az üzenetküldés folyamatából a nyilvános kulcs elkérésének lépését is, mivel a kulcsot ez esetben könnyedén kiolvashatná a blokkláncból is.

Egyesíteni lehetne így továbbá az üzenetküldés és a kifizetés funkcióit is, létrehozva így egy afféle decentralizált közösségi hálózatot. Ha például Alice küldene 10 BTC-t Bobnak, úgy nem kellene ehhez elkérnie Bob címét, ahogyan jelenleg, hanem egyszerűen küldhetné az összeget ugyanarra a címre, amin keresztül már eddig is bonyolították egymással a magánlevelezéseiket. Ezt a rendszert elég jól meg is lehet erősíteni a magánszféra védelme érdekében. Az elliptikus görbés kriptográfia egyik érdekes jellegzetessége ugyanis az úgynevezett többszörözés, avagy multiplikáció művelete: egy nyilvános kulcsot ha megszorzunk egy adott értékkel, úgy máris létrehoztunk egy újabb nyilvános kulcsot; Alice így generálhat magának egy újabb címet és Bob is létrehozhat magának egy ennek megfelelő új titkos kulcsot a már meglévő kulcsából egyszerűen azáltal, ha megszorozza azt ugyanazzal az értékkel, amit Alice is használt. Ez a kulcs az Electrumban már jelenleg is alkalmazott determinisztikus tárca-megoldásnak, amit értelemszerűen ugyanúgy használhatunk üzenetküldéshez, ahogyan a kifizetések kezeléséhez is.

Szerencsére a BitMessage protokollját Warren eleve fejleszthetőre tervezte, így az sem kizárt, hogy annak a következő verziója már nem csak a jelenlegi biztonsági problémákat oldja meg, de egyben bevezeti a Bitcoin-kompatibilitást is azáltal, hogy egyszerűen átállítja a BitMessage-et ugyanarra az elliptikus görbe-rendszerre, amit a Bitcoin is használ. Ha a BitMessage ilyen szépen fejlődik tovább – vagy akár ha egy másik, hasonló technológia veszi majd át a helyét -, úgy idővel valóban létrehozhat egy olyan decentralizált, kriptográfiailag is biztonságosan védett platformot, amire már nyugodtan alapozhatják a felhasználók akár az egész online életüket is. Idővel akár bizalomhálózattal is kibővíthető majd a rendszer, melynek keretében szisztematikusan megjelölhetjük a barátainkat, ismerőseinket és üzletfeleinket vagy épp személyes weboldalainkat, és a Twitterhez hasonló módon követhetjük egyesek posztjait és kiírásait. Jó esély van rá, hogy az elkövetkező, hozzávetőlegesen tíz év során a Bitcoin sokkal többet is fog még nyújtani nekünk, mint egyszerűen csak egy decentralizált, digitális pénzrendszert; akár az internet teljes, az alapoktól való újrafejlesztésének a katalizátorává is válhat, lehetőséget adva így arra, hogy immár helyesen építsük fel újra a világhálót.

Forrás: Bitcoin Magazine

A lap szövege Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 3.0 licenc alatt áll, felhasználni csak forrásmegjelöléssel, és ide mutató linkkel szabad.