Senin, 15 Agustus 2016

Perbedaan Encoding, Encryption, Hashing dan Obfuscation

Pada dunia ICT (Information Communication and Technologies) yang telah kita ketahui. Tidak jarang kita menemukan istilah - istilah baru saat kita belajar atau membaca suatu artikel terkait dunia ICT. Bahkan kita juga sering menemui istilah yang antara istilah satu dengan istilah lainnya seperti sekilas hampir sama artinya, namun sebenarnya berbeda. Pada tulisan kali ini, saya akan mencoba sedikit menjabarkan apa perbedaan dari istilah Encoding, Encryption, Hashing dan yang mungkin orang jarang sekali dengar yaitu Obfuscation. Mari kita jabarkan satu per satu mulai dari Encoding.

1. Encoding
Apa itu Encoding? Kita biasanya sering menemui istilah ini, misal saat ingin melakukan Save suatu file HTML :D. Sebagian dari kita mungkin akan identik dengan UTF-8, UTF-16, Unicode, ASCII dan seterusnya saat menemui kata Encoding ini. Saya tidak akan membahas apa itu UTF-8, UTF-16 dan teman - temannya yang lain pada kesempatan kali ini. Jadi, sebenarnya apa itu Encoding? apabila ditinjau dari tujuannya yaitu mentransformasikan data menjadi format lain untuk tetap dapat dikonsumsi dengan baik oleh sistem yang berbeda. Tujuan dari Encoding ini bukan untuk menjaga data tetap bersifat rahasia. Karena saat format data diubah oleh proses Encoding menjadi format data lainnya, proses Encoding menggunakan sebuah skema yang mana skema tersebut tersedia secara publik. Sehingga mudah saja jika kita ingin melakukan proses Reverse (Decoding).    

Gambar Skema ASCII

2.Encryption
Istilah Encryption ini sepertinya yang cukup populer di antara yang lainnya. Menurut ilmu yang pernah saya dapat dari kuliah dulu :P, Encryption ini adalah istilah yang sebenarnya berada pada cabang ilmu Kriptografi (ilmu seni merahasiakan data). Beda dengan Encoding tadi, bahwa Encryption justru bertujuan untuk menjaga kerahasiaan sebuah data setelah data tersebut diubah formatnya. Biasanya ada istilah - istilah yang terkait dengan Encryption yaitu Plain Text (data sebelum dikenakan proses Encryption) dan Cipher Text (data sesudah dikenakan proses Encryption). Untuk format data setelah dilakukannya Encryption, tidak sembarangan pihak yang bisa mengubahnya kembali / Reverse (Decryption) menjadi Plain Text. Karena dibutuhkan suatu kunci / key untuk mengubah data Cipher tersebut menjadi Plain. Contoh - contoh dari Encryption biasanya seperti RSA, Blowfish, AES dan seterusnya silahkan dicari sendiri :D.

Gambar Cipher Text

3. Hashing
Saya suka mengikuti beberapa komunitas terkait bahasa pemrograman, seperti PHP Indonesia misalnya. Disana saya masih suka melihat pertanyaan - pertanyaan yang misalnya "Bagaimana cara mengubah kembali password yang sudah menjadi MD5 ke text biasa lagi?". Kurang lebih seperti itu pertanyaannya. Jika ada yang masih belum tau MD5, itu adalah salah satu teknik hashing yang cukup populer namun konon sudah tidak aman lagi :D. Hashing tidak sama dengan Encryption yang bisa dikembalikan lagi dari cipher text ke plain text. Hashing hanya memiliki proses satu arah (one way), hanya bisa melakukan pengubahan plain text ke cipher text. Lalu, apa tujuan dari menggunakan hashing ? sebenarnya hashing adalah cara memberikan suatu tanda integritas pada suatu object, bisa suatu pesan atau file. Terkadang saat suatu pesan atau file dikirim melewati suatu network atau jaringan. Kita tidak tau apakah file atau pesan kita saat menuju destinasi tidak ada yang mencoba mengubahnya. Jika ada yang mengubahnya, pasti cipher dari hashing file atau pesan tersebut berbeda dari cipher hashing awal saat file atau pesan itu akan dikirimkan. Sehingga cipher tersebut bisa dijadikan indikasi terkait integritas file atau pesan tersebut.

Gambar Logic Scheme SHA512
4.Obfuscation
Obfuscation adalah istilah yang mungkin tidak begitu populer dibandingkan Encoding, Encryption dan Hashing. Tetapi mungkin kita semua pernah menemukannya. Misal pada saat kita memilih library Jquery yang sizenya lebih kecil (Jquery.min.js). Jika kita buka file jquery.min.js tersebut, kita tidak akan dengan mudah membaca source code yang ada di dalamnya. Jadi sekarang sudah tau apa itu Obfuscation ? Ya benar, Obfuscation bertujuan untuk membuat source code menjadi sulit dibaca, dimengerti, atau digandakan.

Gambar Obfuscation


Itulah penjelasan singkat dari perbedaan Encoding, Encryption, Hashing dan Obfuscation. Semoga bermanfaat. Terimakasih