/[gzz]/manuscripts/Sigs/poss.py
ViewVC logotype

Diff of /manuscripts/Sigs/poss.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by tjl, Sun May 18 21:11:59 2003 UTC revision 1.9 by tjl, Mon May 19 11:47:04 2003 UTC
# Line 33  def bleichenbacher_maurer(h, n): Line 33  def bleichenbacher_maurer(h, n):
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])
# Line 77  def printscheme(S): Line 79  def printscheme(S):
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:
# Line 117  if __name__ == '__main__': Line 141  if __name__ == '__main__':
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

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26