Categories
Dokumentasi

General Purpose Hashing vs Password Hashing

Daftar Isi

Proteksi Berkas Konfigurasi Pada Device

Apabila perangkat lunak meninggalkan konfigurasi dalam bentuk berkas pada perangkat, misalnya myconfig.cnf pada Android, maka berkas konfigurasi tersebut dapat diamankan dengan kode khusus dengan bantuan hash. Keamanan tersebut dibuat untuk berkas konfigurasi yang tidak boleh disalin ke perangkat lain.

Triknya adalah dengan

  1. Menyertakan identifier unik dari perangkat atau perangkat lunak tersebut sebagai salt pada saat melakukan hash pada kode user (atau dapat menggunakan parameter konfigurasi lainnya) ditambah pepper dan hasilnya disimpan di dalam myconfig.cnf tersebut. Di mana salt dapat berupa hash dengan tambahan salt. Pepper dapat berupa frase yang sama untuk semua perangkat lunak.
  2. Hasil hash dipotong agar sulit menebak identifier unik yang digunakan
  3. Identifier unik bukan variabel statis, tetapi melalui fungsi get atau variabel sistem yang ada pada perangkat lunak, misalnya Secure.ANDROID_ID
  4. Identifier unik bukan berasal dari berkas lain yang dibuat oleh perangkat lunak yang dibuat tersebut, misalnya membuat UUID kemudian disimpan ke dalam berkas myuuid.cnf
  5. Hindari menggunakan identifier unik yang sensitif terhadap privasi, misalnya kode user, password, kode IMEI, mac address dan sebagainya. Gunakan Android ID, Advertising ID, Firebase ID dan sebagainya (baca: https://developer.android.com/training/articles/user-data-ids). General purpose hashing dapat digunakan karena password tidak digunakan pada saat membuat hash.
  6. Penulisan hash proteksi ke dalam berkas konfigurasi dilakukan setelah berhasil login dengan algoritma
    if valid(userid, password) then
    append (config_path, get_hash(param, salt));
    end if;
  7. Perlu dibuat mekanisme reset hash proteksi untuk mengantisipasi perubahan identifier unik karena satu dan lain hal

|-Contoh Implementasi Proteksi Berkas Konfigurasi

|–Contoh Hash Salt dan Proteksi

additionalsalt → base64_encode( md5 ( frase ) )
salt → base64_encode ( sha512 ( concat ( base64_encode ( sha1 ( identifier_unik ) ), additionalsalt ) ) )
pepper → base64_encode( md5 ( frase2 ) )
hash_proteksi → substr ( sha256 ( concat ( parameter_konfigurasi, salt, pepper) ), 6, 10)

|–Contoh Isian

frase → "ini adalah conToh Frase 12$%"
parameter_konfigurasi → kode user → 1235
identifier_unik → Android ID → 92fa1feb7e2711eb
frase2 → "ini AD4lah Frase P3pp3&"

|–Contoh Perhitungan

additionalsalt → MzkwMjgzMjU4MmU0MGRmZWNmZjBiOWIyOTA0NTlmMGU=
salt

ZTdhMzQ5OTdhOTVlMDg4MTgwOGQxYjg4NDA3NWVjMDc2OWUyYjk5MWQzMTUzZGQ2ZDlkMTQ5Y2Rk
ZmI4ZjcxOGY5YWFlMzgzNWNlOTUzNGE3MTBjN2NiMjRlNDZkYzIwZDIwNTkxOTA3NGRmN2EwMzc3
MjBjYjBlYzZmMmUzZmE=
pepper → NzY0NzcxYmUyMDU4ZjBjZmVmOTQxMWM3OTc1OWM1Zjk=
hash_proteksi → f7c8443944

|–Contoh Berkas Konfigurasi

iduser=1235
nama=john doe
asal=yogyakarta
proteksi=f7c8443944

|-Cara Validasi

Dibuat lagi hash_proteksi seperti ketika membuat hash_proteksi pada berkas konfigurasi. Apabila sama dengan proteksi, maka valid.

ilustrasi proteksi berkas konfigurasi
ilustrasi proteksi berkas konfigurasi

Baca juga: Memperkuat General Purpose Hashing

Demikian, semoga bermanfaat. [bst]

Sumber

By basit

Biro Pengembangan Teknologi Dan Sistem Informasi

One reply on “General Purpose Hashing vs Password Hashing”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.