diff --git a/dpa.py b/dpa.py index 43b51e1..e53af7d 100755 --- a/dpa.py +++ b/dpa.py @@ -7,8 +7,8 @@ import matplotlib.pyplot as plt import binascii -TRACE_OFFSET = 0 -TRACE_LENGTH = 2400 +TRACE_OFFSET = 800 +TRACE_LENGTH = 1200 sbox = [99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22] @@ -57,7 +57,7 @@ def deriveKey(data,plaintexts): diffProfile = zeros(TRACE_LENGTH) for TRACE_NUM in range(0,data[0,:].size): hypothesis = sbox[plaintexts[BYTE_POSN,TRACE_NUM] ^ KEY_GUESS] - if bin(hypothesis).count("1") > 4: + if hypothesis % 2 == 1: group1[:] += data[:,TRACE_NUM] numGroup1 += 1 else: @@ -79,9 +79,17 @@ def deriveKey(data,plaintexts): r = deriveKey(data,plaintexts) plt.title("AES Power Leakage v Hypothesis Overview") plt.ylabel("Mean Power Leakage") - plt.ylabel("Hypothesis") + plt.xlabel("Key Hypothesis") plt.show() out = "" for i in range(0,16): out += "%02x " % int(r[i]) print "Done: %s" % out + out = "" + actualKey = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c] + out = "" + for i in range(0,16): + out += "%02x " % int(actualKey[i]) + print "Done: %s" % out + out = "" + diff --git a/fun/atmega-differential.png b/fun/atmega-differential.png new file mode 100644 index 0000000..8365a6a Binary files /dev/null and b/fun/atmega-differential.png differ diff --git a/fun/pic24f-freezer-resistoronly.png b/fun/pic24f-freezer-resistoronly.png new file mode 100644 index 0000000..e2e28c5 Binary files /dev/null and b/fun/pic24f-freezer-resistoronly.png differ diff --git a/fun/pic24f-freezer.png b/fun/pic24f-freezer.png new file mode 100644 index 0000000..9590cc9 Binary files /dev/null and b/fun/pic24f-freezer.png differ diff --git a/grab3.py b/grab3.py index 2a8d13c..9b589ae 100755 --- a/grab3.py +++ b/grab3.py @@ -7,9 +7,9 @@ import sys import serial -SAMPLE_RATE = 20E6 -NUM_SAMPLES = 50000 -NUM_CAPTURES = 400 +SAMPLE_RATE = 40E6 +NUM_SAMPLES = 5000 +NUM_CAPTURES = 10000 def encryptAndTrace(ps,in_string,fname): # print "ENCRYPT: %s" % in_string.rstrip()