Browse Source

added speck papers

Hans Martin 3 years ago
parent
commit
b32a0ebd8f

BIN
paper/breaking-speck-using-cpa.pdf


BIN
paper/power-analysis-based-sidechannel-attacks.pdf


+ 0 - 60
simulation/speck_sim.py

@@ -1,60 +0,0 @@
-
-
-block_size = 64
-word_size = block_size >> 1 # 32
-key_size = 128
-key = 0xe3cda8f459e1f0cf
-alpha_shift = 8
-beta_shift = 3
-mod_mask = (2 ** word_size) - 1
-
-def simpleSpeck(plaintext):
-    right_key = key & mod_mask
-    right_plain = plaintext & mod_mask
-    left_plain = (plaintext >> word_size) & mod_mask
-
-    # Run Encryption Steps For Appropriate Number of Rounds
-
-    rs_x = ((left_plain << (word_size - alpha_shift)) + (right_plain >> alpha_shift)) & mod_mask
-
-    add_sxy = (rs_x + right_plain) & mod_mask
-
-    x = right_key ^ add_sxy
-
-    return x
-
-def hw_model(key_guess, plaintext):
-    right_key = key_guess & mod_mask
-    right_plain = plaintext & mod_mask
-    left_plain = (plaintext >> word_size) & mod_mask
-
-    # Run Encryption Steps For Appropriate Number of Rounds
-
-    rs_x = ((left_plain << (word_size - alpha_shift)) + (right_plain >> alpha_shift)) & mod_mask
-
-    add_sxy = (rs_x + right_plain) & mod_mask
-
-    x = right_key ^ add_sxy
-
-    return x
-
-
-
-def encrypt_function(self, upper_word, lower_word):    
-    
-    x = upper_word
-            y = lower_word 
-
-    # Run Encryption Steps For Appropriate Number of Rounds
-            for k in self.key_schedule:
-                rs_x = ((x << (self.word_size - self.alpha_shift)) + (x >> self.alpha_shift)) & self.mod_mask
-        
-        add_sxy = (rs_x + y) & self.mod_mask
-    
-        x = k ^ add_sxy
-    
-        ls_y = ((y >> (self.word_size - self.beta_shift)) + (y << self.beta_shift)) & self.mod_mask
-    
-        y = x ^ ls_y
-                
-    return x,y