Jump to content

Дерево Меркла

Послушайте эту статью
(Перенаправлено с хэш-дерева Меркла )
Пример двоичного хеш-дерева. Хэши 0-0 и 0-1 — это хеш-значения блоков данных L1 и L2 соответственно, а хэш 0 — это хэш конкатенации хэшей 0-0 и 0-1.

В криптографии и информатике или хеш-дерево дерево Меркла — это дерево , в котором каждый «листовой» узел помечен криптографическим хешем блока данных, а каждый узел, не являющийся листом (называемый ветвью , внутренним узлом или inode ) помечен криптографическим хешем меток его дочерних узлов. Хэш-дерево позволяет эффективно и безопасно проверять содержимое большой структуры данных . Хэш-дерево — это обобщение хэш-списка и хэш-цепочки .

Чтобы продемонстрировать, что листовой узел является частью данного двоичного хэш-дерева, необходимо вычислить количество хэшей, пропорциональное логарифму количества конечных узлов в дереве. [ 1 ] И наоборот, в хеш-списке число пропорционально количеству самих конечных узлов. Таким образом, дерево Меркла является эффективным примером схемы криптографических обязательств , в которой корень дерева рассматривается как обязательство, а конечные узлы могут быть выявлены и признаны частью исходного обязательства. [ 2 ]

Концепция хеш-дерева названа в честь Ральфа Меркла , который запатентовал ее в 1979 году. [ 3 ] [ 4 ]

Использование

[ редактировать ]

Хэш-деревья можно использовать для проверки любых данных, хранящихся, обрабатываемых и передаваемых между компьютерами. Они могут помочь гарантировать, что блоки данных , полученные от других узлов в одноранговой сети, будут получены неповрежденными и неизмененными, и даже проверить, что другие узлы не лгут и не отправляют поддельные блоки.

Хэш-деревья используются в:

Были сделаны предложения использовать хэш-деревья в доверенных вычислительных системах. [ 11 ]

Первоначальная реализация деревьев Меркла в Биткойне Сатоши Накамото применяет этап сжатия хэш-функции в чрезмерной степени, что смягчается за счет использования быстрых деревьев Меркла. [ 12 ]

Хэш-дерево — это дерево хешей , в котором листья (т. е. листовые узлы, иногда также называемые «листами») представляют собой хэши блоков данных , например, в файле или наборе файлов. Узлы, расположенные выше в дереве, представляют собой хэши соответствующих дочерних элементов. Например, на изображении выше хэш 0 является результатом хеширования конкатенации хеша 0-0 и хеша 0-1 . То есть хэш 0 = хэш ( хеш 0-0 + хеш 0-1 ), где «+» обозначает конкатенацию.

Большинство реализаций хэш-дерева являются двоичными (два дочерних узла в каждом узле), но они с таким же успехом могут использовать гораздо больше дочерних узлов в каждом узле.

Обычно криптографическая хеш-функция, такая как SHA-2 для хеширования используется . Если хеш-дереву необходимо защитить только от непреднамеренного повреждения, незащищенные контрольные суммы, такие как CRC можно использовать .

В верхней части хеш-дерева находится верхний хеш (или корневой хэш , или главный хэш ). Перед загрузкой файла в сети P2P в большинстве случаев верхний хэш получается из надежного источника, например, от друга или веб-сайта, который, как известно, имеет хорошие рекомендации по файлам для загрузки. Когда доступен верхний хеш, хэш-дерево можно получить из любого недоверенного источника, например, от любого узла в сети P2P. Затем полученное хеш-дерево сверяется с доверенным верхним хешем, и если хеш-дерево повреждено или поддельно, будет проверено другое хэш-дерево из другого источника, пока программа не найдет то, которое соответствует верхнему хешу. [ 13 ]

Основное отличие от хэш-списка заключается в том, что за раз можно загрузить одну ветвь хэш-дерева и сразу же проверить целостность каждой ветки, даже если все дерево еще не доступно. Например, на рисунке целостность блока данных L2 можно проверить сразу, если дерево уже содержит хэш 0-0 и хэш 1, хешируя блок данных и итеративно объединяя результат с хешем 0-0 , затем хэшем 1 и, наконец, сравнение результата с верхним хешем . Аналогично, целостность блока данных L3 можно проверить, если дерево уже имеет хэш 1-1 и хеш 0 . Это может быть преимуществом, поскольку эффективно разбивать файлы на очень маленькие блоки данных, так что в случае повреждения необходимо повторно загружать только небольшие блоки. Если хешированный файл большой, такой хэш-список или хэш-цепочка становится довольно большим. Но если это дерево, то можно быстро загрузить одну небольшую ветку, проверить целостность ветки и затем начать загрузку блоков данных. [ нужна ссылка ]

Вторая атака прообраза

[ редактировать ]

Корень хеша Меркла не указывает глубину дерева, что позволяет провести атаку второго прообраза , при которой злоумышленник создает документ, отличный от оригинала, который имеет тот же корень хэша Меркла. В приведенном выше примере злоумышленник может создать новый документ, содержащий два блока данных, где первый — это хеш 0-0 + хеш 0-1 , а второй — хеш 1-0 + хэш 1-1 . [ 14 ] [ 15 ]

Одно простое исправление определено в «Прозрачности сертификатов» : при вычислении хэшей конечных узлов к хеш-данным добавляется байт 0x00, а при вычислении внутренних хешей узлов добавляется байт 0x00. [ 13 ] Ограничение размера хеш-дерева является обязательным условием некоторых формальных доказательств безопасности и помогает сделать некоторые доказательства более надежными. Некоторые реализации ограничивают глубину дерева, используя префиксы глубины хеш-дерева перед хэшами, поэтому любая извлеченная хэш-цепочка определяется как действительная только в том случае, если префикс уменьшается на каждом шаге и остается положительным при достижении листа.

Хэш тигрового дерева

[ редактировать ]

Хэш тигрового дерева — широко используемая форма хеш-дерева. Он использует двоичное хэш-дерево (два дочерних узла под каждым узлом), обычно имеет размер блока данных 1024 байта и использует хэш Tiger . [ 16 ]

используются хеши тигрового дерева В Gnutella , [ 17 ] Gnutella2 и Direct Connect P2P. Протоколы обмена файлами [ 18 ] и в приложениях для обмена файлами, таких как Phex , [ 19 ] BearShare , LimeWire , Shareaza , DC++ [ 20 ] и gtk-gnutella . [ 21 ]

См. также

[ редактировать ]
  1. ^ Беккер, Георг (18 июля 2008 г.). «Схемы подписей Меркла, деревья Меркла и их криптоанализ» (PDF) . Рурский университет в Бохуме. п. 16. Архивировано из оригинала (PDF) 22 декабря 2014 г. Проверено 20 ноября 2013 г.
  2. ^ «Справочник по прикладной криптографии» . cacr.uwaterloo.ca . Раздел 13.4.1 . Проверено 7 марта 2024 г.
  3. ^ Меркл, Р.К. (1988). «Цифровая подпись, основанная на традиционной функции шифрования». Достижения в криптологии – КРИПТО '87 . Конспекты лекций по информатике. Том. 293. стр. 369–378. дои : 10.1007/3-540-48184-2_32 . ISBN  978-3-540-18796-7 .
  4. ^ Патент США 4309569 , Ральф Меркл, «Метод предоставления цифровых подписей», опубликован 5 января 1982 г., передан Попечительскому совету Стэнфордского младшего университета Леланда.  
  5. ^ Бонвик, Джефф (08 декабря 2005 г.). «Сквозная целостность данных ZFS» . blogs.oracle.com . Архивировано из оригинала 3 апреля 2012 года . Проверено 19 сентября 2013 г.
  6. ^ Ликай Лю. «Сопротивление Битрота на одном приводе» . likai.org .
  7. ^ «Общая проверяемая федерация» . Протокол Google Wave . Архивировано из оригинала 08 апреля 2018 г. Проверено 9 марта 2017 г.
  8. ^ Коблиц, Нил; Менезес, Альфред Дж. (январь 2016 г.). «Криптовалюта, криптовалюты и криптоконтракты». Проекты, коды и криптография . 78 (1): 87–102. CiteSeerX   10.1.1.701.8721 . дои : 10.1007/s10623-015-0148-5 . S2CID   16594958 .
  9. ^ Долстра, Э. Чисто функциональная модель развертывания программного обеспечения. Кандидатская диссертация, Факультет естественных наук, Утрехт, Нидерланды. Январь 2006. стр. 21. ISBN   90-393-4130-3 .
  10. ^ Адам Маркус. «Экосистема NoSQL» . aosabook.org . Когда реплика не работает в течение длительного периода времени или машина, хранящая подсказки для недоступной реплики, также выходит из строя, реплики должны синхронизироваться друг с другом. В этом случае Кассандра и Риак реализуют процесс, вдохновленный Dynamo, называемый антиэнтропией. В антиэнтропии реплики обмениваются деревьями Меркла, чтобы идентифицировать части своих реплицируемых диапазонов ключей, которые не синхронизированы. Дерево Меркла представляет собой иерархическую проверку хеша: если хэш по всему пространству ключей не одинаков между двумя репликами, они будут обмениваться хэшами все меньших и меньших частей реплицированного пространства ключей до тех пор, пока не будут идентифицированы несинхронизированные ключи. Этот подход уменьшает ненужную передачу данных между репликами, которые содержат в основном схожие данные.
  11. ^ Килиан, Дж. (1995). «Улучшенные эффективные аргументы (предварительная версия)» (PDF) . КРИПТО . дои : 10.1007/3-540-44750-4_25 .
  12. ^ Марк Фриденбах: Быстрые деревья Меркла
  13. ^ Перейти обратно: а б Лори, Б.; Лэнгли, А.; Каспер, Э. (июнь 2013 г.). «Прозрачность сертификата» . IETF : RFC6962. дои : 10.17487/rfc6962 .
  14. ^ Елена Андреева; Шарль Буйаге; Орр Данкельман; Джон Келси (январь 2009 г.). «Атака стада, второго прообраза и троянских сообщений за пределами Меркле-Дамгорда». Избранные области криптографии . Конспекты лекций по информатике. Том. 5867. САК. стр. 393–414. дои : 10.1007/978-3-642-05445-7_25 . ISBN  978-3-642-05443-3 .
  15. ^ Елена Андреева; Шарль Буйаге; Пьер-Ален Фуке; Джонатан Дж. Хох; Джон Келси; Ади Шамир; Себастьян Циммер (2008). «Вторые атаки прообразов на сглаживаемые хеш-функции». В Смарт, Найджел (ред.). Достижения в криптологии – EUROCRYPT 2008 . Конспекты лекций по информатике. Том. 4965. Стамбул, Турция. стр. 270–288. дои : 10.1007/978-3-540-78967-3_16 . ISBN  978-3-540-78966-6 . S2CID   12844017 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  16. ^ Чапвеске, Дж.; Мор, Г. (4 марта 2003 г.). «Формат Tree Hash EXchange (THEX)» . Архивировано из оригинала 3 августа 2009 г.
  17. ^ «Ссылка на файл Tigertree.c» . Гтк-Гнутелла . Проверено 23 сентября 2018 г.
  18. ^ «Аудит: приложение P2P DirectConnect» . Симантек . Архивировано из оригинала 29 января 2015 года . Проверено 23 сентября 2018 г.
  19. ^ Арне Бабенхаузерхайде (7 января 2007 г.). «Выпущен Phex 3.0.0» . Фекс . Проверено 23 сентября 2018 г.
  20. ^ «Список функций DC++» . dcplusplus.sourceforge.net .
  21. ^ "Разработка" . ГТК-Гнутелла . Проверено 23 сентября 2018 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Послушайте эту статью ( 5 минут )
Продолжительность: 4 минуты 46 секунд.
Разговорная иконка Википедии
Этот аудиофайл был создан на основе редакции этой статьи от 17 сентября 2013 г. ( 17 сентября 2013 г. ) и не отражает последующие изменения.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0ac2b33f2c2896fa15146cf54d7fffe2__1722180360
URL1:https://arc.ask3.ru/arc/aa/0a/e2/0ac2b33f2c2896fa15146cf54d7fffe2.html
Заголовок, (Title) документа по адресу, URL1:
Merkle tree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)