abox.tools

Bahasa: Bahasa Indonesia

Apakah base64 itu enkripsi?

Bukan. Base64 itu ganti kostum, bukan gembok: siapa pun yang mengenalinya bisa membaliknya dalam hitungan milidetik, tanpa kunci apa pun. Tapi pertanyaannya pantas dijawab sungguh-sungguh, karena encoding, enkripsi, dan hash tampak mirip di layar dan janjinya tidak bisa lebih berbeda lagi.

Lihat sebagai Markdown

Jawaban singkatnya

Bukan. Base64 adalah encoding: cara menuliskan data apa pun hanya dengan enam puluh empat karakter yang aman, supaya data itu selamat melewati sistem-sistem yang dibangun untuk teks polos. Ia tidak punya kunci, tidak punya rahasia, dan tidak punya sifat keamanan jenis apa pun. Mendekodekannya hanya butuh mengenalinya, tidak lebih — sekali lirik bagi manusia, satu milidetik bagi komputer.

Pertanyaannya tetap layak diajukan, karena kekeliruannya universal dan kadang mahal. Untaian base64 terlihat teracak — cGFzc3dvcmQ= tidak berkata apa-apa pada mata — dan yang terlihat teracak dimasukkan ke laci “aman”. Produk sungguhan pernah dirilis dengan kata sandi yang “dilindungi” begini. Obatnya satu pembedaan yang dipelajari sekali: encoding untuk mesin, enkripsi untuk rahasia, hash untuk sidik jari. Tiga pekerjaan, tiga alat, dan hanya satu yang melindungi apa pun.

Encoding: bisa dibalik siapa saja

Encoding mengubah cara data ditulis, tidak pernah mengubah isinya. Lampiran email, gambar yang dibenamkan di lembar gaya, token di alamat — di mana-mana byte sembarang harus melewati kanal yang hanya andal membawa teks, dan base64 adalah kostum bakunya: tiga byte masuk, empat karakter keluar, tersusun dari huruf, angka, dan dua tanda baca, dengan = mengganjal di ujung. Tanda = itulah cirinya, dan sekali Anda tahu, base64 terlihat di mana-mana.

Sifat yang menentukan segalanya: resepnya publik dan berjalan sama persis ke arah sebaliknya. Tidak ada yang perlu diketahui, jadi tidak ada yang bisa tidak diketahui. Percent-encoding di URL (%20 untuk spasi), entitas HTML (&), heksadesimal, dan escape garis miring terbalik adalah gagasan yang sama berganti baju, dan pengode dan pendekode base64 di sini bicara semuanya, dua arah, di mesin Anda sendiri. Mendekodekan untaian yang Anda temukan sama sahnya dengan membacanya, karena encoding memang tidak pernah menjadi gembok.

Enkripsi: bisa dibalik oleh pemegang kunci

Enkripsilah yang sungguh melindungi isi. Ia mengubah data dengan sebuah kunci, dan matematikanya diatur supaya membalik perubahan itu tanpa kunci bukan sekadar sulit melainkan di luar jangkauan komputasi — sementara dengan kunci, seketika. Rahasianya tinggal seluruhnya di kunci, bukan di metode: algoritmanya diterbitkan, dibakukan, dan justru karena itu kuat.

Di sinilah kekeliruan visual menggigit, karena byte terenkripsi lazim di-base64-kan supaya bisa bepergian — diacak oleh kunci, lalu diberi kostum untuk perjalanan. Dua lapisan, dua pekerjaan. JSON Web Token adalah contoh bukunya: tiga potong base64 disambung titik, dan dua potong pertamanya terdekodekan menjadi JSON terbaca bagi siapa pun yang mencoba. Tiap hari orang menempelkan token ke pendekode web publik karena mengira seluruhnya tersegel; gambaran jujurnya, JWT adalah kartu pos dengan tanda tangan antipemalsuan, bukan amplop.

Hash: tidak bisa dibalik siapa pun

Hash berjalan satu arah saja. Lewatkan data sebanyak apa pun melalui SHA-256 dan keluarlah bilangan berukuran tetap — bilangan yang sama setiap kali untuk data yang sama, bilangan yang sama sekali lain untuk data yang berbeda satu bit, dan tidak ada jalan pulang dari bilangan ke datanya, bagi siapa pun, berkunci ataupun tidak. Ia bukan kostum dan bukan gembok; ia sidik jari.

Itulah yang menjadikannya alat yang tepat untuk dua pekerjaan miliknya. Memastikan berkas unduhan persis berkas yang diterbitkan penerbitnya — bandingkan sidik jarinya, yang dikerjakan alat penghitung checksum di mesin Anda, lengkap dengan panduannya. Dan menyimpan kata sandi: layanan yang dikelola baik hanya menyimpan hash milik Anda, sehingga basis datanya yang dicuri pun tidak berisi kata sandinya. Ketika sebuah situs bisa mengirimkan lewat email kata sandi yang Anda lupa, ia baru saja memberi tahu bahwa ia tidak pernah meng-hash-nya — dan ketika sebuah config “mengamankan” kata sandinya sebagai cGFzc3dvcmQ=, ia memberi tahu bahwa ia hanya pernah meng-encode-nya.

Membedakan ketiganya di lapangan

Jalan pintas yang berhasil untuk untaian di depan Anda:

Dan pesan praktis masing-masing: jangan pernah menyandarkan kerahasiaan pada encoding; jangan pernah membangun enkripsi sendiri kalau platform Anda sudah membawanya; jangan pernah menyimpan kata sandi selain sebagai hash. Sementara itu, untaian yang Anda dekodekan untuk memeriksa bisa jadi justru bagian yang sensitif — token yang sedang di-debug biasanya begitu — dan itulah sebabnya pendekode di sini berjalan di tempat rahasia itu sudah berada, di mesin Anda, dan sebabnya apa yang sebenarnya terjadi saat menempel ke alat web punya halamannya sendiri.