درخت درهمسازی
درخت های درهم سازی (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.