<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/faq.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'faq.passwords.php',
    1 => 'Parola Aşlama',
    2 => 'Etkin ve G&uuml;venilir olarak Parola Aşlama',
  ),
  'up' => 
  array (
    0 => 'faq.php',
    1 => 'SSS',
  ),
  'prev' => 
  array (
    0 => 'faq.using.php',
    1 => 'PHP Kullanımı',
  ),
  'next' => 
  array (
    0 => 'faq.html.php',
    1 => 'PHP ve HTML',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'faq/passwords.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="faq.passwords" class="chapter">
  <h1 class="title">Etkin ve Güvenilir olarak Parola Aşlama</h1>

  

  <p class="simpara">
   Bu bölümde, parolaları güvenlik altına alma da kullanılan
   aşlama (hashing) işlevinin arka planı ve etkin şekilde nasıl
   uygulanabileceği ele alınacaktır.
  </p>

  <div class="qandaset"><ol class="qandaset_questions"><li><a href="#faq.passwords.hashing">
     
      Kullanıcıların girmiş olduğu parolalar neden aşlanmalı?
     
    </a></li><li><a href="#faq.passwords.fasthash">
     
      MD5 ve SHA1 gibi genel
      aşlama işlevlerini parolalar i&ccedil;in kullanmak neden uygun değildir?
     
    </a></li><li><a href="#faq.passwords.bestpractice">
     
      Genel aşlama teknikleri kullanışlı olmadıklarına g&ouml;re,
      parolalarımı nasıl aşlamalıyım?
     
    </a></li><li><a href="#faq.passwords.salt">
     
      Tuzlama nedir?
     
    </a></li><li><a href="#faq.password.storing-salts">
     
      Tuzlar nasıl saklanmalı?
     
    </a></li></ol></div>
   <dl class="qandaentry" id="faq.passwords.hashing">
    <dt><strong>
     <p class="simpara">
      Kullanıcıların girmiş olduğu parolalar neden aşlanmalı?
     </p>
    </strong></dt>
    <dd class="answer">
     <p class="simpara">
      Parola aşlama, kullanıcıların parola girerek kullandıkları bir
      uygulamanın tasarımında, mutlaka göz önüne alınması gereken en
      temel güvenlik faktörlerinden birisidir. Parola aşlama tekniği
      kullanılmadığı takdirde, uygulamanızın veri tabanında saklanan
      her türlü parola veritabanınızı ele geçirenler tarafından çalınabilir
      ve ardından sadece uygulama değil, aynı parolayı başka hizmetler
      için kullanıyorlarsa uygulamayı kullanan kullanıcılar da risk altında
      kalır.
     </p>
     <p class="simpara">
      Kullanıcıların parolalarını veri tabanına kaydetmeden önce,
      uygulanan aşlama algoritması ile saldırganın özgün parolayı
      tahminini imkansız kılınırken, ilerleyen süreçte de özgün parolayı
      bulma çabaları da (kaba kuvvet saldırısı tekniğiyle) zorlaştırılmış
      olur.
     </p>
     <p class="simpara">
      Ancak, dikkat edilmesi gereken önemli nokta, parola aşlama sadece
      veri kaynağının ele geçirilmesine karşı koruma sağlarken, uygulamanın
      istem dışında yerleştirilmiş zararlı kodları aracılığıyla parolaların
      ele geçirilmesine karşı koruma sağlamaz.
     </p>
    </dd>
   </dl>
   <dl class="qandaentry" id="faq.passwords.fasthash">
    <dt><strong>
     <p class="simpara">
      <span class="function"><a href="function.md5.php" class="function">MD5()</a></span> ve <span class="function"><a href="function.sha1.php" class="function">SHA1()</a></span> gibi genel
      aşlama işlevlerini parolalar için kullanmak neden uygun değildir?
     </p>
    </strong></dt>
    <dd class="answer">
     <p class="simpara">
      MD5, SHA1 ve SHA256 gibi aşlama algoritmaları verimli ve çok hızlı
      olmaları için tasarlanmıştır. Modern teknikler ve bilgisayar
      ekipmanları ile, Kaba kuvvet (brute force) atak tekniği kullanarak özgün
      değere ulaşmak sıradan bir hale gelmiştir.
     </p>
     <p class="simpara">
      Çünkü, modern bir bilgisayar, oldukça hızlı olarak bu aşlama
      tekniklerini <q class="quote">tersine</q> çevirir, çoğu güvenlik uzmanı da
      bunların parola aşlama da kullanımına  karşı aleyhte tavsiye de bulunur.
     </p>
    </dd>
   </dl>
   <dl class="qandaentry" id="faq.passwords.bestpractice">
    <dt><strong>
     <p class="simpara">
      Genel aşlama teknikleri kullanışlı olmadıklarına göre,
      parolalarımı nasıl aşlamalıyım?
     </p>
    </strong></dt>
    <dd class="answer">
     <p class="simpara">
      Parolaları aşlamada, dikkate alınması gereken iki husus vardır;
      hesaplamanın maliyeti ve tuzlama.
      aşlama algoritmasında daha fazla hesaplama maliyeti demek
      kaba kuvvet ataklarının daha fazla zaman gerektirmesi demektir.
     </p>
     <p class="simpara">
      PHP, güvenli bir şekilde
      <a href="function.password-hash.php" class="link">aşlama</a> ve
      <a href="function.password-verify.php" class="link">parola doğrulamayı</a>
      birlikte güvenle sağlayan bir <a href="book.password.php" class="link">yerel parola
      aşlama arayüzü</a> sağlamaktadır.
     </p>
     <p class="simpara">
      Parola aşlama da Blowfish algoritmasının kullanılması önerilir,
      parola aşlama APIsi tarafından da öntanımlı olarak kullanılan bu
      algoritma MD5 veya SHA1 den daha fazla hesaplama gerektirmesine rağmen
      hala ölçeklenebilir durumdadır.
     </p>
     <p class="simpara">
      Parola aşlama için <span class="function"><a href="function.crypt.php" class="function">crypt()</a></span> işlevi de kullanılabilirse
      de, bunun yalnızca diğer işletim sistemleriyle bir arada çalışabilirlik
      adına yapılması önerilir. Bunun yerine mümkün olduğunca
      <a href="book.password.php" class="link">yerleşik parola aşlama arayüzünün</a>
      kullanılması şiddetle önerilir.
     </p>
    </dd>
   </dl>
   <dl class="qandaentry" id="faq.passwords.salt">
    <dt><strong>
     <p class="simpara">
      Tuzlama nedir?
     </p>
    </strong></dt>
    <dd class="answer">
     <p class="simpara">
      Bir şifreleme tuzu, gökkuşağı tablosu olarak bilinen, daha önceden
      hesaplanarak oluşturulmuş aşlama listesinden karşılaştırma yaparak
      eşleştirme ihtimalini ortadan kaldırmak için, aşlama işlemi esnasında
      uygulanan bir değerdir.
     </p>
     <p class="simpara">
      Basit anlamda tuz, haşlanmış değerinizi kırma teşebbüslerini
      zorlaştırmada kullanılan ek bir veridir. İnternet üzerinde, daha önceden
      hesaplanmış kapsamlı aşlama değerlerinin yanı sıra özgün değerleri de
      barındıran bir dizi liste hizmeti vardır. Tuz kullanmak bu listelerden
      aşlama değerini bulmayı mantıksız veya imkansız kılar.
     </p>
     <p class="simpara">
      Bir tane sağlanmamışsa <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span> rasgele bir
      tuz oluşturacaktır ve bu genelde en kolay ve en güvenilir yaklaşımdır.
     </p>
    </dd>
   </dl>
   <dl class="qandaentry" id="faq.password.storing-salts">
    <dt><strong>
     <p class="simpara">
      Tuzlar nasıl saklanmalı?
     </p>
    </strong></dt>
    <dd class="answer">
     <p class="simpara">
      <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span> veya <span class="function"><a href="function.crypt.php" class="function">crypt()</a></span>
      işlevini kullanırken, dönen değer üretilen aşlanmış parola olup tuzu
      da içerir. Parolaları doğrularken <span class="function"><a href="function.password-verify.php" class="function">password_verify()</a></span>
      veya <span class="function"><a href="function.crypt.php" class="function">crypt()</a></span> işlevine doğrudan verilebilecek şekilde
      aşlama bilgisini içeren bu değer veritabanında hiç değiştirilmeden
      harfi harfine saklanmalıdır.
     </p>
     <div class="warning"><strong class="warning">Uyarı</strong>
      <p class="simpara">
       Zamanlama saldırılarından kaçınmak için, yeniden aşlama işlemi yapıp
       sonucu depolanmış bir aş ile karşılaştırmak yerine her zaman
       <span class="function"><a href="function.password-verify.php" class="function">password_verify()</a></span> kullanılmalıdır.
      </p>
     </div>
     <p class="simpara">
      Aşağıdaki şekil, <span class="function"><a href="function.crypt.php" class="function">crypt()</a></span> veya
      <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span> işlevinden dönen değerin biçimini
      gösterir. Görüleceği gibi, ileriki bir parola doğrulaması için
      gereken tuzu ve algoritma ile ilgili tüm bilgiyi içinde barındırmaktadır.
     </p>
     <div class="mediaobject">
      
      <div class="imageobject">
       <img src="images/2a34c7f2e658f6ae74f3869f2aa5886f-crypt-text-rendered.svg" alt="
       password_hash veya crypt işlevinden dönen değerin bileşenleri:
       sırasıyla, seçilen algoritma, algoritmanın seçenekleri, kullanılan tuz
       ve aşlanmış parola.
      " width="690" height="192" />
      </div>
     </div>
    </dd>
   </dl>
  

 </div>
<?php manual_footer($setup); ?>