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.
¿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.
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.
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×.
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.
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.
¿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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
¿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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Xiliux