Arhitektuurne skisofreenia Facebook Kaalud

Kahe aasta pärast naasin blogisse postituse jaoks, mis erineb tavalistest igavatest Haskelli ja matemaatika loengutest. Olen viimased paar aastat ELis fintechi kallal töötanud ja tundub, et on kätte jõudnud aeg kirjutada teemal, mis on tehnikameediast vähe tähelepanu pälvinud.

Facebook avaldas hiljuti nn uue finantsteenuste platvormi nimega Kaalud. See on positsioneeritud digitaalse arveldussüsteemina, mis põhineb rahvusvaheliste valuutade korvil, mida hallatakse "plokiahelas" ja mida hoitakse Šveitsist hallatavas rahakogumis. Projekti eesmärgid on ambitsioonikad ja kaasavad ulatuslikke geopoliitilisi tagajärgi.

В Financial Times и New York Timesile Palju mõistlikke artikleid kavandatava finantssüsteemi taga olevate ebausaldusväärsete rahaliste ja majanduslike eelduste kohta. Kuid tehnilisest aspektist analüüsivõimelisi spetsialiste pole piisavalt. Mitte paljud inimesed ei tööta finantsinfrastruktuuri kallal ega räägi oma tööst avalikult, seega ei leia see projekt tehnoloogilises meedias palju kajastust, kuigi selle sisemus on maailmale avatud. Pean silmas avatud lähtekoodi hoidlates Kaalud и Kalibra organisatsioon.

Maailmale avatud on arhitektuuriliselt skisofreeniline artefakt, mis väidetavalt on globaalse maksete infrastruktuuri turvaline platvorm.

Kui sukeldute koodibaasi, erineb süsteemi tegelik rakendamine seatud eesmärgist täielikult ja seda kõige veidramal viisil. Olen kindel, et sellel projektil on huvitav ettevõtte ajalugu. Seega on loogiline eeldada, et see on kavandatud teatud hoolsusega, kuid tegelikkuses näen ma tõeliselt kummalist arhitektuuriotsuste kogumit, mis lõhuvad kogu süsteemi ja seavad kasutajad ohtu.

Ma ei pretendeeri oma objektiivsele arvamusele Facebooki kui ettevõtte kohta. Vähesed IT-tööstuse inimesed vaatavad teda kaastundega. Kuid selle väidete ja avaldatud koodi võrdlus näitab selgelt, et märgitud eesmärk on põhimõtteliselt petlik. Ühesõnaga, see projekt ei anna kellelegi jõudu. Ta jääb täielikult ettevõtte kontrolli alla, mille reklaamiäri on nii skandaalidesse ja korruptsioonidesse uppunud, et ellujäämiseks ei jää muud üle, kui püüda oma makseid ja krediidiskoori mitmekesistada. Selge pikaajaline eesmärk on tegutseda andmevahendajana ja vahendajana tarbijate krediidile juurdepääsul nende isiklike sotsiaalmeediaandmete põhjal. See on täiesti kohutav ja tume lugu, mis ei pälvi väärilist tähelepanu.

Selle loo ainus päästev arm on see, et nende loodud artefakt ei sobi käsiloleva ülesande täitmiseks nii naljakalt, et seda saab vaadelda vaid ülbusena. Selles projektis on mitmeid suuri arhitektuurilisi vigu:

Bütsantsi kindralite probleemi lahendamine juurdepääsukontrollivõrgus on ebajärjekindel disain

Bütsantsi kindralite probleem on hajutatud süsteemide uurimise üsna kitsas valdkond. See kirjeldab võrgusüsteemi võimet taluda juhuslikke komponentide tõrkeid, võttes samal ajal süsteemi toimimise seisukohalt olulisi parandusmeetmeid. Vastupidav võrk peab taluma mitut tüüpi rünnakuid, sealhulgas taaskäivitusi, katkestusi, pahatahtlikke laadimisi ja pahatahtlikku hääletamist juhivalimistel. See on Kaalude arhitektuuri peamine otsus ja see on siin täiesti mõttetu.

Selle lisastruktuuri ajaline keerukus sõltub algoritmist. Bütsantsi kindralite probleemi lahendavate Paxose ja Raft protokollide variantide kohta on palju kirjandust, kuid kõik need struktuurid toovad kaasa täiendava suhtluse üldkulusid. Arhitektuurne skisofreenia Facebook Kaalud kvoorumi säilitamiseks. Kaalude jaoks valisid nad algoritmi, millel on võimalikult suur suhtluskulu Arhitektuurne skisofreenia Facebook Kaalud juhtimise ebaõnnestumise korral. Ja juhtide võimalik ümbervalimine põhjustab mitut tüüpi võrgutõrgete korral täiendavat üldkulusid.

Kõrgelt reguleeritud rahvusvaheliste korporatsioonide konsortsiumis töötava süsteemi puhul, kus kõigil kasutajatel on Facebooki allkirjaga kood ja juurdepääsu võrgule kontrollib Facebook, pole lihtsalt mõtet konsensuse tasandil pahatahtlike osalejatega arvestada. Ei ole selge, miks see süsteem lahendaks isegi Bütsantsi kindralite probleemi, selle asemel, et säilitada nõuete täitmise kontrollimiseks lihtsalt ühtne kontrolljälg. Võimalus, et Mastercardi või Andressen Horrowitzi juhitav Libra sõlm hakkab ootamatult pahatahtlikku koodi käivitama, on veider stsenaarium, mida tuleks ette planeerida ja seda on parem lahendada lihtsalt protokolli terviklikkuse ja mittetehniliste (st juriidiliste) vahenditega.

Kongressile antud tunnistus andis tootele arve uute rahvusvaheliste makseprotokollide, nagu WeChat, Alipay ja M-Pesa, konkurendiks. Ükski neist süsteemidest pole aga loodud töötama Bütsantsi kindralite probleemi lahendamiseks validaatorite kogumitel. Need on lihtsalt disainitud traditsioonilisele suure ribalaiusega siinile, mis teeb juhtmestiku kindlate reeglite järgi. See on loomulik lähenemine maksesüsteemi kujundamisele. Hästi kujundatud maksesüsteem lihtsalt ei puutu kokku topeltkulu ja kahvlite probleemiga.

Konsensusalgoritmi ülekoormus ei lahenda ühtegi probleemi ja ainult piirab süsteemi läbilaskevõimet muul põhjusel kui avaliku plokiahela cargo-kultus, mis pole selleks kasutusjuhtumiks mõeldud.

Kaaludel puudub tehingute privaatsus

Vastavalt dokumentatsioonile on süsteem projekteeritud võttes arvesse pseudonüümsus, see tähendab, et protokollis kasutatavad aadressid saadakse elliptilistel kõveratel olevatest avalikest võtmetest ega sisalda kontode metaandmeid. Samas ei ole kusagil organisatsiooni juhtimisstruktuuri kirjelduses ega protokollis endas märgitud, kuidas tehingutega seotud majandusandmed valideerijate eest varjatakse. Süsteem on loodud tehingute laiaulatuslikuks kopeerimiseks paljudele välistele osapooltele, kes kehtivate Euroopa ja USA pangasaladust käsitlevate seaduste kohaselt ei tohiks olla kursis majanduse üksikasjadega.

Riikide andmepoliitikat on keeruline kooskõlastada, eriti arvestades erinevaid seadusi ja määrusi erinevates jurisdiktsioonides, millel on erinevad kultuurilised vaated andmekaitsele ja privaatsusele. Protokoll ise on vaikimisi konsortsiumi liikmetele täielikult avatud, mis on selge tehniline puudus, mis ei vasta nõuetele, mille jaoks see on loodud.

Libra HotStuff BFT ei suuda saavutada maksesüsteemi jaoks vajalikku läbilaskevõimet

Ühendkuningriigis on kliiringusüsteemid, nagu BAC, võimelised käsitlema umbes 580 000 000 tehingut kuus. Samal ajal suudavad kõrgelt optimeeritud süsteemid nagu Visa töödelda 150 000 000 tehingut päevas. Jõudlus varieerub sõltuvalt tehingu suurusest, võrgu marsruutimisest, süsteemi koormusest ja AML-i kontrollid (rahapesu tõkestamine, rahapesu skeemid).

Kaalud püüavad lahendada probleeme, mis tegelikult ei ole riigisiseste ülekannete probleemid, kuna rahvusriigid on viimase kümnendi jooksul oma arveldusinfrastruktuuri moderniseerinud. Euroopa Liidu jaetarbijate jaoks pole raha liigutamine sugugi probleem. Traditsioonilises infrastruktuuris saab seda tavalise nutitelefoniga teha sekunditega. Suurte ettevõtete ülekannete puhul on suurte rahasummade liigutamisega seotud erinevad mehhanismid ja reeglid.

Puuduvad muud tehnilised põhjused, miks piiriüleseid makseid ei saaks kohe töödelda, välja arvatud asjaomaste jurisdiktsioonide reeglite ja nõuete erinevused. Kui tehinguahela erinevates etappides tehakse vajalikke ennetavaid meetmeid (kliendi hoolsus, sanktsioonide kontrollid jne) mitu korda, võib see kaasa tuua tehingu venimise. See viivitus on aga puhtalt regulatiivsete õigusaktide ja vastavuse, mitte tehnoloogia funktsioon.

Tarbijate jaoks pole põhjust, miks Ühendkuningriigi tehing mõne sekundiga ei klaariks. Jaemüügitehingud ELis tõepoolest aeglustuvad KYC kontroll (Tunne oma klienti) ja AML-piirangud, mille on kehtestanud valitsused ja reguleerivad asutused, mis kehtivad võrdselt Kaalude maksetele. Isegi kui Facebook ületaks piiriüleste edastuste ja privaatsete andmeedastuste takistused, on pakutud mudel sadade inimaastate kaugusel ülemaailmsest tehingute läbilaskevõimest ja see tuleks tõenäoliselt nullist ümber kujundada.

Libra Move keel on vale

Valges raamatus esitatakse julgeid väiteid uue, testimata keele kohta nimega Move. Need väited on programmeerimiskeele teooria (PLT) seisukohalt üsna kahtlased.

Move on uus programmeerimiskeel kohandatud tehinguloogika ja nutikate lepingute rakendamiseks Kaalude plokiahelas. Kuna Kaalude eesmärk on ühel päeval teenindada miljardeid inimesi, on Move loodud turvalisus esmatähtis.

Move'i põhifunktsiooniks on võime määratleda suvalisi ressursitüüpe lineaarsest loogikast inspireeritud semantikaga.

Avalikes plokiahelates seisavad nutikad lepingud silmitsi tingdeponeerimiskontodega avalike võrkude loogikaga, rahapesuga, börsiväliste žetoonide väljaandmisega ja hasartmängudega. Kõik see on tehtud vapustavalt halvasti disainitud keeles nimega Solidity, mis akadeemilisest vaatenurgast jätab PHP autori geeniuse mulje. Kummalisel kombel tundub, et Facebooki uuel keelel pole nende tehnoloogiatega midagi pistmist, kuna see on tegelikult skriptikeel, mis on mõeldud varjatud ettevõtte eesmärkidel.

Privaatsetes hajutatud pearaamatutes on nutikad lepingud üks neist terminitest, mida konsultandid loobivad ilma selget määratlust või eesmärki arvestamata. Ettevõtlustarkvara konsultandid teenivad tavaliselt raha ebaselgusest ja nutikad lepingud on ettevõtte obskurantismi apoteoos, kuna neid saab määratleda kui sõna otseses mõttes kõike.

Pärast selle turvalisuse kohta väidete esitamist peame vaatama keele semantikat. Programmeerimiskeele teooria korrektsus koosneb tavaliselt kahest erinevast tõendist: "edenemine" ja "säilitamine", mis määravad kogu keele hindamisreeglite ruumi järjepidevuse. Täpsemalt öeldes on tüübiteoorias funktsioon "lineaarne", kui ta kasutab oma argumenti täpselt üks kord, ja "afiinne", kui ta kasutab seda kõige rohkem üks kord. Lineaarse tüübi süsteem tagab staatilise garantii, et deklareeritud lineaarne funktsioon on tõeliselt lineaarne, määrates tüübid kõikidele funktsioonide alamavaldistele ja jälgides, kus helistatakse. See on peen omadus tõestamiseks ja seda ei ole kogu programmi jaoks lihtne rakendada. Lineaarne tüpiseerimine on endiselt väga akadeemiline õppevaldkond, mida mõjutavad tüübi unikaalsuse rakendamine Cleanis ja tüübiomaduse rakendamine Rustis. Lineaarsete tüüpide lisamiseks Glasgow Haskelli kompilaatorisse on mõned esialgsed ettepanekud.

Move'i väide lineaarsete tüüpide kasutamise kohta tundub põhjendamatu sukeldumisena kompilaatorisse, kuna sellist tüübikontrolli loogikat pole. Niipalju kui võib öelda, tsiteerib valge raamat Girardi ja Peirce'i kanoonilist kirjandust ning tegelikus teostuses pole midagi sarnast.

Lisaks ei esine väidetavalt turvalise keele formaalset semantikat teostuses ega dokumendis kusagil. Keel on piisavalt väike, et leida Coqi või Isabelle'i õige semantika täielik tõestus. Tegelikkuses on otsast lõpuni täiskonversioonikompilaatorit koos tõendiülekandega baitkoodile täiesti võimalik rakendada viimasel kümnendil leiutatud kaasaegsete tööriistadega. Me teame, kuidas seda teha, alustades sellest George Necula ja Peter Lee teosed tagasi aastal 1996.

Programmeerimiskeele teooria vaatenurgast on võimatu kontrollida väidet, et Move on usaldusväärne ja turvaline keel, kuna need väited on pigem puhas käega vehkimine ja turundus, mitte tegelik tõendusmaterjal. See on murettekitav olukord keeleprojekti jaoks, millelt palutakse töödelda miljardeid dollareid tehinguid.

Kaalude krüptograafia on vigane

Turvaliste krüptosüsteemide loomine on väga keeruline inseneriprobleem ja ohtliku koodiga töötamisele on alati kõige parem läheneda paranoiaga. Selles valdkonnas on tehtud suuri läbimurdeid, näiteks Microsoft Everesti projekt, mis loob kontrollitava turvalisuse. TLS-i virn. Tööriistad kontrollitavate primitiivide loomiseks on juba olemas. Kuigi see on kallis, ei ületa see Facebooki majanduslikke võimalusi. Meeskond otsustas aga projektis mitte osaleda, mis kuulutati ülemaailmse finantssüsteemi usaldusväärseks vundamendiks.

Kaalude projekt oleneb mitmest üsna uuest teegist eksperimentaalsete krüptosüsteemide loomiseks, mis on ilmunud alles viimastel aastatel. On võimatu öelda, kas sõltuvused järgmistest tööriistadest on ohutud või mitte, kuna ühtegi neist teekidest pole auditeeritud ja neil ei ole standardseid avalikustamispoliitikaid. Eelkõige ei ole mõne põhiteegi puhul kindel kaitse külgkanalite rünnakute ja ajastusrünnete eest.

  1. ed25519-dalek
  2. kõver25519-dalek

Kaalude raamatukogu muutub veelgi eksperimentaalsemaks ja läheb kaugemale standardmudel, rakendades väga uusi tehnikaid, nagu kontrollitavad juhuslikud funktsioonid (VRF), bilineaarsed paarid ja lävisignatuurid. Need meetodid ja teegid võivad olla mõistlikud, kuid nende kõigi ühendamine üheks süsteemiks tekitab tõsist muret rünnaku pindala pärast. Kõigi nende uute tööriistade ja tehnikate kombineerimine suurendab oluliselt turvalisuse tõendamise keerukust.

Tuleks eeldada, et kogu see krüptograafiline virn on haavatav erinevate rünnakute suhtes, kuni pole tõestatud vastupidist. Facebooki kuulsat mudelit „Move Fast and Break Things” ei saa rakendada krüptograafilistele tööriistadele, mis töötlevad klientide finantsandmeid.

Kaalud ei suuda tarbijakaitsemehhanisme rakendada

Maksesüsteemi eripäraks on võimalus tehingut tagasi lükata, kui makse tühistatakse kohtuasja tõttu või kui see toob kaasa juhusliku või süsteemirikke. Kaalude süsteem on loodud olema "täielik" ja ei sisalda makse tühistamise tehingutüüpi. Ühendkuningriigis kehtivad kõik maksed vahemikus 100–30,000 XNUMX naela tarbijakrediidiseadust. See tähendab, et maksesüsteem jagab vastutust müüjaga juhul, kui ostetud tootega on probleeme või kui makse saaja teenust ei osuta. Sarnased reeglid kehtivad ELis, Aasias ja Põhja-Ameerikas.

Kaalude praegune disain ei sisalda protokolli nende seaduste järgimiseks ega oma selget plaani selle loomiseks. Veelgi hullem, arhitektuurilisest vaatenurgast ei võimalda kerneli autentitud andmestruktuuri lõplikkus, mis põhineb Merkle'i draivi olekus, sellise protokolli loomiseks ilma kernelit ümber kujundamata.

Pärast selle projekti tehnilise ülevaatuse läbiviimist võime järeldada, et see lihtsalt ei liigu üheski tunnustatud hajutatud süsteemide uurimise või finantskorralduse ajakirjas. Ülemaailmse rahapoliitika muutmiseks tuleb teha tohutult palju tehnilist tööd, et luua usaldusväärne võrk ja kasutajaandmete turvaline töötlemine, mida avalikkus ja regulaatorid saaksid usaldada.

Ma ei näe põhjust arvata, et Facebook on nende tehniliste probleemide lahendamiseks teinud oma disainiga vajaliku töö või et sellel on praeguse infrastruktuuri ees tehnilisi eeliseid. Öelda, et ettevõte vajab uuenduste uurimiseks regulatiivset paindlikkust, ei ole vabandus, miks neid kõigepealt ei tehta.

Allikas: www.habr.com

Lisa kommentaar