Blog

Guías prácticas sobre criptografía post-cuántica, trading algorítmico, Python e IA — cada una escrita desde el código que la respalda.

Criptografía post-cuántica

iraca: verificación diferencial de ML-KEM y ML-DSA contra tres implementaciones independientes

Un arnés en Rust que diferencia el ml-kem de RustCrypto contra TRES implementaciones independientes —la referencia C de pq-crystals, libcrux (formalmente verificada) y AWS-LC (producción)— byte a byte, en los tres niveles ML-KEM, y su ML-DSA contra dilithium en los tres niveles. Toda discrepancia es real, verificado por ejecución.

iracaML-KEMML-DSA

¿Puede una IA descifrar tu cifrado? La amenaza real es otra

El titular del 'hackeo con IA' mezcla tres amenazas distintas. La IA no rompe la matemática del cifrado: potencia bugs de implementación, phishing y fuerza bruta. La amenaza a las matemáticas es la computación cuántica, y se mitiga con criptografía post-cuántica híbrida.

CriptografíaPost-cuánticaIA

Un hash no es una cadena de custodia, y «la firma valida» prueba dos cosas de tres

Verificar una firma digital exige tres cosas: la forma, la clave pública y la confianza en que esa clave es de esa persona. La tercera no la comprueba ninguna máquina. Qué prueba de verdad un hash, qué prueba una firma, y dónde se cae un informe de integridad.

CriptografíaFirma digitalIntegridad

Cincuenta segundos para medio megabyte: la optimización que arreglaba la constante y no el orden

Una conversión de base cuadrática sobrevivió meses en una librería de criptografía con todas las pruebas en verde. El comentario que la documentaba convencía de que el problema estaba resuelto. Medición, causa y el algoritmo clásico que lo bajó 111×.

QuipuRustRendimiento

Sellar un archivo para que nadie pueda discutir que no lo tocaste

Un hash único obliga a exhibir todo el conjunto para probar un solo archivo. Un árbol de Merkle, no. Cómo funciona Tunjo: raíz de integridad, firma triple post-cuántica y un verificador que puede ejecutar cualquiera.

RustCriptografíaPost-cuántico

Te roban la base de datos y no pueden crackear ni una contraseña

Argon2 encarece cada intento, pero el atacante que se lleva tu tabla de usuarios tiene tiempo infinito y GPUs. Un OPRF cambia el juego: el hash depende de una clave que no viaja con la base de datos. Cómo funciona, qué cuesta y qué se rompe.

SeguridadContraseñasOPRF

¿Qué es la criptografía post-cuántica y por qué deberías migrar ya?

Explicación clara de la amenaza cuántica, el ataque 'harvest now, decrypt later', los estándares ML-KEM y ML-DSA del NIST, y por qué la migración empieza hoy.

CriptografíaPost-cuánticaSeguridad

Cifrado híbrido: por qué combinar criptografía clásica y post-cuántica

Qué es el cifrado híbrido, por qué combinar X25519 con ML-KEM-1024 (y Ed25519 con ML-DSA-87) es más seguro que elegir uno solo, y cómo lo aplica Quipu.

CriptografíaPost-cuánticaQuipu

Quipu: cifrado post-cuántico en Rust puro, con una rueda para Python

Quipu es una librería de cifrado híbrido post-cuántico para datos en reposo, escrita en Rust puro. Para quien no programa en Rust, se distribuye como rueda nativa de Python (PyO3). Por qué dejamos atrás la C ABI y los bindings de varios lenguajes, con ejemplos.

QuipuRustPython

Trading algorítmico fiable

Apagué el bot: cinco estrategias, 77.000 velas y cero ventaja neta de comisiones

Medí cinco estrategias de trading sobre 77.000 velas de un minuto de BTC y ETH, descontando comisiones. La mejor daba +0,0135 % con un estadístico t de 0,16. Por qué eso es cero, y por qué apagar fue la decisión correcta.

Trading algorítmicoBacktestingEstadística

El redondeo que hace que tu bot arriesgue 10 veces lo que crees

Dimensionar una posición parece una división, pero hacerla caber en los mínimos del exchange es donde se pierde dinero. El patrón max(1, int(...)) y cómo evitarlo con Decimal y redondeo hacia abajo.

PythonTradingBots

Por qué tu bot recibe 403 de Cloudflare (y cómo endurecer un cliente ccxt)

Muchos exchanges ponen Cloudflare delante de su API y, a ratos, challenguean con 403 a peticiones legítimas de tu propia cuenta. Cómo mitigarlo sin evadir nada: hardening de cabeceras y retry selectivo con backoff.

PythonccxtOKX

Dos formas en que un backtest te miente (y cómo evitarlas)

Casi todo el edge que se mide en un backtest es una de dos ilusiones: el modelo vio el futuro, o la variante ganadora ganó por ruido. Dos primitivas en Python puro para descartar ambas antes de arriesgar nada.

PythonEstadísticaMachine Learning

Cuando tu clasificador parpadea: histéresis para señales que oscilan

Una señal que cerca del umbral hace OK, CAÍDO, OK, CAÍDO dispara alertas o failovers en cada tembleque. La solución es vieja y elegante: no cambiar de estado hasta que el nuevo se sostenga.

PythonSistemasMáquinas de estado

Python, IA y desarrollo

1.200 agentes de IA se escaparon de su laboratorio. Usamos su método para auditarnos

El mayor incidente de IA agéntica de 2026, sin miedo y con método: sus siete disciplinas de ataque, convertidas en checklist contra nuestros propios sistemas, y qué encontramos.

IASeguridadAgentes

Un malware que hace votar a cuatro IAs para decidir su próximo golpe

CLOSEDQUORUM le pide a cuatro modelos de IA que voten su siguiente acción maliciosa. Es llamativo, es una prueba de concepto inerte, y es un espejo: la misma técnica multi-modelo la usamos a la defensiva.

IASeguridadMalware

¿Puede una IA atacar y corromper a otra? Sí, y el filtro no es la defensa

Gusanos de prompt, envenenamiento de memoria, modelos con puerta trasera: qué está demostrado y qué es humo, y por qué la defensa de un agente de IA es de arquitectura, no de filtro.

IASeguridadLLMs

Una IA puede atacar el núcleo de otra IA. Ya empezó, y no es Skynet

Envenenar los datos de un modelo cuesta 250 documentos; un agente ya ejecutó el 80-90 % de un ciberataque real. Qué es cierto del escenario 'IA que ataca IA', qué es ciencia ficción, y cómo se defiende el núcleo.

IASeguridadCiberseguridad

El que construye la IA es el que más la teme. Y tiene razón

El CEO de Anthropic da un 25 % de que salga muy mal y dice que la industria mintió sobre los riesgos. Su miedo no es a un robot rebelde: es que los modelos se crían, no se construyen, y no sabemos qué hay dentro.

IASeguridadÉtica de la IA

Lo que tememos de la IA son fallas nuestras. Y en ella sí tienen arreglo

Actuar sin un norte, ser incoherente, no auditarse: lo que tememos de la IA es la lista de nuestros propios defectos. La diferencia es que en una máquina bien construida tienen solución.

IAÉtica de la IASeguridad

Cómo integrar un LLM (Claude o GPT) en tu aplicación Python

Guía práctica y con código para conectar un modelo de lenguaje a tu app Python: llamadas a la API, streaming, salidas estructuradas y buenas prácticas para producción.

PythonIALLMs

NiceGUI: crea una aplicación web en Python sin escribir JavaScript

Qué es NiceGUI, cómo funciona y por qué es ideal para MVPs, dashboards y herramientas internas hechas 100% en Python. Con ejemplo de código.

PythonNiceGUIWeb

Automatiza tareas repetitivas con un bot en Python

Cómo identificar qué automatizar y construir un bot o script en Python que te ahorre horas: scraping, informes, notificaciones y ejecución programada.

PythonAutomatizaciónBots

RAG explicado: cómo darle a un LLM tu propia información

Qué es Retrieval-Augmented Generation, por qué evita las alucinaciones y cómo construir un asistente que responde con TUS documentos. Con el patrón en Python.

IALLMsRAG

De la idea al MVP: lanza tu producto en 2 semanas con Python

Qué es un MVP, qué NO debe incluir, y cómo un stack Python moderno (FastAPI, NiceGUI, SQLite) permite validar tu idea en semanas en lugar de meses.

MVPPythonProducto

Micro-librerías fiables

Recon soberano: qué nos sirve de una herramienta de 4000 estrellas (y qué es deuda)

Evaluamos un recon de seguridad con 4000 estrellas para nuestro motor en Rust. Leímos las 1561 líneas, clasificamos cada capacidad y nos quedamos con UNA veta. La lección: se adoptan técnicas, no código.

SeguridadReconRust

SameSite=Lax no te protege del login-CSRF

SameSite=Lax no cubre el login-CSRF, y lo descubrimos poniendo tres modelos de IA a atacar nuestro propio servidor de identidad: uno dio una falsa alarma, otro la refutó, y un tercero encontró el bug real.

SeguridadCSRFAutenticación

El mismo formato de texto no garantiza la misma firma

Fusionábamos dos implementaciones de sesión en una sola librería. El formato del token era idéntico; las firmas, no. Lo que un vector fijo cazó antes de cerrarle la sesión a todos.

SeguridadHMACSesiones

Maté al proceso y el drenaje siguió colgado: un nieto tenía la tubería

Un subproceso se cuelga, lo mato con SIGKILL, y aun así mi programa se queda esperando su salida para siempre —a 0% de CPU—. La tubería no la tenía el hijo: la heredó un nieto, y mientras él viva el EOF no llega.

SistemasSubprocesosRust

Mi memoria adaptativa quedó vacía en producción, y no era un bug

Un sistema que debía aprender de sus propios fracasos acumuló cero registros, mientras una tabla vecina crecía. No había error en el código —los logs estaban limpios—. Era un punto muerto: dos mecanismos de seguridad que se mataban de hambre.

DiseñoSistemas adaptativosRust

No afirmes que una frontera de seguridad aguanta: demuéstrala

Confinar qué puede tocar un trozo de código —el sistema de archivos, lanzar procesos— es un problema de capabilities. Y hay una diferencia enorme entre diseñar la frontera y PROBAR que aguanta: la primera es una afirmación; la segunda, un arnés que ataca su propia frontera y guarda la evidencia.

SeguridadNode.jsCapabilities

29 tareas zombis: el trabajo que nunca termina no da ningún error

Un orquestador tenía 29 tareas en estado «ejecutándose» desde hacía días. Nadie se enteró, porque una tarea colgada y una tarea lenta se ven exactamente igual. La causa, la reconciliación al arrancar, y por qué el registro no servía para detectarlo.

FiabilidadObservabilidadSQLite

Seis horas esperando a un proceso que era él mismo

Un bucle de espera que buscaba un proceso por su línea de órdenes giró seis horas y doce minutos. El patrón estaba escrito en el propio shell, así que se encontraba a sí mismo y la condición no podía volverse falsa nunca. Las formas correctas de escribirlo.

BashShellDepuración

Mi detector estaba ciego en 1.029 de 6.309 líneas y sus tres pruebas seguían en verde

Un banco de pruebas hecho solo de casos negativos sobre archivos que hoy están limpios no distingue una regla correcta de una regla ciega: los dos devuelven vacío. Cómo se detecta, y las tres condiciones que hacen que una pareja de pruebas discrimine de verdad.

PruebasVerificaciónCalidad

Dije que no salían datos. Al primer envío bueno, salieron dos

Un cero, un silencio o un «no encontrado» son indistinguibles del negativo real cuando el código que los produciría nunca llegó a ejecutarse — y encima dan la confianza de haber verificado. El control positivo, y por qué hay que volver a mirar después del primer éxito.

VerificaciónObservabilidadIntegraciones

Tu banco de pruebas E2E mide el códec, no el producto

Cien pruebas en verde y la pantalla rota. Por qué afirmar sobre el HTML que devuelve el servidor no prueba nada en cuanto el navegador construye parte de la interfaz — y cómo dibujarla de verdad, incluidas las pantallas con sesión.

RustPruebasE2E

Notificar a varios canales sin que un fallo tumbe al resto

Mandar lo mismo a Slack, Discord, un webhook y un email parece un for de tres líneas. Lo es, hasta que el primer canal lanza una excepción y los demás se quedan sin enviar.

PythonSistemasNotificaciones

i18n sin gettext: traducciones en JSON con claves de punto

Para una app pequeña o mediana, gettext y Babel son un peaje de ficheros .po y un paso de compilación. A veces solo quieres un t() honesto sobre unos JSON.

Pythoni18nLocalización

LegalTech

Qué le da valor probatorio a un documento electrónico

Un archivo no es prueba por existir. Tiene valor probatorio cuando se puede demostrar que no se alteró, quién lo produjo y cuándo existió. Así es como la técnica —hash, firma digital y sellado de tiempo— convierte un documento electrónico en evidencia que resiste ante un tercero.

Evidencia digitalValor probatorioFirma digital

Firma electrónica y firma digital no son lo mismo

Se usan como sinónimos y no lo son. La firma electrónica es cualquier señal de intención de firmar; la firma digital es una técnica criptográfica concreta que prueba integridad y origen. La diferencia importa cuando hay que sostener el documento ante alguien que desconfía.

Firma digitalFirma electrónicaCriptografía

Qué es la cadena de custodia digital (y qué tiene que hacer tu software)

La cadena de custodia digital no es un hash: es la prueba continua de que un archivo no cambió, de quién lo produjo y de cuándo existió. Las cuatro garantías que un sistema tiene que dar para que una evidencia electrónica se sostenga.

Evidencia digitalCadena de custodiaIntegridad

Sellado de tiempo: cómo fechar una evidencia digital para que nadie discuta la fecha

Un hash y una firma prueban qué es un archivo y quién lo firmó, pero no cuándo existió. El sellado de tiempo es la pieza que da la fecha de forma verificable: qué es, cómo funciona una TSA y por qué la fecha del sistema no sirve.

Sellado de tiempoEvidencia digitalRFC 3161

Todo el mundo escribe qué reportar. Nadie escribe cómo no perder ninguno

Los incumplimientos rara vez vienen de desconocer la obligación, sino de rastrear treinta vencimientos en una hoja de cálculo. Por qué el Excel deja de servir y qué significa gestionar por reglas en vez de recordatorios.

CumplimientoObligacionesAutomatización

Software educativo

chimini: la tabla periódica jugable donde fusionas elementos y ves qué pasa

Un laboratorio de química y física nuclear que corre en el navegador, gratis y sin instalar. Fusiona elementos, exponlos a energía y explora la tabla periódica con datos reales.

QuímicaTabla periódicaSoftware educativo

Colombia en datos

El agua de Colombia y El Niño: medí la hipótesis del diseño, y los datos la refutaron

Construí un simulador de balance hídrico sobre la serie real del IDEAM (2003–2026, 33 departamentos). La apuesta intuitiva —una malla que traslade agua entre regiones que el ENSO afecta al revés— se midió y la evidencia la refuta: correlación mediana +0,12. La consecuencia cambió el diseño.

aguaENSOEl Niño