Hashing dan SALT
Tags: cybersecurity, webdev, beginners
Published: 2021-12-10 14:20:17

Made by:
Kelompok (B2) Stories From Udayana:
* Gede Sudimahendra (2008561057) (B)
* Jeremi Herodian Abednigo (2008561042) (B)
* I Gusti Agung Istri Bianca Githa Saraswati (2008561087) (B)
* Muhammad Arrysatrya Yusuf Putranda (2008561097) (B)

From [Universitas Udayana](https://www.unud.ac.id/)

##Problem With Human and Password
Pada zaman saat ini dimana banyak hal sudah berkembang pesat. Banyak perkembangan yang ada dari waktu ke waktu khususnya pada bidang teknologi. Namun, dalam perkembangan ini terdapat banyak kesenjangan seperti server dan database yang dicuri atau dikompromikan. Hal tersebut membuat kerugian besar jika tidak diatasi karena menyangkut hal seperti keamanan. Maka dari itu, penting untuk memastikan bahwa beberapa data yang penting untuk pengguna, contohnya password, tidak boleh dipulihkan. Dengan demikian, kami mempelajari dasar-dasar pada hashing yang diperlukan untuk melindungi keamanan seperti password. 

Pada keamanan siber dari vaksin.com, membeberkan bahwa hash password itu menjadi salah satu target pencurian data. Mengapa demikian? Karena hash password tersebut membantu teknologi pada zaman sekarang untuk menjaminkan keamanan yang dimiliki. Jadi server database tidak akan bisa menyimpan dalam bentuk data asli kalau sudah di hash. Penambahan hash pada pembuatan password tentunya dapat membantu user dalam penyimpanan hal-hal yang bersifat privasi. Jika kita lihat sebuah kasus yang pernah terjadi seperti contohnya kasus Tokopedia Hack, dimana pada kasus ini CNN Indonesia mengatakan bahwa cukup sulit bagi para peretas untuk mengetahui password asli pengguna karena sudah melewati proses hash. 

Maka dengan hash dapat dikatakan sebagai sekuriti penyimpanan password yang baik. Dengan demikian dalam pembuatan teknologi yang melibatkan data privasi yang kini sangat dibutuhkan di bidang apapun. Sangat diperlukannya penjaga keamanan yang sangat baik untuk mampu menjadi tembok tinggi pelindung data rahasia dalam bidang teknologi. Maka dalam artikel akan dibahas tentang hashing mengingat pentingnya hash password ini dalam kepentingan bersama demi keamanan di dunia yang sudah berkembang ini.


##Hashing sebagai Solusinya
Jadi apa sih hash itu? Hash merupakan salah satu proses dimana suatu inputan data yang berbeda akan menghasilkan output alfanumerik dengan panjang yang tetap yang mewakili data yang diinput tersebut, jika diibaratkan hash merupakan suatu rangkuman atau sidik jari dari sebuah data digital. Lalu apa bedanya dengan enkripsi? Perbedaan yang paling mencolok di antara hash dan enkripsi adalah, jika suatu data dienkripsi, maka data tersebut dapat dikembalikan lagi melalui prosed dekripsi, sedangkan jika suatu data di hashing, maka data tersebut tidak akan bisa dikembalikan lagi. Hash ini seperti jalan satu arah bagi suatu data, maka sering juga disebut dengan One Way Function atau enkripsi satu arah. Pada umumnya hash memiliki dua karakteristik khusus, yakni :

1.    Satu inputan yang sama maka akan selalu menghasilkan output yang sama pula
2.    Suatu inputan yang sudah melalui proses hash dan menjadi output tidak dapat dikembalikan lagi dengan fungsi atau cara apapun.

Ada beberapa algoritma hash yang digunakan, diantaranya Algoritma MD4, RIPMEND, WHIRPOOL, TIGER, namun yang paling banyak digunakan adalah SHA. SHA atau Secure Hashing Algorithm merupakan algoritma hashing yang dirancang oleh badan keamanan nasional yang tujuan penggunaannya untuk proses tanda tangan digital, SHA 0 hingga SHA 1 memiliki panjang 160 bit, sedangkan SHA 256 merupakan penyempurnaannya yang memiliki panjang 256bit. 

Ada beberapa alasan mengapa hash merupakan suatu proses yang penting. Pertama dengan hash akan mampu menjaga integritas data, hal ini dikarenakan hash sangat sensitif dengan perubahan, perubahan satu karakter saja maka akan mengubah keseluruhan output fungsi hash. Kedua dengan hash dapat mempercepat proses pengiriman suatu data, alasannya adalah karena output dari hash akan tetap memiliki panjang yang sama meski inputannya memiliki panjang yang berbeda beda. Ketiga fungsi hash dapat menormalkan panjang dari suatu data, misalnya ketika kita akan membuat website dimana pengunjung dapat membuat akun, normalnya tidak ada panjang spesifik dari password yang bisa digunakan melainkan menggunakan range di antara 5 sampai 8 karakter yang nantinya akan disimpan ke database server, dengan hash maka panjang dari tiap password tadi dapat diseragamkan karena hash akan menghasilkan output yang tetap. Yang terakhir hash dapat menjadi identitas dan label suatu aset digital, yang paling umum adalah kriptografi, ketika kita membuat suatu wallet maka kita biasanya akan diberikan serangkaian angka, angka inilah yang menjadi bukti maupun identitas kepemilikan wallet tersebut.


##Hashing saja tidak Cukup
Di atas kita sudah membahas bagaimana sebuah hash itu diimplementasikan khususnya paling banyak diterapkan untuk menyimpan sebuah password user. Karna Hash ini yang sifatnya one-way hashing sangat aman untuk menyimpan sebuah password ke dalam database sistem. Tetapi ternyata menggunakan hash seperti MD4, MD5, SHA1, SHA2, dll, tidak cukup aman untuk memanipulasi sebuah password. 

Manusia merupakan makhluk yang sulit untuk mengingat sesuatu, misal kebanyakan manusia menggunakan banyak password-password yang sama, baik itu antar website atau antar user. Jadi misal ada hacker yang sudah mengetahui algoritma hashing yang digunakan suatu website, okey SHA2 misal. Meskipun algoritma ini merupakan algoritma yang one way. Hacker bisa mengeksploitasi kelemahan manusia, seperti yang dikatakan tadi. Orang-orang kebanyakan menggunakan password yang sama, dan ada website yang sudah mengindeks password-password yang umum digunakan oleh orang. Contoh Wikipedia : https://en.wikipedia.org/wiki/Wikipedia:10,000_most_common_passwords

Misal, hacker ini gabut satu hari, dia memutuskan untuk meng-hash password-password yang merupakan kombinasi dari 5 alphanumeric character. Dengan komputer yang ada sekarang hacker dapat menyelesaikan semuanya dalam kurang dari 12.89 detik, password dengan panjang 6 dalam waktu 20 menit, password dengan panjang 7 dalam 1 hari, dan password dengan panjang 8 dalam 127 hari. Mereka akan menyimpan password yang sudah didapatkan, hacker juga bisa menggunakan algoritma-algoritma lain yang lebih advance, mungkin mengambil 10.000 most common password, mungkin juga menggunakan tahun akun dibuat, dan algoritma lainnya. Karena manusia sangat mudah ditebak, dan setiap dari password kita memiliki suatu pola.

Misal, ada data breach 3-4 tahun kedepan. Okey, kita sudah belajar hashing diatas, perusahaan tidak akan menyimpan data kita dalam bentuk plaintext. Data yang di breach ini tentu tidak akan terlalu berguna untuk hacker. Namun untuk hacker gabut kita, yang sudah memiliki data 10.000 most common password dalam databasenya, data yang sudah di hash. Dia dapat mencocokan setiap hash yang ada di dalam data breach. Dan tentu bisa dengan mudah mendapatkan password dari akun yang dicari. Karena itu, kita memerlukan SALT dalam penyimpanan password dengan hashing.


##SALT (bukan garam yakk) tapi bumbu juga
Iya SALT ini garam yang ditambahkan ke dalam password yang kemudian di-hash. Ibaratnya ketika kamu memasak sebuah makanan, apa jadinya jika makanan tersebut tidak menggunakan garam? Pasti sangat hambar bukan? Seperti ada sesuatu yang kurang dan makanan tersebut tidak enak untuk dimakan. Ketika garam itu ditambahkan kepada makanan kita, maka makanan kita akan terasa lebih lezat. Demikian pula dengan hash.
    
Konsep SALT pada Hash password ini konsepnya adalah dengan menambahkan sebuah string acak kepada password. Seperti contoh password “password123”, kita tau bahwa password ini sangat populer bahkan tercatat dalam National Cyber Security Centre sebagai password yang paling banyak digunakan, tetapi apabila kita menggunakan SALT yang passwordnya itu tadi “password123” akan menjadi “password123#^R5$^@>}{” .Sekarang password ini sudah tidak masuk top list most common password karena ada tambahan string acak “#^R5$^@>}{” yang ditambahkan oleh sistem secara otomatis ketika pembuatan password dan setiap akun pengguna memiliki SALT-nya masing-masing (unik). Pembuatan SALT ini tidak memiliki aturan baku dalam pembuatannya, semua orang bebas bagaimana cara mereka membuatnya dalam sistem mereka dan berapa panjang string yang akan ditambahkan kepadamu password. Semakin panjang string random yang diberikan, maka semakin aman password itu digunakan meskipun user menggunakan password “password123”

Tetapi hal ini bukan satu-satunya cara, kita tidak akan tau bagaimana peretas akan membobolnya, pasti suatu saat akan ada kelemahan dan SALT yang ditambahkan ini bisa jadi diketahui. SALT bukan satu-satunya cara yang membuat password kita aman, tetapi sejauh ini SALT sudah lumayan membantu untuk mengamankan password kita.

[1]    R. J. Hedges, B. J. Rothstein, and E. C. Wiggins, Managing Discovery of Electronic Information: A Pocket Guide for Judges. Federal Judicial Center, 2017.

https://www.cnnindonesia.com/teknologi/20200504084443-185-499681/pakar-bahas-hash-salt-password-untuk-kecoh-peretas-tokopedia

https://code.tutsplus.com/id/tutorials/understanding-hash-functions-and-keeping-passwords-safe--net-17577