Dictionary attack adalah sebuah teknik untuk melawan cipher atau melawan mekanisme otentikasi dengan cara menentukan kunci dekripsi dengan mencari kemungkinan kombinasi kata yang terdapat di dalam sebuah kamus.
            Pada dasarnya dictionary attack adalah pengembangan dari brute force attack, yaitu mencoba memecahkan kode dengan mencoba satu per satu kemungkinan secara berulang (exhaustive search). Akan tetapi dictionary attack bukan mencoba kombinasi satu per satu karakter yang tersedia seperti brute force, melainkan mencoba kombinasi kata yang paling mungkin berhasil dengan input sebuah “list of word” yang dapat didefinisikan (Dictionary), yang biasanya berasal dari daftar kombinasi kata-kata umum yang terdapat dalam kamus, misalnya kamus bahasa Inggris.
Dictionary attack merupakan serangan yang sangat efektif untuk memecahkan kode dan sering digunakan hacker untuk membobol sistem keamanan yang berupa password, seperti akun email, akun jejaring sosial, halaman administrator situs web, dan lain-lain. Dictionary attack dianggap efektif karena memanfaatkan psikologi manusia, yaitu kebiasaan bahwa pengguna akun akan menggunakan kata-kata yang lumrah dan mudah diingat sebagai password suatu akun tertentu, misalnya tanggal lahir, makanan kesukaan, nama orang tua, dan lain-lain. Kata-kata ini merupakan kata yang terdapat dalam kamus (karena merupakan kata yang digunakan sehari-hari) dan mudah diingat. Psikologi manusia dalam membuat password juga telah dikaji dan dibuktikan dengan penelitian.  Saat ini dictionary attack telah dikembangkan variasinya dan semakin tinggi efektivitasnya, sehingga teknik ini masih sering digunakan untuk membobol password pengguna sebuah akun.

Cara Kerja Dictionary Attack
Sistem operasi seperti Windows menyimpan password ke dalam bentuk terenkripsi yang disebut hashes. Password tidak dapat diambil (retrieved) secara langsung dari hashes. Untuk melakukan recover password diperlukan komputasi terhadap hashes dengan possible password (kata-kata yang diduga sebagai password) dan memasukkannya ke dalam list of hashes.
Hacker mengumpulkan kata-kata yang sering digunakan sebagai password ini ke dalam sebuah file yang dinamakan sebagai dictionary (kamus) dan file ini bisa didapatkan dengan mudah di Internet seperti di situs http://lastbit.com/dict.asp, atau kita juga bisa membuatnya sendiri atau menambahkannya dari file dictionary yang sudah ada
.
Gambar di bawah ini merupakan alur proses dari dictionary attack:

Program cracking akan mengubah satu persatu kata-kata yang ada di dalam kamus berdasarkan fungsi hash yang digunakan ke dalam bentuk tabel hash. Hasil perubahan ini kemudian dicocokkan dengan hash pada file password yang didapatkan. Apabila hasil hash ini cocok, artinya password sudah berhasil diketahui. Dengan teknik ini, hacker tidak perlu mencoba semua kombinasi karakter yang ada (seperti brute force attack) sehingga bisa menghemat banyak waktu dan tenaga.
Kentungan dari metode dictionary attack adalah waktu yang dibutuhkan relatif singkat. Sedangkan kelemahan dari metode ini adalah hanya dapat menebak password yang terdiri dari kombinasi kata-kata yang terdapat pada kamus (contoh: jika password pengguna menggunakan kombinasi huruf angka yang tidak terdapat dalam kamus, maka password tidak akan tertebak).
Serangan brute-force adalah sebuah teknik serangan terhadap sebuah sistem keamaman komputer 
yang menggunakan percobaan terhadap semua kunci yang mungkin. Pendekatan ini pada awalnya merujuk pada sebuah program komputer yang mengandalkan kekuatan pemrosesan komputer dibandingkan kecerdasan manusia.  Istilah brute force sendiri dipopulerkan oleh Kenneth Thompson, dengan mottonya:
"When in doubt, use brute-force" (jika ragu, gunakan brute-force).
Secara sederhana, sistem serangan brute-force adalah sistem menebak password dan mencoba semua kombinasi karakter yang mungkin.  Brute force attack digunakan untuk menjebol akses ke suatu host (server/workstation/network) atau kepada data yang terenkripsi. Metode ini dipakai para cracker untuk mendapatkan account secara tidak sah, dan sangat berguna untuk memecahkan enkripsi. Pemakaian password sembarangan, memakai password yang hanya sepanjang 3 karakter, menggunakan kata kunci yang mudah ditebak, menggunakan password yang sama, menggunakan nama, memakai nomor telepon, sudah pasti sangat tidak aman. Beberapa faktor yang menjadi keuntungan seorang hacker, bisanya disebabkan oleh kemalasan manusia itu sendiri. Namun brute force attack bisa saja memakan waktu lama bahkan sampai berbulan-bulan atau tahun tergantung dari tingkat kerumitan password dan kecepatan prosesornya.
Hal-hal yang perlu diperhatikan dalam menggunakan metode brute force attack :
a.        Asumsikan bahwa password diketik dalam huruf kecil (lower case).
Pada kasus ini, waktu yang dibutuhkan akan cenderung sama tetapi jika password mengandung huruf kapital (upper case) cara ini tidak akan berhasil.
b.       Coba semua kemungkinan.
Tujuh karakter lower case membutuhkan sekitar 4 jam untuk berhasil mendapatkan password  tetapi jika dicoba semua kemungkinan kombinasi antara karakter upper case dan lower case akan membutuhkan waktu sekitar 23 hari.
c.       Metode ketiga adalah trade-off.
Hanya kombinasi-kombinasi yang mungkin yang dimasukkan dalam pencarian, sebagai contoh “password”, “PASSWORD” dan “Password”. Kombinasi rumit seperti “pAssWOrD” tidak dimasukkan dalam proses. Dalam kasus ini, lambatnya proses dapat tertangani tetapi ada kemungkinan password tidak ditemukan.
Feasibility dari sebuah brute force attack tergantung dari panjangnya cipher yang ingin dipecahkan, dan jumlah komputasi yang tersedia untuk penyerang. Kuncinya adalah mencoba semua kemungkinan password dengan formula seperti berikut. 



L = jumlah karakter yang kita ingin definsikan
m = panjang minimum dari kunci
M = panjang maksimal dari kunci
Contohnya saat kita ingin meretas sebuah LanManager paswords (LM) dengan karakter set "ABCDEFGHIJKLMNOPQRSTUVWXYZ" dengan jumlah 26 karakter, maka brute force cracker harus mencoba  = 8353082582 kunci yang berbeda. Jika ingin meretas password yang sama dengan set karakter set "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789! @#$%^&*()-_+=~`[]{}|\:;"'<>,.?/", jumlah kunci akan dihasilkan akan naik menjadi 6823331935124. Brute Force attack melakukan perbandingan string matching antara pattern dengan text per karakter dengan pseudocode berikut :
do if (text letter == pattern letter)
compare next letter of pattern to next letter of text
else move pattern down text by one letter
while (entire pattern found or end of text)

Brute-Foce Indicator/Charactersitic
Sebuah serangan brute-force  memiliki beberapa ciri-ciri tertentu. Berikut adalah beberapa ciri-ciri indikator yang dapat menjadi parameter penulis dalam mendefinisikan sebuah paket serangan brute-force.
1. Jumlah percobaan login gagal berasal dari alamat IP yang sama
2. Melakukan percobaan login dengan beberapa/ lebih dari satu username dari alamat IP yang sama.
3. Percobaan login untuk satu account yang berasal dari banyak alamat IP yang berbeda
4. Percobaan gagal login dengan kombinasi username dan password yang terurut sesuai abjad.
5. Login dengan “password hacker” mencurigakan atau tools brute-force  yang biasa digunakan, seperti hydra, ownsyou (ownzyou), washere (wazhere), fanatik, hacksyou, dan lain-lain.



Kelebiahn dari metode brute force adalah dapat membongkar hampir semua jenis enkripsi namun memiliki kelemahan yaitu memerlukan waktu yang sangat lama untuk mendapatkan password. Walaupun sudah kuno, teknik penyerangan yang membosankan ini bisa berhasil seperti yang lebih baru dan menarik. Walaupun dianggap low-tech, brute force attack dapat menjadi sangat efektif dalam membahayakan sebuah Aplikasi Web kecuali mempunyai mekanisme defense tersendiri. Cracking dengan Brute Force akan sangat lamban jika dihadapkan pada enkripsi yang kuat,(misalnya dengan ukuran password yang lebih panjang).



Sebuah password dapat dibongkar dengan menggunakan program yang disebut sebagai passsword cracker. Password cracking adalah proses pemulihan password dari data yang telah di simpan oleh sistem komputer. Cracking mencoba membuka sebuah password yang telah terenkripsi dengan menggunakan sebuah algoritma tertentu dengan cara mencoba semua kemungkinan. Password cracking mengacu pada proses mendapatkan password dari data  yang dilindungi dengan password. Perlu diingat bahwa cara menipu seseorang agar memberikan password, seperti phising  buka merupakan metode password cracking. Password cracking menebak password berdasarkan pengetahuan yang sudah ada dan tidak di ketahui sebelumnya dari pemilik sistem komputer.
Teknik password cracking sangat sedarhana, tapi efektivitasnya luar biasa, dan tidak ada satu pun sistem yang aman dari serangan ini, meski teknik ini memakan waktu yang sangat lama, khususnya untuk password yang rumit. Namun ini tidak berarti bahwa password cracker membutuhkan decrypt. Pada prakteknya, mereka kebayakan tidak melakukan itu. Umumnya, kita tidak dapat melakukan decrypt password-password yang sudah terenkripsi dengan algoritma yang kuat. Proses proses enkripsi modern kebanyakan hanya memberikan satu jalan, di mana tidak ada proses pengembalian enkripsi. Program password cracker adalah mesin-mesin ulet. Ia akan mencoba kata demi kata dalam kecepatan tinggi. Mereka menganut "Asas Keberuntungan", dengan harapan bahwa pada kesempatan tertentu akan menemukan kata atau kalimat yang cocok. Teori ini mungkin tepat mengena pada mereka yang terbiasa membuat password asal-asalan. Dan memang pada kenyataannya, sebuah password yang mudah di ingat umumnya juga mudah bagi attacker untuk menebak sedangkan password yang baik sulit untuk ditembus oleh program password cracker. Namun password yang sulit diingat akan mengurangi keamanan sistem  kerena mungkin  user perlu menulis atau menyimpan dalam media elektronik, (misalnya notebook) yang bisa di ketahui oleh orang lain.
Lamanya waktu yang dibutuhkan seorang cracker untuk menemukan password tergantung dari kekuatan password dan kecepatan komputer. untuk beberpa jenis enkripsi password, komputer dekstop dapat meguji lebih dari seratus juta password  per detik dan milyaran password per detik menggunakan GPU khusus untuk cracking password.
Banyak metode serangan terhadap kriptografi yang hingga saat ini masih dianggap efektif untuk memecahkan password, beberapa diantaranya yaitu brute force, dictoinary attack, rainbow table attack.

Dalam era teknologi seperti sekarang ini hampir semua aspek kehidupan tidak lepas dari koneksi internet, dalam keseharian saja  misalnya, mulai dari bisnis, transaksi keuangan, komunikasi, jejaring sosial,pesan makanan hingga pesan ojek  pun di lakukan dengan menggunakan koneksi internet. Begitu di manjanya kita dengan kemudahan-kemudahan yang ditawarkan dengan adanya fasilitas tersebut. Namun di balik kemudahan-kemudahan itu seringkali kita mengabaikan  masalah keamanan. Keamanan data maupun keamanan aplikasi  merupakan hal yang sangat penting diperhatikan dalam menggunakan layanan internet.
Salah satu metode pengamanan sistem informasi yang umum diketahui oleh banyak orang adalah password. Tanpa disadari password mempunyai peranan penting dalam mengamankan informasi-informasi yang sifatnya pribadi (confidential). Pada beberapa aplikasi yang berhubungan dengan piranti lunak, seperti HP, kartu ATM, dll.,
Password adalah salah satu prosedur kemanan yang sulit untuk diserang, seorang attacker mungkin saja mempunyai banyak tools (secara teknik maupun dalam kehidupan sosial) hanya untuk membuka sesuatu yang dilindungi oleh password.  Tetapi banyak user tidak perduli dengan passsword yang mereka miliki. Banyak para pengguna password membuat password secara sembarangan tanpa mengetahui kebijakan pengamanan (password policy) dan bagaimana membuat password yang kuat (strong password). Mereka tidak sadar dengan bahayanya serangan sandi (password attacks) yang dapat mencuri atau mengacak-acak informasi tersebut. Ketika seorang attacker berhasil mendapatkan password yang dimiliki oleh seorang user, maka ia akan mempunyai kekuasaan yang sama dengan user tersebut. Oleh karena itu, kriptogarafi dan sistem keamanan komputer sangat dibutuhkan. Akan tetapi ironisnya ketika ilmu kriptografi untuk mengenkripsi sebuah informasi semakin berkembang, semakin berkembang pula cara untuk melawannya.