Exemplo n.º 1
0
def doSquareAttack(n):
	r = RSA.generate_r(n)
	bits_to_solve = 32
	secretKey = '1'
	
	for i in range(1, bits_to_solve):
		sample_list = getSampleMessages(5000)
		
		M1 = [] # M1 is our additional reduction with 1
		M2 = []	    # M2 is our no reduction set with 1

		M3 = [] #M3 is our additional reduction set with 0
		M4 = []	    #M4 is our no reduction set with 0

		for sample in sample_list:
			
			if(RSA.CheckReduction(secretKey[0] + '1', sample, n, r)):
				M1.append(sample)
			else:
				M2.append(sample)
		
			if(RSA.CheckReduction(secretKey[0] + '0', sample, n, r)):
				M3.append(sample)
			else:
				M4.append(sample)
		

		M1_times = []
		M2_times = []
		M3_times = []
		M4_times = []
		for y in M1:
			M1_times.append(connection_handler.getDecryptTime(y))
		
			
		for x in M2:
			M2_times.append(connection_handler.getDecryptTime(x))

		
		for i in M3:
			M3_times.append(connection_handler.getDecryptTime(i))

		
		for j in M4:
			M4_times.append(connection_handler.getDecryptTime(j))

		
		average_M1 = sum(M1_times) / len(M1_times)

		
		average_M2 = sum(M2_times) / len(M2_times)

	
		average_M3 = sum(M3_times) / len(M3_times)

		
		average_M4 = sum(M4_times) / len(M4_times)

		
		if( abs(average_M1 - average_M2) > abs(average_M3 - average_M4)):
			print secretKey + '1'
		else:
			print secretKey + '0'
		
		
		print abs(average_M1 - average_M2)
	        print abs(average_M3 - average_M4)

		print  (abs(average_M1 - average_M2) -  abs(average_M3 - average_M4))