Schizophrenia Arsitektur Facebook Libra

Dua tahun kemudian, saya kembali ke blog untuk posting yang berbeda dari kuliah membosankan yang biasa tentang Haskell dan matematika. Selama beberapa tahun terakhir, saya telah berurusan dengan teknologi keuangan di UE, dan tampaknya sudah tiba saatnya untuk menulis tentang topik yang kurang diperhatikan oleh media teknis.

Facebook baru-baru ini merilis apa yang disebutnya "platform layanan keuangan baru" yang disebut Libra. Itu diposisikan sebagai sistem pembayaran digital berdasarkan sekeranjang mata uang internasional yang dikelola pada "blockchain" dan disimpan dalam kumpulan uang tunai yang dikelola dari Swiss. Tujuan proyek ini ambisius dan memerlukan konsekuensi geopolitik skala besar.

Financial Times dan New York Times memiliki banyak artikel yang masuk akal tentang asumsi moneter dan ekonomi yang tidak masuk akal di jantung sistem keuangan yang diusulkan. Tetapi tidak ada cukup spesialis yang mampu menganalisis dari sudut pandang teknis. Tidak banyak orang bekerja di infrastruktur keuangan dan berbicara di depan umum tentang pekerjaan mereka, sehingga proyek ini tidak terlalu dibahas di media teknis, meskipun bagian dalamnya terbuka untuk seluruh dunia. Maksud saya open source dalam repositori Libra dan Calibra Organization .

Apa yang terbuka bagi dunia adalah artefak skizofrenia arsitektur dengan klaim peran platform yang aman untuk infrastruktur pembayaran global.

Jika Anda terjun ke basis kode, maka implementasi sebenarnya dari sistem benar-benar berbeda dengan tujuan yang dinyatakan, dan dengan cara yang paling aneh. Saya yakin bahwa proyek ini memiliki sejarah perusahaan yang menarik. Oleh karena itu, logis untuk menganggap bahwa itu dikembangkan dengan semangat, tetapi dalam kenyataannya saya melihat serangkaian solusi arsitektur yang benar-benar aneh yang memecah seluruh sistem dan membahayakan pengguna.

Saya tidak akan mengklaim pendapat objektif tentang Facebook sebagai perusahaan. Hanya sedikit orang di industri TI yang melihatnya dengan simpati. Tetapi perbandingan pernyataannya dan kode yang diterbitkan jelas menunjukkan bahwa tujuan yang dinyatakan adalah tipuan mendasar. Singkatnya, proyek ini tidak memberdayakan siapa pun. Dia akan tetap sepenuhnya berada di bawah kendali perusahaan yang bisnis periklanannya begitu terjerat dalam skandal dan korupsi sehingga dia tidak punya pilihan selain mencoba melakukan diversifikasi pembayaran dan penilaian kredit untuk bertahan hidup. Tujuan jangka panjang yang jelas adalah bertindak sebagai perantara data dan perantara dalam akses konsumen ke kredit berdasarkan data pribadi mereka di jejaring sosial. Ini adalah kisah yang benar-benar menakutkan dan suram, yang tidak memperhatikannya.

Satu-satunya rahmat yang menyelamatkan dari cerita ini adalah bahwa artefak yang mereka buat sangat lucu sehingga tidak sesuai dengan tugas yang hanya dapat dilihat sebagai tindakan kebanggaan. Ada beberapa kesalahan arsitektur dasar dalam proyek ini:

Memecahkan masalah jenderal Bizantium di jaringan dengan kontrol akses adalah desain yang tidak konsisten


Tugas para jenderal Bizantium adalah bidang penelitian sistem terdistribusi yang agak sempit. Ini menggambarkan kemampuan sistem jaringan untuk menahan kegagalan komponen sembarang ketika mengambil tindakan korektif yang penting untuk berfungsinya sistem. Jaringan yang tangguh harus tahan terhadap beberapa jenis serangan, termasuk memulai kembali, kegagalan, beban jahat, dan pemungutan suara berbahaya dalam pemilihan kepemimpinan. Ini adalah solusi utama untuk arsitektur Libra, dan itu sama sekali tidak ada gunanya di sini.

Kompleksitas overhead waktu dari struktur tambahan ini tergantung pada algoritma. Ada banyak literatur tentang varietas protokol Paxos dan Raft dengan solusi masalah jenderal Bizantium, tetapi semua struktur ini menimbulkan biaya overhead komunikasi tambahan. O(n2)untuk mempertahankan kuorum. Untuk Libra, kami memilih algoritma dengan biaya komunikasi setinggi mungkin O(n2)dalam hal kegagalan kepemimpinan. Dan ada tambahan biaya tambahan dari pemilihan ulang pemimpin yang potensial untuk beberapa jenis peristiwa kegagalan jaringan.

Untuk sistem yang beroperasi dalam konsorsium perusahaan multinasional yang sangat diatur, di mana semua pengguna memiliki kode yang ditandatangani Facebook dan akses Facebook ke jaringan dikontrol, tidak ada gunanya mempertimbangkan peserta jahat di tingkat konsensus. Tidak jelas mengapa, secara umum, sistem ini menyelesaikan masalah para jenderal Bizantium, dan tidak hanya mempertahankan jejak audit yang konsisten untuk memverifikasi kepatuhan. Kemungkinan bahwa tuan rumah Libra, yang dikelola oleh Mastercard atau Andressen Horrowitz, tiba-tiba mulai menjalankan kode berbahaya, adalah skenario perencanaan yang aneh dan lebih baik diselesaikan dengan hanya memastikan integritas protokol dan sarana non-teknis (yaitu legal).

Dalam kesaksian untuk Kongres, produk tersebut dinyatakan sebagai pesaing protokol pembayaran internasional baru seperti WeChat, Alipay dan M-Pesa. Namun, tidak satu pun dari sistem ini dirancang untuk bekerja pada kumpulan validator untuk menyelesaikan masalah para jenderal Bizantium. Mereka hanya dirancang pada bus throughput tradisional tinggi yang membuat kabel sesuai dengan seperangkat aturan tetap. Ini adalah pendekatan alami untuk desain sistem pembayaran. Sistem pembayaran yang dirancang dengan baik sama sekali tidak memenuhi masalah pengeluaran ganda dan garpu.

Overhead dari algoritma konsensus tidak menyelesaikan masalah dan hanya membatasi throughput sistem tanpa alasan selain kultus kargo dari blockchain publik, yang tidak dimaksudkan untuk kasus penggunaan ini.

Libra tidak memiliki privasi transaksi


Menurut dokumentasi, sistem dirancang dengan mempertimbangkan nama samaran akun, yaitu, alamat yang digunakan dalam protokol diperoleh dari kunci publik pada kurva eliptik dan tidak mengandung metadata tentang akun. Namun, tidak ada dalam uraian struktur manajemen untuk organisasi atau dalam protokol itu sendiri yang tidak menunjukkan bagaimana data ekonomi yang berpartisipasi dalam transaksi akan disembunyikan dari validator. Sistem ini dirancang untuk replikasi transaksi skala besar untuk sejumlah pihak eksternal, yang, sesuai dengan undang-undang kerahasiaan bank Eropa dan Amerika yang ada, tidak boleh dikhususkan untuk rincian ekonomi.

Kebijakan data di berbagai negara sulit dikoordinasikan, terutama karena undang-undang dan peraturan yang berbeda di yurisdiksi berbeda yang memiliki pandangan budaya berbeda tentang perlindungan data dan privasi. Protokol itu sendiri secara default sepenuhnya terbuka untuk anggota konsorsium, yang merupakan kelemahan teknis yang jelas yang tidak memenuhi persyaratan untuk pengembangannya.

Libra HotStuff BFT tidak dapat mencapai bandwidth yang diperlukan untuk sistem pembayaran


Di Inggris, sistem kliring seperti BAC mampu melakukan sekitar 580 juta transaksi per bulan. Pada saat yang sama, sistem yang sangat optimal seperti Visa dapat memproses 150.000.000 transaksi per hari. Kinerja tergantung pada ukuran transaksi, perutean jaringan, beban sistem dan cek AML (anti pencucian uang, skema pencucian uang).

Libra sedang mencoba menyelesaikan masalah yang untuk transfer domestik tidak benar-benar masalah, karena negara-negara telah memodernisasi infrastruktur kliring mereka dalam dekade terakhir. Untuk konsumen ritel di Uni Eropa, memindahkan uang bukanlah masalah sama sekali. Pada infrastruktur tradisional, ini dapat dilakukan dengan smartphone standar dalam hitungan detik. Untuk transfer perusahaan besar, ada berbagai mekanisme dan aturan yang terkait dengan pergerakan volume uang yang besar.

Tidak ada alasan teknis mengapa pembayaran lintas batas juga tidak dapat dilakukan secara instan, dengan pengecualian perbedaan aturan dan persyaratan antara masing-masing yurisdiksi. Jika tindakan pencegahan yang diperlukan (uji tuntas klien, verifikasi sanksi, dll.) Dilakukan beberapa kali pada berbagai tahap rantai transaksi, ini dapat menyebabkan keterlambatan dalam transaksi. Namun, penundaan ini murni fungsi dari hukum pengaturan dan penegakannya, bukan teknologi.

Bagi konsumen, tidak ada alasan mengapa kesepakatan di Inggris tidak akan diselesaikan dalam hitungan detik. Transaksi ritel di UE benar-benar melambat pada pemeriksaan KYC (Know Your Customer) dan pembatasan AML yang diberlakukan oleh pemerintah dan regulator yang sama-sama berlaku untuk pembayaran Libra. Bahkan jika Facebook mengatasi hambatan untuk transfer internasional dan transfer data pribadi, model yang diusulkan adalah ratusan tahun per tahun dari throughput transaksi global dan kemungkinan akan diproses dari awal.

Bahasa Libra Move salah


Kertas putih membuat pernyataan berani tentang bahasa baru yang belum diverifikasi yang disebut Pindah. Pernyataan-pernyataan ini agak diragukan dari sudut pandang teori bahasa pemrograman (PLT).

Move adalah bahasa pemrograman baru untuk menerapkan logika transaksi khusus dan "kontrak pintar" di Libra blockchain. Karena Libra bertujuan untuk suatu hari melayani miliaran orang, Move dirancang dengan prioritas utama pada keamanan.

Fitur utama Move adalah kemampuan untuk menentukan jenis sumber daya yang berubah-ubah dengan semantik yang diinspirasi oleh logika linier.

Dalam blockchain publik, kontrak pintar berjalan ke logika jaringan publik dengan akun escrow, pencucian uang, masalah token yang dijual bebas, dan perjudian. Semua ini dilakukan dalam bahasa yang dirancang dengan buruk yang disebut Solidity, yang dari sudut pandang akademik membuat penulis PHP terlihat seperti orang jenius. Anehnya, bahasa baru dari Facebook tampaknya tidak ada hubungannya dengan teknologi ini, karena sebenarnya bahasa scripting dirancang untuk tugas-tugas perusahaan yang tidak jelas.

Dalam buku besar yang didistribusikan secara pribadi, kontrak pintar adalah salah satu istilah yang disebarkan oleh konsultan tanpa banyak perhatian pada definisi atau tujuan yang jelas. Konsultan perangkat lunak perusahaan biasanya menghasilkan uang dengan ambiguitas, dan kontrak yang cerdas adalah pendewaan dari obskurantisme perusahaan karena mereka dapat didefinisikan secara harfiah sebagai apa saja.

Setelah pernyataan tentang keamanannya, kita harus melihat semantik bahasanya. Kebenaran dalam teori bahasa pemrograman biasanya terdiri dari dua bukti yang berbeda: "kemajuan" dan "pelestarian", yang menentukan konsistensi seluruh ruang aturan evaluasi untuk suatu bahasa. Lebih khusus lagi, dalam teori tipe, fungsi adalah "linier" jika ia menggunakan argumennya tepat sekali, dan "affine" jika menggunakannya tidak lebih dari sekali. Sistem tipe linier memberikan jaminan statis bahwa fungsi linier yang dideklarasikan benar-benar linier, menetapkan tipe untuk semua sub-ekspresi fungsi dan melacak lokasi panggilan. Ini adalah properti halus untuk pembuktian, dan tidak mudah diterapkan untuk seluruh program. Pengetikan linear masih merupakan bidang penelitian yang sangat akademis, dipengaruhi oleh keunikan jenis Clean dan kepemilikan tipe dalam Rust. Ada beberapa saran awal untuk menambahkan tipe linear ke Glasgow Haskell Compiler.

Pernyataan Pindah tentang penggunaan tipe linier tampaknya perendaman tidak masuk akal dalam kompiler, karena tidak ada logika memeriksa jenis tersebut . Sejauh yang bisa dinilai, dokumen teknis mengutip literatur kanonik dari Girard dan Pierce, dan dalam implementasi aktual tidak ada yang sejenis.

Selain itu, semantik formal dari bahasa yang dianggap aman tidak ditemukan dalam implementasi atau dalam dokumen. Bahasa ini cukup kecil untuk menemukan bukti lengkap tentang kebenaran semantik dalam Coq atau Isabelle. Pada kenyataannya, kompiler ujung ke ujung dari konversi lengkap dengan transfer bukti ke bytecode dapat diimplementasikan menggunakan alat-alat modern yang ditemukan dalam dekade terakhir. Kami tahu bagaimana melakukan ini, dimulai dengan karya George Nekula dan Peter Lee pada tahun 1996.

Dari sudut pandang teori bahasa pemrograman, tidak mungkin untuk memverifikasi pernyataan bahwa Move adalah bahasa yang andal dan aman, karena pernyataan-pernyataan ini semata-mata ditujukan untuk melambaikan tangan dan memasarkan, dan bukan pada bukti aktual. Ini adalah situasi yang mengkhawatirkan untuk proyek pengembangan bahasa yang sedang diusulkan untuk mempercayakan miliaran dolar dalam pemrosesan transaksi.

Kriptografi Libra salah


Membangun cryptosystems yang andal adalah masalah teknik yang sangat kompleks, dan selalu lebih baik memperlakukan kode berbahaya dengan dosis paranoia sehat yang baik. Ada terobosan besar di bidang ini, seperti proyek Microsoft Everest, yang membangun tumpukan TLS aman yang dapat diverifikasi. Alat sudah ada untuk membuat primitif yang dapat diverifikasi. Meskipun mahal, itu jelas tidak melampaui kemungkinan ekonomi Facebook. Namun, tim memutuskan untuk tidak berpartisipasi dalam proyek, yang dinyatakan sebagai dasar yang dapat diandalkan untuk sistem keuangan global.

Proyek libra bergantung pada beberapa perpustakaan yang cukup baru untuk membuat cryptosystems eksperimental, yang hanya muncul dalam beberapa tahun terakhir. Tidak mungkin untuk mengatakan apakah ketergantungan pada alat-alat berikut ini aman atau tidak, karena tidak ada perpustakaan yang telah diaudit dan tidak memiliki kebijakan pengungkapan standar. Secara khusus, untuk beberapa perpustakaan utama tidak ada kepastian mengenai perlindungan terhadap serangan pada saluran pihak ketiga dan serangan waktu.

  1. ed25519-dalek
  2. curve25519-dalek

Perpustakaan Libra bahkan lebih eksperimental dan melampaui model standar menggunakan metode yang sangat baru seperti fungsi acak diverifikasi (VRFs), pasangan bilinear dan tanda tangan ambang. Metode dan pustaka ini mungkin masuk akal, tetapi menggabungkan semuanya dalam satu sistem menimbulkan kekhawatiran serius tentang area permukaan serangan. Kombinasi dari semua alat dan teknik baru ini sangat meningkatkan kompleksitas bukti keamanan.

Harus diasumsikan bahwa seluruh tumpukan kriptografi ini rentan terhadap berbagai serangan, sampai terbukti sebaliknya. Model Facebook yang terkenal 'Bergerak Cepat dan Hancurkan Benda' tidak dapat diterapkan pada alat kriptografi yang memproses data keuangan klien.

Libra tidak dapat menerapkan mekanisme perlindungan konsumen


Fitur khas dari sistem pembayaran adalah kemampuan untuk memutar kembali transaksi jika pembayaran dibatalkan oleh gugatan atau mengarah pada kegagalan sistem atau kecelakaan. Libra dirancang untuk "sepenuhnya selesai" dan tidak termasuk jenis transaksi untuk membatalkan pembayaran. Di Inggris, semua pembayaran dari £ 100 hingga £ 30.000 diatur oleh Undang-Undang Kredit Konsumen. Ini berarti bahwa sistem pembayaran berbagi tanggung jawab dengan penjual jika terjadi masalah dengan barang yang dibeli atau jika penerima pembayaran tidak menyediakan layanan. Aturan serupa berlaku di UE, Asia dan Amerika Utara.

Desain Libra saat ini tidak termasuk protokol untuk mematuhi undang-undang ini dan tidak memiliki rencana yang jelas untuk pembuatannya. Lebih buruk lagi, dari sudut pandang arsitektur, struktur akhir dari data kernel terotentikasi, berdasarkan keadaan drive Merkle, tidak memungkinkan mekanisme untuk membuat protokol seperti itu tanpa mendesain ulang kernel.



Setelah melakukan pemeriksaan teknis dari proyek ini, kita dapat menyimpulkan bahwa itu tidak akan lulus tes dalam jurnal yang dihormati tentang penelitian sistem terdistribusi atau rekayasa keuangan. Untuk mencoba mengubah kebijakan moneter global, sejumlah besar pekerjaan teknis perlu dilakukan untuk menciptakan jaringan yang andal dan pemrosesan data pengguna yang aman, yang dapat dipercayai oleh otoritas publik dan regulator.

Saya tidak melihat alasan untuk percaya bahwa Facebook dalam proyeknya melakukan pekerjaan yang diperlukan untuk mengatasi masalah teknis ini atau bahwa ia memiliki beberapa keunggulan teknis atas infrastruktur yang ada. Pernyataan bahwa perusahaan membutuhkan fleksibilitas peraturan untuk belajar tentang inovasi bukanlah alasan untuk tidak menjadikannya yang pertama.

Source: https://habr.com/ru/post/id475022/


All Articles