
Pernahkah Anda mendengar tentang
enkripsi fungsional (FS)? Mungkin Anda pernah mendengarnya, dan untuk diri Anda sendiri Anda
menyamakannya dengan
enkripsi homomorfik , yang tidak sepenuhnya salah, tetapi tidak sepenuhnya benar.
Mari kita lihat apa yang ada pada FS hari ini, analisis beberapa contoh dan bagaimana perbedaannya dari enkripsi sepenuhnya homomorfik (PGS).
Pertama-tama mari kita putuskan apa yang kita maksudkan ketika berbicara tentang FS. Baru-baru ini, pada 2010, Dan Bonnet, Amit Sahai dan Brent Waters meresmikan konsep FS. Kira-kira FS dapat digambarkan sebagai berikut: ini adalah skema enkripsi dengan kunci publik, di mana kunci berbeda untuk dekripsi memungkinkan pengguna untuk belajar tentang fungsi-fungsi tertentu dari data yang dienkripsi.
Jadi, dalam skema FS untuk fungsi F (·, ·), enkripsi dengan kunci master menghasilkan kunci s
k , yang memungkinkan menghitung fungsi F (k, ·) dari data yang dienkripsi sehingga decryptor, mengetahui teks yang dienkripsi c dari data x dan kunci s
k , mampu menghitung F (k, x) tanpa bisa menemukan apa pun selain hasil komputasi fungsi dari x.
FS vs PGS
Jika Anda terbiasa dengan konsep PGS, akan menarik untuk menarik paralel berikut:
Dengan menggunakan PGS, Anda dapat menghitung fungsi apa pun dari data yang dienkripsi tanpa mendekripsi data ini. Ini adalah kesempatan yang menarik untuk mendelegasikan komputasi ke pihak ketiga yang tidak memiliki kepercayaan. The minus dari pendekatan adalah bahwa hasilnya juga dienkripsi, dan untuk mendekripsi itu, Anda harus mengirimkannya ke pemilik kunci pribadi. Proses PGS dapat direpresentasikan sebagai berikut, di mana E adalah skema enkripsi dan F adalah fungsi yang ingin kita hitung dari data terenkripsi:
E (x_1), E (x_2), ..., E (x_n) → E (F (x_1, x_2, · ·, x_n))
Di sisi lain, dengan FS, hasilnya langsung tersedia bagi kami segera setelah perhitungan, yaitu, berikut ini tersedia untuk kami:
E (x_1), E (x_2), · ·, E (x_n) → F (x_1, x_2, · ·, x_n)
Dalam arti tertentu, FS adalah skema yang secara simultan menghitung dan mendekripsi hasilnya, tanpa kebocoran kunci pribadi dan informasi apa pun tentang x1, x2, · · ·,
xn kecuali hasil perhitungan itu sendiri.
Jelas, kami tidak memerlukan semua orang untuk dapat menghitung fungsi apa pun yang mereka inginkan, karena jika tidak, akan mudah untuk mendapatkan informasi tentang parameter individu dalam teks yang jelas (misalnya, untuk menghitung fungsi yang identik). Oleh karena itu, hanya pemilik kunci pribadi yang dapat mendekripsi E (x_i) dan menghasilkan kunci penyelesaian untuk fungsi tertentu yang dipilihnya. Ini berarti bahwa FS mensyaratkan kehadiran “otoritas pusat” yang mengeluarkan “kunci penyelesaian” bagi orang yang bertanggung jawab atas perhitungan fungsional.
Artinya, FS adalah generalisasi dari ide enkripsi dengan kunci publik, yang memungkinkan pengguna untuk mendelegasikan kepada pihak ketiga perhitungan kelas fungsi tertentu dari data yang dienkripsi dengan menghasilkan kunci rahasia tertentu untuk fungsi-fungsi ini. Tidak seperti skema enkripsi standar, ini memungkinkan Anda untuk lebih akurat mengontrol kemampuan dekripsi yang tersedia untuk pihak ketiga.
FS sangat berguna karena memungkinkan kita untuk dengan sengaja mentransfer informasi tertentu tentang data terenkripsi ke pengguna tertentu. Misalnya, kita bisa mendapatkan nilai rata-rata dari satu set data terenkripsi tanpa mengungkapkan data itu sendiri, atau mendapatkan lebih banyak statistik tentang set ini. Dengan masalah keamanan saat ini dan persyaratan yang diajukan oleh undang-undang baru, seperti GDPR, kebutuhan akan skema FS yang efektif menjadi lebih jelas, karena memungkinkan pihak ketiga untuk memproses data terenkripsi tanpa memberikan data ini kepada siapa pun dalam bentuk murni. Ini berarti bahwa kita dapat melangkah lebih jauh daripada anonimisasi semu dari data pribadi yang memungkinkan, menjamin kerahasiaan yang lebih ketat!
Kembali ke FS
Karena sifat umumnya, FS merangkul dan menggabungkan banyak skema enkripsi canggih lainnya yang sebelumnya dipelajari secara independen, yaitu:
enkripsi berbasis otentikasi, enkripsi yang
dapat dicari , enkripsi vektor tersembunyi, enkripsi berbasis otentikasi dengan pola wildcard,
enkripsi berbasis atribut , enkripsi fungsional dengan produk skalar.
Meskipun skema FS masih sangat muda, banyak yang telah terjadi sejak 2010, dan sudah ada banyak skema menarik yang memungkinkan Anda melakukan hal-hal yang tampaknya sangat rumit 8 tahun yang lalu. Sudah mencapai titik bahwa laporan tentang FS diatur pada konferensi kriptografi tertentu!
Mari kita lihat beberapa jenis skema FS. Sebagai contoh:
- Enkripsi fungsional dengan produk skalar (FSFS), di mana plaintext adalah vektor, dan data terenkripsi bersama dengan kunci dapat digunakan untuk menghitung produk skalar dari vektor ini dengan yang lain. FSSP memiliki beberapa opsi: untuk banyak klien, untuk banyak input, didesentralisasi, dengan fungsi persembunyian, dll.
- Enkripsi berbasis atribut (SHO), di mana data yang dienkripsi dikaitkan dengan sekumpulan atribut dan kunci rahasia bersama dengan aturan tertentu yang mengontrol teks terenkripsi mana yang dapat dienkripsi, tergantung pada atribut yang kita miliki.
- FS "tujuan umum", yang memungkinkan untuk menghitung fungsi f dalam bentuk apa pun dari data terenkripsi Enc (x).
Namun, penting untuk dicatat di sini bahwa meskipun banyak pekerjaan telah dilakukan dengan berkonsentrasi pada aspek teoritis FS untuk mengembangkan area ini sebanyak mungkin, semua FS tujuan umum terlalu tidak efektif untuk penggunaan praktis saat ini. Ini adalah salah satu topik penelitian proyek FENTEC (program riset
Teknologi Enkripsi Fungsional Eropa): membawa FS ke penerapan praktis dengan merancang dan mengimplementasikan skema praktis yang dapat digunakan pada skala industri. Dalam proyek ini, tidak hanya skema baru dengan fungsi yang lebih kaya dikembangkan, tetapi juga coprocessor khusus yang dapat mempercepat perhitungan yang dibutuhkan bahkan lebih - segalanya untuk membawa teori lebih dekat ke praktik. Informasi lebih lanjut tentang peralatan ini dapat ditemukan di
posting blog proyek FENTEC.
Ingin menggunakan FS hari ini? Silakan gunakan
Tetapi bagaimana jika Anda ingin menggunakan FS hari ini? Seharusnya tidak ada masalah dengan itu! Sebagai bagian dari proyek FENTEC, tim dari XLAB terlibat dalam implementasi banyak skema yang dikembangkan oleh universitas mitra dalam bentuk
CiFEr C-library dan
GoFE Go-library.
Anda dapat membaca lebih lanjut tentang perpustakaan
di blog FENTEC secara lebih rinci , atau langsung pergi ke Github dan mulai bermain dengan
perpustakaan CiFEr dan
GoFE . Omong-omong, kami memeriksa bahwa mereka berfungsi bahkan di browser melalui WASM!
Bahkan ada beberapa contoh di repositori Github proyek:
Semua detail mengerikan: apa yang ada di dalam skema FS
Di antara skema yang sudah diterapkan, Anda dapat menemukan banyak skema yang disebut "enkripsi fungsional dengan produk skalar." Tapi apa arti nama ini? Ini harus diambil secara harfiah: skema ini memungkinkan pihak ketiga untuk menghitung hasil produk skalar dari dua vektor menggunakan FS.
Misalkan Anda ingin mengenkripsi vektor a dan mendapatkan hasil produk skalar-nya dengan vektor y. Untuk memulainya, kita membutuhkan otoritas pusat untuk mengimplementasikan FS.
Dalam kasus ini, otoritas pusat mengeluarkan "kunci master publik" mpk, serta kunci penyelesaian z
y untuk vektor yang diberikan y. Kemudian, siapa pun yang mengetahui kunci publik dapat mengenkripsi vektor a, memungkinkan pihak ketiga mana pun yang memiliki kunci z
y untuk menghitung <a, y>, memiliki E
mpk (a), dan tidak mengetahui apa pun tentang vektor itu sendiri.
Perhatikan bahwa dalam skema FS ini, vektor y yang terkait dengan kunci komputasi z
y harus diketahui oleh pihak ketiga untuk menghitung produk skalar. Artinya, hanya vektor a yang tetap menjadi rahasia.
Bagaimana jika Anda ingin kedua vektor, a dan y tetap rahasia, tetapi pada saat yang sama sehingga pihak ketiga dapat menghitung produk skalar mereka?
Untungnya, bidang penelitian ini juga telah membuat terobosan besar dalam beberapa tahun terakhir. Itu dikenal sebagai "FS dengan fungsi persembunyian." Bahkan, skema enkripsi produk skalar "menyembunyikan fungsi" jika kunci dan ciphertext tidak memberikan informasi tambahan tentang vektor a dan y, kecuali untuk produk skalar mereka <a, y>. Dalam skema baru dengan FS, fungsi persembunyian semakin umum (
1 ,
2 ,
3 ).
Untuk meringkas
Meskipun enkripsi fungsional telah muncul baru-baru ini, kita sudah dapat membayangkan banyak opsi untuk penggunaannya di masa depan. Yang sangat menarik adalah kemampuan untuk mentransfer proses pengambilan keputusan, berdasarkan enkripsi data ujung ke ujung, dari sistem backend ke sistem gateway tertentu di jaringan yang kompleks. Kami menyebutnya "pengambilan keputusan lokal," dan kesempatan seperti itu merupakan langkah besar untuk menciptakan jaringan aman untuk "Internet of Things" dan jaringan lain yang sangat terdesentralisasi yang ingin menerapkan enkripsi ujung-ke-ujung tanpa kehilangan terlalu banyak kemampuan pengambilan keputusan di tingkat gateway.
Sekarang kami sedang mengerjakan prototipe produk yang, menggunakan FS dengan produk skalar, mampu mendeteksi pergerakan dalam aliran video dari kamera ke sistem backend, di tingkat gateway, menggunakan apa yang disebut "Vektor gerak" termasuk dalam standar AVC H.264 / MPEG-4.
Visualisasi vektor gerakan dalam bingkai ketika pengkodean H.264 membuka kartun pendek Big Buck BunnyHarap perhatikan seberapa bagus vektor gerak sebagai kandidat untuk digunakan dalam skema dengan FS dengan produk skalar - karena produk skalar didefinisikan pada ruang vektor! Kami masih mencari opsi terbaik untuk metode deteksi gerakan, dan berharap untuk mendapatkan prototipe yang berfungsi penuh menggunakan FS untuk pengenalan gerak pada akhir tahun 2020.