İçeriğe atla

Argon2

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

  • Argon2d, GPU kırılma saldırılarına karşı direnci en üst düzeye çıkarır. Argon2d, bellek dizisine, parola bağımlı bir sırayla erişir; bu da zaman-bellek takası (TMTO) saldırılarının olasılığını azaltır, ancak olası yan kanal saldırıları sunar.
  • Argon2i, yan kanal saldırılarına dayanacak şekilde optimize edilmiştir. Bellek dizisine parola bağımsız bir sırada erişir.
  • Argon2id hibrit bir versiyondur. İlk bellek geçişi için Argon2i yaklaşımını ve sonraki geçişler için Argon2d yaklaşımını izler. İnternet taslağı,[4] diğer iki moddan birinin tercih edilmesini gerektiren durumlar olması haricinde Argon2id kullanılmasını önerir.

Üç modun her biri, aşağıda verilen üç parametre ile tanımlama yapmaya izin verir.

  • çalışma süresi
  • hafıza gerekliliği
  • paralellik derecesi

Kriptanaliz

Argon2d'ye uygulanabilecek genel bir kripto analizi olmamasına rağmen, Argon2i fonksiyonuna karşı yayınlanan iki saldırı vardır. İlk saldırı sadece Argon2i'nin eski sürümüne uygulanabilirken, ikincisi en son sürüme kadar uzatılmıştır (1.3)[5]

İlk saldırı, zaman cezası[6] olmadan, istenen alanın çeyreği ile beşte biri arasında kullanılması ile, tek geçişli Argon2i fonksiyonunu hesaplamanın ve yine zaman cezası olmadan, sadece N/e < N/2.71 alanı kullanarak birçok geçişli Argon2i hesaplamanın mümkün olduğunu göstermektedir. Argon2 yazarlarına göre, bu saldırı vektörü 1.3 sürümünde düzeltilmiştir.[7]

İkinci saldırı, Argon2i'nin, seçilen tüm parametreler için, örneğin; σ(alan maliyeti), τ(zaman maliyeti) ve n=στ[8] olan izlek sayısı, karmaşıklığı O(n7/4 log(n)) olan bir algoritma ile hesaplanabildiğini göstermektedir.

Argon2 yazarları, Argon2i üç veya daha fazla geçişle kullanılırsa bu saldırının etkili olmadığını iddia eder.[7] Bununla birlikte, Joël Alwen ve Jeremiah Blocki saldırıyı iyileştirmiş ve saldırının başarısız olması için Argon2i 1.3'ün bellek üzerinde 10'dan fazla geçişe ihtiyaç duyduğunu göstermiştir.[5]

Algoritma

Function Argon2
   Inputs:
      password (P):     Bytes (0..232-1)    Password (or message) to be hashed
      salt (S):         Bytes (8..232-1)    Salt (16 bytes recommended for password hashing)
      parallelism (p):  Number (1..224-1)   Degree of parallelism (i.e. number of threads)
      tagLength (T):    Number (4..232-1)   Desired number of returned bytes
      memorySizeKB (m): Number (8p..232-1)  Amount of memory (in [./https://en.wikipedia.org/wiki/Kibibyte 30 Mart 2019 tarihinde Wayback Machine sitesinde arşivlendi. kibibytes]) to use
      iterations (t):   Number (1..232-1)   Number of iterations to perform
      version (v):      Number (0x13)      The current version is 0x13 (19 decimal)
      key (K):          Bytes (0..232-1)    Optional key (Errata: PDF says 0..32 bytes, RFC says 0..232 bytes)
      associatedData (X): Bytes (0..232-1)    Optional arbitrary extra data
      hashType (y):     Number (0=Argon2d, 1=Argon2i, 2=Argon2id)
   Output:
      tag:              Bytes (tagLength)   The resulting generated bytes, tagLength bytes long

   Generate initial 64-byte block H0.
   All the input parameters are concatenated and input as a source of additional entropy.
   Errata: RFC says H0 is 64-bits; PDF says H0 is 64-bytes.
   Errata: RFC says the Hash is H^, the PDF says it's ℋ (but doesn't document what ℋ is). It's actually Blake2b.
   Variable length items are prepended with their length as 32-bit little-endian integers.
   buffer ← parallelism ∥ tagLength ∥ memorySizeKB ∥ iterations ∥ version ∥ hashType
         ∥ Length(password)       ∥ Password
         ∥ Length(salt)           ∥ salt
         ∥ Length(key)            ∥ key
         ∥ Length(associatedData) ∥ associatedData
   H0 ← Blake2b(buffer, 64) //default hash size of Blake2b is 64-bytes

   Calculate number of 1 KB blocks by rounding down memorySizeKB to the nearest multiple of 4*parallelism [./https://en.wikipedia.org/wiki/Kibibyte 30 Mart 2019 tarihinde Wayback Machine sitesinde arşivlendi. kibibytes]
   blockCount ← Floor(memorySizeKB, 4*parallelism)

   Allocate two-dimensional array of 1 KiB blocks (parallelism rows x columnCount columns)
   columnCount ← blockCount / parallelism; //In the RFC, columnCount is referred to as q

   Compute the first and second block (i.e. column zero and one) of each lane (i.e. row)
   for i ← 0 to parallelism-1 do for each row
      Bi[0] ← Hash(H0 ∥ 0 ∥ i, 1024) //Generate a 1024-byte digest
      Bi[1] ← Hash(H0 ∥ 1 ∥ i, 1024) //Generate a 1024-byte digest

   Compute remaining columns of each lane
   for i ← 0 to parallelism-1 do //for each row
      for j ← 2 to columnCount-1 do //for each subsequent column
         //i' and j' indexes depend if it's Argon2i, Argon2d, or Argon2id (See section 3.4)
         i′, j′ ← GetBlockIndexes(i, j)  //the GetBlockIndexes function is not defined
         Bi[j] = G(Bi[j-1], Bi′[j′]) //the G hash function is not defined

   Further passes when iterations > 1
   for nIteration ← 2 to iterations do
      for i ← 0 to parallelism-1 do for each row
        for j ← 0 to columnCount-1 do //for each subsequent column
           //i' and j' indexes depend if it's Argon2i, Argon2d, or Argon2id (See section 3.4)
           i′, j′ ← GetBlockIndexes(i, j)
           if j == 0 then 
             Bi[0] = G(Bi[columnCount-1], Bi′[j′])
           else
             Bi[j] = G(Bi[j-1], Bi′[j′])

   Compute final block C as the XOR of the last column of each row
   C ← B0[columnCount-1]
   for i ← 1 to parallelism-1 do
      C ← C xor Bi[columnCount-1]

   Compute output tag
   return Hash(C, tagLength)

Değişken uzunluklu özet fonksiyonu

Argon2, 232 byte uzunluğuna kadar özet üretebilen özet fonksiyonunu kullanır. Bu özet fonksiyonu dahili olarak Blake2 üzerine kuruludur.

Function Hash(message, digestSize)
   Inputs:
      message:       Bytes (0..232-1)     Message to be hashed
      digestSize:    Integer (1..232)     Desired number of bytes to be returned
   Output:
      digest:        Bytes (digestSize)   The resulting generated bytes, digestSize bytes long

   Hash is a variable-length hash function, built using Blake2b, capable of generating
   digests up to 232 bytes.

   If the requested digestSize is 64-bytes or lower, then we use Blake2b directly
   if (digestSize <= 64) then
      return Blake2b(digestSize ∥ message, digestSize) //concatenate 32-bit little endian digestSize with the message bytes

   For desired hashes over 64-bytes (e.g. 1024 bytes for Argon2 blocks),
   we use Blake2b to generate twice the number of needed 64-byte blocks,
   and then only use 32-bytes from each block

   Calculate the number of whole blocks (knowing we're only going to use 32-bytes from each)
   r ← Ceil(digestSize/32)-1;

   Generate r whole blocks.
   Initial block is generated from message
   V1 ← Blake2b(digestSize ∥ message, 64);
   Subsequent blocks are generated from previous blocks
   for i ← 2 to r do
      Vi ← Blake2b(Vi-1, 64)
   Generate the final (possibly partial) block
   partialBytesNeeded ← digestSize – 32*r;
   Vr+1 ← Blake2b(Vr, partialBytesNeeded)

   Concatenate the first 32-bytes of each block Vi
   (except the possibly partial last block, which we take the whole thing)
   Let Ai represent the lower 32-bytes of block Vi
   return A1 ∥ A2 ∥ ... ∥ Ar ∥ Vr+1

Kaynakça

  1. ^ ""Şifre Karma Yarışması"". 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 31 Mart 2019. 
  2. ^ Jos Wetzels (8 Şubat 2016). "Open Sesame: The Password Hashing Competition and Argon2" (PDF). 21 Eylül 2020 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 7 Nisan 2019. 
  3. ^ Argon2: şifre karma ve diğer uygulamalar için hafızası zorlama fonksiyonu 5 Haziran 2019 tarihinde Wayback Machine sitesinde arşivlendi., Alex Biryukov, et al, 1 Ekim 2015
  4. ^ "Hafızaya dayanıklı Argon2 şifre hash ve çalışma kanıtı işlevi". draft-irtf-cfrg-argon2-03. 31 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Ağustos 2017. 
  5. ^ a b Joël Alwen, Jeremiah Blocki (5 Ağustos 2016). "Towards Practical Attacks on Argon2i and Balloon Hashing" (PDF). 11 Haziran 2020 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 7 Nisan 2019. 
  6. ^ Henry Corrigan-Gibbs, Dan Boneh, Stuart Schechter (14 Ocak 2016). "Balloon Hashing: Provably Space-Hard Hash Functions with Data-Independent Access Patterns" (PDF). 12 Aralık 2018 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 31 Mart 2019. 
  7. ^ a b "[Cfrg] Argon2 v.1.3". www.ietf.org. 30 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 30 Ekim 2016. 
  8. ^ Joel Alwen, Jeremiah Blocki (19 Şubat 2016). "Efficiently Computing Data-Independent Memory-Hard Functions" (PDF). 12 Aralık 2018 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 7 Nisan 2019. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Asal sayı</span> sadece iki pozitif tam sayı böleni olan doğal sayılardır

Bir asal sayı, yalnızca 1'den büyük olup kendisinden küçük iki doğal sayının çarpımı olarak ifade edilemeyen bir doğal sayıdır. 1'den büyük ve asal olmayan doğal sayılara bileşik sayı adı verilir. Örneğin, 5 bir asal sayıdır çünkü onu bir çarpım olarak ifade etmenin mümkün olan yolları, 1 × 5 veya 5 × 1, yalnızca 5 sayısını içermektedir. Ancak, 4 bir bileşik sayıdır çünkü bu, her iki sayının da 4'ten küçük olduğu bir çarpım şeklindedir. Asal sayılar, aritmetiğin temel teoreminden ötürü sayı teorisi alanında merkezi öneme sahiptir: 1'den büyük her doğal sayı, ya bir asal sayıdır ya da asal sayıların çarpımı olarak, sıralamalarından bağımsız bir şekilde, benzersiz olarak çarpanlarına ayrılabilir.

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.

SMPP, telekominikasyonda, Harici Kısa Mesaj Varlıkları (ESME), Yönlendirme varlıkları (RE) ve Mesaj Merkezleri (SMSC) arasında kısa mesaj verisinin transferi için, esnek bir veri iletişim arayüzünün sağlanması amacıyla tasarlanan, özgür, endüstri standardı olan bir protokoldür. Genellikle üçüncü partilerde(haber organizasyonları gibi) toplu mesaj iletimini sağlamak amacıyla kullanılır. Dolayısıyla, UMTS, IS-95 (CDMA), CDMA2000, ANSI-136 (TDMA) ve iDEN gibi GSM olmayan SMS protokollerine destek verir. SMPP, SS7 ağlarının dışında, kısa mesaj değiş tokuşu için yaygın olarak kullanılır.

Bir resmin çerçeve oranı eni ve boyu arasındaki oransal ilişkiyi tarif eder.

Sayarak sıralama bilgisayar bilimlerinde kullanılan ve kova sıralaması gibi sıralanacak dizinin içindeki değerlerin aralığının bilinmesi durumunda kullanılabilen bir sıralama algoritmasıdır. Sayarak sıralama algoritması dizideki değerlerin aralık bilgilerini yeni bir dizi oluşturmak için kullanır. Oluşturulan yeni dizinin her bir satırı ana dizide o satır numarasının değerine sahip ögelerin sayısını gösterir. Yeni dizideki öge değeri sayıları daha sonra ana dizideki tüm değerlerin doğru konuma konulması için kullanılır. Sayarak sıralama algoritması güvercin yuvası sıralamasından daha verimsiz bir algoritmadır.

<span class="mw-page-title-main">Kamu malı</span>

Kamu malı, münhasır fikrî mülkiyet haklarının geçerli olmadığı tüm yaratıcı çalışmalardan oluşur. Bu haklar sona ermiş, kaybedilmiş, açıkça feragat edilmiş ya da uygulanamaz hâldedir.

Real Time Streaming Protocol (RTSP), eğlence ve iletişim sistemlerinde medya sunucularındaki verilerin akışını kontrol etmek için tasarlanan bir ağ denetim protokolüdür. Bu protokol bitiş noktaları arasındaki medya bağlantılarının kurulması ve kontrol edilmesinde kullanılır. Medya sunucularının sorunu VCR'lerdeki gibi müşterilerin sunucudan alınan medya dosyalarını çalışma, durdurma gibi kısacası gerçek zamanlı kontrolü kolaylaştırmak.

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.

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.

<span class="mw-page-title-main">Betty White</span> Amerikalı komedyen ve sinema oyuncusu (1922 – 2021)

Betty White, Betty Marion White Ludden olarak tanınan Amerikalı oyuncu, komedyen, şarkıcı ve yazardı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.

Öklid'in teoremi, sayılar teorisinde temel bir ifade olup sonsuz sayıda asal sayı olduğunu ileri sürer. Teoremin iyi bilinen farklı ispatları bulunmaktadır.

2012 AFC Challenge Cup veya 2012 AFC Challenge Kupası, Asya Futbol Konfederasyonu'na üye olan devletlerin dördüncü ulusal futbol kupasıdır. Kupa, 8-19 Mart 2012 tarihleri arasında Nepal'da düzenlendi. Önceki şampiyonlar kupasında ise otomatik elemer yapılmadı. Önceki 2010 şampiyonları Kuzey Kore, yarışmada Türkmenistan ve dördüncü Tacikistan turnuvalarda geri dönerek elemeler yaptı. Kuzey Kore 2015 AFC Asya Kupası'nda başarılı olmuş ve yenmiştir.

<span class="mw-page-title-main">Corey Graves</span> Amerikalı güreşçi

Matthew Polinsky ya da bilinen adıyla: Corey Graves, Amerikalı yorumcu ve emekli profesyonel güreşçi. Günümüzde WWE'nin gelişim aşaması olan NXT'de yorumcudur. Adrian Neville ile bir kez NXT Tag Team Championship kemerini kazanmıştı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.

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.

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.

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

Bu makale, nüfus yoğunluğu, etnik köken, eğitim seviyesi, sağlık, ekonomik durum, dini inanç ve nüfusun diğer yönleri dahil olmak üzere Azerbaycan nüfusunun demografik özellikleri hakkındadır.

Aşağıdaki tablo, ülkeler tarafından kullanılan ulusal bayrakların en-boy oranını göstermektedir.