اجازه ویرایش برای همه اعضا

درخت های درهم سازی

نویسه گردانی: DRḴT HAY DRHM SAZY
درخت های درهم سازی (Hash Tree) شاخه‌ای از لیست‌های درهم سازی هستند. به این درخت‌ها درخت‌های مرکل (Merkle Tree) نیز می‌گویند.

در رمزنگاری و علوم کامپیوتری، درخت درهم سازی نوعی از داده ساختار ها هستند که شامل یک درخت که خلاصهٔ اطلاعات یک دادهٔ بزرگتر را در خود جای داده است و برای تشخیص محتویات آن داده به کار می‌رود.

محتویات [نمایش]
کاربردها [ویرایش]

درخت‌های درهم سازی می‌توانند برای محافظت از هر نوع داده‌ای که ذخیره شده است و یا مورد استفاده قرار می‌گیرد و یا دربین رایانه‌ها منتقل می‌شود؛ استفاده شود. در حال حاضر بیشترین و مهم‌ترین کاربرد درخت هایدرهم سازی در شبکه‌های نظیر به نظیر[۱] است.در این شبکه‌ها برای حصول اطمینان از اینکه اولا بسته‌های دریافت شده، بدون عیب و بدون تغییر هستند و ثانیا اینکه بسته‌ها جعلی نیستند؛ از این درخت‌ها استفاده می‌شود. البته پیشنهاداتی برای استفاده از این درخت‌ها در سیستم‌های محاسباتی معتبر[۲] شده است. شرکت سان میکرو سیستمز[۳] از درخت‌های مرکل در پرونده‌های سیتم‌های [۴] ZFS استفاده کرده است.

درخت درهم سازی در سال 1979 و توسط رالف مرکل[۵]، اختراع شد. کاربرد اصلی این درخت‌ها در شیوه‌ای به نام امضای لمپورت [۶] است که در رمزنگاری کاربرد دارد. ترکیب این روش با درخت درهم سازی باعث شد تا این روش رمزنگاری برای پیام‌های زیادی مورد استفاده قرار بگیرد و به روشی نسبتا کارآمد برای امضاهای دیجیتالی تبدیل شود.

چگونگی عملکرد درخت درهم سازی [ویرایش]



نمونه‌ای از یک درخت درهم سازی
یک درخت درهم سازی درختی است که برگ‌های آن درهم سازی شدهٔ بلوک‌های داده ( مثلا یک فایل و یا مجموعه‌ای از فایل ها) است. هر گره پدر، در هم سازی شدهٔ گره‌های فرزند خودش است. این روش بر خلاف دیگر روش‌های معمول درخت ها، از پاییت به بالا کار می‌کند؛ یعنی ورودی آن برگ‌ها هسنتد و نه ریشه. به عنوان مثل، در شکل روبرو، 0 حاصل در هم سازی 0-0 و 1-0 است. که با الحاق 0-0 و 1-0 به دست می‌آید. اکثر پیاده سازی‌های انجام شده برای درخت‌های درهم سازی، دودویی هستند. اما می‌توان، با توجه به روش مورد استفاده و همچنین نیاز، فرزندان بیشتری را نیز متصور بود. معمولا یک تابع درهم سازی رمزی[۷] مثل: SHA-1، Whirpool، Tiger و... برای درهم سازی مورد استفاده قرار می‌گیرد. اگر قرار باشد که درخت‌های درهم سازی فقط در برابر صدمات غیر عمدی محافظت شوند؛ می‌توان از روش هایی که امنیت کمتری دارند ولی در عوض ساده تر هستند مثل CRC استفاده کرد. در بالای درخت درهم سازی؛ Top Hash [۸] قرار دارد. پیش از دانلود کردن یک فایل از شبکه‌های نظیر به نظیر، در اکثر موارد، Top Hash از یک منبع مورد اطمینان مثل رایانهٔ یک دوست و یا حتی سایت هایی که در این زمینه شهرت دارند، دزیافت می‌شود. اگر توانستیم بدین وسیله Top Hash را به دست آوریم، ما بقی درخت درهم سازی را می‌توان از هر منبع دیگری دریافت کرد.در نهایت، درخت درهم سازیِ دریافت شده را می‌توان به وسیلهٔ Top Hash مطمئنی که قبلا دریافت کرده ایم، بررسی کرد. اگر قسمتی از درخت درهم سازی، صدمه دیده و یا جعلی باشد، آن قسمت لز درخت از منبع دیگری امتجان می‌شود تا در نهایت، برنامه Top Hash درست و مطابق با Top Hash اولیه را بیابد. تفاوت عمده‌ای که بین درخت‌های درهم سازی و لیست‌های درهم سازی وجود دارد این است که در درخت‌های درهم سازی، یک شاخه از درخت را می‌توان یکجا دانلود کرد و یکپارچگی آنرا بلافاصله بررسی کرد؛ حتی اگر تمام درخت به طور کامل در دسترس نباشد. این یک ویژگی خوب برای درخت‌های درهم سازی است چرا که تکه کردن فابل‌ها به بلوک‌های کوچکتر، به صرفه است؛ زیرا اگر آنها صدمه ببینند، فقط قطعه‌ای از داده‌ها باید دوباره دانلود شود و تیازی به دانلود تمام فایل نیست.

پیوندهای درونی [ویرایش]

تابع درهم‌سازی کریپتوگرافیک
درخت دودویی
داده ساختار درخت


پیوندهای بیرونی [ویرایش]

http://open-content.net/specs/draft-jchapweske-thex-02.html - Hash Tree
http://sourceforge.net/projects/tigertree/ – Tiger Tree Hash (TTH) implementations in C and Java
Merkle tree patent 4,309,569 – Explains both the hash tree structure and the use of it to handle many one-time signatures.
Efficient Use of Merkle Trees – RSA labs explanation of the original purpose of Merkle trees: To handle many Lamport one-time signatures.
منابع [ویرایش]

tree|منبع انگلیسی


↑ Peer to Peer, Peer2Peer, P2P
↑ Trusted Computing Systems
↑ Sun Microsystems
↑ File System
↑ Ralph Merkle
↑ Lamport Signature
↑ Cryptographic Hash Function
↑ همچنین Root Hash و Master Hash
رده‌های صفحه: درهم‌سازهای رمزنگارانه ساختار درختی
قس انگلیسی
In cryptography and computer science hash trees or Merkle trees are a type of data structure that contains a tree of summary information about a larger piece of data – for instance a file – used to verify its contents. The concept is named after Ralph Merkle. Hash trees are a combination of hash lists and hash chaining, which in turn are extensions of hashing. Hash trees in which the underlying hash function is Tiger are often called Tiger trees or Tiger tree hashes.
Contents [show]
[edit]Uses

Hash trees can be used to verify any kind of data stored, handled and transferred in and between computers. Currently the main use of hash trees is to make sure that data blocks received from other peers in a peer-to-peer network are received undamaged and unaltered, and even to check that the other peers do not lie and send fake blocks. Suggestions have been made to use hash trees in trusted computing systems. Sun Microsystems has used Hash Trees in the ZFS filesystem.[1] Hash Trees are used in Google Wave protocol,[2] Git distributed revision control system, the Tahoe-LAFS backup system, the Bitcoin peer-to-peer network, and a number of NoSQL systems like Apache Cassandra & Riak[3]
Hash trees were invented in 1979 by Ralph Merkle.[4] The original purpose was to make it possible to efficiently handle many Lamport one-time signatures. Lamport signatures are believed to still be secure in the event that quantum computers become reality. Unfortunately each Lamport key can only be used to sign a single message. But combined with hash trees they can be used for many messages and then become a fairly efficient digital signature scheme.
[edit]How hash trees work

A hash tree is a tree of hashes in which the leaves are hashes of data blocks in, for instance, a file or set of files. Nodes further up in the tree are the hashes of their respective children. For example, in the picture hash 0 is the result of hashing hash 0-0 and then hash 0-1. That is, hash 0 = hash( hash 0-0 || hash 0-1 ) where || denotes concatenation.
Most hash tree implementations are binary (two child nodes under each node) but they can just as well use many more child nodes under each node.
Usually, a cryptographic hash function such as SHA-1, Whirlpool, or Tiger is used for the hashing. If the hash tree only needs to protect against unintentional damage, much less secure checksums such as CRCs can be used.
In the top of a hash tree there is a top hash (or root hash or master hash). Before downloading a file on a p2p network, in most cases the top hash is acquired from a trusted source, for instance a friend or a web site that is known to have good recommendations of files to download. When the top hash is available, the hash tree can be received from any non-trusted source, like any peer in the p2p network. Then, the received hash tree is checked against the trusted top hash, and if the hash tree is damaged or fake, another hash tree from another source will be tried until the program finds one that matches the top hash.
The main difference from a hash list is that one branch of the hash tree can be downloaded at a time and the integrity of each branch can be checked immediately, even though the whole tree is not available yet. For example, in the picture the integrity of data block 2 can be verified immediately if the tree already contains hash 0-0 and hash 1 by hashing the data block and iteratively combining the result with hash 0-0 and then hash 1 and finally comparing the result with the top hash. Similarly, the integrity of data block 3 can be verified if the tree already has hash 1-1 and hash 0. This can be an advantage since it is efficient to split files up in very small data blocks so that only small blocks have to be redownloaded if they get damaged. If the hashed file is very big, such a hash tree or hash list becomes fairly big. But if it is a tree, one small branch can be downloaded quickly, the integrity of the branch can be checked, and then the downloading of data blocks can start.
There are several additional tricks, benefits and details regarding hash trees. See the references and external links below for more in-depth information.
[edit]Tiger tree hash

The Tiger tree hash is a widely used form of hash tree. It uses a binary hash tree (two child nodes under each node), usually has a data block size of 1024-bytes and uses the cryptographically secure Tiger hash.
Tiger tree hashes are used in the Gnutella, Gnutella2, and Direct Connect P2P file sharing protocols and in file sharing applications such as Phex, BearShare, LimeWire, Shareaza, DC++[5] and Valknut.[citation needed]
[edit]See also

Hash table
Hash trie
Linked Timestamping
[edit]References

Merkle tree patent 4,309,569 – Explains both the hash tree structure and the use of it to handle many one-time signatures.
Tree Hash EXchange format (THEX) – A detailed description of Tiger trees.
Efficient Use of Merkle Trees – RSA labs explanation of the original purpose of Merkle trees: To handle many Lamport one-time signatures.
^ Jeff Bonwick's Blog ZFS End-to-End Data Integrity
^ Google Wave Federation Protocol Wave Protocol Verification Paper
^ "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." http://www.aosabook.org/en/nosql.html
^ R. C. Merkle, A digital signature based on a conventional encryption function, Crypto '87
^ "DC++'s feature list"
[edit]External links

http://www.codeproject.com/cs/algorithms/thexcs.asp – Tiger Tree Hash (TTH) source code in C# – by Gil Schmidt
http://sourceforge.net/projects/tigertree/ – Tiger Tree Hash (TTH) implementations in C and Java
RHash, an open source command-line tool, which can calculate TTH and magnet links with TTH.
"Series of mini-lectures about cryptographic hash functions"; includes application in time-stamping and provable security; by A. Buldas, 2011.
v t e
Cryptography
History of cryptography Cryptanalysis Cryptography portal Outline of cryptography
Symmetric-key algorithm Block cipher Stream cipher Public-key cryptography Cryptographic hash function Message authentication code Random numbers Steganography
[hide] v t e
Trees in computer science
Binary trees
Binary search tree (BST) Cartesian tree Top tree T-tree
Self-balancing binary search trees
AA tree AVL tree LLRB tree Red–black tree Scapegoat tree Splay tree Treap
B-trees
B+ tree B*-tree Bx-tree UB-tree 2-3 tree 2-3-4 tree (a,b)-tree Dancing tree Htree
Tries
Suffix tree Radix tree Ternary search tree X-fast trie Y-fast trie
Binary space partitioning (BSP) trees
Quadtree Octree k-d tree Implicit k-d tree vp-tree
Non-binary trees
Exponential tree Fusion tree Interval tree PQ tree Range tree SPQR tree Van Emde Boas tree
Spatial data partitioning trees
R-tree R+ tree R* tree X-tree M-tree Segment tree Hilbert R-tree Priority R-tree
Other trees
Heap Hash tree Finger tree Metric tree Cover tree BK-tree Doubly chained tree iDistance Link-cut tree Fenwick tree
View page ratings
Rate this page
What's this?
Trustworthy
Objective
Complete
Well-written
I am highly knowledgeable about this topic (optional)

Submit ratings
Categories: Error detection and correctionCryptographic hash functionsHashingTrees (data structures)
واژه های قبلی و بعدی
واژه های همانند
هیچ واژه ای همانند واژه مورد نظر شما پیدا نشد.
نظرهای کاربران
نظرات ابراز شده‌ی کاربران، بیانگر عقیده خود آن‌ها است و لزوماً مورد تأیید پارسی ویکی نیست.
برای نظر دادن ابتدا باید به سیستم وارد شوید. برای ورود به سیستم روی کلید زیر کلیک کنید.