İçeriğe atla

PBKDF2

Kriptografi alanında, PBKDF1 ve PBKDF2 (Password-Based Key Derivation Function 2) olarak bilinen anahtar türetme fonksiyonları şifrelenmiş anahtarları kaba kuvvet saldırılarına karşı güçlendirmek amacıyla geliştirilmiştir.

PBKDF2, RSA laboratuvarı'na ait Açık Anahtarlı Şifreleme Standartları bünyesinde yer almaktadır. Spesifik olarak, PKCS #5 v2.0 adıyla bilinmektedir ve IETF tarafından yayınlanmıştır RFC 2898.[1] Öncüsü olan PBKDF1 sadece 160 bit uzunluğunda anahtarlar üretebildiği için geliştirilmiştir.[2] 2017'de yayınlanan RFC 8018, parola özeti (password hashing) için PBKDF2'yi önermektedir.[3]

Amaç ve İşlem

PBKDF2, verilen bir parola ve tuzu, sözde-rastgele bir fonksiyondan (özet-tabanlı mesaj doğrulama kodu (HMAC) gibi) birçok kez peş peşe geçirerek, kriptografik anahtar olarak kullanılabilecek bir türetilmiş anahtar üretir. Bu sırada harcanan bilgisayar gücü, parola kırma işlemini çok daha zor hale getirmektedir. Buna anahtar esnetme de denmektedir.

2000 yılında bu standart yazıldığında, önerilen iterasyon sayısı 1000 olarak belirtilmiştir ancak işlemcilerin gücü arttıkça iterasyon sayısının da arttırılması planlanmıştır. 2005 yılında, bir Kerberos standartı 4096 iterasyon önermiştir.[4] Apple iOS 3 için 2000 ve iOS 4 için 10000 iterasyon kullandığını duyurmuştur.[5] LastPass ise 2011 yılında JavaScript istemcileri için 5000 ve sunucu-tarafı için 100000 iterasyon kullandığını belirtmiştir.[6]

Parolalara tuz eklemek, ataklar sırasında önceden hesaplanmış özetlerin (hash değerlerinin) kullanılmasının (gökkuşağı tabloları) önüne geçer. Bu sayede, şifrelerin hepsi aynı anda test edilememekte; bunun yerine, teker teker test edilmesi gerekmektedir. Bu standartta, tuz uzunluğu olarak en az 64 bit önerilmektedir.[7] Birleşmiş Devletler Standart ve Teknoloji Enstitüsü ise tuz uzunluğu olarak 128 bit önermektedir.[8]

Anahtar Türetme İşlemi

PBKDF2 anahtar türetim fonksiyonunun 5 parametresi bulunmaktadır:[]

DK = PBKDF2(PRF, Password, Salt, c, dkLen)
  • PRF: 2 parametre alan ve çıktı uzunluğu hLen olan sözde-rastgele bir fonksiyon (örneğin, HMAC)
  • Password: türetilmiş anahtar üretmek için kullanılan asıl parola
  • Salt: tuz (kriptografi) olarak bilinen bir sıra bit
  • c: arzulanan iterasyon sayısı
  • dkLen: türetilmiş anahtarın arzulanan uzunluğu
  • DK: türetilmiş anahtar

Türetilmiş anahtar DK'nın, hLen uzunluğundaki her bloğu (Ti) aşağıdaki şekilde hesaplanır (|| konkatinasyon işlemini temsil etmektedir):

DK = T1 || T2 || ... || Tdklen/hlen
Ti = F(Password, Salt, c, i)

F fonksiyonu, c iterasyon boyunca zincirlenerek uygulanmış PRF işleminin xor (^) edilmiş halidir. PRF fonksiyonunun ilk iterasyonunda Password anahtar olarak kullanılır ve 32-bit big-endian olarak kodlanmış i ile konkatine edilmiş olan Salt tuz olarak kullanılır. Bundan sonraki iterasyonlarda ise Password hala anahtar olarak kullanılmaya devam edilir fakat tuz olarak PRF fonskiyonunun bir önceki çıktısı kullanılır. F fonksiyonunun formal olarak tanımı aşağıda verilmiştir:

F(Password, Salt, c, i) = U1 ^ U2 ^ ... ^ Uc
U1 = PRF(Password, Salt || INT_32_BE(i))
U2 = PRF(Password, U1)
...
Uc = PRF(Password, Uc-1)

Örneğin, WPA2 aşağıdaki parametreleri kullanmaktadır:

DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)

HMAC çakışmaları

PBKDF2, sözde-rastgele fonksiyon olarak HMAC kullandığında, ilginç bir özelliğe sahiptir: İstenilen miktarda çakışan parola çiftleri kolayca oluşturulabilmektedir.[9] Eğer verilen parola, kullanılan HMAC fonksiyonundaki blok boyutundan uzunsa, parola ilk önce bir özet (İhash) fonksiyonundan geçirilir ve parola yerine bu değer kullanılır. Örneğin, aşağıdaki parola çok uzundur:

  • Password: plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd

Bundan dolayı, (örneğin HMAC-SHA1 kullanırken) aşağıdaki gibi SHA-1 fonksiyonundan geçirilir:

  • SHA1 (hex): 65426b585154667542717027635463617226672a

Bu değer ASCII olarak aşağıdaki gibi ifade edilebilir:

  • SHA1 (ASCII): eBkXQTfuBqp'cTcar&g*

Bu demektir ki tuzdan ve iterasyonlardan bağımsız olarak PBKDF2-HMAC-SHA1 aşağıdaki parolalar için aynı anahtarı üretecektir:

  • "plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd"
  • "eBkXQTfuBqp'cTcar&g*"

Örneğin, aşağıdaki parametreler kullanıldığında:

  • PRF: HMAC-SHA1
  • Salt: A009C1A485912C6AE630D3E744240B04
  • Iterations: 1,000
  • Derived key length: 16 bytes

Aşağıdaki fonksiyon çağrıları:

PBKDF2-HMAC-SHA1("plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd", ...)
PBKDF2-HMAC-SHA1("eBkXQTfuBqp'cTcar&g*", ...)

aynı türetilmiş anahtarı üretecektir (17EB4014C8C461C300E9B61518B9A18B). Ancak türetilmiş anahtarlardaki bu çakışma bir güvenlik açığına sebep vermemektedir, çünkü parolanın özetini (hash değerini) üretmek için parolanın orijinalinin hala bilinmesi gerekmektedir.[10] Çakışmaların varlığının incelenmesi sadece bir merak ürünüdür.

PBKDF2 Alternatifleri

PBKDF2'nin bir zayıflığı, hesaplama zamanını uzatmak için iterasyon sayısını ayarlanabilmesine rağmen, yine de küçük bir devre ve az miktarda RAM ile bu işlem yapılabilmektedir. Bu da PBKDF2'yi uygulamaya özel tümleşik devre veya grafik işlemci ünitesi kullanan kaba kuvvet saldırılana karşı zayıf kılmaktadır.[11] bcrypt parola özetleme fonksiyonu daha fazla miktarda RAM gerektirmektedir ve bu tarz ataklara karşı biraz daha güvenlidir.[12] Daha modern bir anahtar türetme fonksiyonu olan scrypt ise istenildiği kadar çok hafıza gerektirdiğinden, bu tarz ataklara karşı daha da güvenlidir.[11]

2013 yılında, daha dayanıklı yöntemlerin geliştirilmesi için bir Parola Özetleme Yarışması düzenlenmiştir. 20 Temmuz 2015 tarihinde Argon2 bu yarışmayı kazanmıştır, ancak diğer 4 katılımcıya da teselli ödülü verilmiştir: Catena, Lyra2, yescrypt ve Makwa.[13]

Kaynakça

  1. ^ "PKCS #5: Password-Based Cryptography Specification Version 2.1". tools.ietf.org. 27 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2019. 
  2. ^ <bkaliski@rsasecurity.com>, Burt Kaliski. "PKCS #5: Password-Based Cryptography Specification Version 2.0". tools.ietf.org. 27 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Ekim 2015. 
  3. ^ "PKCS #5: Password-Based Cryptography Specification Version 2.1". tools.ietf.org. 27 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2019. 
  4. ^ Kenneth Raeburn. "Advanced Encryption Standard (AES) Encryption for Kerberos 5". tools.ietf.org. 21 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Ekim 2015. 
  5. ^ "Smartphone Forensics: Cracking BlackBerry Backup Passwords". Advanced Password Cracking – Insight (ElcomSoft). 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Ekim 2015. 
  6. ^ "LastPass Security Notification". The LastPass Blog. 2 Mayıs 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Ekim 2015. 
  7. ^ K. Moriarty. "RFC 8018 - PKCS #5: Password-Based Cryptography Specification, Version 2.1". tools.ietf.org. 27 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Ocak 2018. 
  8. ^ Meltem Sönmez Turan, Elaine Barker, William Burr, and Lily Chen. "NIST SP 800-132, Recommendation for Password-Based Key Derivation Part 1: Storage Applications" (PDF). www.nist.gov. 2 Haziran 2018 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 20 Aralık 2018. 
  9. ^ "Arşivlenmiş kopya". 13 Şubat 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2019. 
  10. ^ "Arşivlenmiş kopya". 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2019. 
  11. ^ a b Colin Percival. scrypt 28 Mayıs 2019 tarihinde Wayback Machine sitesinde arşivlendi.. As presented in "Stronger Key Derivation via Sequential Memory-Hard Functions" 14 Nisan 2019 tarihinde Wayback Machine sitesinde arşivlendi.. presented at BSDCan'09, May 2009.
  12. ^ "New 25 GPU Monster Devours Passwords In Seconds". The Security Ledger. 4 Aralık 2012. 24 Nisan 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Eylül 2013. 
  13. ^ ""Password Hashing Competition"". 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ekim 2020. 

Dış Kaynaklar

İlgili Araştırma Makaleleri

Basit Ağ Yönetim Protokolü, bilgisayar ağları büyüdükçe bu ağlar üzerindeki birimleri denetlemek amacıyla tasarlanmıştır. Cihaz üzerindeki sıcaklıktan, cihaza bağlı kullanıcılara, internet bağlantı hızından sistem çalışma süresine kadar çeşitli bilgiler SNMP'de tanımlanmış ağaç yapısı içinde tutulurlar.

MD5, yaygın olarak kullanılan bir kriptografik özet fonksiyonudur. Girilen verinin boyutundan bağımsız olarak, 128-bit özet değeri üretir. MD5 ilk olarak kriptografik özet fonksiyonu olarak tasarlanmış olmasına rağmen geniş çaplı güvenlik açıkları tespit edilmiştir. Veri bütünlüğünün sağlandığını kontrol etmek için sağlama değeri üretmek amacıyla kullanılır. Ancak sadece kasıtsız yapılan değişiklere karşı kullanışlıdır.

<span class="mw-page-title-main">Transport Layer Security</span> Internet Şifreleme Protokolü

Taşıma Katmanı Güvenliği (TLS) ve onun öncülü/selefi olan Güvenli Soket Katmanı (SSL), bilgisayar ağı üzerinden güvenli haberleşmeyi sağlamak için tasarlanmış kriptolama protokolleridir. X.509 sertifikalarını kullanırlar ve bundan dolayı karşı tarafla iletişime geçeceklerin kimlik doğrulaması asimetrik şifreleme ile yapılır ve bir simetrik anahtar üzerinde anlaşılır. Bu oturum anahtarı daha sonra taraflar arasındaki veri akışını şifrelemek için kullanılır. Bu, mesaj/veri gizliliğine ve mesaj kimlik doğrulama kodları için mesaj bütünlüğüne izin verir. Protokollerin birçok versiyonu ağ tarama, elektronik mail, İnternet üzerinden faks, anlık mesajlaşma ve İnternet üzerinden sesli iletişim gibi uygulamalarda yaygın olarak kullanılmaktadır. Bu durumda/içerikte/bağlamda en önemli özellik iletme gizliliğidir. Bundan dolayı kısa süreli oturum anahtarı, uzun süreli gizli simetrik anahtardan türetilememelidir.

<span class="mw-page-title-main">Kerberos (iletişim kuralı)</span>

Kerberos / kərbərəs / güvenli olmayan bir ağ üzerinde haberleşen kaynakların, bilet mantığını kullanarak kendi kimliklerini ispatlamak suretiyle iletişim kurmalarını sağlayan bir bilgisayar ağı kimlik doğrulama protokolüdür. Protokolün tasarımcıları, ilk başta istemci-sunucu modelini hedef almış ve bu doğrultuda hem kullanıcının hem de sunucunun birbirlerinin kimliklerini doğrulamasını sağlayan karşılıklı kimlik doğrulama özelliğini sunmuşlardır. Kerberos protokol mesajları, izinsiz dinlemelere ve yansıtma ataklarına karşı dayanıklıdır.

Kriptografide, SHA-1 NSA tarafından dizayn edilmiş ve NIST tarafından yayınlanmış bir Amerika Birleşik Devletleri Federal Bilgi İşleme Standartı 'nda bir kriptografik özet fonksiyonudur. SHA-1, mesaj özeti olarak da bilinen 160-bit özet değeri üretir. Bir SHA-1 özet değeri genellikle 40 basamaklı bir onaltılık sayı olarak üretilir.

İnternet anahtar değişim protokolü ya da Internet Key Exchange internet üzerinde güvenli bir şekilde veri alışverişi için kullanılan anahtarların değişimini sağlayan protokoldür.

<span class="mw-page-title-main">Kriptografik özet fonksiyonu</span>

Kriptografik özet fonksiyonu çeşitli güvenlik özelliklerini sağlayan bir özet fonksiyonudur. Veriyi belirli uzunlukta bir bit dizisine, (kriptografik) özet değerine, dönüştürür. Bu dönüşüm öyle olmalıdır ki verideki herhangi bir değişiklik özet değerini değiştirmelidir. Özetlenecek veri mesaj, özet değeri ise mesaj özeti veya kısaca özet olarak da adlandırılır.

<span class="mw-page-title-main">WebSocket</span> bilgisayar iletişim protokolü

WebSocket, tek bir TCP bağlantısı üzerinden tam çift yönlü iletişim kanalı sağlayan bir bilgisayar iletişim protokolüdür. WebSocket protokolü IETF tarafından 2011 yılında RFC 6455 ile standart hale getirilmiş ve WebIDL içerisindeki WebSocket API W3C tarafından standart hale getirilmektedir.

<span class="mw-page-title-main">HMAC</span>

Kriptografide, HMAC, kriptografik özet fonksiyonu ve gizli bir kriptografik anahtar içeren bir mesaj doğrulama kodu türüdür. Diğer MAC türleri gibi, HMAC de hem veri bütünlüğünü kontrol etmek hem de mesaj içeriğini onaylamakta kullanılabilir. HMAC in hesaplanmasında herhangi bir kriptografik özet fonksiyonu kullanılabilir. Örneğin, HMAC in hesaplanmasında MD5 veya SHA-1 özet fonksiyonu kullanılması durumunda, ilgili MAC algoritması da buna uygun olarak HMAC-MD5 veya HMAC-SHA1 olarak isimlendirilebilir. HMAC'in kriptografik saldırılara karşı dayanıklılığı, kullanılan özet fonksiyonunun dayanıklılığına, elde edilen özetin boyutuna, kullanılan kriptografik anahtarın boyutuna ve kalitesine bağlıdır.

Kriptografide, X.509 açık anahtar sertifikalarının formatını tanımlayan bir standarttır. X.509 sertifikaları, internette gezinmek için güvenli protokol olan HTTPS'nin temeli olan TLS/SSL dahil olmak üzere birçok internet protokolünde kullanılmaktadır. Elektronik imzalar gibi çevrimdışı uygulamalarda da kullanılırlar. Bir X.509 sertifikası bir açık anahtar ve bir kimlik içerir ve bir sertifika yetkilisi tarafından imzalanır veya kendinden imzalı olarak imzalanır. Sertifika güvenilir bir sertifika yetkilisi tarafından imzalandığında veya başka yollarla doğrulandığında, bu sertifikayı tutan biri, başka bir tarafla güvenli iletişim kurmak için sertifikanın içerdiği açık anahtara güvenebilir veya ilgili özel anahtar ile dijital olarak imzalanmış belgeleri doğrulayabilir.

Emek ispatı , denial-of-service saldırıları ve bir ağ üzerinde bulunan spam mesajlar ile servislerin kötüye kullanımını, istemciden bir miktar iş yapmasını isteyerek önleme amaçlı ekonomik bir ölçüdür. Bu kavram, Cynthia Dwork ve Moni Naor tarafından 1993 tarihli bir dergi makalesiyle ilk kez ortaya konmuştur. "Emek İspatı" terimi ya da POW ilk kez Markus Jakobsson ve Ari Juels tarafından 1999 tarihli bir yayında literatüre kazandırılarak resmîleştirilmiştir. Emek ispatı sisteminin bir para birimine değer kazandırmak amacıyla kullanıldığı ilk örneklerden biri Solomon Adalarında kullanılan shell moneydir.

<span class="mw-page-title-main">Tek seferlik parola</span>

Tek seferlik parola (OTP), bir bilgisayar sistemi veya başka bir dijital cihazda bir oturum ya da işlem için geçerli paroladır. OTP 'de geleneksel (statik) parola tabanlı kimlik doğrulamasıyla ilişkili birtakım eksiklikler yoktur. Ayrıca bir dizi uygulama sayesinde OTP, akıllı kart veya bir cep telefonu gibi bir kişide bulunabilecek cihazlara erişim gerektiren veya yalnız o kişinin bilebileceği bir PIN gerektiren iki faktörlü kimlik doğrulama içerir.

JSON Web Token (JWT), tarafların birbirleri arasındaki veri alışverişini ve bunun doğrulamasını sağlayan JSON tabanlı RFC 7519'de tanımlanmış açık bir standarttır. Örneğin bir sunucu, kullanıcının yönetici ayrıcalıklarına sahip olduğunu belirten bir anahtar (token) oluşturabilir ve bunu kullanıcıya gönderebilir. Kullanıcı daha sonra bu anahtar ile kendisine tanımlanmış olan yönetici yetkisini bir istemcide kullanabilir ve bütün taraflar tarafından yetkisi doğrulanabilir.

Argon2, Temmuz 2015'te Parola Özetleme Yarışmasının galibi olarak seçilen anahtar türetme fonksiyonudur. Lüksemburg Üniversitesi'nden Alex Biryukov, Daniel Dinu ve Dmitry Khovratovich tarafından tasarlanmıştır. Argon2'nin referans uygulaması, CC0 lisansı veya Apache License 2.0 altında yayınlanmış ve üç ilgili sürüm sağlamıştır:

SPEKE, açılımı Basit Parola Üssel Anahtar Değişimi olan, parola doğrulamalı anahtar anlaşmas için kullanılan kriptografik bir yöntemdir.

Kriptografide, scrypt, Colin Percival tarafından Tarsnap çevrimiçi yedekleme hizmeti için oluşturulan bir parola tabanlı anahtar türetme fonksiyonudur. Bu algoritma, büyük miktarda bellek gerektirerek büyük ölçekli özel donanım saldırılarını gerçekleştirmeyi pahalı hale getirmek için özel olarak tasarlanmıştır. 2016 yılında, scrypt algoritması IETF tarafından RFC 7914 olarak yayınlandı. Scrypt algoritmasının, ArtForz kullanıcı adına sahip ve gerçek adı bilinmeyen bir programcı tarafından implemente edilmiş, basitleştirilmiş bir sürümü, önce Tenebrix'te ve ardından Fairbrix ve Litecoin olmak üzere bir dizi kripto para birimi tarafından iş kanıtı şeması olarak kullanıldı.

HMAC Tabanlı Tek Seferlik Parola algoritması (HOTP), özet-tabanlı mesaj doğrulama kodlarına (HMAC) dayanan tek seferlik parola (OTP) algoritmasıdır. Açık Kimlik Doğrulama Girişiminin (OATH) bir temel taşıdır.

<span class="mw-page-title-main">Anahtar türetme fonksiyonu</span>

Kriptografide, anahtar türetme fonksiyonu (ATF), bir veya daha fazla gizli anahtarı, ana anahtar, parola veya geçit parolası gibi unsurlardan bir sözderastlantısal fonksiyon kullanarak türetir. ATF'ler, anahtarlar boyutlarını uzatmak veya belirli formatlarda anahtarlar elde etmek için kullanılabilirler. Diffie-Hellman anahtar değişimi sonucunda oluşacak bir grup unsurların, AES'in kullanılabileceği bir simetrik anahtara dönüştürülmesi bu kullanıma örnek olarak gösterilebilir. Anahtar kullanılan kriptografik özet fonksiyonları, anahtar türetme için kullanılan sözderastlantısal fonksiyonların popüler örneklerinden biridir.

<span class="mw-page-title-main">İnternet güvenliği</span>

Internet güvenliği, yalnızca Internet, sıkça tarayıcı güvenliği ve World Wide Web ile ilgili değil, aynı zamanda Ağ Güvenliği, uygulama ve işletim sistemleri sistemleri ile bir bütün olarak ilgilidir. Amacı, internet üzerinden saldırılara karşı kullanılacak kurallar ve önlemler oluşturmaktır. İnternet, bilgi alışverişi için güvenli olmayan bir kanalı temsil eder; bu da kimlik avı, çevrimiçi virüsler, truva atları, solucanlar ve daha fazlası gibi yüksek bir saldırı veya dolandırıcılık riskine yol açar.

Bcrypt, Niels Provos ve David Mazières tarafından Blowfish şifreleme yöntemi esas alınarak geliştirilmiş ve ilk kez USENIX’te, 1999 yılında sunulmuş bir parola özet fonksiyonudur. Rainbow table saldırılarına karşı salt kullanmasının yanı sıra adaptif bir fonksiyon olma özelliğine sahiptir. İterasyon sayacı arttırılarak yavaşlatılabilir ve bu sayede kaba kuvvet saldırılarına karşı dirençli kalabilmektedir.