← Cuadernos Lacre

Konsep · 21 Mei 2026

Penyulitan hujung-ke-hujung, dijelaskan dengan sebenar

Apa yang dikatakan oleh penyedia apabila mereka menyebut E2EE, dan apa yang tidak mereka katakan. Penjelasan didaktik tentang mekanisme dan batasannya, tanpa bungkus pemasaran.

Maksud penyulitan yang sebenar

Mengenkripsi mesej bermaksud mengubahnya menjadi sesuatu yang kelihatan seperti bunyi bising bagi sesiapa yang tidak memiliki maklumat tertentu yang disebut kunci. Operasi dilakukan pada peranti pengirim dan, dengan kunci yang betul, dibatalkan pada peranti penerima. Di antaranya, mesej berpindah sebagai urutan bait tanpa makna yang jelas. Itulah idea ringkasnya. Selebihnya artikel ini membincangkan nuansa yang mengubahnya, bergantung pada kes, menjadi jaminan nyata atau sekadar label pemasaran.

Kata sifat hujung ke hujung — dalam bahasa Inggeris end-to-end, dipendekkan sebagai E2EE — menambah ketepatan. Penyulitan tidak dilakukan supaya pelayan perantara boleh membacanya dan menyampaikannya. Ia dilakukan supaya hanya dua hujung tersebut, iaitu peranti penghantar dan peranti penerima, yang memiliki kunci itu. Mana-mana pelayan yang dilalui mesej itu hanya melihat hingar, bukan mesejnya. Itulah perbezaan teknikal dengan penyulitan dalam transit, di mana kandungan disulitkan dari satu pelayan ke pelayan seterusnya, tetapi setiap pelayan yang dilaluinya akan menyahsulitkannya untuk menghantar ke hadapan, memulihkan teks biasa buat sementara waktu.

Paradoks rahsia bersama

Terdapat masalah yang jelas. Supaya dua orang dapat mengenkripsi dan mendekripsi mesej di antara mereka sendiri, kedua-duanya memerlukan kunci yang sama. Namun, bagaimana mereka menyepakati kunci tersebut jika semua yang mereka kirimkan sesama sendiri, mengikut definisi, melalui saluran di mana seseorang mungkin mendengar? Menyepakati kunci di saluran yang sama yang kemudiannya akan mereka gunakan nampaknya mustahil: jika penyerang mendengarnya semasa menyepakatinya, mereka akan dapat mendekripsi semua perkara selepasnya. Selama beberapa dekad, kriptografi klasik menyelesaikan masalah ini dengan cara yang sukar: kunci dihantar secara peribadi, sebelum mula digunakan, dalam pertemuan fizikal. Duta-duta membawa beg kunci yang dijahit ke dalam lapisan kot mereka.

Dalam e-mel kontemporari, penyelesaian tersebut tidak berskala. Jika kita terpaksa pergi secara fizikal ke rumah setiap orang yang ingin kita ajak berkomunikasi secara terenkripsi, kita tidak akan sempat bercakap dengan sesiapa pun. Soalan yang dikemukakan lima puluh tahun lalu oleh komuniti kriptografi adalah ini: adakah mungkin bagi dua orang yang tidak mengenali satu sama lain dan hanya berkongsi saluran awam untuk menyepakati, di saluran awam yang sama, suatu rahsia yang tidak dapat diketahui oleh sesiapa pun yang mendengar saluran tersebut?

Keanggunan Diffie-Hellman

Pada tahun 1976, dua ahli matematik bernama Whitfield Diffie dan Martin Hellman menunjukkan sesuatu yang kelihatan mustahil: bahawa dua orang, yang hanya bercakap melalui saluran awam — saluran di mana sesiapa sahaja dapat mendengar semua yang mereka katakan — dapat menyepakati kata laluan rahsia tanpa ada pendengar yang dapat menemuinya. Ia kedengaran seperti sihir. Padahal bukan: ia matematik. Pertukaran kunci Diffie-Hellman, sebagaimana dikenali sejak itu, adalah asas kepada hampir semua komunikasi terenkripsi di internet, dan penggunaan intensif selama setengah abad serta pemeriksaan akademik global mengesahkan kekuatannya. Sesiapa yang ingin melihat gerak hati visual atau matematik boleh terus membaca. Sesiapa yang lebih suka percaya bahawa ia berfungsi juga boleh meneruskan tanpa kehilangan alur artikel.

Bagi sesiapa yang ingin merasainya dalam sebuah gambar, terdapat analogi yang dikenali dengan warna. Bayangkan Alicia dan Bruno menyepakati warna asas secara terbuka — katakanlah kuning — di depan Eva, yang mendengar mereka. Masing-masing memilih warna rahsia kedua secara peribadi dan mencampur rahsia mereka dengan warna kuning. Alicia mendapat oren tertentu; Bruno mendapat hijau tertentu. Mereka menukar hasilnya di depan Eva. Sekarang masing-masing mencampur warna yang diterima dengan rahasia mereka sendiri, dan kedua-duanya sampai pada warna akhir yang sama, kerana urutan pencampuran tidak penting. Eva telah melihat warna kuning dan dua campuran perantara, tetapi bukan rahsianya; tanpa salah satu rahsia tersebut dia tidak dapat mencapai warna akhir. Matematik yang sebenarnya menggantikan warna untuk eksponensiasi dalam kumpulan modular atau kurva elips, tetapi idenya sama: rahsia bersama dibina di depan umum tanpa ada sesiapa di saluran tersebut yang dapat membina semula.

Dari Diffie-Hellman ke protokol Signal

Penyulitan hujung-ke-hujung yang digunakan oleh aplikasi pemesejan profesional hari ini bertumpu, hampir tanpa kecuali, pada versi pertukaran Diffie-Hellman yang elegan dan diperkukuhkan. Protokol Signal, yang direka oleh Trevor Perrin dan Moxie Marlinspike antara tahun 2013 dan 2016, adalah rujukan. Ia menggabungkan dua idea kunci. Pertama, pertukaran kunci dalam kurva elips (X25519), yang menghasilkan rahsia bersama awal antara dua peranti. Kedua, yang disebut Double Ratchet — gear ganda — yang memperbaharui kunci secara automatik dengan setiap mesej, supaya mengompromikan peranti hari ini tidak membenarkan dekripsi mesej masa lalu, atau mesej masa depan setelah gear diputar.

Di Zig, pertukaran X25519 yang menghasilkan rahsia bersama antara dua peranti muat dalam enam baris, menggunakan pustaka standard:

const std = @import("std");
const X25519 = std.crypto.dh.X25519;

// Alicia y Bruno generan cada uno un par (privada, pública).
const par_alicia = X25519.KeyPair.generate(io);
const par_bruno  = X25519.KeyPair.generate(io);

// Cada parte recibe la clave pública de la otra y deriva el mismo secreto.
const secreto_alicia = X25519.scalarmult(par_alicia.secret_key, par_bruno.public_key) catch unreachable;
const secreto_bruno  = X25519.scalarmult(par_bruno.secret_key,  par_alicia.public_key) catch unreachable;
// secreto_alicia == secreto_bruno  (32 bytes)

Dan apakah sebenarnya di dalam std.crypto.dh.X25519? Tiada sihir tersembunyi. Ia adalah dua fungsi pendek yang boleh dibaca secara keseluruhan dalam pustaka standard Zig sendiri. Yang pertama menerbitkan kunci awam daripada kunci peribadi — «gᵃ» pertukaran tersebut:

pub fn recoverPublicKey(secret_key: [secret_length]u8) IdentityElementError![public_length]u8 {
    const q = try Curve.basePoint.clampedMul(secret_key);
    return q.toBytes();
}

Dalam bahasa artikel ini: kunci peribadi «didarabkan» — dalam pengertian elips, bukan aritmetik asas — oleh titik asas keluk Curve25519, dan hasilnya diserialkan kepada tiga puluh dua bait. Operasi clampedMul adalah versi diperkukuh bagi pendaraban skalar tersebut: ia menggabungkan perlindungan yang ditambah oleh komuniti kriptografi selama bertahun-tahun untuk menahan keluarga serangan yang diketahui. Dua baris badan fungsi.

Fungsi kedua menggabungkan kunci peribadi anda dengan kunci awam yang dihantar oleh pihak lain kepada anda. Ia adalah «(gᵇ)ᵃ» pertukaran itu, yang menghasilkan rahsia bersama tiga puluh dua bait yang tidak pernah dihantar oleh mana-mana daripada anda:

pub fn scalarmult(secret_key: [secret_length]u8, public_key: [public_length]u8) IdentityElementError![shared_length]u8 {
    const q = try Curve.fromBytes(public_key).clampedMul(secret_key);
    return q.toBytes();
}

Dua baris lagi. Kunci awam yang diterima ditafsirkan sebagai satu titik pada keluk, dan «didarabkan» dengan kunci peribadi sendiri. Melalui komutativiti operasi keluk — serupa dengan komutativiti pendaraban eksponen yang kita lihat dalam contoh angka — kedua-dua pihak berakhir dengan titik bersiri yang sama: tepat rahsia bersama yang dibicarakan oleh artikel tersebut.

Apa yang dilindungi oleh penyulitan hujung-ke-hujung

Apa yang dilindungi E2EE dengan baik, dengan andaian pelaksanaan yang betul, adalah kandungan mesej dalam transit. Pelayan perantara yang menerima dan meneruskan data terenkripsi akan melihat urutan bait yang tidak dapat difahami. Penyerang dengan akses ke kabel, router, titik akses wifi, akan melihat hal yang sama. Penyedia perkhidmatan yang menyimpan salinan trafik tidak akan dapat membacanya di kemudian hari. Kerajaan yang memerintahkan pengendali perkhidmatan untuk menyerahkan kandungan akan menerima bait tidak dapat difahami yang sama dengan yang dimiliki pelayan pada asalnya.

Ini, dalam istilah praktikal, sangat banyak. Ini adalah perbezaan antara menulis surat di dalam sampul surat legap dan menulisnya di poskad. Kedua-duanya sampai. Hanya satu yang menjaga kandungan daripada posmen.

Apa yang tidak dilindungi oleh penyulitan hujung-ke-hujung

Penting untuk mengetahuinya dengan baik. E2EE tidak melindungi metadata: pelayan masih mengetahui bahawa pengguna A menghantar data kepada pengguna B, pukul berapa, dengan kekerapan berapa dan dari mana, walaupun tidak tahu apa yang dikatakannya. Metadata ini, seperti yang telah kami hujah dalam Mengenkripsi bukan bermaksud peribadi, seringkali lebih mendedahkan daripada kandungannya. Mengetahui bahawa seseorang menelefon firma guaman pakar perceraian pada hari Jumaat pukul 22:00 selama tiga puluh minit menceritakan sebuah kisah yang tidak pernah diceritakan oleh kandungan panggilan tersebut. Ini adalah situasi yang sama dengan melihat seseorang masuk dan keluar beberapa kali dari klinik onkologi: tidak perlu mendengar apa-apa yang dibicarakan di dalam untuk membayangkan apa yang sedang berlaku. Satu metadata yang terpencil mungkin tidak bermakna apa-apa; beberapa yang saling berkaitan melukis sesuatu yang terlalu serupa dengan kebenaran. E2EE tidak melindungi hujungnya: jika peranti penerima dikompromikan oleh program jahat, mesej didekripsi secara normal untuk penerima tersebut dan program jahat membacanya. E2EE tidak melindungi terhadap identiti lawan bicara itu sendiri: jika Alicia yakin dia bercakap dengan Bruno tetapi penyerang telah menyelitkan diri di awal (seorang man in the middle) dan protokol tidak menyertakan pengesahan bebas, kedua-dua pihak akhirnya bercakap dengan penceroboh sambil menyangka mereka sedang bercakap antara satu sama lain.

Ada hal keempat yang wajar dirumuskan tanpa kekaburan. E2EE tidak menghalang penyedia yang mendakwa menawarkannya daripada juga menyimpan salinan mesej yang tidak terenkripsi di sistemnya sendiri. Pernyataan «mesej saya terenkripsi hujung-ke-hujung» dan pernyataan «penyedia tidak menyimpan kandungan saya» tidaklah sama. Sebuah aplikasi dapat memenuhi pernyataan pertama sambil melanggar pernyataan kedua; kita telah melihatnya di tajuk berita berulang kali sejak 2018. Pengguna, melainkan kod pelanggan dapat disahkan, tidak mempunyai cara teknikal untuk membezakan satu kes daripada kes yang lain tanpa siasatan pakar. Kes yang paling dikenali orang ramai: WhatsApp mengenkripsi mesej hujung-ke-hujung dalam transit, tetapi jika pengguna mengaktifkan sandaran di iCloud atau Google Drive tanpa enkripsi tambahan, salinan itu disimpan secara terbaca di infrastruktur pihak ketiga, dan enkripsi rosak di hujung pengguna itu sendiri.

Soalan yang tidak mahu didengar oleh pengendali

Aplikasi yang mendakwa mengenkripsi hujung-ke-hujung dapat, secara teknikal, melakukan satu daripada tiga perkara berkaitan kunci:

  1. Kunci hanya berada di peranti. Kunci dicipta dan berada secara eksklusif di peranti pengguna; pengendali tidak mengetahuinya atau menyimpannya. Ini adalah kes yang optimum.
  2. Pengendali boleh mengakses jika mereka mahu. Pengendali mempunyai kunci pengguna (atau boleh menjananya sesuka hati) dan menyimpannya dalam pangkalan data mereka. Jika mereka mahu atau dipaksa, mereka boleh membaca kandungan tersebut. Ini adalah kes bagi kebanyakan perkhidmatan «awan».
  3. Pengendali tidak boleh mengakses mengikut reka bentuk, tetapi mengawal akses. Pengendali tidak mempunyai kunci, tetapi mempunyai kawalan ke atas aplikasi yang menjananya. Jika dipaksa, mereka boleh menghantar kemas kini berniat jahat yang menangkap kunci atau kandungan sebelum penyulitan. Ini adalah kes bagi banyak perkhidmatan E2EE komersial.

Persoalan operasi untuk seorang profesional adalah di mana letaknya kunci, siapa yang mengawalnya, dan apa yang akan terjadi sekiranya esok perintah mahkamah tiba kepada pengendali yang meminta perbualan saya dinyahsulit — bukan sama ada pembekal mendakwa menyulitkannya hujung ke hujung. Tiga jawapan kepada soalan ini berbeza sama sekali, walaupun ketiga-tiga aplikasi dibentangkan dalam pengiklanan mereka dengan label yang sama.

Sampul surat dan kunci kedua

Sampul surat legap menyelesaikan masalah posmen: tiada sesiapa yang memintasnya di pertengahan jalan boleh membaca apa yang terkandung di dalamnya. Ia tidak menyelesaikan masalah yang berbeza: siapa lagi yang menyimpan salinan kunci, dan di bawah nama bijaksana apakah — pemulihan akaun, sandaran, penyegerakan merentas peranti — salinan itu dipelihara. Tiga seni bina yang diterangkan di atas menggunakan sampul surat yang sama dan menjanjikan perkara yang sama dalam pengiklanan mereka; apa yang mereka lakukan dengan kunci kedua adalah tepat apa yang tidak dinyatakan oleh label.

Sampul surat tertutup dengan salinan kunci yang disimpan di laci lain, secara praktikalnya, adalah sampul surat terbuka.


Penyulitan hujung-ke-hujung, jika dilakukan dengan betul, adalah salah satu binaan terbaik yang diberikan oleh kriptografi kontemporari kepada amalan harian. Idea asal — dua orang boleh bersetuju dengan rahsia di saluran awam — milik Whitfield Diffie dan Martin Hellman, 1976; setengah abad kemudian kita terus hidup dalam konsekuensinya. Namun, seperti mana-mana janji teknikal, nilainya bergantung pada pemenuhan sebenar, bukan pada label. Soalan profesional yang jujur bukanlah «adakah ia disulitkan?», sebaliknya «siapa yang memegang kuncinya?». Jawapannya mempunyai akibat yang berbeza. Ada baiknya mengetahuinya.

Sumber dan bacaan lanjut

  • Diffie, W.; Hellman, M. — New Directions in Cryptography, IEEE Transactions on Information Theory, November 1976. Artikel asas mengenai kriptografi kunci awam.
  • Perrin, T.; Marlinspike, M. — The Double Ratchet Algorithm, spesifikasi awam oleh Open Whisper Systems, semakan 2016. Asas kepada protokol Signal dan terbitan industrinya.
  • RFC 7748 — Elliptic Curves for Security (IETF, Januari 2016). Spesifikasi normatif bagi keluk X25519 dan X448 yang digunakan dalam pertukaran kunci moden.
  • Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). Bab-bab tentang pertukaran kunci dan protokol penyulitan disahkan.
  • Peraturan (EU) 2024/1183 mengenai rangka kerja identiti digital Eropah (eIDAS 2) — mewujudkan rangka kerja di mana pengesahan bebas lawan bicara memperoleh sokongan institusi, dan di mana perbezaan antara penyulitan nominal dan sebenar mempunyai akibat undang-undang yang berbeza.

Bacaan terkini