Encrypted Spaces ini, dalam beberapa hal, adalah generasi berikutnya dari protokol Signal, tapi untuk peralatan yang lebih kompleks dan penuh fitur yang melampaui pesan dan panggilan, kata Matt Green, professor ilmu komputer di Johns Hopkins yang fokus pada kriptografi. “Mereka membangun sebuah sistem yang semacam perluasan dari apa yang bisa dilakukan enkripsi ujung-ke-ujung, di mana ada arsitektur yag nyata untuk melakukan kolaborasi terenkripsi ujung-ke-ujung,” ujar Green, yang sudah meninjau white paper tentang proyek Encrypted Spaces dan aplikasi prototipenya. “Anda bisa bayangkan ini sebagai protokol Signal untuk aplikasi kolaborasi.”
Namun beda dengan Signal, kode yang sudah dirilis grup Encrypted Spaces saat ini belum berupa sebuah aplikasi tunggal yang siap pakai. Melainkan ini adalah repositori kode yang mereka undang para peneliti kriptografi dan developer untuk meninjaunya, dengan tujuan pada akhirnya memungkinkan para pembuat kode untuk membangun aplikasi kolaboratif terenkripsi mereka sendiri—tanpa perlu keahlian kriptografi. “Kami ingin membuatnya sehingga tidak ada alasan bagi seorang developer untuk tidak mau membuat aplikasinya terenkripsi ujung-ke-ujung, karena jadi sangat mudah,” kata Trapp.
Change Log dan Zero-Knowledge Roll-Ups
Encrypted Spaces bertujuan mengatasi keterbatasan krusial dari aplikasi terenkripsi ujung-ke-ujung: Karena server tidak bisa mendekripsi data pengguna, manipulasi atas informasi itu harus terjadi di perangkat pengguna. Cara kerja ini cukup memadai ketika aplikasinya seperti pipa penghubung dua ponsel pengguna, yang masing-masing memegang kunci untuk mendekripsi percakapan. Tapi ketika aplikasinya adalah platform kolaboratif dengan puluhan atau ratusan pengguna yang bekerja bersama, model enkripsi ujung-ke-ujung menciptakan kendala berat: Aplikasi tidak bisa sekadar menyimpan data pengguna di server dan memanipulasinya di lokasi terpusat seperti pada platform tak terenkripsi seperti Slack atau Google Docs.
Encrypted Spaces menawarkan model baru: Aplikasi yang dibangun di atasnya mengatur data dari server terpusat dan memungkinkan pengguna secara kolektif melakukan perubahan pada informasi itu sambil tetap menjaganya tetap terenkripsi. Lebih spesifik lagi, Encrypted Spaces menyimpan *change log*—catatan setiap perubahan pada data terenkripsi yang dibuat pengguna dari waktu ke waktu—yang bisa dibagikan ke aplikasi di tiap perangkat pengguna, sehingga aplikasi bisa menerapkan perubahan itu secara lokal dan menjaga versi informasi semua orang tetap tersinkron.
Server menggunakan zero-knowledge proofs, teknik kriptografi yang relatif baru, untuk membuktikan ke setiap perangkat pengguna bahwa tidak ada perubahan yang hilang atau perubahan nakal yang dilakukan, namun tanpa server pernah mengakses data yang tak terenkripi ataupun perubahannya. (Itulah kenapa disebut “zero knowledge”.) Bahkan, Encrypted Spaces dapat memakai semacam properti “roll-up” dari zero-knowledge proofs untuk menjamin setiap publik memiliki versi data grup terbaru tanpa benar-benar menerapkan setiap perubahan di seluruh change log. “Server bisa menggulung (*roll up*) perubahan-perubahan itu menjadi bukti singkat (*succinct proof*) bahwa keadaan saat ini mencerminkan seluruh riwayat,” kata Perrin. “Server dapat meyakinkan Anda bahwa *change log* telah diterapkan dengan benar, tanpa benar-benar harus mengirimnya.”
Server juga memakai zero-knowledge proofs untuk mengawasi bagaimana perangkat pengguna mengelola kunci kriptografik yang hanya mengizinkan pengguna berwenang mendekripsi dan mengubah data, memungkinkan pengguna baru diundang masuk, dan dapat secara terbukti mencabut akses seseorang jika dia meninggalkan grup. Para pengguna *space* juga bisa memilih untuk membagi seluruh riwayat aplikasi atau membatasi undangan baru hanya pada pesan atau data terkini yang ditambah setelah mereka bergabung.