İçeriğe atla

Bcrypt

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.[1] 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.

Bcrypt fonksiyonu OpenBSD’nin[2] varsayılan parola özetleme algoritmasıdır ve SUSE Linux[3] gibi bazı Linux dağıtımlarında da kullanılmaktadır.

Ayrıca, bcrypt’in C, C++, C#, Elixir,[4] Go,[4] Java,[4][4] JavaScript,[4] Perl, PHP, Python[4] ve Ruby gibi dillerde de uygulamaları mevcuttur.

ArkaPlan

Blowfish, blok şifreleme yöntemleri arasında yavaş anahtar hazırlama evresiyle bilinmektedir. Standart durumda alt anahtarlarla başlar, bu durumdaki alt anahtarların bir bölümünde blok şifreleme yapar ve oluşan şifreleri bazı alt anahtarlarla değiştirir. Daha sonra modifiye edilmiş yeni durumda anahtarın bir başka bölümünü şifreler ve oluşan sonucu başka alt anahtarlarla değiştirmede kullanır. Bu şekilde, tüm alt anahtarlar belirlenene dek devam eder.

Provos ve Mazières bu yöntemden yararlanmış ve onu daha da ileriye götürmüştür. Blowfish için yeni bir anahtar oluşturma algoritması geliştirip “Eksblowfish” (“maliyetli anahtar planlama Blowfish”) olarak adlandırmışlardır. Anahtar hazırlama aşaması, Blowfish gibi tüm alt anahtarları belirlemede salt ve parola kullanılarak başlar. Ardından standart Blowfish anahtar oluşturma evreleri bunu takip eder ve bu evrelerde bir önceki evredeki alt anahtardan başlanarak, anahtar olarak sırayla salt ve parola kullanılarak devam edilir. Teoride bu standart Blowfish anahtar oluşturma takviminden pek de farklılık gösteriyor değildir. Fakat, bu süreç yeniden anahtar oluşturma evrelerinin ayarlanabilir olması sayesinde istenen ölçüde yavaşlatılabilir. Bu sayede salt veya özete yönelik yapılan kaba kuvvet saldırıları engellenebilir.

Açıklama

Gölge parola dosyasında bulunan bir özet stringdeki "$2a$" veya "$2b$" (veya "$2y$") ön ekleri özet string'in modüler şifre formatındaki bir bcrpyt özeti olduğunu belirtir.[5] Özetin geri kalanı ise maliyet parametresi, 128-bit salt (Radix-64 ile şifrelenmiş 22 karakter) ve 184 bit sonuç özet değeri (Radix-64 ile şifrelenmiş 31 karakter) içerir.[6] Radix-64 unix/crypt alfabesi kullanır ve standart Base-64 değildir.[7][8] Maliyet parametresi anahtar ilerleme iterasyon sayacı değerini belirtir. 2'nin katları olarak gösterilir ve şifreleme algoritmasının bir girdisidir.

Örneğin gölge parola kaydı $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy maliyet parametresinin 10, yani 210 anahtar ilerleme evresi olduğunu gösterir. Salt ise N9qo8uLOickgx2ZMRZoMye'dir ve sonuç özet değeri ise IjZAgcfl7p92ldGxad68LJZdL17lhWy'dir. Kullanıcının parolası ise standart uygulamada kaydedilmez.

Sürüm geçmişi

$ 2 $ (1999)

Orijinal Bcrypt tanımlarına göre ön ek olarak $2$ kullanılır. Bu tanımlara göre OpenBSD şifre dosyalarında parolaların kaydedilmesinde Modular CryptFormat takip edilir.[9]

  • $1$ : MD5 tabanlı şifreleme ('md5crypt')
  • $2$ : Balon balığı tabanlı şifreleme ('bcrypt')
  • $sha1$ : SHA-1 tabanlı şifreleme ('sha1crypt')
  • $5$ : SHA-256 tabanlı şifreleme ('sha256crypt')
  • $6$ : SHA-512 tabanlı şifreleme ('sha512crypt')

$ 2a $

Orijinal tanımlarda non-ASCII karakterlerin veya sıfır sonlayıcıların nasıl değerlendirileceği belirtilmemiştir. Tanımlar aşağıdaki yönergeler dahil edilecek şekilde revize edilmiştir:

  • String UTF-8'e göre kodlanmış olmalıdır
  • null terminator dahil edilmelidir

Bu değişikliklerle birlikte versiyon $2a$[10] olarak değiştirilmiştir

$ 2x $, $ 2y $ (Haziran 2011)

Haziran 2011'de BCrypt'in bir PHP uygulaması olan crypt_blowfish’te bir hata keşfedildi. Bu, 8. bit setindeki karakterlerin yanlış değerlendirilmesiyle alakalı bir hataydı.[11] Sistem yöneticilerinin ellerindeki mevcut parola veri tabanlarını $2a$ 'dan $2x$'e geçerek güncellemeleri önerildi. Aynı zamanda crypt_blowfish’in sabit algoritmalarla üretilen özetler için $2y$'yi yayınlaması fikri de ortaya atıldı.

Kanonik OpenBSD de dahil olmak üzere kimse 2x/2y fikrini benimsemedi. Bu versiyon yalnızca crypt_blowfish ile sınırlı kaldı.

$ 2b $ (Şubat 2014)

Bcrypt’in OpenBSD uygulamasında bir hata tespit edildi. String uzunlukları unsigned char (i.e. 8 bit Byte) olarak tutuluyordu.[12] Eğer parola 255 karakterden uzunsa taşma meydana geldiği ve 255’te sınırlandığı görüldü.

BCrypt OpenBSD için oluşturulduğu için, bu kütüphanedeki hatadan sonra versiyon numarasının yükseltilmesine karar verildi.[13]

Algoritma

Bcrypt algoritması “OrpheanBeholderScryDoubt” metninin Blowfish kullanılarak 64 defa şifrelenmesinin sonucudur. Bcrypt’te standart Blowfish anahtar hazırlama fonksiyonu, daha yavaş anahtar hazırlama fonksiyonuyla (EksBlowfishSetup) değiştirilmiştir:

Function bcrypt
   Input:
      cost:   Number (4..31)                      log2(Iterations). e.g. 12 ==> 212 = 4,096 iterations
      salt:   array of Bytes (16 bytes)           random salt
      password: array of Bytes (1..72 bytes)        UTF-8 encoded password
   Output: 
      hash:   array of Bytes (24 bytes)

   //Initialize Blowfish state with expensive key setup algorithm
   state  EksBlowfishSetup(cost, salt, password)   

   //Repeatedly encrypt the text "OrpheanBeholderScryDoubt" 64 times
   ctext  "OrpheanBeholderScryDoubt"  //24 bytes ==> three 64-bit blocks
   repeat (64)
      ctext  EncryptECB(state, ctext) //encrypt using standard Blowfish in ECB mode

   //24-byte ctext is resulting password hash
   return Concatenate(cost, salt, ctext)

Maliyetli anahtar oluşturma

Bcrypt algoritması aşağıdaki mantıkta çalışan “Eksblowfish” anahtar hazırlama algoritmasına bağlıdır:

Function EksBlowfishSetup
   Input:
      cost:   Number (4..31)                      log2(Iterations). e.g. 12 ==> 212 = 4,096 iterations
      salt:   array of Bytes (16 bytes)           random salt
      password: array of Bytes (1..72 bytes)        UTF-8 encoded password
   Output: 
      state:  opaque BlowFish state structure
 
   state  InitialState()
   state  ExpandKey(state, salt, password)
   repeat (2cost)
      state  ExpandKey(state, 0, password)
      state  ExpandKey(state, 0, salt)

    return state

Expand Key

ExpandKey fonksiyonu aşağıdaki işlemleri yapar:

Function ExpandKey(state, salt, password)
   Input:
      state:  Opaque BlowFish state structure     Internally contains P-array and S-box entries
      salt:   array of Bytes (16 bytes)           random salt
      password: array of Bytes (1..72 bytes)        UTF-8 encoded password
   Output: 
      state:  opaque BlowFish state structure
 
   //Mix password into the internal P-array of state
   for n  1 to 18 do
      Pn  Pn xor password[32(n-1)..32n-1] //treat the password as cyclic

   //Encrypt state using the lower 8 bytes of salt, and store the 8 byte result in P1|P2
   block  Encrypt(state, salt[0..63])
   P1  block[0..31]  //lower 32-bits
   P2  block[32..63] //upper 32-bits

   //Continue encrypting state with salt, and storing results in remaining P-array
   for n  2 to 9 do
      block  Encrypt(state, block xor salt[64(n-1)..64n-1]) //encrypt using the current key schedule and treat the salt as cyclic
      P2n-1  block[0..31] //lower 32-bits
      P2n  block[32..63]  //upper 32-bits

   //Mix encrypted state into the internal S-boxes of state
   for i  1 to 4 do
      for n  0 to 127 do
         block  Encrypt(state, block xor salt[64(n-1)..64n-1]) //as above
         Si[2n]    block[0..31]  //lower 32-bits
         Si[2n+1]  block[32..63]  //upper 32-bits
    return state

Böylelikle, tüm XOR'lar ve sıfır salt değerleri etkisiz olduğu için ExpandKey(state, 0, key) standart Blowfish anahtar zamanlamasıyla aynıdır. ExpandKey(state, 0, salt) için de benzer şeyler söylenebilir, fakat bu fonksiyon salt değerini 128 bit anahtar olarak kullanır.

Kullanıcı girdisi

Bcrypt'in birçok uygulaması OpenBSD'de olduğu gibi parolayı ilk 72 baytı kalacak şekilde kırpar.

Matematiksel algoritma ise 18 adet 32 bit alt anahtar ile (72 octet/byte'a eşdeğer) başlamaya hazır hale gelir. Bcrypt'in orijinal tanımlarında metin tabanlı şifreleri userland’den nümerik değerlere eşleştirmek için önerilen belirli bir metod yoktur. Metinde geçen kısa bir yorum string karakterlerini ASCII olarak şifreleyerek tutmaktan (zorunlu tutmaksızın) bahseder ve şöyle devam eder: “Sonuç olarak, buradaki anahtar argümanı, kullanıcı tarafından seçilen 56 byte’tan küçük(eğer anahtar ASCII string’i ise sonuçlandırma sıfır byte’ı da dahil olmak kaydıyla) bir gizli şifreleme anahtarıdır.[1]

Bu alıntıda geçen “56 byte’tan küçük parolalar” ifadesi önemlidir (zira algoritma 72 byte'a kadar kullanıyor). Provos ve Mazières kısıtlamayla ilgili bir açıklama yapmıyor olsa da, Bruce Schneier’ın Blowfish’in orijinal tanımlamalarındaki ifadesini düşünerek hareket etmiş olabilirler: “Anahtar boyutundaki 448 [bit] limiti, her alt anahtarın her bitinin, anahtarın bir bitine bağlı olmasını sağlamaktadır.”[14]

Bcrypt'in farklı uygulamaları birbirinden, parolaları nümerik değerlere ilk dönüştürmelerinde kullandıkları yöntem farklılıklarıyla ayrışmıştır.[15]

Ayrıca bakınız

  • bcrypt aynı zamanda, 2002'de Blowfish tarafından geliştirilen cross-platform dosya şifreleme sistemi aracının da adıdır.[16][17][18][19]
  • Argon2 (2015'te Pasword Hashing Competition'ın kazananı)
  • <a href="./Crypt%20(C)#Blowfish-based%20scheme" rel="mw:WikiLink" title="Crypt (C)" class="cx-link" data-linkid="127">Crypt (C)#Blowfish</a> tabanlı şema şifreleme – şifre saklama ve doğrulama şeması – Blowfish
  • <a href="./Key%20stretching" rel="mw:WikiLink" title="Key stretching" class="cx-link" data-linkid="129">Key stretching</a>
  • PBKDF2 (Parola Tabanlı Anahtar Türetme İşlevi 2)
  • scrypt

Kaynakça

  1. ^ a b Provos, Niels; Mazières, David; Talan Jason Sutton 2012 (1999). "A Future-Adaptable Password Scheme". Proceedings of 1999 USENIX Annual Technical Conference. ss. 81-92. 4 Şubat 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Nisan 2020. 
  2. ^ "Commit of first work to repo". 13 Şubat 1997. 27 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Mart 2022. 
  3. ^ "SUSE Security Announcement: (SUSE-SA:2011:035)". 23 Ağustos 2011. 4 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Ağustos 2015. SUSE's crypt() implementation supports the blowfish password hashing function (id $2a) and system logins by default also use this method. 
  4. ^ a b c d e f Whitlock, David. "Bcrypt Elixir: Bcrypt password hashing algorithm for Elixir". GitHub. riverrun. 25 Nisan 2019 tarihinde kaynağından arşivlendi. 
  5. ^ passlib. "Modular Crypt Format" 15 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi..
  6. ^ passlib. "BCrypt" 25 Şubat 2021 tarihinde Wayback Machine sitesinde arşivlendi..
  7. ^ "Modern(-ish) password hashing for your software and your servers: pyca/bcrypt". 18 Kasım 2019. 18 Şubat 2016 tarihinde kaynağından arşivlendi – GitHub vasıtasıyla. 
  8. ^ "GitHub - bcgit/bc-java: Bouncy Castle Java Distribution (Mirror)". 18 Kasım 2019. 20 Mayıs 2015 tarihinde kaynağından arşivlendi – GitHub vasıtasıyla. 
  9. ^ "Modular Crypt Format — Passlib v1.7.1 Documentation". passlib.readthedocs.io. 15 Kasım 2016 tarihinde kaynağından arşivlendi. 
  10. ^ "bcrypt password hash bugs fixed, version changes and consequences". undeadly.org. 12 Nisan 2011 tarihinde kaynağından arşivlendi. 
  11. ^ Designer, Solar. "oss-sec: CVE request: crypt_blowfish 8-bit character mishandling". seclists.org. 30 Haziran 2011 tarihinde kaynağından arşivlendi. 
  12. ^ "bcrypt password hash bugs fixed, version changes and consequences". undeadly.org. 12 Nisan 2011 tarihinde kaynağından arşivlendi. 
  13. ^ "'bcrypt version changes' - MARC". marc.info. 30 Temmuz 2013 tarihinde kaynağından arşivlendi. 
  14. ^ Schneier, Bruce (1994). "Fast Software Encryption, Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish)". Cambridge Security Workshop Proceedings (December 1993). Springer-Verlag. ss. 191-204. 26 Ocak 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Nisan 2020. 
  15. ^ "jBCrypt security advisory". 1 Şubat 2010. 9 Mayıs 2010 tarihinde kaynağından arşivlendi.  And "Changes in CRYPT_BLOWFISH in PHP 5.3.7". php.net. 26 Eylül 2011 tarihinde kaynağından arşivlendi. 
  16. ^ http://bcrypt.sourceforge.net 29 Ağustos 2015 tarihinde Wayback Machine sitesinde arşivlendi. bcrypt file encryption program homepage
  17. ^ "bcrypt APK for Android - free download on Droid Informer". droidinformer.org. 15 Şubat 2020 tarihinde kaynağından arşivlendi. 
  18. ^ "T2 package - trunk - bcrypt - A utility to encrypt files". t2sde.org. 28 Ekim 2017 tarihinde kaynağından arşivlendi. 
  19. ^ "Oracle GoldenGateのライセンス". docs.oracle.com. 26 Ekim 2014 tarihinde kaynağından arşivlendi. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">AES</span> Şifreleme standartı

AES, elektronik verinin şifrelenmesi için sunulan bir standarttır. Amerikan hükûmeti tarafından kabul edilen AES, uluslararası alanda da defacto şifreleme (kripto) standardı olarak kullanılmaktadır. DES'in yerini almıştır. AES ile tanımlanan şifreleme algoritması, hem şifreleme hem de şifreli metni çözmede kullanılan anahtarların birbiriyle ilişkili olduğu, simetrik-anahtarlı bir algoritmadır. AES için şifreleme ve şifre çözme anahtarları aynıdır.

RSA, güvenliği tam sayıları çarpanlarına ayırmanın algoritmik zorluğuna dayanan bir tür açık anahtarlı şifreleme yöntemidir. 1978’de Ron Rivest, Adi Shamir ve Leonard Adleman tarafından bulunmuştur. Bir RSA kullanıcısı iki büyük asal sayının çarpımını üretir ve seçtiği diğer bir değerle birlikte ortak anahtar olarak ilan eder. Seçilen asal çarpanları ise saklar. Ortak anahtarı kullanan biri herhangi bir mesajı şifreleyebilir, ancak şu anki yöntemlerle eğer ortak anahtar yeterince büyükse sadece asal çarpanları bilen kişi bu mesajı çözebilir. RSA şifrelemeyi kırmanın çarpanlara ayırma problemini kırmak kadar zor olup olmadığı hala kesinleşmemiş bir problemdir.

Gizli anahtarlı şifreleme ya da simetrik şifreleme, kriptografik yöntemlerden, hem şifreleme hem de deşifreleme işlemi için aynı anahtarı kullanan kripto sistemlere verilen isimdir. Haberleşen tarafların aynı anahtarı kullanmaları gerektiği için burada asıl sorun anahtarın karşıya güvenli bir şekilde iletilmesidir. Simetrik şifreleme, anahtar karşıya güvenli bir şekilde iletildiği sürece açık anahtarlı şifrelemeden daha güvenlidir. Anahtar elinde olmayan birisi şifrelenmiş metni ele geçirse de şifrelenmiş metinden asıl metni bulması mümkün değildir. Simetrik şifrelemede haberleşen tarafların her biri için bir anahtar çifti üretilmelidir. Bu yüzden de çok fazla anahtar çifti üretilmesi gereklidir.

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.

Blowfish, Bruce Schneier tarafından 1993 yılında tasarlanmış, çok sayıda şifreleyici ve şifreleme ürününe dahil olan; anahtarlanmış, simetrik bir Block Cipher dir. Blowfish ile ilgili olarak şu ana kadar etkin bir şifre çözme analizi var olmasa da, artık AES ya da Twofish gibi daha büyük ebatlı öbek şifreleyicilerine daha fazla önem verilmektedir.

<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 çalışma kipleri, bir blok şifrenin tek bir anahtar altında güvenli bir şekilde tekrarlı kullanımına olanak veren yöntemlerdir. Değişken uzunluktaki mesajları işlemek için veriler ayrı parçalara bölünmelidir. Son parça şifrenin blok uzunluğuna uyacak şekilde uygun bir tamamlama şeması ile uzatılmalıdır. Bir çalışma kipi bu bloklardan her birini şifreleme şeklini tanımlar ve genellikle bunu yapmak için ilklendirme vektörü (IV) olarak adlandırılan rastgele oluşturulmuş fazladan bir değer kullanır.

Kriptografide blok şifreleme, blok olarak adlandırılmış sabit uzunluktaki bit grupları üzerine simetrik anahtar ile belirlenmiş bir deterministik algoritmanın uygulanmasıdır. Blok şifreleme birçok kriptografik protokol tasarımının önemli temel bileşenlerindendir ve büyük boyutlu verilerin şifrelemesinde yaygın biçimde kullanılmaktadır.

SHA-2, ABD Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanmış kriptografik özet (hash) fonksiyonları kümesidir. Kriptografik özet fonksiyonları, hesaplanmış “özet” ile bilinen ve beklenen özet değerinin karşılaştırılmasıyla, dijital veri üzerinde yürüyen matematiksel operasyonlardır. Özet fonksiyonları ile bir kişi verinin bütünlüğüne karar verebilir. Örneğin, yüklenmiş bir dosyanın özet değerini hesaplamak ve sonucu önceden açıklanmış özet sonucu ile karşılaştırmak, yüklemenin değiştirilip değiştirilmediğini veya üzerinde oynama yapılıp yapılmadığını gösterebilir. Kriptografik Hash fonksiyonlarının kilit noktası çakışma dirençleridir: hiç kimse aynı özet çıktısı veren iki farklı girdi bulamamalıdır.

<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.

Güvenli kabuk,, ağ hizmetlerinin güvenli olmayan bir ağ üzerinde güvenli şekilde çalıştırılması için kullanılan bir kriptografik ağ protokolüdür. En iyi bilinen örnek uygulaması bilgisayar sistemlerine uzaktan oturum açmak için olandır.

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:

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ı.

Kriptografi alanında, PBKDF1 ve PBKDF2 olarak bilinen anahtar türetme fonksiyonları şifrelenmiş anahtarları kaba kuvvet saldırılarına karşı güçlendirmek amacıyla geliştirilmiştir.

<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">Simon (şifreleme)</span>

Simon, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir hafif blok şifreleme ailesidir. Simon, donanım uygulamaları için optimize edilmişken, kardeş algoritması Speck, yazılım uygulamaları için optimize edilmiştir.

<span class="mw-page-title-main">Speck (şifreleme)</span> şifreleme

Speck, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir blok şifreleme ailesidir. Speck, yazılım uygulamaları için optimize edilmişken, kardeş algoritması Simon, donanım uygulamaları için optimize edilmiştir. Speck bir add-rotate – xor (ARX) şifresidir.

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

Kriptografide RC5, basitliği ile dikkat çeken simetrik - anahtar blok şifresidir. 1994 yılında Ronald Rivest tarafından tasarlanmıştır. RC, "Rivest Cipher" veya bir başka seçenek olarak "Ron's Code" anlamına gelmektedir. Gelişmiş Şifreleme Standardı(AES) adayı RC6 ve RC5 blok şifrelerine dayanıyordu.

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

Kriptografide DES-X, DES simetrik anahtar blok şifresinin, anahtar beyazlatma adı verilen bir teknik kullanarak kaba kuvvet saldırısının karmaşıklığını artırmayı amaçlayan bir varyantıdır.

<span class="mw-page-title-main">Şifreli metin</span> şifrelenmiş bilgi

Kriptografide, şifreli metin, şifreleme adı verilen bir algoritma kullanılarak düz metin üzerinde gerçekleştirilen şifreleme işleminin sonucunda elde edilen çıktıdır. Şifreli metin, aynı zamanda şifrelenmiş veya kodlanmış bilgi olarak da bilinir çünkü orijinal düz metnin, şifresini çözmek için uygun şifre olmadan bir insan veya bilgisayar tarafından okunamayan bir biçimini içerir. Bu işlem, hassas bilgilerin bilgisayar korsanlığı yoluyla kaybolmasını önler. Şifrelemenin tersi olan Şifre çözme, şifreli metni okunabilir düz metne dönüştürme işlemidir. Şifreli metin, kod metni ile karıştırılmamalıdır çünkü ikincisi bir şifrenin değil bir kodun sonucudur.