Perbedaan Encryption, Encoding dan Hashing
Dalam hal menjaga keamanan data Anda, ada tiga cara utama untuk melakukannya: Encryption (enkripsi), Encoding (pengkodean), dan Hashing. Istilah-istilah ini sering digunakan secara bergantian tetapi penting untuk memahami perbedaannya. Pada artikel ini, kita akan melihat masing-masing metode ini dan menjelaskan cara kerjanya.
Organisasi telah mengalami pelanggaran yang bersumber dari penggunaan metode transformasi data yang salah, dan mendapat kritik saat menggunakan istilah yang salah dalam siaran pers mereka karena ini menunjukkan bahwa mereka tidak berpengetahuan dan berpotensi ceroboh dengan data pengguna.
Contoh utama adalah pelanggaran yang diderita Adobe . Mereka menggunakan istilah "enkripsi" dalam siaran pers mereka ketika mereka bermaksud mengatakan bahwa mereka telah meng-hash dan mengasinkan kata sandi. Percampuran ini menyebabkan banyak kegemparan karena enkripsi adalah metode yang jauh lebih kuat daripada hashing dan salting (yang akan kita bahas nanti).
Apa itu Encoding ?
Encoding atau Pengkodean data adalah proses yang melibatkan pengubahan data menjadi format baru menggunakan skema. Pengkodean adalah proses yang dapat dibalik dan data dapat dikodekan (Decoding) ke format baru dan didekodekan ke format aslinya. Pengkodean biasanya melibatkan skema yang tersedia untuk umum yang mudah dibalik. Pengkodean data biasanya digunakan untuk memastikan integritas dan kegunaan data dan umumnya digunakan ketika data tidak dapat ditransfer dalam format saat ini antara sistem atau aplikasi. Pengkodean tidak digunakan untuk melindungi atau mengamankan data karena mudah dibalik.
Contoh pengkodean adalah:
- HTML Encoding
- URL Encoding
- Unicode Encoding
- Base64 Encoding
- Hex Encoding
- ASCII Encoding
Ambil skenario di mana pengguna ingin mengunggah resume ke situs web lamaran kerja dan server web menyimpan file tersebut sebagai file .docx. Resume pengguna mungkin berisi informasi rahasia seperti alamat rumah, tanggal lahir, atau nomor jaminan sosial. Untuk melindungi data ini, pengguna dapat menyandikan resume mereka ke Base64 sebelum mengunggahnya ke situs web. Setelah resume diunggah, server web kemudian akan mendekodekannya kembali ke format .docx untuk disimpan.
Apa itu Hashing ?
Hashing adalah proses satu arah di mana data diubah menjadi string alfanumerik dengan panjang tetap. String ini dikenal sebagai hash atau intisari pesan. Hash tidak dapat dibalik kembali ke data asli karena merupakan operasi satu arah. Hashing umumnya digunakan untuk memverifikasi integritas data, biasanya disebut sebagai checksum. Jika dua bagian data identik di-hash menggunakan fungsi hash yang sama, hash yang dihasilkan akan identik. Jika kedua data berbeda, hash yang dihasilkan akan berbeda dan unik.
Image : CyberHoot |
Selain memverifikasi integritas data, hashing adalah teknik transformasi data yang direkomendasikan dalam proses autentikasi untuk sistem dan aplikasi komputer. Disarankan untuk tidak pernah menyimpan kata sandi dan sebagai gantinya hanya menyimpan hash dari "kata sandi asin". Garam adalah string acak yang ditambahkan ke kata sandi yang hanya diketahui oleh sistem proses otentikasi; ini menjamin bahwa jika dua pengguna memiliki kata sandi yang sama, hash yang disimpan berbeda.
Ketika pengguna memasukkan kata sandi ke aplikasi web, kata sandi dikirim ke server web. Server web kemudian menambahkan garam ke kata sandi dan melakukan fungsi hash pada kata sandi dan garam dan membandingkan hasil hash ini dengan hash yang disimpan dalam database untuk pengguna. Jika hash cocok untuk pengguna tersebut, pengguna diberikan akses. Hashing memastikan jika terjadi pelanggaran, atau orang dalam yang jahat, kata sandi asli tidak akan pernah bisa diambil. Salting memastikan bahwa, jika terjadi pelanggaran, penyerang tidak dapat menentukan pengguna mana yang memiliki kata sandi yang sama.
Contoh fungsi hash adalah:
- MD-5
- RIPEMD-160
- SHA
- Whirlpool
Sebagai contoh, misalkan Alice ingin mengirim Bob file dan memverifikasi bahwa Bob memiliki file yang sama persis dan tidak ada perubahan yang terjadi dalam proses transfer. Alice akan mengirimkan file tersebut melalui email kepada Bob beserta hash file tersebut. Setelah Bob mengunduh file tersebut, dia dapat memverifikasi bahwa file tersebut identik dengan melakukan fungsi hash pada file tersebut dan memverifikasi hash yang dihasilkan sama dengan yang diberikan Alice.
Apa itu Encryption ?
Enkripsi adalah proses penyandian data dengan aman sedemikian rupa sehingga hanya pengguna yang berwenang dengan kunci atau kata sandi yang dapat mendekripsi data untuk mengungkapkan aslinya. Enkripsi digunakan ketika data perlu dilindungi sehingga mereka yang tidak memiliki kunci dekripsi tidak dapat mengakses data asli. Saat data dikirim ke situs web melalui HTTPS, data dienkripsi menggunakan jenis kunci publik.
Image : Okta |
Meskipun enkripsi melibatkan penyandian data, keduanya bukanlah istilah yang dapat dipertukarkan, enkripsi selalu digunakan saat mengacu pada data yang telah dikodekan dengan aman. Pengkodean data hanya digunakan saat berbicara tentang data yang tidak dikodekan dengan aman.
Ada dua tipe dasar enkripsi: kunci simetris dan kunci publik. Dalam kunci simetris, kunci yang sama digunakan untuk mengenkripsi dan mendekripsi data, seperti kata sandi. Dalam enkripsi kunci publik, satu kunci digunakan untuk mengenkripsi data dan kunci yang berbeda digunakan untuk mendekripsi data.
Contoh enkripsi adalah:
- AES
- RSA
- Blowfish
- Twofish
- FPE
AES adalah Standar Enkripsi Lanjutan dan merupakan enkripsi kunci simetris. AES menggunakan kunci 256-bit yang berarti ada 2^256, atau 1,158x10^77, kemungkinan kunci yang dapat digunakan.