¿Los filtros de floración protegen contra un espía persistente?

Según tengo entendido, los filtros de floración se pueden definir con algunos hash objetivo y una tasa de falsos positivos. Al filtrar la cadena de bloques, se garantiza que se encontrarán todas las transacciones de destino, pero también se devolverán muchos falsos positivos al cliente por diseño.

Suponga que un atacante puede monitorear muchas especificaciones de filtro de floración enviadas por un cliente SPV a sus pares. ¿Podrá finalmente eliminar todos los falsos positivos realizando la comparación de subconjuntos en todas las transacciones que coincidan con los filtros?

Como ejemplo, dejemos que el conjunto de todas las transacciones sean los números enteros del 1 al 100, y supongamos que un cliente está interesado en las transacciones 4, 8 y 15. La primera vez que se conecta a la red, transmite un ajuste de filtro de floración ( 1, 4, 7, 8, 15, 27, 44, 73); la segunda vez, su filtro coincide (3, 4, 6, 8, 15, 27, 66). Un atacante podría reducir inmediatamente las posibles transacciones a (4, 8, 15, 27); después de varias invocaciones más, encontraría la respuesta correcta.

¿Estoy malinterpretando cómo funcionan los filtros de floración (por ejemplo, los falsos positivos no cambian entre conexiones), o es una preocupación teórica o incluso práctica?

Respuestas (2)

Sí, está malinterpretando cómo funcionan los filtros de floración vainilla/canónicos. Para la definición estándar, los falsos positivos no cambian entre conexiones: el conjunto devuelto en una segunda solicitud, si es diferente, será un superconjunto del primer conjunto.

Además, los filtros Vanilla Bloom no se utilizan como soluciones a los problemas de seguridad/caída de escuchas; son una optimización de compensación de cálculo frente a acceso al disco (pienso en ellos como un subconjunto de algoritmos de almacenamiento en caché). Puede usar un filtro de floración local para verificar si una URL determinada es maliciosa, para evitar realizar una costosa llamada/búsqueda de red en cada acceso a la URL, y solo realice la llamada de red cuando obtenga una respuesta positiva.


Dicho esto, existen técnicas para hacer estructuras similares a filtros de floración, que son más robustas/tienen características de seguridad más sólidas. No creo que ninguno de ellos se haya aplicado a las implementaciones de bitcoin.

La especificación de bitcoin de los filtros de floración parece contener una entrada aleatoria a las funciones hash (ntweak). ¿Esto tampoco influyó en los falsos positivos?
@lxgr mirando rápidamente el código, me parece que el valor ntweak está destinado a ayudar a distribuir mejor el uso de funciones hash y, en última instancia, a reducir la cantidad de falsos positivos que obtiene (reduciendo aún más el valor de seguridad que el filtro bloom podría proporcionar, pero aumentando su efectividad como caché): tiene razón, la implementación no es canónica en el sentido de que es probable que devuelva falsos positivos aleatorios en llamadas sucesivas.