141613743-brute-force

11
Pengenalan Algoritma Algoritma atau dapat diartikan sebagai susunan/langkah/urutan yang logis dilakukan untuk memecahkan suatu masalah dan mendapatkan hasil yang diinginkan. Algoritma tidak hanya dikaitkan dengan dunia komputer melainkan tindakan dan kegiatan yang kita lakukan sehari-hari dalam menyelesaikan masalah. Algoritma berbeda dengan Logaritma yang merupakan fungsi Matematika. Contoh Algoritma dalam kehidupan sehari-hari, Langkah membuat Nasi Goreng : - Siapkan alat dan bahan dalam pembuatan nasi goring, misalkan nasi, bumbu, alat untuk memasak, telur, dan lainnya - Nyalakan api dalam keadaan sedang, panaskan wajan dan masukkan minyak goreng secukupnya - Masukkan telur dan bumbu nasi goreng ke dalam wajan - Masukkan nasi ke dalam wajan - Aduk secara merata sampai nasi goreng benar-benar matang - Matikan api dan hidangkan nasi goreng ke atas piring - Nasi Goreng siap dinikmati

Upload: edi-setiawan-amiruddin

Post on 26-Dec-2015

10 views

Category:

Documents


0 download

DESCRIPTION

cv

TRANSCRIPT

Page 1: 141613743-Brute-Force

Pengenalan Algoritma

Algoritma atau dapat diartikan sebagai susunan/langkah/urutan yang

logis dilakukan untuk memecahkan suatu masalah dan mendapatkan hasil yang

diinginkan. Algoritma tidak hanya dikaitkan dengan dunia komputer melainkan

tindakan dan kegiatan yang kita lakukan sehari-hari dalam menyelesaikan

masalah. Algoritma berbeda dengan Logaritma yang merupakan fungsi

Matematika. Contoh Algoritma dalam kehidupan sehari-hari,

Langkah membuat Nasi Goreng :

- Siapkan alat dan bahan dalam pembuatan nasi goring, misalkan nasi,

bumbu, alat untuk memasak, telur, dan lainnya

- Nyalakan api dalam keadaan sedang, panaskan wajan dan masukkan

minyak goreng secukupnya

- Masukkan telur dan bumbu nasi goreng ke dalam wajan

- Masukkan nasi ke dalam wajan

- Aduk secara merata sampai nasi goreng benar-benar matang

- Matikan api dan hidangkan nasi goreng ke atas piring

- Nasi Goreng siap dinikmati

Algoritma Brute Force

Algoritma Brute Force adalah salah satu cara penyelesaian masalah

khususnya di dalam dunia komputer. Brute Force adalah sebuah pendekatan

yang lempang (straightforward) untuk memecahkan suatu masalah, biasanya

didasarkan pada pernyataan masalah (problem statement) dan definisi konsep

yang dilibatkan.

Algoritma brute force memecahkan masalah dengan sangat sederhana,

langsung dan dengan cara yang jelas (obvious way). Algoritma yang secara jelas

Page 2: 141613743-Brute-Force

langsung ke pusat permasalahan. Algoritma ini biasanya tidak memerlukan teori

khusus untuk mengimplementasikannya. Algoritma ini sering juga disebut

Algoritma sapu jagad karena hampir semua persoalan pemrograman bisa

diselesaikan dengan algoritma ini.

Algoritma Brute Force sering disebut Algoritma tidak cerdas karena tidak

memerlukan pemikiran secara kompleks, hanya dengan beberapa baris semua

permasalahan dapat dipecahkan dengan mudahnya.

Kelemahan Algoritma Brute Force yaitu lemah dalam sisi penggunaan

memori pada komputer jika data yang diinginkan berada dalam titik tengah ke

atas (> n/2). Apa yang dimaksud dengan titik tengah ke atas? Yaitu titik dimana

ketika data yang akan dicari berjumlah 10.000 dan brute force melakukan

perulangan pencarian data lebih dari 10.000/2 = 5.000 kali. Brute Force menjadi

sangat efektif ketika data yang akan dicari berada pada titik tengah ke bawah ( <

n/2 ).

String

String dalam pemrograman komputer adalah sebuah deret

simbol/karakter. String digunakan sebagai tipe data pada pemrograman

komputer. Tipe data string adalah tipe data yang digunakan untuk menyimpan

barisan karakter dengan indeks terurut. Contoh : ‘AKU’ adalah kumpulan dari tiga

karakter dengan ‘A’ pada indeks 0, ‘K’ pada indeks 1, dan ‘U’ pada indeks 2.

Umumnya indeks dimulai dari angka 0. Banyak sekali algoritma dalam

pengolahan String, misalkan penghitungan jumlah karakter pada String (strlen

pada bahasa C dengan menggunakan library string.h), penyalinan String (strcpy

pada library string.h), dan berbagai pemrosesan String lainnya.

Pseudo Code Untuk String dalam bahasa C

2

Page 3: 141613743-Brute-Force

#include <stdio.h>

int main()

{

char string[100];

string = "Hello world";

return 0;

}

Implementasi Algoritma Brute Force dalam Pencocokan Pola String

Implementasi pada Pattern Matching Sederhana

Algoritma Brute Force dalam pencocokan Pola String sederhana tidaklah

serumit dengan menggunakan Algoritma Cerdas misalnya Knutt-Morris-Pratt

Algorithm , Algoritma Brute Force berperan memeriksa dan membandingkan

Pattern yang dicari dengan Pattern yang ada di String. Bila hasil cocok, maka

program melakukan keluaran sesuai dengan perintah. Bila hasil belum ditemukan

maka program akan melakukan perulangan hingga jumlah peluang yang mungkin

terjadi.

Pattern Matching Sederhana :

Diberikan satu String yang akan dicari polanya,

#include <stdio.h>

int main()

{

//String

char kata[11];

kata = "ihaveadream";

3

Page 4: 141613743-Brute-Force

//Pola yang dicari

char cari[3];

cari = “ead”;

return 0;

}

Data yang disimpan di variabel :

Char i h a v e a d r e a m

Indeks 0 1 2 3 4 5 6 7 8 9 10

Char e a d

Indeks 0 1 2

Algoritma Brute Force Pattern Matching (dalam bahasa C) :

int i;

int indeks;

for(i=0;i<kataLength-cariLength+1;i++)

{

int j=0;

while(j<cariLength && kata[i+j] == cari[j])

{

j++;

if(j >= cariLength)

{

indeks = i;

//posisi pattern ditemukan = i

}

}

}

Cara kerja Algoritma Brute Force pada Pattern Matching :

4

Page 5: 141613743-Brute-Force

Berikut Pseudo Code (dalam bahasa C) untuk Pattern Matching

Sederhana dengan Brute Force

#include <stdio.h>

#include <string.h>

int main()

{

//String

char kata[100];

scanf("%s",&kata);

//Pola yang dicari

char cari[10];

scanf("%s",&cari);

//strlen = fungsi untuk mendapatkan panjang string

int cariLength = strlen(cari);

int kataLength = strlen(kata);

5

i h a v e a d r e a m Panjang String = 11

Panjang Pattern = 3

Jumlah perulangan = Panjang String –

Panjang Pattern (ditambah 1 jika indeks

dimulai dari 0)

Algoritma ini menyelesaikan masalah

dengan mencoba kemungkinan dari

awal hingga akhir secara terurut.

e a d

e a d

e a d

e a d

e a d

e a d

e a d

e a d

e a d

Page 6: 141613743-Brute-Force

//Mulai Brute Force dalam Pencarian String

int i;

int indeks;

for(i=0;i<kataLength-cariLength+1;i++)

{

int j=0;

while(j<cariLength && kata[i+j] == cari[j])

{

j++;

if(j >= cariLength)

{

indeks = i;

//posisi pattern ditemukan = i

}

}

}

//Akhir Brute Force Pattern Matching

printf("%d",indeks);

return 0;

}

Run Program dari Pseudo Code diatas :

Masukkan :

ihaveadream

ead

Keluaran :

4

Contoh Run Program brute.exe

6

Page 7: 141613743-Brute-Force

Kompleksitas dari Program ini adalah O((n-m+1)m) dimana n sebagai jumlah

panjang karakter dari String Utama (dalam kasus ini adalah kataLength), m

adalah panjang karakter dari Pattern yang dicari (dalam kasus ini adalah

cariLength). Kompleksitas dari Sample Program pada makalah ini adalah = O

( ( 11 - 3 + 1 ) * 3 ) = 27 (bisa juga diartikan maksimal 27 pemrosesan yang terjadi

pada potongan algoritma pseudo code di atas)

Implementasi pada Pattern Matching Kompleks (brute force attack

password generating)

Kasus kehilangan password dikarenakan lupa adalah hal yang sangat

sering terjadi di era teknologi dengan high security seperti sekarang. Tercatat

bahwa pengguna Yahoo ditemukan 2.149 dari 50.100 pengguna (4,28%) pernah

mengalami kasus lupa password dalam tiga bulannya (Florencio & Herley, 2007)

Tetapi disamping itu, para pengembang perangkat lunak kini menciptakan cara

bagaimana password tersebut dapat didapatkan kembali. Dengan Algoritma

Brute Force, Password dapat didapatkan dengan Pattern Matching kombinasi

dari simbol dan karakter yang tersupport oleh program. Misalnya dictionary

attack, yaitu penyerangan Pattern Matching dengan mencocokkan Password

dengan kata-kata pada bahasa inggris. Brute Force Attack yaitu perulangan dari 1

karakter/simbol hingga batasan dari program atau bahkan tak terhingga sampai

password tersebut didapatkan.

Cara kerja yang dilakukan oleh Brute Force Attack Mengadaptasi Cara

kerja dasar Algoritma Brute Force yaitu dengan tidak cerdasnya mencoba satu

persatu kombinasi karakter dengan cara rekursif dari 1 sampai tak terhingga atau

batas yang ditentukan.

7

Page 8: 141613743-Brute-Force

Contoh Brute Force Attack :

Password = zcore ,5 karakter. Max pencarian dengan 62 karakter = 625 = 916132832 kombinasi

Kelemahan Brute Force Attack adalah waktu yang dibutuhkan relatif

sangat lama. Untuk Password 1 karakter menggunakan 62 Karakter (26 Huruf

kecil, 26 Huruf Besar, dan 10 angka) terdapat 62 kali looping dari 0 hingga z.

Untuk Password 2 Karakter menggunakan 62 x 62 kombinasi karakter dari 00

hingga zz. Itupun belum termasuk karakter khusus seperti ! (tanda seru), (/), garis

miring, dan karakter lainnya hingga menambah waktu pemrosesan. Didapat xn

dimana x adalah jumlah karakter yang di support oleh program dan n adalah

jumlah panjang password yang dicari. Waktu pemrosesan pada program

bergantung pada memori komputer yang digunakan dan panjang password yang

dicari.

Data dari 7-zip tentang waktu peretasan password :

Panjang Password Single User Attack Organization Attack1 2 s 1 s2 1 min 1 s3 30 min 1 s4 12 hours 1 s5 14 days 1 s6 1 year 1 s7 10 years 1 s8 19 years 20 s9 26 years 9 min

8

z c o r e Panjang Password = 5

0-z Uji Panjang = 1 Diulang sampai 62 karakter (a-z, A-Z, 0-9)

0-z 0-z Uji Panjang = 2 Diulang sampai 62x62 kombinasi

0-z 0-z 0-z Uji Panjang = 3 Diulang sampai 62x62x62 kombinasi

0-z 0-z 0-z 0-z Uji Panjang = 4 Diulang sampai 62x62x62x62 kombinasi

0-z 0-z 0-z 0-z 0-z Uji Panjang = 5 Diulang sampai 62x62x62x62x62 kombinasi

Page 9: 141613743-Brute-Force

10 37 years 4 hours11 46 years 4 days12 55 years 4 months13 64 years 4 years14 73 years 13 years15 82 years 22 years16 91 years 31 years17 100 years 40 years

9