Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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)
Beispiel #8
0
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