Tôi đang đọc báo WOTS+, nhưng tôi gặp một số rắc rối với ký hiệu của nó và đặc biệt là các đơn vị liên quan. Ví dụ, theo diễn giải của tôi, các tham số n=11
, w=16
và m=256
dẫn đến mức độ bảo mật lượng tử khoảng 81
bit, với một 992 byte
chiều dài chữ ký, nhưng điều đó có vẻ không chính xác.
Theo hiểu biết tốt nhất của tôi, tôi đã tạo tập lệnh sau để xuất khóa công khai và độ dài chữ ký cũng như mức độ bảo mật cho cả WOTS+ và WOTS.
WOTS+
nhập toán
n = 16 # tham số bảo mật, tính bằng byte
w = 16 # tham số w
m = 256 # độ dài tin nhắn, tính bằng bit
l1 = math.ceil(m / math.log2(w))
l2 = math.floor(math.log2(l1*(w-1))/math.log2(w))+1
l = l1 + l2
# công thức từ giấy
pub_len = (l + w - 1) * n + 8 # độ dài khóa công khai tính bằng byte
sig_len = l * n # độ dài chữ ký theo byte
sec_lvl = n*8 - math.log2(w*w*l + w) # mức bảo mật lượng tử theo bit
in ("wot +")
print("pub_len: " + str(pub_len))
print("sig_len: " + str(sig_len))
in("sec_lvl: " + str(sec_lvl))
WOTS
nhập toán
n = 256 # tham số bảo mật, tính bằng bit
w = 16 # bit trên mỗi đơn vị ký
m = 256 # độ dài tin nhắn, tính bằng bit
l1 = n / w
l2 = math.ceil((math.floor(math.log2(l1))+1+w)/w)
l = l1 + l2
#chắc nhầm
pub_len = m * l1 / 8 # độ dài khóa công khai tính bằng byte
sig_len = m * l / 8 # độ dài chữ ký theo byte
sec_lvl = m / 3 # mức bảo mật lượng tử tính bằng bit
in ("wot")
print("pub_len: " + str(pub_len))
print("sig_len: " + str(sig_len))
in("sec_lvl: " + str(sec_lvl))
Tính toán của tôi có đúng không?