def CIFRAR(clave, mensaje): # Codificar el contenido del mensaje mensaje_json = json.dumps(mensaje) # Cifrar los datos con AES (GCM) motor_AES = aes.iniciarAES_GCM(clave) cifrado, cifrado_mac, cifrado_nonce = aes.cifrarAES_GCM( motor_AES, mensaje_json.encode("utf-8")) return cifrado, cifrado_mac, cifrado_nonce
def cifraPaso3(emisor, receptor, KET, E, t_ne): """ Cifra el mensaje del paso 1, y devuelve el cifrado """ # Codifica el contenido (los campos binarios en una cadena) y contruyo el mensaje JSON mensaje_ET = [E, t_ne.hex()] json_ET = json.dumps(mensaje_ET) print(emisor + " -> " + receptor + " (descifrado): " + json_ET) # Cifra los datos con AES GCM motor_AES = funciones_aes.iniciarAES_GCM(KET) cifrado_T, mac_T, nonce_T = funciones_aes.cifrarAES_GCM(motor_AES, json_ET.encode("utf-8")) return cifrado_T, mac_T, nonce_T
def cifrar12(clave, mensaje): mensaje[2] = mensaje[2].hex() # Ra # Codificar el mensaje mensaje_json = json.dumps(mensaje) # Cifrar el mensaje con AES (GCM) motor_AES = aes.iniciarAES_GCM(clave) cifrado, cifrado_mac, cifrado_nonce = aes.cifrarAES_GCM( motor_AES, mensaje_json.encode("utf-8")) return cifrado, cifrado_mac, cifrado_nonce
def cifraPaso1(emisor, receptor, KET, E, t_ne): """ Cifra el mensaje del paso 1, y devuelve el cifrado """ # Codifica el contenido (los campos binarios en una cadena) y contruyo el mensaje JSON msg_TE = [] msg_TE.append(E) msg_TE.append(t_ne.hex()) json_ET = json.dumps(msg_TE) print(emisor + "->" + receptor + " (descifrado): " + json_ET) # Cifra los datos con AES GCM aes_engine = funciones_aes.iniciarAES_GCM(KET) t_cifrado, t_mac, t_nonce = funciones_aes.cifrarAES_GCM( aes_engine, json_ET.encode("utf-8")) return t_cifrado, t_mac, t_nonce
def cifrar23(random, receptor, clave, cifrado): mensaje = [random.decode("utf-8", "ignore"), receptor, clave.decode("utf-8", "ignore"), cifrado[0].decode("utf-8", "ignore"), cifrado[1].decode("utf-8", "ignore"), cifrado[2].decode("utf-8", "ignore")] # Codificar el contenido del mensaje mensaje_json = json.dumps(mensaje) # Cifrar los datos con AES (GCM) motor_AES = aes.iniciarAES_GCM(clave) cifrado, cifrado_mac, cifrado_nonce = aes.cifrarAES_GCM(motor_AES, mensaje_json.encode("utf-8")) return cifrado, cifrado_mac, cifrado_nonce
cifrado_mac = socket_Bob.recibir() cifrado_nonce = socket_Bob.recibir() _, t_nb = descifraPasos1y3("B", KBT, cifrado, cifrado_mac, cifrado_nonce) # Paso 2) T -> B : KBT(K1, K2, Nb) en AES-GCM # A empezar a resolver!!!!!!! print("Comienza el paso 2 en T") mensaje_B1 = [K1.hex(), K2.hex(), t_nb.hex()] json_EB = json.dumps(mensaje_B1) print(" T -> B (descifrado): " + json_EB) motorB_AES = funciones_aes.iniciarAES_GCM(KBT) cifrado_B1_T, mac_B1_T, nonce_B1_T = funciones_aes.cifrarAES_GCM( motorB_AES, json_EB.encode("utf-8")) socket_Bob.enviar(cifrado_B1_T) socket_Bob.enviar(mac_B1_T) socket_Bob.enviar(nonce_B1_T) # Crear el socket de escucha de Alice (5550) print("Esperando a Alice...") socket_Alice = SOCKET_SIMPLE_TCP('127.0.0.1', 5550) socket_Alice.escuchar() # Paso 3) A -> T : KAT(Alice, Na) en AES-GCM cifrado_A = socket_Alice.recibir() mac_A = socket_Alice.recibir() nonce_A = socket_Alice.recibir()