Saltar al contenido
Finance & Banking
Evolution Program
Inicio / modules / 18-blockchain-y-dlt-para-instituciones-financieras / solutions

Solución de referencia — Laboratorio 2: firma de transacciones

Material docente. El esquema de firma es simplificado y didáctico.

Qué demuestra y qué no demuestra una firma

DEMUESTRA
  que quien poseía la clave privada aprobó ESE contenido

NO DEMUESTRA
  cuándo          → hace falta un sello de tiempo de un tercero
  quién es        → hace falta ligar la clave a una identidad
  que sea verdad  → una firma no valida hechos
  qué se firmó    → si se firma un resumen a ciegas
  que la clave no estuviera comprometida → hace falta revocación

Las cinco filas de la derecha son la respuesta a la pregunta del laboratorio.

Las cuatro pruebas negativas

def test_un_byte_alterado_invalida_la_firma(par):
    mensaje = b"transferir 1000 a acc_02"
    firma = firmar(par.privada, mensaje)
    alterado = b"transferir 9000 a acc_02"
    assert not verificar(par.publica, alterado, firma)


def test_una_direccion_mal_tecleada_se_detecta():
    direccion = derivar_direccion(par.publica)
    con_error = direccion[:-3] + "XYZ"
    assert not direccion_valida(con_error)


def test_sin_numero_de_orden_la_firma_se_reutiliza(cadena_sin_orden):
    tx = firmar_transaccion(par, destino="acc_02", importe=1000)
    cadena_sin_orden.aplicar(tx)
    cadena_sin_orden.aplicar(tx)          # se acepta: DEFECTO
    assert cadena_sin_orden.saldo("acc_02") == 2000


def test_con_numero_de_orden_la_repeticion_se_rechaza(cadena):
    tx = firmar_transaccion(par, destino="acc_02", importe=1000, orden=0)
    cadena.aplicar(tx)
    with pytest.raises(TransaccionInvalida):
        cadena.aplicar(tx)

La tercera es la que más cuesta escribir porque debe pasar: documenta el defecto que la cuarta corrige.

El umbral y su análisis

ESQUEMA 3-DE-5 DEL EJERCICIO

  guardián  ubicación   proveedor de módulo
  ────────────────────────────────────────
  G1        Madrid      Proveedor A
  G2        Madrid      Proveedor A
  G3        Santiago    Proveedor A
  G4        Santiago    Proveedor B
  G5        Lisboa      Proveedor B

ANÁLISIS
  fallo del Proveedor A → se pierden G1, G2, G3 = 3
  quedan 2 < umbral 3   → NO se puede firmar

  incendio en Madrid    → se pierden G1, G2 = 2
  quedan 3 = umbral 3   → se puede firmar, sin margen

CONCLUSIÓN
  el esquema tolera una pérdida de ubicación
  y CERO fallos del proveedor mayoritario

Es el mismo hallazgo de la clase 3: contar claves no es contar independencias.

El procedimiento de recuperación

Las siete preguntas, respondidas:

1. QUÉ SE RECUPERA   la capacidad de firmar, no la clave
2. QUIÉN AUTORIZA    2 del comité + auditoría interna
3. DÓNDE ESTÁN       5 fragmentos, 4 ubicaciones, 2 países
4. INTEGRIDAD        resumen por copia, verificado en cada ensayo
5. ENSAYO            trimestral, con firma real de importe simbólico
6. GUARDIÁN QUE SE VA  rotación de su fragmento en 5 días hábiles
7. TRAS RECUPERAR    rotación completa del esquema

El punto 5 con firma real es lo que distingue un procedimiento de un documento.

Errores que se penalizan

Error Por qué
Solo la prueba positiva No demuestra nada
Omitir la prueba que debe pasar No se documenta el defecto
Contar guardianes El umbral efectivo es menor
Ensayo sin firma real No prueba que las copias sirvan
Implementar criptografía propia en producción Se usa lo auditado

Límites