Hace muchas lunas, estaba trabajando con un equipo que estaba construyendo un sitio web público. Originalmente construimos el sistema utilizando claves primarias numéricas de incremento automático como el identificador público para cada pieza de contenido que se recopiló. Se supo que exponer este número era un riesgo: revelaría cuántos objetos tenía el sistema, y el delta entre dos ID de objeto y sus fechas de publicación revelaría una tasa de crecimiento / adopción.
Un colega principal declaró que el uso de un cifrado XOR resolvería este problema. Tomaríamos las identificaciones de los objetos como siempre lo hacíamos y XOR con una clave numérica bien protegida para crear un identificador público. Revertiríamos el proceso para obtener nuestro número original.
En nuestro caso, las ID privadas y la clave eran enteros de 32 bits sin signo. Y, como es de esperar, dos elementos creados uno cerca del otro mostraron cambios en sus bits menos significativos, pero ningún cambio en los bits más significativos. En ese momento pensé que sería trivialmente fácil para un adversario publicar algunos objetos en una sucesión, notar que los LSB cambiaron mientras que los MSB se mantuvieron estáticos, y concluyo que simplemente estábamos XOReando un entero de incremento. Pero siempre me pregunté qué les llevaría obtener la llave y derribar toda la fachada.
¿Es posible, si un atacante puede razonar que el texto plano es un entero monotónicamente creciente, para derivar la clave completa?