Tizenhatodik lecke: Ne bízz! Bizonyosodj meg!

Előbb lássuk a bizonyítékot, – mondta a király, – aztán ítélkezünk.

A Bitcoin arra lett létrehozva, hogy lecserélje a jelenlegi pénzrendszerünket, vagy legalábbis azzal párhuzamosan működjön. A hagyományos pénznemeket központi szereplők bocsátják ki, az olyan tartalékvaluták esetében is, mint az USA dollár, vagy említhetjük akár a népszerű lövöldözős játék, a Fortnite V-Bucks nevű, játékon belüli virtuális pénzét. Mindkét esetben meg kell bíznod a kibocsátókban, akik létrehozzák, menedzselik, kezelik a pénzt. A Bitcoin megszünteti ezt a bizalmat, ez a legfőbb probléma, amelyet a hálózat kezelni tud.

„A legfőbb probléma a jelenlegi pénzrendszerünkkel az, hogy bíznunk kell a működtetőkben. Egy olyan elektronikus fizetési megoldásra van szükségünk, amely nem a bizalmon, hanem a kriptográfián alapul.”

Satoshi Nakamoto

A Bitcoin úgy oldja meg a bizalom problémáját, hogy teljesen decentralizáltan működik, bármiféle központi szereplő nélkül. Nem egyszerűen harmadik felek kikerülésével, hanem szó szerint központ nélkül. Ha pedig nincs központ, nincs kiben megbízni. A Bitcoin innovációja a teljes decentralizációban rejlik. Ez az ellenálló-képesség alapja, az ok, hogy miért működik még ma is. A decentralizáció az indok, amiért bányászni kell, csomópontokra van szükség, hardvertárcákat használunk, és igen, egymáshoz láncolt blokkokban tároljuk az adatokat. Az egyetlen dolog, amelyben bíznunk kell, az az, hogy a matematika és a fizika nem fog egyszer csak gyökeresen megváltozni, és az, hogy a bányászok többsége rendesen viselkedik. Erre pénzügyi ösztönzők is vannak a rendszerben, hiszen blokkjutalmat csak a szabályos blokkokért lehet kapni.

A világ úgy működik, hogy „Bízzál, de azért bizonyosodj is meg.”, a Bitcoin viszont a „Ne bízz, hanem mindenképpen bizonyosodj meg!” elvet követi. Satoshi nagyon is világossá tette a bizalom kiiktatásának a fontosságát. A white paper bevezető szekciója mellett az végkövetkeztetések között is megemlítette.

„Létrehoztunk tehát egy rendszert az elektronikus tranzakciókhoz, amely nem a bizalmon alapul.”

Satoshi Nakamoto

A bizalom pedig itt egy nagyon specifikus kontextusban kerül elő. Megbízható harmadik felekről beszélünk, tehát olyan szervezetek, közvetítők kerülnek szóba, akik létrehozzák, őrzik, és kezelik a pénzedet. Emellett feltételezhetjük azt is, hogy az ember megbízhat a saját számítógépében is.

Ahogyan Ken Thomson a Turing-díjas értekezésében rámutatott, a számítástechnika világában nagyon trükkös dolog a bizalom. Amikor egy programot futtatsz, meg kell bíznod egy sor szoftverben, ráadásul a hardvereidben is, hiszen a használni kívánt programodat mindegyik befolyásolni tudja, rosszindulatú módon is akár. Ahogyan végül Thomson összegzi ezt, „az ember nem bízhat meg teljesen semmilyen kódban, hacsak nem ő írta az egészet”.

Kód; Association of Computing Machinery

Thomson rámutatott, hogy ha hozzáférésed is van a forráskódhoz, bármely program vagy hardver módosított lehet, és ezeket a hátsú kapukat elképesztően nehéz észrevenni. Éppen emiatt gyakorlatilag nem létezik bizalommentes rendszer. Ehhez neked magadnak kellene megírnod a programjaid kódját, és megépítened fizikailag az összes hardvert, gépalkatrészt, bármiféle külső segítség nélkül.

„Ha a nulláról akarsz nekiállni almáspitét sütni, ahhoz újra meg kell teremteni az univerzumot.”

Carl Sagan

A Ken Thomson Hack néven ismert hátsó kapu egészen zseniális megoldás. Nézzük meg egy kicsit közelebbről, hiszen ezt észrevenni sem lehet, ráadásul a szoftverek megváltoztatása nélkül működik. A kutatók rájöttek, hogyan tudják kompromittálni a biztonsági szempontból fontos hardvereket, az áramkörök polaritásának a megváltoztatásával. Fizikailag meg lehet változtatni a számítógép-csipek alkotóelemeinek a tulajdonságait, így befolyásolhatjuk a titkosítás felelős véletlenszám-generátor működését. Ezt a változtatást pedig nem lehet észrevenni, hiszen nem lehet látni. Márpedig a csipek legfőbb ellenőrzési metódusa az, hogy alaposan átnézik azokat, optikai eszközökkel.

Láthatatlan, hardveres trójai; Becker, Regazzoni, Paar, Burleson

Ijesztően hangzik, igaz? Szóval, ha képes is vagy mindent megépíteni teljesen a nulláról, akkor is bíznod kell abban, hogy a matematika alapvető szabályai kitartanak. Hinnünk kell, hogy a secp256k1 függvény, amelyet a titkosításhoz használnak, egy hátsó kapuk nélküli elliptikus görbe. A rosszindulatú hátsó kapuk még ezen a szinten is lehetségesek, a kriptográfia alapjait adó matematikai funciókban is feltűnhetnek, ahogy ez már legalább egyszer meg is történt. Jó okunk lehet hát a paranoiára, hiszen szó szerint bármi, szoftver, hardver, és még a használt algoritmusok is kompromittálódhatnak.

„Ne bízz, bizonyosodj meg!”

Látható tehát, hogy a tényleges bizalommentesség csak egy álom a számítástechnikában. A Bitcoin az a rendszer, amely valószínűleg a legközelebb van ehhez az állapothoz, de még így is inkább minimalizálja csak a bizalmat, nem pedig teljesen kiiktatja. Valójában számos más ponton szükség van a bizalomra, hiszen el kell fogadnunk, hogy a számítási kapacitáshoz energia kell, hogy X nem egyenlő Y-nal, és, hogy te a valóságban tartózkodsz, nem pedig egy rosszindulatú összeesküvés által fenntartott szimulációban.

A fejlesztők azon dolgoznak, hogy még nagyobb mértékben eltávolíthassák a bizalmat a rendszerből. Létrehoztak például egy szoftver-megosztó kezdeményezést Gitian néven, ezzel előre meghatározott építési utakat lehet követni. Ha több fejlesztő egymástól függetlenül ugyanazokat az eredményeket kapja a meghatározott útvonalakon, akkor nagyobb a valószínűsége, hogy nem történt rosszindulatú beavatkozás. De nem a hátsó kapuk jelentik az egyedüli támadási vektort. Az egyszerű zsarolás és fizikai kényszerítés ugyanúgy működhet. A decentralizáció alapvetően csak csökkenti a bizalmat.

Nagy erőfeszítések történnek, hogy túljuthassunk a „tojás-vagy-a-tyúk” problémán, és az egyik ilyen például a Guix. Ezzel úgymond le tudsz ellenőrizni bármilyen kódot, hogy úgy néz-e ki, ahogyan eredetileg kellene neki. Tehát ha valaki ártó szándékkal beleírt valamilyen plusz dolgot, azt észre lehet venni. Így nem vagy ráutalva, hogy különböző szoftver-megosztó platformokban kelljen megbízni, hogy a letöltött kódod a kívánt módon működik. Ha a Bitcoin fejlesztésével foglalkozik valaki, akkor a jó hír, hogy nemrégiben felvetődött az ötlet, a Guix megoldása kerüljön bele a fejlesztési környezetbe.

Melyik volt előbb, a tyúk vagy a tojás?

Szerencsére a Bitcoin nem egyetlen algoritmuson vagy hardveren alapul. A Bitcoin nagymértékű decentralizációjának az egyik pozitív következménye az elosztott biztonsági modell használata. A fent említett sebezhetőségeket nem szabad könnyelműen venni, valószínűtlen, hogy minden szoftvertárca, minden hardvertárca, minden titkosítási megoldás, minden csomópont-szoftver, és minden programnyelv kompromittálódott. Lehetséges, viszont nagyon valószínűtlen.

A privát kulcsok létrehozhatók számítógép és szoftver nélkül is. Egyszerű érmefeldobálással is végig lehet menni a karaktereken, bár a saját dobálási stílusod, vagy éppen az érmétől függően a véletlenszerűség nem biztos, hogy 100%-os. Ez az egyik oka, hogy például a Glacierhez hasonló tárolási szolgáltatók például kaszinókban alkalmazható minőségű dobókockákat is használnak a véletlenszám-generátoraikban.

A Bitcoin rákényszerített, hogy átgondoljam, mit is jelent megbízni másokban. Felhívta a figyelmem, hogy a hibakeresés vagy a szoftverfejlesztés során milyen bizalmi láncolaton kell végigmennünk, és rámutatott, hányféle különböző módon lehet befolyásolni a programokat és a hardvereket.

A Bitcoin megtanította, hogy ne bízzak, hanem bizonyosodjak meg.

***

Ez a bejegyzés egy részlet Gigi – 21 Lecke című cikksorozatának magyar fordításából. A tartalomjegyzéket és az ingyen letölthető változatot ide kattintva találod meg.