Kriptografi ve bilgisayar bilimlerinde, Hash ağacı ya da Merkle ağacında her yaprak düğümü veri blokunun özet değerini, her yaprak olmayan düğüm ise kendi alt düğümlerinin kriptografik özet değerlerini içerir. Merkle ağacı büyük veri yapılarının verimli ve güvenli bir şekilde doğrulanmasını sağlar. Merkle ağaçları, özet listeleri ve özet zincirlerinin genelleştirilmiş halidir. Aynı isimdeki Merkle İmza Algoritması, Merkle özet değeri ağacını kullanmaktadır.
Bir yaprak düğümün verilen Merkle ağacının bir parçası olduğunu göstermek için, ağaçtaki yaprak düğümü sayısının logaritması kadar bir takım hesaplama yapılması gerekmektedir; bu da yaprak düğümü sayısı kadar işlem gerektiren özet listeleriyle çelişir.
Merkle ağacı kavramı adını 1979 yılında Ralph Merkle'in patentiyle almıştır.
Kullanım
Merkle ağaçları bilgisayarlar arası transfer edilen ya da bilgisayarlarda saklanan, işlenen her türlü verinin doğrulanmasında kullanılabilir. Kişiden kişiye (P2P) ağlarda alınan veri bloklarının hasarsız, değiştirilmemiş ve hatta sahte olup olmadığını anlamamıza yardımcı olurlar.
Merkle ağaçları kriptografik hash fonksiyonlarında kullanılmaktadır. Merkle ağaçları aynı zamanda , Btrfs ve ZFS dosya sistemlerinde ( saymak için), Dat protokolünde, protokolünde,Git ve Mercurial dağıtık versiyon kontrol sistemlerinde, yedek sisteminde, Zeronet, Bitcoin ve Ethereum P2P ağlarında, seritfika şeffaflığı sisteminde ve , , Dynamo gibi birçok NoSql sisteminde kullanılmaktadır.
Satoshi Nakamoto Bitcoin uygulamaya geçirildiği noktada Merkle ağaçlarını aşırı boyutlu özet fonksiyonlarının Hızlı Merkle ağaçları kullanarak sıkıştırma aşamasında hafifletmiştir.
Genel bakış
Merkle ağaçları bir dosya veya dosya grubu örneğinde olduğu gibi yaprakları veri bloklarının özeti olan bir özet ağacıdır. Ağaçta bulunan düğümler altlarındaki kendi ilgili çocuklarının özet değerleri alınmış halidir. Örneğin, resimde görüldüğü gibi özet değeri 0, altından barındırdığı özet değeri 0-0 ve özet değeri 0-1 birleşiminin özet değerinin hesaplanması sonucudur. Yani, + işaretinin birleştirme olduğu özet 0 = özet(özet 0-0 + özet 0-1) ifadesi ile anlatımı ifade edebiliriz.
Çoğu Merkle ağacı uygulaması ikilidir (her düğüm altındaki iki alt düğüm); ancak her düğümün altında çok daha fazla alt düğümde kullanılabilir.
Genellikle, özet değeri için SHA-2 gibi bir kriptografik özet fonksiyonu kullanılır. Merkle ağacı yalnızca istem dışı hasarlara karşı korunması gerekiyorsa, CRC’ler gibi daha az güvenli kullanılabilir.
Bir Merkle ağacın tepesinde bir üst özet değeri (veya kök özet değeri veya ana özet değeri) bulunur. Bir p2p ağında bir dosya indirmeden önce, çoğu durumda üst özet değeri indirilecek dosyalara iyi tavsiyelerde bulunduğu bilinen bir arkadaş veya bir İnternet sitesi gibi güvenilir bir kaynaktan edinilmiş olur. Üst özet değeri varsa, Merkle ağacı, p2p ağındaki herhangi bir eş gibi güvenilir olmayan herhangi bir kaynaktan alınabilir. Daha sonra alınan özet değeri ağacı güvenilir üst özet değeri ile karşılaştırılır ve özet değeri ağacı hasar görmüş veya sahte ise, program en iyi özet değeri ile eşleşene kadar başka bir kaynaktan başka bir Merkle ağacı denenecektir.
Özet değeri listesinden temel farkı, aynı anda her ağacın bir dalının indirilebilmesi ve anında kontrol edilebilmesidir. Örneğin, yukarıdaki resimde, veri bloku 2 bütünlüğü, ağaçta özet 0-0 ve özet 1 içeriyorsa veri blokunun özet işlemi yapılarak ve sonucu özet 0-0 ve ardından özet 1 ile tekrarlı birleşimiyle hemen doğrulanabilir. Benzer şekilde, ağaçta özet 1-1 ve özet 0 varsa, veri bloku 3’ün bütünlüğü doğrulanabilir. Bu, çok küçük veri bloklarında dosyaları ayıracak kadar verimli olduğu için bir avantaj olabilir. Böylece yalnızca küçük bloklar olması gerekir ve zarar görürlerse yeniden indirilirler. Özet değeri dosyası çok büyükse, böyle bir özet ağacı veya özet listesi oldukça büyük olur. Ancak bu bir ağaçsa, küçük bir dal hızlı bir şekilde indirilebilir, dalın bütünlüğü kontrol edilebilir ve daha sonra veri bloklarının indirilmesi başlatılabilir.
İkinci preimage saldırısı
Merkle özet kökü (hash root), bir saldırganın aynı Merkle özet köküne sahip olan orijinal farklı bir belge oluşturduğu sağlayan ağaç derinliğini göstermez. Yukarıdaki örnekte, bir saldırgan, iki veri bloku içeren yeni bir belge oluşturabilir; ilk özet 0-0 + özet 0-1 ve ikincisi özet 1-0 + özet 1-1 şeklindedir. Sisteminde basit bir düzeltme tanımlanmıştır: yaprak düğüm özet değerleri hesaplanırken, özet verilere bir 0x00 bayt ön eklenir ve iç düğüm özet değerleri hesaplanırken 0x01 eklenir. Merkle ağacının boyutunu kısıtlamak bazı resmi güvenlik belgelerinin bir ön şartıdır ve bazı kanıtları sıkılaştırmaya yardımcı olur. Bazı uygulamalar özet ağaç derinlik ön eklerinin özet değerini alır, öncesi kullanarak ağaç derinliğini sınırlar; böylece ayıklanan özet zincir yalnızca ön ek her adımda azalırsa ve yaprağa ulaşıldığında hala pozitif ise geçerli olarak tanımlanır.
Kaplan ağacı özeti
Kaplan ağaç özeti (Tiger Tree Hash) yaygın olarak kullanılan bir özet ağacı şeklidir. Genellikle 1024 bayt veri bloku boyutları ve ile ikili özet ağaç (düğümün altında kendine ait iki düğüm) yapısıyla kullanılır.
Kaplan ağaç özetleri, Gnutella, Gnutella2, Direct Connect P2P dosya paylaşım protokollerinde ve Phex, BearShare, LimeWire, Shareaza, DC ++ ve Valknut gibi dosya paylaşım uygulamalarında kullanılmaktadır.
Örnek
Base32: RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ
URN: urn:tree:tiger:RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ
magnet: magnet:?xt=urn:tree:tiger:RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ
Ayrıca bakınız
- İkili ağaç
- Blok Zinciri
- Dağılmış komut çizelgesi
- Komut Çizelgesi
- Hash trie
- Linked timestamping
Başvurular
- ^ Becker, Georg (18 Temmuz 2008). "Merkle Signature Schemes, Merkle Trees and Their Cryptanalysis" (PDF). Ruhr-Universität Bochum. s. 16. 22 Aralık 2014 tarihinde kaynağından (PDF). Erişim tarihi: 20 Kasım 2013.
- ^ Merkle, R. C. (1988). "A Digital Signature Based on a Conventional Encryption Function". Advances in Cryptology — CRYPTO '87. Lecture Notes in Computer Science. 293. s. 369. doi:10.1007/3-540-48184-2_32. ISBN .
- ^ US patent 4309569, Ralph Merkle, "Method of providing digital signatures", Jan 5, 1982 tarihinde yayımlandı, assigned to The Board Of Trustees Of The Leland Stanford Junior University
- ^ Bonwick, Jeff. . Jeff Bonwick's Blog. 6 Mayıs 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2018.
- ^ Likai Liu. . likai.org. 8 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2018.
- ^ . Google Wave Protocol. 8 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Nisan 2018.
- ^ Koblitz, Neal; Menezes, Alfred J. (Ocak 2016). "Cryptocash, cryptocurrencies, and cryptocontracts". Designs, Codes and Cryptography. 78 (1). ss. 87-102. doi:10.1007/s10623-015-0148-5.
- ^ Adam Marcus. "The NoSQL Ecosystem". aosabook.org. 8 Nisan 2018 tarihinde kaynağından . Erişim tarihi: 7 Nisan 2018.
When a replica is down for an extended period of time, or the machine storing hinted handoffs for an unavailable replica goes down as well, replicas must synchronize from one another. In this case, Cassandra and Riak implement a Dynamo-inspired process called anti-entropy. In anti-entropy, replicas exchange Merkle trees to identify parts of their replicated key ranges which are out of sync. A Merkle tree is a hierarchical hash verification: if the hash over the entire keyspace is not the same between two replicas, they will exchange hashes of smaller and smaller portions of the replicated keyspace until the out-of-sync keys are identified. This approach reduces unnecessary data transfer between replicas which contain mostly similar data.
- ^ Kilian, J. (1995). "Improved efficient arguments (preliminary version)". CRYPTO.
Konuyla ilgili yayınlar
- Merkle tree patent 4,309,569 – Hash ağaç yapısına ve tek kullanımlık imzaların bu yapıyla kullanımına dair açıklamalar
- – Tiger ağaçlarının detaylı anlatımı
- Efficient Use of Merkle Trees 17 Nisan 2017 tarihinde Wayback Machine sitesinde . – Merkle ağaçlarının asıl amacı olan birden fazla tek kullanımlık Lambort imzasının ele alınmasının RSA Labs tarafından açıklanması
Dış bağlantılar
- J 12 Aralık 2020 tarihinde Wayback Machine sitesinde . ava dilinde Merkle Ağacı uygulaması
- Tiger Tree Hash (TTH) C# dilinde kaynak kodu 5 Ağustos 2020 tarihinde Wayback Machine sitesinde ., Gil Schmidt
- Tiger Tree Hash (TTH) C ve Java 18 Kasım 2019 tarihinde Wayback Machine sitesinde . dilinde uygulamaları
- RHash 7 Haziran 2019 tarihinde Wayback Machine sitesinde ., TTH ve TTH magnet bağlantı linklerinin hesaplanmasını sağlayan açık kaynak kodlu komut satırı aracı
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Kriptografi ve bilgisayar bilimlerinde Hash agaci ya da Merkle agacinda her yaprak dugumu veri blokunun ozet degerini her yaprak olmayan dugum ise kendi alt dugumlerinin kriptografik ozet degerlerini icerir Merkle agaci buyuk veri yapilarinin verimli ve guvenli bir sekilde dogrulanmasini saglar Merkle agaclari ozet listeleri ve ozet zincirlerinin genellestirilmis halidir Ayni isimdeki Merkle Imza Algoritmasi Merkle ozet degeri agacini kullanmaktadir Ikili hash agaci ornegi 0 0 ve 0 1 hash degerleri sirasiyla L1 ve L2 veri bloklarinin hashleridir Hash 0 ise 0 0 ve 0 1 hashlerinin birlesiminin hashi alinmasiyla olusmustur Bir yaprak dugumun verilen Merkle agacinin bir parcasi oldugunu gostermek icin agactaki yaprak dugumu sayisinin logaritmasi kadar bir takim hesaplama yapilmasi gerekmektedir bu da yaprak dugumu sayisi kadar islem gerektiren ozet listeleriyle celisir Merkle agaci kavrami adini 1979 yilinda Ralph Merkle in patentiyle almistir KullanimMerkle agaclari bilgisayarlar arasi transfer edilen ya da bilgisayarlarda saklanan islenen her turlu verinin dogrulanmasinda kullanilabilir Kisiden kisiye P2P aglarda alinan veri bloklarinin hasarsiz degistirilmemis ve hatta sahte olup olmadigini anlamamiza yardimci olurlar Merkle agaclari kriptografik hash fonksiyonlarinda kullanilmaktadir Merkle agaclari ayni zamanda Btrfs ve ZFS dosya sistemlerinde saymak icin Dat protokolunde protokolunde Git ve Mercurial dagitik versiyon kontrol sistemlerinde yedek sisteminde Zeronet Bitcoin ve Ethereum P2P aglarinda seritfika seffafligi sisteminde ve Dynamo gibi bircok NoSql sisteminde kullanilmaktadir Satoshi Nakamoto Bitcoin uygulamaya gecirildigi noktada Merkle agaclarini asiri boyutlu ozet fonksiyonlarinin Hizli Merkle agaclari kullanarak sikistirma asamasinda hafifletmistir Genel bakisMerkle agaclari bir dosya veya dosya grubu orneginde oldugu gibi yapraklari veri bloklarinin ozeti olan bir ozet agacidir Agacta bulunan dugumler altlarindaki kendi ilgili cocuklarinin ozet degerleri alinmis halidir Ornegin resimde goruldugu gibi ozet degeri 0 altindan barindirdigi ozet degeri 0 0 ve ozet degeri 0 1 birlesiminin ozet degerinin hesaplanmasi sonucudur Yani isaretinin birlestirme oldugu ozet 0 ozet ozet 0 0 ozet 0 1 ifadesi ile anlatimi ifade edebiliriz Cogu Merkle agaci uygulamasi ikilidir her dugum altindaki iki alt dugum ancak her dugumun altinda cok daha fazla alt dugumde kullanilabilir Genellikle ozet degeri icin SHA 2 gibi bir kriptografik ozet fonksiyonu kullanilir Merkle agaci yalnizca istem disi hasarlara karsi korunmasi gerekiyorsa CRC ler gibi daha az guvenli kullanilabilir Bir Merkle agacin tepesinde bir ust ozet degeri veya kok ozet degeri veya ana ozet degeri bulunur Bir p2p aginda bir dosya indirmeden once cogu durumda ust ozet degeri indirilecek dosyalara iyi tavsiyelerde bulundugu bilinen bir arkadas veya bir Internet sitesi gibi guvenilir bir kaynaktan edinilmis olur Ust ozet degeri varsa Merkle agaci p2p agindaki herhangi bir es gibi guvenilir olmayan herhangi bir kaynaktan alinabilir Daha sonra alinan ozet degeri agaci guvenilir ust ozet degeri ile karsilastirilir ve ozet degeri agaci hasar gormus veya sahte ise program en iyi ozet degeri ile eslesene kadar baska bir kaynaktan baska bir Merkle agaci denenecektir Ozet degeri listesinden temel farki ayni anda her agacin bir dalinin indirilebilmesi ve aninda kontrol edilebilmesidir Ornegin yukaridaki resimde veri bloku 2butunlugu agacta ozet0 0 ve ozet 1 iceriyorsa veri blokunun ozet islemi yapilarak ve sonucu ozet0 0 ve ardindan ozet 1 ile tekrarli birlesimiyle hemen dogrulanabilir Benzer sekilde agacta ozet 1 1 ve ozet 0 varsa veri bloku 3 un butunlugu dogrulanabilir Bu cok kucuk veri bloklarinda dosyalari ayiracak kadar verimli oldugu icin bir avantaj olabilir Boylece yalnizca kucuk bloklar olmasi gerekir ve zarar gorurlerse yeniden indirilirler Ozet degeri dosyasi cok buyukse boyle bir ozet agaci veya ozet listesi oldukca buyuk olur Ancak bu bir agacsa kucuk bir dal hizli bir sekilde indirilebilir dalin butunlugu kontrol edilebilir ve daha sonra veri bloklarinin indirilmesi baslatilabilir Ikinci preimage saldirisi Merkle ozet koku hash root bir saldirganin ayni Merkle ozet kokune sahip olan orijinal farkli bir belge olusturdugu saglayan agac derinligini gostermez Yukaridaki ornekte bir saldirgan iki veri bloku iceren yeni bir belge olusturabilir ilk ozet 0 0 ozet 0 1 ve ikincisi ozet 1 0 ozet 1 1 seklindedir Sisteminde basit bir duzeltme tanimlanmistir yaprak dugum ozet degerleri hesaplanirken ozet verilere bir 0x00 bayt on eklenir ve ic dugum ozet degerleri hesaplanirken 0x01 eklenir Merkle agacinin boyutunu kisitlamak bazi resmi guvenlik belgelerinin bir on sartidir ve bazi kanitlari sikilastirmaya yardimci olur Bazi uygulamalar ozet agac derinlik on eklerinin ozet degerini alir oncesi kullanarak agac derinligini sinirlar boylece ayiklanan ozet zincir yalnizca on ek her adimda azalirsa ve yapraga ulasildiginda hala pozitif ise gecerli olarak tanimlanir Kaplan agaci ozeti Kaplan agac ozeti Tiger Tree Hash yaygin olarak kullanilan bir ozet agaci seklidir Genellikle 1024 bayt veri bloku boyutlari ve ile ikili ozet agac dugumun altinda kendine ait iki dugum yapisiyla kullanilir Kaplan agac ozetleri Gnutella Gnutella2 Direct Connect P2P dosya paylasim protokollerinde ve Phex BearShare LimeWire Shareaza DC ve Valknut gibi dosya paylasim uygulamalarinda kullanilmaktadir Ornek Base32 RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ URN a rel nofollow class external free href urn tree tiger RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ urn tree tiger RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ a magnet a rel nofollow class external free href magnet xt urn tree tiger RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ magnet xt urn tree tiger RBOEI7UYRYO5SUXGER5NMUOEZ5O6E4BHPP2MRFQ a Ayrica bakinizIkili agac Blok Zinciri Dagilmis komut cizelgesi Komut Cizelgesi Hash trie Linked timestampingBasvurular Becker Georg 18 Temmuz 2008 Merkle Signature Schemes Merkle Trees and Their Cryptanalysis PDF Ruhr Universitat Bochum s 16 22 Aralik 2014 tarihinde kaynagindan PDF Erisim tarihi 20 Kasim 2013 Merkle R C 1988 A Digital Signature Based on a Conventional Encryption Function Advances in Cryptology CRYPTO 87 Lecture Notes in Computer Science 293 s 369 doi 10 1007 3 540 48184 2 32 ISBN 978 3 540 18796 7 US patent 4309569 Ralph Merkle Method of providing digital signatures Jan 5 1982 tarihinde yayimlandi assigned to The Board Of Trustees Of The Leland Stanford Junior University Bonwick Jeff Jeff Bonwick s Blog 6 Mayis 2017 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Nisan 2018 Likai Liu likai org 8 Nisan 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Nisan 2018 Google Wave Protocol 8 Nisan 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Nisan 2018 Koblitz Neal Menezes Alfred J Ocak 2016 Cryptocash cryptocurrencies and cryptocontracts Designs Codes and Cryptography 78 1 ss 87 102 doi 10 1007 s10623 015 0148 5 Adam Marcus The NoSQL Ecosystem aosabook org 8 Nisan 2018 tarihinde kaynagindan Erisim tarihi 7 Nisan 2018 When a replica is down for an extended period of time or the machine storing hinted handoffs for an unavailable replica goes down as well replicas must synchronize from one another In this case Cassandra and Riak implement a Dynamo inspired process called anti entropy In anti entropy replicas exchange Merkle trees to identify parts of their replicated key ranges which are out of sync A Merkle tree is a hierarchical hash verification if the hash over the entire keyspace is not the same between two replicas they will exchange hashes of smaller and smaller portions of the replicated keyspace until the out of sync keys are identified This approach reduces unnecessary data transfer between replicas which contain mostly similar data Kilian J 1995 Improved efficient arguments preliminary version CRYPTO Konuyla ilgili yayinlarMerkle tree patent 4 309 569 Hash agac yapisina ve tek kullanimlik imzalarin bu yapiyla kullanimina dair aciklamalar Tiger agaclarinin detayli anlatimi Efficient Use of Merkle Trees 17 Nisan 2017 tarihinde Wayback Machine sitesinde Merkle agaclarinin asil amaci olan birden fazla tek kullanimlik Lambort imzasinin ele alinmasinin RSA Labs tarafindan aciklanmasiDis baglantilarJ 12 Aralik 2020 tarihinde Wayback Machine sitesinde ava dilinde Merkle Agaci uygulamasi Tiger Tree Hash TTH C dilinde kaynak kodu 5 Agustos 2020 tarihinde Wayback Machine sitesinde Gil Schmidt Tiger Tree Hash TTH C ve Java 18 Kasim 2019 tarihinde Wayback Machine sitesinde dilinde uygulamalari RHash 7 Haziran 2019 tarihinde Wayback Machine sitesinde TTH ve TTH magnet baglanti linklerinin hesaplanmasini saglayan acik kaynak kodlu komut satiri araci