Ashes17b / DW

Bachelor's diploma work in FPMI, BSU
0 stars 0 forks source link

Реализация Sphincs+, Gravity-Sphincs #22

Closed agievich closed 4 years ago

agievich commented 4 years ago

Продолжить реализацию Sphincs и реализовать Sphincs+, Gravity-Sphincs.

Провести в ДР сравнительный анализ реализаций.

Продумать вопросы хранения деревьев подписывающей стороной. Можно ли хранить только часть дерева?

Ashes17b commented 4 years ago

"По поводу хранение деревьев подписывающей стороной. Можно ли хранить только часть дерева?"

Если, учитывая корень Меркля R, мы хотим доказать, что блок данных 𝐷1(в нашем случае подпись) принадлежит множеству D ∈ {𝐷1, ... ,𝐷𝑁} представленный корнем 𝑅, мы можем выполнить доказательство Меркла следующим образом:

  1. Получаем корень Меркла 𝑅 из надежного источника(в нашем случае блокчейн).
  2. Получить путь Меркла A из блокчейна. В этом случае A - это набор хэшей. A = {𝑁(2,2), 𝑁(3,4), 𝑁(5,8)}
  3. Вычисляем доказательство Меркля используя D1 и путь A, следующим способом: 3.1. Хэшируем блок данных для получения: 𝑁(1,1) = 𝐻(𝐷1). 3.2. Конкатенируем с 𝑁(2,2) и хэшируем снова: 𝑁(1,2) = 𝐻(𝑁(1,1) ∥ 𝑁(2,2)). 3.3. Конкатенируем с 𝑁(3,4) и хэшируем снова: 𝑁(1,4) = 𝐻(𝑁(1,2) ∥ 𝑁(3,4)). 3.4. Конкатенируем с 𝑁(5,8) и хэшируем для получения корня: 𝑁(1,8) = 𝐻(𝑁(1,4) ∥ 𝑁(5,8)); 𝑅′ = 𝑁(1,8); 3.5. Сравниваем полученный корень и корень из условия: Если, они равны, существование 𝐷1 в дереве и, следовательно, набор данных D подтверждается. В ином случае, доказательство не удалось, и 𝐷1 не подтвержден, чтобы быть в составе D.

photo_2020-05-24_20-42-21