/[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.2 by tjl, Sun May 18 06:57:58 2003 UTC revision 1.3 by tjl, Sun May 18 07:52:24 2003 UTC
# Line 12  def merkle_winternitz(h, b, n): Line 12  def merkle_winternitz(h, b, n):
12              fraction(b*(2L**n-1)+n, n),              fraction(b*(2L**n-1)+n, n),
13              fraction(b*(2L**n-1)+n, n))              fraction(b*(2L**n-1)+n, n))
14    
15    def bleichenbacher_maurer(h, n):
16        return (1, log(51)/log(2) * n,
17                3*(n+1)*h, h, h,
18                9*n+2, 0, 9*n+2)
19    
20  def merkle_hashtree(n, S):  def merkle_hashtree(n, S):
21      return (2L**n * S[0], S[1],      return (2L**n * S[0], S[1],
22                  S[2] + S[3] + n * S[4],                  S[2] + S[3] + n * S[4],
# Line 42  def log2(x): Line 47  def log2(x):
47    
48  def printscheme(S):  def printscheme(S):
49      S = [unfract(s) for s in S]      S = [unfract(s) for s in S]
50        #print S
51      print log(S[0]) / log(2), S[1], \      print log(S[0]) / log(2), S[1], \
52          S[2]/8, S[3] / 8 ,  \          S[2]/8, S[3] / 8 ,  \
53          S[4], \          S[4], \
54          log(S[5])/log(10), \          log(S[5]+1)/log(10), \
55          log(S[6])/log(10), \          log(S[6]+1)/log(10), \
56          log(S[7])/log(10)          log(S[7]+1)/log(10)
57    
58  schemes = []  schemes = []
59    
# Line 66  if 1: Line 72  if 1:
72                  s                  s
73              ))              ))
74              #printscheme(s)              #printscheme(s)
75            s = (key_boosting(t,
76                    merkle_hashtree(n,
77                    bleichenbacher_maurer(160, 29))))
78            schemes.append( (
79                "KB%(t)sM%(n)sBM(160,29)" % locals(),
80                s
81            ))
82                    
83          #print "Lamport:"          #print "Lamport:"
84          s = (key_boosting(t,          s = (key_boosting(t,
85                  merkle_hashtree(n,                  merkle_hashtree(n,
# Line 76  if 1: Line 90  if 1:
90          ))          ))
91          #printscheme(s)          #printscheme(s)
92    
93  for criteria in (      for criteria in (
94          (1, 0),              (1, 0),
95          (1, 10),              (1, 10),
96          (1, 100),              (1, 100),
97          (1, 1000)):              (1, 1000)):
98      m = None          m = None
99      mv = 0          mv = 0
100      def critf(s):          def critf(s):
101          return criteria[0] * log2(s[1][2])   + \              return criteria[0] * log2(s[1][2])   + \
102                  criteria[1] * log10(sum(s[1][5:]))                      criteria[1] * log10(sum(s[1][5:]))
103      for s in schemes:          for s in schemes:
104          if m == None or critf(s)<mv:              if m == None or critf(s)<mv:
105              m = s                  m = s
106              mv = critf(s)                  mv = critf(s)
107      print "For ", criteria, m[0]          print "For ", criteria, m[0]
108      printscheme(m[1])          printscheme(m[1])
109    
110  if 0:  if 0:
111      printscheme(lamport(160,160))      printscheme(lamport(160,160))
112      for n in range(1, 17):      for n in range(1, 17):
113          print "\nn = ",n          print "\nn = ",n
114          printscheme(merkle_winternitz(160,160,n))          printscheme(merkle_winternitz(160,160,n))
115        for n in range(26, 32):
116            print "\nn = ",n
117            printscheme(bleichenbacher_maurer(160,n))

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

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