Рейтинг:2

Верны ли мои расчеты параметров WOTS?

флаг ca

Я читаю документ WOTS+, но у меня возникли проблемы с его обозначениями и особенно с задействованными единицами измерения. Например, в моей интерпретации параметры п=11, ш=16 и м=256 привести к квантовому уровню безопасности около 81 биты, с 992 байта длина подписи, но это выглядит неправильно.

Насколько мне известно, я сделал следующий скрипт для вывода длины открытого ключа и подписи, а также уровня безопасности как для WOTS+, так и для WOTS.

ВОТС+

импортировать математику

n = 16 # параметр безопасности, в байтах
w = 16 # параметр w
m = 256 # длина сообщения в битах

l1 = math.ceil(m / math.log2(w))
l2 = math.floor(math.log2(l1*(w-1))/math.log2(w))+1
л = л1 + л2

# формулы из бумаги
pub_len = (l + w - 1) * n + 8 # длина открытого ключа в байтах
sig_len = l * n # длина подписи в байтах
sec_lvl = n*8 - math.log2(w*w*l + w) # квантовый уровень безопасности в битах

распечатать("уотс+")
print("pub_len: " + ул(pub_len))
print("sig_len: " + ул(sig_len))
print("sec_lvl: " + ул(sec_lvl))

ВОТС

импортировать математику

n = 256 # параметр безопасности, в битах
w = 16 # бит на единицу подписи
m = 256 # длина сообщения в битах

l1 = н / ш
l2 = math.ceil((math.floor(math.log2(l1))+1+w)/w)
л = л1 + л2

# возможно неправильно
pub_len = m * l1 / 8 # длина открытого ключа в байтах
sig_len = m * l / 8 # длина подписи в байтах
sec_lvl = m / 3 # квантовый уровень безопасности в битах

распечатать("вот")
print("pub_len: " + ул(pub_len))
print("sig_len: " + ул(sig_len))
print("sec_lvl: " + ул(sec_lvl))

Верны ли мои расчеты?

poncho avatar
флаг my
Что вы подразумеваете под «80 битами постквантовой безопасности»? Вы имеете в виду операции $2^{80}$ на квантовом компьютере? Если это так, вам нужно принять во внимание Гровера, который довольно сложно определить количественно - наивное приложение предполагает 160-битный хэш; однако Гроверу потребовалось бы $2^{80}$ последовательных хеш-вычислений, чтобы найти 160-битный прообраз с вычислением $2^{80}$, что нереально...
флаг ca
@poncho да, я имею в виду выполнение 2 ^ 80 операций на квантовом компьютере. Честно говоря, я просто хотел бы убедиться, что понимаю формулы в статье. Я обновил вопрос, чтобы задать его более прямо.
Рейтинг:0
флаг in

Расчеты WOTS+ во многом верны. Только уровень защищенности - это "просто" защищенность от обычных противников. Правильное уравнение для квантовых противников должно быть

sec_lvl = n*8/2 - math.log2(w*w*l + w) # квантовый уровень безопасности в битах   

Поскольку квантовые компьютеры могут находить прообразы и вторые прообразы с $2^{8n/2}$ запросы.

В расчетах WOTS

pub_len = m * l1 / 8 # длина открытого ключа в байтах 
sig_len = m * l / 8 # длина подписи в байтах

должно быть

pub_len = n * l # длина открытого ключа в байтах 
sig_len = n * l # длина подписи в байтах

(подписи, секретный и открытый ключи состоят из l цепочек значений, состоящих из n битов).

В противном случае все кажется правильным.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.