From b7f82212c03c41c1d8be8330c58a41abd5d8f314 Mon Sep 17 00:00:00 2001 From: ccremers Date: Tue, 5 Jul 2005 09:54:00 +0000 Subject: [PATCH] - Some improvements. --- spdl/multiparty/multinsl-generator.py | 8 ++--- spdl/multiparty/test-variants.py | 49 ++++++++++++++++++++------- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/spdl/multiparty/multinsl-generator.py b/spdl/multiparty/multinsl-generator.py index 4eb6c7a..8177388 100755 --- a/spdl/multiparty/multinsl-generator.py +++ b/spdl/multiparty/multinsl-generator.py @@ -6,12 +6,12 @@ # # variant uses some bits: # bit mask meaning if set to '1' -# message type 1 -# 0 1 agents in reverse +# (message type 1) +# 0 1 nonces in reverse # 1 2 nonces after agents -# 2 4 nonces in reverse +# 2 4 agents in reverse # 3 8 interleaved variant -# message type 2 +# (message type 2) # 4 16 nonces in reverse in message 2 # import sys diff --git a/spdl/multiparty/test-variants.py b/spdl/multiparty/test-variants.py index a5cadb7..bcb9ecc 100755 --- a/spdl/multiparty/test-variants.py +++ b/spdl/multiparty/test-variants.py @@ -1,31 +1,56 @@ #!/usr/bin/python # # +# Idea: +# +# We test all variants [0..31] until we are sure they work. Thus, +# we slowly refine the tests. +# import commands -def testvariant(variant): +def testvariant(variant,P,runs): s = "./multinsl-generator.py" - s += " 4 %s" % (variant) - s += " | scyther -a -r5 -m2 --summary" - print s + s += " %i %s" % (P,variant) + s += " | scyther -a -r%i -m2 --summary" % runs + #s += " | scyther -a -r%i --summary" % runs + #print s s += " | grep \"failed:\"" out = commands.getoutput(s) if out == "": - print "Okay" + #print "Okay" return True else: - print out + #print out return False +def removeattacks (testlist, P, runs): + okaylist = [] + for v in testlist: + if testvariant (v, P, runs): + okaylist.append(v) + return okaylist + +def scan(testlist, P, runs): + print "Testing using P %i and %i runs." % (P,runs) + results = removeattacks (testlist, P, runs) + if len(results) < len(testlist): + attacked = [] + for i in range(0,len(testlist)): + if testlist[i] not in results: + attacked.append(testlist[i]) + print "Using P %i and %i runs, we find attacks on %s" % (P,runs, str(attacked)) + print "Therefore, we are left with %i candidates: " % (len(testlist)), results + + return results + def main(): - good = [] - for i in range (0,32): - print i - if testvariant (i): - good.append(i) + candidates = range(0,32) + for P in range(2,7): + for runs in range(P-1,P+2): + candidates = scan(candidates,P,runs) print print "Good variants:" - print good + print candidates main()