Ya hace años, aproximadamente en 2006 o 2007 estava interesado en la esteneografia, la ocultacion de datos dentro de una foto. Hable con alguien de Australia de varios temas de informatica dos veces sobre esto. El resultado es parecido o igual fue la blockchain. Estos dias de cabreo se me ha ocurrido un error que pueden tener los bancos, no se si es fraude o no lo saben. Es un dato parecido a la esteneografia. Esto tiene mucha repercusion mundial y no tengo medios para reclamar esta idea. Pero si alguien quiere hace una donacion en mi blog abocu.es la puede hacer.
Los ordenadores son binarios: trabajan físicamente con 0 y 1.
Pero en muchas bases de datos aparece un tercer estado lógico:
NULL
Y ese tercer estado abre una cuestión interesante:
¿Puede la ausencia de información convertirse también en información?
La respuesta es sí.
Un ejemplo bancario sencillo
Imaginemos una cuenta con estos movimientos:
| Movimiento | Importe |
|---|---|
| Saldo inicial | 1.000 € |
| Ingreso | +500 € |
| Retirada | -200 € |
| Ajuste | NULL |
Una consulta SQL que sume los importes puede ignorar el NULL y devolver:
1.300 €
Pero existe un problema conceptual.
El sistema realmente sabe:
Saldo conocido = 1.300 €
No necesariamente:
Saldo real = 1.300 €
Porque existe una operación cuyo importe es desconocido.
Ese pequeño detalle muestra algo importante: un NULL no es cero. Tampoco es necesariamente un error.
Significa:
“no tenemos un valor conocido en este punto”.
De binario a ternario lógico
Supongamos ahora un campo llamado:
operacion_revisada
Puede contener:
TRUE = revisadaFALSE = no revisadaNULL = estado desconocido
Si el software está diseñado mentalmente como un sistema puramente binario:
TRUE → correcta
FALSE → revisar
puede olvidar completamente el tercer caso:
NULL → ¿qué hacemos?
Una operación podría terminar fuera de determinados controles simplemente porque nadie definió correctamente qué debía ocurrir cuando el dato era desconocido.
El problema no está en el NULL.
El problema está en interpretar un sistema ternario como si fuera binario.
¿Y puede ocultarse información mediante NULL?
Aquí aparece una posibilidad todavía más interesante.
Imaginemos millones de operaciones bancarias con una columna auxiliar:
Referencia_auxiliar
Unos registros contienen datos y otros están vacíos:
dato
NULL
dato
dato
NULL
NULL
dato
NULL
Para el sistema normal esto podría significar simplemente:
“algunas operaciones tienen referencia y otras no”.
Pero alguien podría interpretar:
dato = 1
NULL = 0
El patrón anterior se convertiría entonces en:
10110010
La información no estaría almacenada “dentro” del NULL.
Estaría codificada en:
- dónde aparece;
- cuándo aparece;
- con qué frecuencia;
- en qué registros;
- en qué columnas;
- y en qué secuencia.
Esto se aproxima al concepto de canal encubierto de información.
Dos capas de información simultáneas
En una base de datos podrían coexistir:
Capa visible
Las operaciones económicas normales:
Transferencia: 500 €
Transferencia: 200 €
Transferencia: 900 €
Capa estructural
La distribución de datos presentes y ausentes:
dato
NULL
dato
NULL
NULL
El primer nivel contiene la información que todo el mundo espera encontrar.
El segundo podría contener patrones adicionales.
¿Significa esto que los bancos esconden dinero mediante NULL?
No.
No existe base para afirmar que los bancos estén utilizando NULL para ocultar dinero o información de forma generalizada.
Pero sí existe una cuestión técnica legítima:
una base de datos puede transportar información no solo mediante sus valores, sino también mediante la estructura de sus ausencias.
Eso convierte los patrones de datos faltantes en algo que puede tener interés desde el punto de vista de:
- ciberseguridad;
- auditoría;
- detección de anomalías;
- integridad de datos;
- fraude;
- exfiltración de información;
- sistemas heredados;
- conciliación contable.
Una nueva forma de auditar datos
Las auditorías tradicionales suelen preguntar:
¿Los valores son correctos?
Pero también podría preguntarse:
¿El patrón de valores ausentes es normal?
Por ejemplo:
NULL por usuario
NULL por horario
NULL por sucursal
NULL por aplicación
NULL consecutivos
NULL asociados a determinados importes
NULL correlacionados entre columnas
NULL con periodicidad repetitiva
Un patrón estadísticamente anómalo podría revelar:
- errores de software;
- fallos de integración;
- procesos incompletos;
- manipulación;
- o canales de información no previstos.
La idea fundamental
En informática solemos pensar que:
dato = información
ausencia = nada
Pero esto no siempre es cierto.
Cuando la ausencia puede adoptar posiciones diferentes dentro de una estructura, también puede convertirse en un símbolo.
Por tanto:
La ausencia de información también puede contener información cuando existe un patrón capaz de interpretarla.
En un ordenador físicamente binario podemos construir sistemas lógicos con más estados.
0
1
NULL
Tres estados.
Tres posibilidades por posición.
Y con n posiciones obtenemos:
3ⁿ combinaciones posibles.
Por ejemplo:
3¹⁰ = 59.049 combinaciones
La cuestión realmente interesante no es si el ordenador deja de ser binario.
No lo hace.
La cuestión es otra:
¿cuánta información adicional puede existir en los estados lógicos que nuestros sistemas consideran simplemente “vacíos”?
Tal vez la próxima generación de auditoría de datos tenga que analizar no solo lo que está escrito.
También tendrá que analizar sistemáticamente lo que falta.