Citesc lucrarea WOTS+, dar am niște probleme cu notarea lui și mai ales cu unitățile implicate. De exemplu, după interpretarea mea, parametrii n=11
, w=16
și m=256
rezultă într-un nivel de securitate cuantic de aproximativ 81
biți, cu a 992 de octeți
lungimea semnăturii, dar pare incorectă.
Din câte știu, am realizat următorul script pentru a scoate cheia publică și lungimea semnăturii și nivelul de securitate, atât pentru WOTS+, cât și pentru WOTS.
WOTS+
import matematică
n = 16 # parametru de securitate, în octeți
w = 16 # w parametru
m = 256 # lungime mesaj, în biți
l1 = math.ceil(m / math.log2(w))
l2 = math.floor(math.log2(l1*(w-1))/math.log2(w))+1
l = l1 + l2
# formule din hârtie
pub_len = (l + w - 1) * n + 8 # lungimea cheii publice în octeți
sig_len = l * n # lungimea semnăturii în octeți
sec_lvl = n*8 - math.log2(w*w*l + w) # nivel de securitate cuantică în biți
print("wots+")
print("pub_len: " + str(pub_len))
print("sig_len: " + str(sig_len))
print("sec_lvl: " + str(sec_lvl))
WOTS
import matematică
n = 256 # parametru de securitate, în biți
w = 16 # biți per unitate de semnare
m = 256 # lungime mesaj, în biți
l1 = n/w
l2 = math.ceil((math.floor(math.log2(l1))+1+w)/w)
l = l1 + l2
# probabil greșit
pub_len = m * l1 / 8 # lungimea cheii publice în octeți
sig_len = m * l / 8 # lungime semnătură în octeți
sec_lvl = m / 3 # nivel de securitate cuantică în biți
print("wots")
print("pub_len: " + str(pub_len))
print("sig_len: " + str(sig_len))
print("sec_lvl: " + str(sec_lvl))
Sunt corecte calculele mele?