Bcrypt (Adaptive Hashing Algorithm)

Pernah ada kenalan tanya ke saya “bisa gak sih kita tau password yang di daftarkan user yang ada di database” , kemungkinan besar tidak bahkan untuk pembuat sistem sekalipun karena yang di simpan dalam database sistem bukanlah password asli user melainkan hash password.

Apa itu hash , hash adalah transformasi dari character string menjadi value yang panjangnya sudah ditentukan, dan function/ algoritma yang digunakan disebut dengan hash function / hashing algorithm. Kali ini saya akan membahas tentang bcrypt salah satu hash function yang sering dimplementasikan untuk menyimpan password.

Bcrypt adalah salah satu password hashing yang di desain oleh Niel Provos dan David Mazieres dengan dasar dari blowfish cipher dan di publikasikan di USENIX pada tahun 1999

Mengapa menggunakan bcrypt ? , karena bcrypt itu lambat , iya lambat. Dibandingkan dengan hashing algoritma lain seperti md5 atau sha  , dalam mengenerate password bcyrpt dapat memakan waktu lebih lama dikarenakan algoritma eksblowfish dan jumlah round yang dapat diinputkan secara dinamik itulah kenapa bcrypt disebut adaptive.

Contoh hasil hashing menggunakan bcrypt

Gambar diatas adalah contoh hasil hash dari bcrypt dengan 10 adalah jumlah round yang dilakukan semakin besar jumlah round maka waktu yang dibutuhkan untuk mengenerated password akan semakin lama , dan 22 character setelahnya adalah generated salt

Algoritma bcrypt sangat bergantung pada key setup pada eksblowfish algoritma karena waktu terlama untuk mengenerate password berada disini

InitState bekerja seperti original blowfish algoritma yaitu mengisi P-Array dan S-box dengan dengan fractional pi dalam hexadecimal , sedangkan ExpandKey sama seperti blowfish keySchedule dengan perbedaan menggunakan 123-bit salt sebagai kuncinya.

Original Blowfish Feistel Network

Sedangkan untuk algorithma bcrypt sendiri terdiri dari eksblowfish algoritma dan OrpheanBeholderScryDoubt yang menjalankan algoritma blowfish standart dalam mode ECB sebanyak 3 64-bit blocks (3×64).

Sebagai perbandingan pada jurnal Niel Provos dan David Mazieres telah dibandingkan kecepatan generate password dengan algoritma hashing lainnya.

* Untuk implementasi dan detail penjelasan algoritma akan dijelaskan pada posting selanjutnya jika sempat

Sumber referensi:
https://en.wikipedia.org/wiki/Bcrypt
https://www.usenix.org/legacy/event/usenix99/provos/provos.pdf

Advertisements

Kannel , Open Source SMS Gateway

Kannel adalah sebuah aplikasi open source yang berfungsi sebagai WAP Gateway dan SMS Gateway untuk jaringan GSM. Dibangun dengan bahasa C dan dapat terhubung dengan SMSC , handphone , dan GSM/GPRS Modem. Kannel menggunakan interface HTTP/HTTPS untuk mengirim dan menerima sms

  • Instalasi Kannel pada Ubuntu

# apt-get install kannel

  • Konfigurasi Kannel

Setelah kannel terinstall , rubah file konfigurasi kannel yang biasanya terletak di  /etc/kannel/kannel.conf

#BEARERBOX/CORE SETUP
group = core
admin-port = 13000
admin-password = password
status-password = password
log-file = "/var/log/kannel/bearerbox.log" ##->letak log bearerbox
log-level = 0 ##-> 0 = debug , 1 = info , 2 = warning , 3 = error , 4 = panic
access-log = "/var/log/kannel/access.log"
smsbox-port = 13001
store-location = "/var/log/kannel/kannel.store" ##-> letak file dimana pesan disimpan

#SMSC modem
group = smsc
smsc = at
host = localhost
port = 13013
smsc-id = idsmsc
my-number = 082123456789 ##-> nomor SIM card yang dipake
modemtype = wavecom
device = /dev/ttyUSB0 ##-> lokasi modem , biasanya terletak di ttyUSB0/ttyUSB1
speed = 115200

#MODEM
group = modems
id = WAVECOM
name = wavecom
detect-string = "WAVECOM"
detect-string2 = "MODEM"
init-string = "AT+CNMI=1,2,0,1,0;+CMEE=1"

# SMSBOX SETUP
group = smsbox
bearerbox-host = localhost
sendsms-port = 13131
sendsms-chars = "0123456789+"
log-file = "/var/log/kannel/smsbox.log" ##-> log sms yang masuk
log-level = 0
access-log = "/var/log/kannel/access.log"
global-sender = 082123456789

# SEND-SMS USERS
group = sendsms-user
username = username
password = password
user-allow-ip = 127.0.0.1 ##-> alamat ip yang diperboleh kan mengirim pesan

group = sms-service
keyword = default
max-messages = 0
get-url = "http://urlapiservice/respond?msg=%a&time=%t&sender=%p"

*Catatan

– Setting kannel diatas diperuntukan untuk pengiriman pesan menggunakan modem , untuk pengiriman langsung ke smsc memerlukan akses ke smsc tujuan yang tergolong susah didapat
– pada group sms-service get-url adalah alamat url yang akan dikirimkan data pesan yang masuk melalui protocol http dalam hal ini GET dengan parameter %a = isi pesan yang diterima , %t = waktu pesan tiba , %p = nomor pengirim

  • Menjalankan Kannel

# /usr/sbin/bearerbox /etc/kannel/kannel.conf &

Untuk menjalankan bearerbox

# /usr/sbin/smsbox /etc/kannel/kannel.conf &

Untuk menjalankan smsbox untuk memantau pesan yang masuk

Untuk menghentikan service kannel cukup ketikkan perintah

# pkill box

Secara garis besar kalau tidak ada masalah kannel sudah bisa berjalan , untuk mencoba mengirimkan pesan bisa mencoba masukkan url ini dibrowser

http://127.0.0.1:13013/cgi-bin/sendsms?username=user&password=pass&to=085xxxxxx&text=mau+kirim+sms

*Catatan

– 127.0.0.1 adalah alamat dimana aplikasi kannel berada dan 13013 adalah port yang diatur di group SMSC , sedangkan user dan password harus sesuai yang ditulis di group sendsms-user, serta alamat / ip komputer browser yang menjalankan perintah ini juga harus terdaftar di group sendsms-user

Sumber Referensi

http://www.kannel.org/download/1.4.4/userguide-1.4.4/userguide.pdf

https://firtstest.wordpress.com/hacking/sms-gateway-di-linux-kannel-wvdial-di-ubuntu/

SMS , SMS Center , dan SMS Gateway

Seringkali kita mendapat sebuah pesan atau sms dari sebuah toko usaha atau sejenisnya yang berisi tentang promosi tentang produknya, yang dimana tidak hanya kita yang mendapat pesan tersebut tetapi orang lain juga disaat yang hampir bersamaan dan dalam jumlah yang banyak. Bagaimana cara itu dilakukan, apakah ada orang yang mengetik pesan tersebut dan mengirimnya secara manual satu persatu ? , tentu tidak.

Pada postingan kali ini saya akan menjelaskan bagaimana cara itu dilakukan.

  • Apa itu SMS

SMS (Short Message Service) adalah sebuah teknologi yang memungkinkan penggunanya untuk menerima dan mengirimkan pesan antar handphone . SMS pertama kali muncul di Eropa pada tahun 1992

  • SMSC

SMSC atau SMS Center bertanggung jawab untuk mengendalikan pengiriman sms . Ketika pesan dari hanpdhone terkirim dia akan dikirmkan ke smsc terlebih dahulu kemudian smsc akan meneruskannya ke tujuan. Ketika alamat tujuan tidak dapat dihubungi maka pesan akan disimpan oleh smsc kemudian akan dikirim lagi beberapa saat kemudian. Pada dasarnya alamat smsc itu seperti nomor biasa hanya saja menggunakan nomor international , pada kartu SIM (Subscriber Identity Module) lama / hp lama biasanya kita harus mensettting alamat smsc tersebut secara manual tetapi untuk sekarang alamat smsc tersebut sudah tersimpan dalam kartu SIM .

  • SMS Gateway

SMS Gateway berfungsi untuk menjembatani pesan yang dikirim dan diterima , seperti penghubung antara dua smsc yang berbeda protocol (terkadang tiap organisasi/vendor mempunyai protocol tersendiri di smsc mereka ) ,  mengirimkan pesan melalui SIM card ,  membuat pesan yang masuk menjadi email  dan sebagainya termasuk mengirim pesan massal untuk promosi .

Pada Umumnya terdapat 2 cara untuk mengirimkan pesan melalui komputer

1)  Menghubungkan komputer dengan handphone atau GSM/GPRS Modem kemudian menginstruksikan modem dengan SIM card didalamnya untuk mengirimkan pesan dengan menggunakan AT Command .

2) Menghubungkan komputer dengan SMSC lalu mengirimkan pesan menggunakan protocol yang digunakan oleh SMSC tujuan

Dari kedua cara tersebut cara kedua lebih dapat mengirimkan pesan lebih banyak dan lebih cepat tetapi untuk melakukanya kita harus mempunyai akses ke smsc tujuan tersebut. Sedangkan cara pertama kita hanya perlu membutuhkan sebuah modem yang mendukung perintah untuk mengirimkan pesan dan sebuah SIM Card yang ada pulsanya tentunya.

  • Mengirimkan SMS menggunakan AT Command

Install Minicom / Hyper Terminal (windows) atau aplikasi sejenisnya untuk menjalankan AT Command. Atur konfigurasi pada minicom untuk Linux, Modem USB biasanya terletak pada /dev/ttyUSB0 atau /dev/ttyUSB1 . Ketikkan AT, jika ada response OK berarti sudah terhubung dengan modem.

AT
OK
AT+CMGF=1
OK
AT+CMGW="+6285123456789"
> A simple demo of SMS text messaging.
+CMGW: 1

OK
AT+CMSS=1
+CMSS: 20

OK

– Pada Baris ke 3 , AT+CMGF menginstruksikan modem untuk bekerja kedalam text mode
– Pada baris ke 5 , AT+CMGW berfungsi untuk menyimpan pesan kedalam penyimpanan di modem dengan nomor tujuan (62 kode nomor indonesia ) 85123456789
– Pada baris ke 7 , 1 adalah nomor index dimana pesan itu dismpan
– Pada baris ke 9 , AT+CMSS=1 mengirimkan pesan yang ada pada storage di index 1

Pengiriman dengan cara ini cukup banyak menyita waktu dan harus menghafal AT Command , oleh karena itu dibuatlah SMS Gateway untuk melakukan peran ini dan kita hanya perlu mengatur konfigurasinya. Yang mana akan di jelaskan di postingan selanjutanya.

 

Referensi Lengkap : http://www.developershome.com/sms

Menggunakan Shared Folder pada VirtualBox

Hal yang sering dijumpai ketika kita menggunakan virtual box adalah bagaimana caranya kita mengirim file yang ada pada OS komputer kita (Host OS) kedalam OS yang ada pada Virtual Box (Guest OS) . Mumpung masih fresh saya share gimana caranya :

Dalam kasus saya , saya memakai VirtualBox Ver. 4.3.10_Ubuntu dan Operating Sistem nya menggunakan Lubuntu 14.04 sebagai Host dan Windows 7 x86 (32bit) sebagai Guest nya (sebenernya nemu kaya gini gara2 kerjaan juga -_-# )

Dalam virtual box terdapat fitur yang bernama Shared Folder , untuk menggunakannya kita harus menginstall Guest Additions detailnya , dilinux cukup jalankan perintah :

sudo apt-get install virtualbox-guest-additions-iso

Setelah terinstall nyalakan Windows 7 pada virtualbox , pada tab Device (di pojok kanan atas) pilih “Shared Folder Settings” kemudian tambahkan folder yang akan di share , check “Auto-mount” dan “Make Permanent”.

desktop 2_017

Kembali ke tab Device lagi sekarang pilih “Insert Guest Addition CD image” . Jalankan Windows 7 pada Virtualbox dan buka windows explorer . Pada bagian CD Drive akan muncul “VirtualBox Guest Addition” pilih lalu jalankan installer didalamnya. Setelah terinstall maka akan muncul drive vboxsrv yang pathnya menuju folder yang kita share .

Wn7

Mengatasi freeze / hang mendadak pada Lubuntu 12.04

Udah lama ga nulis nih , postingan kali ini saya akan membahas bagaimana cara mengatasi freeze yang sering terjadi di TeaLinux OS 5.0 Kukicha , kenapa di judul tulisanya Lubuntu 12.04 . Soalnya “Kukicha” itu adalah remaster dari Lubuntu 12.04 jadi memiliki kernel yang sama . Jadi permasalahan kenapa sering hang itu karena ada masalah di kernelnya , jadi solusinya ya ganti kernel , gimana caranya ?

Pertama download file file yang di butuhkan http://kernel.ubuntu.com/~kernel-ppa/mainline/ dan cari “v3.4-precise/” folder. Download 3 file yang ada disitu yaitu

1. linux-headers-3.4.0-030400-generic_3.4.0-030400.201205210521_i386.deb

2. linux-headers-3.4.0-030400_3.4.0-030400.201205210521_all.deb

3. linux-image-3.4.0-030400-generic_3.4.0-030400.201205210521_i386.deb

Kalau pake Lubuntu 12.04  64bit download yang “amd64” selain “i386”.

Setelah di download tinggal jalanin/double klik aja terus install satu persatu lalu restart komputernya . Jika Komputer anda memiliki lebih dari satu OS maka akan ada tambahan pilihan grub 12.04 dengan kernel yang lama , untuk menghilangkannya hapus saja semua file kernel yang dulu di synaptic / hapus pilihannya di grub.cfg / biarin aja juga gpp (mungkin :p) .

Dah gitu aja gampang kan semoga bermanfaat.

Release Party TeaLinux OS 5.0

Dateng nih salah satu kreasi anak Indonesia , TeaLinux OS 5.0 . Bagi yang belum tau apa itu TeaLinux saya jelasin , Tea Linux adalah salah satu distro Linux yang diturunin dari Ubuntu atau bisa dibilang remastering dari Ubuntu , Tea Linux sendiri di kembangin sama komunitas bernama DOSCOM (Dinus Open Source community) yang ditujukan untuk programming , jadi kalau mau coding di Linux ga terlalu ribet karena udah di setting sedemikian rupa biar siap di jalanin.

Bicara tentang TeaLinux , besok tanggal 9 April 2013 DOSCOM akan ngadain Release party nih jadi yang pengin lebih tau  tentang TeaLinux daftar aja, ada pak Onno W Purbo juga lho . Info selengkapnya bisa dilihat disini.

CodeCamp 2013 The Art Of Game Programming

Awal tahun ini Doscom dengan HMTI Udinus ngadain acara codecamp lho. CodeCamp kali ini kita akan membuat sebuah game yang nantinya akan dapat berjalan di platform android. Acara ini bakal diselengarain dari tanggal 26 – 28 Januari 2013 , jadi buruan daftar soalnya cuman bisa nampung 40 orang doang.

pamflet fix

Untuk masalah resource gambar dan sebagainya tenang aja , karena game dev Fasilkom (Gadged) yang bakal nyediain resource nya so tinggal mikir coding nya aja.

Syarat biar bisa ikut acara ini (harus bayar tentunya)  paham Java Fundamental , soalnya disana pematerinya gak bakal sempet ngajarin Fundamental java , jadi belajar dulu ya.

Untuk pendaftaran dan informasi lebih lengkap bisa kunjungi situs https://sites.google.com/site/codecamp2012udinus/home