Sayfalar

6 Kasım 2016 Pazar

zxcvbn Realistic Password Strength Estimation / zxcvbn Parola Kırılma Tahmin Class

Hemen hepimiz uygulama yapıyoruz, bu uygulamalarımızın çoğunda şifreler kullanırız fakat çoğu bilgisayar korsanı en basit yöntem olarak şifrelerimizi sistemimizi hackleyip şifrelerimizi almaktan ziyade öncelik olarak kaba kuvvet yani brute force saldırısı yapar, bu saldırı sayesinde şifrelerimizi elde etmeye çalışır.

Peki nedir bu brute force ?
Google amcaya sorduğumuzda bize aşağıdaki sonucu veriyor.

Kısacası brute force saldırısı kullanıcıların giriş yapmak istediği yere bazı programlar kullanarak şifreleri tahmin etmeye çalışır, bizim el ile yapacağımız işi onlar kısa sürede otomatik şekilde yaparlar.

Peki bu saldırılardan korunmak için neler yapılabilir ?

En basit yöntemlerden bir tanesi bir kullanıcı doğrulama sistemi koymak, kısaca captcha ekleyebiliriz sisteme.

Fakat biz bugün bunu nasıl önleyeceğimizden ziyade kullanıcılarımızı yönlendirmek olacak.
Yani kullanıcılarımızdan en çok kullanılan yada kırılması, tahmin edilmesi kolay şifreleri almamalarını sağlayacağız.

Peki bunu nasıl yapıcaz ?
Bunun için zxcvbn Classını kullanıcaz.

Bu class ne işe yarıyor, nasıl tahmin ediyor ?
İçerisinde yaklaşık 30k veri var, bu verileri Amerika son nüfus sayımında elde ettiği en çok kullanılan isim ve soy isimler, Wikipedia, diziler yada filmlerdeki en popüler kelimeleri, belli tarih ve zamanları aynı zamanda belli bir düzen içinde devam eden basit şifreleri mesela (abcd), (qwertyuiopgibi şifreleri içinde barındırıyor. Aynı zamanda bizim yazmış olduğumuz kendi şifrelerimizi içerisindeki bir mantık algoritması ile bize kırılması zorluğu hakkında tahminlerde bulunuyor bu sayede bizde kullanıcılarımıza bu tahminleri gösterip diyoruz ki şifreniz çok basit, yada şifrenizde bazı harf ve rakamlar olsun gibi önerilerde bulunup kaba kuvvet saldırılarından bir nebze korunmuş oluyoruz.

Peki bu classı nasıl kullanıcaz ?

Bower ile kullanabiliriz.

cd /path/to/project/root
bower install zxcvbn
Daha sonra sayfamıza aşağıdaki kodları ekledik mi tamamdır.
<script src="bower_components/zxcvbn/dist/zxcvbn.js">
</script>

NodeJs ile yükleyebiliriz.

$ npm install zxcvbn
$ node
> var zxcvbn = require('zxcvbn');
> zxcvbn('Tr0ub4dour&3');

Composer kullanarak sisteme dahil edebiliriz.

{
    "require": {
        "bjeavons/zxcvbn-php": "^0.2"
    }
}

use ZxcvbnPhp\Zxcvbn;

$userData = array(
  'Adnan',
  'test@example.com'
);

$zxcvbn = new Zxcvbn();
$strength = $zxcvbn->passwordStrength('password', $userData);
echo $strength['score'];
// Sonuç: 0

$strength = $zxcvbn->passwordStrength('Test ediyorum burada!!');
echo $strength['score'];
// Sonuç: 4


Yada direkt olarak js olarak indirip sisteme dahil edebiliriz.

Download zxcvbn.js.

<script type="text/javascript" src="path/to/zxcvbn.js"></script>
Bir sonraki yazımızda bu classı php bir proje üstünde asenkron bir şekilde nasıl kullanırız ona değinicez.

Classın github linki:
https://github.com/dropbox/zxcvbn