iExec baru-baru ini meluncurkan alat pengembang baru untuk mengatasi kasus penggunaan 'Pemasaran Peningkatan Privasi'. Alat-alat ini adalah iExec DataProtector dan iExec Web3Mail. Alat pengembang ini, yang hadir sebagai paket kode npm yang mudah digunakan, bertujuan untuk merevolusi cara DApps menangani privasi dan komunikasi data. Artikel ini akan mendalami fungsi teknis DataProtector dan Web3Mail.

iExec Pelindung Data

iExec DataProtector adalah alat yang dirancang untuk melindungi data pengguna dengan memanfaatkan mekanisme enkripsi dan mengelola hak akses melalui kontrak pintar. Pemilik data dapat memberikan izin kepada aplikasi, sehingga memungkinkan mereka menggunakan data — tanpa benar-benar mengungkapkan data itu sendiri.

Alat ini merupakan solusi efisien untuk menangani data; itu menggabungkan dan menyederhanakan fungsi kumpulan data iExec seperti enkripsi data dan manajemen hak akses. Selain itu, DataProtector memfasilitasi pengambilan semua data yang dilindungi terkait dengan pemilik tertentu atau skema data tertentu (lihat contoh skema data di bawah). Ini juga memberi pengguna kemampuan untuk mencabut satu atau semua hak akses terhadap data. Dengan kata lain, pemilik data memiliki kemampuan untuk mengelola dan mengontrol izin akses secara dinamis, yang menjamin keamanan dan privasi data mereka yang kuat, dengan alat yang mudah digunakan.

Dalam ekosistem iExec, kumpulan data adalah Non-Fungible Token (NFT) yang digunakan sebagai mekanisme yang mengatur data rahasia. Di iExec Marketplace, penyedia kumpulan data membuat dan menandatangani 'pesanan kumpulan data' yang menentukan tata kelola kumpulan data, misalnya. Dapp mana yang dapat menggunakan kumpulan data tersebut. Di DataProtector, pemilik data menentukan aturan akses tingkat tinggi yang secara otomatis diterjemahkan ke dalam urutan kumpulan data.

DataProtector dapat dengan mudah diintegrasikan ke dalam proyek perangkat lunak apa pun (Mulai cepat) untuk membuat data yang dilindungi dapat diakses dengan lancar oleh aplikasi Komputasi Rahasia yang resmi.

DataProtector mengandalkan:

1/ kontrak pintar DataProtector yang berinteraksi dengan kontrak pintar DatasetRegistry untuk membuat kumpulan data;

2/ subgraf DataProtector, server off-chain yang terus mengamati peristiwa di blockchain, lalu menyimpan, mengindeks, dan mengambil data yang dilindungi oleh DataProtector, dan menggunakan komponen protokol iExec berikut:

  • Kontrak pintar DatasetRegistry untuk membuat/mencetak kumpulan data terkait yang terkait dengan data yang dilindungi

  • kontrak pintar PoCo untuk mengelola hak akses

  • iExec Marketplace untuk berbagi pesanan

  • Secret Management Service (SMS) untuk menyimpan rahasia pengguna

Enam fungsi DataProtector

1/ ProtectData mengenkripsi data pengguna dan mencatat kepemilikan pada kontrak pintar.

Untuk melindungi datanya, pengguna memanggil fungsi proteksiData dengan memberikan data data sebagai input. Secara opsional, pengguna juga dapat menentukan nama untuk data tersebut, yang akan menjadi informasi publik dan tetap tidak terenkripsi. Jika tidak ada nama yang diberikan, maka akan ditetapkan sebagai “Tanpa Judul”.

Berikut contoh objek data:

data:
{
email: 'contoh@gmail.com',
Server SMTP: {
pelabuhan: 5000,
smtp_server: 'smtp.gmail.com'
}
}

Dalam contoh ini, objek data terdiri dari dua kunci: email dan SMTPserver. Nilai email adalah example@gmail.com. Nilai SMTPserver terdiri dari dua pasangan kunci/nilai lainnya: port dengan nilai 5000 dan smtp_server dengan nilai smtp.gmail.com.

Kemudian, fungsi proteksiData menjalankan langkah-langkah berikut:

  1. Ekstrak skema data, yaitu kunci dan tipe berbeda dari setiap nilai. Di sini, skema data yang sesuai dengan contoh data sebelumnya:

dataSchema:
{
"email": "string",
"Server SMTP": {
"pelabuhan": "int",
"smtp_server": "rangkaian"
}
}

2. Buat arsip data yang dilihat sebagai folder. Di folder ini, file dibuat untuk setiap kunci. Jenis setiap file cocok dengan jenis kunci terkait dan file tersebut berisi nilai terkait yang ditentukan dalam data. Dimungkinkan untuk memiliki sub-data yang sesuai dengan pasangan sub kunci/nilai dari suatu kunci. Kunci ini dibuat sebagai folder tempat file dibuat untuk setiap pasangan subkunci/nilai. Folder global di-zip menjadi arsip.

Di sini, arsip yang sesuai dari contoh data sebelumnya:

Contoh: bagian kanan untuk disertakan

Struktur pohon ini memungkinkan Anda melindungi semua jenis data seperti file, teks, gambar, dan lainnya. Selain itu, arsip yang dihasilkan dapat dengan mudah diunggah ke platform penyimpanan apa pun, sehingga memfasilitasi proses penyimpanan dan pengambilan data.

3. Hasilkan kunci enkripsi dan enkripsi arsip. Skema enkripsi standar AES-256-CBC digunakan dalam enkripsi ini. Kemudian, arsip terenkripsi dimasukkan ke penyimpanan publik IPFS.

4. Kirim skema data ke kontrak pintar DataProtector beserta argumen pembuatan kumpulan data klasik:

  • Kontrak pintar DataProtector memanggil kontrak pintar DatasetRegistry untuk mencetak kumpulan data yang sesuai dan menyiarkan skema data dalam peristiwa blockchain.

  • Subgraf DataProtector mengamati peristiwa ini dan mengindeks data yang dilindungi.

5. Tekan kunci rahasia enkripsi ke SMS.

6. Kembalikan nilai protectedData dan metadata kepada pengguna.

2/ grantAccess yang memberi otorisasi pada aplikasi untuk menggunakan data pengguna tanpa mengungkapkan data itu sendiri.

grantAccess diagram iExec

Pemilik data menggunakan fungsi grantAccess untuk mengotorisasi aplikasi dan pemohon untuk mengakses datanya yang dilindungi. Fungsi ini mengambil input protectedData, AuthorizedApp, dan AuthorizedUser yang masing-masing merupakan alamat data yang dilindungi, aplikasi, dan pengguna. Kemudian, fungsi grantAccess menjalankan langkah-langkah berikut:

  1. Buat urutan kumpulan data untuk menetapkan aturan tata kelola, yaitu hak akses untuk AuthorizedApp dan AuthorizedUser, yang ditandatangani oleh pemilik kumpulan data.

  2. Publikasikan pesanan kumpulan data di iExec Marketplace.

  3. Kembalikan ke pengguna urutan kumpulan data.

3/revokeAllAccessObservable yang mencabut semua akses aplikasi ke data tertentu yang dilindungi.

Fungsi revokeAllAccessObservable dipanggil oleh pemilik data dengan nilai protectedData dan secara opsional, filter AuthorizedApp dan/atau filter AuthorizedUser. Kemudian, fungsi revokeAllAccessObservable menjalankan langkah-langkah berikut:

  1. Kueri pesanan kumpulan data ke pasar dan jika tersedia, cocok dengan filternya.

  2. Untuk setiap pesanan kumpulan data, ia mencabut pesanan kumpulan data dengan panggilan ke kontrak pintar PoCo yang memunculkan peristiwa pencabutan ini. API Marketplace mengamati peristiwa ini dan menghapus pesanan terkait.

  3. Untuk setiap akses yang dicabut, ia mengembalikan urutan kumpulan data dan transaksi yang ditandatangani oleh pemilik yang mencabut akses ini.

4/ revokeOneAccess yang mencabut akses aplikasi ke kumpulan data tertentu yang dilindungi.

Fungsi revokeOneAccess mirip dengan fungsi revokeAllAccessObservable kecuali pencabutannya untuk satu akses. Pemilik data memanggil revokeOneAccess dengan grantAccess sebagai input untuk memulai pencabutan akses ini. Nilai grantAccess dapat diperoleh dari fungsi FetchGrantedAccess. Kemudian, revokeOneAccess menjalankan langkah-langkah berikut:

  1. Minta pencabutan datasetoder yang sesuai dengan kontrak pintar PoCo yang memunculkan peristiwa pencabutan ini. API Marketplace mengamati peristiwa ini dan menghapus pesanan terkait.

  2. Kembalikan urutan kumpulan data dan transaksi yang ditandatangani oleh pemilik yang mencabut akses.

5/fetchProtectedData yang mengambil data terenkripsi yang dilindungi oleh DataProtector.

Pengguna memanggil fungsi FetchProtectedData dengan opsional, filter pemilik (untuk mendapatkan hanya data terenkripsi dari pengguna tertentu) dan/atau filter dataSchema (untuk mengambil data terenkripsi dengan skema tertentu). Kemudian, fungsi FetchProtectedData memproses langkah-langkah berikut:

  1. Kueri data yang dilindungi ke subgraf DataProtector, yang secara opsional cocok dengan filter.

  2. Kembalikan kepada pengguna serangkaian data dilindungi yang diminta, yaitu nama, alamat, pemilik, dan skema dari setiap data yang dilindungi, secara opsional cocok dengan filter.

6/fetchGrantedAccess yang menyediakan daftar akses yang diberikan pada data tertentu yang dilindungi.

Fungsi FetchGrantedAccess memiliki mekanisme serupa dengan fungsi FetchProtectedData, hanya saja permintaannya adalah untuk memberikan akses terhadap data yang dilindungi. Permintaan ini berfungsi sebagai berikut:

  1. Seorang pengguna memanggil FetchGrantedAccess dengan protectedData sebagai input. Secara opsional, pengguna hanya dapat meminta aplikasi resmi dan/atau pemohon resmi dengan menentukan masing-masing filter AuthorizedApp dan AuthorizedUser.

  2. FetchGrantedAccess mengkueri himpunan dataurutan yang cocok dengan filter ke API Marketplace dan mengembalikan array dari semua akses yang diberikan.

Contoh kasus penggunaan: Web3Mail

Menggunakan DataProtector, Web3Mail adalah alat bagi pengembang untuk membuat aplikasi yang memungkinkan pengiriman email ke pemegang akun Ethereum tanpa mengetahui alamat email mereka. Dengan memanfaatkan alat ini, pengguna akhir dapat menghilangkan keharusan berbagi alamat email mereka dengan banyak pihak ketiga, sehingga secara signifikan mengurangi risiko yang terkait dengan pelanggaran data dan spam.

Web3Mail mengandalkan DataProtector untuk melindungi alamat email dan berinteraksi dengan protokol iExec, sendEmail DApp, dan layanan mailjet untuk mengirim email.

Di iExec Marketplace, penyedia aplikasi membuat dan menandatangani 'apporders' yang menentukan tata kelola aplikasi, misalnya. biaya untuk setiap eksekusi DApp. Di Web3Mail, DApp sendEmail sudah diterapkan dan pesanan aplikasi terkait telah ditandatangani dan diterbitkan di iExec Marketplace. DApp sendEmail mengambil subjek dan isi email sebagai rahasia pemohon dan mengirimkan email ke alamat email yang dilindungi.

Dalam protokol iExec, rahasia peminta adalah parameter yang hanya diekspos ke aplikasi resmi di dalam enklave dan tidak pernah keluar darinya. Di Web3Mail, hanya sendEmail DApp yang dapat mengakses subjek dan konten email.

Pertama-tama, pemegang akun Ethereum menggunakan DataProtector untuk melindungi alamat email mereka dan memberikan izin kepada pengguna lain untuk mengirimi mereka email. Pemegang akun Ethereum dapat menentukan batas yang telah ditentukan untuk mengakses emailnya yang dilindungi. Setelah batas ini tercapai, pemegang akun harus memanggil fungsi grantAccess dari DataProtector untuk memberikan izin pengiriman email lebih lanjut kepadanya.

Untuk setiap email yang dilindungi, kumpulan data telah dibuat dan urutan kumpulan data yang sesuai telah ditandatangani dan dipublikasikan di iExec Marketplace dan diindeks oleh Grafik.

Web3Mail terdiri dari dua fungsi:

  • ambilMyContacts yang mengembalikan daftar akun Ethereum yang pemiliknya telah memberi otorisasi untuk mengirim email kepada mereka. Seorang pengguna memanggil fungsi FetchMyContacts yang menjalankan langkah-langkah berikut:

  1. Kirim permintaan ke API Marketplace untuk memulihkan daftar urutan kumpulan data yang pemiliknya telah memberikan izin kepada pengguna untuk mengakses dan memanfaatkan kumpulan data mereka yang dilindungi.

  2. Minta kumpulan data terlindungi yang sesuai ke Grafik.

  3. Verifikasi apakah setiap kumpulan data menyertakan bidang email, pastikan bahwa skema setiap kumpulan data yang dilindungi cocok dengan 'email:string'.

  4. Kembalikan kepada pengguna daftar kontak yang valid, termasuk kumpulan data yang dilindungi dan alamat pemilik.

  • sendEmail yang mengirimkan email ke pengguna hanya dengan mengetahui akun Ethereum

Pengguna memanggil fungsi sendEmail untuk mengirim email ke pemegang akun Ethereum resmi, yang dapat diambil menggunakan fungsi FetchMyContacts. Pengguna menentukan subjek email emailSubject, konten email emailContent dan alamat email yang dilindungi protectedData.

Fungsi sendEmail membuat dan menandatangani perintah yang disebut 'requestorder' untuk meminta eksekusi DApp sendEmail. Oleh karena itu, proses fungsi ini mirip dengan membuat permintaan tugas dalam protokol iExec.

Dalam ekosistem iExec, tugas adalah sebuah contoh di mana daya komputasi diperlukan. Tugasnya adalah eksekusi kesepakatan antara datasetorder, apporder, requestorder, danworkerpoolorder, yang menunjukkan pekerja mana yang tersedia untuk kategori tugas tertentu. Di Web3Mail, tugas adalah eksekusi sendEmail DApp dengan email yang dilindungi sebagai kumpulan data, subjek email, dan konten email sebagai rahasia peminta.

sendEmail memproses langkah-langkah berikut:

  1. Permintaan SMS untuk memeriksa keberadaan token penyimpanan. Token ini digunakan sebagai token autentikasi bagi pekerja untuk mengunggah hasil tugasnya. Hal ini memastikan bahwa hanya pekerja yang berwenang yang dapat menyerahkan hasil tugas.

  2. Minta kumpulan data terlindungi yang sesuai ke Grafik dan verifikasi apakah setiap kumpulan data menyertakan bidang email.

  3. Permintaan ke API Marketplace: Urutan kumpulan data email yang dilindungi dengan alamat protectedData, urutan aplikasi sendEmail DApp, urutan kumpulan pekerja

  4. Dorong emailSubject dan emailContent sebagai rahasia peminta (lihat Dokumentasi Teknis iExec untuk detail lebih lanjut).

  5. Buat dan tanda tangani requestorder untuk meminta eksekusi DApp sendEmail dengan emailSubject dan emailContent sebagai rahasia peminta. Dalam urutan permintaan, pengguna dapat menentukan harga yang bersedia dia bayarkan untuk pelaksanaan tugas.

  6. Beri tahu kontrak pintar PoCo bahwa ada kecocokan pesanan antara apporder, datasetorder,workerpoolorder, dan requesterorder. Kemudian, kontrak pintar PoCo: memverifikasi dan memvalidasi kecocokan, mengeluarkan kecocokan pesanan dan pemberitahuan ke penjadwal kumpulan pekerja, mengembalikan kesepakatan

  7. Permintaan untuk menghitung tugas kesepakatan yang sesuai dengan kontrak pintar PoCo. Penjadwal yang telah melihat kecocokan pesanan dan pemberitahuan dari kontrak pintar PoCo memulai tugas yang memicu eksekusi sendEmail DApp.

  8. Kembalikan taskid ke pengguna.

Keterbatasan alat-alat ini

DataProtector dan Web3Mail menggunakan Confidential Computing (CC) yang dikembangkan oleh iExec. SMS yang digunakan di iExec CC adalah komponen terpusat tempat pengguna mengirimkan rahasia mereka, misalnya. kunci rahasia untuk mengenkripsi data. Ketika sebuah rahasia diterima, SMS membuat sesi aman dalam CAS (Layanan Konfigurasi dan Pengesahan), memasukkan rahasia tersebut dan memberikan aplikasi yang terkait dengan pesanan permintaan untuk mengaksesnya. Namun, karena sifat SMS yang terpusat, terdapat potensi satu titik kegagalan. Jika CAS atau SMS mengalami update atau down, ada risiko kehilangan rahasia yang tersimpan. Untuk mengatasi masalah ini, iExec secara aktif berupaya melakukan desentralisasi SMS, sehingga mengurangi masalah yang disebutkan di atas dan meningkatkan ketahanan sistem secara keseluruhan.

Penting untuk dicatat bahwa Web3Mail menggunakan layanan Mailjet, menggunakan alamat email perantara untuk memfasilitasi pengiriman email. Tingkat kepercayaan pada Web3Mail terkait langsung dengan kepercayaan yang diberikan pada layanan mailjet dan iExec yang mengoperasikannya serta memiliki kemampuan untuk mengakses alamat email dan konten email.

Terima kasih sudah membaca!

💬 Jika Anda ingin bertanya apa pun tentang alat ini, atau mempelajari peluang pendanaan, silakan hubungi tim iExec di server resmi Discord kami.

📚Mulai menggunakan alat ini, lihat Dokumentasi iExec

$RLC #iExec #AI #Web3 #blockchain #Dapps