Hashing Nedir?
Ana sayfa
Makaleler
Hashing Nedir?

Hashing Nedir?

─░leri Seviye
Yay─▒nlanma: Jul 29, 2019G├╝ncellenme: Jan 31, 2023
7m
Hashing, farkl─▒ b├╝y├╝kl├╝kteki girdilerden sabit b├╝y├╝kl├╝kte bir ├ž─▒kt─▒ yaratma s├╝recine verilen isimdir. Bu i┼člem, hash fonksiyonlar─▒ olarak bilinen matematiksel form├╝llerin (hashing algoritmalar─▒ olarak uygulan─▒r) kullan─▒m─▒yla yap─▒l─▒r.┬á
T├╝m hash fonksiyonlar─▒ kriptografi kullan─▒m─▒n─▒ i├žermese de, kriptografik hash fonksiyonlar─▒ kripto paralar─▒n temelini olu┼čturur. Bu fonksiyonlar sayesinde blockchainler ve di─čer da─č─▒t─▒lm─▒┼č sistemler y├╝ksek seviyede veri b├╝t├╝nl├╝─č├╝ ve g├╝venlik elde edebilirler.

Hem geleneksel hem de kriptografik hash fonksiyonlar─▒ deterministiktir. Deterministik olmas─▒ bir hashing algoritmas─▒n─▒n girdi de─či┼čmedi─či m├╝ddet├že her zaman ayn─▒ ├ž─▒kt─▒y─▒ (hash ya da ├Âzet olarak bilinir) verece─či anlam─▒na gelir.

Kripto paralar─▒n hashing algoritmalar─▒ tipik olarak tek y├Ânl├╝ fonksiyonlar ┼čeklinde tasarlanm─▒┼čt─▒r, yani ├žok b├╝y├╝k miktarlarda hesaplama s├╝resi ve kaynak harcanmadan tersine ├ževrilemez. Di─čer bir deyi┼čle, girdiden ├ž─▒kt─▒ yaratmak olduk├ža kolay olsa da di─čer y├Ânde i┼člem yapmak zordur (yaln─▒zca ├ž─▒kt─▒ya dayanarak girdiyi olu┼čturmak). Genel olarak girdiyi bulmak ne kadar zorsa, hashing algoritmas─▒n─▒n da o kadar g├╝venli oldu─ču kabul edilir.


Bir hash fonksiyonu nas─▒l ├žal─▒┼č─▒r?

Farkl─▒ hash fonksiyonlar─▒ farkl─▒ b├╝y├╝kl├╝klerde ├ž─▒kt─▒ yarat─▒r fakat her bir hashing algoritmas─▒ i├žin olas─▒ ├ž─▒kt─▒ b├╝y├╝kl├╝─č├╝ her zaman sabittir. ├ľrne─čin, SHA-256 algoritmas─▒ yaln─▒zca 256 bit ├ž─▒kt─▒lar ├╝retebilirken SHA-1 her zaman 160-bitlik bir ├Âzet yarat─▒r.

├ľrnek olarak, "Binance" ve "binance" kelimelerini SHA-256 hashing algoritmas─▒ndan ge├žirelim (Bitcoin'de kullan─▒lan).

SHA-256

Girdi

Çıktı (256 bit)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


├çok k├╝├ž├╝k bir fark─▒n (ilk harfin b├╝y├╝k ya da k├╝├ž├╝k olmas─▒) nas─▒l tamamen farkl─▒ bir hash de─čeri yaratt─▒─č─▒na dikkat edin. Fakat biz SHA-256 kulland─▒─č─▒m─▒z i├žin, ├ž─▒kt─▒lar her zaman sabit 256 bit (ya da 64 karakter) boyutunda olur - girdi boyutundan ba─č─▒ms─▒z olarak. Ayr─▒ca, bu iki kelimeyi algoritmadan ka├ž kere ge├žirirsek ge├žirelim, iki ├ž─▒kt─▒ her zaman ayn─▒ kalacakt─▒r.

Bunun aksine, ayn─▒ girdileri SHA-1 hashing algoritmas─▒ndan ge├žirirsek ┼ču sonu├žlar─▒ elde ederiz:

SHA-1

Girdi

Çıktı (160 bit)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Buradaki ├Ânemli nokta, SHA'n─▒n G├╝venli Hash Algoritmas─▒n─▒n (Secure Hash Algoritm) k─▒saltmas─▒ olmas─▒d─▒r. SHA-0 ve SHA-1 algoritmalar─▒yla birlikte SHA-2 ve SHA-3 gruplar─▒n─▒ dahil eden kriptografik hash fonksiyonlar─▒ grubunu ifade eder. SHA-256, SHA-512 ve di─čer varyantlarla birlikte SHA-2 grubunun bir par├žas─▒d─▒r. ┼×u anda yaln─▒zca SHA-2 ve SHA-3 gruplar─▒ g├╝venli olarak kabul edilir.


Hashing Fonksiyonlar─▒ Neden ├ľnemlidir?

Geleneksel hash fonksiyonlar─▒, veritaban─▒ aramalar─▒, b├╝y├╝k dosya analizleri ve veri y├Ânetimini de dahil geni┼č ├žapl─▒ kullan─▒m alanlar─▒na sahiptir. Di─čer yandan kriptografik hash fonksiyonlar─▒, mesaj do─črulama ve dijital parmak izi gibi bilgi g├╝venli─či uygulamalar─▒nda s─▒kl─▒kla kullan─▒l─▒r. Konu Bitcoin oldu─čunda, kriptografik hash fonksiyonlar─▒ madencilik s├╝recinin ├Ânemli bir par├žas─▒d─▒r ve ayr─▒ca yeni adreslerin ve anahtarlar─▒n olu┼čturulmas─▒nda rol oynar.

Hashingin as─▒l g├╝c├╝ ├žok b├╝y├╝k miktarlarda bilgiyle ba┼ča ├ž─▒k─▒lmas─▒ gerekti─činde ortaya ├ž─▒kar. ├ľrne─čin, bir ki┼či b├╝y├╝k bir dosya ya da veri setini hash fonksiyonu ile ├žal─▒┼čt─▒rabilir ve daha sonra bu fonksiyonun ├ž─▒kt─▒s─▒n─▒ kullanarak verinin do─črulu─čunu ve b├╝t├╝nl├╝─č├╝n├╝ h─▒zla do─črulayabilir. Bunu yapmak hash fonksiyonunun deterministik do─čas─▒ sayesinde m├╝mk├╝n olur: girdi her zaman basitle┼čtirilmi┼č, yo─čunla┼čt─▒r─▒lm─▒┼č bir ├ž─▒kt─▒ (hash) yarat─▒r. B├Âylesi bir teknik b├╝y├╝k boyutlarda verilerin "hat─▒rlanmas─▒" ve kaydedilmesi zorunlulu─čunu ortadan kald─▒r─▒r.

Hashing ├Âzellikle blockchain teknolojisi ba─člam─▒nda kullan─▒┼čl─▒d─▒r. Bitcoin blockchaini hashing'i dahil eden birka├ž operasyona sahiptir ve bunlar─▒n ├žo─ču madencilik s├╝recinin par├žas─▒d─▒r. Asl─▒nda neredeyse t├╝m kripto para protokolleri, i┼člem gruplar─▒n─▒ bloklara yo─čunla┼čt─▒rmak ve ba─člamak ve ayr─▒ca her bir blok aras─▒nda kriptografik ba─člant─▒ yaratarak bir blockchain olu┼čturmak i├žin hashing kullan─▒r.


Kriptografik hash fonksiyonlar─▒

Yine kriptografik teknikleri i├žeren bir hash fonksiyonu bir kriptografik hash fonksiyonu olarak tan─▒mlanabilir. Genel olarak, bir kriptografik hash fonksiyonunu k─▒rmak ├žok say─▒da kaba-kuvvet giri┼čimi gerektirir. Bir ki┼činin, kriptografik hash fonksiyonunu "geri d├Ând├╝rmesi" i├žin istenen ├ž─▒kt─▒ yarat─▒lana kadar girdinin ne oldu─čunu deneme yan─▒lma yoluyla tahmin etmesi gerekir. Fakat farkl─▒ girdilerin tam olarak ayn─▒ ├ž─▒kt─▒lar─▒ yaratmas─▒ da olas─▒l─▒k dahilindedir. Bu durumda bir "├žak─▒┼čma" meydana gelir.

Teknik olarak, bir kriptografik hash fonksiyonunun etkin ┼čekilde g├╝venli kabul edilmesi i├žin ├╝├ž ├Âzelli─če sahip olmas─▒ gerekir. Bunlar─▒ ├žak─▒┼čmaya dayan─▒kl─▒l─▒k, ters g├Âr├╝nt├╝ye dayan─▒kl─▒l─▒k, ve ikincil ters g├Âr├╝nt├╝ye dayan─▒kl─▒l─▒k olarak tan─▒mlayabiliriz.

Her bir ├Âzelli─či ayr─▒nt─▒l─▒ incelemeden ├Ânce altlar─▒nda yatan mant─▒─č─▒ ├╝├ž k─▒sa c├╝mle ile a├ž─▒klamak gerekirse:

  • ├çak─▒┼čmaya dayan─▒kl─▒l─▒k: herhangi iki farkl─▒ girdinin ayn─▒ hashi ├ž─▒kt─▒ olarak ├╝retmemesi.

  • Ters g├Âr├╝nt├╝ye dayan─▒kl─▒l─▒k: hash fonksiyonunu "geri d├Ând├╝r├╝lememesi" (verilen bir ├ž─▒kt─▒dan girdiyi bulmak).

  • ─░kincil ters g├Âr├╝nt├╝ye dayan─▒kl─▒l─▒k: belirli girdiyle ├žak─▒┼čan ikinci bir girdi bulunamamas─▒.


├çak─▒┼čmaya dayan─▒kl─▒l─▒k

Daha ├Ânceden belirtti─čimiz gibi, farkl─▒ girdiler tam olarak ayn─▒ hashi ├╝retti─činde meydana gelir. Dolay─▒s─▒yla, bir hash fonksiyonu birisi bir ├žak─▒┼čma bulana kadar ├žak─▒┼čmaya dayan─▒kl─▒ olarak kabul edilir. ├çak─▒┼čmalar herhangi bir hash fonksiyonu i├žin her zaman var olacakt─▒r ├ž├╝nk├╝ olas─▒ girdiler sonsuzken olas─▒ ├ž─▒kt─▒lar s─▒n─▒rl─▒ say─▒dad─▒r.

Di─čer bir deyi┼čle, ├žak─▒┼čma ihtimalinin milyonlarca y─▒ll─▒k hesaplama gerektirecek kadar d├╝┼č├╝k oldu─ču ko┼čullarda bir hash fonksiyonu ├žak─▒┼čmaya dayan─▒kl─▒d─▒r. Dolay─▒s─▒yla hi├žbir ├žak─▒┼čmaya dayan─▒kl─▒ hash fonksiyonu olmasa da, baz─▒ fonksiyonlar dayan─▒kl─▒ kabul edilecek kadar g├╝├žl├╝d├╝r (├Âr. SHA-256).

├çe┼čitli SHA algoritmalar─▒ aras─▒ndan, SHA-0 ve SHA-1 gruplar─▒ art─▒k g├╝venli kabul edilmez ├ž├╝nk├╝ bu gruplarda ├žak─▒┼čmalar ke┼čfedilmi┼čtir. ┼×u anda, SHA-2 ve SHA-3 gruplar─▒ ├žak─▒┼čmaya dayan─▒kl─▒ kabul edilmektedir.


Ters g├Âr├╝nt├╝ye dayan─▒kl─▒l─▒k

Ters g├Âr├╝nt├╝ye dayan─▒kl─▒l─▒k ├Âzelli─či tek y├Ânl├╝ fonksiyon kavram─▒yla ili┼čkilidir. Bir hash fonksiyonunun, birisinin belirli bir ├ž─▒kt─▒ yaratan bir girdi bulma olas─▒l─▒─č─▒n─▒n ├žok d├╝┼č├╝k olmas─▒ durumunda ters g├Âr├╝nt├╝ye dayan─▒kl─▒ oldu─ču kabul edilir.

Bu ├Âzellik bir ├Âncekinden farkl─▒d─▒r ├ž├╝nk├╝ bir sald─▒rgan belirli bir ├ž─▒kt─▒ya bakarak girdinin ne oldu─čunu tahmin etmeye ├žal─▒┼č─▒r. Di─čer yandan bir ├žak─▒┼čma birisinin ayn─▒ ├ž─▒kt─▒y─▒ yaratan iki farkl─▒ girdi bulmas─▒ durumunda g├Âr├╝l├╝r fakat hangi girdilerin kullan─▒ld─▒─č─▒n─▒n ├Ânemi yoktur.

Ters g├Âr├╝nt├╝ dayan─▒kl─▒l─▒─č─▒ verinin korunmas─▒na y├Ânelik de─čerli bir ├Âzelliktir ├ž├╝nk├╝ mesaj─▒n basit bir hashi bilgiyi payla┼čma gereksinimi olmadan bu mesaj─▒n do─črulu─čunu kan─▒tlayabilir. Uygulamada bir├žok hizmet sa─člay─▒c─▒ ve web uygulamas─▒, d├╝z metin olarak ┼čifreler yerine ┼čifrelerden olu┼čturulmu┼č hashleri saklar ve kullan─▒r.


─░kincil ters-g├Âr├╝nt├╝ dayan─▒kl─▒l─▒─č─▒

Basitle┼čtirmek i├žin, ikincil ters g├Âr├╝nt├╝ dayan─▒kl─▒l─▒─č─▒n─▒n di─čer iki ├Âzellik aras─▒nda bir yerde oldu─čunu s├Âyleyebiliriz. ─░kincil ters g├Âr├╝nt├╝ sald─▒r─▒lar─▒, bir ki┼činin halihaz─▒rda bilinen bir girdinin yaratt─▒─č─▒ bir ├ž─▒kt─▒yla ayn─▒ ├ž─▒kt─▒y─▒ yaratan belirli bir girdiyi bulmas─▒ durmas─▒ durumunda ger├žekle┼čir.

Di─čer bir deyi┼čle, ikincil ters g├Âr├╝nt├╝ sald─▒r─▒s─▒ bir ├žak─▒┼čma bulmay─▒ i├žerir ama ayn─▒ hashi yaratan iki rastgele girdi aramak yerine, belirli bir girdi taraf─▒ndan yarat─▒lan hashin ayn─▒s─▒n─▒ yaratan ba┼čka bir girdi aran─▒r.

Bu nedenle, ├žak─▒┼čmaya dayan─▒kl─▒ bir hash fonksiyonu ikincil ters g├Âr├╝nt├╝ sald─▒r─▒lar─▒lar─▒na da dayan─▒kl─▒d─▒r ├ž├╝nk├╝ ikincil ters g├Âr├╝nt├╝ sald─▒r─▒lar─▒ her zaman bir ├žak─▒┼čma i├žerir. Fakat, ├žak─▒┼čmaya dayan─▒kl─▒ fonksiyonlara yine de ters g├Âr├╝nt├╝ sald─▒r─▒lar─▒ yap─▒labilir ├ž├╝nk├╝ burada tek bir ├ž─▒kt─▒dan tek bir girdi bulunur.


Madencilik

Bitcoin madencili─činde, bakiye kontrol├╝, i┼člem girdi ve ├ž─▒kt─▒lar─▒n─▒ ba─člamak ve bir blok i├žindeki i┼člemleri Merkle A─čac─▒ olu┼čturmak i├žin hashlemek gibi hash fonksiyonlar─▒n─▒ i├žeren bir├žok ad─▒m bulunur. Fakat Bitcoin┬áblockchaininin g├╝venli olmas─▒n─▒n ba┼čl─▒ca nedenlerinden biri madencilerin bir sonraki blo─ča y├Ânelik en nihayetinde ge├žerli bir ├ž├Âz├╝m bulabilmeleri i├žin ├žok say─▒da hashing i┼člemi yapmalar─▒n─▒n gerekmesidir.
Bir madencinin aday blo─ču i├žin hash de─čeri yarat─▒rken birka├ž farkl─▒ girdiyi denemesi gerekir. En temelde madenciler bloklar─▒n─▒ ancak belirli say─▒da s─▒f─▒rla ba┼člayan ├ž─▒kt─▒ hashleri yaratt─▒klar─▒ zaman do─črulayabilirler. Madencilik zorluk seviyesini belirleyen ┼čey s─▒f─▒rlar─▒n say─▒s─▒d─▒r ve bu say─▒ a─č i├žin ayr─▒lm─▒┼č hash oran─▒na g├Âre de─či┼čiklik g├Âsterir.

Bu durumda hash oran─▒, Bitcoin madencili─čine ne kadar bilgisayar g├╝c├╝ yat─▒r─▒m─▒ yap─▒ld─▒─č─▒n─▒ temsil eder. E─čer a─č─▒n hash oran─▒ y├╝kselirse Bitcoin protokol├╝ madencilik zorluk seviyesini, bir blo─ču kazmak i├žin gerekli ortalama s├╝renin yakla┼č─▒k 10 dakika olarak kalaca─č─▒ ┼čekilde otomatik olarak ayarlar. Bunun aksine, e─čer birka├ž madenci kazma i┼čleminden vazge├žerek hash oran─▒n─▒n b├╝y├╝k miktarda d├╝┼čmesine neden olursa, madencilik zorlu─ču kazma i┼člemini daha kolay hale getirecek ┼čekilde ayarlan─▒r (ortalama blok s├╝resi 10 dakikaya geri d├Ânene kadar).

Madencilerin ├žak─▒┼čma bulmak zorunda olmad─▒─č─▒ ├ž├╝nk├╝ ge├žerli bir ├ž─▒kt─▒ olarak yaratabilecekleri birden fazla hash oldu─ču unutulmamal─▒d─▒r (belirli say─▒da s─▒f─▒r ile ba┼člayanlar). Bu y├╝zden belirli bir blok i├žin birka├ž farkl─▒ olas─▒ ├ž├Âz├╝m bulunur ve madencilerin madencilik zorlu─ču taraf─▒ndan belirlenen e┼či─če g├Âre bunlardan yaln─▒zca bir tanesini bulmas─▒ gerekir.

Bitcoin madencili─či yo─čun maliyetli bir i┼člem oldu─ču i├žin madencilerin sistemi kand─▒rmaya ├žal─▒┼čmak i├žin ge├žerli bir nedenleri yoktur ├ž├╝nk├╝ bunun sonucunda finansal kay─▒p ya┼čamak durumunda kal─▒rlar. Bir blockchaine ne kadar ├žok madenci kat─▒l─▒rsa, o blockchain daha b├╝y├╝k ve daha g├╝├žl├╝ hale gelir.


Son fikirler

Hash fonksiyonlar─▒n─▒ bilgisayar bilimleri i├žin ├Âzellikle de b├╝y├╝k miktarlarda verilerle ├žal─▒┼čma konusunda ├žok ├Ânemli ara├žlar oldu─čuna hi├ž ┼č├╝phe yoktur. Hashing algoritmalar─▒ kriptografi ile birle┼čtirildiklerinde ├žok kullan─▒┼čl─▒ hale gelerek, bir├žok farkl─▒ yoldan g├╝venlik ve do─čruluk sunar. Dolay─▒s─▒yla kriptografik hash fonksiyonlar─▒ neredeyse t├╝m kripto para a─člar─▒ i├žin hayati ├Âneme sahiptir bu nedenle de ├Âzelliklerini ve ├žal─▒┼čma mekanizmalar─▒n─▒ anlamak blockchain teknolojisiyle ilgilenen herhangi biri i├žin olduk├ža faydal─▒d─▒r.

G├Ânderiler Payla┼č─▒n
Hesap olu┼čturun
Hemen bir Binance hesab─▒ olu┼čturarak bilgilerinizi uygulamaya d├Âk├╝n.