Exemplo n.º 1
0
keys = [int(key, 16) for key in sys.argv[1].split()]
numTraces = int(sys.argv[2])
numBits = int(sys.argv[3])
ptextFile = sys.argv[4]
tracesFile = sys.argv[5]
duplication = int(sys.argv[6])
parallelism = int(sys.argv[7])
algorithm = sys.argv[8]

f = open(ptextFile, 'r')
f1 = open(tracesFile, 'r')

if algorithm == 'Algo1':

    dpa = AlgoDPA(keys, numTraces, numBits, duplication, parallelism)

elif algorithm == 'nlf':
    
    dpa = NLFDPA(keys, numTraces, numBits, duplication, parallelism)

##########################################################
## Generates Synthetic Traces Based On Prediction Model ##
##########################################################
dpa.doSimulation(f)

dpa.findLeakage(f1, peaks=0, index=None)

correlations = dpa.attackSamples(dpa.peaks)
#correlations = dpa.attackPeaks(dpa.peaks)
#correlations = dpa.attackSelectedPeaks(dpa.peaks, 110)
from AlgoDPA import *
import sys, sqlite3

if len(sys.argv) < 5:
    print 'Usage: <keys> <num_traces> <num_bits> <ptext_file> <traces_file>'
    exit()

keys = [int(key, 16) for key in sys.argv[1].split()]
numTraces = int(sys.argv[2])
numBits = int(sys.argv[3])
ptextFile = sys.argv[4]
tracesFile = sys.argv[5]

dpa = AlgoDPA(keys[0], numTraces, numBits)

print 'reading files..'
f = open(ptextFile, 'r')

for j, line in enumerate(f):
    if j == numTraces:
        print 'done with simulations...'
	break
    if j%100 == 0 and j!=0:  print 'Generating Simulation for '+str(j)+'th plain-text...'
    ptext = int(line, 2)
    dpa.generatePowerSimulationModel1(ptext)

f1 = open(tracesFile, 'r')

print 'finding peak values...'
peaks = dpa.findPeaks(f1)
print 'attacking...'
Exemplo n.º 3
0
log.addHandler(ch)
log.addHandler(fh)

log.setLevel(logging.INFO)

f = open(ptextFile, 'r')

try:
    dpa = pickle.load(open(sys.argv[9], 'rb'))
except (IOError, IndexError) as e:
    if duplication == 1:
        keys = [keys[0]]

    if algorithm == 'Algo1':

        dpa = AlgoDPA(keys, numTraces, numBits, duplication, parallelism)

#    elif algorithm == 'sbox1':
	
#        dpa = Sbox1DPA(keys, numTraces, duplication)

    elif algorithm == 'nlf':
    
        dpa = NLFDPA(keys, numTraces, numBits, duplication, parallelism)

    dpa.doSimulation(f) 


dpa.computeDeltas()

f1 = open(tracesFile, 'r')
Exemplo n.º 4
0
import sys
import matplotlib.pyplot as plt

sys.path.append('/home/barberkn/research/attack/Algo1/scripts')

from AlgoDPA import *

keys = [int(sys.argv[1], 16)]

numBits = int(sys.argv[2])
ptextFile = sys.argv[3]
leakageFile = sys.argv[4]
duplication = int(sys.argv[5])
parallelism = int(sys.argv[6])

dpa = AlgoDPA(keys, 1, numBits, duplication, parallelism)

dpa.loadLeakage(open(leakageFile, 'r'))

f = open(ptextFile, 'r')

ptext = f.readline().strip()

chosenKey = None
numTraces = 1
attacks = {}
keyCorrelations = []

keys = dpa.unformatKey(keys)

while ptext != '' and numTraces <= 250: #and chosenKey != keys: