33 |
|
|
34 |
def reyzin(h,b,t,k): |
def reyzin(h,b,t,k): |
35 |
return 1, b, k*h, t*h, h, t, 1, 1+k |
return 1, b, k*h, t*h, h, t, 1, 1+k |
36 |
|
def reyzin_merkled(h, b, t, k): |
37 |
|
return 1, b, k*ceil(log2(t)), h, h, t, 1, 1 + k + ceil(log2(t)) |
38 |
|
|
39 |
def times(j, S): |
def times(j, S): |
40 |
return (j*S[0], S[1], S[2], j*S[3], S[4], j*S[5], S[6], S[7]) |
return (j*S[0], S[1], S[2], j*S[3], S[4], j*S[5], S[6], S[7]) |
79 |
|
|
80 |
schemes = [] |
schemes = [] |
81 |
|
|
82 |
|
def scheme(p, n, s): |
83 |
|
if p: |
84 |
|
print n |
85 |
|
printscheme(s) |
86 |
|
schemes.append((n,s)) |
87 |
|
|
88 |
if __name__ == '__main__': |
if __name__ == '__main__': |
89 |
for t in range(1, 40): |
ts = [] |
90 |
|
ts.extend(range(1, 50)) |
91 |
|
ts.append(80) |
92 |
|
ts.append(160) |
93 |
|
for t in ts: |
94 |
n = ceil(160.0 / t ) |
n = ceil(160.0 / t ) |
95 |
#print "\n N = ",t, " n = ", n |
#print "\n N = ",t, " n = ", n |
96 |
|
|
97 |
#print "MW:" |
#print "MW:" |
98 |
for mn in range(1,17): |
for mn in range(1,17): |
99 |
s = (key_boosting(t, |
scheme(0, |
100 |
|
"KB%(t)sM%(n)sMW(160,160,%(mn)s)" % locals(), |
101 |
|
key_boosting(t, |
102 |
merkle_hashtree(n, |
merkle_hashtree(n, |
103 |
merkle_winternitz(160, 160, mn)))) |
merkle_winternitz(160, 160, mn)))) |
|
schemes.append( ( |
|
|
"KB%(t)sM%(n)sMW(160,160,%(mn)s)" % locals(), |
|
|
s |
|
|
)) |
|
104 |
#printscheme(s) |
#printscheme(s) |
105 |
s = (key_boosting(t, |
scheme(0, |
106 |
|
"KB%(t)sM%(n)sBM(160,29)" % locals(), |
107 |
|
key_boosting(t, |
108 |
merkle_hashtree(n, |
merkle_hashtree(n, |
109 |
bleichenbacher_maurer(160, 29)))) |
bleichenbacher_maurer(160, 29)))) |
110 |
schemes.append( ( |
|
111 |
"KB%(t)sM%(n)sBM(160,29)" % locals(), |
scheme(1, |
112 |
s |
"KB%(t)sM%(n)sRZ(160,160,168,69)" % locals(), |
113 |
)) |
key_boosting(t, |
114 |
|
merkle_hashtree(n, |
115 |
#print "Lamport:" |
reyzin(160, 160, 168, 69)))) |
116 |
s = (key_boosting(t, |
|
117 |
|
for rt, rk in ( |
118 |
|
(256, 42), |
119 |
|
(512, 30), |
120 |
|
(1024, 24), |
121 |
|
(2048, 21), |
122 |
|
(4096, 18), |
123 |
|
(8192, 16), |
124 |
|
(16384, 15)): |
125 |
|
scheme(1, |
126 |
|
"KB%(t)sM%(n)sRZM(160,160,8192,16)" % locals(), |
127 |
|
key_boosting(t, |
128 |
|
merkle_hashtree(n, |
129 |
|
reyzin_merkled(160, 160, rt, rk)))) |
130 |
|
|
131 |
|
scheme(0, |
132 |
|
"KB%(t)sM%(n)sL(160,160)" % locals(), |
133 |
|
key_boosting(t, |
134 |
merkle_hashtree(n, |
merkle_hashtree(n, |
135 |
lamport(160, 160)))) |
lamport(160, 160)))) |
|
schemes.append( ( |
|
|
"KB%(t)sM%(n)sL(160,160)" % locals(), |
|
|
s |
|
|
)) |
|
|
#printscheme(s) |
|
136 |
|
|
137 |
f = open("m.dat", "w") |
f = open("m.dat", "w") |
138 |
for s in schemes: |
for s in schemes: |
141 |
|
|
142 |
for criteria in ( |
for criteria in ( |
143 |
(1, 0), |
(1, 0), |
144 |
|
(1, 0.00001), |
145 |
|
(1, 0.0001), |
146 |
|
(1, 0.001), |
147 |
(1, 0.01), |
(1, 0.01), |
148 |
(1, 0.1), |
(1, 0.1), |
149 |
(1, 1), |
(1, 1), |
150 |
(1, 10), |
(1, 10), |
151 |
(1, 100), |
(1, 100), |
152 |
(1, 1000)): |
(1, 110), |
153 |
|
(1, 120), |
154 |
|
(1, 130), |
155 |
|
(1, 140), |
156 |
|
(1, 150), |
157 |
|
(1, 160), |
158 |
|
(1, 170), |
159 |
|
(1, 180), |
160 |
|
(1, 190), |
161 |
|
(1, 200), |
162 |
|
(1, 300), |
163 |
|
(1, 400), |
164 |
|
(1, 500), |
165 |
|
(1, 600), |
166 |
|
(1, 700), |
167 |
|
(1, 800), |
168 |
|
(1, 900), |
169 |
|
(1, 1000), |
170 |
|
(1, 10000), |
171 |
|
(1, 100000), |
172 |
|
(1, 1000000L), |
173 |
|
(1, 10000000L), |
174 |
|
(1, 100000000L), |
175 |
|
(0, 1)): |
176 |
m = None |
m = None |
177 |
mv = 0 |
mv = 0 |
178 |
def critf(s): |
def critf(s): |
179 |
return criteria[0] * log2(s[1][2]) + \ |
return criteria[0] * (s[1][2]) + \ |
180 |
criteria[1] * log10(sum(s[1][5:])) |
criteria[1] * (sum(s[1][5:])) |
181 |
for s in schemes: |
for s in schemes: |
182 |
if m == None or critf(s)<mv: |
if m == None or critf(s)<mv: |
183 |
m = s |
m = s |