def descifrar3(clave, cifrado, mac, nonce): # Descifrar y decodificar el mensaje obtenido descifrado = aes.descifrarAES_GCM(clave, nonce, cifrado, mac) json_AT = descifrado #.decode("utf-8", "ignore") # Extraer los datos del mensaje clave, emisor = json.loads(json_AT) print("\t\tMensaje de", emisor, ": ", json_AT, "\n") return clave, emisor
def descifrar12(clave, cifrado, mac, nonce): # Descifrar y decodificar el mensaje obtenido descifrado = aes.descifrarAES_GCM(clave, nonce, cifrado, mac) json_AT = descifrado.decode("utf-8", "ignore") # Extraer los datos del mensaje emisor, receptor, random = json.loads(json_AT) random = bytearray.fromhex(random) print("\t\tMensaje de", emisor, ": ", json_AT, "\n") return emisor, receptor, random
def descifrar23(clave, cifrado, mac, nonce): # Descifrar y decodificar el mensaje obtenido descifrado = aes.descifrarAES_GCM(clave, nonce, cifrado, mac) json_AT = descifrado.decode("utf-8", "ignore") # Extraer los datos del mensaje random, receptor, clave, cifrado_mensaje, cifrado_mac, cifrado_nonce = json.loads( json_AT) print("\t\tMensaje de", "TTP", ": ", json_AT, "\n") return random, receptor, clave, cifrado_mensaje, cifrado_mac, cifrado_nonce
def DESCIFRAR(clave, cifrado): # Extraer los datos del mensaje cifrado cifrado_mensaje, cifrado_mac, cifrado_nonce = cifrado # Descifrar y decodificar el mensaje obtenido descifrado = aes.descifrarAES_GCM(clave, cifrado_nonce, cifrado_mensaje, cifrado_mac) json_AT = descifrado.decode("utf-8", "ignore") mensaje = json.loads(json_AT) print("\t\tMensaje de", emisor, ": ", json_AT, "\n") return mensaje
def descifraPasos1y3(emisor, KET, t_cifrado, t_mac, t_nonce): """ Descifra el mensaje del paso 1/3, y devuelve los campos""" # Descifro los datos con AES GCM datos_descifrado_ET = funciones_aes.descifrarAES_GCM( KET, t_nonce, t_cifrado, t_mac) # Decodifica el contenido: Alice, Na json_ET = datos_descifrado_ET.decode("utf-8", "ignore") print(emisor + "->T (descifrado): " + json_ET) msg_ET = json.loads(json_ET) # Extraigo el contenido, y lo devuelvo t_emisor, t_ne = msg_ET t_ne = bytearray.fromhex(t_ne) return t_emisor, t_ne
def descifraPaso2(receptor, emisor, KET, t_cifrado, t_mac, t_nonce): """ Descifra el mensaje del paso 2, y devuelve los campos""" # Descifro los datos con AES GCM datos_descifrado_ET = funciones_aes.descifrarAES_GCM( KET, t_nonce, t_cifrado, t_mac) # Decodifica el contenido: K1, K2, Nb json_ET = datos_descifrado_ET.decode("utf-8", "ignore") print(emisor + "->" + receptor + " (descifrado): " + json_ET) msg_ET = json.loads(json_ET) # Extraigo el contenido, y lo devuelvo t_k1, t_k2, t_ne = msg_ET t_k1 = bytearray.fromhex(t_k1) t_k2 = bytearray.fromhex(t_k2) t_ne = bytearray.fromhex(t_ne) return t_k1, t_k2, t_ne
socket = SOCKET_SIMPLE_TCP('127.0.0.1', 5550) socket.conectar() # Paso 3) A->T: KAT(Alice, Na) en AES-GCM num = get_random_bytes(16) cifrado, cifrado_mac, cifrado_nonce = cifraPaso3("A", "T", KAT, "Alice", num) socket.enviar(cifrado) socket.enviar(cifrado_mac) socket.enviar(cifrado_nonce) # Paso 4 print("Comienza el paso 4 en A") cifrado_Ta1 = socket.recibir() mac_Ta1 = socket.recibir() nonce_Ta1 = socket.recibir() descifrado_ETa1 = funciones_aes.descifrarAES_GCM(KAT, nonce_Ta1, cifrado_Ta1, mac_Ta1) json_ETa1 = descifrado_ETa1.decode("utf-8", "ignore") print("T " + " -> A (descifrado): " + json_ETa1) mensaje_ETa1 = json.loads(json_ETa1) K1, K2, t_nA1 = mensaje_ETa1 K1 = bytearray.fromhex(K1) K2 = bytearray.fromhex(K2) t_nA1 = bytearray.fromhex(t_nA1)
cifrado, cifrado_mac, cifrado_nonce = cifraPaso1("B", "T", KBT, "Bob", num) socket.enviar(cifrado) socket.enviar(cifrado_mac) socket.enviar(cifrado_nonce) # Paso 2) T -> B : KBT(K1, K2, Nb) en AES-GCM # A empezar a resolver!!!!!!! print("Comienza el paso 2 en B") cifrado_Tb1 = socket.recibir() mac_Tb1 = socket.recibir() nonce_Tb1 = socket.recibir() descifrado_ETb1 = funciones_aes.descifrarAES_GCM(KBT, nonce_Tb1, cifrado_Tb1, mac_Tb1) json_ETb1 = descifrado_ETb1.decode("utf-8", "ignore") print("T " + " -> B (descifrado): " + json_ETb1) mensaje_ETb1 = json.loads(json_ETb1) K1, K2, t_nB1 = mensaje_ETb1 K1 = bytearray.fromhex(K1) K2 = bytearray.fromhex(K2) t_nB1 = bytearray.fromhex(t_nB1) # Espero a Alice para el paso 5) # Paso 5) A->B: KAB(Nombre) en AES-CTR con HMAC